伺服器端出現TIME WAIT

2021-05-24 12:27:09 字數 945 閱讀 5320

tcp協議規定,對於已經建立的連線,網路雙方要進行四次握手才能成功斷開連線,如果缺少了其中某個步驟,將會使連線處於假死狀態,連線本身占用的資源不會被釋放。網路伺服器程式要同時管理大量連線,所以很有必要保證無用連線完全斷開,否則大量僵死的連線會浪費許多伺服器資源。在眾多tcp狀態中,最值得注意的狀態有兩個:close_wait和time_wait。  

1、listening狀態

ftp服務啟動後首先處於偵聽(listening)狀態。

2、established狀態

established的意思是建立連線。表示兩台機器正在通訊。

3、close_wait

對方主動關閉連線或者網路異常導致連線中斷,這時我方的狀態會變成close_wait 此時我方要呼叫close()來使得連線正確關閉

4、time_wait

我方主動呼叫close()斷開連線,收到對方確認後狀態變為time_wait。tcp協議規定time_wait狀態會一直持續2msl(即兩倍的分段最大生存期),以此來確保舊的連線狀態不會對新連線產生影響。處於time_wait狀態的連線占用的資源不會被核心釋放,所以作為伺服器,在可能的情況下,盡量不要主動斷開連線,以減少time_wait狀態造成的資源浪費。

目前有一種避免time_wait資源浪費的方法,就是關閉socket的linger選項。但這種做法是tcp協議不推薦使用的,在某些情況下這個操作可能會帶來錯誤 

5、syn_received

「syn_received」是tcp連線狀態標誌,意思是「正在處於連線的初始同步狀態 」,表明無法建立握手應答處於等待狀態

檢視指定的埠的使用情況:以80埠為例

netstat -n -p tcp |find ":80"

檢視1415埠連線總數

netstat -ano|find /c ":1415 "

如果不用:攔頭,空格截尾,11415、14151這類也會被統計進來的

伺服器端口

本文介紹伺服器端口。伺服器端口分為兩類,一類是硬體埠,另一類是軟體埠,其中硬體埠為鍵盤介面 滑鼠介面 顯示器介面 網線介面等,主機上的所有對外提供功能的引腳都屬於硬體埠,軟體埠為網路套接字 socket 介面,硬介面和軟介面都是用於通訊的介面,都有各自的通訊協議,硬介面通訊協議由序列通訊 並行通訊 ...

伺服器端口

大的方面可以分為2類,一類是真實的物理上的介面,比如鍵盤滑鼠等輸入輸出介面。一類是 伺服器端口。伺服器端口是傳輸層的內容,是面向連線的,它們對應著網路上常見的一些服務。tcp ip協議整合到作業系統核心,此協議中有引入一種稱之為 套接字 的應用程式介面。有這種技術一台計算機就可以通過軟體的方式與任何...

減少Linux伺服器TIME WAIT過多問題

time wait狀態的意義 客戶端與伺服器端建立tcp ip連線後關閉socket後,伺服器端連線的埠 狀態為time wait 是不是所有執行主動關閉的socket都會進入time wait狀態呢?有沒有什麼情況使主動關閉的socket直接進入closed狀態呢?主動關閉的一方在傳送最後乙個 a...