IPv6被称为“下一代因特网协议",最初开发它旨在解决IPv4面临的地址耗尽危机。你可能知道IPv6的一些皮毛,但为提供灵活性、效率、容量和优化的功能,开发人员一直在不断改进它,以满足人们日益增长的需求。相比于IPv6, IPv4的容量太小了,这就是IPv4终将退出历史舞台的原因所在。

IPv6报头和地址结构经过了全面修改;在IPv6中,反思IPv4后补充的众多功能已成为标准的一部分。IPv6 整装待发,为满足庞大的因特网需求作好了充分准备。我保证本章简单易懂;事实上,你可能发现阅读本章是种享受一我在编写时 就有这样的感觉!

IPv6复杂而不失优雅,拥有众多新功能,它像一辆崭新的兰博基尼与一部引人入胜的未来主义小说的新奇组合。但愿你阅读本章的感受与我编写时一样。

为何需要IPv6

为何需要IPv6呢?简单地说,是因为我们需要通信,而当前的系统无法真正满足这种需求一就像快马邮递无法与航空邮递比肩。只要看看为节省带宽和IP地址投入了多少时间和精力,就能明白这一点。为避免地址耗尽,甚至发明了变长子网掩码( VLSM )。

连接到网络的用户和设备每天都在增加,这不是坏事,而是好事,它让我们找到了随时与更多人交流的新途径。事实上,这是人类的基本需求。但前景并不乐观,正如我在本章开头指出的,我们当前进行通信依赖的是IPv4,而IPv4地址即将耗尽。从理论上说,IPv4提供的地址只有43亿左右,但并非每一个地址都可供我们使用。使用无类域间路由选择( CIDR )和网络地址转换(NAT),确实可以推迟IPv4地址耗尽的时间,但这些地址也会在几年内耗尽。在中国,还存在大量个人和公司未连接到因特网上。有很多报告提供了各种数字,但只要想想全球当前有大约68 亿人口,而据估计大约只有10%多-点儿的人连接到了因特网,你就会相信我并非危言耸听。

上述统计数字揭示了一个残酷的事实,鉴于IPv4的容量,人均一台电脑都不可能,更不用说配备在电脑上的其他IP设备了。我就有几台计算机,别人很可能也是这样。这还没有包括电话、笔记本电脑、游戏控制台、传真机、路由器、交换机以及我们日常使用的众多其他设备!我应该说得很明白了,我们必须采取措施,以免地址被耗尽,最终人们无法彼此通信,而这种措施就是实现IPv6。

IPv6 的优点和用途

那么,IPv6有何神奇之处呢?它真能让我们脱离即将到来的困境吗?真的值得从IPv4 升级到IPv6吗?这些问题都很好一你可能还想到了其他一些问题。当然,有那么一群人,他们患有久经考验和众所周知的“拒绝改变综合征”,但绝不要听他们的。倘若很多年前人们接受了这些人的观点,那么现在还在用快马递信,人们需要等待数周甚至数月才能收到。相反,你只需知道答案绝对是肯定的。IPv6不仅提供了大量地址(3.4x10*8, 这绝对足够了),还内置了众多其他的功能,值得花资金、时间和精力迁移到IPv6。

当今的网络和因特网有众多创建IPv4时没有预见到的需求;为满足这些需求,我们使用了一些附加功能,但实现起来比较困难,倘若它们是标准的组成部分,实现起来将容易得多。IPv6 对这些功能作了改进,并将其纳人标准。一个这方面的新标准是IPSec,它提供了端到端安全性。

另一个优点是移动性。顾名思义,它允许设备在网络之间漫游,而不会中断连接。但最令人震撼的是效率更高了。首先, IPv6分组报头包含的字段减少了一半,且所有字段都与64位边界对齐,这极大地提高了处理速度一相比于 IPv4, 查找速度要快得多!原来包含在IPv4报头中的很多信息都删除了,但可在基本报头字段后面添加可选的扩展报头,将这些信息或其一部分加入报头。

