tip:以下都假設客戶端是主動方,伺服器為被動方。實際情況兩者即可能是主動也可能是被動。
【問題】什麼是「三次握手,四次揮手」?
tcp\ip協議給兩台裝置建立連線要經歷三次通訊,斷開的時候要經歷四次通訊,這就是」三次握手和四次揮手「。
一. tcp報文
tcp層傳輸的資料是以報文的形式呈現的,而握手揮手的過程就要用到幾個報文裡的引數。
二.」三次握手「
建立連線的三次握手如下圖:
seq都為系統取得隨機數,這裡以字母表示。
過程解析 :
然後客戶端和服務端相互間就建立了連線,完成了tcp三次握手。
【問題】為什麼是三次握手而不是兩次?
因為客戶端服務端雙方都要建立連線,如果只有兩次的話,服務端就不會能確認它是否連線上了客戶端。
三.」 四次揮手「
過程解析:
【問題】為什麼是四次揮手,而不是兩次三次?
客戶端因為傳送完資料後才開啟的釋放連線請求,伺服器收到後,回覆客戶端它收到了,但是這時伺服器不一定就發完了它的資料,所以客戶端要等待伺服器傳送完資料,伺服器再傳送釋放連線請求,客戶端回應後伺服器就釋放連線了。所以四次揮手是為了被動放傳完資料再釋放連線。
【問題】為什麼最後客戶端要等待2msl後再關閉?
因為客戶端擔心最後一條報文伺服器沒有收到,所以要等一段時間後再自己放釋放。如果伺服器沒有收到客戶端最後一條ack報文,會再傳送一次fin請求釋放連線報文。
參考:
TCP三次握手 四次揮手
tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...
TCP三次握手 四次揮手
服務端的tcp程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求,然後服務端程序處於listen狀態,等待客戶端的連線請求,如有,則作出響應。1 客戶端的tcp程序也首先建立傳輸控制模組tcb,然後向服務端發出連線請求報文段,該報文段首部中的syn 1,ack 0,同時選擇乙個初始序號seq ...
TCP三次握手四次揮手
tcp transmission control protocol 傳輸控制協議 tcp是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立乙個連線。位碼即tcp標誌位,有6種標誌 urg urgent緊急 ack acknowledgement 確認 psh push傳送 rst...