网络中数据包的碎片化

网络中数据包的碎片化

为什么通过互联网发送的数据包可能会被碎片化?

我不明白为什么要将数据报拆分成更小的部分。这样做有什么用呢?

答案1

当数据包通过 MTU(最大传输单元)小于数据包大小的网络连接发送时,必须进行分段。例如,当您通过 PPPoE 连接将 1500 字节的数据包从 LAN(以太网)发送到互联网时,其 MTU 为 1492 字节,您的路由器必须对数据包进行分段。

答案2

不同的协议有不同的数据包大小限制。

最初,“互联网”(注意小写的“i”)是不同网络的联合,通常采用不同的技术。“IP”数据包经过专门设计,易于在大多数协议上处理,这就是为什么它被称为“互联网协议”,即创建互联网的协议。

能够在不同的线路协议之间进行路由的一个关键部分是指定在从允许大数据包的网络传递到需要较小数据包的网络时如何拆分和重新连接数据包。

现在,最常见的低级协议是以太网;但即便如此,也可能存在一个 GigE 9000 字节数据包,必须将其拆分成几个 1500 字节数据包才能用于 100Mbit 以太网。

答案3

基本上是因为 TCP 允许最大传输单元 (MTU) 在设备之间变化,并且需要以某种方式处理差异。较慢的链接可以从发送较小的数据包中受益,这样它们就不会长时间传输单个数据包。MTU 变化的结果是碎片化或 ICMP 消息返回,表明数据包太大,因此发送者可以重试。碎片化虽然效率不高,但通常可以保持正常运行。

HenryS 的 PPPoE 就是一个可以说明 MTU 为何会变化的好例子。由于 PPPoE 封装在以太网上,因此 MTU 通常为 1500。PPPoE 客户端将其 MTU 设置为 1492,以便为每个数据包封装所需的额外数据留出空间,避免其上方的链路层出现碎片。

答案4

您发送的数据包被碎片化的原因是:

  • 从您的计算机到目的地的路径具有不同的 MTU 和
  • 你发送的数据包(实际上是包含数据包的帧)大于路径上的最小 MTU,并且
  • 您的计算机未使用 PMTUD 或 PLPMTUD。请参阅:http://kb.pert.geant.net/PERTKB/PathMTU

相关内容