路由与交换 | 01 | OSI和TCP/IP


1.1 协议与协议分层

设备之间要通信,必须遵循相同的通信标准,即协议

如果需要将文字、声音、图片发送给你的朋友,就需要电脑将这些文字、声音、图片用电信号描述出来,再将电信号发送出去。

当人们通过网络进行联络的时候,会忽视在其中转发电信号的各种设备。事实上,数据是经过了多种协议的处理,经历多重形式的转变,途径多个设备的转发,最终抵达目的地,以正确的形式呈现出来。

一些常见的问题:

  1. 你的电脑需要知道通往目的地电脑的路径吗?
  2. 中间的传输设备需要了解你们的聊天内容吗?
  3. ……

在传递数据的整个链路上,不同的设备所具备的能力、获得的信息会是不同的。电脑只负责获取信息、展示信息,中间的转发设备只负责传递信息,它们是工作在不同层面的设备

我们想象一下银行邮寄信用卡的场景:首先设计信件,对它进行排版;然后将它印刷出来;接下来打印信封,将信件和信用卡装进信封;最后将邮件投递到邮局。

对于这样一个工作,显然在不同环节安排人手负责本环节的工作,然后把大家的工作串起来,就实现了一个分工协作的流水线。

假设我们要求,从设计信件到投递邮件都是一个人来做,增加人手只是让不同的人都做一遍完整的流程,这样不论增加多少人手,工作还是很混乱。当出现错误,或者工作流程发生调整,所有的人都要排查和调整。

显然,分层可以增加效率,可以便于排查错误,可以方便替换和调整

1.2 OSI参考模型

OSI模型是为了对异构网络进行标准化而起草,明确区分了服务、接口、协议的概念。

在这个分层结构中,每一层都会接受下一层的服务,并向上一层提供服务。

OSI参考模型把网络通信所需要的所有功能,从上到下分了七层,并定义了哪层可以提供哪些服务,能够实现哪些功能。

序号 层级 协议 数据单元 说明
1 应用层 应用层协议 APDU 用户接口,将接收到的信息呈给用户
2 表示层 表示层协议 PPDU 将复杂的数据结构转化为扁平的字节串格式;提供数据翻译功能;提供压缩、加解密功能
3 会话层 会话层协议 SPDU 控制终端用户应用程序之间的会话
4 传输层 传输层协议 TPDU 确保消息无错、有序、无损、无重复传输;可以追踪数据传输状态,在失败后重传;提供消息确认机制,提供流控制
5 网络层 网络层协议 数据包 实现一个或多个网络中两个设备的通信;提供寻址功能;决定如何从源发送数据到目的地
6 数据链路层 数据链路层协议 实现在广域网中相邻网络设备之间的连通以及在局域网中网络设备的连通;也负责检查数据帧的完整,控制管理帧流量
7 物理层 物理层协议 比特 定义了一台设备与物理传输介质之间如何沟通

1.3 TCP/IP参考模型

OSI模型好比是设计不太合理,缺乏核心参数的建筑设计图,没人会真的参照它盖楼。而TCP/IP协议就像是一栋没有设计图纸的实际建筑,人们根据自己的需要对大楼进行测绘,还原它的图纸。

TCP/IP模型

序号 层级 说明
1 应用层 为用户表示应用数据
2 传输层 支持设备间的通信和执行错误纠正
3 网络层 确定网络的最佳路由
4 网络接口层 控制网络的硬件设备和介质

网络接口层相当于OSI模型中物理层与数据链路层的结合;应用层相当于OSI模型中应用层、表示层、会话层的结合。

对比之后发现,OSI模型太零碎,而TCP/IP模型又太简单,都不能很好地概括网络分层协议。

1.4 TCP/IP五层模型

TCP/IP四层模型 TCP/IP五层模型 OSI七层模型
应用层 应用层 应用层
—— —— 表示层
—— —— 会话层
传输层 传输层 传输层
网络层 网络层 网络层
网络接口层 数据链路层 数据链路层
—— 物理层 物理层

在实际工作中,五层模型才是最实用的。根据五层模型,数据在通过线缆发送之前,需要经过的处理过程是:

  1. 应用程序需要使用网络服务时,消息会经过应用层的处理,然后发送给传输层
  2. 传输层,消息被拆为分段,每一分段头部添加控制信息,这样分段可以被指派给正确的进程,也可以让目的设备正确地重组分段。头部携带的信息可以对同一链路传输的不同应用的数据进行区分,将数据与应用正确地关联起来;
  3. 网络层数据段头部添加网络层信息(比如地址信息),然后将其封装为数据包。网络层地址为逻辑地址,在一定范围内能唯一标识一台主机。网络中的路由器通过处理网络层添加的信息,将数据包转发到正确的目的地址。
  4. 数据链路层数据包头部会添加帧头信息尾部会添加校验信息,数据包被封装成。不同的数据链路层协议(如以太网、WLAN),帧的格式完全不同。帧尾的校验信息可以检验处数据帧在通过网络介质传输后是否完整。
  5. 物理层数据帧会被编码成能够在介质上传输的比特流,一路发送到目的地。

由此可见,封装过程就是数据从上到下,依次被添加相应的控制信息,当数据到达目的主机后,会相应执行解封过程,添加的控制信息会被逐层去除,最终还原成原始的应用程序消息。

1.5 总结

在网络中,主机与主机之间想要通信,需要网络中的设备都讲相同的「语言」——协议,但是网络十分复杂,语言如果只有一种,其设计和实现会很困难,所以要对网络通信协议进行分层。

通过TCP/IP五层模型,可以更清晰地分析应用数据沿协议栈经历的封装和解封过程,更好地理解网络通信过程。