背景

开发反馈某个业务接口无法返回数据,怀疑是网络问题,让我看下咋回事。

过程

该接口共有3个请求,前面2个请求正常,第3个请求接口会报错,无法确定是哪边的问题,需要抓包确认下。
由于是Windows,所以使用wireshark。

时间节点:

  • 10点02分:开发运行程序,wireshark开始抓包。
  • 10点04分:程序报错:接口错误:connection reset{} java.net.SocketException: connection reset

查看wireshark,找到10点04分的,发现了一条暗红色的数据:

点开传输层,出现了 [Expert Info (Warning/Sequence): Connection reset (RST)]

导致 Connection reset 的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志 RST,然后此时客户端就会提示java.net.SocketException: Connection reset

这时候开发又提出,在reset之前,是否有收到数据,使用wireshark筛选了一下:
ip.src == 1.2.3.4 ||ip.dst == 3.4.5.6

拿着这些去找对方,基本上就可以证明是对方的问题了。

参考

RST的原理是啥,还是得去恶补一下
https://www.cnblogs.com/exmyt...

03-05 21:41