4.2 选项
当前已定义的扩展首部中的两个:Hop-by-Hop 选项首部和目的地址选项首部,携带不定数量的,以类型-长度-值(TLV)格式进行编码的选项,其格式如下:
选项类型
8 位标识符,标识选项的类型 。
选项数据长度
8 位无符号整数 。以八位组为单位的选项数据字段的长度 。
选项数据
可变长度字段 。依选项类型而不同的数据 。
首部中的选项必须严格按照它们在首部中出现的次序来处理;这样,接收方就不能搜索整个首部来寻找某个特定类型的选项,并且在处理所有前面的选项之前处理它 。选项类型标识符以如下规则编码: 其最高两位指定了当IPv6节点无法识别这一选项类型时所必须的反应:
00
跳过这一选项,继续处理首部 。
01
抛弃这个包
10
抛弃这个包,并且不管包的目的地址是不是组播地址,都给包的源地址发送一个 ICMP "参数存在问题",编码 2 的报文,指针指向无法识别的选项类型 。
11
抛弃这个包,并且只有当包的目的地址不是组播地址时,才给包的源地址发送一个 ICMP "参数存在问题",编码 2 的报文,指针指向无法识别的选项类型 。
选项类型标识符的第三位指明了选项数据是否可以改变到最终目的地址的选路 。若存在认证首部,在包计算或校验认证值时,可改变选路的选项的整个数据字段都必须当作全零的八位组来处理 。
0 - 选项数据不会改变选路
1 - 选项数据可能改变选路
上述的前三位应作为选项类型的一部分,而不能独立于选项类型之外 。这就是说,某一特定的选项是由全部 8 位的选项类型标识符标识的,而并不只是选项类型中的后面 5 位 。Hop-by-Hop 选项首部和目的地址选项首部使用相同的选项类型编码空间 。尽管如此,某一特定类型的选项的规范可以限制其只用于两者之一 。有些选项可能具有明确的对齐要求,以保证选项数据字段中的多八位组值能够落在其自然边界上 。选项的对齐要求用符号 xn y 来说明,表示选项类型必须出现在从首部开始位置处 x 个八位组的整数倍加上 y 个八位组的位置上 。例如: 2n表示从首部开始处 2 个八位组的整数倍的偏移量 。8n 2 表示从首部开始处 8 个八位组的整数倍加上 2 个八位组的偏移量 。有两种填充选项,用来在需要时对齐后续的选项,以及把整个首部填充成 8 个八位组的整数倍长 。所有的IPv6实现都必须能够识别这些填充选项 。
填充1 选项 (对齐要求: 无)
填充1 选项是一种非凡情况 -- 它没有长度字段和数值字段 。填充1 选项用于在首部的选项区填充一个八位组 。假如需要填充多于一个的八位组,那么就应该使用下面要介绍的填充N 选项,而不是多个填充1 选项 。
填充N 选项 (对齐要求: 无)
填充N 选项用于在首部的选项区填充两个或两个以上的八位组 。对于 N 个八位组的填充,选项数据长度字段应包含值 N-2,选项数据由 N-2 个零值八位组组成 。
4.3 Hop-by-Hop 选项首部
Hop-by-Hop 选项首部用于传送必须由包的传送路径中的每个节点检测的可选信息 。Hop-by-Hop 选项首部由IPv6首部中"下一个首部"字段值为 0 来标识,并且具有如下的格式:
下一个首部
8 位选择器 。标识紧跟在Hop-by-Hop 选项首部后面的首部的类型 。使用与 IPv4 协议字段 相同的数值 。
首部扩展长度
8 位无符号整数 。以 8 个八位组为单位的 Hop-by-Hop选项首部的长度,不包括开始的 8 个八位组 。
选项
可变长度字段,其长度须使整个 Hop-by-Hop 选项首部的长度为 8 个八位组的整数倍 。包含一个或多个 TLV 编码的选项,如第 4.2 章中所述 。
推荐阅读
- POP3 邮局协议-版本3
- Internet Protocol Internet协议
- ICMP Internet控制信息协议
- 动态主机配置协议
- 网络通信协议
- CIP 传输协议
- Daytime协议
- OSPF协议
- PPP协议
- MPLS 多协议标志交换基本原理