1. 程式人生 > >【計算機網路】:tcp報文詳解

【計算機網路】: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