Networking - IPv4 報文格式

每一個 IP 數據報都以一個 IP 報頭開始。源計算機的 TCP/IP 軟件構造這個 IP 報頭,目的計算機的 TCP/IP 軟件利用 IP 報頭中封裝的信息處理數據。IP 報頭包含大量信息,包括源 IP 地址、目的 IP 地址、數據報長度、IP版本號和對路由器的特殊指令等。安全

Version

這個 4 位的字段表示所使用的 IP 版本。IPv4 相應的二進制是 0100。測試

IHL(Internet Header Length)

這個 4 位字段表示 IP 報頭以 32 位字爲單位的長度。IP 報頭的最小長度是 5 個 32 比特字,相應的二進制表示 0101。調試

Type of Service

源 IP 可以指定特殊的路由信息。有些路由器會忽略這個地段的信息,但隨着服務質量(QoS)技術的出現,這個字段獲得了更多的重視。這個 8 位字段的主要用途是對等待經過路由器的數據報區分優先級,而目前大多數 IP 實現是把這個字段全填爲 0。blog

Total Length

這個 16 位的字段表示 IP 數據報的長度,單位是字節,這個長度包含了 IP 報頭和數據載荷。排序

Identification

這個 16 位的字段是一個依序變大的數值,分配給源 IP 發出的消息。當傳遞到 IP 層的消息太大而不能放到一個數據報裏時,IP 會把消息拆分到多個數據報,並對這些數據報排序分配相同的標識號。接收端利用這些數值重組爲原始消息。路由

Flags

這個字段表示分段可能性。第 1 位未使用,其值應該爲 0。第 2 位稱爲 DF(Don’t Fragment),表示是否容許分段,0 表示容許,1 表示不容許。第 3 位是 MF(More Fragments),表示是否還有分段正在傳輸,設置爲 0 時表示沒有更多分段須要發送,或是數據報根本沒有分段。io

Fragment Offset

這個 13 位的字段是一個數值,被賦予每一個連續的分段。目的設備的 IP 利用這個值以正確的次序重組分段。table

Time To Live (TTL)

這個字段表示數據報在被拋棄以前能保留的時間(以秒爲單位)或路由器跳數。每一個路由器都會檢查這個字段,而且至少把它減去 1,或數據報在路由器中延遲的秒數。當這個字段的值爲 0 時,數據報會被拋棄。軟件

Protocol

這個 8 位的字段表示接收數據載荷的協議,好比協議標識爲 6(二進制位爲 00000110)的數據報會被傳遞到 TCP 模塊。下面是一些常見的協議標識值。路由器

 協議名稱   協議標識 
ICMP 1
TCP 6
UDP 17

Header Checksum

這個字段包含 16 位的校驗和,只用於檢驗報頭自己的有效性。數據報通過的每一個路由器都會對這個值從新進行計算,由於 TTL 字段的值是在不斷變化的。

Source IP Address

這個 32 位的字段包含了數據報的源 IP 地址。

Destination IP Address

這個 32 位的字段包含了數據報的目的 IP 地址。目的 IP 根據這個值檢驗發送的正確性。

IP Options

這個字段支持一些可選的報頭設置,主要用於測試、調試和安全的目的。這些選項包括嚴格源路由(數據報必須通過指定的路由)、網際時間戳(通過美國路由器的時間戳記錄)和安全限制。

Padding

IP 選項字段的長度不是固定的。填充字段能夠提供一些額外的 0,從而保證整個報頭的長度是 32 位的整倍數(報頭長度必須是 32 位字的整數倍,由於 IHLL 字段以 32 位字爲單位表示報頭的長度)。

IP Data Payload

這個字段用於保存傳遞給 TCP 或 UDP(在傳輸層中)、ICMP 或 IGMP 的數據。數據塊的長度不定,能夠包含數千字節。

相關文章
相關標籤/搜索