IPV6详解 --转

一、IPv6基本头

     IPv6基本头标包含40字节的头标,包括如下域:

 
IPV6详解 --转_第1张图片
 
     1.  Version (版本号),4bit,表明当前IP的协议版本,需要置为6

     2.  Traffice Class (业务量等级),8bit,指示IPv6数据流通信类别或优先级。功能类似于IPv4的服务类型(TOS)字段。

     3.  Flow Label  (流标记),20bit,20位,IPv6新增字段,标记需要IPv6路由器特殊处理的数据流。该字段用于某些对连接的服务质量有特殊要求的通信,诸如音频或视频等实时数据传输。在IPv6中,同一信源和信宿之间可以有多种不同的数据流,彼此之间以非“0”流标记区分。如果不要求路由器做特殊处理,则该字段值置为“0”。

     4.  Payload Length  (载荷长度),16bit,16位负载长度。负载长度包括扩展头和上层PDU,16位最多可表示65,535字节负载长度。超过这一字节数的负载,该字段值置为“0”,使用扩展头逐个跳段(Hop-by-Hop)选项中的巨量负载(Jumbo Payload)选项。

     5.  Next Header  (下一头标),8bit,指明基本头标的下一个头标,识别紧跟IPv6头后的包头类型,如扩展头(有的话)或某个传输层协议头(诸如TCP,UDP或着ICMPv6)

     6.  Hop Limit  (跳数限制),8bit,类似于IPv4的TTL(生命期)字段。与IPv4用时间来限定包的生命期不同,IPv6用包在路由器之间的转发次数来限定包的生命期。包每经过一次转发,该字段减1,减到0时就把这个包丢弃

     7.  source address (源地址),128bit,发送方主机地址

     8.  destination  (目标地址),128bit,在大多数情况下,目的地址即信宿地址。但如果存在路由扩展头的话,目的地址可能是发送方路由表中下一个路由器接口。

 

二、IPv6扩展头

      将IPv4选项合并到标准IPv4头比较复杂。IPv4头最短为20字节,最长为60字节,附加数据包含IPv4选项,必须由路由器翻译以对IP包进行处理。这种方法有两个影响:其一,路由器实现时往往对附加选项的包进行分流处理,因此导致处理效率降低;其二,由于选项导致性能下降,应用开发者倾向于不使用选项。

      使用IPv6扩展头,可以在不影响性能的前提下实现选项。开发者可以在必要时使用选项,而无须担心路由器会对带扩展选项的包区别对待,除非是设置了选路扩展头或逐跳选项。即使设置了这两个选项,路由器仍可以进行必要的处理,比使用IPv4选项容易。


     扩展头的标识

     所有的IPv6头长度都一样,并且看起来几乎相同,唯一的区别在于下一个头字段。在没有扩展头的IPv6包中,此字段的值表示上一层协议 。即,若IP包中含有TCP段,则下一个头字段的8位二进制值是6(源自RFC1700(已指派号码));若IP包中含有UDP数据报,这个值就是17。表7-1中列举了下一个头字段的某些值。
     下一个头字段值指明是否有下一个扩展头及下一个扩展头是什么,因此,IPv6头可以链接起来,从基本的IPv6头开始,逐个链接各扩展头。这种头连接链的构成见图7-1。图中第一个IPv6包没有扩展头;第二个包有选路扩展头,其后为TCP头和包的其余部分;最后一个包有更复杂的头链,IPv6头后面有分段扩展头,然后是身份验证扩展头,后接ESP扩展头,最后是TCP头和包的其余部分。


下表IPv6下一个头字段的一些可能值,用以指明扩展头



IPV6详解 --转_第2张图片
 
 

IPV6详解 --转_第3张图片
 
         三个不同的IPv6包:第一个包没有扩展头,第二个包有一个选路扩展头,第三个包有三个扩展头

     扩展头的顺序

      一个IPv6包可以有多个扩展头,但是,只有一种情况允许同一类型的扩展头在一个包中多次出现,而且各扩展头在链接时有一个首选顺序。RFC1883规定,扩展头应该依照如下顺序:

    (1)IPv6头。

    (2)逐跳选项头。

    (3)目的地选项头(应用于IPv6目的地址字段的第一个目的地和选路头中所列的附加目的地中)。

    (4)选路头。

    (5)分段头。

    (6)身份验证头。

    (7)ESP头。

    (8)目的地选项头(当使用选路头时,仅应用于包的最终目的地)。

    (9)上层头。从以上顺序可知,在同一个IP包中只有目的地选项扩展头可以多次出现,并且仅限于包中包含选路扩展头的情况。

 

     上述顺序并不是绝对的。例如,前面已提及,在包的其余部分要加密时,ESP头必须是最后一个扩展头。同样,逐跳选项优先于所有其他扩展头,因为每个接收IPv6包的节点都必须对该选项进行处理。

建立新的选项

扩展头必须通过IPv6头的下一个头字段来确认。这意味着由于这个字段为8位,最多只能有256个不同值。即使将来该字段的可能取值的个数有所减少,也必须支持上一层头的所有可能值。即,该值不仅对扩展头进行标识,还标识着封装在IP包内的所有其他协议 。因此,目前已经指派了很多值,未指派的值相当有限。

IPv6用于扩展头的某些协议 标识符沿自IPv4,例如身份验证头和ESP头。到目前为止,已指派了很多扩展头,但也允许通过逐跳选项扩展头和目的地选项扩展头来建立新的选项。 
 

      除了为下一个头字段保存协议 值以外,通过使用这些选项头扩展,很容易健壮地实现新选项。如果使用一个全新的头类型来发送IP包,若目的节点支持新的头类型,则一切顺利;反之,如果新的头类型对目的节点是未知的,则目的节点只能丢弃该包。另一方面,所有的IPv6节点都必须支持逐跳选项扩展头、目的地选项扩展头以及一些基本选项。此时,如果目的节点收到带有目的地选项扩展头的包,即使不支持该扩展头中的选项,它也能够响应。即,这些选项可以向接收节点请求适当的响应,即使接收节点对选项并不理解。例如,选项可能是“做X,如果不理解X,就丢弃此包”这样的形式,或者可以是“做X,如果不理解X,就跳过此选项,并完成对扩展头的处理”。选项也可以请求目的节点发回一个ICMP出错报文,以指明目的节点不理解此选项。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/macrossdzh/archive/2010/06/30/5704672.aspx

你可能感兴趣的:(协议栈)