为什么在IPv4头中有一个全长字段?

IPv4数据报的头部包含一个称为总长度为16位的字段。 由于已经有关于数据报报头长度的信息,所以总长度似乎是冗余的:可以通过从链路层传递的数据总长中减去报头长度来计算。

这个领域真的有必要吗?

简单的答案是肯定的 – IPv4规范说明了它的必要性,至less在兼容性方面是如此。

漫长的回答是,如果某个层2传输的大小低于某个特定大小,它将会填充一个数据报。 当发生这种情况时,IP长度标题是很重要的,这样第二层填充可以被丢弃。

这可能是一个无关紧要的问题,但我清楚地记得,当我们讨论networking101中的TCP / IP时,大约25年前在大学里提出了同样的问题。

我得到了2个答案,哪个还是有意义的:

“在当时deviseTCP / IP v4的时候,IPv4将来不会有任何扩展,这会使它变得更有用,所以他们把这个作为未来变革的开放。”

“如果处理TCP-IP数据包的软件不知道数据传输的L2方面,如果需要一种方法来查找大小,你可以把它放在数据包中,或者你提供一个单独的参数给软件指定所以你最好把它放在头上。“

(为了说明最后一个:你自己在这个问题中提到:“从链接层传递的数据的总长度”是另外一个参数。)