TCP 協議三次握手

TCP 協議三次握手

    所謂三次握手(Three-way Handshake)是指建立 TCP 連接時客戶端與服務端一共要發送三次報文。(客戶端發送 SYN 報文 --> 服務端發送 SYN + ACK 報文 --> 客戶端發送 ACK 報文)

第一次握手:

    客戶端發送一個 TCP 的 SYN 標誌位置 1 的報文(SYN = 1)用來指明打算連接的服務器的端口號,以及初始化端口號 X (seq = x)(系列號數值一般是隨機的),保存在頭文件的序列號字段裏。 

這裏寫圖片描述

第二次握手:

    服務器發回確認報文 (ACK) 迴應客戶端,即 SYN 標誌位 與 ACK 標誌位都爲 1 (SYN = 1, ACK = 1)以及初始化確認號爲 Y (seq = Y),並將確認序列號設置爲 X + 1 (x + 1 代表收到了 x)

這裏寫圖片描述

第三次握手:

    客戶端再次發送確認報文(ACK),ACK 標誌位爲 1,並且把服務器回傳的 ACK 的序號字段 + 1(Y + 1),放在確定字段中發送給對方。

這裏寫圖片描述

三次握手也就是:
     第一次握手:客戶端發送 SYN 報文到服務器,等待服務器確認。 

     第二次握手:服務器收到 SYN 報文後,確認客戶端的 SYN,同時也發送一個 SYN 報文。

     第三次握手:客戶端收到服務器的 SYN 與 ACK 報文,服務器再次發送確認報文 ACK,此報文發送完畢,便完成三次握手,客戶端與服務器開始傳送數據。

爲什麼是三次握手呢?

“三次握手”的目的是“爲了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤”

舉個小例子:

    A 發信息給 B ; B 收到閱讀後回(我已閱)信息給 A  (如果不回給 A,即便 B 已閱,A 也不知道 B 已閱) ; 當 A 收到 B 的已閱信息後,A 再回復 B 我(A)已知您已閱 (如果 A 不回覆 B ,即便 A 已知 B 已閱,B 也不知道 A 已知自己(B)已閱)。【在信息不被攔截的情況下】
A --1--> B --2--> A --3--> B     三次握手
發佈了40 篇原創文章 · 獲贊 15 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章