我们开发通信的时候,客户的明明把数据发送出去了,而服务端就是没接收到,或是收发数据不稳定,有时能收到,有时不能收到,
这个时候有3种可能:
1、客户端的问题,数据发送有问题
2、服务端的问题,数据接收有问题,这个经常碰到,重复创建链路,导致收发数据如果有多条链路,发送数据是通过废弃链路出去,那服务端怎么也不可能接受到数据。
3、机房网络的问题,可能是带宽不够,或者交换机限速了,也有可能服务器网卡故障、网线劣质等多种原因。
以上1和2就不说了,那是程序的BUG,仔细排查代码,很容易就能找到原因所在,我们现在主要讲怎么通过抓包工具进行排查是应用程序的问题还是网络方面的问题。
LInux 抓包工具:tcpdump
1、打印发送数据包的日志(16进制)
2、在服务器执行窗口执行监视客户端ip和端口号
tcpdump -i em1 dst host hostname and port
如:tcpdump -i em1 dst host 192.168.128.10 and 8080
查看发送出去的时间和数据长度是否与打印日志的时间和数据长度一致,如果是就是同一条。
windows 抓包工具:MiniSniffer
1、打开工具过滤要抓包的ip地址和端口号
通过这个工具能否抓到数据长度和内容是与上面发送的数据内容一致,如果有排除掉网络问题,程序问题,如果没有就是网络问题