注:原实验是在虚拟机中对主机使用ping命令,本文对www.bilibili.com使用ping命令来代替
IP分片
实验内容
wireshak开始捕获分组后,在cmd中输入ping www.bilibili.com -l 3000并执行
打开wireshak,在显示过滤器中输入icmp。得到8个分组(包括4个请求request和4个回复reply)
以第一个分组(106分组)为例,该IP分组有3个分片,分片为104分组,105分组,106分组(本身),但此时的过滤条件使其余分片被隐藏
将过滤条件更改为ip.addr==112.13.92.199,即可显示其它分片(一下以分组106及其分片为例)
选择分组104,其IP首部中标志的2个bit被置为0,即允许分片(1为不允许分片);标志中的第3个bit被置为1,即其后还有其它分组。而片偏移为0,即该分片为第一个分片
选择分组105,其IP首部中标志中的第3个bit同样被置为1,即其后还有其它分组;且片偏移为1480
选择分组106,其IP首部中标志的第3个bit被置为0,即其后没有分组,即该分片为最后一个分片;且片偏移为2960(1480(分组104)+1480(分组105))
3个分片共3008bytes=3000bytes(ping命名中的-l选项设置的size)+8bytes(ICMP首部)
片偏移的十六进制表示
以分组105(第2个分片)为例,其标识MF=1且偏移量为1480,在十六进制中表示为0x20b9
0x20b9转为为二进制为:
0010 0000 1011 1001,前3位即标识标识的3个bit(本例中,MF=1即第3个bit置为1),即001;后13位标识片偏移(本例中,片偏移1480=b9(185)*8(分片以8bytes为一个单位))