当然,还有前面说过的海量地址(3.4x10*),但这些地址来自何方呢?难道是魔术师变出来的?

我的意思是说这么多的地址必须有出处!这是因为IPv6 提供的地址空间非常大,即地址很长一比IPv4长4倍。IPv6地址长128 位,但不用担心,在以后,我会剖析这种地址的各个部分,让你知道它是什么样的。新增的长度让地址空间可包含更多的层次,从而提供了更灵活的编址架构。这还提高了路由选择的效率和可扩展性,因为可以更有效地聚合地址。IPv6还允许主机和网络有多个地址,这对亟须改善可用性的企业来说显得尤其重要。另外,IPv6还更广泛地使用了组播通信(一台设备向很多主机或一组选 定的主机发送数据),这也将提高网络的效率,因为通信目标方更具体了。

IPv4大量地使用广播,这会导致很多问题,其中最糟糕的是可怕的广播风暴不受控制地四处转发广播可能耗尽所有带宽,导致整个网络瘫痪。广播令人讨厌的另一点是,它会导致网络中的每台设备都中断。广播发送后,每台设备都必须停下手中的工作,对广播作出响应,而不管广播是否是发送给它的。

令人欣喜的是,IPv6 没有广播的概念,它使用组播。IPv6 还支持另外两种通信:单播和任意播,其中单播与IPv4中相同,而任意播是新增的。任意播可将同一个地址分配给多台设备,而向该地址发送数据流时,它会被路由到共享该地址的最近主机。

IPv6地址及其表示

理解IPv4地址的结构和用法至关重要,对IPv6地址来说亦如此。你知道,IPv6 地址长128位,这比IPv4地址长得多,因此除了要以新方式使用IPv6地址外,IPv6 地址管理起来也更复杂。但不用担心,这里将解释IPv6 地址的组成部分、如何书写及其众多常见的用法。IPv6地址刚开始看起来可能有些神秘,但很快你就会掌握它!

请看图15-1其中晶示了一个IPv6地址及其组成部分。

正如你看到的,IPv6地址确实长得多,但除此之外,还有什么不同呢?首先,注意到它包含8组(而不是4组)数字,且用冒号而不是句点分隔。且慢,地址中还有字母!与MAC地址一样, IPv6地址是用十六进制表示的,因此可以这样说: IPv6 地址包含8个用冒号分隔的编组,每组16位,并用十六进制表示。这已经很拗口了,而你可能还未尝试大声朗读!

你肯定想组建测试IPv6的网络,因此这里指出另外一点: 使用Web 浏览器连接到IPv6设备的HtTP连接时,必须将IPv6地址用方括号括起。为什么呢?因为冒号已被浏览器用来指定端口号。如果不用方括号将地址括起,浏览器将无法识别地址。

下面是一个这样的例子: .

http://[2001 : 0db8: 3c4d:0012 :0000:0000:1234: 56ab]/default .htm1

显然,在可能的情况下,你更愿意使用名称来指定目的地(如www.lammle.com),但必须接受这样的事实:有时候,不得不咬紧牙关,输人地址,虽然这样做无疑很痛苦。显然,实现IPv6时,DNS也极其重要。

注意:在IPv6地址中,每个字段包含4个十六进制字母(16位),字段之间用冒号分隔。

简化表示

好消息是,书写这些大型地址时,有很多简写方式。其中之一是可省略地址的某些部分,但必须遵守一些规则。首先,可省略各个字段中的前导零。这样做后,前面的示例地址将变成下面这样:

2001 : db8: 3c4d: 12 :0:0:1234: 56ab

这显然要好得多一至少无需书写所有多余的零了!但对于只包含零的字段,该如何办呢?也可将它们省略一至少是其中的一部分。还是以前面的地址为例,可省略两个只包含零的相邻字段,并用两个冒号替代它们,如下所示:

2001 : db8: 3c4d:12 ::1234: 56ab

