三次握手,四次揮手,爲什麼是三次握手四次揮手

三次握手,四次揮手,爲什麼是三次握手四次揮手

四次揮手

TCP的連接的拆除需要發送四個包,因此稱爲四次揮手。客戶端或服務器均可主動發起揮手動作。

由於TCP連接時全雙工的,因此每個方向都必須單獨進行關閉。這個原則是當一方完成他的數據發送任務後就能發送一個FIN來終止這個方向的連接。收到一個FIN只意味着這一方向上沒有數據流動,一個TCP連接在收到一個FIN後仍能發送數據。首先進行關閉的一方將執行主動關閉,而另一方執行被動關閉。

 

這是因爲服務端的LISTEN狀態下的socket當收到SYN報文連接的請求後,它可以把ACK和SYN放在一個報文裏來發送。但關閉連接時,當收到對方的FIN報文通知時,他僅僅表示對方沒有數據發送給你了,但未必你的所有數據都全部發送給對方了,所以你可以不馬上關閉socket,即你可能還會發送一些數據給對方之後,在發送FIN報文給對方來表示你同意現在可以關閉連接了,所以這裏的ACK和FIN報文多情況下都是分開發送的。

 

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