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。
協定欄位:佔8位元。指明IPv4資料包的資料部分是何種協定資料單元。
常用的一些協定和相應的協定欄位值如下。
協定名稱 | ICMP | IGMP | TCP | UDP | IPv6 | OSPF |
---|---|---|---|---|---|---|
協定欄位值 | 1 | 2 | 6 | 17 | 41 | 89 |
【舉例】
首部校驗和:佔16位元。用來檢測首部在傳輸的過程中是否出現差錯,比如CRC檢驗碼簡單,稱為因特網檢驗和。
源IP地址和目的IP地址:各佔32位元。用來填寫傳送該IP資料包的源主機的IP地址和接收該IP資料包的目的主機的IP地址。