很好一使用两个冒号替代了相连的全零字段。这样做时必须遵守如下规则:只能替换相连的全零字段一次。因此,如果地址中有4个全零的字段,但它们彼此不相邻,则不能全部替换它们;请记住,这里的规则是只能替换相连的全零字段一次。请看下面的地址:

2001 :0000:0000:0012 : 0000: 0000:1234:56ab

不能将其简化成下面这样:2001: :12::1234: 56ab

相反,最多只能将其简化成这样:2001: :12:0:0:1234:56ab

为什么呢?因为如果替换两次,设备见到该地址后,将无法判断每对臂号代表多少个字段。路由器见到这个错误的地址后,将发出这样的疑问:我是将每对冒号都替换为两个全零字段呢,还是将第一对冒号替换为3个全零字段,并将第二对冒号替换为1个全零字段?路由器无法回答这个问题,因为它没有所需的信息。

地址类型

我们熟悉IPv4单播地址、广播地址和组播地址,它们指定了要与哪台设备( 至少是多少台设备)通信。但前面说过,IPv6 改变了这种三重唱局面,新增了任意播;另外,由于广播效率低下,IPv6不再支持它。

下面介绍这些IPv6地址类型和通信方法的功能。

  • 单播地址目标地址为单播 地址的分组被传输到单个接口。为均衡负载,位于多台设备中的多个接口可使用相同的地址,但这种地址被称为任意播地址。单播地址分多种,但这里不详细介绍。

  • 全局单播地址这是典型的可路由的公有地址,与IPv4 中的单播地址相同。全局地址以200:/3打头。

  • 链路本地地址类似于 IPv4私有地址,也是不可路由的,它们以FE80:/10打头。可将它们视为一种便利的工具,让你能够为召开会议而组建临时LAN,或创建小型LAN,这些LAN不与因特网相连,但需要在本地共享文件和服务。

  • 唯一的本地地址这些 地址也是不可在因特网路由的,但也基本上是全局唯一的, 因此不太可能重复使用它们。唯一的本地地址设计用于替代场点本地地址,因此它们的功能几乎与IPv4私有地址相同:支持在整个场点内通信,可路由到多个本地网络。场点本地地址已于2004年9月废除。

  • 组播地址与 IPv4中一样,目标地址为组播地址的分组被传输到该组播地址表示的所有接口。

这种地址有时也被称为一对多地址。IPv6组播地址很容易识别,它们总是以FF打头。

任意播地址与组播地址一样,任意播地址也标识多个设备的多个接口,但有一个很大的差别:任意播分组只被传输到一个接口一根据路由 选择距离确定的最近接口。这种地址的特殊之处在于,可将单个任意播地址分配给多个接口。这种地址被称为“一对最近"地址。

你可能会问,在IPv6中,是否有保留的特殊地址,因为IPv4有这样的地址。答案是很多,下面就介绍它们!

特殊地址

下面列出一些绝对应该牢记的地址范围,因为我们总是会用到它们。它们都是特殊地址或保留用于特定目的的地址,但不同于IPv4, IPv6提供的地址非常多,因此保留一些不会有任何害处。

  • 0:0:0:0:0:0:0:0 (::)相当于IPv4地址0.0.0.0,通常在使用有状态DHCP配置时,用作主机的源地址。

  • 0:0:0:0:0:0:0:1 (::1)相当于 IPv4地址127.0.0.1。

  • 00:0:0:0:0:0:192.168.100.1在同时支持 IP4和IPv6的网络中,从IPv4地址转换而来的IPv6地址通常这样书写。

  • 2000:/3全局单播地址范围。

  • FCO0::/7唯一的本地单播 地址范围。

  • FE80:/10链路本地单播地址范围。

  • FF00::/8组播地址范围。

  • 3F:F::/32保留举例和编写文档时使用。

  • 2001:0DB8::/32保留举例和编写文档时使用。

  • 2002::/16保留供6to4隧道技术使用。6to4 隧道技术是一种从IPv4迁移到IPv6的方法,让IPv6分组能够通过IPv4网络进行传输,而无需配置显式的隧道。