TCP四次分手是在幹什麼?

RT,三次握手理解了,這個反而開始亂,搞不懂關於停止數據傳輸那裡


女:我們分手吧。我不愛你了,但你可以繼續愛我。

男:好的。你讓我繼續愛你吧。

男:我還愛你。

女:我接受你愛我。

男:我也不愛你了。

女:好的,我走了。

男:我也走了。


也許你是沒搞懂為啥握手才要三次,為啥斷開反而要四次了

四次斷開中其實包含的是雙方各自告訴對方數據發送完成的過程,一個常見的四次斷開過程如下:

A: 我東西發完了 (fin)

B: 知道了(ack)

B: 我東西也發完了(fin)

A: 知道了(ack)

通過這個過程雙方都知道了對方數據已經發送完成,TCP連接正式斷開。

部分協議棧實現中將23兩步進行合併,看起來是這樣:

A: 我東西發完了 (fin)

B: 知道了、我東西也發完了(fin ack)

A: 知道了(ack)

但其實斷開過程還可以是這樣:

A: 我東西發完了 (fin)

B: 知道了(ack)

B: 我還想說blahblahblah (psh ack)

……

B: 我東西也發完了(fin)

A: 知道了(ack)

也就是說雖然A希望斷開,但是B可以繼續發送數據 直到B也發完。

因此整個斷開過程需要四次通訊。


第一次分手:小明發微信給小紅,「我不會再聯繫你了」。

第二次分手:小紅收到了很難過地回復:「我知道了」。

第三次分手:難過的小紅主動發微信給小明,「我也不會再聯繫你了」。

第四次分手:小明收到了回復了句,「哦哦」。小紅徹底死心,把小明的微信刪了,小明發現小紅真的不回了,也死心了,也把小紅的微信刪了。這樣兩個人永遠都聯繫不上了。


推薦閱讀:

在 TCP/IP 協議中,客戶端發出請求,服務端回復響應,客戶端在數據鏈路層會校驗目的 MAC 地址嗎???
TCP Slow Start cause Tail Drop on interface with limited buffer
Linux下Socket開發簡易Tcp伺服器
如何解決長城寬頻主動斷開tcp長連接的問題?
用 wireshark抓包工具能做到哪些有趣的事情?

TAG:TCPIP | TCP | 傳輸層協議 |