IPv4 報文頭

Author: Xu FC
References:
https://tools.ietf.org/html/rfc791
https://tools.ietf.org/html/rfc1393
http://www.iana.org/assignments/ip-parameters/ip-parameters.xhtml
http://www.bogpeople.com/networking/dscp.shtml
https://blog.csdn.net/u011784495/article/details/71636993
http://www.rhyshaden.com/ipdgram.htm
http://www.tcpipguide.com/free/t_IPDatagramOptionsandOptionFormat-2.htm

IPv4 報文頭格式


字段 長度 (bits) 含義
Version 4 IP 協(xié)議版本號
Header Length 4 IPv4 首部長度
Type of Service 8 區(qū)分服務(wù), 與 IP 優(yōu)先級相關(guān)
Total length 16 總長度,包括 header 和 payload
Identification 16 標(biāo)識,數(shù)據(jù)報的標(biāo)識,分片數(shù)據(jù)報的各分片標(biāo)識相同
Flags 3 標(biāo)志,與分片相關(guān)
Fragment Offset 13 片偏移,與分片相關(guān)
Time to Live 8 數(shù)據(jù)報在傳輸中的跳數(shù)限制
Protocol 8 協(xié)議,上一層封裝的協(xié)議號
Header Checksum 16 首部校驗(yàn)和,只校驗(yàn)首部,不包含數(shù)據(jù)部分
Source IP Address 32 源 IP
Destination IP Address 32 目的 IP
Options 0~40 選項(xiàng)字段,必須是 4 字節(jié)的倍數(shù),否則以 0 填充
Data 填充報文

Version - 版本號


4 bits

0x4: IPv4, ethernetII type 為 0x0800
0x6: IPv6, ethernetII type 為 0x86dd

Header Length - 首部長度


4 bits

IPv4 首部長度,1 個單位代表 4 個字節(jié),在沒有選項(xiàng)的情況下,IPv4 首部長度為 5,即固定長度 20 字節(jié)(從 version 到 destination IP address),報頭長度必須是 4 字節(jié)的整數(shù)倍,如果不是,需要填充 PAD 補(bǔ) 0 湊齊。
PAD

Type of Service - 服務(wù)類型


8 bits

|0|1|2|3|4|5|6|7|

前 6 位 (0~5, RFC 2474) : 區(qū)分服務(wù)碼點(diǎn) (DSCP - Different Services Code Point), 是 IP 優(yōu)先級和服務(wù)類型字段的組合。

ToS

  • 第 0~2 位 (優(yōu)先級從高到低)

    • 111:Network Control
    • 110:Internetwork Control
    • 101:Critic/ECP
    • 100:Flash Override
    • 011:Flash
    • 010:Immediate
    • 001:Priority - 優(yōu)先
    • 000:Routine - 常規(guī)
  • 第 3 位

    • 1:Low delay - 低延遲
    • 0:Normal delay - 正常延遲
  • 第 4 位

    • 1:High Throughput - 高吞吐量
    • 0:Normal Throughput - 正常吞吐量
  • 第 5 位

    • 1:High Reliability - 高可靠性
    • 0:Normal Reliability - 正??煽啃?/li>

后 2 位 (RFC 3168):擁塞通知 (ECN - Explicit Congestion Notification)。

  • 第 6 位

    • 1:Minimise monetary cost (RFC 1349)
    • 0
  • 第 7 位

    • 0:必需為 0

IP 優(yōu)先級表

  • CS: 類選擇器 (Class Selector) (RFC 2474) - 同一 class 的優(yōu)先級相同
  • AFxy: 保證轉(zhuǎn)發(fā) (Assured Forwarding) (x=class, y=drop precedence) (RFC 2579 - Textual Conventions for SMIv2) - MIB 相關(guān)
  • EF: 加急轉(zhuǎn)發(fā) (Expedited Forwarding) (RFC 3246) - 快速轉(zhuǎn)發(fā) PHB (Per-Hop Behavior),低延遲、低抖動、低損耗
DSCP Binary IP Precedence
CS0 000 000 0
CS1 001 000 1
AF11 001 010 1
AF12 001 100 1
AF13 001 110 1
CS2 010 000 2
AF21 010 010 2
AF22 010 100 2
AF23 010 110 2
CS3 011 000 3
AF31 011 010 3
AF32 011 100 3
AF33 011 110 3
CS4 100 000 4
AF41 100 010 4
AF42 100 100 4
AF43 100 110 4
CS5 101 000 5
EF 101 110 5
CS6 110 000 6
CS7 111 000 7

