公司在运维中,发现客户的PC端的客户端总是莫名其妙出现问题,而有些问题服务端并没有相关报错日志,于是我们把排查范围就放到客户端上,是否客户端在交互协议的时候导致一些问题呢?比如客户端上的该显示的数据没有了,相关配置文件都没有问题等类型问题。
先介绍一下Wireshark工具吧,这是一个我觉得比较入门级的抓协议的工具,简单好用而已还有汉化版,Wireshark是世界上最流行的网络分析工具。这个强大的工具可以捕捉网络中的数据,并为用户提供关于网络和上层协议的各种信息。今天来说说简单的使用吧。
先从百度自己搜这个工具,一大堆,而且都是官方汉化好的,工具也不大,这一步我就不多说了。
安装完成后打开工具,如下图
选择一个网络,我是局域网用户,我一般选择心跳波动比较大的那个连接。
这里先以QQ登录为例来说明一下
点击进去后,先选择下图的红色框里的停止按钮,清理一下之前的所有的内容。
然后打开QQ,在点QQ登陆的时候,点击上图的绿色类似帆船的按钮,然后再点登陆QQ,如下图
就会出现一大堆数据包,这个时候我们要找到我们想要的数据,就需要过滤一下条件,否则一个一个去看,很费时间,具体过滤条件,我会在后文大概罗列一个表。
过滤的话在停止按钮下面有个“应用显示过滤器”的文本框,输入你要过滤的条件,而QQ就可以使用oicq来过滤,如下图
我们发现一下协议少了很多。我对上面的数据一一解释一下。
NO.、TIME、Lenth和Info我就不介绍了吧。
Source是发送方,也就是起始IP地址。
Destination是接收方地址,也就是目的IP。
我因为是局域网用户,所以我的IP是172.18.1.94,而腾讯那面接受的地址是61.151.180.235(地址我查了是上海,难道我连得是腾讯上海服务器?)
Protocol是协议的意思,我们过滤的是oicq,所以都显示的是oicq(为何是oicq而不是qq,这个就需要去八一八腾讯QQ的起家历史了)
另外鼠标右键这个协议会看到详细交互内容。
而下面的五行内容,我也分别说一下吧
第一行是有81bytes写入,81bytes被捕获在端口0,我个人理解是没有丢包,如有不正确希望指出。
第二行是以太网二代,主要是MAC地址吧,如有不正确希望指出。
第三行是IPV4协议,目的IP和起始IP。
第四行是用户数据报协议,起始端口和目的端口。
第五行OICQ的一些内容了,里面就能看到我们自己的QQ号,这里就不上图了。
同理,一些需要http协议交互的软件也是一个道理,过滤条件选择http就可以,我就解释一下http的
最后,这里提供一些关键字过滤,有一些是我用过的,有一些是我从百度总结的,不正确的希望指出。
1.过滤源ip、目的ip。在wireshark的过滤规则框Filter中输入过滤条件。如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8;查找源地址为ip.src==1.1.1.1
2.端口过滤。如过滤80端口,在Filter中输入,tcp.port==80,这条规则是把源端口和目的端口为80的都过滤出来。使用tcp.dstport==80只过滤目的端口为80的,tcp.srcport==80只过滤源端口为80的包
3.http模式过滤。如过滤get包,http.request.method=="GET",过滤post包,http.request.method=="POST"
4.协议过滤:刚才有提到的oicq和http,还有例如tcp,ftp,dns,ip,smtp,arp等等,如果想排除这些协议,前面这个not就可以了
5.过滤以太网mac:eth.dst=00:00:00:00:00//目标地址,起始地址把dst改成src就行了
6.http模式过滤:比如http.request.method="GET"等等
题外话:可以利用这个软件对一些网络播放的视频软件,比如云播放,可以查到一些播放地址和接口地址。这个就需要自己去发现了,我这就不详细说了。