为什么 Internet 主机“不需要”接收大于 576 字节的 IPv4 数据报?

网络工程 ipv4 ip 通讯协议
2021-07-06 19:28:23

我目前正在研究 Internet 协议并且有一个关于 IP 数据报的问题。

在 IP 标头中,我知道有一个名为“总长度”的字段,它以位为单位指定特定分段数据报的总长度。然而,在阅读教科书(“TCP/IP Illustrated Vol. 1”)时,我读到“主机不需要能够接收大于 576 字节的 IPv4 数据报。”

如果它说它“不需要”,那么是否意味着它在技术上能够运输它?为什么在 IP MTU 方面有这样的限制?

编辑

我在学习 TCP 时遇到的一件事让我想起了我之前问过的这个问题。

TCP 是一种传输层(传统 OSI 模型中的第 4 层)协议,它封装在较低的网络层(第 3 层)协议中运行。这也是使用称为 IP 的互联网“动力马”的地方。

所有的协议都有一个特定的头部,在IP和TCP的情况下,它们的头部的最小长度为20字节(在TCP的情况下,最大长度为60字节,包括最后添加的选项)。

TCP 协议使用称为“段”的东西,它相当于其他协议的数据包。最大段大小(MSS)是“最大的细分市场,一个TCP愿意从其收到对端,因此,当发送它的对等应该永远使用的最大尺寸。” ( TCP/IP Illustrated, Vol. 1, 2e p. 606)。

MSS 通常在 TCP 标头中指定为选项,但如果未指定,则默认大小为 536 字节。回想一下,IP 标头和 TCP 基本标头都至少为 20 个字节。这意味着:20(IP 标头)+ 20(TCP 标头)+ 536(默认 MSS)= 576 字节。

因此,IPv4 主机应该能够处理的最小数据包大小为 576 字节。

2个回答

打个比方,这就像您的市议会规定“城市中的每个停车位都必须足够大以容纳一辆普锐斯”。也就是说,建造一个太小而无法容纳普锐斯的停车位是违法的。

这条规则当然与高速公路上允许的车辆大小无关。

IP 数据报的长度可达 64K,但在 1981 年要求每个主机分配 64K 缓冲区是完全不合理的。那可能是您在 16 位计算机上的整个可寻址内存!这些数字本质上是任意的,但内存太昂贵而不能解决问题是一个因素。

来自 RFC 791:

所有主机都必须准备好接受最多 576 个八位字节的数据报(无论它们是完整的还是分段的)。建议主机仅发送大于 576 个八位字节的数据报,前提是它们确信目的地已准备好接受更大的数据报。

选择数字 576 以允许传输合理大小的数据块以及所需的报头信息。例如,此大小允许 512 个八位字节加 64 个报头八位字节的数据块适合数据报。