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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

三次握手和四次挥手图解_图解TCP三次握手和四次挥手

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

三次揮手

為什么建立連接需要三次握手?

三次握手的目的:為了防止已經失效的連接請求報文段突然又傳到服務端,因而產生錯誤,保證在信道上傳輸可靠的數據

  • 第一次握手:客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;

  • 第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;

  • 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED(建立)狀態,完成三次握手。握手過程中傳送的包里不包含數據,三次握手完畢后,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP連接一旦建立,在通信雙方中的任何一方主動關閉連接之前,TCP 連接都將被一直保持下去。

假設有這樣一次場景:客戶端(A) ? 服務端(B)

????????客戶端A發出去的第一個連接請求報文并沒有丟失,而是因為某些未知的原因在某個網絡節點上發生滯留,導致延遲到連接釋放以后的某個時間才到達服務端B,但是服務端B收到此失效的報文之后,會誤認為是客戶端A再次發出的一個新的連接請求,于是B就向A又發出確認報文,表示同意建立連接。

????????如果此時沒有三次握手,那么只要B端發出確認報文就會認為新的連接已經建立了,但是A端并沒有發出建立連接的請求,因此不會去向B端發送數據,B端沒有收到數據就會一直等待。這樣B端就會白白浪費掉很多資源

????????如果采用的是三次握手,就算是那一次失效的報文傳送過來了,服務端接受到了那條失效報文并且回復了確認報文,但是客戶端不會再次發出確認。由于服務器收不到確認,就知道客戶端并沒有請求連接。

從以上流程可以看到,3次握手,是可以讓通信雙方確認連接有效,以進行正常全雙工通信認知的最少“握手”次數。所以TCP選擇了3次握手~

四次揮手

為什么斷開連接需要四次揮手?

四次揮手的目的:因為TCP是一個全雙工協議,必須單獨拆除每一條信道。4次揮手的目的是終止數據傳輸,保證數據傳輸完成,并回收資源。

第一步,客戶端主動發起一個請求給服務端,里面包含FIN標識位=1,客戶端的seq序列號u,表示的是當前客戶端在該連接上的當前序列號。

第二步,服務端在收到這個含有FIN的請求消息之后,校驗無誤之后會立馬回復ACK消息給客戶端,消息內部包含ACK標志位為1,同時seq號碼是FIN的請求消息的seq號+1。此時的服務端同時會主動發個結束標識給服務端上面的應用層程序,應用層程序可以決定是立馬結束,還是等到該連接中的數據處理完了之后,在發送FIN消息給客戶端來關掉另外的一半連接。

第三步,服務端在處理完該連接上面的Pending住的數據之后,應用程序會close這個連接。服務端會主動發起FIN的消息給客戶端。消息內部帶有,FIN=1的結束符標識位,以及服務端的seq序列號。

第四步,客戶端在收到對應的FIN消息之后,會主動通知應用層程序,告知這個連接現在需要關閉了。然后,客戶端會回復ACK消息給服務端,以便斷開另外一個方向的通道,這個消息包含ACK=1的標識位和FIN的請求帶過來的seq+1。

假設有這樣一次場景:客戶端(A) ? 服務端(B)

????????客戶端和服務端通過3次握手建立連接,此時客戶端數據全部發送完成,需要斷開連接,客戶端就會向服務端發送斷開請求。

????????服務器收到對方的客戶端發送關閉報文時,僅僅表示客戶端不再發送數據了但是還能接收數據,而服務器也未必全部數據都發送給客服端了,所以服務器可以立即關閉,也可以繼續發送數據給客戶端,如果有數據未發送完畢,就需要通知客戶端,我還有數據未發送完,不要斷開連接。等全部數據傳輸完成服務端在發送斷開請求。客服端收到服務端斷開報文后,重新發送一個斷開確認報文,服務端收到斷開報文后便斷開連接。

這樣便保證了數據傳輸完成,資源回收~

錯誤之處,望指正~

總結

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

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