ip報文和最小以太網報文填充


 

 

ipv4報文格式

IPV4報文格式詳解
 版本(version):4比特(bit),4(二進制0100)代表ipv4,6(二進制0110)代表ipv6;
報文頭長度(IHL,IP Header Length):4比特(bit),該值以4字節(Byte)為一個單位,因此最長可以表示15*4=60字節(Byte);最小為20(不帶Option字段),最長為60
 服務類型(TOS,Type of Service):8比特(bit),用於實施QOS,RFC 791中TOS 的IP Precedence分為8個優先級,值越大優先級越高。RFC2474中對TOS重新定義,前6位定義成DSCP,可以標識64中等級,后兩位保留;
 報文總長度(Total Length):長度16比特(bit),以字節(Byte)為單位,包含報文頭和數據,所有IP報文最長65535字節(Byte),2的16次方等於65536;
 標識符(Identification):16比特(bit),主機每發一個報文,加1,分片重組時會用到該字段,與Flags和Fragment Offset聯合使用進行分段操作,一個大包分段為多個小包時標記為相同的值;
 標記(Flags):3比特(bit),第一位不使用,第二位是DF(Don’t Fragment)位,表示是否分片,0表示可以分片,1表示不能分片;第二位是MF(More Fragment)位,表示該報文是否為最后一片,0表示是,1表示否即還有后續報文;
 片偏移(Fragment Offset):12比特(bit),表示分片在原分組中的相對位置,以8個字節為偏移單位;
 生存時間(TTL,Time to Live):8比特(bit),報文發送設備賦值,報文沒經過一台路設備,該設備會對TTL值減1,當TTL值為0時丟棄報文,用於防環;
 協議(Protocol):8比特(bit),上層所用的協議;
 頭部校驗(Header Checksum):16比特(bit),只檢驗數據包的首部,不檢驗數據部分。這里不采用CRC檢驗碼,而采用簡單的計算方法;因為路由器需要改變包頭里的TTL值,因此路由器需要為每個包重新計算頭部校驗值;
 源地址(Source Address):32比特(bit), 源IP地址;
 目的地址(Destination Address):32比特(bit), 目標IP地址;
 可選項(Options):可變長度;主要用於測試,具體見下方
 填充(Padding):填充字段,全0,因IP報文頭長度單位為32bit(4Byte,),所以報文長度必須為32bit的整數倍

 

 

 

擴展--服務類型(TOS,Type of Service):

COS、TOS和DSCP:
COS是二層報文優先級IEEE802.1p,TOS和DSCP是三層IP報文頭的優先級
COS是字VLAN幀里的802.1Q tag里的一個PRI字段(3bit),代表8個優先級0-7
IPV4報文格式詳解
報文分為三種情況:帶優先級和VLAN ID的標簽報文,其優先級值是自身帶的值;只帶優先級的標簽報文,此時VLAN ID為0,其優先級值是自身帶的值;未帶標簽的報文,一般默認的優先級值為0,也可以進行更改指定新的優先級。
TOS和DSCP是IP報文頭的優先級,不同的RFC,具體參考QOS;
擴展--可選項(Options):
 松散源路由(Loose source Routing):給出一連串路由器接口IP地址,IP包必須沿着這些IP傳送,但允許相繼的兩個IP之間經過多跳;
IPV4報文格式詳解

    • Type: 類型。占1字節,此處設為131。
    • length: 占1字節,記錄整個選項的長度。
    • pointer: 指針項,占1個字節,指向下一個被處理的源站地址,最小值為4。
    • route data: 路由數據。
       嚴格源路由(Strict Source Routing):給出一連串路由器接口IP地址,IP包必須沿着這些IP傳送,如果下一跳不在IP列表則表示發生錯誤;
      IPV4報文格式詳解
    • Type=137(10001001):占1字節,code 的值此處設為137。
    • length:占1字節,記錄整個選項的長度。
    • pointer:指針項,占1個字節,指向下一個被處理的源站地址,最小值為4。
       路有記錄(Record Route):當IP包離開每個路由器時,記錄路由器的出接口IP地址;
      IPV4報文格式詳解
    • Type: 指明IP選項的類型。此處值為7。
    • length: 選項的總字節長度。不包含填充的長度,IP填滿時最大為39;。
    • pointer: 它是一個基於1的指針,指向存放下一個IP地址的位置。它的最小值為4,指向存放第一個IP地址的位置。隨着每個IP地址存入清單,ptr的值分別為8,12,16,最大到36,當記錄下9個IP地址后,ptr的值為40,表示清單已滿。
    • route data: 路由數據。
       時間戳(Timestamps):當IP包離開每個路由器時紀錄時間。
      IPV4報文格式詳解
    • Type (01000100):時間戳選項,代碼為68;
    • length:選項的總長度(一般為36或40);
    • ponter:指向下一個可用空間的指針(5,9,13等);
    • oflw:表示溢出字段;
    • flg:表示標志字段:
       0:只記錄時間戳。
       1:每台路由器都記錄它的IP地址和時間戳。在選項列表中只有存放4對地址和時間戳的空間。
       3:發送端對選項列表進行初始化,存放了4個IP地址和4個取值為0的時間戳值。只有當列表中的下一個IP地址與當前路由器地址相匹配時,才記錄它的時間戳。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM