我知道IP标头长度最小为20个字节,最大为60个字节。但为什么?为什么IP标头长度限制为60个字节?这里有人可以向我解释吗?谢谢。

评论

@soginy http://zh.wikipedia.org/wiki/Word_(计算机架构)

有什么答案对您有帮助吗?如果是这样,您应该接受答案,这样问题就不会永远弹出来寻找答案。或者,您可以发布并接受自己的答案。

#1 楼

Internet协议(IP)在RFC 791中定义。RFC指定IP标头的格式。标头中有IHL(互联网标头长度)字段,该字段长4位,并以32位字为单位指定标头长度。 IHL字段可以保存从0(二进制0000)到15(二进制1111)的值。因此,最长的Internet报头(IP报头)大小可以为15 * 32位= 480位= 60字节。这就是标题最大为60字节的原因。
最短的标题大小为20字节,其中IHL字段的值为5(0101)。这是因为标头中的所有必填字段都需要20字节的空间。因此,从理论上讲,您可以将IHL设置为<5,这始终是一个不正确的值,因此是无效的数据包头。

评论


非常感谢塞巴斯蒂安。这是我一直在寻找的答案。现在我完全明白了。所以我的比喻也是正确的。 :)

– ebyrock
2014年3月17日14:43

但是最短的值是5,因为它是在RFC 791中定义的?所以不能将其设置为0(0000)吗?

– ebyrock
2014年3月17日14:50

最少5个双字(20个字节),因为它们是标头的必需部分。可能有零个或多个选项,因此为20到60个字节。

–瑞奇
2014年3月17日19:10

我添加了最小尺寸的说明以使其完整。

–塞巴斯蒂安·维辛格
2014年3月18日在8:47

这意味着它以32位为增量计数报头长度。

–塞巴斯蒂安·维辛格
2015年6月5日13:32

#2 楼

根据定义的RFC 791,请参见第12页,其中讨论了数据报:


总长度是数据报的长度,以八位字节为单位,
包括Internet标头和数据。此字段允许
数据报的长度最多为65,535个八位位组。如此长的数据报对于大多数主机和网络来说都是不切实际的。必须准备好所有主机
,以接受最多576个八位字节的数据报(无论它们是完整到达的还是分片到达的)。建议主机仅在确定目的地
已准备好接受较大的数据报的情况下,才发送大于576个八位字节的数据报。

选择数字576以允许除了所需的标头信息之外,还要传输大小合理的数据块。对于
示例,此大小允许将512个八位字节加64个标头
八位字节的数据块放入数据报中。互联网的最大标头是60个
八位位组,典型的互联网标头是20个八位组,这为较高级别协议的标头提供了
余量。长度定义在20到60之间,以允许不同的协议使用并适合建议的数据报大小。

评论


再次感谢迈克,但我不太明白。在您的答复中,它说“最大的Internet标头是60个八位位组”,但没有解释为什么?我在问题中插入了一张图片。 IP头的大小在IHL(Internet头长度)中定义,其大小为4-7位,这意味着其4位长。如果我们在Base2(1111)中将所有位设置为1,则在Base10中将设置为15。 Internet标头长度为32位字。我们乘以15 x 32 = 480位,等于60个字节(480/8)。我不确定这是一个正确的比喻。 :(

– ebyrock
2014年3月17日14:07在

不是试图简短,而是“为什么”:这就是它的定义方式。所有互联网协议都有定义。这些定义是所有互联网流量协议都遵循的标准。

– Mike Naylor
2014年3月17日14:18