|
|
|
|
|
|
|
|
IPv6的主头必须出现在所有的扩展头之前。扩展头是可选的,可以组合使用,也可以一个都不用。在单个的包中,每种类型的扩展头只能出现一次。当同时使用多个扩展头时,它们必须严格遵守上面列举的顺序。例如,如果同时使用了路由扩展头、验证扩展头和安全负载封装扩展头,那么包头的域必须按照如下的顺序出现:①IPv6的主头;②路由扩展头;③验证扩展头;④安全负载封装扩展头;⑤TCP或UDP头;⑥应用数据,如下图所示。在每一个扩展头中,第一个字节为一个8位的"下一个头(Next Header)"字段,该字段用以指明后面紧跟的是哪个头。在最后一个扩展头中,"下一个头"域包含的值为59,表明该扩展头是最后一个。在上面的例子中,路由扩展头中的"下一个头"域指出后面紧跟的是验证扩展头;验证扩展头的"下一个头"域指出后面紧跟的是安全负载封装扩展头。除分段扩展头之外,在"下一个头"域后面紧跟着的是一个8位的"头扩展长度"域,用以指明该扩展头的长度。每个扩展头的长度必须为8的倍数个字节。
|
|
|
|
|
步跳扩展头用于大数据的传输,例如多媒体视频数据包。其应用数据负载可以从65 535字节到4亿字节。数据包所经过的每一个路由都将读取步跳扩展头,这样会略微增加路由器的处理延迟。
|
|
|
路由扩展头使用按顺序排列的路由地址来标识整个路由,用户可以通过配置该头达到让包沿相同路径传输的目的。这种包可用于某些特殊的情况,例如当某条路径上的路由器出现故障的时候。
|
|
|
在IPv6中,每个发送节点通过使用搜索包,运行一个最大传输单元(MTU)路径发现的过程,便可以确定接收网络所允许的最大包尺寸。该路径发现产生的信息包括是否有某个路由器出现故障和目标网络是否需要较小的包(IPv6包最多可以包括1280个8位字节)。当向使用小于1280个8位字节包的网络上发送包时,IPv6便对包进行分段。根据MTU路径发现所获取的信息,发送节点将数据包进行分段,在包头中添加分段扩展头,告知接收者包是如何分段的。将数据包分段的能力在从以太网向令牌环网发送包或者在具有不同大小包的快速以太网和千兆以太网之间传输数据时尤为重要。当把一个包进行分段后,每一个段都分配到了一个分段组内的标识符(每组是唯一的),该标识符含有32位标识符域,这样在接收数据的时候,不同组的分段就可以很容易地被区分开。
|
|
|
验证扩展头可用于确认数据包的完整性(IP头、TCP头和数据),即保证接收到的数据包和发送的数据包是一致的。每一个扩展头的每一个域以及负载数据都需要进行验证。如果在数据包发出后某个域中的值有所改动(对于步跳计数来说肯定要发生变化,因此步跳计数除外),该字域的验证值则为0。通常,验证扩展头和安全负载封装扩展头是一起使用的,这样便可以对包进行验证和加密/解密。当使用这两个扩展头时,在接收节点上将做如下处理。
|
|
|
(1)首先验证IP头,然后验证TCP头(如果IP头或者TCP头被加密,则首先需要进行解密)。
|
|
|
(2)在验证之后,使用安全负载封装扩展头中的信息对负载进行解密。
|
|
|
|
在有安全需求的网络上,可以使用安全负载封装扩展头对IP包负载或者TCP/IP头负载进行加密,该扩展头支持与数据加密标准(DES)相兼容的密钥加密技术。
|
|
|