📄 rfc1883.txt
字号:
4.1 扩展报头顺序
当超过一种扩展报头被用在同一个分组里时,可推荐的是那些报头按下列顺序出现:
IPv6报头
逐跳选项报头
目的选项报头(注1)
路由报头
分片报头
授权报头(注2)
封装安全有效载荷(注2)
目的选项报头(注3)
上层报头
注 1:指那些将被第一个目的地址处理的选项,这个目的地址出现在IPv6目的地址
域里的选项应加上随后列在路由报头里。
注 2:考虑授权和封装安全有效载荷报头相关顺序的附加推荐在[RFC-1827]里给出。
注 3:指那些将仅被分组最终目的地处理的选项。
除了那些目的选项报头将最多出现两次(一次在路由报头之前,另一次在上层报头之前),每
个扩展报头将最多出现一次。
如果上层报头是另一个IPv6报头(以IPv6的形式被隧穿或被封装在IPv6里)的话,那它可
能会被它自身的扩展报头紧接着,这两个报头属于同一级别的推荐。
如果并且当别的扩展报头被定义的话,那么它们相对于上面所列报头的顺序约束必须被描
述。
除了只被约束在立即出现在IPv6报头之后的逐跳选项报头之外,IPv6节点必须接受以及试
图处理同一分组里以任何顺序并发生在任何时间的扩展报头。但是,粘有上述推荐顺序
IPv6分组源是已经得以仔细考虑过的,直到并且除非以后的规定能修订那个推荐顺序。
4.2 选项
当前定义过的两个扩展报头--逐跳选项报头和目的选项报头--以下面的格式携有被编码
为“选项”的类型长度值(type-length-value(TLV))的变量
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 选项类型 | 选项数据长度 | 选项数据
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
选项类型 选项类型的8位标识符。
选项数据长度 8位未标记整数。此选项的选项数据长度域以8位字节的形式。
选项数据 可变长度域。选项类型精确数据。
在报头里的选项选项顺序必须严格按它们出现在报头里的顺序来处理;例如,一个接收者
不能搜索报头寻找一种特殊选项并在处理所有先于它的选项之前优先处理。
选项类型标识符是被内在编码的以便如果正在处理IPv6的节点没有承认选项类型的话,则
标识符最高两位字节能说明这个行为。
00 - 跳过这个选项并继续处理报头。
01 - 抛弃此分组
10 - 抛弃此分组并且无论此分组目的地址是不是一个广播地址都发送一ICMP参数
问题(代码2)报文给分组的源地址以指出未被承认的选项类型。
11 - 抛弃此分组并且仅假使分组目的地址不是广播地址时才发送ICMP参数问题
(代码2)报文给分组的源地址以指出未被承认的选项类型。
选项类型的第三最高位字节表明那个选项的选项数据是否能改变中间选路至分组的最后
目的。当授权报头出现在分组里时,对于任何其数据可能改变中间选路的选项来说,在计
算或检验分组授权值时它的全部选项数据域必须被看作零值的字节。
0 - 选项数据不会改变中间选路
1 - 选项数据必须改变中间选路
单个选项可能有特殊的队列要求来确保选项数据域里的多字节值指向本来边界。一个选项
的队列要求是使用符号xn+y来指定的,意味着选项类型出现必须出现在从报头开始的一个
x个字节相乘的整数再加上y个字节。例如:
2n 意味着任何从报头开始的2个8位字节的偏移。
8n+2 意味着任何从报头开始的8个8位字节的偏移再加上2个8位字节。
当必须要排列后来的选项并且衬垫所包含的报头在长度上达到8个8位字节的倍数时,则有
两个填料选项要使用。这些填料选项必须被所有IPv6实现所承认:
填料1 选项 (队列要求:无)
+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+
注意!填料1选项的格式是一种特殊形式--它没有长度和值域。
填料1选项是被用来把一个8位字节的填料插入报头的选项区域的。如果需要超过一个8位
字
节的填料的话,那么填料n选项,正如下面所述,应当被使用,而不是多个填料1选项相乘。
填料N选项 (队列要求:无)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | 选项数据长度 | 选项数据
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
填料N选项是被用来把两个或更多8位字节的填料插入报头的选项区域的。对N个8位字节
的填料来说,选项数据长度域包含值为N-2,并且选项数据由N-2个零值的8位字节组成。
附录A包含设计新选项的格式化向导。
4.3 逐跳选项报头
逐跳选项报头用来携带必须被沿着分组传输路径的每个节点所检查的优化信息。逐跳选项
报头是用IPv6报头里为零值的下一报头来标识的,并且有下列格式:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 下 一 报 头 | 报头扩展长度 | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
. .
. 选 项 .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
下一报头 8位选择器。标识紧挨着逐跳选项报头的报头类型。使用
和IPv4协议域的相同值[如RFC-1700所述]。
报头扩展长度 8位未标记整数。逐跳选项报头长度是以8字节为单元的,
不包括头8个字节。
选项 可变长度域,其长度可使逐跳选项报头完整为8字节的整数
倍。正如4.2节里形容的一样包含一个或多个TLV编码选项。
在第4.2节里有对填料1和填料N的附加说明,下面是逐跳选项的定义:
巨有效载荷选项(队列要求:4n+2)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 194 | 选项数据长度=4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 巨 有 效 载 荷 长 度 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
巨有效载荷选项用来把大于65,535字节的有效载荷和IPv6分组一起发送。巨有效载荷长度
就是以字节为单位的分组长度,除去IPv6报头但包括逐跳选项报头;其一定大于65,535个
字节。如果一个分组和包含少于或等于65,535字节巨有效载荷长度的巨有效载荷选项一起
被收到的话,那么一个代码为零并指向无效巨有效载荷长度域的高位字节的ICMP参数差错
报文应被发送到分组的源发地。
IPv6里的有效载荷长度域应在携带有巨有效载荷选项的每个分组里被设置为零。如果分组
和一当前的巨有效载荷选项以及一非零IPv6有效载荷长度域一起收到,则一个代码为零并
指向巨有效载荷选项的选项类型域的ICMP参数差错报文应被发送到分组的源发地。
巨有效载荷选项不能用在携带分片报头的分组里。如果在包含有效巨有效载荷选项的分组
里遇到分片报头,则一个代码为零并指向分片报头首字节的ICMP参数差错报文应被发送到
分组的源发地。
一个不支持巨有效载荷选项的实现有到链路的接口,其链路MTU大于65,575字节(40字节
的IPv6加上65,535字节的有效载荷)。
4.4 路由报头
IPv6源发地使用路由报头来列出到分组目的地址途中要“访问”的中间节点。这个功能与
IPv4的源路由选项是非常相似的。路由报头是由紧接着继续报头里值为43的下一报头来定
义的,格式如下:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 下一报头 | 报头扩展长度 | 路由类型 | 遗 留 部 分 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. .
. 特 殊 类 型 数 据 .
. .
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
下一报头 8位选择器。标识紧随着路由报头的报头类型。和IPv4协议域里
使用的值一样[如RFC-1700里所述一样]
扩展报头长度 8位未标记整数。长度为8个字节的路由报头,不包括头8个字
节。
路由类型 特定路由报头变量的8位标识符。
遗留部分 8位未标记整数。剩下的路由部分数目,即被清楚列出在抵达最
终目的地之前仍然需要访问的中间路由的数目。
特殊类型数据 可变长度域,其格式由路由类型决定,并且其长度能使完整的
路由报头是8个字节长度的整数倍。
假如节点正在处理一收到的分组时遭遇带有未被承认路由类型值的路由报头,则此节点所
要求的行为依靠遗留部分域值,如下:
如果遗留部分是零,则节点必须忽略路由报头并继续处理分组里的下一个报头,这个
报头的类型是由路由报头里的下一报头域来标识的。
如果遗留片段不是零,则节点必须抛弃此分组并发送代码为零且指向未承认路由类型
的ICMP参数差错代码报文到分组的源发地址。
零路由报头类型有下列格式:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 下一报头 | 报头扩展长度 | 路 由 类 型=0 | 遗 留 片 段 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 预 留 | 严格/宽松位图 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ + |
|
+ 地址[1] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 地址[2] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. . .
. . .
. . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ +
| |
+ 地址[n] +
| |
+ +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -