【計算機網路】:tcp報文詳解
TCP(Transmission Control Protocol)傳輸控制協議是一種面向連線的、可靠的、基於位元組流的傳輸層協議
TCP報文格式:
源埠號(2位元組):
d5 df(54751)
目的埠號(2位元組):
22 b8(8888)
TCP報頭中的源埠號和目的埠號同IP資料報中的源IP與目的IP唯一確定一條TCP連線
序號(4位元組):
37 59 56 75
用來標識TCP發端向TCP收端傳送的資料位元組流
確認序號(4位元組):
由於該報文為SYN報文,ACK標誌為0,故沒有確認序號(ACK標誌為1時確認序號才有效
一旦連線建立,該值將始終傳送(同ACK標誌)
首部長度(4位):報文頭長度(單位:位)/32
1000(轉化為10進製為8,8*32/8 = 32,該報文報頭長度為32個位元組)
存在該欄位是因為TCP報頭中任選欄位長度可變
報頭不包含任何任選欄位則長度為20位元組;4位所能表示的最大值為1111,轉化為10進製為15,15*32/8 = 60,故報頭最大長度為60位元組
標誌位(12位):
0000 00010010
Reserved:
000~ ~~~~~~~~
ECN(Explicit Congetsion Notification):
~~~0 ~~~~~~~~ = N / NS / Nonce Sum:有效排除潛在的ECN濫用,RFC 3540
~~~~ 0~~~~~~~ = C / CWR(Congestion Window Reduced):擁塞視窗減少標誌
~~~~ ~0~~~~~~ = E / ECE / ECN-Echo:ECE / ECN標誌
Control Bits:
~~~~ ~~0~~~~~ = U / Urgent:緊急指標有效性標誌
~~~~ ~~~1~~~~ = A / Acknowledgment:確認序號有效性標誌。一旦一個連線建立起來,該標誌總被置為1(除了SYN標誌為1的報文,其它所有報文的該標誌總為1)
~~~~ ~~~~0~~~ = P / Push:Push標誌(接收方應儘快將報文段提交至應用層)
~~~~ ~~~~~0~~ = R / Reset:重置連線標誌
~~~~ ~~~~~~1~ = S / Syn:同步序號標誌
~~~~ ~~~~~~~0 = F / Fin:傳輸資料結束標誌
視窗大小(2位元組):TCP流量控制通過連線的每一端宣告視窗大小進行控制(接收緩衝區大小)
20 00(00100000 00000000)= 8192
由於2位元組能夠表示的最大正整數為65535,故視窗最大值為65535
檢驗和(2位元組):檢驗和覆蓋整個TCP報文段;強制欄位,由傳送端計算儲存,由接收端進行驗證
2e 2f
緊急指標(2位元組):當Urgent標誌置1時,緊急指標才有效
00 00
任選欄位(0 - 40位元組):
每個選項格式如下:
選項型別 |
選項總長度 |
選項內容 |
說明如下:
說明 |
佔用位元組數 |
值 |
選項型別 |
1 |
0-255 |
選項總長度 |
1 |
length |
選項內容 |
length - 2 |
可選選項如下:
Kind |
Length |
Description |
References |
0 |
1 |
End of option list. |
RFC 793 |
1 |
1 |
No operation. |
RFC 793 |
2 |
4 |
MSS, Maximum Segment Size. |
RFC 793 |
3 |
3 |
WSOPT, Window scale factor. |
RFC 1323 |
4 |
2 |
SACK permitted. |
RFC 2018 |
5 |
Variable. |
SACK. |
RFC 2018, RFC 2883 |
6 |
6 |
Echo. (obsolete). |
RFC 1072 |
7 |
6 |
Echo reply. (obsolete). |
RFC 1072 |
8 |
10 |
TSOPT, Timestamp. |
RFC 1323 |
9 |
2 |
Partial Order Connection permitted. |
RFC 1693 |
10 |
3 |
Partial Order service profile. |
RFC 1693 |
11 |
6 |
CC, Connection Count. |
RFC 1644 |
12 |
6 |
CC.NEW |
RFC 1644 |
13 |
6 |
CC.ECHO |
RFC 1644 |
14 |
3 |
Alternate checksum request. |
RFC 1146 |
15 |
Variable. |
Alternate checksum data. |
RFC 1146 |
16 |
Skeeter. |
||
17 |
Bubba. |
||
18 |
3 |
Trailer Checksum Option. |
|
19 |
18 |
MD5 signature. |
RFC 2385 |
20 |
SCPS Capabilities. |
||
21 |
Selective Negative Acknowledgements. |
||
22 |
Record Boundaries. |
||
23 |
Corruption experienced. |
||
24 |
SNAP. |
||
25 |
|||
26 |
TCP Compression Filter. |
||
27 |
8 |
Quick-Start Response. |
RFC 4782 |
28 |
4 |
User Timeout. |
RFC 5482 |
29 |
TCP-AO, TCP Authentication Option. |
RFC 5925 |
|
30 |
MPTCP |
||
31 - 252 |
|||
253 |
RFC3692-style Experiment 1. |
RFC 4727 |
|
254 |
RFC3692-style Experiment 2. |
RFC 4727 |
|
255 |
{02 04 05 b4} {01} {03 03 08} {01} {01} {04 02}
MSS + No operation + WSOPT + No operation + No operation + SACK permitted