详细解释数据包解封与封装过程
首先需要明确一个问题,发送方与接收方各层之间必须采用相同的协议才能建立连接、实现正常的通信,如图2.9所示。比如,应用层之间必须采用相同的编码解码规则オ能保证用户信息传输的正确性,传输层之间必须采用相同的踹ロ号与协议对应关系,才能保证上层应用进程间的通信,网络层之间必须采用相同的逻辑寻址过程才能保证数据不会传输到错误的目的地。如果数据链路层采用的协议不同,接收方甚至都不能“理解数据的内容,如果物理层的硬件接口规格不相同,接收方甚至连信号都无法接收到。
在实际的网络环境中,最终的发送方和接收方往往相隔千山万水,中间会有很多的硬件设备起到中转的作用。为了说明整个过程,我们假设了一种通信结构,如图2.10所示。在两台通信的计算机之间增加了两台交换机和路由器,发送主机的数据将会经过
这些“中间设备”才能到达接收主机。
重复过程
已知目标设备IP,源设备要发数据包给目标IP时,那么就需要把本机IP和MAC以及目标设备的IP和MAC地址为广播地址 这4个数据封装数据包里面,到达交换机以后,交换机可用看到目标MAC地址为广播地址,所以就进行广播,此时目标设备收到广播数据包以后,当解封到网络层时,发现IP是自己的,便做出应答,返回一个 本机IP和MAC以及目标设备的IP和目标设备MAC地址的数据包。
当源设备第二次和目标设备通信时,发数据包时,目标mac地址和IP直接填写的是目标服务器的,(跨网段情况的除外。)
(1)发送主机按照之前讲解的内容进行数据封装,这里就不再重复说明了。
(2)从发送主机物理网卡发出的电信号通过网线到达交换机,交换机将电信号转换成二进制数据送往交换机的数据链路层,因为交换机属于数据链路层的设备,所以它将可以查看数据帧头部的内容,但不会进行封装和解封装的过程。当交换机发现数据帧头部封装的 MAC 地址不属于自己的 MAC 地址,它并不会像终端设备那样将数据帧丢弃而是根据该 MAC 地址将数据帧智能地转发到路由器设备在转发前要重新将二进制数据转换成物理的电信号,之所以转发到路由器上,是因为主机上配置的网关是路由器,并且通过ARP协议得到了路由器的MAC地址。所以此时数据包里面的目标IP和目标MAC都是路由器的。
(3)当路由器收到数据后会拆掉数据链路层的 MAC 头部信息,将数据送达网络层,这样 IP 头部信息就“暴露”在最外面了。路由器将检测数据包头部的目标 IP 地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上(重复过程),在转发前要重新封装新的 MAC 头部信息,并将数据转换成ニ进制数.
(4)之后的过程有点大同小异了……
从这个过程我们可以看出,数据在传输的过程中不断地进行着封装和解封装的过程,中间设备属于哪一层就在哪一层对数据进行相关的处理,实现着设备的主要功能。也正因如此,我们称 TCP / IP 五层模型为“参考”模型,参考这五层模型可以帮助我们很好地研究网络中的设备以及设备工作过程中遵从的协议。