Total length - 總長度


16 bits

總長度 = IP 頭部長度 + 數(shù)據(jù)長度
16 bit 能表示的最大長度為 65535 字節(jié)(2 的 16 次方 - 1),超過該長度的報文可以通過 IP 分片進(jìn)行構(gòu)造。

Identification - 標(biāo)識


16 bits

每個數(shù)據(jù)報有唯一標(biāo)識,每次加1,同一個數(shù)據(jù)報產(chǎn)生分片,所有分片的標(biāo)識相同,給分片重組作為依據(jù)。

Flags - 標(biāo)志


3 bits

|0|1|2|

分片標(biāo)志:

  • 第 0 位 - Reserved,沒有使用,保持為 0;
  • 第 1 位 - DF (Don't Fragment)
    • DF = 1:不允許分片
    • DF = 0:允許分片
  • 第 2 位 - MF (More Fragment)
    • MF = 1:表示后面有分片
    • MF = 0:表示當(dāng)前是最后一個分片

Fragment Offset - 片偏移


13 bits

表示在當(dāng)前分片在數(shù)據(jù)報的位置,如果沒有分片,該字段為 0 ;如果有分片,首片片偏移為 0,偏移的一個單位表示 8 字節(jié),因此非尾片的數(shù)據(jù)部分需是 8 字節(jié)的整數(shù)倍,如果當(dāng)前分片為第二片,首片數(shù)據(jù)部分為 24 字節(jié),即結(jié)束位置為第 24 * 8 - 1 = 191 位,因此當(dāng)前分片的片偏移為 3,即起始位置為第 3 * 8 * 8 = 192 位。


首片

當(dāng)前分片,片偏移為 3

Time to Live (TTL) - 生存時間


8 bits

表示該報文傳輸中允許經(jīng)過的跳數(shù),沒經(jīng)過一個路由器,該值就減 1 ,當(dāng) TTL = 0 時,丟棄這個報文,從而阻止報文在網(wǎng)絡(luò)上無限傳輸。TTL 最大值為 255 (2 的 8 次方 -1)。

Protocol - 上層協(xié)議


8 bits

告訴主機(jī)的 IP 層應(yīng)該將數(shù)據(jù)交給哪個上層處理過程。

Header Checksum - 首部校驗(yàn)和


16 bits

用于IP首部校驗(yàn),校驗(yàn)失敗則丟棄該報文。

Source IP Address


32 bits

發(fā)送端 IP 地址。
Web 應(yīng)用中,源 IP 不能是受限廣播 IP。

Destination IP Address


32 bits

接收端 IP 地址。
255.255.255.255 為受限廣播,路由器將丟棄該報文。
x.x.x.255 直接廣播,該報文將被發(fā)送到 x.x.x.0/24 子網(wǎng)的每一臺主機(jī)上。

Options - 選項(xiàng)


可選的 IP 報頭字段。
選項(xiàng)長度需要是 4 字節(jié)的整數(shù)倍,非整數(shù)倍將 PAD 填充。


  • Option type
    • Copy flag - 1 bit:
      • 0:如果報文分片,該選項(xiàng)將不被復(fù)制到每個分片中;
      • 1:如果報文分片,該選項(xiàng)將被復(fù)制到每個分片中;
    • Option class - 2 bits:只使用了 0 和 2
      • 0:控制;
      • 2:For debugging and measurement;
    • Option number - 5 bits:類似于協(xié)議號,指明是什么選項(xiàng);
    • Option length - 8 bits:該選項(xiàng)的整個長度,即從 type 起始到 data 結(jié)束的長度,1 個單位代表 1 字節(jié);
    • Option data - 詳細(xì)見 RFC 791;
Copy Class Option Number Length (字節(jié)) Description
0 0 0 - EOOP - End of Options List, 無長度和數(shù)據(jù),用于標(biāo)記選項(xiàng)列表的結(jié)尾。
0 0 1 - NOP - No Operation (忽略選項(xiàng)),無長度和數(shù)據(jù), 用于對齊 IP 頭中 32 位邊界對齊的內(nèi)部填充。
1 0 2 11 SEC - Security(IP 安全性選項(xiàng)),用于指定 IP 數(shù)據(jù)包的安全性分類。
1 0 3 可變 LSR - Loose Source Route (松散路由),向目的轉(zhuǎn)發(fā)時指定路由,網(wǎng)關(guān)可以不遵守。
0 2 4 可變 TS - Time Stamp(時間戳),與 RR 類似,只是將路由改為時間戳,每個路由器都插入時間戳,用來查看路由之前的傳輸時長。
1 0 5 E-SEC - Extended Security(擴(kuò)展安全選項(xiàng)),與基本安全選項(xiàng)一起使用,附加安全標(biāo)簽信息。
1 0 6 CIPSO - Commercial Security(商業(yè)安全)
0 0 7 可變 RR - Record Route(記錄路由),記錄數(shù)據(jù)報走過的每個路由,長度由始發(fā)設(shè)備設(shè)置,不能被放大,如果到達(dá)目的前被填滿,則只會記錄部分路由。
1 0 8 4 SID - Stream ID(流),在不支持流概念的網(wǎng)絡(luò)中傳輸 16 位 SATNET 流標(biāo)識
1 0 9 可變 SSR - Strict Source Route(嚴(yán)格源路由),指定路由,路由器必須按照該路由進(jìn)行轉(zhuǎn)發(fā),并且在轉(zhuǎn)發(fā)過程中將源路由替換為路由器地址。
0 0 10 ZSU - Experimental Measurement(實(shí)驗(yàn)測量)
0 0 11 MTUP - MTU Probe,用于從非分片數(shù)據(jù)報傳輸?shù)木W(wǎng)絡(luò)路徑中找到最低 MTU,MTU 值將在 MTU Reply 中返回。已過時。
0 0 12 MTUR - MTU Reply,已過時。
1 2 13 FINN - Experimental Flow Control(實(shí)驗(yàn)測量控制)
1 0 14 VISA - Experimental Access Control(實(shí)驗(yàn)訪問控制)
0 0 15 ENCODE(用于圍繞 IP 層加密實(shí)驗(yàn))
1 0 16 IMITD - IMI Traffic Descriptor(IMI 流量描述符)
1 0 17 EIP - Extended Internet Protocol(擴(kuò)展互聯(lián)網(wǎng)協(xié)議)
0 2 18 12 TR - Traceroute(跟蹤路由),路由器將 ICMP Traceroute 消息發(fā)送給始發(fā)主機(jī),從而告訴發(fā)起方傳輸路徑。RFC 1393。
1 0 19 10 ADDEXT - Address Extension(地址擴(kuò)展),用于載入 IPv4 地址轉(zhuǎn)換為 IPv7 地址所需附加字節(jié)。
1 0 20 4 RTRALT - Router Alert(路由報警),通知中轉(zhuǎn)路由器更仔細(xì)的檢查 IP 數(shù)據(jù)報的內(nèi)容。
1 0 21 6~38 SDB - Selective Directed Broadcast(選擇性定向廣播模式),為 IPv4 數(shù)據(jù)報的選項(xiàng)字段包含的一組 IP 地址提供 UDP 傳輸。
1 0 22 unassigned
1 0 23 DPS - Dynamic Packet State(動態(tài)分組狀態(tài))
1 0 24 UMP - Upstream Multicast Pkt(上游組播包)
0 0 25 QS - Quick-Start(快速開始)
0 0 30 EXP - RFC 3682
0 2 30 EXP - RFC 3682
1 0 30 EXP - RFC 3682
1 2 30 EXP - RFC 3682

