抓包工具Wireshark实典型方法介绍.docx
文本预览下载声明
抓包工具Wireshark典型使用方法
在日常维护工作中,经常用到wireshark抓包分析工具。这里介绍几种比较实用的wireshark使用方法。
用“偏移”方式过滤抓包
一般在wireshark过滤报文时,我们一般都使用像这种表达式:ip src host 10.1.1.1来过滤报文,但是有时候这种表达式,并不能完全体现我们的意图,那么我们可以使用“偏移”的这种方式来更加具体灵活的过滤我们想要的报文。
偏移一位举例
比如我们想过滤某个报文TCP协议层中,目的端口号=80的数据包。如下图所示,我们可以看出,在TCP协议层中,目的端口号所占用的字节数,可以看出目的端口号占用了2个字节,并且对应的16进制为“0x0050”。
然后,如下图所示,我们点击TCP层的首行,从代码栏中,我们可以看到整个TCP协议层所有的16进制代码,而我们关注的“目的端口”字段“0050”,在TCP层的第3字节和第4字节,那么我们需要做的就是将“0x50”过滤出来。
那么我们可以得出过滤的指令:
tcp[3:1]==0x50
这个表达式里的“tcp”表示报文的tcp协议层,3:1表示我们需要过滤的是第3字节开始,往后偏移1个字节。
偏移多位举例
比如我们想过滤报文中的“源地址”,将源地址192.168.1.100中最后的2个8位的1.100过出来,从下面的图中,我们可以看出,1.100的16进制是ox0164,并占用了2个字节位。
我们点击IP协议层的首行,可以看出我们要过滤的源地址字段是从第13字节开始的,而0164字节是IP协议层的第15和16字节。
那么我们可以得出过滤的指令:
ip[15:1]==0x64--------------过滤最后的:100,表达式表示从第15个字节开始偏移1个字节位
ip[14:1]==0x01-------------过滤倒数第二位:1,表达式表示从第14个字节开始偏移1个字节位
ip[14:2]==0x0164-------------过滤最后的两位:1.100,表达式表示从第14个字节开始偏移2个字节位
采用这种偏移的方法,理论上,我们可以对报文中的任何字段进行过滤,而不会受到限制。
TCP重发包分析
如下图所示,可以过滤触发了3次的ACK包。
然后,将这些报文选中,进而导出为txt的文件,如下图所示,用UE文本编辑器将其中的所有ACK序号筛选出来,就能知道所有被ACK三次的报文序号。
然后再到报文中去寻找这些被筛选出来的序号,看能不能找到,如果不能找到,则表示丢包。
Ping包的丢包分析
在判断网络是否正常的时候,我们经常使用ping包的手段,但是使用wireshark就能具体的分析ping包是否丢包。具体的方法就是对如下图中的sequence number进行分析。
使用如下图的方法,将所有IMCP导出为txt文件格式。
然后,使用UE文本编辑器打开txt文件,筛选出Sequence number (BE)和Sequence number(LE),如下图所示:
然后,进行excel制成图,如下图所示。
如果波形出现较大波动的地方表示有丢包。
设置TCP协议中的绝对sequence显示
Wireshark在现实TCP层的时候,默认使用的是软件自己的相对序列号作为报文的序列号。
如上图所示,选择“protocols”选项。
如上图所示,在TCP协议的设置中,有一个“相对序号”设置显示的项,一般建议去掉,不选中。
如上图所示,这样设置后,在进行抓包的时候,就会发现TCP协议层的seq字段不再是wireshark自己显示的相对序号,而是网络中真实的序号。
设置DIAMETER报文中TCP层的端口识别
在我们有时候对diameter报文抓包后,但是wireshark显示的并不是diameter报文。那么需要我们进行设置,确保wireshark能够识别。
如下图所示,打开wireshark的Edit-Preferences的Protocols。
如下图所示,DIAMETER使用端口号是根据开局的时候定的,所以wireshark不能将这些报文识别为DIAMETER,需要我们人为根据实际需要添加实际端口号,这样才能识别。
显示全部