数据转发过程概述
数据包在相同网段内或不同网段之间转发所依据的原理基本一致。
一、数据帧封装
TCP封装(四层)
当主机建立了到达目的地的TCP连接后,便开始对应用层数据进行封装。
主机A会对待发送的应用数据首先执行加密和压缩等相关操作,之后进行传输层封装。 Web应用是基于传输层的TCP协议传输数据的。
IP封装(三层)
主机A完成传输层封装后,一般会进行网络层数据封装,在使用IP进行封装时,需要明确IP报文的源和目的地址。如果IP报文的大小大于网络的最大传输单元(MTU),则该报文有可能在传输过程中被分片。
查找路由
主机A必须要拥有到达目的地的路由。
每个主机都会独自维护各自的路由表项。主机A在发送数据前需要先检查是否能够到达目的端,这个过程是通过查找路由来完成的。
ARP请求
通过ARP缓存表找到下一跳的MAC地址。
如果表项里没有下一跳的MAC地址,主机A会发送ARP请求。
以太网封装(二层)
主机A在链路层封装数据帧时,会遵循IEEE 802.3或Etherne_II标准,Ethernet_II帧头中的类型字段填充为0x0800,以表示网络层使用的是IP协议。源MAC地址为主机A的MAC地址,目的MAC地址为网关路由器E0/0接口的MAC地址。
二、数据帧解封装
RTB以服务器A的MAC地址作为目的MAC继续转发。
服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会继续处理该数据帧。
服务器A检查数据包的目的IP地址,发现目的IP与自己的IP地址相同。
服务器A剥掉数据包的IP头部后会送往上层协议TCP继续进行处理。
服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。