EOOL - End of Options List

無長度和數(shù)據(jù),用于標(biāo)記選項(xiàng)列表的結(jié)尾。

+--------+
|00000000|
+--------+

Copy - 1 bit: 0
Class - 2 bits: 0
Number - 5 bits: 0

NOP - No Operation (忽略選項(xiàng))

無長度和數(shù)據(jù), 用于對齊 IP 頭中 32 位邊界對齊的內(nèi)部填充。

+--------+
|00000001|
+--------+

Copy - 1 bit: 0
Class - 2 bits: 0
Number - 5 bits: 1
NOP

LSR - Loose Source Route (松散路由)

向目的轉(zhuǎn)發(fā)時指定路由,網(wǎng)關(guān)可以不遵守。

+--------+--------+--------+---------//--------+
|10000011| length | pointer|     route data    |
+--------+--------+--------+---------//--------+

Copy - 1 bit: 1
Class - 2 bits: 0
Number - 5 bits: 3

Length - 8 bits
Pointer - 8 bits
Route data
LSR

TS - Time Stamp(時間戳)

與 RR 類似,只是將路由改為時間戳,每個路由器都插入時間戳,用來查看路由之前的傳輸時長。
為了不暴露內(nèi)網(wǎng)路徑相關(guān)信息,防火墻應(yīng)丟棄攜帶 TS Option 的報文。

