支持IPv6地址聚合和重编号的DNS扩展( 三 )


一个前缀长度L1>0的A6记录假如查找一个具有前缀长度L2>L1的A6记录的域名,会出现错误 。假如解析器碰到这种情况,必须忽略这个具有不合法前缀长度的A6记录 。假如还能从有效的A6记录得到地址,解析器的健壮性将不让这个错误出现,但建议区域维护经常检查其区域有关的所有A6记录 。
3.1.3 语义表示
区域文件中A6资源记录RDATA部分的语义表示包括两个或三个由空格隔开的字段 。
前缀长度,表示为一个范围在0-128的十进制数 。
[AARCH]中定义的IPv6地址的语义表示(尽管一些首位和末位可能无关紧要) 。
域名,假如前缀长度不为0 。
假如前缀长度为0,域名必须为空 。假如前缀长度为128,IPv6地址可能为空 。就象3.1.1节描述的那样,地址前面部分等于前缀长度的位数应该隐式地(通过::符号)或显式地设为0 。
3.1.4 域名解析过程
为了得到IPv6地址或对应给定域名的地址,DNS客户端必须得到一个或多个完整的A6记录链,每个链以给定域名的记录开始,并包括那个记录中前缀名字对应的记录等,递归地以前缀长度为0的A6记录结束 。
假如前缀长度为0,域名必须为空 。假如前缀长度为128,IPv6地址可能为空 。就象3.1.1节描述的那样,地址前面部分等于前缀长度的位数应该隐式地(通过::符号)或显式地设为0 。通过从链中最初的A6记录得到每个位的具体位置,一个链能形成一个IPv6地址,这个链就象前缀长度描述的那样包括位的有效位置 。给定域名的所有IPv6地址包括该域名开头的所有完全A6记录得到的地址,丢弃在3.1.2节定义的有无效前缀长度的记录 。
假如一些A6查询失败并且其它查询成功,客户端可以为一个主机得到一个非空但不完全的IPv6地址 。很多情况下,这也是可以接受的 。A6 记录集的完整性可以总是通过检查来确定 。
3.2 反向查找的区域结构
事实上新方案的数据很少会在IP6.ARPA的情况下出现;仅仅第一级授权需要在那个域下出现 。假如最高级授权是通过NS记录而不是DNAME记录实现,更多授权级别能够置于IP6.ARPA下,但将在TLAs[AGGR]级别重编号时产生一些开销 。因此,这里认为所有地址空间授权应该通过DNAME机制而非NS机制来实现 。
此外,由于统一配置将简化地址授权的维护,建议地址和前缀信息直接以DNS标记“IP6”保存 。换而言之,遵从这个建议意味着“IP6”是支持IPv6反向查找的DNAME记录中RDATA字段中第一个标记 。
当授权边界与任何保留或必须为0的位相邻时,高级别的实体必须将那些位由自己控制,并只授权给低级别实体能授权的那些位 。
为了给已知IPv6地址的节点查找域名,DNS客户端必须按名字执行一个QCLASS=IN,QTYPE=PTR的查询,这个名字是由作为一个或多个位串标记[BITLBL]的128位地址形成的,在两个标准的“IP6.ARPA”标记后 。假如不能从服务器得到递归式服务,并且不能返回要得到的PTR记录,解析器必须反复地处理返回的在[DNAME]中描述的DNAME记录和[DNSCF]中描述的NS记录 。
4. 已有查询类型的修改
所有现有执行A类附加处理的查询类型如名字服务器(NS)、邮件交换(MX)、邮箱查询类型(MB)和实验性AFS数据库(AFSDB)以及路由直通类型,必须重新定义成能执行A、A6和AAAA类附加处理,并且A类包括最高优先级,AAAA类优先级别最低 。这个重定义就是说,当处理任何上述查询时,名字服务器可以增加任何有关的附加响应部分本地可用的IPv4和IPv6地址信息 。A6记录的递归式包括是可选的,这些记录被包含在附加处理部分中的A6记录所引用 。
5. 使用说明
本节举例说明前面定义的机制的使用 。这里提到的所以地址和域名都是假设的,仅仅用于描述目的 。为了描述的可读性,授权的例子只用4位边界 。这个规范与位的排列无关 。

推荐阅读