TCP header format


4 bits 6 bits 6 bits 8 bits 8 bits
Source Port Destination Port
Sequence Number
Acknowledge Number
Data
Offset
Reserved Code Window
Checksum Urgent Pointer
Options Padding
Data

Source Port

來源埠號。

Destination Port

目的埠號。

Sequence Number

序號是用來標識從發送端向接收端發送的資料流,它表示這個資料段中的第一個資料位元組。其實序號就是一個發送端發送資料的計數器,發送端發送的第二個 TCP 包的序號減去第一個 TCP 包的序號就可以得出第一個 TCP 包發送的資料塊的大小。序號是一個 32 位元的無符號長整數,達到 0xffffffff 又從 0 開始。

需要注意的是,當建立一個 TCP 連接時,SYN 標誌變為 1,此時序號欄位包含了發送方主機選擇的出示序號 ISN,但是一般情況下這個 ISN 為0,改發送方要發送的資料的第一個位元組序號為這個 ISN 加 1,因此在建立 TCP 連接的第一個 TCP 包中,序號為 0,因為 ISN 為 0,而建立 TCP 連接又沒有要發送的資料,所以序號為 0。

Acknowledge Number

確認序號標識接收方(即發送確認的一方)所期望接收到的下一個序號,也就是它接收到的 TCP 包的序號加 1,並且只有 ACK 位為 1 時此確認序號才生效。但是通常情況下這種情況總是正確的,因為一個 TCP 連接一旦建立,之後的傳送 ACK 位總會被設置。

確認序號其實就是表示已經收到了發送端發送的一些資料,但是當前確認序號所標識的資料還沒有收到,這個確認序號可以被發送方用來判斷是否需要重發。

需要注意的是,序號和確認序號是有方向的,因為TCP提供的是全雙工的服務,所以在每一個方向上的序號和確認序號都是不同的。

Data Offset

4 bits 的 Data Offset 可以當做 Header長度來解釋,也就是資料開始的位置。Data Offset 單位為 4 bytes(32 bits),也就是 header length 需對齊 32 bits,所以才有最後的 padding 出現。最長是 60 bytes,而正常的 TCP header 長度是 20 bytes。

Code

tcp flag。

Window

window 欄位中所存放的數字是另一端能夠接受的位元組數量。如果接收者還能再接收 6000 bytes,則 window = 6000。window 欄位只是告知發送者可繼續傳送資料,但必須小於 window 值。接收者藉由改變 window 的大小,就可以控制發送者的位元組流量。當 window=0 時,表示發送者必須停止傳送,除非再收到不為零的 window 值。

TCP 的流量控制由連接每一端通過 Window 值來提供。Windows 值的單位為 byte,從 Acknowledge Number 的值開始。比如一端 Window 值為 4096,當前的Acknowledge Number 為 10000,則表明這一端當前能接收的最大位元組數為 4096,而它希望接收從位置 10000 開始的資料。

Checksum

驗證值。

Urgent Pointer

緊急數據指標。

Options

options。

Padding

Padding。

下面是option字段值的列表


Kind   Meaning                               Reference
----   -------------------------------   ---------
  0       End of Option List                 [RFC793]
  1       No-Operation                       [RFC793]
  2       Maximum Segment Size               [RFC793]
  3       WSOPT - Window Scale              [RFC1323]
  4       SACK Permitted                    [RFC2018]
  5       SACK                              [RFC2018]
  6       Echo (obsoleted by option 8)      [RFC1072]
  7       Echo Reply (obsoleted by option 8)[RFC1072]
  8       TSOPT - Time Stamp Option         [RFC1323]
  9       Partial Order Connection Permitted[RFC1693]
 10       Partial Order Service Profile     [RFC1693]
 11       CC                                [RFC1644]
 12       CC.NEW                            [RFC1644]
 13       CC.ECHO                           [RFC1644]
 14       TCP Alternate Checksum Request    [RFC1146]
 15       TCP Alternate Checksum Data       [RFC1146]
 16       Skeeter                           [Knowles]
 17       Bubba                             [Knowles]
 18       Trailer Checksum Option    [Subbu & Monroe]
 19       MD5 Signature Option              [RFC2385]
 20       SCPS Capabilities                   [Scott]
 21       Selective Negative Acknowledgements [Scott]
 22       Record Boundaries                   [Scott]
 23       Corruption experienced              [Scott]
 24       SNAP                             [Sukonnik]
 25       Unassigned (released 12/18/00)
 26       TCP Compression Filter           [Bellovin]

來源:http://www.cublog.cn/u3/93613/showart_1863685.html

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()