说下命令,Ping 192.168.255.2这个都能够知道啥意思,-l表示ICMP的数据部分(不含其它任何头部信息)为1473,-c 1只发送一次。
通过抓包,可以看到有几个信息(wireshark升级了下,界面看起来更美观了~)
- ARP:这个是获取对方IP对应的MAC
- ICMP,这个是正常的ICMP协议的报文
- IP Fragmented:IP分片包
有IP分片包出现,说明刚刚的数据包整体超过1500个字节了。
- 数据明明是1473怎么就超过1500字节了呢?
这里要注意,1473表明的是ICMP数据部分的大小,不计算头部在内,那么加上头部后呢? 1473 8(ICMP头部) 20(IP头部)=1501,这样正好超过了1500个字节,所以导致分片了。MTU是二层概念,二层以上的头部加数据不能超过1500,否则会进行分片。
- 从192.168.255.1到192.168.255.2为什么只有一个分片包
这里对于刚接触抓包的朋友来说,可能有点看不懂,我们来看几个参数
- IP头部里面有一个identification 这个是标识符,分片的包会打上相同的包,方便目的端区分
- Flags里面的MF位是1,表示这个不是最后一个包,如果是最后一个包会为0
- offset:偏移符,表示数据包的位置,这个为0,表示是第一个分片包
- Data:你这里会发现数据是1480,并且是没有ICMP头部的(这个内容其实是包含了头部信息的,1480-8,1472,注意:只有第一个分片会携带头部信息,抓包没有显示出来)。
那还有1个字节的包在抓包里面没有显示,这可能是抓包中把尾包省略了,但是可以从另外一个地方看出来。
在看一个完整的包可以上面的疑惑了
- IP头部里面有一个identification 这个是标识符,分片的包会打上相同的包,方便目的端区分
- 抓包软件里面有一个IPV4 Fragments的组合解析,发现有两个分片,Frame:3,数据负载是0~1479(1480个字节),Frame:4,数据负载是1480-1481(1个字节),总共就是1481
- DATA部分为1473,是因为1481里面有8个字节的头部,1481-8=1473个字节
- 为什么会影响效率跟增加延迟呢?