最后,我们来说点实际的。在实际使用中,功能区分最科学的模型既不是OSI七层参考模型,也不是TCP/IP四层参考模型。这里就要回到我们在前文中至少三次提到的一个概念,那就是 在学习和工作之中,我们通常使用 上述两种模型的混合体,也就是 TCP/IP五层模型来分析协议和描述问题 。三个模型的对应关系如图1-7所示。
图1-7 三种协议模型的对应关系
这个TCP/IP五层模型才是最为实用的模型,它也最有利于读者理解和掌握数据在通过网络进行传输前后,需要经过怎样的处理流程。下面就以这个TCP/IP五层模型,来介绍网络通信过程中数据的封装与解封装过程。这个过程对于后面的学习比较重要,但又难以与现实生活中的行为进行合理的类比,因此读者务必在这里打起精神。
言归正传,如果套用五层模型,那么数据在通过线缆发送出去之前,需要经过的处理如下。
1. 当应用程序消息需要使用网络服务时,该消息会先经过应用层的处理,然后发送给传输层。
2. 在传输层,消息被拆分为 分段 ,并在每一分段的头部添加控制信息,这既可以让每个分段都能指派给正确的进程,也可以让目的地设备能够按顺序重组所有分段。传输层头部携带的信息还会对同一链路传输的不同应用的数据进行区分,能够确保将数据与应用正确地关联在一起。
3. 网络层会在数据段的头部添加网络层信息,比如地址信息(目前基本都是IP地址信息),将其封装为 数据包 。网络层地址为逻辑地址,通常能在一定的范围内唯一地标识一台主机。网络中的路由器通过处理网络层添加的信息,将数据包路由到正确的目的地址。
4. 在数据链路层,数据包的头部会添加上帧头信息,尾部会添加上相关的校验信息,然后数据包会被封装成 帧 。对于不同的数据链路层协议,如以太网、WLAN等,帧的格式不完全相同。帧尾校验信息能够检验出数据帧在通过网络介质传输后是否还具备完整性,从而为上层提供无错的数据传输服务。
5. 在物理层,数据帧会被编码成能够在介质上传送的 比特流 ,并一路发送到目的地。
通过上述过程可以看出, 在封装过程中,数据从上层至下层,会依次添加上相关的控制信息。而当数据通过网络传输,到达目的主机之后,对方的主机则会相应地执行解封装的过程。在解封装的过程中,封装时添加的控制信息被逐层去除,最终还原成原始的应用程序消息。
图1-8用图形的方式展示了数据封装与解封装的过程。
图1-8 封装与解封装
至此,我们在这一章要讲的内容就已经全部呈现在了读者面前。本章的内容相当理论,对于没有工作经验的读者来说,难免会认为这些内容对于实践的指导作用相当有限。事实并非如此,对“协议”这个概念的理解会影响读者此后的阅读体验,而对于分层模型及其作用的掌握则决定了读者此后在从事网络技术类工作时,能否做到有条不紊,甚至做到多快好省。