什麼是TCP連線釋放?
TCP連線是全雙工連線。為了理解連線釋放,我們可以將其視為一對單工連線。然後,我們可以想象每個單工連線都是獨立釋放的。釋放TCP連線是對稱的。任何埠都可以傳送帶有FIN位的TCP段,這意味著當FIN在該方向被確認時,它沒有更多資訊要傳送,該方向將關閉。但是,資料仍然可以繼續在另一個方向持續流動。
如果在兩次最大分組壽命內沒有收到FIN響應,則FIN的發起方將釋放連線。接收方最終會注意到它不再接收資料,並且也會超時。通常,釋放連線需要四個TCP段,即每個方向一個FIN和一個ACK。
連線建立和釋放的有限狀態機
可以使用有限狀態機來表示TCP連線建立和釋放所涉及的步驟。此類狀態機中的11個狀態在表中給出。
TCP連線的不同狀態
下表列出了TCP連線的不同狀態:
| 狀態 | 描述 |
|---|---|
| 關閉(Closed) | 沒有活動的或未決的連線。 |
| 監聽(Listen) | 伺服器正在等待傳入連線。 |
| SYN已收到(SYN Received) | 已收到連線請求。等待ACK。 |
| SYN已傳送(SYN SENT) | 應用程式已啟動開啟連線。 |
| 已建立(Established) | 正常的速率資料傳輸。 |
| FIN等待1(FIN wait-1) | 應用程式傳送方已完成。 |
| FIN等待2(FIN wait-2) | 另一方已同意等待所有分組過期。 |
| 計時等待(Timed Wait) | 等待所有分組過期。 |
| 關閉(Closing) | 雙方都同時嘗試關閉。 |
| 關閉等待(Close wait) | 另一方已提出釋放。 |
| 最後ACK(Last ACK) | 等待先前關閉的fin的ack。 |
在上表所示的11個狀態中,某些特定事件是合法的。對於每個事件,它可能會採取某些操作,但如果發生其他事件,則會報告錯誤。有限狀態機如圖所示。(此處應插入狀態機圖)

廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP