1. 程式人生 > 實用技巧 >IP資料報格式

IP資料報格式

IP資料報首部的固定部分中的各欄位

  1. 版本佔4位,指IP協議的版本。通訊雙方使用的IP協議的版本必須一致。目前廣泛使用的IP協議版本號為4(即IPv4)或IPv6(即版本6的IP協議)
  2. 首部長度佔4位,可表示的最大十進位制數值是15。請注意,首部長度欄位所表示數的單位是32位字(1個32位字長是4位元組)。因為IP首部的固定長度是20位元組,因此首部長度欄位的最小值是5(即二進位制表示的首部長度是0101 = 5,表示大小 = 5 * 4 (32 位字 = 20 位元組))。而當首部長度為最大值1111時(即十進位制數的15),就表明首部長度達到最大值15個32位字長,即60位元組。當IP分組的首部長度不是4位元組的整數倍時,必須利用最後的填充欄位加以填充。因此IP資料報的資料部分永遠在4位元組的整數倍時開始,這樣在實現IP協議時較為方便。首部長度限制為60位元組的缺點是有時可能不夠用。但這樣做是希望使用者儘量減少開銷。最常用的首部長度是20位元組(即首部長度為0101),這時不使用任何選項。
  3. 區分服務佔8位,用來獲得更好的服務。這個欄位在舊標準中叫做服務型別,但實際上一直沒有被使用過。1998年ITF把這個欄位改名為區分服務DS(Differentiated Services)只有在使用區分服務時,這個欄位才起作用(見844節)。在一般的情況下都不使用這個欄位[RFC2474,3168,3260]。
  4. 總長度 指首部和資料之和的長度,單位為位元組。總長度欄位為16位,因此資料報的最大長度為2^16-1=65535位元組。儘可能長的IP資料報會使傳輸效率得到提高,但資料報短些也有好處。每一個IP資料報越短,路由器轉發的速度就越快。為此,IP協議規定,在網際網路中所有的主機和路由器,必須能夠接受長度不超過576位元組的資料報。這是假定上層交下來的資料長度有512位元組(合理的長度),加上最長的IP首部60位元組,再加上4位元組的富餘量,就得到576位元組。當主機需要傳送長度超過576位元組的資料報時,就要進行分片。
  5. 標識(identification)佔16位。IP軟體在儲存器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識欄位。但這個“標識”並不是序號,因為IP是無連線服務,資料報不存在按序接收的問題。當資料報由於長度超過網路的MTU而必須分片時,這個標識欄位的值就被複制到所有的資料報片的標識欄位中。相同的標識欄位的值使分片後的各資料報片最後能正確地重灌成為原來的資料報
  6. 標誌(flag)佔3位,但目前只有兩位有意義。
    標誌欄位中的最低位記為MF(More Fragment)
    1. MF=1即表示後面“還有分片”的資料報。
    2. MF=0表示這已是若干資料報片中的最後一個。
    3. 標誌欄位中間的一位記為DF(Don't Fragment),意思是“不能分片”。只有當DF=0時才允許分片。
  7. 片偏移佔13位。片偏移指出:較長的分組在分片後,某片在原分組中的相對位置。也就是說,相對於使用者資料欄位的起點,該片從何處開始。片偏移以8個位元組為偏移單位。這就是說,每個分片的長度一定是8位元組(64位)的整數倍