为什么 IPv4 数据包的最小 MTU 是 68 字节?

网络工程 ip ipv4 协议理论 射频卡
2021-07-14 06:19:17

根据RFC791

每个 Internet 模块都必须能够转发 68 个八位字节的数据报,而不会进一步分片。这是因为 Internet 标头最多可能有 60 个八位字节,而最小分段为 8 个八位字节。

我对“互联网标头可能多达 60 个八位字节”部分感到有些困惑。IPv4 报头的最小大小是 20 字节而不是 60。那么,IPv4 报头的最小 MTU 不应该是 20 字节加上 8 字节的最小片段吗?我们不应该也考虑上层报头长度吗?

RFC 还提到:

每个 Internet 目的地都必须能够接收 576 个八位字节的数据报,无论是整块还是要重新组装的片段。

那么 MTU 是 68 字节还是 576 字节?

1个回答

您需要在标题中考虑 Internet 选项。看看附录 A 中的第三个例子,它显示了一些附加的选项字段,以便远远超过 20 个字节(该例子增加了 12 个字节,但数字是可变的,可以更多)。

上层报头长度不是 IP 的直接问题。头显然包含有关协议类型的信息,但除此之外,上层协议规范超出了 IP 头的范围。

所以 RFC 基本上是说,对于路由器,最大可能的 IP 标头是 60 字节,最小的有效载荷是 8 字节(因此,一个 68 字节的数据包)。反过来,给定的终端主机必须能够接收最多 576 字节的最终数据包(它可能由一堆片段组成,具体取决于路径上路由器的 MTU)。

因此,理论上,最小大小的数据包可以是 20 个字节的标头(无选项)加上最小的 8 个字节的有效载荷。必须是一个片段,否则数据包将包含一定数量的 L4 报头协议信息。