IP資料報格式詳解

IP資料報的首部格式及其內容是實作IP協議的主要功能的基礎,因此我們有必要搞清楚這部分的內容,
一個IP資料報由20位元組的固定部分和最大40位元組的可變部分組成,
■ 固定部分:指每個IP資料報首部都必須包含的部分,
■ 可變部分:范圍(0-40位元組),增加IP資料報的功能,
IP資料報的首部常常以32bit(4位元組)為單位進行描述,
版本欄位:占4位,表示IP協議的版本,通信雙方使用的IP協議的版本必須一致,目前廣泛使用的IP協議版本號為4(即IPv4),
首部長度欄位:占4位,表示IP資料報首部的長度,該欄位的取值以4位元組為單位,范圍(5-10),
■ 最小十進制取值為5,表示IP資料報首部只有20位元組固定部分,
■ 最大十進制取值為10,表示IP資料報首部包含20位元組固定部分和最大40位元組的可變部分,
可選欄位:長度從1-40位元組不等,用來支持排錯、測量以及安全措施,
可選欄位增加了IP資料報的功能,但這同時也使IP資料報的首部長度變成可變的,這就增加了每個路由器處理IP資料報的開銷,實際很少使用,
填充欄位:確保首部長度為4位元組的整數倍,使用全0來填充,首部長度=4的倍數=固定部分[20]+可變欄位[1,40],當可變部分不等于4的整數倍時,就用0來填充以達到4的整數倍,
總長度:占16位,IP資料報的總長度(首部+資料載荷),以位元組為單位,最大取值為65535(2^16),
區分服務:占8位,用來獲得更好的服務,利用該欄位的不同數值可提供不同等級的服務質量,只有在使用區分服務時,該欄位才起作用,一般不使用,
【舉例】
假設首部二進制(4位元組為單位)=0101
首部長度=0101*4=20位元組
假設總長度=0000001111111100=1020位元組
資料載荷長度=總長度-首部長度=1020-20=1000位元組
標識,標志,片偏移共同用于IP資料報分片,

標識:占16個位,屬于同一個資料報的個分片資料報屬于具有相同的標識,
標志:占3位,個位元含義如下:
■ DF位:1表示不允許分片;0表示允許分片,
■ MF位:1表示“后面還有分片”,0表示“這是最后一個分片”
■ 保留位:必須為0;
片偏移:占13位,以8位元組為單位,指分片資料報的資料載荷部分偏移其首地址資料報位置有多少個單位(8位元組為1個單位);
【舉例】對IPv4資料報進行分片

分片后的表格:
| 總長度 | 標識 | MF | DF | 片偏移 | |
|---|---|---|---|---|---|
| 原始資料報 | 3800+20 | 12345 | 0 | 0 | 0 |
| 分片1資料報 | 1400+20 | 12345 | 1 | 0 | 0/8 |
| 分片2資料報 | 1400+20 | 12345 | 1 | 0 | 1400/8 |
| 分片3資料報 | 1400+20 | 12345 | 0 | 0 | 2800/8 |
現在假定分片2的IP資料報經過某個網路時還需要再進行分片,其中一個分片成800個位元組,另一個分片為600個位元組,分片結束后給每個分片添加首部使之成為IP資料報,
| 總長度 | 標識 | MF | DF | 片偏移 | |
|---|---|---|---|---|---|
| 原始資料報 | 3800+20 | 12345 | 0 | 0 | 0 |
| 分片2的分片1資料報 | 800+20 | 12345 | 1 | 0 | 1400/8 |
| 分片2的分片2資料報 | 600+20 | 12345 | 1 | 0 | 2200/8 |
生存時間TTL:占8位,最初以秒為單位,最大生存周期為255秒,現在以“跳數”為單位,路由器轉發IP資料報的時候,將IP資料報首部中的該欄位的值減1,若不為0就轉發,否則就丟棄,
【舉例】生成時間TTL欄位的作用——防止IP資料報在網路中永久兜圈,

為了簡單只給出了每個路由表中由人工配置的靜態路由條目,假設在人工配置靜態路由條目時錯將R3配成了R1這會導致去往網路N2的IP資料報錯誤地轉發給路由器R1,
- 假設某個IP資料報從網路N1發往網路N2,該IP資料報到達R1后,進行查表轉發,
- 發現匹配的路由條目,下一跳指示轉發給R2,于是R1將資料報轉發給R2,
- 發現了匹配的路由條目,下一跳指示轉發給R1,于是R2將資料報轉發給R1,
- 很顯然,形成了路由環路(套娃),若無TTL欄位,IP資料報將在路由環路中永久兜圈,
協議欄位:占8位,指明IPv4資料報的資料部分是何種協議資料單元,
常用的一些協議和相應的協議欄位值如下,
| 協議名稱 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
|---|---|---|---|---|---|---|
| 協議欄位值 | 1 | 2 | 6 | 17 | 41 | 89 |
【舉例】

首部校驗和:占16位,用來檢測首部在傳輸的程序中是否出現差錯,比如CRC檢驗碼簡單,稱為因特網檢驗和,
源IP地址和目的IP地址:各占32位元,用來填寫發送該IP資料報的源主機的IP地址和接收該IP資料報的目的主機的IP地址,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/211758.html
標籤:其他
