2.4 数据包在计算机网络中的封装与传递
在计算机网络体系结构中,可以把几乎所有的网络设备都抽象为层次模型。比如路由器,可抽象为一个只有物理层、数据链路层、网络层的三层模型;交换机则是一个有物理层、数据链路层的两层模型;集线器的层次模型只有一层,即物理层。网络中的计算机拥有完整的层次结构,其层次模型如前面图2.5所示,包括物理层、数据链路层、网络层、传输层和应用层。网络体系结构除了分层外,还对传输数据单位与整个数据传输进行了规范。
网络设备在传输和处理数据时,由于每一层所用的协议不一样,使得所能够处理和传输的数据包或者数据单元都是不一样的,因此两个设备在相互通信时只有对等层才能读取和处理对方的数据包,才能够相互沟通。由此整个信息交换过程比较复杂,我们把对等层之间需要交换和处理的信息单位叫做协议数据单元(PDU, Protocol Data Unit)。如图2.6所示,假如现在网络节点A与网络节点B要进行通信,用户利用网络节点A中应用层软件向节点B发送信息。应用层首先对发送的大块信息进行处理分割成一个个独立的数据传输单位,并对其进行封装。所谓封装就是按照本层协议的规定将每个数据传输单位的头部和尾部加入特定的协议头和协议尾(图2.7)。而协议头和协议尾里装入的内容则是对整个数据单位系统性的描述。这里的封装就好像人们平时写完信后,一定要用信封对信进行封装,并在信封上写上这个信件的收发地址、发送人、收信人、邮编、日期等系统性的描述。封装完成后,所有的发送信息变成了许多待发送的应用层的协议数据单元,即A-PDU。而后将A-PDU通过层间接口透明地传入传输层。传输层中用户可使用TCP或UDP协议,A-PDU按照TCP或UDP协议的规则再次进行分组和封装,相当于在A-PDU的头部和尾部再次加入了TCP或UDP协议头和TCP或UDP协议尾,从而形成了传输层的数据单元T-PDU。以此类推,网络层接收到传输层的T-PDU,便按照IP协议将其封装处理成N-PDU。数据链路层则把N-PDU整理封装成D-PDU,也称为数据帧。最终物理层把一个个数据帧转换成数字信号送入网线传输至网络节点B。
图2.6 数据传输
图2.7 数据包的封装
网络节点B的物理层收到数字信号后将其转换成数据帧,并把数据帧交给数据链路层。数据链路层读取数据帧的协议头和协议尾,并对其进行解封装,即把它还原为N-PDU。N-PDU是按照IP协议封装的,只有网络层才可读取。以此类推,网络层读取N-PDU的系统性描述后,将其再次解封装为T-PDU。最终数据传输单元(PDU)被一次次解封装,还原为原来网络节点A利用应用层软件发送的原始信息,从而使网络节点B的用户方便读取。
由此可以发现只有对等层才能够相互读取对方发送的数据,比如A和B的网络层只能读取和发送N-PDU,而传输层则只能读取和发送T-PDU等。而A的应用层发送了A-PDU, B的应用层而后接收到了A发送的A-PDU。虽然这个发送至接收的过程穿越了很多层,数据包被封装解封装了多次,但在讨论研究的时候可以把这个复杂的过程忽略,只认为A的应用层和B的应用层通过传送A-PDU为单位的数据进行通信。而这条通信链路是虚拟的,因此可以称为虚通信。同理,所有的对等层都可进行虚通信。
为了说明白这个复杂的问题,用一个现实中的事例进行类比说明。某个养老院有两座4层小楼(图2.8),每层通信地址为图中数字与字母所标,现一层想与A层通信,便将写好的信塞于信封中(封装),约定信封地址左上角为寄信人,右下角为收信人(通信协议)。一层把信传于二层,二层将信再塞入一个信封中并依然按照上边的约定写明收发地址,传给下层。以此类推,最后四层用同样的方法处理从上层收到的信,并按照地址寄于D层。D层剥开一层信封传给上层,C层核实地址,发现收信人是自己,于是拆开信封并交给B层,否则丢弃信件。以此类推,最终信安全寄到A层。
图2.8 现实事例示意图
如图2.8所示,所有对等层的协议都是一致的。因此从各层发信的地址看,1、2、3、4层的信都是寄给对等层的,而A, B, C, D层都拿到了发给自己的信件(信封右下角为本层地址)。所以对等层通信完全可以不用考虑其他层的因素(图2.9)。
图2.9 虚通信
现在考虑这么几个问题:
① 把图2.8中任意同一层次的协议(约定)改为右下角为寄信人,左上角为收信人,看看信是否会安全寄到?
② 把图2.8中多层的协议(约定)改为右下角为寄信人,左上角为收信人,看看信是否会安全寄到?
③ 把图2.8中多个层次改为互不相同的协议,看看信是否会安全寄到?
读者可以思考一下,它们的答案都是可以安全寄到!这些问题可以充分说明在一层或多层中进行任何协议修改都不会影响到其他层次的通信。因此,这里也验证了在层次结构中阐述的:网络体系结构中,网络各层之间相互独立,对等层之间的通信可以屏蔽下面层次复杂的细节,可看成是相互平行的两层之间的逻辑通信,便于实现网络的标准化。这些都是进行虚通信的有力保障。