理解TCP三次握手/四次斷開的必要性


1 TCP的三次握手與必要性

  (1)三次握手圖

  (2)必要性:TCP通過三次握手建立可靠的(確保收到)全雙工通信。

    1)第一次握手和第二次握手(ACK部分)建立了從客戶端到服務器傳送數據的可靠連接;

    2)第二次握手(SYN部分)和第三次握手建立了從服務器到客戶端傳送數據的可靠連接;

    4)由於我們期望建立全雙工連接,所以兩個方向的通信都是需要的,於是合並了服務器發送的ACK和SYN。

           5)第三次握手的必要性:防止已失效的請求報文段突然又傳送到了服務端而造成連接的誤判。假如客戶端發出連接請求A,由於網絡原因,服務端並沒有收到A,於是客戶端又發送了連接請求B,並建立了連接,完成通信,斷開連接。這時候,服務端突然又收到了A,於是看作是一次新的連接請求,進行第二次握手,由於不存在第三次握手,所以這時已經建立了TCP連接。但實際上客戶端並沒有發起連接,所以不會傳遞數據,那么這條連接就會變成一條死連接。

2 TCP的四次斷開與必要性

  (1)四次斷開圖

  (2)必要性:為保證單向通信的可行性,所以多一次握手。

    1)主動斷開方發送FIN時,被動斷開方要回復ACK,意思是“我收到你的FIN了”;

    2)主動斷開方發送FIN並不意味着立即關閉TCP連接,而是告訴對方自己沒有更多的數據要發送了,只有當對方發完自己的數據再發送FIN后,才意味着關閉TCP連接;

    3)被動斷開方收到FIN並回復ACK后,此時TCP處於“半關閉”狀態,為保證被動斷開方可以繼續發送數據,所以第二個FIN並不會伴隨ACK發送,所以比連接時多一個報文段。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM