试验目的:抓包分析IP协议的传输过程和数据分片
操作系统:Windows 10 企业版
抓包工具:Wireshark 3.6.3
第一步:ping 目标主机
1)Wireshark开启抓包后, cmd 中执行命令:ping 54.222.162.186 -n 1 -l 3200
翻译:向目标主机发送一次数据包,包大小是 3200字节。
第二步:分析传输过程
1)重点看我标记的这6个包:
前三个是请求包,后三个是响应包;
数据帧的最大传输限制(MTU)是1500字节,我们 ping 的数据包是 3200 字节,会被IP协议分割成三个数据包(1500 + 1500 + 200),刚好对应前面三个请求包;
三个请求包最后以一个ICMP协议数据包结尾,用来传输控制信息。
响应包的作用也是如此。接下来,我们分析一下,IP协议是怎么分割数据的。
第三步:分析数据分片
1)先看第一个数据包(IPv4),重点看我圈中的字段:
Flags字段第二个值是 More Fragments,表示这个数据报后边有多余的数据分片;
Fragment Offset字段的值是0,表示这个数据分片从第0个字节开始保存数据。
2)再看第二个数据包(IPv4),重点看我圈中的字段:
Flags字段第二个值仍是More Fragments,表示这个数据报后边也有多余的数据分片;
Fragment Offset字段的值是1480,表示这个数据分片从第1480个字节开始保存数据。
从这里也可以反推出,第一个字段保存了 0~1480个字节。之所以只保存了1480个字段,是因为首部占了20个字节,首部+数据刚好够1500个字节,达到数据帧的上限。
3)再看第三个数据包(ICMP),重点看我圈中的字段:
Flags字段第二个值为空,表示这个数据报没有多余的数据分片;
Fragment Offset字段的值是2960,表示这个数据分片从第2960个字节开始保存数据。
从这里可以反推出,第二个字段保存了第 1480 ~ 2960个字节。
最下面的 IPv4 Fragments 字段记录了数据报的分片信息:第一、二个数据包保存了1480个字节,第三个数据包保存了248个字节。
接收方可以根据这些分片信息,重组被分割的数据。
第四步:分析生存时间
TTL是生存时间值,每经过一个路由器时,生存时间值减1,减少为0时,则会丢弃,目的是防止数据包在网络中循环转发,以节约网络资源。
1)观察ICMP请求和响应包,重点看我圈中的地方:
ICMP请求包的TTL是128,而返回的ICMP响应包的TTL则变成了48,这意味着中间经历了80个路由器,ping 命令的返回结果也可以观察到这一点: