本文选自本人微信公众号“码农的修炼之道”,欢迎关注!
作为一名后台软件开发者(coder),随时面临着复杂的网络原因导致的各类问题,排查问题也有一定的难度。好在有一把网络问题分析的屠龙宝刀,那就是wireshark神器,本文将举例使用wireshark分析一个产品的故障原因。
1、问题背景
某一天项目报了一个产品的现场问题,现场发现在早上8点~9点期间,该系统的A软件和另一侧系统的B软件不断的进行连接、断开。项目人员在这段时间内使用wireshark抓包发回来分析,在该项目中,A软件为客户端程序,B软件作为服务端。A软件需要连接B软件,并进行通信获取有效信息。于是,本次实战是基于这种断连场景的问题分析之旅。
根据项目反馈的配置信息,现场客户端A端的IP是10.255.68.42,服务器B端的IP是10.108.11.4,实时任务的端口是2608。在该产品的设计中,A端为客户端,B端为服务器端,采用的传统的C/S架构。
由于是反复断开、连接,因此我需要在wireshark抓包中看一下FIN报文有没有。于是使用过滤命令筛选如下:
tcp.flags.fin == 1 and (ip.dst == 10.255.68.42 and ip.src == 10.108.11.4) ;
我们发现,从服务器B端没有FIN报文发给客户端A。然后我们再看看是不是客户端A主动发起的断开连接,从而发送了FIN报文。
过滤命令如下:tcp.flags.fin == 1 and(ip.src == 10.255.68.42 and ip.dst&#