1. 程式人生 > >ipv6協議報文格式

ipv6協議報文格式

一、ipv6的基本格式

ipv6報文格式從簡單性來看,比ipv4較簡單,而且ipv6的基本頭部的長度是固定的。相較與ipv4,ipv6去掉了一些頭部,把這些頭部全部弄到了後面的擴充套件投不中。ipv6的報文格式如下:


version:4bits 版本號  ipv6為6 Traffic Class: 8 bits,傳輸類別,可用於源節點或轉寄路由器標識和區分IPV6包中的不同類別或優先順序;類似於實現IPV4的TOS/DIFF Flow Label:20bits 流標籤,資料流是指從某特定的源節點向某特定的目的節點發送的資料包序列。當源節點希望中間的路由器對資料包進行一些特殊處理時,就可以使用資料流標籤,不支援資料流標籤的可以賦值為0; Payload Length: 16bits unsigned integer, ipv6的載荷長度,首部以外的長度(包括擴充套件首部) Next Header:8 bits 指明緊跟IP首部後面的下一個首部的型別 Hop Limit:8bits unsigned integer,在每個傳輸此包的節點處減1,如果跳數限制減到0,就拋棄此包 Source Address:128 bit 源地址 Destnation Address:128 bit 目的地址

二、擴充套件首部格式:


1、下面是幾個擴充套件首部的例子: +-----------------------+-------------------------------------------- |    ipv6    header          |   tcp header + data |                                     | |    next header = tcp   |   |                                     | +-----------------------+--------------------------------------------- +-----------------------+-----------------------+----------------------------- |    ipv6    header          |       routing header    |      tcp header + data |                                     |                                    | |    next header =         |    next header = tcp   | |    routing                    |                                     | |                                     |                                     | +-----------------------+------------------------+------------------------------- 一般情況下(hop-by-hop選項首部例外),擴充套件首部在資料包的傳遞過程中,中間的任何節點不會檢測和處理,一直到這個ipv6首部中目的地址所標識的那個節點。 特例:hop-by-hop選項首部,攜帶了包的傳送路徑中的每個節點都必須檢測和處理的資訊。包括源節點和目的節點。如果HOP-BY-HOP選項首部存在,就必須緊跟在ipv6首部後面。 2、擴充套件首部出現的順序 當在同一個包中使用多個擴充套件首部時,建議按如下順序排列這些擴充套件首部: ipv6 header hop-by-hop options header (HOP-BY-HOP首部) destionaion options header   (目的地址選項首部) routing header  (路由首部) fragment header  (分片首部) authentication header (認證首部) encapsulating security payload header 封裝安全載荷首部 destination options header    (目的地址選項首部) upper-layer header 上層協議首部 3、選項      在hop-by-hop和目的地址選項首部,包含若干個以型別-長度-值格式進行編碼的選項,格式如下:
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+------------------      | option type        | opt data len             |options data      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+------------------      Option type:     8bit,標識選項型別;
     Opt data len: 8bit 選項資料欄位的長度;
     Option data:可變長度,依選項型別而不同的資料;
     選項型別的最高兩個位元,指明當IPV6節點無法識別這個選項時的處理方式:
     00: 跳過這個選項,繼續處理首部
     01:丟棄這個包
     10:丟棄這個包,並給源地址傳送一個“引數錯誤”的icmp,同時指標指向無法識別的選項型別
     11:丟棄這個包,並且如果目的地址不是組播地址時,給源地址傳送一個引數錯誤的icmp,同時指標指向無法識別的選項型別
     選項的第三個位元:
     0:選項資料不會改變選路
     1:選項資料可能改變選路
 4、Hop-by-Hop選項頭部
       用IPV6首部的”下一個首部“為0(0x00)
來標識,此選項頭部用於傳送在資料包的傳送路徑中每個節點都必須檢測的可選資訊。格式如下:
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         |   next   header  |  hdr ext  len          |                                                           |
        |                                                                                                                       |         .                                                                                                                       .         .                                            options                                                              .
        .                                                                                                                       .          |                                                                                                                       |         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         Next header:   8bits, 緊跟在hop-by-hop選項首部後面的首部型別式
        Hdr  Ext  len:8 bits hop-by-hop選項首部的長度,不包括開始的8個八位組
        options: 可變長度,包含一個或多個TLV的選項
        5、路由首部
            next header = 43標識;用於IPV6源節點列出到目的節點的路徑中所應"訪問"的一個或多箇中間節點,格式如下:             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              |      next header |   Hdr Ext Len         |   Routing Type     |    Segments Left   |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              |                                                                                                                           |
             .                                                                                                                           .              .                                 type-specific data                                                            .              .                                                                                                                           .              |                                                                                                                           |             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+             Next header: 8bit 緊跟在路由首部後面的首部型別             Hdr Ext Len: 8bit  路由首部長度,不包括開始的8個八位組
            Routing Type: 8bit 標識路由頭部型別
            Segements left:8bit 到達目的節點前仍然應當訪問的中間節點數
            type-specific data: 可變長度,格式由路由型別(routing type)來決定
            6、分片首部
            next header = 44標識;在ipv6中,只有源節點才可以分片,中間路由器不能分片,當傳送的資料包長度大於MTU時,就需要分片,分片首部的格式如下:
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              |  next header     | reserved        |             fragment offset    |          Res        |      m     |
            +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              |                                               Identification                                                                  |
             +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+              next header: 8bit  同上
             reserved : 3bit,保留
             fragment offset: 13bit,分片偏移量。首部後面的資料相對於原包中可分片部分的開始位置處的偏移量
             Res:2bit,保留,用0填充,接收時忽略
             M flag:標識是否還有分片(1: 分片;0:最後一個分片)
             Identification:32 bit,識別符號

例子如下圖:


 7、目的選項首部             next header = 60標識,用於攜帶僅需要目的節點檢測的可選資訊。格式如下:
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+         |   next   header  |  hdr ext  len          |                                                           |
        |                                                                                                                       |         .                                                                                                                       .         .                                            options                                                              .
        .                                                                                                                       .          |                                                                                                                       |         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       next header: 8bit 同上       Hdr Ext Len:  8bit 目的選項首部長度,不包括開始的8個八位組
      options:可變長度。一個或多個TLV格式的選項
     8、無下一個首部:
            next header = 59 (0x3b)