TCP詳解 連線建立與斷開

2022-09-16 03:09:10 字數 1917 閱讀 7701

一、報文結構介紹

在開始講tcp連線過程時,還是先看看tcp報文的格式如圖1所示。ip資料報此時由ip頭部+tcp頭部+tcp資料組成。不帶選項的tcp頭部是20位元組長,而帶選項的,tcp頭部最長可達60位元組。常見的選項包括最大的大小(mss),時間戳(傳輸控制時使用)、視窗縮放(流量控制時使用)、選擇性ack(傳輸控制時使用)。我們來具體看下tcp頭部欄位如圖2所示。

圖1 ip資料報中tcp封裝

圖2所示的即是tcp頭部的詳細結構。源埠與目的埠和源ip及目的ip這四元組唯一標識每個tcp連線。序列號(sequence number)字段標識tcp的一端到另一端的資料流的第乙個開始位元組(例如傳送端傳送的資料總位元組長度為1000位元組,假定序列號從1開始,總的序列號是1-1000,tcp會給每個位元組賦予乙個序列號)。通過序列號來代表傳送端到接收端的資料,接收端接收到資料後,即可通過確認號(ack)來傳送給傳送端,讓傳送端知道資料已被接受。這個ack號是由接收到的資料的序列號加1,代表接收端希望接收的下乙個資料的序列號。(注:ack是不占用序列號的,原因是接收端傳送ack給傳送端後,傳送端的isn是等於此時接收到的ack號)。

圖2 tcp頭部結構

頭部長度的單位32bit,所以這也定義了tcp的長度最大為4*15=60位元組。八個標誌位中(cwr、ece。。。等),這裡先每個介紹,後面文章有用到時在另行介紹。我們來主要了解下ack、syn、fin。ack即確認,連線建立後一般都是啟用狀態。syn用於初始化乙個連線的同步序列號。當傳送方已經結束資料的傳送時,即傳送fin報文段給接收端。視窗大小在tcp流量控制中會重點講解。

二、tcp連線的建立與終止

如圖3所示即為tcp連線建立與終止的過程圖。

圖3 tcp連線的建立與終止

tcp建立的三次握手:

1、傳送端傳送乙個syn報文段(syn位被置位),syn中包含tcp目的埠和傳送端的初始序列號(圖中isn(c)),同時攜帶著tcp選項資料。

2、接收端收到傳送端連線請求後,接收端傳送自己syn報文段(包含isn(s)),同時對傳送端的syn進行確認,如前所述,接收端傳送的ack是isn(c)+1。此時ack位與syn位都被置位。接收端傳送syn+ack到傳送端。

3、傳送端接收到接收端的syn+ack資料後,對isn(s)進行確認,傳送ack為isn(s)+1的報文段給接收端。

tcp斷開的四次握手:

1、tcp協議規定通過傳送乙個fin段(fin被置位)來發起關閉操作,圖3中傳送端傳送fin段給接收端,告知它資料已傳送完畢,請求斷開tcp連線。同時fin報文段還包含著對最近收到的資料進行ack。

2、接收端接收端fin報文段後,對fin進行確認,傳送ack=k+1給傳送端。

3、接收端將連線關閉傳送給上層應用程式,由應用程式發起連線關閉操作。此時接收端由被動關閉連線壯成主動,並傳送fin報文段給傳送端。報文的序列號為l(這裡也可看出上一步驟中傳送ack序列號也為l,因為ack不占用序列號,所以這裡的fin的序列號也為l)。

4、傳送端接收到fin後,傳送回ack給接收端後,tcp連線終止。如果fin丟失,傳送fin的那端需要重新傳送fin,知道接收到ack為止。

三:總結

如前所述,建立乙個tcp連線需要3個報文段,而關閉tcp連線需要4個報文段。

TCP連線建立與斷開

重點關注標記 三次握手確認建立雙向連線 男 我們談朋友吧!syn 女 談朋友,好的!syn ack 男 好的!ack ps 如男方後悔了另謀物件,沒有第三次確認,那麼女方就是單方面確認談朋友,建立了髒連線。四次揮手確認斷開連線 男 我們分手吧!fin 女 好的,等我收拾完東西發訊息給你 此時男不能再...

TCP建立連線與斷開連線的過程

在cs模式的tcp連線建立過程中,客戶端與伺服器端流程如下 客戶端流程 傳送請求 接收伺服器端確認 傳送對伺服器端確認的確認。伺服器端流程 接收客戶端的連線建立請求 傳送確認 接收客戶端傳送的對確認的確認。1 剛開始客戶端和服務端都處於closed狀態,服務端開始監聽某個埠,進入listen狀態。2...

TCP連線與斷開

a機器與b機器三次握手檢驗雙方報文收發正常 第一次握手 a請求連線 syn 1,seq x b正常接收 ab a能發報 b能收報 第二次握手 syn 1,ack 1,seq y,ack x 1 a a能發報 收報,b能發報 收報 b a能發報 b能收報 第三次握手 ack 1,seq x 1,ack...