分析工具: wireshark 3.0
如下图所示,有三个数据包,这是分片的第二个数据包,数据包总长度为 1500字节,那么分片偏移应该为:
1500 - 20(IP头部大小) = 1480 字节;但如下图所示的分片偏移却是 185;
查阅RFC791,所述如下:
The data of the long datagram is divided into two portions on a 8 octet (64 bit) boundary(the second portion might not be an integral multiple of 8 octets,but the first must be).
分片偏移是要按8 octet来对齐的,也就是按8字节对齐,所以这里的一个单位应该是8字节, 185单位 * 8字节 = 1480字节,也就对的上了。
关于octet,大多数因特网标准使用八位组(octet)这个术语而不是使用byte来表示8位的量,早期的一些系统的byte表示的bit 不一致,有的byte表示10bits,所以octet是准确定义的,1 octet = 8 bit;
另外,这里是标识 + 分片偏移,一起组合成的十六进制码 20b9,wireshark 中也清楚展示了,flags 是最高三位的 001,分片偏移是剩下的13位: 0 0000 1011 1001, 所以, 20b9 = 0010 0000 1011 1001.