
我知道 IP 标头长度最少为 20 个字节,最多为 60 个字节。但为什么?为什么 IP 头长度限制为 60 字节?这里有没有人可以向我解释一下?谢谢你。

我知道 IP 标头长度最少为 20 个字节,最多为 60 个字节。但为什么?为什么 IP 头长度限制为 60 字节?这里有没有人可以向我解释一下?谢谢你。
在Internet协议(IP)定义在RFC 791。RFC 指定了 IP 报头的格式。在报头中有IHL(互联网报头长度)字段,它是4位长并以32 位字指定报头长度。IHL 字段可以保存从 0(二进制 0000)到 15(二进制 1111)的值。
所以最长的Internet Header(IP header)大小可以是 15*32 Bits = 480 Bits = 60 Bytes。这就是标头的最大大小为 60 字节的原因。
最短的报头大小为 20 字节,其中 IHL 字段的值为 5 (0101)。这是因为标题中的所有必需字段都需要 20 字节的空间。因此,虽然理论上您可以将 IHL 设置为 < 5 的值,但这始终是一个不正确的值,因此是一个无效的数据包头。
根据定义它的RFC 791,请参阅第 12 页,其中讨论了数据报:
Total Length 是数据报的长度,以八位字节为单位,包括互联网报头和数据。该字段允许数据报的长度最多为 65,535 个八位字节。对于大多数主机和网络来说,如此长的数据报是不切实际的。所有主机都必须准备好接受最多 576 个八位字节的数据报(无论它们是完整的还是分段的)。建议主机仅发送大于 576 个八位字节的数据报,前提是它们确信目的地已准备好接受更大的数据报。
选择数字 576 以允许传输合理大小的数据块以及所需的报头信息。例如,此大小允许 512 个八位字节加 64 个报头八位字节的数据块适合数据报。最大的 Internet 标头是 60 个八位字节,典型的 Internet 标头是 20 个八位字节,这为更高级别协议的标头留出了余量。”
基本上长度定义在 20 到 60 之间,以允许不同的协议使用并适合推荐的数据报大小。
始终使用 IP 报头的前 5 行。因此,IP 报头的最小长度 = 5 x 4 字节 = 20 字节。代表选项字段的第 6 行的大小各不相同。选项字段的大小最多可达 40 个字节。因此,IP 报头的最大长度 = 20 字节 + 40 字节 = 60 字节。