Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
早在20世纪90年代初期,人们就意识到IPv4地址可能消耗殆尽的问题,当时各方面的专家预测显示,如果IPv4地址的分配按照目前的增长率继续下去,那么在未来短短几年间就将耗尽所有的地址空间。于是,人们就提出了一个新的IP地址版本来解决这个问题,以前在开发阶段这个新的IP地址版本被称为IP下一代版本(或者称为IPng),而现在一般称为IP 协议第六版(或称为IPv6)。但是众所周知,发展一种新的标准需要时间逐步部署,因此,在发展新标准的过程中还需要一种解决IPv4地址耗尽问题的短期方案。
这种短期的解决方案就是网络地址转换(Network Address Translation——NA T),它允许多台主机共享一个或较少的公用IP地址。在NA T设备上,相对外部公共网络的内部网络使用私有IP地址,私有IP地址的使用规则在RFC1918(请求注释)中有详细的描述。读者后面会注意到,在本书的大多数例子中都会使用这种私有IP地址。NA T技术在减缓IPv4地址耗尽问题方面显然非常成功,并在大多数网络设计中已经成为一个标准部分。因而,至今仍然有很多人对发展IP协议新版本的必要性提出质疑。但是,NA T技术的广泛使用把原来具有开放、透明、对等特点的Internet变成了看上去更像一个具有客户-服务器(Client-Server)结构的网络的巨大集合。而用户则只在外围连接到Internet的“边缘层”,Internet向他们提供服务。用户很少对Internet的整体资源作出贡献。更多的从某种经济的角度看,Internet的用户仅仅成为了消费者,而不是生产者。
虽然大多数IPv6协议标准在多年前就已经完成了,但对从IPv4到IPv6协议迁移的巨大兴趣也只是最近才显现出来。这种日益重视使用IPv6协议的背后来自于两个基本的推动力。第一个基本的推动力是对使用诸如移动IP协议(Mobile IP)、服务质量保证、端到端的安全、网格计算(grid computing),以及点到点网络互连等核心概念的新型应用的先见之明。NA T 技术遏制了这些领域的创新,因而摒弃NA T技术的惟一手段就是提供充足的并且易于使用的公共IP地址。
促进IPv6协议发展的第二个基本推动力就是拥有众多人口的国家快速的现代化发展,例如中国和印度。一个引人注目的统计数字显示,目前剩余的未分配的IPv4地址数目几乎和中国的人口一样多:大约还有13亿个地址。随着中国国家Internet网络基础设施的急剧扩展,在不久的将来,仅中国就会对现有已经十分紧张的IPv4地址池带来难以忍受的压力。在印度,其人口也接近于中国的人口,不得不继续保留一个具有4~5层NA T技术的网络层次架构,以支持对IP地址的需求。
IPv6协议使用128位的地址替代32位的IPv4地址,这样大约可以产生340万亿亿亿亿(3.4×1038)个可用的地址。在可预见的未来,这个地址数目将可以满足公共IP地址的需求,也可以解决上面讨论的两个基本推动力需要的地址需求。1
1考虑到在IPv4地址分配时所没有预见到的情况——当时IPv4所拥有的43亿个地址被认为可以无限的提供给所有的实际需求,Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
2.1.1 地址表示法
读者一定已经了解32位的IPv4地址的表示方式了,IPv4地址被分割为4个8位段,其中每个8位段的数字大小在0~255之间,并且每个8位段之间使用英文符号句点“.”来分开,因此有时也使用术语“点分十进制表示法”来专指IPv4地址的这种表示法。
而128位的IPv6地址则被分割成8个16位段来表示,其中每个16位段书写为大小在0x0000~0xFFFF之间的十六进制的数字表示,并且每个16位段之间使用英文符号冒号“:”来分开。例如,下面就是一个IPv6地址的书写方式:
3ffe:1944:0100:000a:0000:00bc:2500:0d0b
要想记住更多一些像这样表示的地址实际上是几乎不可能的,当然书写这些地址也不是一件令人愉快的事情。幸运地是,有两条规则可以用来简化IPv6地址书写的大小。第一条规则是:
tcpip协议在设计时就考虑了如何解决安全问题
任何一个16位段中起始的0不必写出来;任何一个16位段如果少于4个十六进制的数字,就认为忽略书写的数字是起始的0。
在前面提到的地址例子中,第3、4、5、6和8个分段都包含有起始的0。利用这个地址压缩简化规则,该地址可以书写为:
3ffe:1944:100:a:0:bc:2500:d0b
这里要注意的是,只有起始的0才可以被忽略掉;末尾的0是不能忽略的,因为这样做会使16位分段变得不确定,你无法确切地判断所省略的0是在所写的数字之前还是在其之后。
另外,还有一个值得注意的地方是,上述的地址例子中的第5个分段全部是0,并且被书写为单个0。事实上,有许多IPv6地址中具有一长串的0。举例如下:
ff02:0000:0000:0000:0000:0000:0000:0005
这个地址可以简写为以下形式:
ff02:0:0:0:0:0:0:5
然而,利用第二个规则可以进一步地简化这个地址的书写格式:
任何由全0组成的1个或多个16位段的单个连续的字符串都可以用一个双冒号“::”来表示。
利用这条规则,上面例子中的地址可以表示成如下格式:
ff02::5
使用这样的方式书写上面这样的地址显然可以增加很多便利。但是在这里要注意的是,Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
这条规则强调的是仅仅对于单个连续不间断的全0字符串分段部分能够用一个双冒号“::”来表示,在一个IPv6地址中使用多于一个以上的双冒号会引起含混不清。下面举一个这样的地址例子作为说明:
2001:0d02:0000:0000:0014:0000:0000:0095
对于上面这个地址,以下两种地址的缩写方式都被认为是正确的,因为它们都只使用了一次双冒号:
2001:d02::14:0:0:95
2001:d02:0:0:14::95
但是,请读者注意,下面这个缩写方式是不正确的,因为它使用了两次双冒号:
2001:d02::14::95
之所以认为上面这个缩写方式是错误的,是因为它中间的两个全0字符串的长度是含混不清的,从而无法确定它们的长度;它可以表示成下面的任何一种可能的IPv6地址:2001:0d02:0000:0000:0014:0000:0000:0095
2001:0d02:0000:0000:0000:0014:0000:0095
2001:0d02:0000:0014:0000:0000:0000:0095
不像IPv4协议的前缀(即地址的网络部分)可以通过点分十进制或十六进制地址掩码标识,或可以通过位计数(bitcount)来标识,IPv6协议的前缀始终通过位计数的方式来标识。更确切地说,通过在IPv6地址后面加一个斜线“/”,随后再跟一个十进制的数字来标识一个IPv6地址的起始位有多少位是前缀位。举一个例子,下面这个地址的前缀就是起始的64位:
3ffe:1944:100:a::bc:2500:d0b/64
当读者需要书写一个IPv6地址的前缀时,也可以使用和IPv4地址一样的书写方式将所有的主机位设置为0。例如:
3ffe:1944:100:a::/64
一个由全0组成的IPv6地址能够被简单地写成一个双冒号。在本书中,存在两种实例使用了全0的地址。第一个实例就是缺省地址,这将在第12章中讨论,在那里缺省地址表示为全0的形式,并且它的前缀长度也是0:
::/0
第二个使用全0的IPv6地址的实例是未指定地址(unspecified address)。未指定地址使用在某些邻居发现协议过程中,邻居发现协议将在本章后面的章节中讲述。一个未指定地址就像一个填充器,用来标识一个还未确定的实际IPv6地址。在书写一个未指定地址的时候要注意,它与缺省地址的书写方式是有区别的,它们的前缀长度不同:
Cisco Learning Network China (思科网络学习空间)
learningnetwork.cisco/community/connections/china
Cisco Learning Network China (思科网络学习空间)    learningnetwork.cisco/community/connections/china
Cisco Learning Network China (思科网络学习空间)    learningnetwork.cisco/community/connections/china
::/128
2.1.2  IPv6的地址类型
IPv6地址存在以下三种类型:
· 单播(Unicast );
· 任意播(Anycast );
· 多播(Multicast )。
和IPv4相比,IPv6地址有一个重要的不同,IPv6地址协议中没有广播地址。但是,IPv6地址协议提供了一个包含“全部节点”的多播地址,用来实现与IPv4地址协议中广播地址同样的目的。
1.全球单播地址
单播地址用来表示单台设备的地址。一个全球单播地址是指这个单播地址是全球惟一的。IPv6单播地址的通用格式如图2-1所示。该格式在RFC3587中有详细地描述,并取代和简化了早期的格式版本,早期的格式将IPv6单播地址分成了顶级聚合(Top Level Aggregator ,TLA )、次级聚合(Next-Level Aggregator ,NLA )和其他字段。但是,读者应该了解的是,这个被取代的格式其实相对来说是最近才被替代的,因而,读者在一些书籍和资料中可能仍然会碰到对这个旧的IPv6地址格式的描述。
图2-1  IPv6通用的单播地址格式
地址的主机部分被称作接口ID (Interface ID )。之所以取这个名字是因为一台主机可以拥有不止一个的IPv6接口,因而使用这样的地址标识主机的一个接口比标识一台主机本身更加准确。但是,它的精确性也就仅仅到此为止:单个接口也能够拥有多个IPv6地址,并且能够拥有一个附加的IPv4的地址,在这样的实例中,接口ID 仅仅表示该接口的几个标识符的其中一个。
除了长度不同外,IPv6地址与IPv4地址协议之间最显著的不同就是子网标识符的位置不同。IPv6地址的
子网标识符的位置是地址的网络域的一部分,而不是该地址的主机域的一部分。在IPv4地址分类体系结构的传统概念中,一个地址的子网部分来自于该地址的主机部

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。