關於什麼是三次握手、四次揮手的問題,這裡就不做解釋了,這裡說的是其詳細的過程細節。直接看下邊這張圖:
總共有四種狀態:主動建立連線、主動斷開連線、被動建立連和被動斷開連線
兩兩組合還是4種組合:
(1)主動建立連線、主動斷開連線會經歷的狀態:
sync_sent----established---fin_wait_1---fin_wait_2---time_wait
(2)主動建立連線、被動斷開連線會經歷的狀態:
sync_sent----established---close_wait---last_ack
(3)被動建立連線、主動斷開連線會經歷的狀態:
listen---syn_rcvd---established---fin_wait_1---fin_wait_2---time_wait
(4)被動建立連線、主動被動斷開連線會經歷的狀態:
listen---syn_rcvd---established---close_wait---last_ack
這裡需要注意的是狀態裡有sync_sent而不是sync_send
tcp協議有乙個關鍵特性就是可靠傳輸,可靠傳輸的抽象過程如下:
即,在緩衝區中待確認的資料等待時長是乙個網路的rtt(時延),也就是說必須要等待乙個網路傳輸來回才可能收到ack資訊。反過來考慮,在乙個網路的rtt的時間間隔內,傳送端傳送出去的資料都需要緩衝等待ack,如果ack錯誤則需要重發,保證應用層資料的可靠性。
三次握手和四次揮手解析
三次握手和四次揮手 客戶端向服務端傳送乙個報文,報文裡syn位置1,並隨機生成乙個序列號seq,服務端接到報文後知道客服端想要發起乙個新的連線,於是服務端也向客戶端發起乙個確認訊息包在這個訊息包裡ack位置1,syn位置1,也並隨機生成乙個序列號seq,ack seq 1,以上兩次握手之後,對於客戶...
三次握手和四次揮手
三次握手和四次揮手如圖所示 為什麼是三次握手而不是兩次 因為當客戶端第傳送syn到服務端的時候,如果有幾次請求是因為網路等原因延時等情況的時候,如果沒有第三次握手的確定。服務端就會認為客戶端重寫傳送請求了,就會去開啟連線相應。為什麼關閉連線的時候是四次握手而不是三次?當客戶端傳送請求關閉連線的時候,...
三次握手和四次揮手
tcp三次握手和四次揮手的全過程 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線 位碼即tcp標誌位,有6種表示 syn synchronous建立連線 ack acknowledgement 表示響應 確認 psh push表示有data資料傳輸 fin fi...