网络故障排查之抓包利器wireshark
- 2019 年 12 月 13 日
- 筆記
“ 主要讲解抓包步骤和网络故障分析方法 ”
使用步骤
- 选择网卡、点击Start出现(2)图所示主界面

(1)
- 点击Expression

(2)
- 选择HTTP协议,当然也可以选择其他的协议进行过滤。

过滤条件,显示过滤器用于查找捕捉记录中的内容,只要有的协议都是可以通过表达式的方式进行过滤,请参考Wireshark过滤器中的详细内容。

包列表介绍
封包列表中显示所有已经捕获的封包。在这里您可以看到发送或接收方的MAC/IP地址,TCP/UDP端口号,协议或者封包的内容。
如果捕获的是一个OSIlayer2的封包,您在Source(来源)和Destination(目的地)列中看到的将是MAC地址,当然,此时Port(端口)列将会为空。
如果捕获的是一个OSI layer 3或者更高层的封包,您在Source(来源)和Destination(目的地)列中看到的将是IP地址。Port(端口)列仅会在这个封包属于第4或者更高层时才会显示。

(3)
封包详细信息
这里显示的是在封包列表中被选中项目的详细信息。信息按照不同的OSI layer进行了分组,您可以展开每个项目查看。下面截图中展开的是HTTP信息。
- 点击apply

(4)
- 点击查看结果

(5)
- 跟踪流信息

故障排查
通过wireshark排查握手失败原因
失败的原因很多种,但是大致分为两类,要么拒绝,要么丢包,通过下面两道表达式能够过滤出大多数场景下的失败原因,从而进一步定位和解决问题。
- 过滤握手拒绝请求:tcp.flags.reset==1&&tcp.seq==1 如下图所示(可以看出服务器111.221.29.254没有监听443端口故拒绝了客户端192.168.4.35的连接):

- 过滤重传的握手请求:tcp.flags.syn==1&&tcp.analysis.retransmission 如下图所示(出现此问题的原因是因为服务端 74.25.204.102没有收到客户端192.168.4.34的握手请求或者对方确认没有收到):

总结
wireshark本身入门使用很简单,关键是如何用来排查网络故障,就比如服务器出现故障我们tcpdump抓包保存后,可以导入wireshark进行分析追溯问题。