CONNECTION_RESET如何解決?
開發(fā)過程中經(jīng)常會出現(xiàn)Connection reset問題,包括http調(diào)用,數(shù)據(jù)庫連接等場景。出現(xiàn)Connection reset的原因很多,本文從tcp層面簡單介紹下Connection reset出現(xiàn)的原因,以及在實(shí)際開發(fā)過程中如何排查這類問題。
1、什么是Connection reset
在TCP首部中有6個標(biāo)志位,其中一個標(biāo)志位為RST,用于 復(fù)位 的。無論何時(shí)一個報(bào)文 段發(fā)往基準(zhǔn)的連接( referenced connection)出現(xiàn)錯誤,TCP都會發(fā)出一個復(fù)位報(bào)文段。如果雙方需要繼續(xù)建立連接,那么需要重新進(jìn)行三次握手建立連接。
2、出現(xiàn)RST的原因2.1 RST攻擊、干擾
上面簡單介紹了RST標(biāo)志位的作用,很容易想到這樣一個場景,如果中間網(wǎng)絡(luò)節(jié)點(diǎn)想要破壞一個tcp連接,那么它只要偽造成其中一方發(fā)送RST報(bào)文到另一方,即可讓雙方連接失效。
上圖中,三次握手建立了tcp連接,由于是https連接,需要進(jìn)行加密操作。這時(shí),對方發(fā)送RST,雙方并沒有進(jìn)行 四次揮手 ,而是連接直接失效。這時(shí)客戶端發(fā)起重拾,重新建立連接,但是很快又被 對方 重置了。和客戶端連接tcp連接以及發(fā)送RST報(bào)文的,都不一定是真正的服務(wù)端,而可能是中間節(jié)點(diǎn)。我們使用HTTPS可以避免受到中間人攻擊。對方無法使用中間人攻擊,但是想阻止我們訪問,所以可以通過RST來重置連接。
2.2 請求一個不存在的端口
當(dāng)客戶端訪問服務(wù)端一個沒有監(jiān)聽的端口時(shí),服務(wù)端會發(fā)送RST報(bào)文。
如上圖所示,客戶端(192.168.2.192)訪問了服務(wù)端(192.168.2.1)一個未監(jiān)聽的端口(9090),服務(wù)端發(fā)送了RST報(bào)文。
2.3 異常終止一個連接
終止一個連接的正常方式是一方發(fā)送 FIN。有時(shí)這也稱為有序釋放(orderly release),因?yàn)樵谒信抨?duì)數(shù)據(jù)都已發(fā)送之后才發(fā)送 FIN,正常情況下沒有任何數(shù)據(jù)丟失。但也有可能發(fā)送一個復(fù)位報(bào)文段而不是 FIN來中途釋放一個連接。有時(shí)稱這為異常釋放 (abortive release)。
上圖,當(dāng)客戶端連接redis后,我們手動關(guān)閉redis服務(wù),redis服務(wù)端會發(fā)送RST來強(qiáng)制終止一個連接??蛻舳送ǔJ盏竭@樣的錯誤:Connection reset by peer,或者:遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個現(xiàn)有的連接。
2.4 半打開連接
如果一方已經(jīng)關(guān)閉或異常終止連接而另一方卻還不知道,我們將這樣的TCP連接稱為半打開(Half-Open)的。只要不打算在半打開 連接上傳輸數(shù)據(jù),仍處于連接狀態(tài)的一方就不會檢測另一方已經(jīng)出現(xiàn)異常。
3、排查思路
實(shí)際開發(fā)過程中,前面三個問題比較容易識別和解決。最困難的是最后一種半打開連接,原因往往很難發(fā)現(xiàn)。因?yàn)榫W(wǎng)絡(luò)正常的情況下,都會通過正常關(guān)閉或者2.3的方式來關(guān)閉連接。現(xiàn)在客戶端和服務(wù)端的網(wǎng)絡(luò)非常復(fù)雜,有各種nat,代理,防火墻等設(shè)備,這些中間設(shè)備可能配置了一些安全策略,導(dǎo)致斷開連接而不通知。
通過查詢客戶端日志,定位出現(xiàn)異常的時(shí)間。查詢服務(wù)端日志,查詢有無連接斷開日志;查詢連接是否存在;如果不存在,查詢斷開的時(shí)間。通過這些可以判斷是不是由于半打開連接導(dǎo)致的問題。半打開連接一般是由于中間設(shè)備或者網(wǎng)絡(luò)問題斷開連接,而客戶端不知道。
解決方案就是找到對應(yīng)的設(shè)備,配置連接,避免長連接斷開。
臨時(shí)方案就是,開啟keep-live;減少長連接存活時(shí)間;連接異常時(shí)進(jìn)行重試。
關(guān)注公眾號:拾黑(shiheibook)了解更多
友情鏈接:
關(guān)注數(shù)據(jù)與安全,洞悉企業(yè)級服務(wù)市場:https://www.ijiandao.com/
安全、綠色軟件下載就上極速下載站:https://www.yaorank.com/
- 易烊千璽《小小的我》美國定檔!4.18起多地上映
- 《云族裔》捏人刪除體型描述:改回經(jīng)典男女雙性別
- 百度李彥宏談DeepSeek:成本每年能降低90%以上!
- 上汽榮威iMAX8 DMH新陸尊成全球續(xù)航最長MPV:實(shí)測超1500km
- 小鵬M0NA M03賣爆后:比亞迪王傳福車展現(xiàn)場看車
- 國資委:各中央企業(yè)原則上不得新設(shè)、收購、新參股各類金融機(jī)構(gòu)
- 歐元兌換人民幣匯率2023年5月18日
- 去有風(fēng)的地方胡有魚喜歡誰
- 去年中國初婚人數(shù)為37年來新低
- 呂知樾張津瑜視頻哪里 呂知樾個人介紹
- 網(wǎng)紅主播在尼泊爾被殺 其親屬回應(yīng) 情況詳細(xì)內(nèi)容介紹
- 聿字怎么讀

隨時(shí)掌握互聯(lián)網(wǎng)精彩