日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图解TCP协议中的三次握手和四次挥手

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图解TCP协议中的三次握手和四次挥手 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在復習計算機網絡,看到TCP這一章,總結一下。

建立TCP需要三次握手才能建立,而斷開連接則需要四次握手。整個過程如下圖所示:


1.jpg


先來看看如何建立連接的:


2.png

首先Client端發送連接請求報文,Server段接受連接后回復ACK報文,并為這次連接分配資源。Client端接收到ACK報文后也向Server段發送報文,并分配資源,這樣TCP連接就建立了。

如何斷開連接呢?簡單的過程如下:


3.png

注意中斷連接端可以是Client端,也可以是Server端

假設Client端發起中斷請求,也就是發送FIN報文。Server端接到FIN報文后,意思是說“我client端要發給你了”,但是如果你還沒有數據要發送完成,則不必急著關閉Socket,可以繼續發送數據。所以所以你先發送ACK,"告訴Client端,你的請求我收到了,但是我還沒準備好,請繼續你等我的消息"。這個時候Client端就進入FIN_WAIT狀態,繼續等待Server端的FIN報文。當Server端確定數據已發送完成,則向Client端發送FIN報文,"告訴Client端,好了,我這邊數據發完了,準備好關閉連接了"。Client端收到FIN報文后,"就知道可以關閉連接了,但是他還是不相信網絡,怕Server端不知道要關閉,所以發送ACK后進入TIME_WAIT狀態,如果Server端沒有收到ACK則可以重傳。“,Server端收到ACK后,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復,則證明Server端已正常關閉,那好,我Client端也可以關閉連接了。Ok,TCP連接就這樣關閉了!

整個過程Client端所經歷的狀態如下:


4.png

而Server端所經歷的過程如下:


5.png

注意在TIME_WAIT狀態中,如果TCP client端最后一次發送的ACK丟失了,它將重新發送。TIME_WAIT狀態中所需要的時間是依賴于實現方法的。典型的值為30秒、1分鐘和2分鐘。等待之后連接正式關閉,并且所有的資源(包括端口號)都被釋放。

  • 為什么連接的時候是三次握手,關閉的時候卻是四次握手?

    因為當Server端收到Client端的SYN連接請求報文后,可以直接發送SYN+ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。但是關閉連接時,當Server端收到FIN報文時,很可能并不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

  • 為什么TIME_WAIT狀態需要經過2MSL(最大報文段生存時間)才能返回到CLOSE狀態?

    • 為了保證發送的最后一個ACK報文段能夠到達B
    • 防止“已失效的連接請求報文段”出現在本連接中。在發送完最后一個ACK報文段后,再經過實踐2MSL,就可以使本連接持續的時間內所產生的所有報文段,都從網絡中消失。這樣就可以使下一個新的連接中不會出現這種就得連接請求報文段。
  • TCP有限狀態機

    TCP有限狀態機如下圖:

    • 粗實箭頭表示客戶進程的正常遷移
    • 粗虛線箭頭表示對服務器進程的正常遷移
    • 細線箭頭表示異常變遷


    作者:小球why鏈接:http://www.jianshu.com/p/9968b16b607e


    總結

    以上是生活随笔為你收集整理的图解TCP协议中的三次握手和四次挥手的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。