TCP三次握手

2021-09-25 15:09:01 字數 1168 閱讀 9284

資料在傳輸方向上分類有三種

單工只支援資料向乙個方向傳輸。場景:廣播、電視

半雙工支援資料雙向傳輸,但是在同一時間只能向乙個方向傳輸。場景:對講機

全雙工支援同一時間雙向傳輸。場景:**

tcp屬於全雙工分類,但是在傳輸資料之前,必須確定通訊的兩端(客戶端和服務端)都是可以正常連線的,所以就需要握手

在握手開始之前,客戶端的狀態為close狀態,服務端的狀態為listen狀態

第一次握手發生在客戶端,客戶端向服務端傳送乙個資料報,包含兩個資訊:syn=1(請求連線) 和 seq=12345(序列號,為隨機數字),傳送完成後,客戶端狀態由close變為syn_sent

第二次握手發生在服務端,服務端接受了資料報

首先檢查是否有syn,發現syn=1,知道這是乙個請求連線請求,服務端就需要傳送乙個應答ack=1,並提**答序號,它的值就為客戶端傳送的seq+1,即ack=12346

然後檢查自己是否有多餘的資源可以連線,如果可以,就將在這個應答包中再新增乙個syn=1,告訴客戶端我這沒有問題,我也請求連線,並傳送乙個請求序號seq=789(隨機數字)

最後服務端的狀態由listen狀態變為syn_recv狀態

第三次握手發生在客戶端,客戶端接收了資料報

首先ack=1,表明這是個應答包,則檢查ack的序號是否為剛才的seq+1,檢查無誤

然後看下syn=1,表明服務端也在請求連線,則根據服務端傳送過來的seq做乙個應答ack,傳送ack=1, ack=790(即789+1,服務端的請求序號+1)

握手完成客戶端狀態有syn_sent轉變為establish

服務端收到應答後,檢查無誤後,將自己的狀態由syn_recv轉為establish

至此,三次握手完成,我們也可以將三次握手認為是三次的資料傳輸

為什麼不是一次

一次只能是客戶端發起,將資料傳送到服務端

客戶端無法知道服務端的狀態,不能確定是否可以通訊

為什麼不是兩次

第一次客戶端將資料由客戶端傳送給服務端,服務端能知道客戶端是可以連線了

第二次服務端應答客戶端,並為此申請乙個連線資源等待連線

第二次握手,客戶端能知道服務端是能接收到客戶端的請求的,可是服務端並不知道客戶端是否能接收到服務端的請求。

三次握手 可以確保雙方都能確定對方能接受到請求,並能接受到正確的請求,就可以確定這是乙個安全的可信的連線

tcp三次握手 TCP 三次握手總結

tcp特點概述 tcp segment structure 段結構 step2 server host receives syn,replie with syn ack segment 答覆syn ack報文段 step3 client receives synack,replies with ac...

TCP 三次握手

tcp 三次握手 tcp 連線是通過三次握手進行初始化的。三次握手的目的是同步連線雙方的序列號和確認號並交換 tcp 視窗大小資訊。以下步驟概述了通常情況下客戶端計算機聯絡伺服器計算機的過程 1.客戶端向伺服器傳送乙個syn置位的tcp報文,其中包含連線的初始序列號x和乙個視窗大小 表示客戶端上用來...

TCP三次握手

1.伺服器準備好接受外來連線。passive open 被動開啟 需呼叫 socket bind listen 函式來完成。2.客戶端通過呼叫 connect 主動開啟 active open 這使得客戶 tcp傳送乙個 syn 表示同步 分節,這個分節告訴伺服器,客戶端將在待建立的連線中傳送的資料...