摘要:通信工程师互联网技术IPv6的扩展报头:IPv4报头中存在可变长度的选项,利用它可以处理具有指定路径控制、路径记录、时戳(timestamp)和安全等选项的特殊分组。但因这种分组会影响网络的性能,故选项逐渐被废弃。
4.5.2 IPv6的扩展报头
4.5.2.1 从选项到扩展报头
IPv4报头中存在可变长度的选项,利用它可以处理具有指定路径控制、路径记录、时戳(timestamp)和安全等选项的特殊分组。但因这种分组会影响网络的性能,故选项逐渐被废弃。
然而需要作特殊处理的分组是不可缺少的。例如:利用指定路径控制使分组通过特定路径或指定由接收方进行特殊的操作时就需进行特殊的处理。根据IPv4的运用经验,IPv6中规定了使用扩展报头(extensionheader〉的特殊处理。除了减少IPv6数据报转发时选项的影响外,IPv6规范使得对于新的扩展和选项的定义变得更加简单。在需要的时候可能还会定义其他的选项和扩展。
IPv6采用了一个固定基本报头和后面一组可选的扩展报头的模式,它实际上是一般性和有效性折中的产物。为了保证彻底地通用,IPv6还需要包含支持分片(fragmentation)、信源路由以及鉴别等功能;然而,为所有这些功能在数据报头中安排固定的字段是不划算的,因为大多数数据报并不使用所有的功能,而且IPv6的巨大地址空间也使数据转发的有效性减弱。例如,当仅仅在一个单一的局域网中发送数据报时,一个包含了空地址字段的数据报报头会在每一个帧中占相当大的比重。
IPv6的扩展报头的模式与IPv4任选项相似。信源可以选择在一个给定的数据报中要包含或忽略哪些扩展报头,因此扩展报头的结构设计具有很大的灵活性。
在IPv6中,可选的internet层信息在单独的报头中编码,这些报头可以放置在IPv6分组里基本报头和高层报头之间,这些报头就是扩展报头。IPv6中定义了一系列扩展报头。IPv6分组中每一个基本报头和扩展报头都包含一个下一个报头(nextheader)字段,每一个扩展报头都由特定的下一个报头值(nextheadervalue)来确定。每一个中间的路由器以及最终目的站上的软件需要对数据报进行处理,它们必须使用nextheadervalue来对数据报进行分析。在以下的例子中,可以看到一个IPv6分组可以携带零个、一个或多个扩展报头,每一个扩展报头都由其前面报头的nextheadervalue来确定。
在图4-21中,有三个数据报,它们分别是:(a)只有一个基本报头;(b)一个基本报头和一个扩展报头:(c)一个基本报头和两个扩展报头。每个报头的nextheader字段指明了接下去的报头类型。
在一个分组投送路径上的所有节点都不检查或处理扩展报头,直到此分组到达由其基本报头中的信宿地址字段指明的目的节点(在multicast情况下是multicast节点中的每一个)后才由目的节点处理。在目的节点中,对分组的IPv6基本报头进行多路分解?调用对应的功能来处理第一个扩展报头,当没有扩展报头时则直接处理高层报头。每个扩展报头的内容和语法格式决定是否要继续处理下一个报头。因此,节点必须严格地按照扩展报头在分组中出现的次序来处理它们。例如,信宿节点不能对一个分组进行预览,以便在处理其他扩展报头之前先处理某一类扩展报头,当然,对于只有一个基本报头和数据的IPv6数据报来说,对它进行分析的效率同分析IPv4数据没有什么两样。
有一种例外情况,这就是当前一个报文段是跳到跳选项头(hopby-hopoptionshead-er),这个扩展报头中携带的信息必须被分组投送路径上的每一个节点检查和处理,包括信源节点和信宿节点。跳到跳选项头如果出现在IPv6报文中,则它一定紧接着IPv6基本报头,由IPv6基本报头中nextheader字段中的零值表明下一个报头是跳到跳选项头。
如果处理报头时,节点被要求处理下一个报头,但当前报头中的nextheadei值却无法由节点识别,则此节点必须丢弃分组并且向信源发送一个ICMP代码字段为1(发现无法识别的下一个报头类型)的ICMP参数出错报文,同时ICMP指针宇段包含原来分组中无法识别的值的偏移量。如果一个节点发现在一个非IPv6基本报头的报头中nextheader宇段值为0,则节点将采取前述同样的行为。
每一个扩展报头都由八比特组组成,八比特组的个数是8的整数倍,以便保持随后的报头的八比特组与8对齐。目前IPv6定义的扩展报头包栝:
跳到跳选项报头(hop-by-hopoptionsheader)携带分组传递路径上需要每一个节点检査的信息。
路由报头(routingheader)被IPv6源节点用来指定到达分组目的地途中必须要访问的中间节点,实现类似IPv4中源路由和记录路由选项的功能。
分段报头(fragmentheader)用于IPv6源节点发送一个比通往目的地路径上的MTU更大的分组时使用。IPv6的分组和重组是端到端的。
信宿选项报头(destinationoptionsheader)携带仅仅需要分组发送的目的地检査的信息。
认证报头(authenticationheader)提供无连接完整性(connectionlessintegrity)和数据源认证(dataoriginauthentication)[RFC2402]。
封装安全载荷报头(encapsulatedsecuritypayloadheader)提供机密性(confidenti?ality),也可提供无连接完整性和数据源认证[RFC2406]。
返回目录:
编辑推荐:
通信工程师备考资料免费领取
去领取