本节书摘来自异步社区《Cisco IPv6网络实现技术(修订版)》一书中的第2章,第2.2节,作者【加】Régis Desmeules,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 寻址
Cisco IPv6网络实现技术(修订版)
IPv6地址长度是IPv4地址长度的4倍。IPv6地址表示也是非常不同的。本节讲述IPv6地址新的表示法、语法和压缩格式。
2.2.1 IPv6地址表示
如RFC 2373“IP版本6寻址结构”中所定义,有3种格式表示IPv6地址。首选格式是最长的方法。由所有的32个十六进制字符组成一个IPv6地址。首选格式也可以看成是匹配计算机“思维”的表示法。
另一种方法是IPv6地址的压缩表示。为了简化人们的IPv6地址输入,当IPv6地址中有0值时,压缩地址是可能的。 这意味着首选格式和压缩格式是同一个IPv6地址的不同表示,与IPv4相比,这是个新概念。
最后,第3种表示地址的方法与过渡机制有关,在这里IPv4地址内嵌在IPv6地址中。这种表示法没有首选格式和压缩格式重要,因为只有在使用特定的过渡机制时,它才是有用的,如使用自动IPv4兼容隧道和动态网络地址转换-协议转换(NAT-PT)时。自动IPv4兼容隧道和动态NAT-PT在第5章中详细讨论。
1.首选IPv6地址表示
如图2-9所示,首选表示法也称为IPv6地址的完全形式,由一列以冒号(:)分开的8个16比特十六进制字段组成。每个16比特字段以文本表示为4个十六进制字符,意指每个16比特字段的值可以是0x0000到0xFFFF。十六进制中所用的表示数字的字符不区分大小写。
首选格式是一个IPv6地址的最长表示。在这种首选形式(8个字段,每个字段为4个十六进制字符)*有32个十六进制字符。相比较而言,一个IPv4地址由以点(.)分开的4个8比特十进制字段组成,最多可能有12个十进制字符。
表2-2显示了首选格式的IPv6地址范例。
2.压缩表示
在IPv6中,常见到使用包含一长串0的地址。为了方便人们书写包含0比特的地址,在两种情况下—— IPv6地址的连续16比特字段为0和16比特字段中的前导0,使用一种特定语法压缩连续的0。
连续16比特字段为0
当一个或多个连续的16比特字段为0字符时,为了缩短IPv6地址的长度,用∷(两个冒号)表示这些字段的0是合法的。但是,IPv6地址中只允许一个∷,该方法使许多IPv6地址非常短。IPv6地址的压缩表示也意味着同一个地址可能有几种表示。
注:IPv6地址中有∷存在时,地址分析器能够确定所缺0的数目。然后,分析器在地址的两部分之间填充0字符直到地址长度为128比特。在压缩的IPv6地址中,如果存在多个∷,分析器就没有办法确定每个字段的0数目。因此,每个IPv6地址只允许一个∷。
表2-3显示了首选格式的IPv6地址经过压缩的例子,能够压缩的原因在于有一个或多个连续的16比特字段为0字符。首选格式地址中的黑体字符表示为了压缩地址被去掉的值。
地址FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF是一个地址实例,所有比特都为1。因此,该地址不能压缩。只有存在多个连续的16比特字段0字符时,才能使用∷的压缩格式。
表2-4列出了不合法的压缩地址例子。所给出的压缩地址多次使用∷,这是不合法的IPv6压缩地址表示。
IPv6地址中16比特字段的前导0
在IPv6地址中存在一个或多个前导0的16比特十六进制字段,第二种压缩地址的方法可应用于每个这样的字段。每个字段的前导0可以简单地去掉以缩短IPv6地址的长度。但是,如果16比特字段的每个十六进制字符都设为0,那么至少要保留一个0字符。表2-5给出了存在前导0时地址压缩的例子。在这些例子中,去掉了每个16比特字段的所有前导0,保留所有的后续值。首选格式地址中的黑体字符表示为了压缩地址要去掉的值。
结合两种压缩方法
压缩连续的0字符16比特字段和压缩16比特字段中的前导0能够结合起来,以缩短IPv6地址的长度。表2-6给出了同时应用这两种方法的例子。首选格式地址中的黑体字符表示为了压缩地址要去掉的值。
3.内嵌IPv4地址的IPv6地址
IPv6地址的第3种表示法是在IPv6地址中使用内嵌的IPv4地址。
IPv6地址的第一部分使用十六进制表示,而IPv4地址部分是十进制格式。这是过渡机制所用的IPv6地址特有的表示法。
注:在支持自动IPv4兼容隧道机制的实现中,地址的低32比特也可以用十六进制表示。这样,十进制值转换为十六进制。
注:正如本节开头所提到的,只有两种过渡机制使用这种IPv6地址形式。Cisco IOS软件技术支持使用这种格式的过渡机制,但是,由于考虑到更有效的机制,所以去掉了自动IPv4兼容隧道机制。然而,为了使称为动态NAT-PT的过渡机制正常运行,仍旧在IPv6地址中内嵌了一个IPv4地址。因此,用到了这种形式的地址。
图2-10给出了使用内嵌IPv4地址的IPv6地址格式。这种地址由两部分组成:6个高16比特十六进制值字段,以X字符表示,后跟4个低8比特十进制值字段(IPv4地址),以d字符表示(共32比特)。
两种IPv6地址有内嵌的IPv4地址:
IPv4兼容的IPv6地址——用于在IPv4网络上建立自动隧道,以传输IPv6数据包。这种地址与IPv6协议的一种过渡机制有关。
映射IPv4的IPv6地址——仅用于拥有IPv4和IPv6双协议栈节点的本地范围。节点仅在内部使用映射IPv4的IPv6地址。节点外部永远不会知道这些地址,不应作为IPv6地址出现在线路上。
虽然上面两种方法都使用IPv6地址内嵌IPv4地址的相同地址表示法,但还是为每种内嵌的IPv4地址定义了不同的IPv6前缀。对于IPv4兼容的IPv6地址,其IPv6前缀表示为高96比特设为0,紧跟32比特的IPv4地址。对于映射IPv4的IPv6地址,其前缀表示为高80比特设为0,接着的16比特设为1,最后跟随32比特的本地节点IPv4地址。下一节详细讲述内嵌IPv4地址的IPv6地址格式。
表2-7给出了每种内嵌在IPv6地址内的IPv4地址例子,也说明了两种地址都能够表示为压缩格式。给出的第一个地址是IPv4兼容的IPv6地址,第二个是映射IPv4的IPv6地址。首选格式地址中的黑体字符表示为了压缩地址长度要去掉的值。
注:虽然动态NAT-PT机制基于IPv4兼容的IPv6地址格式,但是没有使用这里所说的IPv6前缀。参见第5章以了解动态NAT-PT机制所用前缀的更多细节。
4.URL的IPv6地址表示
在统一资源定位符(URL)格式中,冒号(∶)字符定义为指定可选的端口号。下面是用冒号字符指定端口号的URL例子:
www.example.net:8080/index.html
https://www.example.com:8443/abc.html
在IPv6中,Internet浏览器的URL分析器必须能够区分端口号的冒号和IPv6地址中的冒号。但是,因为IPv6地址的压缩表示可能在IPv6地址的任何地方包含双冒号,所以做出如上的区分是不可能的。
因此,为了识别IPv6地址,同时还要为URL格式保留冒号(端口号),如RFC 2732“URL中的直观IPv6地址格式”所定义,IPv6地址必须由方括号括起。然后,在方括号后面可以加上端口号,接着是目录和文件名。下面是IPv6地址在方括号间的URL例子。
[3ffe:b80:c18:1::50]:8080/index.html https://[2001:410:0:1:250:fcee:e450:33ab]:8443/abc.html
但是,使用方括号中的IPv6地址通常仅用于诊断目的,或者用于不存在域名服务(DNS)时。因为IPv6地址比IPv4地址长,所以用户倾向于使用DNS和完全合格域名(FQDN)格式,而不是用十六进制表示的IPv6地址。
5.IPv6和划分子网
在IPv4中,有两种方法表示一个网络前缀:
十进制表示法——网络掩码指定为d.d.d.d格式。网络掩码值表示二进制形式设为1的连续比特数。
无类域间路由选择(CIDR)表示法——网络前缀掩码也可以指定为一个十进制数,表示二进制形式中设为1的连续比特数。在前缀和网络掩码值之间使用了斜线(/)字符。
两种表示法意味着同样的节点网络掩码比特数。例如,网络掩码值为255.255.255.0的网络前缀192.168.1.0和CIDR表示法的192.168.1.0/24是相同的。该网络中节点的IP地址范围是从192.168.1.1到192.168.1.254。
在IPv6中,因为IPv6地址有新的长度,使用如d.d.d.d长形式的网络掩码表示法消失了。在IPv6中,表示网络掩码的唯一可接受形式是CIDR表示法。虽然IPv6地址是十六进制格式,但网络掩码值仍然是一个十进制值。表2-8给出了网络值为CIDR表示法的IPv6地址和网络前缀例子。
对于IPv4和IPv6,网络掩码中设为1的比特数确定网络前缀的长度,其余部分用于节点寻址。这是IP的基本信息,当数据包必须发往默认路由器或者同一个链路层子网上的特定节点时,该信息告知节点如何处理。
IPv6中的另一个不同之处是网络前缀范围内没有保留地址。在IPv4中,前缀范围内的第一个和最后一个地址是保留地址。前缀范围内的第一个地址是网络地址,最后一个是广播地址。这意味着一个范围内可用的IPv4地址总数等于2n-2,其中n是主机寻址的比特数。例如,给定网络前缀192.168.1.0/24,地址192.168.1.0和192.168.1.255是保留地址,从而不能指定给节点。在IPv4中,也常见到在一个位置范围内使用不同的网络掩码值。一个子网使用一个网络掩码值,下一个子网可以使用一个不同值。
IPv6没有广播或网络保留地址。而且,IPv6站点前缀(48比特)中节点寻址比特数是如此之大,以致于没有必要为在一个站点内使用不同的网络掩码值而制定寻址计划。因此,就不需要为每个子网计算网络掩码,也不需要使用变长子网掩码(VLSM)。在IPv6中,子网划分比IPv4中要简单得多。
2.2.2 IPv6地址类型
与表示法和子网划分无关,正如RFC 2373“IP版本6寻址结构”中所描述的,为IPv6定义了不同种类的地址。本节给出了协议中所定义的IPv6地址类型。在IPv6中,地址指定给网络接口,而不是节点。而且,每个端口同时拥有和使用多个IPv6地址。
如图2-11所示,地址的3种类型是单播、任意播和多播。在每种地址中有一种或多种类型的地址。单播有本地链路、本地站点、可聚合全球、回环、未指定和IPv4兼容地址。任意播有可聚合全球、本地站点和本地链路地址。多播有指定地址和请求节点地址。IPv6 128比特寻址模式的具体范围已经指定给了每种类型的地址。
1.本地链路地址
IPv6引入受限的单播地址,只能用在一个受到限制的范围内。单播本地链路地址有范围限制,只能在连接到同一本地链路的节点之间使用。在几个IPv6机制中用到了本地链路地址,如第3章详细讲述的邻居发现协议(NDP)。
当在一个节点上启用IPv6协议栈,启动时节点的每个接口自动配置一个本地链路地址。如图2-12所示,使用了IPv6本地链路前缀FE80::/10,同时扩展唯一标识符64(EUI-64)格式的接口标识符添加在后面作为地址的低64比特。比特11到比特64设为0(54比特)。本地链路地址只用于本地链路范围,不能在站点内的子网间路由。
注:IEEE定义了一种基于64比特的扩展唯一标识符——EUI-64。EUI-64格式是IEEE指定的公共24比特制造商标识和制造商为产品指定的40比特值的组合。EUI-64与接口链路层地址有关。本章提供了链路层地址转换为EUI-64格式的详细信息。
因为本地链路地址的低64比特是接口标识符,本地链路前缀长度基于64比特长(/64)。如表 2-9 所示,本地链路地址表示为首选格式 FE80:0000:0000:0000:0000:0000: 0000:0000/10的IPv6前缀和压缩表示的FE80::/10。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
在IPv6中,一个有可聚合全球单播地址的节点在本地链路上,使用默认IPv6路由器的本地链路地址,而不使用路由器的可聚合全球单播地址。如果必须发生网络重新编址,即单播可聚合全球前缀更改为一个新的单播可聚合全球前缀,那么总能使用本地链路地址到达默认路由器。在网络重新编址过程中,节点和路由器的本地链路地址不会发生变化。第3章给出了在一条本地链路上前缀重新编址的例子。
2.本地站点地址
本地站点地址是另一种单播受限地址,仅在一个站点内使用。本地站点地址在节点上不能像本地链路地址一样被默认启用,即必须指定。
本地站点地址与RFC 1918“私有Internet地址分配”所定义的IPv4私有地址空间类似,这些私有地址空间如10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。任何没有接收到提供商所分配的可聚合全球单播IPv6地址空间的组织机构可以使用本地站点地址。一个本地站点前缀和地址可赋予站点内的任何节点和路由器。但是,本地站点地址不能在全球IPv6 Internet上路由。
注:虽然本地站点地址与IPv4私有地址类似,但在IPv6单协议网络之间,不希望使用IPv6网络地址转换(NAT)。IPv6地址空间中有巨大数量的IPv6地址,以保持IP协议的端到端模型的有效性。
如图2-13所示,本地站点地址由前缀FEC0::/10、称为子网标识的54比特字段和用作低64比特EUI-64格式的接口标识符所组成。
54比特子网标识用于站点子网划分。该字段允许一个站点创建多达254个不同的IPv6子网(/64前缀)。每个子网能够使用不同的IPv6前缀。
注:本地站点地址原来的子网标识长度基于16比特,允许一个站点创建65 535个不同的IPv6子网。
例如,一个有10个子网的站点可以如下分配本地站点前缀:
子网1——FEC0:0:0:0001::/64
子网2——FEC0:0:0:0002::/64
子网3——FEC0:0:0:0003::/64
子网4——FEC0:0:0:0004::/64
子网5——FEC0:0:0:0005::/64
子网6——FEC0:0:0:0006::/64
子网7——FEC0:0:0:0007::/64
子网8——FEC0:0:0:0008::/64
子网9——FEC0:0:0:0009::/64
子网10——FEC0:0:0:000A::/64
如表2-10所示,本地站点地址表示为首选格式FEC0:0000:0000:0000:0000:0000:0000: 0000/10的IPv6前缀和压缩表示的FEC0::/10。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
本地站点地址设计用于永远不会与全球IPv6 Internet通信的设备。本地站点地址在一个站点内可能有下列用途:
打印机
内部网服务器
网络交换机、网桥、网关、无线接入点等
用于管理目的的仅内部可达的任何服务器和路由器
如今,对于那些在其网络上有实施IPv6协议的计划,但还没有从提供商那里获得可聚合全球单播IPv6空间的组织,推荐使用本地站点地址。在网络重新编址的试验场景中,也推荐使用本地站点寻址。
特别要注意一个IPv6节点可以有几个单播IPv6地址,所以在使用可聚合全球单播地址的同时,能够使用本地站点地址。在这种情况下,DNS是仲裁者(即决定使用哪个地址)。而且,期望站点为本地站点和可聚合全球单播前缀使用相同的子网标识符。
3.可聚合全球单播地址
可聚合全球单播地址是用于IPv6 Internet通常IPv6数据流量的IPv6地址。可聚合全球单播地址与IPv4 Internet上用于通信的单播地址类似。
可聚合全球单播地址代表IPv6寻址结构的最重要部分。可聚合全球单播结构使用严格的路由前缀聚合,以限制全球Internet路由选择表的大小。
每个可聚合全球单播IPv6地址有3部分:
从提供商那里接收到的前缀——如RFC 3177 “IAB/IESG关于IPv6站点地址分配的建议”所言,由提供商指定给一个组织机构(末端站点)的前缀应至少是/48前缀。/48前缀表示网络前缀的高48比特。而且,指定给组织机构的前缀是提供商前缀的一部分。
站点——利用提供商分配给组织机构的一个/48前缀,该组织机构就可能将网络分为多达65 535个子网(为子网指定64比特的前缀)。组织机构能够使用所收到前缀的49比特到64比特(16比特)来划分子网。
主机——主机部分使用每个节点的接口标识符。IPv6地址的这部分表示地址的低64比特,称为接口标识符(接口ID)。
如图2-14所示,前缀2001:0410:0110::/48是由提供商指定给组织机构的。进而,在该组织内部,在网络子网上使用前缀2001:0410:0110:0002::/64。最终,该子网上的一个节点拥有IPv6地址2001:0410:0110:0002:0200:CBCF:1234:4402。
这是提供商向末端站点指定可聚合全球单播前缀的一个简单例子。第7章提供了在多个站点、提供商和末端站点间分配可聚合全球单播地址的详细信息。
4.可聚合全球单播前缀的IANA分配
IANA分配整个IPv6寻址空间中的一个IPv6地址前缀范围作为可聚合全球单播地址。如表2-11所示,这个可聚合全球单播地址空间用IPv6前缀2000::/3来表征。
从前缀2000::/3中取出3个较小前缀(/16)指定为公用。如表2-12所示,前缀2001::/16用于IPv6 Internet的运作。前缀2002::/16为使用6到4过渡机制的节点保留。3FFE::/16是用于6bone测试目的的前缀。
注意IANA仍然没有分配从2003::/16到3FFD::/16的前缀空间,即大约8192个前缀(/16)。在一个/16前缀中,能够容纳数十亿个IPv4 Internet。这是IPv6巨大寻址空间的一个例证。获得许多的IP地址对IPv6而言不是问题。
注:参见第5章,获得基于2002::/16前缀的6到4机制的详细信息。
5.多播地址
多播是一种技术,即一个源节点发送单个数据包,同时到达多个目的地(一到多)。相对而言,单播是从一个源节点发送单个数据包到一个目的地(一到一)。
多播含有组的概念:
任何节点能够是一个多播组的成员
一个源节点可以发送数据包到多播组
多播组的所有成员收到发往该组的数据包
多播的主要目标是通过优化节点间交换的数据包数量,从而使高效网络节省链路带宽。但是,网络上的节点和路由器必须使用特定范围内的IP地址,以获得多播的好处。在IPv4中,该范围是224.0.0.0/3,其中IPv4地址的高3比特设为111。
如表2-13所示,在IPv6中多播地址由IPv6前缀来定义,其首选格式为FF00:0000:0000: 0000:0000:0000:0000:0000/8,压缩表示为FF00::/8。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
在IPv4中,存活时间(TTL)用来限制多播流量。IPv6多播没有TTL,因为在多播地址内定义了范围。
在协议机制中,IPv6多处用到多播地址,如IPv4中地址解析协议(ARP)的替代协议、前缀通告、重复地址检测(DAD)和前缀重新编址。所有这些机制在第3章详细讲述。
在IPv6中,本地链路上的所有节点监听多播,能够发送多播数据包以交换信息。因此,仅靠监听本地链路上的多播数据包,IPv6节点就能够知道所有的邻居节点和邻居路由器。就获得有关网络邻居的信息而言,这是不同于IPv4 ARP的技术。
在多播中,范围是一个必要的参数,由它限制发送多播数据包到网络的某个确定区或部分。
如图2-15所示,使用标志和范围共4比特字段,多播地址格式定义了地址的几种范围和类型。这些字段在前缀FF::/8之后。最后,多播地址的低112比特是多播组标识符(多播组ID)。
标志字段指明多播地址类型。其中,两种多播地址定义为:
永久的——由IANA指定的一个地址
临时的——没有被永久指定
如表2-14所示,标志字段的高3比特是保留的并且必须用0值初始化。但是,其他比特指明多播地址类型。
表2-16给出了不同范围的多播地址例子。FF02::/16是仅用于本地链路范围的永久地址。FF12::/16有一个类似的范围,但被认为是一个临时地址。FF05::/16是本地站点范围的一个永久地址。
注:当一个IPv6节点发送多播数据包到一个多播地址时,数据包中的源地址不能是一个多播地址。而且,在任何IPv6扩展路由选择包头中,多播地址不能作为源地址。
多播指定地址
RFC 2373在多播范围内为IPv6协议操作定义和保留了几个IPv6地址。这些保留地址称为多播指定地址。表2-17给出了IPv6中的所有多播指定地址。
指定多播地址用于协议特定机制的相关情形。例如,子网上的一台路由器要发送一条消息到相同子网上的所有节点,使用多播地址FF02::1。子网上的一个节点要发送一条消息到相同子网上的所有节点,也使用相同的多播地址。在IPv6协议栈中,所有IPv6节点和路由器被设定好以识别这些多播指定地址。
被请求节点多播地址
第二种多播寻址是被请求节点多播寻址。对于节点或路由器的接口上配置的每个单播和任意播地址,都自动启用一个对应的被请求节点多播地址。被请求节点多播地址受限于本地链路。
被请求节点多播地址是特定类型的地址,用于两个基本的IPv6机制。
替代IPv4中的ARP——因为IPv6中不使用ARP,被请求节点多播地址被节点和路由器用来获得相同本地链路上邻居节点和路由器的链路层地址。和IPv4 ARP相同,获知邻居节点的链路层地址,为构造链路层帧以发送IPv6数据包所必需的。
重复地址检测(DAD)——DAD是NDP的组成部分。在使用无状态自动配置将某个地址配置为自己的IPv6地址之前,节点利用DAD验证在其本地链路上该IPv6地址是否已被使用。被请求节点多播地址用来探测本地链路,以搜索已经配置在另一个节点上的特定单播或任意播地址。
注:DAD和NDP在第3章详细描述。
如表2-18所示,被请求节点多播地址定义为首选格式的IPv6前缀FF02:0000:0000:0000: 0000:0001:FF00:0000/104和压缩表示的FF02::1:FF00:0000/104。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
被请求节点多播地址由前缀FF02::1:FF00:0000/104和单播或任意播地址的低24比特组成。如图2-16所示,单播或任意播地址的低24比特附加在前缀FF02::1:FF的后面。
表2-19给出了由单播地址生成的被请求节点多播地址例子。
6.任意播地址
单播是一个源节点用来发送数据包到一个目的地(一到一)的方法,多播用于一到多通信,任意播用于一到最近点的通信。任意播是一种机制,发送数据包到任意播组最近节点成员的任意播地址。任意播使一种到最近点的发现机制成为可能。通过度量网络距离,路由选择数据包到最近目的地,网络本身在任意播中扮演了重要角色。
在IPv4和IPv6中都存在任意播。在IPv4中,从区域Internet注册机构(如ARIN、RIPE NCC或APNIC)获得一个可移动的IPv4空间,组织机构可以使用边界网关协议(BGP)通告其IPv4前缀到全球Internet。使用相同的自治系统号(ASN),BGP从Internet上的几个站点完成路由选择通告。在这些站点内使用一个任意播前缀的服务器能够共享相同的IP地址。全球Internet上的节点发送到这个任意播前缀的数据包,由BGP路由器路由选择到就AS路径而言的最优路径。因此,使用任意播机制,数据包被发送到最近的目的地。
注:第5章给出了IPv4任意播前缀在全球Internet上通告的实例。Internet有几个6到4中继,但很难找到使用它们的IPv4地址。在这种情况下,IPv4任意播前缀允许任一连接到Internet的6到4路由器自动寻找最近的6到4中继。第5章也提供了6到4机制和6到4路由器的详细信息。
任意播地址使用可聚合全球单播地址,也能够使用本地站点或本地链路地址。注意,要区分单播地址和任意播地址是不可能的。
保留的任意播地址
为了特定的用途,保留一个任意播地址。如表2-20所示,该地址由子网的/64单播前缀和比特65到比特128设为0两部分组成。
该保留的任意播地址也称为子网-路由器任意播地址。所有IPv6路由器在其每个子网接口上必须支持子网-路由器任意播地址。
在IPv6中,只有少数几个应用使用任意播地址。移动IPv6是设计使用任意播的一个协议范例。当一个移动节点离开其家乡网络并欲发现其家乡代理的IPv6地址时,它可以使用任意播。移动节点能够向其家乡子网前缀的移动IPv6家乡代理任意播地址发送一条ICMPv6“家乡代理地址发现请求”消息,然后,移动节点等待一个家乡代理返回一条包含家乡代理列表的ICMPv6“家乡代理地址发现应答”消息。
但是,移动IPv6是刚推出不久的协议。大体而言,在从这种地址获得实实在在的好处之前,关于任意播仍有很多工作要做。
7.回环地址
类似于IPv4协议,每个设备都有一个回环地址,由节点自己使用。如表2-21所示,回环地址表示为首选格式的前缀0000:0000:0000:0000:0000:0000:0000:0001和压缩格式的::1。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
8.未指定地址
未指定地址是没有指定给任何接口的单播地址。这表明少了一个地址,用于特殊目的。例如,当主机从IPv6动态主机配置协议(DHCPv6)服务器请求一个IPv6地址时,或者由DAD发出一个数据包时,使用这种地址。如表2-22所示,未指定地址表示为首选格式的前缀0000:0000: 0000:0000:0000:0000:0000:0000和压缩格式的::。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
9.IPv4兼容的IPv6地址
正如前面所提到的,IPv4兼容的IPv6地址是由过渡机制使用的特殊单播IPv6地址,目的是在主机和路由器上,自动创建IPv4隧道以在IPv4网络上传送IPv6数据包。
图2-17显示了IPv4兼容的IPv6地址的格式。前缀由高96比特设为0组成,其他32比特(低比特)以十进制形式的IPv4地址表示。
IPv4兼容的IPv6地址用于过渡机制,路由器和主机自动在IPv4网络上创建隧道。这种机制在两个节点之间,使用目的IPv6地址中的IPv4目的地址自动建立IPv4之上的一条IPv6-over- IPv4(建立在IPv4之上的IPv6)隧道。应用动态NAT-PT,将目的IPv4地址映射成IPv6地址。
注:由于倾向于使用其他更完善的过渡机制,应用IPv4兼容的IPv6地址的自动隧道过渡机制就被废除了。第5章将讲解自动隧道和动态NAT-PT。
如表2-23所示,IPv4兼容的IPv6地址表示为首选格式的IPv6前缀0000:0000:0000:0000: 0000:0000::/96和压缩格式的::/96。
1 这是同一地址的中间压缩表示。地址是有效的,但应该使用IPv6地址的缩短格式。
10.必需的IPv6地址
如本章前面讨论过的,IPv6节点和路由器同时有数个IPv6地址。但是,这些IPv6地址用于不同情景之中。IPv6的128比特地址空间使协议设计高效利用地址成为可能。因此,正如RFC 2373所描述的,节点和路由器必须支持数个IPv6地址。
节点必需的IPv6地址
表2-24列出了在IPv6中节点必需的IPv6地址。一旦节点启用了IPv6协议支持,节点的每个接口就有一个本地链路地址、一个回环地址以及所有节点多播地址FF01::1和FF02::1。同样,节点可以有一到多个分配的可聚合全球单播地址和相应的被请求节点多播地址。如果节点是另一个多播组的成员,它可以有其他的多播地址。
表2-25给出了IPv6中路由器必需的IPv6地址。基本而言,路由器有节点必需的所有IPv6地址。进而,路由器有所有路由器多播地址FF01::2、FF02::2和FF05::2。一个子网路由器任意播地址和其他的任意播配置地址是路由器的必需地址。