TCP四次分手是在幹什麼?
02-19
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抓包工具能做到哪些有趣的事情?