别再死记硬背了!3 分钟搞懂 OSI 与 TCP/IP 的区别

你家里现在大概率是这么个情况:电信或者联通拉了根宽带,接了个路由器,手机连WiFi,电脑插网线,然后就上网了。

你不会去想这中间发生了什么,也不需要想。

但你有没有好奇过一个事儿:你家路由器可能是小米的,公司用的是华为的,网站服务器跑在戴尔的机器上,中间经过的运营商设备可能是思科的——这些完全不同厂商造出来的东西,凭什么能互相通信?

答案就俩字:协议。

所谓网络协议,其实就是大家提前商量好的一套规矩。你按这个规矩发数据,我按这个规矩收数据,不管你是谁家造的设备,只要守规矩就能聊。

这个规矩,就是接下来要说的东西。

OSI七层模型:一个理想化的分层方案

国际标准化组织当年搞了一个OSI参考模型,把网络通信这件事拆成了七层。从下往上分别是:

层级 名称 干什么的
第7层 应用层 直接面向用户,HTTP、FTP、邮件这些都在这层
第6层 表示层 数据格式转换,你看到的图片文字,计算机看到的是二进制,这层负责翻译
第5层 会话层 管理通信双方的“对话”,建立、维护、断开连接
第4层 传输层 端到端的数据传输,TCP和UDP就在这层,通过端口号区分不同应用
第3层 网络层 寻址和选路,IP协议在这层,负责把数据从A送到B
第2层 数据链路层 在具体的链路上传输数据帧,以太网协议在这层
第1层 物理层 最底层,管的是电信号、光信号这些物理介质上的传输

这个模型作为理论框架,逻辑上确实很清晰。

但问题来了——实际中没人用这个。

TCP/IP:真正跑在互联网上的那套

现实世界里真正在用的是TCP/IP协议体系,只有四层:应用层、传输层、网络层、网络接口层。

为什么OSI没跑起来?我觉得主要两个原因。

第一是时间差。 OSI模型还在委员会里讨论的时候,TCP/IP已经在美国的大学之间跑起来了。先跑起来的东西有用户,有反馈,有迭代,后面再想用一个纯理论的东西去替代它,基本不可能。这跟很多技术选型的故事一样,不是最好的赢了,是先跑起来的赢了。

第二是务实程度。 OSI分了七层,分得太细了。特别是会话层和表示层,听起来很有道理,但实际写程序的人发现,这俩层的功能在开发应用的时候顺手就做了。你写个Web服务,session管理、数据编解码,本来就是应用代码的一部分,没必要单独抽出来搞两层。所以TCP/IP直接把这俩并进了应用层,简单粗暴但好使。

「其实这事儿挺典型的,理想模型和工程实践之间永远有gap。OSI是学院派的完美设计,TCP/IP是工程师在实战中迭代出来的东西。最终市场选了后者。」

对应关系大概是这样:

TCP/IP四层 对应OSI
应用层 应用层 + 表示层 + 会话层
传输层 传输层
网络层 网络层
网络接口层 数据链路层 + 物理层

核心功能没变,就是层数精简了。

为什么要分层?

这个问题其实比“分几层”更重要。

第一,各干各的,互不干扰。

打个比方,公司A的经理要让公司B的经理签一份文件。A经理把文件交给自己的助理,助理想办法送到B的助理手里,B助理再转交给B经理签字,原路返回。

经理只关心文件签没签,不关心助理是骑车送的还是快递寄的。助理只关心怎么把东西送到,不关心文件写了啥。

网络分层也是这个意思。浏览器发一个HTTP请求,它不关心底下的数据是走电信还是联通出去的,走光纤还是WiFi。反过来,路由器转发数据包的时候,也不关心里面装的是网页还是视频。上层用下层的服务,但不需要知道下层怎么实现的。

第二,分工明确,好培养人。

网络这个领域太大了。做路由交换的主要跟网络层、数据链路层打交道,做后端开发的主要在应用层和传输层。如果不分层,所有东西揉成一坨,没人能全部掌握。分了层之后,每个方向的人专注自己那几层就行,这跟公司分部门是一个道理。

第三,排错的时候有方向。

比如办公区访问不了服务器区的某个服务。如果你懂分层,排查思路就很清晰:先看网络层,ping一下通不通;通的话再看传输层,端口开没开;端口没问题再看应用层,服务本身是不是挂了。一层一层往上查,比瞎蒙高效太多了。

第四,技术迭代互不影响。

底层从铜缆换成光纤,上层的应用不用改。应用从HTTP升级到HTTPS,底层的网络设备不用动。分层让每一层可以独立演进,这对整个互联网的发展太重要了。

给初学者的一点建议

我坦白说,网络协议这块东西,第一遍看大概率是懵的。这很正常。

不要试图一次全搞懂。 先过一遍有个大概印象,知道有这么几层,每层大概干什么。然后随着后面学具体协议、做实验抓包,你会反复回来看这个分层模型,每次都会有新的理解。

多动手,少死记。 协议这东西你光看文字描述永远是抽象的。打开Wireshark抓个包,看看一个HTTP请求从应用层到物理层每一层加了什么头部,比看十遍教材都管用。

理解原理比会配置重要。 会敲命令是基本功,但知道为什么这么配、这个协议在什么场景下用、跟别的协议怎么配合,这才是长期吃饭的本事。

以上,OSI和TCP/IP的基本框架就是这些。后面具体每一层的协议怎么工作,那就是另一个更长的故事了。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
百晓生的头像-百晓生的资料库
评论 抢沙发

    暂无评论内容