11.2. <zone_id> 部分 (The <zone_id> Part)
在文本表示中,<zone_id> 部分应该能够识别地址作用域的特定区域。尽管如第 6 节所述,区域索引应该包含足够的信息来确定作用域并在所有作用域中是唯一的,但该格式的 <zone_id> 部分不必包含作用域。这是因为 <address> 部分应该指定适当的作用域。这也意味着 <zone_id> 部分不必在所有作用域中都是唯一的。
由于具有这种宽松的属性,实现可以使用方便的表示作为 <zone_id>。例如,为了表示链路索引 2,实现可以简单地使用 "2" 作为 <zone_id>,这比包含 "link" 作用域的其他表示更具可读性。
当实现解释该格式时,它应该从 <zone_id> 部分和 <address> 部分指定的作用域构造包含作用域的"完整"区域索引。(请记住,如第 6 节所述,区域索引本身应该包含作用域。)
实现应该 (SHOULD) 至少支持作为 <zone_id> 的非负十进制整数数值索引。默认区域索引(通常应该是 0,见第 6 节)包含在整数中。当 <zone_id> 是默认值时,可以省略分隔符字符 "%" 和 <zone_id>。类似地,如果给出 IPv6 地址的文本表示而没有区域索引,则应将其解释为 <address>%<default ID>,其中 <default ID> 是 <address> 所具有作用域的默认区域索引。
实现可以 (MAY) 支持其他类型的非空字符串作为 <zone_id>。但是,这些字符串不得与分隔符字符冲突。附加字符串的精确格式和语义是实现相关的。
这些字符串的一个可能候选是接口名称,因为接口可以唯一地消除任何作用域的歧义。特别是,接口名称可以用作接口和链路的"默认标识符",因为默认情况下,如第 6 节所述,接口与每个这些作用域之间存在一对一映射。
实现也可以将接口名称用作大于链路的作用域的 <zone_id>,但这种使用可能会造成一些混淆。例如,当多个接口属于同一(组播)站点时,用户会对应该使用哪个接口感到困惑。此外,从地址到名称的映射函数在使用接口名称作为区域索引打印地址时会遇到同样的问题。本文档没有指定应该如何处理这些情况,而是留给实现相关。
不能假设索引在区域内的所有节点中都是通用的(见第 6 节)。因此,该格式必须 (MUST) 仅在节点内使用,并且不得 (MUST NOT) 在线路上发送,除非解释该格式的每个节点都同意其语义。