【TCP/IP 筆記】IPv4-02 | IPv4 報頭詳解

參考 <The TCP/IP Guide> http://tcpipguide.com


在這裏插入圖片描述

IPv4 數據報的一般格式

在這裏插入圖片描述

Version

用於標識生成該數據報的 IP 版本。對於 IPv4 這裏的值爲 4。

IHL (Internet Header Length)

以 32 比特爲一個單位指出 IP 頭的長度,包括選項和填補部分,當沒有選項時這個值爲 5。

TOS (Type Of Service)

攜帶 IP 數據報的服務質量特徵信息,如優先傳遞,其含義後來被重新定義以供稱爲差異化服務 (Differentiated Services, DS) 的技術使用。

子字段長度 (bits)描述
Precedence3指示數據報的優先級,下面有八個定義的值,從最低到最高
Precedence 值優先級
000Routine
001Priority
010Immediate
011Flash
100Flash Override
101CRITIC/ECP
110Internetwork Control
111Network Control
D1如果需要低延遲傳輸則設爲 1,否則爲 0
T1如果需要更高吞吐量傳輸則設爲 1,否則爲 0
R1如果需要更可靠的傳輸則設爲 1,否則爲 0
Reserved2保留

TL (Total Length)

以字節 (byte) 爲單位指出 IP 數據報的總長度。因爲這個字段只有 16 bits 所以 IP 數據報的最大長度爲 65,535 Bytes,實際上大多數都遠小於這個上限。

Identification

這個字段的值對於屬於同一數據報的碎片是相同的,這樣接收方在重組時才能分辨哪些碎片是屬於一個數據報的。

Flags

用來管理碎片。

子字段名稱 長度 (bits) 描述
Reserved 1 保留
DF 1 值爲 1 時表示該數據報不能被分片,因爲分片操作對更高層的協議不可見,所以很多時候不會設置這個值。但也不是沒用,常用與測試最大 MTU
MF 1 值爲 0 時表示該數據報爲最後一塊碎片;值爲 1 時表示後面還有若干數據報碎片。

Fragment Offset

當數據報被分片時,這個字段指出當前碎片在原數據報中的偏移量或位置,以 8 Bytes 爲一個單位,第一個碎片的偏移量爲 0。

TTL (Time To Live)

指出數據報允許在互聯網中存活的時間,沒經過一個路由器,路由器就會將這個值減 1,當這個值爲 0 時路由器將丟棄該數據報不再轉發。這其實是指出數據報的最多跳數而非時間。

Protocol

指出數據報中攜帶的更高層協議。

值(16 進制) 值(10 進制) 協議
00 0 保留
01 1 ICMP
02 2 IGMP
03 3 GGP
04 4 IP-in-IP Encapsulation
06 6 TCP
08 8 EGP
11 17 UDP
32 50 Encapsulating Security Payload (ESP) Extension Header
33 51 Authentication Header (AH) Extension Header

Header Checksum

僅計算報頭的校驗和,以提供對傳輸中的損壞的基本保護,不對數據進行校驗和。

Source Address & Destination Address

源地址和目標地址。

Options

每個 IP 選項都有自己的 子字段格式,下圖和表表示通用選項格式:
在這裏插入圖片描述

子字段名稱長度 (Bytes)描述
Option Type1這 8 bits 被分成如下三個子子字段
子子字段名稱長度 (bits)描述
Copied1如果設爲 1 則說明當數據報被分片時,這個選項要複製到所有分片中,反之設爲 0
Option Class2指定可能的四個值中的一個,用於指示該選項所屬的類別,實際上只有兩個值被使用:0 表示控制選項 (Control Options);2 表示調試和測量。
Option Number5指定選項的種類,因爲長度爲 5 bits,所以每個類別的選項可以有 32 個種類
Option Length0 or 1以 Byte 爲單位指出變長選項的長度,包括這裏所說的三個子字段。
Option Data0 or Variable爲變長選項提供,包含選項要發送的數據。
Option Class Option Number Length (Bytes) Option Name Description
0 0 1 End Of Options List 只含有一個 0 Byte 的選項,用來標記選項列表的結尾。
0 1 1 No Operation 虛擬選項,用於內部填充,用於一些需要 32-bit 對齊的選項。
0 2 11 Security 爲軍方提供的選項,用於指示 IP 數據報的安全分類。
0 3 Variable Loose Source Route 包含一個 IP 地址列表,用來指定數據報必須準確、按順序使用所給 IP 地址列表的路由器到達終點,途中可以使用列表外的路由器做中間跳轉。
0 7 Variable Record Route 如果數據報含有這個選項,那麼處理這個數據報的路由器會將自己的 IP 地址添加到這個選項中,這樣接收方就可以提取地址列表查看數據報採用的路由。
因爲這個選項的長度是由發送該數據報的設備設置的,它不會在路由途中增大,所以,如果在到達目的之前該選項已經填滿,那麼將只記錄了部分路由。
0 9 Variable Strict Source Route 和 Loose Source Route 選項類似,但是不允許列表外的路由器做中間跳轉。
2 4 Variable Timestamp 和 Record Route 選項類似,不同的是處理該數據報的路由器往選項裏添加的是時間戳,這樣接收方就可以知道數據報在各個路由器之間傳輸所用的時間。途中同樣不能修改該選項的長度。
2 18 12 Traceroute 用於 traceroute 程序的增強。

Padding

如果有選項,使得報頭長度不爲 32 bits 的倍數,就用 0 去填補,使得報頭長度始終爲 32 bits 的倍數。

Data

要傳送的數據。

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