TCP關閉問題詳細介紹
摘要: 三次握手,四次揮手
意思是tcp建立連接時需要三次交互來完成,A發(fā)起連接
A --- SYN --> B A <-- SYN + ACK --- B (1) A --- ACK --> B
而關閉tcp連接需要四次交互,A發(fā)起關閉
A --- FIN --> B A <-- ACK --- B (1) A <-- FIN --- B A --- ACK --> B (2)
這里在(1)時B開始處于CLOSE_WAIT狀態(tài),一直到收到ACK后B才轉為CLOSED ,而A就處于TIME_WAIT狀態(tài),一直到2MSL(Max Segament Lifetime)才轉為CLOSED
為什么需要2MSL才真正轉為CLOSED?是因為需要緩沖時間萬一B丟失ACK重發(fā)FIN的話還可以回復ACK,還有就是2MSL后“迷失”在網(wǎng)絡上的包全部失效
大量的 TIME_WAIT 和 CLOSE_WAIT 會造成服務器的連接資源被浪費甚至占滿后導致服務器服務拒絕,怎么解決?
解決TIME_WAIT
net.ipv4.tcp_tw_recycle = 1 #開啟快速回收,默認0 net.ipv4.tcp_tw_reuse = 1 #開啟重用,默認0 net.ipv4.tcp_fin_timeout = 30 # 減小fin_timeout,默認60,單位s
系統(tǒng)參數(shù)的配置可以解決time_wait,但是close_wait就沒那么簡單了
解決CLOSE_WAIT
一般都是服務端的代碼問題。
絕大多數(shù)都是客戶端發(fā)起關閉,這樣可知HTTP服務器應該會有很多TIME_WAIT,不過當http使用keep-alive后服務端會主動斷連。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法
這篇文章主要介紹了一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問題及解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
如何解決Git拉取合并代碼流程和多人協(xié)同開發(fā)問題
本文將介紹Git的基本操作流程以及解決多人協(xié)同開發(fā)中常見問題的方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03
如何給 GitHub commit 加個綠色圖標(教程詳解)
這篇文章主要介紹了如何給 GitHub commit 加個綠色圖標,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
快速解決eclipse中注釋的代碼依然會執(zhí)行的問題
下面小編就為大家?guī)硪黄焖俳鉀Qeclipse中注釋的代碼依然會執(zhí)行的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
IntelliJ IDEA 2020如何設置背景圖片的方法步驟
這篇文章主要介紹了IntelliJ IDEA 2020如何設置背景圖片的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04

