剖析IPv6时代的域名系统( 二 )


(3) 多播地址(Multicast Address):用来标识一组网络接口(通常属于不同的节点) 。发送到多播地址的数据包将发送给本组中所有的网络接口 。在IPv6中没有广播地址(Broadcast Address),用多播地址取代 。其中,单播地址按照地址的传输范围分为可聚合全局单播地址(Aggregatable Global Unicast Addresses)、NSAP地址、IPX层次地址、站点本地地址(Site-Local Address)和链路本地地址(link-Local Address)等 。所有的网络接口至少要有一个链路本地地址,同时还可以拥有多个地址(包括单播地址,任播地址和多播地址) 。
IPv6的地址在表示和书写时,用冒号将128比特分割成8个16比特的部分,每个部分包括4位的16进制数字 。例如:
1080:0000:0000:0000:0008:0800:200C:123A
在每个4位一组的十六进制数中,如其高位为0,则可省略 。例如将0800写成800,0008写成8,0000写成0 。于是1080:0000:0000:0000:0008:0800:200C:123A可缩写成1080:0:0:0:8:800:200C:123A 。为了进一步简化,规范中导入了重叠冒号的规则,即用重叠冒号置换地址中的连续16比特的0 。例如,将上例中的连续3个0置换后,可以表示成如下的缩写形式: 1080::8:800:200C:123A 。重叠冒号的规则在一个地址中只能使用一次,例如:地址0:0:0:BA98:7654:0:0:0可缩写成::BA98:7654:0:0:0或0:0:0:BA98:7654::,但不能记成::BA98:7654:: 。
另外,可以用“IPv6地址/前缀长度”来表示地址前缀 。这个表示方法类似于CIDR中IPv4的地址前缀表示法 。这里IPv6地址是上述任一种表示法所表示的IPv6地址,前缀长度是一个十进制值,指定该地址中最左边的用于组成前缀的比特数 。例如,对32比特的前缀10800000(十六进制),可以如下表示:
1080::8:800:200C:123A/32
1080::/32
四、DNS对IPv6地址层次性的支持
IPv6可聚合全局单播地址是在全局范围内使用的地址,必须进行层次划分及地址聚合 。它的层次结构如下表所示:
其中:
FP(001):用于可聚合全局单播地址的格式前缀(FP:Format Prefix)(3比特);
TLA ID:顶级聚合标识符(Top-Level Aggregation Identifier);
RES:为将来使用而保留;
NLA ID:次级聚合标识符(Next-Level Aggregation Identifier);
SLA ID:站点级聚合标识符(Site-Level Aggregation Identifier);
INTERFACE ID:接口标识符 。
IPv6全局单播地址的分配方式如下:顶级地址聚合机构TLA(即大的ISP或地址治理机构)获得大块地址,负责给次级地址聚合机构NLA(中小规模ISP)分配地址,NLA给站点级地址聚合机构SLA(子网)和网络用户分配地址 。IPv6地址的层次性在DNS中通过地址链技术可以得到很好的支持 。下面从DNS正向地址解析和反向地址解析两方面进行分析 。
1.正向解析
IPv4的地址正向解析的资源记录是“A”记录 。IPv6地址的正向解析目前有两种资源记录,即,“AAAA”和“A6”记录 。其中,“AAAA”较早提出,它是对“A”记录的简单扩展 。由于IP地址由32位扩展到128位,扩大了4倍,所以资源记录由“A”扩大成4个“A” 。“AAAA”用来表示域名和IPv6地址的对应关系,并不支持地址的层次性 。
“A6”在RFC2874中提出,它是把一个IPv6地址与多个“A6”记录建立联系,每个“A6”记录都只包含了IPv6地址的一部分,结合后拼装成一个完整的IPv6地址 。“A6”记录支持一些“AAAA”所不具备的新特性,如地址聚合、地址更改(Renumber)等 。
首先,“A6”记录方式根据TLA、NLA和SLA的分配层次把128位的IPv6的地址分解成为若干级的地址前缀和地址后缀,构成了一个地址链 。每个地址前缀和地址后缀都是地址链上的一环,一个完整的地址链组成一个IPv6地址 。这种思想符合IPv6地址的层次结构,从而支持地址聚合 。

推荐阅读