一个节点收到两个IP包的首部如下:
(1)45 00 05 dc 18 56 20 00 40 01 bb 12 c0 a8 00 01 c0 a8 00 67
(2)45 00 00 15 18 56 00 b9 49 01 e0 20 c0 a8 00 01 c0 a8 00 67
分析并判断这两个IP包是不是同一个数据报的分片?如果是那将二者排序,并判断是否能重组完成。
大家可以点击链接参考我之前的文章:网络协议分析(1)已知ip包内容,分析报文内容及作用
这个问题主要考察ip数据包的分片与重组,记住下面这句话:
判断是不是来自同一数据报,需要看这两个ip包的标识,协议,源ip,目的ip
MF=0,则是最后一片,MF=1,不是最后一遍。
答:
由以上数据可知,两个数据的标识位都为18 56(十六进制),换算成十进制为6230,协议都为01(十六进制),换算成十进制为1,源ip地址都为c0 a8 00 01,换算成十进制为192.168.0.1,目的ip地址都为c0 a8 00 67,换算为十进制为192.168.0.103,故两个ip包来自于同一数据报。
由第一个数据包可知:标志和片偏移为20 00(十六进制),换算为二进制位0010 0000 0000 0000,格式为:
由第二个数据包可知:标志和片偏移为00 b9(十六进制),换算为二进制为0000 0000 1011 1001,
格式为:
第一个MF为1,片偏移量为0,故为这是第一个分片的数据报,第二个MF为0,故这是最后一个分片的数据报。
检验是否可以重组,就需要检验一数据报的数据长度和二数据报的片偏移*8,由一数据报数据可得,首部长度为20,总长度为05 dc(十六进制),十进制为1500,则数据部分长度=总长度-首部长度,为1480,等于二数据报片偏移(185)*8,故两个数据报可以重组完成。
注:标红的这个8,大家要记住,固定就是乘8