TCP連線管理

2021-09-26 11:07:06 字數 2037 閱讀 8179

tcp是面向連線的協議,因此每個tcp連線都有三個階段:連線建立、資料傳送和連線釋放。tcp連線的管理就是使運輸連線的建立和釋放都能正常進行。

在tcp連線建立的過程中,要解決以下三個問題:

要使每一方都能確知對方的存在。

要允許雙方協商一些引數(如最大視窗值、是否使用視窗擴**項、時間戳選項以及服務質量等)

能夠對運輸實體資源(如快取大小、連線表中的專案等)進行分配。

tcp把連線作為最基本的抽象,每條tcp連線有兩個端點。tcp連線的端點不是主機,不是主機的ip位址。不是應用程序,也不是傳輸層的協議埠。tcp連線的埠稱為套接字(socket)或插口。埠拼接到ip位址上即為套接字。

每條tcp連線唯一的被通訊兩端的兩個端點(即兩個套接字)確定。

tcp連線的建立採用客戶/伺服器方式。主動發起連線建立的應用程序稱為客戶機(client),而被動等待連線建立的應用程序稱為伺服器(server).

連線的建立經歷以下3個步驟,通常稱為三次握手

第一步:客戶機的tcp首先向伺服器的tcp傳送乙個連線請求報文段。這個特殊的報文段中不含應用層資料,其首部中的syn標誌位被置為1.另外,客戶機會隨機選擇乙個起始序號seq=x(連線請求報文不攜帶資料,但要消耗乙個序號)

第二步:伺服器的tcp收到連線請求報文後,如同意建立連線,就向客戶機發回確認,並為該tcp連線分配tcp快取和變數。在確認報文段中,syn和ack位都被置為1,確認號字段的值為x+1,並且伺服器隨機產生起始序號seq=y(確認報文不攜帶資料,但也要消耗乙個序號)確認報文段同樣不包含應用層資料。

第三步:當客戶機收到確認報文段後,還要向伺服器給出確認,並且也要給連線分配快取和變數。這個報文段的ack標誌位被置為1,序號欄位為x+1,確認號字段ack=y+1,該報文段可以攜帶資料,若不攜帶資料則不消耗序號

成功進行以上三步後,就建立了tcp連線,接下來就可以傳送應用層資料。tcp提供的是全雙工通訊,因此通訊雙方的應用程序在任何時候都能傳送資料。

另外,值得注意的是:伺服器端的資源是在完成第二次握手時分配的,而客戶端的資源是在完成第三次握手時分配的,這就使得伺服器易於受到syn洪氾攻擊。

參與tcp連線的兩個程序中的任何乙個都能終止該連線。tcp連線釋放的過程通常稱為四次握手。

第一步:客戶機打算關閉連線時,向其tcp傳送乙個連線釋放的報文段,並停止傳送資料,主動關閉tcp連線,該報文段的fin標誌位被置為1,seq=u,它等於前面已傳送過的資料的最後乙個位元組的序號+1(fin報文段即使不攜帶資料,也要消耗乙個序號)。tcp是全雙工的,即可以想象為一條tcp連線上有兩條資料通路。傳送fin報文時,傳送fin的一端不能再傳送資料,即關閉了其中一條通路,但對方還可以傳送資料。

第二步:伺服器收到連線釋放報文段後即發出確認,確認號是ack=u+1,而這個報文段自己的序號為v,等於它前面已傳送過的資料的最後乙個位元組的序號加1.此時,從客戶機到伺服器這個方向的連線就釋放了,tcp連線處於半關閉狀態,但伺服器若傳送資料,客戶器仍要接收,即從伺服器到客戶機這個方向的連線並未關閉。

第三步:若伺服器已經沒有要向客戶機傳送的資料,就通知tcp釋放連線,此時其發出fin=1的連線釋放報文段

第四步:客戶機收到連線釋放報文段後,必須發出確認。在確認報文段中,ack欄位被置為1,確認號是ack=w+1,序號是seq=u+1,此時tcp連線還未釋放,必須經過時間等待計數器設定的時間2msl後,a才能進入連線關閉的狀態。

對上述tcp連線建立和釋放的總結如下:

1)連線建立。分為3步

syn=1,seq=x;

syn=1,ack=1,seq=y,ack=x+1

ack=1,seq=x+1,ack=y+1;

2)釋放連線,分為4步

fin=1,seq=u;

ack=1,seq=v,ack=u+1;

fin=1,ack=1,seq=w,ack=u+1;

ack=1,seq=u+1,ack=w+1;

TCP 連線管理

本節將介紹一條tcp連線是如何建立和拆除的。此處假設客戶機a上面的乙個程序想要和服務 器b上的乙個程序建立一條tcp連線。本文前面介紹的是比較正常的連線和拆除,特殊的會在後面介紹。第一步客戶機a的tcp會向伺服器的tcp傳送乙個不包含應用層資料的資料的tcp報文段。該報文段中首部標誌位s yn被置為...

TCP連線管理

一些基本的概念可以先看另一篇部落格 這篇直接對tcp連線過程做筆記 1.tcp連線詳細過程 假設執行在主機 客戶 的乙個程序想跟另一台主機 伺服器 上程序建立乙個連線 第一步 客戶端的tcp首先向服務端的tcp傳送乙個特殊的tcp報文段。該報文段不包含應用層資訊。報文段的syn 標誌位 置1。因此這...

TCP的連線管理

tcp是面向連線的協議。運輸連線是用來傳送tcp報文的。連線運輸就有三個階段,即 連線建立 資料傳送和連線釋放。在tcp連線建立過程中要解決以下三個問題 1 要使每一方能夠確知對方的存在。2 要允許雙方協商一些引數 如最大視窗值 是否使用視窗擴 項和時間戳選項以及服務質量等 3 能夠對運輸實體資源 ...