tcp連線生命週期的狀態:
1:listen
等待遠端的tcp連線請求
2:syn-sent
傳送了建立連線的請求,等待確認訊息
3:syn-recieved
收到了對方建立連線的請求且傳送了建立連線的請求(確認對方建立建立連線的請求)。等待對方確認自己傳送的連線請求
4:established
連線已經建立,可以正常進行資料傳輸
5:fin-wait-1
等待對方確認剛剛傳送的關閉連線的請求
6:fin-wait-2
收到關閉連線請求的確認,等待對方傳送關閉連線的請求
7:close-wait
確認了對方的關閉連線請求,等待本地使用者關閉連線指令
8:last-ack
被動關閉的一方,在close-wait狀態下收到使用者關閉連線的指令,傳送關閉連線請求,等待確認
9:time-wait
主動關閉連線的一方收到對方傳送的對方關閉連線請求的確認訊息後,等待足夠長的時間(2msl)以確保對方接收到ack包.最後回到closed狀態,釋放網路資源
11:closing
比較罕見的例外狀態。正常情況下,傳送fin包後應該先收到(或同時收到)對方的ack包,再收到對方的fin包,而closing狀態表示傳送fin包後並沒有收到對方的ack包,卻已收到了對方的fin包。有兩種情況可能導致這種狀態:其一,如果雙方幾乎在同時關閉連線,那麼就可能出現雙方同時傳送fin包的情況;其二,如果ack包丟失而對方的fin包很快發出,也會出現fin先於ack到達
12:closed
關閉狀態
tcp的rfc793裡面給的狀態轉換圖:
參考:
tcp協議的埠狀態
listening syn sent syn rcvd established close wait time wait 對方主動關閉 對方呼叫close 我方的狀態變為 close wait 我方主動關閉 我方呼叫close 我方的狀態變為 time wait 統計各種埠狀態的數目 netstat...
TCP協議 CLOSE WAIT狀態
1.伺服器異常 如果伺服器出了異常,十之 都是以下兩種情況 1.伺服器保持了大量time wait狀態 2.伺服器保持了大量close wait狀態 因為linux分配給乙個使用者的檔案控制代碼是有限的,而time wait和close wait兩種狀態如果一直被保持,那麼意味著對應數目的通道就一直...
TCP連線的TIME WAIT狀態
time wait狀態是tcp的11個狀態其中之一,是發生在正常關閉tcp連線的時候發生的。如下圖所示 在這幅圖中我們可以明顯看出,流程是這樣的,顯示主動傳送乙個fin報文,然後接收到乙個ack報文,這樣這一方的連線已經關閉,也就是不能再傳送資料了,進入fin wait2狀態,這個狀態就是為了等待,...