片偏移为什么是8字节

如题所述

因为片段偏移字段比总长度字段即16比特(并且2^3是8)短3比特。片偏移以8个字节为偏移单位,即每个分片的长度一定是8字节的整数倍。

举个例子:一数据报的总长度为3820字节,其数据部分为3800字节长(使用固定首部),需要分片为长度不超过1420字节的数据报片。因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。于是分为3个数据报片,其数据部分的长度分别为1400,1400,1000字节。

一个IP数据报由首部和数据两部分组成

首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面,是一些可选字段,其长度是可变的。占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。

首部长度占4位,可表示的最大十进制数值是15。请注意,首部长度字段所表示数的单位是32位,即4字节,也就是说,如果首部长度为0101(十进制为5),那么首部长度则占20个字节。因为IP首部的固定长度是20字节,因为这一字段的最小值为0101。当这一字段达到最大值1111(十进制为15)时,就表示首部长度为60字节。

如果IP分组首部的长度不是4字节的整数倍时,必须利用最后的填充字段加以填充,因此,IP数据报的数据部分永远在4字节的整数倍时开始,这样在实现IP协议时较为方便。

温馨提示:答案为网友推荐,仅供参考