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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

TCP四次挥手协议

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

四次揮手表示TCP斷開連接的時候,需要客戶端和服務端總共發送4個包以確認連接的斷開;客戶端或服務器均可主動發起揮手動作(因為TCP是一個全雙工協議),在?socket 編程中,任何一方執行 close() 操作即可產生揮手操作。

單工:數據傳輸只支持數據在一個方向上傳輸?
半雙工:數據傳輸允許數據在兩個方向上傳輸,但是在某一時刻,只允許在一個方向上傳輸,實際上有點像切換方向的單工通信?
全雙工:數據通信允許數據同時在兩個方向上傳輸,因此全雙工是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力?

單工:數據傳輸只支持數據在一個方向上傳輸?
半雙工:數據傳輸允許數據在兩個方向上傳輸,但是在某一時刻,只允許在一個方向上傳輸,實際上有點像切換方向的單工通信?
全雙工:數據通信允許數據同時在兩個方向上傳輸,因此全雙工是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力?

第一次揮手(FIN=1,seq=x) 假設客戶端想要關閉連接,客戶端發送一個 FIN 標志位置為1的包,表示自己已經沒有數據可以發送了,但是仍然可以接受數據。發送完畢后,客戶端進入 FIN_WAIT_1 狀態。?

第二次揮手(ACK=1,ACKnum=x+1) 服務器端確認客戶端的 FIN包,發送一個確認包,表明自己接受到了客戶端關閉連接的請求,但還沒有準備好關閉連接。發送完畢后,服務器端進入 CLOSE_WAIT 狀態,客戶端接收到這個確認包之后,進入 FIN_WAIT_2 狀態,等待服務器端關閉連接。?

第三次揮手(FIN=1,seq=w)?服務器端準備好關閉連接時,向客戶端發送結束連接請求,FIN置為1。發送完畢后,服務器端進入 LAST_ACK 狀態,等待來自客戶端的最后一個ACK。?


第四次揮手(ACK=1,ACKnum=w+1) 客戶端接收到來自服務器端的關閉請求,發送一個確認包,并進入 TIME_WAIT狀態,等待可能出現的要求重傳的 ACK包。?

服務器端接收到這個確認包之后,關閉連接,進入 CLOSED 狀態。?

客戶端等待了某個固定時間(兩個最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,沒有收到服務器端的 ACK,認為服務器端已經正常關閉連接,于是自己也關閉連接,進入 CLOSED狀態。?


假設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連接就這樣關閉了!?

?

總結

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

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