我知道 IP 标头长度最少为 20 个字节,最多为 60 个字节。但为什么?为什么 IP 头长度限制为 60 字节?这里有没有人可以向我解释一下?谢谢你。
最大 IPv4 标头大小
在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 字节。