Tcp異常斷開之Connection reset

一、背景

192.168.15.81(linux機器)機器訪問192.168.0.139(linux機器)的任意端口,建立的tcp連接成功,但是連接會莫名奇妙的消失,導致Connection reset的錯誤。

192.168.5.81的mac地址:6C:92:BF:0B:2F:9D(linux)

192.168.0.139的mac地址:未知(linux)

192.168.15.186的mac地址:44-47-C6-37-7D-A6(window)

二、wireshark抓包分析

在linux下執行抓包命令:tcpdump –i eth1 host 192.168.0.139 –w /iflytek/raw.cap,會抓去和0.139上的tcp報文傳遞,如圖所示:

報文分析:15.81和0.139三次握手成功,但是15.81像0.139發送一段Request,Connect(1), Connect的時候,連接莫名奇妙的消失了,導致0.139像15.81發送RST(連接復位)。這個連接到底被誰偷走了呢?答案是:15.81,0.139或者是中間經過的路由均可以斷掉連接。

三、問題排查

機器問題排查

   寫了一個簡單的socket程序進行測試, 加入一臺機器192.168.15.186進行測試,15.81~0.139,0.139~15.81,15.81~15.186,15.186~15.81,15.186~0.139,0.139~15.186,程序如下圖:

           Reader                                       Writer

1、15.81~0.139發送數據

數據流:15.81-->81網卡-->交換機—>路由1—>交換機—>139網卡—>0.139。

前提條件:將Reader部署到0.139上,Writer部署到15.81上,採用遠程debug的方式控制程序的執行進度,遠程debg命令:java –Xdebug–Xrunjdwp:transport=dt_scoket,address=8555,server=y,suspend=y –jar   ****.jar

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,消失了,原因不明。

結果解釋:說明tcp連接15.81~0.139發送數據不能超過兩個字節,這也說明了上文抓包中的過程,因爲三次我手發送的是空包,所以握手可以建立,但是當15.81像0.139發送Connect的包時,tcp連接斷掉了,所以,0.139回覆了RST。

 

2、0.139 ~ 15.81發送數據

數據流:0.139-->139網卡-->交換機—>路由2—>交換機—>81網卡—>15.81。

前提條件:同上。

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,不會被斷掉。

結果解釋:這個很奇怪,像是單向連通,0.139可以向15.81發送數據,但是15.81不能像0.139發送數據。

 

3、15.186~0.139發送數據

數據流:15.186-->186網卡-->交換機—>路由1—>交換機—>139網卡—>0.139。

前提條件:同上。

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,不會被斷掉。

結果解釋: 說明15.186可以向0.139發送數據。

 

4、0.139 ~ 15.186發送數據

數據流:0.139-->139的網卡-->交換機—>路由1—>交換機—>186網卡—>15.186。

前提條件:同上。

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,不會被斷掉。

結果解釋: 說明0.139和15.186是通的。

 

5、15.81~15.186發送數據

數據流:15.81-->81的網卡-->交換機—>186網卡—>15.186。

前提條件:同上。

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,不會被斷掉。

結果解釋: 說明15.81和15.186是通的。

 

6、15.186~15.81發送數據

數據流:15.186-->186的網卡-->交換機—>81網卡—>15.81。

前提條件:同上。

發送數據:11,21,31,檢測tcp連接正常,不會被斷掉。

發送數據:122,2123,32232,檢測tcp連接,不會被斷掉。

結果解釋: 說明15.81和15.186相互之間是可以聯通的,側面的反應15.81這臺機器是沒有問題的。

 

結論:上述測試說明兩臺機器是沒有問題的,肯定是路由的問題。

路由問題排查 

Ip限制:對調15.81和15.186的ip,發現沒有效果,可能與ip沒有關係。

Mac地址:mac不能對掉,沒法排查,最後確實是mac地址的問題。


本文希望給大家一個解決connection reset的問題的思路。


 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章