TCP頭部格式
字段名稱 |
長度(比特) |
含義 |
|
TCP頭部(20字節~) |
發送方端口號 |
16 |
發送網絡包的程序的端口號 |
接收方端口號 |
16 |
網絡包的接收方程序的端口號 |
|
序號(發送數據的順序編號) |
32 |
發送方告知接收方該網絡包發送的數據相當於所有發送數據的第幾個字節 |
|
ACK號(接收數據的順序編號) |
32 |
接收方告知發送方接收方已經收到了所有數據的第幾個字節。其中ACK是acknowledge的縮寫 |
|
數據偏移量 |
4 |
表示數據部分的起始位置,也可以認為表示頭部的長度 |
|
保留 |
6 |
該字段為保留,現在未使用 |
|
控制位 |
6 |
該字段中的每個比特分別表示以下通信控制含義。 URG:表示緊急指針字段有效 ACK:表示接收數據序號字段有效,一般表示數據已被接收方接收 PSH:表示通過flush操作發送的數據 RST:強制斷開連接,用於異常中斷的情況 SYN:發送方和接收方相互確認序號,表示連接操作 FIN:表示斷開連接 |
|
窗口 |
16 |
接收方告知發送方窗口大小(即無需等待確認可一起發送的數據量) |
|
校驗和 |
16 |
用來檢查是否出現錯誤 |
|
緊急指針 |
16 |
表示應緊急處理的數據位置 |
|
可選字段 |
可變長度 |
除了上面的固定頭部字段之外,還可以添加可選字段,但除了連接操作之外,很少使用可選字段 |
IP頭部格式
字段名稱 |
長度(比特) |
含義 |
|
IP頭部(20字節~) |
版本號 |
4 |
IP協議版本號,目前使用的版本是4 |
頭部長度(IHL) |
4 |
IP頭部的長度。可選字段可導致頭部長度變化,因此這里需要指定頭部的長度 |
|
服務類型(ToS) |
8 |
表示包傳輸優先級。 |
|
總長度 |
16 |
表示IP消息的總長度 |
|
ID號 |
16 |
用於識別包的編號,一般為包的序列號。如果一個包被IP分片,則所有分片都擁有相同的ID |
|
標志(Flag) |
3 |
該字段有3個比特,其中2個比特有效,分別代表是否允許分片,以及當前包是否為分片包 |
|
分片偏移量 |
13 |
表示當前包的內容為整個IP信息的第幾個字節開始的內容 |
|
生存時間(TTL) |
8 |
表示包的生存時間,這是為了避免網絡出現回環時一個包永遠在網絡中打轉。每經過一個路由器,這個值就會減1,減到0時這個包就會被丟棄 |
|
協議號 |
8 |
協議號表示協議的類型(以下均為十六機制)。 TCP:06 UDP:11 ICMP:01 |
|
頭部校驗和 |
16 |
用於檢查錯誤,現在已不使用 |
|
發送方IP地址 |
32 |
網絡包發送方的IP地址 |
|
接收方IP地址 |
32 |
網絡包接收方的IP地址 |
|
可選字段 |
可變長度 |
除了上面的固定頭部字段之外,還可以添加可選字段,但除了連接操作之外,很少使用可選字段 |
MAC頭部的字段
字段名稱 |
長度(比特) |
含義 |
|
MAC頭部(14字節) |
接收方MAC地址 |
48 |
網絡包接收方的MAC地址,在局域網中使用這一地址來傳輸網絡包 |
發送方MAC地址 |
48 |
網絡包發送方的MAC地址,接收方通過它來判斷是誰發送了這個包 |
|
以太類型 |
16 |
使用的協議類型。以下是一些常見的類型,一般在TCP/IP通信中只使用0800和0806這兩種。 0000-05DC:IEEE 802.3 0800 :IP協議 0806 :ARP協議 86DD :IPv6 |
UDP頭部中的控制信息
字段名稱 |
長度(比特) |
含義 |
|
UDP頭部(8字節) |
發送方端口號 |
16 |
網絡包發送方的端口號 |
接收方端口號 |
16 |
網絡包接收方的端口號 |
|
數據長度 |
16 |
UDP頭部后面數據的長度 |
|
校驗和 |
16 |
用於校驗錯誤 |