TCP-IP詳解:TCP的頭部與選項

參考書籍:TCP-IP詳解

本文主要介紹TCP的頭部與選項


TCP的頭部

TCP屬於協議層的第三次,封包被稱爲segment,現在主要來看下TCP頭部的格式,如下圖


一般情況下TCP Header 的長度爲20個字節,沒有TCP Options

由上圖,需要注意的地方:

1. TCP layer 沒有IP地址的概念,那個是IP 層的,所以前4個字節是源端口和目的端口

2. Sequence Number:傳輸數據過程中,爲每一個封包分配一個序號,保證網絡傳輸數據的順序性

3. Acknowledgment Number:用來確認確實有收到相關封包,內容表示期望收到下一個報文的序列號,用來解決丟包的問題

4. TCP Flags:這部分主要標誌數據包的屬性,比如SYN,RST,FIN等,操控TCP的狀態機

5. Window:滑動窗口,主要用於解決流控擁塞的問題

6. Checksum:校驗值

7. Urgent Pointer:緊急指針,可以告知緊急的數據位置,需要和Flag的U flag 配合使用

8. TCP Options:一般包含在三次握手中,有Option的選項!

在tcpdump抓出來的TCP Header如下圖



TCP Option

每個選項的開始都是1個Byte的kind字段,說明選項的類型,Kind爲0/1的時候,選項只佔1個Byte,其他選項在kind字段後面還有len字節,說明總長度包括kind和len的字節。看下圖


從圖中我們可以看到

0. 代表選項表結束

1.代表無操作

2.代表MSS

3.代表窗口擴大銀子

8.代表時間戳

 其他的kind值爲4/5/6/7 四個選項被稱爲選擇ACK及回顯選項,目前回顯選項已經被時間戳給代替!

下面來看下在SYN上顯示的TCP選項

<mss 512, nop, wscale 0, nop, nop, timestamp 146647 0>


從圖中可以看到:

0~3 Byte : MSS 512   

4~7 Byte : nop,wscale 0

8~11Byte:nop,nop,timestamp 

12~15 Byte:146647

16~19 Byte:0 最少4個字節對齊

在tcpdump抓出的解析是這樣的:

<mss 1460, nop, wscale 8, nop, nop, sack>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章