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

来源:互联网 发布:少女前线mac 编辑:程序博客网 时间:2024/05/08 18:33

 

 
 
 
 
 
第五部分
下 一 代
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地址的自动配置和重新编号问题。
26.1 引言
IPv6地址的长度是128 位或者说16个字节(八位组),如图26.1所示。IPv6地址的长度是IPv4地址长度的四倍。
图26.1 IPv6地址
26.1.1 记法
在计算机中,地址通常以二进制保存,但是很显然,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
26.1.2 地址空间
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平方米)。
26.1.3 三种地址类型
在IPv6中,一个目的地址可以属于以下三种类型之一:单播的、任播的和多播的。
单播地址
单播地址定义了一个接口(计算机或路由器)。发送到单播地址的分组必须交付给这个指定的计算机。我们将在稍后会看到,IPv6为单播通信设计了一个很大的地址块,其中的单播地址都可以指派给接口使用。
任播地址
任播地址定义了一组共享一个地址的计算机。发送到任播地址的分组会被交付给这个组的成员之一,也就是最容易到达的那一个。例如,当多台服务器都能响应某个查询时,就可以使用任播通信。这个查询请求被发送到最容易到达的那台服务器。产生请求的硬件和软件只生成了一份请求的副本,而该副本也仅到达其中的一台服务器。IPv6没有为任播设计专门的地址块,这些任播地址是从单播地址块中指派的。
多播地址
多播地址定义的也是一组计算机,但是任播和多播是有区别的。在多播通信中,多播组的每个成员都会接收到一个副本。稍后我们将会看到,IPv6发送到多播地址的分组必须交付给该组中的每一个成员。IPv6为多播通信设计了一个地址块,从这个地址块中可以向一个组的所有成员指派相同的地址。
26.1.4 广播和多播
有趣的是IPv6没有定义广播通信,哪怕是在有限范围内的广播,这一点不像IPv4。在第5章中,我们讨论了在一个地址块中的某些地址能够被用于有限的广播。我们将会看到,IPv6认为广播就是多播的一种特殊情况。
26.2 地址空间分配
像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.2.1 指派的和保留的地址块
这一小节要讨论各个已指派的和被保留的地址块的特点和作用,让我们从表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 多播地址
26.3 全球单播地址
在IPv6地址空间中,用于因特网上两个主机之间的单播(一对一)通信的地址块称为全球单播地址块。这个地址块的CIDR记法是2000::/3,也就是说,对这个地址块中的所有地址来说最左边的三位都相同(001)。这个地址块的大小是2125,就因特网的发展速度来看,它在未来很多年以后都足够用了。
26.3.1 三级结构
这个地址块中的地址被划分为三个部分:全球路由选择前缀、子网标识和接口标识,如图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
26.4 自动配置
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
26.5 重新编号
为了允许站点更换自己的服务提供者,在IPv6编址中内建了对地址前缀(n)的重新编号(renumbering)。正如我们在前面所讨论的,每个站点都由它所连接的服务提供者指定一个前缀。如果站点要更换服务提供者,那么地址前缀也必须被更换。这个站点所连接的路由器可以通告一个新的前缀,同时也让站点在完全废除旧前缀之前,还可以短期内继续使用旧的前缀。换言之,在过渡期内一个站点有两个前缀。使用这种重新编号机制带来的最主要的问题是DNS的支持,DNS需要传播与域名相关联的新地址。称为下一代DNS的一个新的DNS协议正在研究中,以提供对重新编号机制的支持。
26.6 深入阅读
要更细致地了解本章所讨论的内容,我们推荐以下书籍和RFC。用方括号括起来的书目可以在本书末尾的参考书目清单中找到。
26.6.1 参考书
有不少书籍全面地介绍了IPv6。我们推荐[Com 06]和[Los 04]
26.6.2 RFC
通过一些RFC可以看出IPv6地址的不断更新过程,包括RFC 2375、RFC 2526、RFC 3513、RFC 3587、RFC 3789和RFC 4291
26.7 重要术语

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

 
26.8 本章小结
q IPv6是网际协议的最新版本,它有128 位的地址空间。IPv6使用十六进制冒号记法,对其还可使用简写。有三种类型的地址:单播、任播和组播。变长的类型前缀字段定义了地址的类型或作用。
q 为了使地址的可读性更好,IPv6地址协议指明了十六进制冒号记法。在这种记法中,128 位被划分为八个区,每个区的长度为2字节(四个十六进制数字)。为了简写地址,一个区的开头几个零可以忽略,还可以使用零压缩。IPv6也允许CIDR记法。
q IPv6中,一个目的地址可以属于以下三种类型之一:单播的、任播的和多播的。单播地址定义了一个接口。任播地址定义了一组计算机,但是分组只有一个副本被发送到这个组中的某一台计算机上。多播地址也定义了一组计算机,这个组的每一个成员都会收到该分组的一个副本。
q IPv6的地址空间被划分为若干个大小不同的地址块,并为每种特定的任务分配一个地址块。这些地址块中的绝大部分尚未被指派,留作将来使用。有些地址块用于保留的地址。最重要的地址块是前缀为001的块,它用于全球单播地址(类似于IPv4中的A类、B类和C类地址)。
q IPv6编址中,有两个很有意思的特色是自动配置和重新编号。在IPv6中,除了使用DHCP外,主机还能自动地对自己进行配置。重新编号则允许一个站点把自己的连接更换到另一个提供者,并自动地接收一个新的前缀。
26.9 实践安排
26.9.1 习题
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的本地站点地址。
原创粉丝点击