学习数据包分析时遇到如题所述的困惑,GOOGLE&白度无果。看了RFC791对fragment offset字段的描述后经思考计算才明白。希望对有同样困惑的童鞋有所帮助。下面从截图开始说明:

如图,灰底的Fragment offset:1480那行对应的十六进制码是蓝底的0X20b9,刚开始很疑惑为何十进制的1480对应的是0x20b6,怎么算都不对啊,不知道读者您是不是遇到了这样的疑惑!

    参考RFC791中相关字段的说明,才明白原来这个1480指的是偏移的实际字节而不是fragment offset字段中比特位对应的十进制数值。该字段的是以8个“八比特组”为单位的,所以1480在该字段的值是除以8之后的185,换算成二进制就是0 0000 1011 1001,因为前面还有个值为001的3比特的Flag字段,所以加上Flag字段后其二进制值是0010 0000 1011 1001,换算成二进制就是20b9。请自己算算吧。弄不明白的需要先掌握数据包结构及进制等基础了。