TCP/IP协议族(第4版) 第26章 试读

 

 
 
 
 
 
第五部分
下 一 代
26 章  IPv6 编址 
27 章  IPv6 协议 
28 章  ICMPv6  
 
 
 
 
 
 
 


 
第26章 IPv6编址
 
 
 
 
本书第五部分的第一章,我们要介绍的是IPv6 中的编址。IPv4 协议的地址耗尽问题是开发IPv6 协议的一个主要原因。正如我们将在本章看到的,IPv6 地址的结构与IPv4 地址的结构有着一些本质上的不同。在IPv6 中再也不用担心地址耗尽问题了。
目标
本章有以下几个目标:
q 介绍 IPv6 的编址机制以及这一版所使用的几种表示地址的不同记法。
q 解释 IPv6 中使用的三类编址类型:单播、任播和多播。
q 说明 IPv6 的地址空间,以及它是如何被划分为若干个地址块的。
q 讨论地址空间中的一些被保留的地址块以及它们的应用。
q 定义全球单播地址块以及它如何被应用于单播通信。
q 讨论在 IPv6 布署全球单播地址块时,如何应用了分为三级的分级编址技术。
q 讨论 IPv6 地址的自动配置和重新编号问题。
IPv6 地址的长度是128 位或者说16 个字节(八位组),如图26.1 所示。IPv6 地址的长度是IPv4 地址长度的四倍。
图26.1 IPv6地址
在计算机中,地址通常以二进制保存,但是很显然,128 位的长度对人类来说不是那么容易掌握的。为了让人类能够处理这些地址,已经建议了多种用来表示IPv6 地址的记法。
点分十进制记法
为了与IPv4 地址兼容,我们会很自然地想到要使用点分十进制记法,就像表示IPv4 地址那样(第5 章)。虽然这种记法对于4 字节的IPv4 地址很方便,但是对于16 字节的IPv6 地址来说,这种记法显得有点太长,如下所示:
221.14.65.11.105.45.170.34.12.234.18.0.14.0.115.255
这种记法很少被使用,除了有些情况可能会使用其中的某一部分,稍后将会看到。
十六进制冒号记法
为了使地址的可读性更好,IPv6 地址协议指明了 十六进制冒号记法( colon hexadecimal notation 。在这种记法中,128 位被划分为八区,每个区的长度为两字节。在十六进制记法中,两个字节需要4 个十六进制数字,因此,IPv6 地址由32 个十六进制数字组成,每4 个数字用一个冒号分隔开。图26.2 所示为用十六进制冒号记法表示的一个IPv6 地址。
图26.2   十六进制冒号记法
这个IP 地址即使用十六进制格式表示起来也很长,不过其中有许多数字都是零。在这种情况下,我们可以对这个地址进行简写。一个区(即两个冒号之间的4 个数字)开头的几个零可以忽略。使用这种简写方式,0074 可以写为74 ,000F 可以写为F ,而0000 则写为0 。请注意,3210 不能被简写。
如果连续几个区都只包含了0 ,那么这个十六进制冒号记法还可以更进一步简写,通常称为 零压缩 (zero compression )。我们可以把这些零全部去掉,取而代之的是一个双冒号。图26.3 描绘了这个概念。
图26.3 零压缩
请注意,这种类型的简写对一个地址仅能使用一次。若有两串零段,则只能将其中之一进行压缩。
混合表示法
有时候我们会看到一种混合表示的IPv6 地址:十六进制冒号记法加上点分十进制记法。这种表示方法适用于将一个IPv4 地址嵌入到一个IPv6 地址中的过渡时期(作为最左边的32 位)。我们可以对地址最左边的6 个区使用十六进制冒号记法,而最靠右的两个区则以4 个字节的点分十进制记法取代,如下所示:
FDEC:14AB:2311:BBFE:AAAA:BBBB:130.24.24.18
但是,通常只在这个IPv6 地址最右边的区全部或大部分为零时才会这样写。例如,下面所示为一个合法的IPv6 地址,其中的零压缩表示这个地址最左边的96 位全部是零:
::130.24.24.18
CIDR记法
稍后我们会看到,IPv6 使用了分级的编址技术。正是因为这个原因,IPv6 允许无分类编址和CIDR 记法。例如,图26.4 所示为我们如何使用CIDR 定义一个60 位的前缀。在后面我们将会说明一个IPv6 地址是如何划分前缀和后缀的。

 

图26.4 CIDR地址
 
26.1

 

给出以下IPv6 地址的未经简写的十六进制冒号记法表示:
a .64 个0 之后跟着64 个1 的地址。
b .128 个0 组成的地址。
c .128 个1 组成的地址。
d .128 个1 和0 交替组成的地址。
a .0000:0000:0000:0000:FFFF:FFFF:FFFF:FFFF
b .0000:0000:0000:0000:0000:0000:0000:0000
c .FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
d .AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA
26.2
下面所示为例26.1 中的地址经过零压缩后(c 和d 部分不能被简写)的形式:
a .::FFFF:FFFF:FFFF:FFFF
b .::
c .FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
d .AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA
26.3
给出以下地址的简写表示:
a .0000:0000:FFFF:0000:0000:0000:0000:0000
b .1234:2346:0000:0000:0000:0000:0000:1111
c .0000:0001:0000:0000:0000:0000:1200:1000
d .0000:0000:0000:0000:0000:FFFF:24.123.12.6
a .0:0:FFFF::
b .1234:2346::1111
c .0:1::1200:1000
d .::FFFF:24.123.12.6
26.4
对以下地址进行解压缩,给出对应的未经简写的IPv6 地址的完整表示:
a .1111::2222
b .::
c .0:1::
d .AAAA:A:AA::1234
a .1111:0000:0000:0000:0000:0000:0000:2222
b .0000:0000:0000:0000:0000:0000:0000:0000
c .0000:0001:0000:0000:0000:0000:0000:0000
d .AAAA:000A:00AA:0000:0000:0000:0000:1234
IPv6 的地址空间包含了2128 个地址,如下所示。这个地址空间是IPv4 地址数量的296 倍,肯定不会存在地址耗尽的问题了。
2128=340 282 366 920 938 463 374 607 431 768 211 456
26.5
为了对这个地址数量有一个直观的印象,让我们假设地球上的总人口数量即将达到234 (超过160 亿)。那么每个人仍然有294 个地址可供使用。
26.6
如果我们每年向用户指派260 (几乎每秒10 亿)个地址,那么需要花268 年才能让地址耗尽。
26.7
如果在地球的整个表面上,不管是陆地还是海洋,建造一座高耸入云的大楼,使得每一平方米的地面上都能容纳268 台计算机,还是有足够的地址可以把所有的计算机都连接到因特网上(地球的表面面积大约为260平方米)。
在IPv6 中,一个目的地址可以属于以下三种类型之一:单播的、任播的和多播的。
单播地址
单播地址定义了一个接口(计算机或路由器)。发送到单播地址的分组必须交付给这个指定的计算机。我们将在稍后会看到,IPv6 为单播通信设计了一个很大的地址块,其中的单播地址都可以指派给接口使用。
任播地址
任播地址定义了一组共享一个地址的计算机。发送到任播地址的分组会被交付给这个组的成员之一,也就是最容易到达的那一个。例如,当多台服务器都能响应某个查询时,就可以使用任播通信。这个查询请求被发送到最容易到达的那台服务器。产生请求的硬件和软件只生成了一份请求的副本,而该副本也仅到达其中的一台服务器。IPv6 没有为任播设计专门的地址块,这些任播地址是从单播地址块中指派的。
多播地址
多播地址定义的也是一组计算机,但是任播和多播是有区别的。在多播通信中,多播组的每个成员都会接收到一个副本。稍后我们将会看到,IPv6 发送到多播地址的分组必须交付给该组中的每一个成员。IPv6 为多播通信设计了一个地址块,从这个地址块中可以向一个组的所有成员指派相同的地址。
有趣的是IPv6 没有定义广播通信,哪怕是在有限范围内的广播,这一点不像IPv4 。在第5 章中,我们讨论了在一个地址块中的某些地址能够被用于有限的广播。我们将会看到,IPv6 认为广播就是多播的一种特殊情况。
像IPv4 的地址空间一样,IPv6 的地址空间被划分为若干个大小不同的地址块,并为每种特定的任务分配一个地址块。这些地址块中的绝大部分尚未指派,被留作将来使用。为了更好地理解地址空间中每个地址块的分配及其所处的位置,我们首先将完整的地址空间划分为八个大小相等的区。这种划分并不表示地址块的分配,只是我们认为这样做可以更好地说明每个实际的地址块所处的位置(图26.5 )。
图26.5 地址空间的分配
每一个区是整个地址空间的1/8 (即2125 个地址)。第一个区包含了六个长度不等的地址块,其中三个地址块是保留的,另外三个地址块是未指派的。第二个区被认为就是一个地址块,用于全球单播地址,我们在本章的后面将会进一步讨论。接下来的五个区都是未指派的地址。最后一个区划分为八个地址块,其中有些地址块属于尚未指派的地址,另一些则被保留作特殊用途。从图中可以看出有5/8 的地址空间还没有被指派。只有1/8 的地址空间用于用户之间的单播通信。
表26.1 给出了每种类型的地址的前缀。第五列表示每一种地址类型相对于整个地址空间所占据的份额。最左边一列不是标准中的一部分,它只是显示了图26.5 所描绘的地址区。
26.1 IPv6地址的类型前缀
 
地址块前缀
CIDR
地址块分配
份  额
1
0000 0000
0000::/8
保留(IPv4兼容)
1/256
0000 0001
0100::/8
保留
1/256
0000 001
0200::/7
保留
1/128
续表
 
地址块前缀
CIDR
地址块分配
份  额
 
0000 01
0400::/6
保留
1/64
0000 1
0800::/5
保留
1/32
0001
1000::/4
保留
1/16
2
001
2000::/3
全球单播
1/8
3
010
4000::/3
保留
1/8
4
011
6000::/3
保留
1/8
5
100
8000::/3
保留
1/8
6
101
A000::/3
保留
1/8
7
110
C000::/3
保留
1/8
8
1110
E000::/4
保留
1/16
1111 0
F000::/5
保留
1/32
1111 10
F800::/6
保留
1/64
1111 110
FC00::/7
唯一的本地单播
1/128
1111 1110 0
FE00::/8
保留
1/512
1111 1110 10
FE80::/10
本地链路地址
1/1024
1111 1110 11
FEC0::/10
保留
1/1024
1111 1111
FF00::/8
多播地址
1/256
 
26.8
图26.5 仅显示出了用于全球单播通信的地址在地址空间中是哪一部分,那么在这个地址块中一共有多少个地址?
这个地址块仅占地址空间的1/8 。为了计算这些地址的数量,我们可以用完整的地址空间除以8 或23 。结果是 ,很大的一个地址块。
算法
为了说明根据表26.1 中列出的那些前缀,能够为一个IPv6 地址无二义性地找到其相应的地址块,我们构造了如图26.6 所示的算法流程图。这个算法可用于编写一段程序,以找出一个给定的地址所属的地址块。这个算法最多只需检查10 位就能找出该地址所属的地址块。请注意,为了保持该图的简洁性,图中没有显示保留的地址块(除了与IPv4 兼容的地址)。
图26.6 查找所分配的地址块的算法
这一小节要讨论各个已指派的和被保留的地址块的特点和作用,让我们从表26.1 的第一行开始。
IPv4兼容地址
使用前缀(00000000 )的地址是保留的,但是其中有部分用来定义了一些IPv4 兼容地址。这个地址块占据整个地址空间的1/256 ,也就是说在这个地址块中一共有2120 个地址。用CIDR 记法时,这个地址块可定义为0000::/8 。这个地址块进一步被划分为若干个子块,下面将具体讨论。
未指明地址 未指明地址是只包含了一个地址的子地址块,它定义的这个地址的所有后缀部分也都是零。换言之,整个的地址都是由零组成。这个地址用于主机引导期间,当主机不知道自己的地址而需要发送查询以便找出自己的地址时。因为任何IPv6 分组都需要一个源地址,所以该主机就使用这个地址来完成此任务。请注意,未指明地址不能用做目的地址。这个单地址子块的CIDR 记法是::/128 。图26.7 所示为未指明地址的格式。
图26.7 未指明地址
IPv6 中的未指明地址是::/128 。
它永远也不应当被用做目的地址。
26.9
试比较IPv4 中的未指明地址和IPv6 中的未指明地址。
在这两种体系结构中,未指明地址都是一个全零的地址。在IPv4 中,这个地址是属于A 类地址的一部分。在IPv6 中,这个地址是保留地址块中的一部分。
环回地址  这个子块同样也只包含了一个地址。我们在第5 章中讨论过环回地址。这个地址是主机在不需要连接到网络的情况下用来测试它自己的。在这种情况下,由应用层产生一个报文,发送到运输层,再传递到网络层。但是,这个报文并没有传送到物理网络中,而是返回到运输层,再传递到应用层。在把计算机连接到网络上之前,可以用这个地址来测试上面几层的软件包的功能。图26.8 描绘了环回地址,它由前缀00000000 和后面跟着119 个0 和一个1 组成。这个单地址子块的CIDR 记法是::1/128 。
图26.8 环回地址
26.10
试比较IPv4 中的环回地址和IPv6 中的环回地址。
它们之间有两点不同。在分类编址中分配给环回地址的是一个完整的地址块,而在IPv6 中只有一个地址被作为环回地址分配。另外,分类编址中的环回地址块是A 类地址块的一部分,而在IPv6 中,它只是保留地址块中的一个地址。
嵌入的 IPv4 地址  我们将在第27 章中看到,从IPv4 到IPv6 的过渡期间,主机可以在IPv6 中嵌入它们的IPv4 地址。为此而设计了两种格式:兼容的和映射的。 兼容地址 ( compatible address )是在96 位0 之后紧跟32 位的IPv4 地址。当使用IPv6 的计算机要把报文发送给另一个使用IPv6 的计算机,但是,分组又必须要通过仍然使用了IPv4 网络的区域时,就要使用这种地址。发送方必须使用与IPv4 兼容的地址,使得分组能够通过IPv4 的网络区域。例如,IPv4 地址2.13.17.14 (点分十进制格式表示)被转换为0::2.13.17.14 (混合格式表示)。在这个IPv4 地址前面加上96 个0 产生了一个128 位的IPv6 地址(见图26.9 )。这个子地址块是能够包含232 个地址的保留区,它的CIDR 记法是::/96 。我们将在第27 章更详细地讨论此类地址。
图26.9 兼容地址
一个 映射地址 ( mapped address ) 由80 位0 之后紧跟着16 位1 ,再后面跟着的就是32 位的IPv4 地址。当某个计算机已经过渡到IPv6 而打算把分组发送给一个仍然使用IPv4 的计算机时,就要使用这种地址。这个分组所经过的大部分网络是IPv6 的,但最后要交付到使用IPv4 的主机。例如,IPv4 地址2.13.17.14 (点分十进制格式)被转换为0::FFFF:2.13.17.14 (十六进制冒号格式)。IPv4 地址的前面加上80 个0 和16 个1 ,得到一个128 位的IPv6 地址(见第27.3 节有关过渡策略的介绍)。图26.10 所示为一个映射地址。
图26.10 映射地址
关于映射地址和兼容地址有一个非常有意思的地方,它们的设计使得在计算检验和时,可以使用嵌入的地址,也可以使用完整的地址,因为额外的0 或1 ,只要其个数是16 的倍数,对检验和的计算来说就没有任何影响。这一点对于使用了需要计算检验和的伪首部的UDP 和TCP 来说很重要,因为若分组的地址被某个路由器从IPv6 地址变为IPv4 地址后,检验和的计算不受影响。
全球单播地址块
这是因特网上主机与主机之间的单播通信所使用的主要地址块。我们将在后面全面而详细地讨论这个地址块,以说明它是如何在因特网中被用来提供分级编址的。
唯一的本地单播地址块
我们在第5 章介绍IPv4 协议时讨论过专用地址。我们说在IPv4 地址空间中有一些地址块被保留做专用地址。IPv6 为专用地址分配了两个地址块:一个是站点级的,一个是链路级的。在这一小节我们先讨论前一个地址块,下一小节再讨论后一个地址块。
在 唯一的本地单播地址块 (unique local unicast block )中有一个子块可被站点以个人行为进行创建和使用。这类地址作为目的地址的分组是不会被路由器转发的。这类地址的块标识是1111 110 ,紧接着的一位可以是0 或者1 ,它们定义了这个地址是如何被选择的(本地选择的,还是管理机构选择的)。接下来的40 位是由站点选择的,它使用了一个长度为40 位的随机生成数。也就是说这整个48 位定义了一个看起来很像全球单播地址的子地址块。40 位的随机数使得地址重复的可能性极小,参见图26.11 。请注意,这些地址在格式上和全球单播地址(本章后面讨论)有着相似之处。
图26.11 唯一的本地单播地址块
本地链路地址块
设计给专用地址的第二个地址块是 本地链路地址块 (link local block )。在这个地址块中有一个子块可用做网络中的专用地址。这类地址的块标识是1111111010 。接下来的54 位都被设置为0 。最后的64 位是可变的,以定义每个计算机的接口(参见图26.12 )。请注意,这些地址在格式上与全球单播地址(本章后面讨论)有着相似之处。
图26.12 本地链路地址
多播地址块
我们在第5 章介绍IPv4 协议时讨论过多播地址。多播地址用于定义了一组主机而不是仅仅一个主机。在IPv6 中为多播通信指派了一个很大的地址块。所有多播地址都使用前缀11111111 。第二个字段是定义组地址为永久的或暂时的一个标志。永久组地址由因特网管理机构定义,并可在任何时间进行访问。另一方面,暂时组地址只是临时使用。例如,加入到远程会议中的各个系统就可以使用一个暂时的组地址。第三个字段定义组地址的范围。现在已经定义了许多不同的范围,如图26.13 所示。
图26.13 多播地址
在IPv6 地址空间中,用于因特网上两个主机之间的单播(一对一)通信的地址块称为全球单播地址块。这个地址块的CIDR 记法是2000::/3 ,也就是说,对这个地址块中的所有地址来说最左边的三位都相同(001 )。这个地址块的大小是2125 ,就因特网的发展速度来看,它在未来很多年以后都足够用了。
这个地址块中的地址被划分为三个部分:全球路由选择前缀、子网标识和接口标识,如图26.14 所示。
图26.14 全球单播地址
这三个部分的推荐长度如表26.2 所示。
26.2  单播地址中各部分的推荐长度
块 的 指 派
长 度
全球路由选择前缀(n
48 位
子网标识(128 − n m
16 位
接口标识(m
64 位
 
全球路由选择前缀
全球单播地址的最前面48 位称为全球路由选择前缀。这48 位用来为分组选择路由以通过因特网到达某个组织的站点,比如说拥有这个地址块的ISP 。因为在这个部分中的最前面三位是固定的(001 ),所以剩下的45 位就可以定义高达245 个站点(个体组织或ISP )。全球因特网上的路由器都会根据n 的值来转发分组以到达它的目的站点。
子网标识
接下来的16 位定义了组织中的一个子网。这就意味着一个组织可以拥有高达216 = 65536 个子网,这个数量显然是足够用了。
接口标识
最后64 位定义了接口标识。这个接口标识类似于IPv4 的主机标识,只不过用接口标识这个术语会更加确切一些,因为正如我们在第5 章中所讨论的,实际上主机标识定义的也是一个接口,而非一个主机。如果主机从一个接口移动到另一个接口,它的IP 地址也要随之改变。
IPv4 编址中,在主机标识(IP 层的)和物理或MAC 地址(数据链路层的)之间是没有特殊关联的,因为通常物理地址的长度要远远超出主机标识的长度。例如,在使用以太网技术时,物理地址的长度是48 位,而主机标识的长度小于32 位。但是IPv6 编址就允许这种可能性的存在。只要长度小于64 位的物理地址都可以被嵌入到接口标识中,作为该接口标识的一部分或者全部,从而消除了地址映射过程。对此可以考虑两种常见的物理编址机制:由IEEE 定义的64 位的扩展唯一标识(EUI-64 )和由以太网定义的48 位的物理地址。
EUI-64 的映射  为了映射64 位的物理地址,该格式中的全球/ 本地控制位需要从0 变为1 (从本地的变为全球的)以定义一个接口地址,如图26.15 所示。
图26.15 EUI-64的映射
以太网 MAC 地址的映射  将一个48 位的以太网地址映射为一个64 位的接口地址要更复杂一些。我们需要把全球/ 本地控制位变为1 ,还要另外插入16 位。这个附加的16 位被定义为15 个1 后面跟着1 个0 ,或FFFE16 。图26.16 描绘了此映射。
图26.16 以太网MAC地址的映射
26.11
如果一个EUI 物理地址是(F5-A9-23-EF-07-14-7A-D2)16 ,试用我们为EUI 地址定义的格式来给出这个接口标识。
我们只需要将第一个八位组的第七位从0 变为1 ,然后再转换成十六进制冒号记法。其结果是F7A9:23EF:0714:7AD2 。
26.12
如果一个以太网地址为(F5-A9-23-14-7A-D2)16 ,试用我们为以太网地址定义的格式来给出这个接口标识。
我们只需要将第一个八位组的第七位从0 变为1 ,然后插入两个八位组FFFE16 ,再将其转换成十六进制冒号记法。结果是F7A9:23FF:FE14:7AD2 。
26.13
一个组织经指派得到了地址块2000:1456:2474/48 。这个组织的第一个和第二个子网的地址块的CIDR 记法是什么?
从理论上说,第一个和第二个子网应当分别使用子网标识为000116 和000216 的地址块。也就是说这两个地址块是2000:1456:2474:0000/64 和2000:1456:2474:0001/64 。
26.14
一个组织经指派得到了地址块2000:1456:2474/48 。如果在它的第三个子网中有一台计算机的以太网物理地址为(F5-A9-23-14-7A-D2)16 ,那么这个接口的IPv6 地址是什么?
这个接口的接口标识是F7A9:23FF:FE14:7AD2 (参见例26.12 )。如果我们在这个接口标识上再添加它的全球前缀和子网标识后,得到:
2000:1456:2474:0003: F7A9:23FF:FE14:7AD2/128
IPv6 的一个很有意思的地方是主机的 自动配置 (autoconfiguration )。如我们在讨论IPv4 时提到的,主机和路由器最初是由网络管理员手工配置的。不过,动态主机配置协议DHCP 可以为加入网络中的主机分配一个IPv4 地址。在IPv6 中,仍然可以使用DHCP 来为主机分配一个IPv6 地址,但是主机也可以自己进行配置。
当IPv6 中的一个主机加入到网络上时,它可以按照以下过程对自己进行配置:
1 .主机首先为自己创建一个本地链路地址。具体做法是,先在10 位的本地链路前缀(1111 1110 10 )后添加54 个0 ,再加上64 位的接口标识,所有主机都知道应该如何从它的接口卡上得到一个接口标识。最后的结果是128 位的本地链路地址。
2 .主机测试这个本地链路地址是否唯一,是否没有被其他主机使用。因为64 位的接口标识应当是唯一的,所以生成的这个本地链路地址是唯一的可能性很高。但是为了确保它的唯一性,主机要发送一个 邻站询问报文 (参见第28 章)并等待 邻站通告报文 。如果该子网中有任何主机正在使用这个本地链路地址,那么这个过程就失败了,主机不能自动配置自己,它需要换别的方法,如DHCP 协议。
3 .如果这个本地链路地址通过了唯一性测试,那么主机把这个地址作为它的本地链路地址保存起来(用于专用通信),但是它还需要一个全球单播地址。于是该主机向一个本地路由器发送 路由器询问报文 (参见第28 章)。如果在这个网络上运行着一台路由器,那么主机就会收到一个 路由器通告报文 ,其中包括了全球单播前缀和子网前缀,这正是主机需要用来添加到接口标识上的,从而产生该主机的全球单播地址。如果路由器不能帮助主机进行配置,那么该路由器就要在 路由器通告报文 中将这一情况如实相告(通过设置一个标志位),于是主机就需要用其他方法进行配置。
26.15
假设以太网地址为(F5-A9-23-11-9B-E2)16 的一台主机加入到网络中。如果该组织的全球单播前缀是3A21:1216:2165 且子网标识为A245:1232 ,那么它的全球单播地址应该是什么?
主机首先从接口卡上读出以太网地址,以生成自己的接口标识F7A9:23FF:FE11:9BE2 。然后这个主机创建自己的本地链路地址为
FE80::F7A9:23FF:FE11:9BE2
假定这个地址是唯一的,主机发送了一个路由器询问报文并收到路由器通告报文,路由器在报文中宣布全球单播前缀和子网标识的组合为3A21:1216:2165:A245:1232 。于是主机把自己的接口标识附加在这个前缀后面,就可以得到如下的全球单播地址并保存起来:
3A21:1216:2165:A245:1232:F7A9:23FF:FE11:9BE2
为了允许站点更换自己的服务提供者,在IPv6 编址中内建了对地址前缀(n )的 重新编号 (renumbering )。正如我们在前面所讨论的,每个站点都由它所连接的服务提供者指定一个前缀。如果站点要更换服务提供者,那么地址前缀也必须被更换。这个站点所连接的路由器可以通告一个新的前缀,同时也让站点在完全废除旧前缀之前,还可以短期内继续使用旧的前缀。换言之,在过渡期内一个站点有两个前缀。使用这种重新编号机制带来的最主要的问题是DNS 的支持,DNS 需要传播与域名相关联的新地址。称为下一代DNS 的一个新的DNS 协议正在研究中,以提供对重新编号机制的支持。
要更细致地了解本章所讨论的内容,我们推荐以下书籍和RFC 。用方括号括起来的书目可以在本书末尾的参考书目清单中找到。
有不少书籍全面地介绍了IPv6 。我们推荐[Com 06] 和[Los 04] 。
通过一些RFC 可以看出IPv6 地址的不断更新过程,包括RFC 2375 、RFC 2526 、RFC 3513 、RFC 3587 、RFC 3789 和RFC 4291 。

任播地址
自动配置
十六进制冒号记法
兼容地址
本地链路地址
本地链路地址块
映射的地址
重新编号
唯一的本地单播地址块
零压缩

 
q  IPv6 是网际协议的最新版本,它有 128 位的地址空间。 IPv6 使用十六进制冒号记法,对其还可使用简写。有三种类型的地址:单播、任播和组播。变长的类型前缀字段定义了地址的类型或作用。
q   为了使地址的可读性更好, IPv6 地址协议指明了十六进制冒号记法。在这种记法中, 128 位被划分为八个区,每个区的长度为 2 字节(四个十六进制数字)。为了简写地址,一个区的开头几个零可以忽略,还可以使用零压缩。 IPv6 也允许 CIDR 记法。
q   在 IPv6 中,一个目的地址可以属于以下三种类型之一:单播的、任播的和多播的。单播地址定义了一个接口。任播地址定义了一组计算机,但是分组只有一个副本被发送到这个组中的某一台计算机上。多播地址也定义了一组计算机,这个组的每一个成员都会收到该分组的一个副本。
q   IPv6 的地址空间被划分为若干个大小不同的地址块,并为每种特定的任务分配一个地址块。这些地址块中的绝大部分尚未被指派,留作将来使用。有些地址块用于保留的地址。最重要的地址块是前缀为 001 的块,它用于全球单播地址(类似于 IPv4 中的 A 类、 B 类和 C 类地址)。
q   在 IPv6 编址中,有两个很有意思的特色是自动配置和重新编号。在 IPv6 中,除了使用 DHCP 外,主机还能自动地对自己进行配置。重新编号则允许一个站点把自己的连接更换到另一个提供者,并自动地接收一个新的前缀。
1 .试给出以下IPv6 地址的未经简写的十六进制冒号记法:
a .64 个0 之后跟着32 个两位的01
b .64 个0 之后跟着32 个两位的10
c .连续64 个两位的01
d .连续32 个四位的0111
2 .试给出习题1 中的地址经过零压缩后的写法。
3 .试给出以下地址的简写。
a .0000:FFFF:FFFF:0000:0000:0000:0000:0000
b .1234:2346:3456:0000:0000:0000:0000:FFFF
c .0000:0001:0000:0000:0000:FFFF:1200:1000
d .0000:0000:0000:0000:FFFF:FFFF:24.123.12.6
4 .对以下地址解压缩,给出对应的完整未经简写的IPv6 地址:
a .::2222
b .1111::
c .0:1:2::
d .B:A:CC::1234:A
5 .给出以下地址的原始(未经简写)形式:
a .0::2
b .0:23::0
c .0:A::3
d .123::12:23
6 .根据表26.1 ,与以下每个地址相应的地址块或子块分别是什么?
a .FE80::12
b .FEC0::24A2
c .FF02::0
d .0::01
7 .根据表26.1 ,与以下每个地址相应的地址块或子块分别是什么?
a .0::0
b .0::FFFF:0:0
c .582F:1234::2222
d .4821::14:22
8 .如果一个接口的EUI 物理地址是(F5-A9-23-AA-07-14-7A-23)16 ,用我们为IEEE EUI 地址定义的格式给出这个接口的标识。
9 .如果一个接口的以太网物理地址是(F5-A9-23-12-7A-B2)16 ,用我们为以太网地址定义的格式给出这个接口的标识。
10 .某个组织被指派得到一个地址块为2000:1234:1423/48 。这个组织的第一个和第二个子网的地址块CIDR 记法分别是什么?
11 .某个组织被指派得到一个地址块为2000:1110:1287/48 。如果它的第三个子网中有一台计算机的以太网物理地址为(F5-A9-23-14-7A-D2)16 ,那么这个接口的IPv6 地址是什么?
12 .使用CIDR 记法,请给出IPv4 地址129.6.12.34 的IPv6 兼容地址。
13 .使用CIDR 记法,请给出IPv4 地址129.6.12.34 的IPv6 映射地址。
14 .使用CIDR 记法,请给出IPv6 的环回地址。
15 .使用CIDR 记法,请给出结点标识为0::123/48 的本地链路地址。
16 .使用CIDR 记法,请给出结点标识为0::123/48 的本地站点地址。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值