+--------+--------+--------+--------+
|01000100| length | pointer|oflw|flg|
+--------+--------+--------+--------+
|         internet address          |
+--------+--------+--------+--------+
|             timestamp             |
+--------+--------+--------+--------+
|                 .                 |
                  .
                  .

Copy - 1 bit: 0
Class - 2 bits: 1
Number - 5 bits: 4

Length - 8 bits
Pointer - 8 bits:指向下一個時間戳記錄添加位置。
Overflow - 4 bits:由于缺少空間而無法記錄時間戳的跳數(shù)。
Flag - 4 bits:
    0: 只記錄時間戳
    1: 記錄 IP 地址和時間戳
    3: 提前指定 IP 地址,當(dāng)前網(wǎng)絡(luò)節(jié)點(diǎn)匹配該 IP 時,記錄該時間戳
TS

RR - Record Route(記錄路由)

記錄數(shù)據(jù)報走過的每個路由,長度由始發(fā)設(shè)備設(shè)置,不能被放大,如果到達(dá)目的前被填滿,則只會記錄部分路由。
為了不暴露內(nèi)網(wǎng)路徑,防火墻應(yīng)丟棄攜帶 RR Option 的報文。

+--------+--------+--------+---------//--------+
|00000111| length | pointer|     route data    |
+--------+--------+--------+---------//--------+

Copy - 1 bit: 0
Class - 2 bits: 0
Number - 5 bits: 7

Pointer - 8 bits: 指向下一個路由記錄添加位置。
RR

SSR - Strict Source Route(嚴(yán)格源路由)

指定路由,路由器必須按照該路由進(jìn)行轉(zhuǎn)發(fā),并且在轉(zhuǎn)發(fā)過程中將源路由替換為路由器地址。

+--------+--------+--------+---------//--------+
|10001001| length | pointer|     route data    |
+--------+--------+--------+---------//--------+

Copy - 1 bit: 1
Class - 2 bits: 0
Number - 5 bits: 9


SSR

TR - Traceroute(跟蹤路由)

路由器將 ICMP Traceroute 消息發(fā)送給始發(fā)主機(jī),從而告訴發(fā)起方傳輸路徑。

+--------+--------+--------+--------+
|01010010| Length |    ID Number    |
+--------+--------+--------+--------+
|Outbound Hop Count|Return Hop Count|
+--------+--------+--------+--------+
|      Originator IP Address        |
+--------+--------+--------+--------+

Copy - 1 bit: 0
Class - 2 bits: 2
Number - 5 bits: 18
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,195評論 0 8
  • 網(wǎng)絡(luò)層提供的兩種服務(wù) 在計算機(jī)網(wǎng)絡(luò)領(lǐng)域,網(wǎng)絡(luò)層應(yīng)該向運(yùn)輸層提供怎樣的服務(wù)(面向連接還是無連接)曾引起了長期的爭論,...
    srtianxia閱讀 4,240評論 0 12
  • 《Tcp/Ip協(xié)議族》筆記 網(wǎng)際協(xié)議版本4(IPv4) IP分組由一個基本首部和一些選項(xiàng)構(gòu)成,這些選項(xiàng)有時用于促進(jìn)...
    Zhang21閱讀 3,579評論 1 0
  • IPv4分組 IPv4,即現(xiàn)在普遍使用的IP協(xié)議(版本為4)。IP協(xié)議定義數(shù)據(jù)傳送的基本單元——IP分組及其確切的...
    CodeKing2017閱讀 2,229評論 0 0
  • 簡介 用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,082評論 1 13

友情鏈接更多精彩內(nèi)容