TCP的三次連接與四次斷開?

TCP的三次連接與四次斷
注:
SYN表示建立連接, FIN表示關閉連接, ACK表示響應

Client 與 Server 連接前的三次握手過程:
戀愛之三次握手
TCP三次握手
TCP連接三次握手
1.連接開始時,連接建立方(Client)發送SYN包,幷包含了自己的初始序號X;

2.連接接受方(Server)收到SYN包以後會回覆一個SYN包,其中包含了對上一個X包

的迴應信息ACK,迴應的序號爲下一個希望收到包的序號,即X+1,然後還包含

了自己的初始序號Y;

3.連接建立方(Client)收到迴應的SYN包以後,回覆一個ACK包做響應,其中包含了下一個希望收到包的序號即Y+1。

Client 與 Server 斷開時的四次握手過程:
分手之四次斷開
TCP四次斷開
TCP四次斷開
假設 A 爲主動斷開方,B 爲被動斷開方

1.首先進行關閉的一方(即發送第一個FIN)將執行主動關閉,而另一方(收到這

個FIN)執行被動關閉。

2.當服務器收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1。和SYN一樣,一個FIN將佔用一個序號。

3.同時TCP服務器還向應用程序(即丟棄服務器)傳送一個文件結束符。接着這個

服務器程序就關閉它的連接,導致它的TCP端發送一個FIN。

4.客戶必須發回一個確認,並將確認序號設置爲收到序號加1。

*注:雖然雙方都同意關閉連接了,而且握手的4個報文也都發送完畢,按理可以直接回到 CLOSED 狀態(好比從 SYN_SENT 狀態到 ESTABLISH 狀態那樣),但是我們需要考慮到網絡是不可靠的,你無法保證你(客戶端)最後發送的 ACK 報文一定會被對方收到,就是說對方處於 LAST_ACK 狀態下的 SOCKET 可能會因爲超時未收到ACK 報文,而重發 FIN 報文,所以這個 TIME_WAIT 狀態的作用就是用來重發可能丟失的ACK報文。

發佈了20 篇原創文章 · 獲贊 6 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章