背景
開發反饋某個業務接口無法返回數據,懷疑是網絡問題,讓我看下咋回事。
過程
該接口共有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