IPv6包结构
      IPv6包由IPv6包头、扩展包头和上层协议数据单元三部分组成,见图1。
                                                                图1、IPv6包结构


      ·IPv6包头
      40字节固定长度,在本文的稍后部分将有详细论述。 
      ·扩展包头
      IPv6包头设计中对原IPv4包头所做的一项重要改进就是将所有可选字段移出IPv6包头,置于扩展头中。由于大多数IPv6扩展头不受中转路由器检查,因此改进后的IPv6包头可以提高路由器转发效率。
      IPv6扩展头可以没有,也可以有一个或多个。IPv6所做的另一个改进之处是:与IPv4选项不同,IPv6扩展头长度不固定,便于日后扩充新增选项,这一特征加上选项的处理方式使得IPv6选项能得以真正的利用。 
     ·上层协议数据单元(PDU)
      PDU由传输头及其负载(如ICMPv6消息、或UDP消息等)组成。而IPv6包有效负载则包括IPv6扩展头和PDU,通常所能允许的最大字节数为65,535字节,大于该字节数的负载可通过使用扩展头中的Jumbo Payload选项进行发送。 
      IPv6包头 
                                                             图2、IPv6包头格式


      IPv6包头长度固定为40字节,去掉了IPv4中一切可选项,只包括8个必要的字段,因此尽管IPv6地址长度为IPv4的四倍,IPv6包头长度仅为IPv4包头长度的两倍。 
      Version(版本号):4位,IP协议版本号,值 = 6。 
      Traffice Class(通信类别):8位,指示IPv6数据流通信类别或优先级。功能类似于IPv4的服务类型(TOS)字段。 
      Flow Label(流标记):20位,IPv6新增字段,标记需要IPv6路由器特殊处理的数据流。该字段用于某些对连接的服务质量有特殊要求的通信,诸如音频或视频等实时数据传输。在IPv6中,同一信源和信宿之间可以有多种不同的数据流,彼此之间以非“0”流标记区分。如果不要求路由器做特殊处理,则该字段值置为“0”。 
      Payload Length(负载长度):16位负载长度。负载长度包括扩展头和上层PDU,16位最多可表示65,535字节负载长度。超过这一字节数的负载,该字段值置为“0”,使用扩展头逐个跳段(Hop-by-Hop)选项中的巨量负载(Jumbo Payload)选项。 
      Next Header(下一包头):8位,识别紧跟IPv6头后的包头类型,如扩展头(有的话)或某个传输层协议头(诸如TCP,UDP或着ICMPv6)。 
      Hop Limit(跳段数限制):8位,类似于IPv4的TTL(生命期)字段。与IPv4用时间来限定包的生命期不同,IPv6用包在路由器之间的转发次数来限定包的生命期。包每经过一次转发,该字段减1,减到0时就把这个包丢弃。 
      Source Address(源地址):128位,发送方主机地址。 
      Destination Address(目的地址):128位,在大多数情况下,目的地址即信宿地址。但如果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口。
      附:常用的Next Header 字段值表


      IPv6扩展包头 
      IPv6将所有的可选项都移出IPv6包头,置于扩展头中。由于除Hop-by-Hop选项扩展头外,其他扩展头不受中转路由器检查或处理,这样就能提高路由器处理包含选项的IPv6分组的性能。 
       通常,一个典型的IPv6包,没有扩展头。仅当需要路由器或目的节点做某些特殊处理时,才由发送方添加一个或多个扩展头。与IPv4不同,IPv6扩展头长度任意,不受40字节限制,但是为了提高处理选项头和传输层协议的性能,扩展头总是8字节长度的整数倍。 
      目前,RFC 2460中定义了以下6个IPv6扩展头:Hop-by-Hop(逐个跳段)选项包头、目的地选项包头、路由包头、分段包头、认证包头和ESP协议包头。 
      1)Hop-by-Hop选项包头
      包含分组传送过程中,每个路由器都必须检查和处理的特殊参数选项。
      Hop-by-Hop选项包头中的选项描述一个分组的某些特性或用于提供填充。这些选项有:
·Pad1选项(选项类型为0),填充单字节。
·PadN选项(选项类型为1),填充2个以上字节。
·Jumbo Payload选项(选项类型为194),用于传送超大分组。使用Jumbo Payload选项,分组有效载荷长度最大可达4,294,967,295字节。负载长度超过65,535字节的IPv6包称为“超大包”。
·路由器警告选项(选项类型为5),提醒路由器分组内容需要做特殊处理。路由器警告选项用于组播收听者发现和RSVP(资源预定)协议。

      2)目的地选项包头 
      需要被中间目的地或最终目的地检查的信息。有两种用法:
·如果存在路由扩展头,则每一个中转路由器都要处理这些选项。
·如果没有路由扩展头,则只有最终目的节点需要处理这些选项。

      3)路由包头 
      类似于IPv4的松散源路由。IPv6的源节点可以利用路由扩展包头指定一个松散源路由,即分组从信源到信宿需要经过的中转路由器列表。

      4)分段包头 
      提供分段和重装服务。当分组大于链路最大传输单元(MTU)时,源节点负责对分组进行分段,并在分段扩展包头中提供重装信息。 
      IPv6包的不可分段部分包括:IPv6包头、Hop-by-Hop选项包头、目的地选项包头(适用于中转路由器)和路由包头。IPv6包的可分段部分包括:认证包头、ESP协议包头、目的地选项包头(适用于最终目的地)和上层协议数据单元PDU。 
      注:a、在IPv6中,只有源节点才能对负载进行分段。 b、IPv6超大包不能使用该项服务。

      5)认证包头 
      提供数据源认证、数据完整性检查和反重播保护。认证包头不提供数据加密服务,需要加密服务的数据包,可以结合使用ESP协议。

      6)ESP协议包头 
       提供加密服务。