Tcp協議之三次握手四次揮手學習二

上一篇文章中我們講到了tcp協議建立連接的三次握手,這篇文章我們將會來學習tcp協議斷開連接的四次揮手。

TCP連接終止協議

建立一個連接需要三次握手,而終止一個連接要經過4次握手。這由TCP的半關閉(halfclose)造成的。既然一個TCP連接是全雙工

(即數據在兩個方向上能同時傳遞),因此

每個方向必須單獨地進行關閉。這原則就是當一方完成它的數據發送任務後就能發送一個FIN來終止這個方向連接。當一端收到一個

FIN,它必須通知應用層另一端幾經終止了那個方向的數據傳送。發送FIN通常是應用層進行關閉的結果。

收到一個FIN只意味着在這一方向上沒有數據流動。一個TCP連接在收到一個FIN後仍能發送數據。而這對利用半關閉的應用來說是

可能的,儘管在實際應用中只有很少的TCP

應用程序這樣做。正常關閉過程如下圖所示。

首先進行關閉的一方(即發送第一個FIN)將執行主動關閉,而另一方(收到這個FIN)執行被動關閉。通常一方完成主動關閉而另

一方完成被動關閉,

如上圖所示,tcp協議終止連接的過程爲:

  (1)第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。
  (2)第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號爲收到序號+1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。
  (3)第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。
  (4)第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接着發送一個ACK給Server,確認序號爲收到序號+1,Server進入CLOSED狀態,完成四次揮手。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章