IPv6地址表达方式、寻址模型和地址空间 多年以来, IP地址被认为是可以在IP网络上最终唯一并持久的节点标识符。
近年中,尤其是随着下一代IP技术的发展,对于IP地址的这种观点正在改变。
如果我们仍像过去2 0年中所使用的方法来分配网络和节点地址,那将是一种不必要和低效的办法。
本章在介绍了RFC 2373(IPv6寻址体系结构)中描述的IP寻址体系结构之后,将首先介绍一些与IP寻址相关的议题。
然后将介绍几种可能的地址分配方法。
本章将IPv6寻址分成了以下几个部分: 1 2 8位地址的结构和命名及IPv6地址的不同类型(单播、组播和泛播)。
IPv6的设计者们可以只是简单地在IPv4寻址体系结构中扩大地址空间。
但是这样一来将使我们丧失一个改进IP的巨大机会。
对于整个寻址体系结构的修改所带来的巨大机会,不仅体现在提高地址分配的效率上,同时也体现在提高IP选路性能上。
本章将介绍这些改进,第8章对于IPv6选路议题将有更加详细的介绍。
而地址分配、移动网络技术和自动配置将在第11章中有详细讲解。
RFC 2373于1 9 9 8年7月发表,并废弃了最早于1 9 9 5年1 2月发表的RFC 1884(IPv6寻址体系结构)。
其中大部分变化源自在最初的R F C发布后的两年半中被认为是必需要进行澄清、更正和修改之处。
地址 IPv4与IPv6地址之间最明显的差别在于长度: IPv4地址长度为3 2位,而IPv6地址长度为1 2 8位。
RFC 2373中不仅解释了这些地址的表现方式,同时还介绍了不同的地址类型及其结构。
IPv4地址可以被分为2至3个不同部分(网络标识符、节点标识符,有时还有子网标识符),IPv6地址中拥有更大的地址空间,可以支持更多的字段。
IPv6地址有三类、单播、组播和泛播地址。
下一节将对此作更详细的介绍。
单播和组播地址与IPv4的地址非常类似;但IPv6中不再支持IPv4中的广播地址,而增加了一个泛播地址。
本节介绍的是IPv6的寻址模型、地址类型、地址表达方式以及地址中的特例。
地址表达方式 IPv4地址一般以4部分间点分的方法来表示,即4个数字用点分隔。
例如, 下面是一些合法的IPv4地址,都用十进制整数表示: 10.5.3.1 127.0.0.1 201.199.244.101 IPv4地址也时常以一组4个2位的十六进制整数或4个8位的二进制整数表示,但后一种情况较少见。
IPv6地址长度4倍于IPv4地址,表达起来的复杂程度也是IPv4地址的4倍。
IPv6地址的基本表达方式是X:X:X:X:X:X:X:X,其中X是一个4位十六进制整数( 16位)。
每一个数字包含4位,每个整数包含4个数字,每个地址包括8个整数,共计1 2 8位( 4×4×8 = 128 )。
例如,下面是一些合法的IPv6地址: CDCD:910A:2222:5498:8475:1111:3900:2020 1030:0:0:0:C9B4:FF12:48AA:1A2B 2000:0:0:0:0:0:0:1 请注意这些整数是十六进制整数,其中A到F表示的是1 0到1 5。
地址中的每个整数都必须表示出来,但起始的0可以不必表示。
这是一种比较标准的IPv6地址表达方式,此外还有另外两种更加清楚和易于使用的方式。
某些IPv6地址中可能包含一长串的0 (就像上面的第二和第三个例子一样)。
当出现这种情况时,标准中允许用“空隙”来表示这一长串的0。
换句话说,地址 2000:0:0:0:0:0:0:1 可以被表示为: 2000::1 这两个冒号表示该地址可以扩展到一个完整的1 2 8位地址。
在这种方法中,只有当1 6位组全部为0时才会被两个冒号取代,且两个冒号在地址中只能出现一次。
在IPv4和IPv6的混合环境中可能有第三种方法。
IPv6地址中的最低3 2位可以用于表示IPv4地址,该地址可以按照一种混合方式表达,即X:X:X:X:X:X:d.d.d.d,其中X表示一个1 6位整数,而d表示一个8位十进制整数。
例如,地址 0:0:0:0:0:0:10.0.0.1 就是一个合法的IPv4地址。
把两种可能的表达方式组合在一起,该地址也可以表示为: ::10.0.0.1 由于IPv6地址被分成两个部分—子网前缀和接口标识符,因此人们期待一个IP节点地址可以按照类似CIDR地址的方式被表示为一个携带额外数值的地址,其中指出了地址中有多少位是掩码。
即,IPv6节点地址中指出了前缀长度,该长度与IPv6地址间以斜杠区分,例如: 1030:0:0:0:C9B4:FF12:48AA:1A2B/60 这个地址中用于选路的前缀长度为6 0位。
寻址模型 IPv6寻址模型与IPv4很相似。
每个单播地址标识一个单独的网络接口。
IP地址被指定给网络接口而不是节点,因此一个拥有多个网络接口的节点可以具备多个IPv6地址,其中任何一个IPv6地址都可以代表该节点。
尽管一个网络接口能与多个单播地址相关联,但一个单播地址只能与一个网络接口相关联。
每个网络接口必须至少具备一个单播地址。
这里有一个非常重要的声明和一个非常重要的例外。
这个声明与点到点链路的使用有关。
在IPv4中,所有的网络接口,其中包括连接一个节点与路由器的点到点链路(用许多拨号Internet连接中),都需要一个专用的IP地址。
随着许多机构开始使用点到点链路来连接其分支机构,每条链路均需要其自己的子网,这样一来消耗了许多地址空间。
在IPv6中,如果点到点链路的任何一个端点都不需要从非邻居节点接受和发送数据的话,它们就可以不需要特殊的地址。
即,如果两个节点主要是传递业务流,则它们并不需要具备IPv6地址。
为每个网络接口分配一个全球唯一的单播地址的要求阻碍了IPv4地址的扩展。
一个提供通用服务的服务器在高需求量的情况下可能会崩溃。
因此, IPv6地址模型中又提出了一个重要的例外:如果硬件有能力在多个网络接口上正确地共享其网络负载的话,那么多个网络接口可以共享一个IPv6地址。
这使得从服务器扩展至负载分担的服务器群成为可能,而不再需要在服务器的需求量上升时必须进行硬件升级。
下面将要讨论的组播和泛播地址也与网络接口有关。
一个网络接口可以具备任意类型的多个地址。
地址空间 RFC 2373中包含了一个IPv6地址空间“图”,其中显示了地址空间是如何进行分配的,地址分配的不同类型,前缀(地址分配中前面的位值)和作为整个地址空间的一部分的地址分配的长度。
在IPv6地址分配中需要注意几点。
首先,在RFC 1884中,地址空间的四分之一被用于两类不同地址:八分之一是基于供应商的单播地址,而另八分之一是基于地理位置的单播地址。
人们希望地址的分配可以根据网络服务供应商或者用户所在网络的物理位置进行。
基于供应商的集聚,正如它最初的名字一样,要求网络从提供Internet接入的供应商那里得到可集聚的IP地址。
但是,这种方法对于具有距离较远的分支机构的大型机构来说并不是一种完美的解决办法,因为其中许多分支机构可能会使用不同的供应商。
基于供应商的集聚将为这些大单位带来更多的IP地址管理问题。
Steve Deering提议把基于地理位置的地址分配方法作为SIP( SIPP的前身,在第4章中有介绍)中的一种办法。
这些地址与基于供应商的地址不同,以一种非常类似IPv4的方法分配地址。
这些地址与地理位置有关,且供应商将不得不保留额外的路由器来支持IPv6地址空间中可集聚部分外的这些网络。
ISP实际上并不赞同这个解决方案,因为管理基于地理位置的寻址将大大增加复杂性(和花费)。
另一方面,难以对基于供应商的地址进行配置和重配置也引起许多对基于供应商的分配方案的反对。
如果没有广泛使用基于IPv4自动配置方案(如DHCP ),那么所有机构的网络将会存在巨大的管理问题。
尽管IPv6对于自动配置功能有着更好的支持,但并没有将地理位置的分配方法最终融合进去。
注意,绝大部分的地址空间并没有分配,地址分配的第一部分被保留了下来。