Advertisement

《网络协议》IP 分片与 TCP 分段

阅读量:

最大传输单元 (Maximum Transmission Unit, MTU)是通信协议某一层能够传输的最大数据包容量(单位为字节)。各网络根据其需求规定了不同数据帧的最大长度,在此限制下实现信息传递的有效性。常见的以太网使用1500字节作为MTU值。

若传输IP层的报文规模超出链路层最大传输单元(MTU)限制,则IP层需将该报文分割处理。每一个原始报文将被切割成若干个子报文块,并保证每一块子报文块的大小均不超过链路层的最大传输单元值。

IP数据包经过分片处理后,在仅当到达目的网络设备时才会进行重组(其实在这里,并非等到到达目的网络设备后再进行重新组合),而这些过程(分片与重组)均发生在网络层中。其主要目标是为了确保分片与重组过程对传输层(包括TCP和UDP)透明,并且还能防止可能出现的一些性能损失问题。已经分片过一次的数据包可能还会被进一步分割(即多次分割)。

当一个IP数据包被分割时,仅有第一个片段携带了传输层协议头部信息;其余片段则不包含传输层协议头部信息。然而每个分割后的片段都带有自己的IP头部信息,并均被视为一个独立的数据段。在路由选择过程中,各组之间相互独立;因此分割后的各个片段可能不会按顺序到达目标节点。但每一个原始片段对应的头部信息仍然能够帮助恢复正确的到达顺序。

最长传输单元大小 (Maximum Segment Size, MSS)是 TCP 数据包每次传输的最大数据单元。若 TCP 报文段的长度超过 MSS,则需将 TCP 数据包进行分段传输。

在三次握手阶段计算出来的,并被包含在TCP头部信息中。告知对方设备能够处理的最大MTU(Maximum Transmission Unit)。为了优化传输效率通常通过协商双方设备的最大MTU值,并选择其中较小的一个来限制数据包大小。每个分段都会有一个完整的头部信息块到达接收端后会依据接收到的信息重新组装报文内容。所有这些过程都发生在运输层协议栈中

采用 TCP 协议进行数据传输时不会导致 IP 分片现象的发生原因在于传输层对 TCP 数据包进行适当的分割以适应网络条件限制这一机制的存在,在此情况下 IP 层的数据报长度自然也就不会超出 MTU 的限制范围因此也就无需发生分片现象了与此相反 UDP 数据由于不具备这种自主分割能力当其携带的 IP 数据报长度超过 MTU 时就必须由 IP 层对之进行强制性的分片处理以保证网络的整体运行效率和数据的安全性传输层中的 TCP 分割机制为网络层中的 IP 分片提供了基础保障而 IP 层的分片操作则主要针对的是 UDP 类型的数据报类型这一特性使得在使用 TCP 协议进行通信时可以完全避免因数据过长而导致的 IP 层分片问题。

由于IP层缺乏超时重传机制,在IP数据包发生分片丢失的情况下,则需强制性地重新发送完整的IP数据包;这些策略通常由更高层次协议执行(如TCP采用超时与再传策略而UDP不采用)。一旦在TCP包分片中出现某一部分缺失,在超出预期时间后TCP会重新发送完整的该部分;此对应的则是单个IP数据包实例。

参考资料:

《TCP/IP 详解》

《图解 TCP/IP》

TCP分段与IP分片

全部评论 (0)

还没有任何评论哟~