背景
开发反馈某个业务接口无法返回数据,怀疑是网络问题,让我看下咋回事。
过程
该接口共有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/exmyth/p/8204724.html