首先感谢伟大程序员Ark Zhang提供这些干货资料,我只是稍为整理一下而已

网络程序调试中最常用的工具就是wireshark,下面为如何通过抓包分析网络情况:

1.客户端链接服务器三次握手成功链接后,6秒后发送5个字节 HELLO数据后主动发送FIN包断开链接,正常的一次TCP通信

wireshark判断故障实例 wireshark分析网络故障_数据

2.客户端异常断开链接如下,服务器则发出RST包通知,绝多大数情况客户端再无发收到了,这类情况注意回收服务器网络资源(闭关无效的套接字),以避免大量的链接处于close_wait的状态,引用服务器并发量下降

wireshark判断故障实例 wireshark分析网络故障_移动端_02

3.服务端主动断开如下:

wireshark判断故障实例 wireshark分析网络故障_wireshark判断故障实例_03

4.通过网络抓包判断网络传输质量,当网络质量不佳情况如下图,会发生多次重传,或者重新链接(WIFI突然断了),当重新链接的客户端端口一般会发生变化

wireshark判断故障实例 wireshark分析网络故障_客户端_04

5.wireshark基本支持常见网络协议解析,输入相应过滤条件进行针对性分析,过滤条件法则请参考:

下图过滤特定数据长度UDP组播的抓包:

wireshark判断故障实例 wireshark分析网络故障_wireshark_05

6.在Linux系统,安卓(通过adb链接)、IOS移动端可以命令tcpdump抓包记录cap文件,然后把cap文件用wireshark分析 ,如:

tcpdump -i eth1 -c 2000 -w eth1.cap

-i eth1 只抓eth1口的数据(网卡名字)

-c 2000代表数据包的个数,也就是只抓2000个数据包

-w eth1.cap 保存成cap文件,方便用ethereal分析

tcpdump命令使用详情请参阅:

但是移动端很有可能文件有读写权限限制,可以在pc上产生一个WIFI热点,让移动端链接该热点,在pc用wireshark分析移动端网络交互数据


通过wireshark就是可以清楚看到源地址到目的地址网络交互状态与网络质量情况,有的时候一直用的好好的代码与架构在某些复杂的网络环境不起作用,而是网络链路中有限制(路由,防火墙等原因)而导致通信失败。