TCP連線建立過程

2021-10-11 18:11:54 字數 1440 閱讀 7406

瀏覽器訪問**,通過網域名稱解析找到ip位址後會與伺服器端建立連線。其中tcp(transmission control protocol,傳輸控制協議)是一種面向連線的、可靠的、基於位元組流的通訊協議,它的特點是資料在傳輸前要建立連線,傳輸完畢後還要斷開連線,且每次客戶端與伺服器端的通訊都都需要進行應答。

我們先來看一下tcp資料報的結構

其中,陰影部分的字段要重點理解:

對英文本母縮寫的總結:seq 是 sequence 的縮寫,表示序列;ack(ack) 是 acknowledge 的縮寫,表示確認;syn是 synchronous 的縮寫,願意是「同步的」,這裡表示建立同步連線;fin 是 finish 的縮寫,表示完成。

建立tcp連線客戶端和伺服器端需要相互傳送三個資料報,這三個資料報分別表示三次握手的過程。如下圖所示。

1.首先由客戶端發起連線請求,元件乙個tcp資料報。該資料設定syn標誌位表示該資料報用來建立tcp連線。同時隨機生成乙個seq序列號1000,填充到tcp資料報中的seq欄位,前文中提到seq欄位用來表示當前資料報,表示該資料報的序列號。

完成這一步後,客戶端進入syn-send狀態。

2.伺服器端接收到資料報後,檢查syn標誌位,判斷該資料報為客戶端請求用來建立tcp連線的資料報,設定syn和ack標誌位,syn表示該資料報用來建立tcp連線,ack表示確認收到了客戶端傳送來的資料報。

為了標識該資料報,伺服器端同樣隨機生成乙個序列號2000填充到seq欄位,該序號是伺服器為了標識當前建立的資料報,與客戶端傳送的資料報中的seq無關。

伺服器將客戶端資料報序號(1000)加1,得到1001,並用這個數字填充「確認號(ack)」字段。因為當前建立的資料報是為了回應客戶端傳送的資料報。

伺服器端發出該資料報後進入syn-recv狀態。

3.客戶端收到資料報後,檢測到syn和ack標誌位被設定,知道這是伺服器端傳送的「確認包」表示伺服器端接收到了客戶端傳送的資料報,於是客戶端再新建乙個資料報用2000+1=2001填充資料報的ack欄位傳送給伺服器端.

傳送完畢後客戶端進入established狀態

伺服器端收到後判斷ack欄位是否為2001,如果是的話伺服器端也進入established狀態

至此,客戶端和伺服器端都進入了連線狀態,完成了tcp協議中的三次握手,建立了tcp連線。

TCP連線建立過程和TCP連線終止過程

1 當客戶端想要與伺服器端進行tcp通訊時,會首先傳送乙個syn同步包 tcp包頭的syn位被置位 並指明要連線的伺服器端口號。2 如果伺服器端同意連線,就會向客戶端傳送乙個ack確認包 tcp包頭的ack被置位 表示同意客戶端的請求,同時將該包的syn位置位,表示伺服器也想與客戶端通訊。3 客戶端...

TCP的連線建立過程

最初a,b主機都處於close狀態。b的tcp伺服器程序先建立傳輸控制塊tcb,準備接受客戶端程序的連線請求。然後伺服器程序就處於listen狀態,等待客戶的連線請求,如有,即做出響應。a的tcp客戶端程序也首先建立傳輸控制塊tcb,然後向b發出連線請求報文,這時首部中的同步位syn 1,同時選擇乙...

TCP 連線建立過程和連線釋放過程

1 客戶端a向伺服器b傳送連線請求報文,此時首部的同步位syn 1,同時選擇乙個初始序號seq x.tcp規定syn報文 syn 1 不能攜帶資料,但是要消耗乙個序列號,這時tcp客戶程序進入syn sent 同步以傳送 狀態 2 伺服器b收到連線請求報文後,如果同意建立連線,則向a傳送確認,在確認...