天天看點

網絡通信協定TCP/UDP

網絡通信協定TCP/UDP

網絡通信協定TCP/UDP
網絡通信協定TCP/UDP
網絡通信協定TCP/UDP
網絡通信協定TCP/UDP

【問題1】為什麼連接配接的時候是三次握手,關閉的時候卻是四次握手?

答:

TCP的連接配接的拆除需要發送四個包,是以稱為四次揮手(four-way handshake)。用戶端或伺服器均可主動發起揮手動作,在socket程式設計中,任何一方執行close()操作即可産生揮手操作。

1,當主機甲确認發送完資料且知道乙已經接受完了,想要關閉發送資料口(當然确認信号還是可以發),就會發FIN給主機B.

2,主機乙收到甲發送的FIN,表示收到了,就會發送ACK回複。

3,但這是乙可能還在發送資料,沒有想要關閉資料口的意思,是以FIN與ACK不是同時發送的,而是等到乙資料發送完了,才會發送FIN給主機A.

4,A收到B發來的FIN,知道B的資料也發送完了,回複ACK,A等待2MSL以後,沒有收到B傳來的任何消息,知道B已經收到自己的ACK了,A就關閉連結,B也關閉連結了

上面介紹了 TCP 協定連接配接,有連接配接就有斷開,相對于三次連接配接,斷開卻需要四次揮手,怎麼了解呢?先看下面這個場景:

A:B 啊,我不想玩了。

B:哦,你不想玩了啊,我知道了。

這個時候,還隻是 A 不想玩了,也即 A 不會再發送資料,但是 B 能不能在 ACK 的時候,直接關閉呢?當然不可以了,很有可能 A 是發完了最後的資料就準備不玩了,但是 B 還沒做完自己的事情,還是可以發送資料的,是以稱為半關閉的狀态。

這個時候 A 可以選擇不再接收資料了,也可以選擇最後再接收一段資料,等待 B 也主動關閉。

B:A 啊,好吧,我也不玩了,拜拜。

A:好的,拜拜。

這就是一個完整的關閉連接配接,在這個關閉的過程中,一共說了四句話,我們也稱之為四次揮手。跟建立連接配接一樣,斷開時也是用狀态來表示,下面是斷開的時序

參考位址

https://www.cnblogs.com/jamaler/p/12164921.html