演示目标:在实时通信的过程中使用协议分析器捕获并分析IP报文的各个字段。注意以分析标识符、标志以及片偏移字段的功能作为重点。
演示环境:如下图4.19所示的演示环境。
注意:在做主机连通性测试时,为什么不直接从主机A测试(ping)主机B的连通性,而是首先测试到各自默认网关的连通性。原因:当完成阶段性网络配置后,建议测试阶段性配置的连通性。当建设庞大且复合程度较高的整体网络通信体系时,如果出现了故障,可以快速的定位到某一阶段性故障上,而不是在庞大的网络体系中如大海捞针般的寻找故障源,这样可以提高工程中故障排除的效率。
第三步:现在开始捕获实时通信的数据帧。分别在主机A和主机B上,打开Wireshark协议分析器软件,并监控网络中实时通信的数据。在主机A的命令提示符(CMD)下,输入命令Ping 192.168.2.2,待完成数据交互后,停止并查看主机A和主机B上的Wireshark协议分析器,得到如下图4.25所示,表示主机A的Wireshark捕获的数据帧。
注意:由于ping命令是基于ICMP协议工作的,所以捕获的数据帧显示的协议就为ICMP,而通信是一个完整的会话具备双向性,所以存在着ping的请求消息(Echo request)和ping的回应消息(Echo reply)。
第四步:详细分解如上图4.25主机A上捕获的数据帧的第一个数据帧,得到如下图4.26所示,这是一个完整的IP报文,其中包括IP报头部分和所携带ping(ICMP)的数据部分。
图4.29 TTL字段
第六步:在该步骤中将以取证IP报文中分段数据为重点,详细的通过取证实验来理解IP报文的数据分段过程。首先在主机A上打开Wireshark协议分析软件,并启动数据捕获。然后,表示在主机A的命令提示符(CMD)下,执行命令Ping 192.168.2.2 –l 3500 如下图4.30所示,待完成数据通信后,停止并查看主机A上捕获的数据帧,如下图4.31所示。
建立分段的分析过程:
1.Ping 192.168.2.2 –l 3500 指示ping所携带的字节数为3500字节。注意默认情况下的ping是不会出现IP报文分段的现象,因为默认的Ping只携带32个字节的数据传输,而以太网能承受的最大传输单元(MTU)1500,所以默认的ping携带的数据根本无法造成IP报文分段,所以在该演示环境中为了制造出IP报文分段的现象就必须使ping携带超过MTU1500的数据,在演示环境中为3500。
2.信息Fragmented IP protocol 表示IP数据存在分段,分段的原因是ping所携带的3500字节大于本以太网测试环境的MTU最大值1500字节。
3.为什么不先显示Echo request信息,也就是ping所使用的ICMP消息,而是先显示了Fragmented IP protocol信息,也就是分段信息。原因在于,在执行ICMP数据传递之前,首先需要在传输层对3500字节数据执行分段。
第七步:现在分析IP报文分段过程中较抽象的部分,首先展开如上图4.31所示的所有数据帧,得到如下图4.32、图4.33以及图4.34所示数据帧。指示分段的数据帧。
n3500字节分段过程的分析:
根据图4.30所示,可知ping所携带的3500字节被分成了3段,第一、第二分段数据大小为1480字节,第三分段数据大小为548字节。为什么第一、第二分段数据不按以太网MTU最大值1500字节划分呢?其原因在于划分分段数据时,必须考虑IP报头20字节的大小。第三分段548字节包含了8字节的ICMP协议申明报头,计算方式为3500-1480-1480+8=548。
n标识符字段分析:
根据图4.32、图4.33以及图4.34所示数据帧所示的“Identification:0x0324(804)”标识符字段可知同一个IP报文被执行分段后,标识符的值是一致的,表示一个较大的IP报文虽然被分割成三个较小的IP报文,标识值0x0324(804)表示三个较小的IP报文属于同一个较大报文,这样才能保证被分段数据可重新组合在一起。
n标记字段分析:
如下图4.35所示,表示第一、第二分段数据的标记字段。由于这两个分段不是最后一个分段数据,所以MF=1( More fragments )表示其后还有更多的分段数据,如下 图4.36 所示,表示 第三分段数据的MF=0,则表示该分段数据为最后一段。n片偏移字段分析:
根据图4.32、图4.33以及图4.34所示,可知第一分段数据的Fragment Offset=0,第二分段数据的Fragment Offset=1480,第三分段数据的Fragment Offset=2960,那么这些片偏移值是如何计算的?第一分段数据片偏移值为0,因为起点相同,分段开始处也相同,所以第一分段的片偏移为0。第二分段数据“片偏移”值的计算,首先要知道第一分段数据的片偏移值(该演示环境其值为0),第二是要知道第二分段的分段起始值,那么根据该演示环境的分段大小可知,第一段分段的数据大小为1480,由于计算机计数是从0开始,所以第一分段数据的结尾处为1479。所以第二分段数据的分段起始值就为1480,此时根据片偏移的计算方法,既分段数据大小减第一分段的片偏移值,可知第二分段数据的Fragment Offset=1480-0,同理,第三分段数据的Fragment Offset=2960-0。
本文转自 kingsir827 51CTO博客,原文链接:http://blog.51cto.com/7658423/1264818,如需转载请自行联系原作者