HTTP三次握手過程分析

如圖爲http三次握手時序圖:
在這裏插入圖片描述

第一次握手:客戶端向服務端發送第一個請求:創建連接數據包的請求,其中標識位SYN=1(表示這是創建請求的數據包),同時發送Seq=X(數字)

服務端收到客戶端的請求,知道客戶端要與自己創建連接,服務端就會開啓一個TCP的socket的端口,端口開啓之後,返回給客戶端相關信息。

第二次握手:服務端返回信息給客戶端:標誌位SYN,ACK=X+1,Seq=Y

客戶端收到服務端的信息,知道服務端允許自己打開創建的TCP連接,就給服務端發送信息表示確認

第三次握手:客戶端發送確認信息給服務端:ACK=Y+1, Seq=Z

進行三次握手的原因: 防止服務端開啓無用的連接,網絡傳輸有延時,傳輸時客戶端發送SYN=1,如果此時服務端直接創建連接,返回內容給客戶端,數據包在網絡傳輸中丟失,沒有收到服務端的內容,客戶端就會因爲延遲而發送新的請求,而此時服務端還在等待剛纔客戶端的迴應,但是此時客戶端開啓新的請求。三次握手能讓彼此及時察覺網絡的延時,延遲則關閉端口,避免服務端開啓無用的端口開銷。

下面是三次握手數據包分析:
在這裏插入圖片描述

從圖中分析,端口13789–>80, 80–>13789, 13789–>80,是三次握手的過程(找對應的端口即可)
其中13789是本機端口,80是服務器端口

過程分析:

13789–>80:[SYN], Seq=0, 客戶端向服務端發送SYN標誌位,Seq=0,SYN佔據第一個標誌位(SYN=1)

80–>13789:[SYN, ACK], Seq=0,ACK=1 (ACK=Seq(客戶端)+1)

13789–>80: [ACK], Seq=1, ACK=1 (Seq=ACK(服務端), ACK=Seq(服務端)+1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章