假如分段剩余值非零, 节点必须抛弃这个包, 并且给包的源地址发送一个 ICMP
"参数存在问题", 编码 0 的报文, 指针指向无法识别的路由类型.
假如中间节点在处理路由首部之后, 确定应将包传送到一个链路 MTU 小于此包的
尺寸的链路中去, 那么中间节点必须抛弃此包, 并且给包的源地址发送一个 ICMP
"包太大"的报文.
类型 0 的路由首部具有如下格式:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
下一个首部 首部扩展长度路由类型 = 0;;分段剩余;;;;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
保;;;;留
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;;;;
地;;址 [1];;
;;;;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;;;;
地;;址 [2];;
;;;;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
.;;;;.;;;;.
.;;;;.;;;;.
.;;;;.;;;;.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;;;;
地;;址 [n];;
;;;;
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
下一个首部8 比特选择器.;;标识紧跟在路由首部后面的首部的类型.
使用与 IPv4 协议字段 [RFC-1700 及后续协议] 相同的数
值.
首部扩展长度 8 比特无符号整数.;;以 8 个八位组为单位的路由首部的
长度, 不包括开始的 8 个八位组.;;对于类型 0 的路由首
部, 首部扩展长度等于首部中地址数量的两倍.
路由类型;;0.
分段剩余;;8 比特无符号整数.;;剩余的路由分段的数量.;;也就是在
到达最终的目的节点之前仍然应当访问的, 明确列出的中
间节点的数量.
保留 32 比特保留字段.;;传输时初始化为零; 接收时忽略.
地址[1..n]128 比特地址向量, 从 1 到 n 编号.
不答应组播地址出现在类型 0 的路由首部中, 也不答应出现在携带类型 0 路由首
部的包中的 IPv6 目的地址字段中.
直到包到达 IPv6 首部中的目的地址字段所标识的那个节点才对路由首部进行检测
和处理.;;在这个节点调用路由首部处理模块, 并且对于路由类型 0, 执行下面的
算法:
if 分段剩余 = 0 {
继续处理包中的下一个首部, 其类型由路由首部中"下一个首部"字段所标识
}
else if 首部扩展长度为奇数 {
给源地址发 鸵桓?ICMP "参数存在问题", 编码 0 的报文, 指针指向首部
扩展长度字段, 并且抛弃此包
}
else {
计算出n, 也就是路由首部中的地址数量.;;方法是首部扩展长度除以 2
if 分段剩余比 n 大 {
给源地址发送一个 ICMP "参数存在问题", 编码 0 的报文, 指针指向分段
剩余字段, 并且抛弃此包
}
else {
分段剩余减一;
计算 i, 也就是地址向量(地址列表)中要"访问"的下一个地址, 方法是 n 减
分段剩余
if 地址[i] 或者 IPv6 目的地址是组播地址 {
抛弃此包
}
else {
交换 IPv6 目的地址和地址[i]
if IPv6 跳数限制小于等于 1 {
给源地址发送一个 ICMP "超时 – 传输超过跳数限制" 的报文, 并且
抛弃此包
}
else {
跳数限制减一;
向 IPv6 模块重新提交此包, 传给新的目的节点
}
}
}
}
作为上述算法的一个例子, 考虑这样一种情况: 源节点 S 给目的节点 D 发送一个
包, 用路由首部来使这个包经过中间节点 I1, I2 和 I3.;;在传送路径的每段中,
推荐阅读
- IPv6/IPv4协议转换的试验
- 一种新IPv6任播地址解析协议及应用
- 改进的移动IPv6协议分析
- 毕业三方协议必须签吗
- ADSL网络协议PPPOE
- 二 第三章广域网协议配置命令
- 在WIN XP和WIN 2K中安装IPv6协议
- 一 第三章广域网协议配置命令
- 四 第三章广域网协议配置命令
- 一 第四章网络协议配置命令