TCP 会将应用层发来的数据顺利的发送至目的地。实现可靠传输的功能,需要给数据封装 TCP 头部信息。TCP 头部信息包括源端口号和目的端口号(识别主机上应用)、序号(确认哪部分是数据)以及校验和(判断数据是否被损坏)。随后封装了 TCP 头部信息的段再发送给 IP 。
IP 模块处理
IP 将 TCP 传过来的数据段当做自己的数据,并封装 IP 头部信息。IP 头部信息中包含目的 IP 地址和源 IP 地址,以及上层协议类型信息。
IP 包生成后,根据主机路由表进行数据发送。
网络接口处理
网络接口对传过来的 IP 包封装上以太网头部信息并进行发送处理。以太网头部信息包含目的 MAC 地址、源 MAC 地址,以及上层协议类型信息。然后将以太网数据帧通过物理层传输给接收端。发送处理中的 FCS 由硬件计算, 添加到包的最后。设置 FCS 的目的是为了判断数据包是否由于噪声而被破坏。
接收数据包
包的接收流程是发送流程的反向过程。
网络接口处理
收到以太网包后,首先查看头部信息的目的 MAC 地址是否是发给自己的包。如果不是发送给自己的包就丢弃。如果是发送给自己的包,查看上层协议类型是 IP 包,以太网帧解封装成 IP 包,传给 IP 模块进行处理。如果是无法识别的协议类型,则丢弃数据。
IP 模块处理
收到 IP 包后,进行类似处理。根据头部信息的目的 IP 地址判断是否是发送给自己包,如果是发送给自己的包,则查看上一层的协议类型。上一层协议是 TCP ,就把 IP 包解封装发送给 TCP 协议处理。