TCP 首部格式

2021-09-26 14:33:57 字數 1756 閱讀 9028

源埠

表示傳送端埠,字段長度16位。

目標埠

表示接收端埠,字段長度16位。

序列號(sequence number)

字段長32位。指傳送資料的位置。每傳送一次資料,就會累加一次該資料位元組的大小。

序列號不會從0或1開始,建立連線時計算機隨機生成初始值,通過syn包傳給接收端主機。然後將每**過去的位元組數累加到初始值上表示資料位置。此外,在建立連線和斷開連線時傳送syn包和fin包雖然並不攜帶資料,但是也會作為乙個位元組增加對應的序列號

確認應答號(ack)

長度32位,表示期望收到資料的開始序列號,也即已經收到的資料的位元組長度加1,傳送端收到這個確認應答後可以認為這個序號以前的資料已經被正常接收。

資料偏移(data offset)

長度4位,單位為4位元組,計算出的資料段開始位址的偏移值。

保留(reserved)

該字段為以後擴充套件時用,長度4為,一般設定為0,但即使收到的包在該字段不為0,此包也不會被丟棄。

控制位、識別符號(control flag)

長度8位,從左到右分別為 cwr、ece、urg、ack、psh、rst、syn、fin

視窗大小(window size)

長度16位,表示從確認號開始,本報文的傳送方可以接收的位元組數,即接收視窗大小。用於流量控制。

校驗和(checksum)

長度16位,與udp相似,區別在於無法關閉。tcp在計算校驗和的時候使用tcp偽首部(如下圖),對整個的tcp報文段,包括tcp頭部和tcp資料,以16位字進行計算所得。

緊急指標(urgent pointer)

長度16位.只有在urg控制位為1時有效。該字段的數值表示本報文段中緊急資料的指標。

選項(options)

改欄位用於提高tcp的傳輸效能。因為根據資料偏移(首部長度)進行控制,所以其最大長度為40位元組。

0:選項表結束(1位元組)

1:無操作(1位元組)用於選項字段之間的字邊界對齊。

2:mss選項用於建立連線時決定最大報文長度。

3:視窗擴大,用來改善tcp吞吐量的選項。tcp首部中視窗字元字段只有16位。因此在tcp包往返時間(rtt內),只能傳送最大64k位元組的資料。如果採用了該選項,視窗的最大值可以擴充套件到1g。由此在乙個rtt較長的網路也可以達到高吞吐。

4:傳送端支援並同意使用sack選項

5:sack實際工作的選項

8:時間戳字段選項,用於高速通訊中對序列號的管理。若果要將幾十g的資料高速**到網路時,32位的序列號可能迅速用完。在傳輸不穩定的網路環境下,就有在比較晚的時點卻收到散步在網路中的乙個較早序列號的包。而如果接收端對新老序列號產生了混淆就無法實現可靠傳輸。為了避免這個問題,就引入了時間戳這個選項,用於區分新老序列

TCP首部格式

先看tcp報文段的格式,如下 tcp報文段首部的前20個位元組是固定的,後面有4n位元組是根據需要而增加的選項。因此tcp報文段的最小長度為20個位元組。首部固定部分的各字段的意義如下 2 序號 佔4個位元組,序號的範圍為 0,4284967296 由於tcp是面向位元組流的,在乙個tcp連線中傳送...

TCP首部報文段格式

最近 計算機網路 這本書看到了傳輸層的 tcp 協議,因為tcp 的全部功能都體現在它的首部中,因此覺得有必要將這些知識梳理一下。首先tcp 是面向位元組流的。這個流指的是流入到程序或從程序流出的位元組序列。面向位元組流的含義是 應用程式與 tcp 的互動是一次乙個資料塊 大小不等 但是 tcp 把...

TCP報文的首部格式

tcp 長度不一 tcp 協議是能夠實現資料的分段傳輸,流量控制,可靠傳輸,擁幫浦控制等功能,因此tcp報文的首部要比udp的報文首部欄位要多,並且首部長度不固定。2個位元組所能表達的數 65536 埠號範圍是0 65535.2 16 65536 tcp的分用功能是通過埠實現的。4 8 32.資料偏...