追溯至70年代后期、80年代初期,ip刚诞生的时候,几乎无人想到IP和Internet会发展为上万个不同网络、数千万个主机的规模。在描述早期IP实现的文档RFC814(名字、地址、端口和路由)中,只使用了32位地址中的8位来标识网络。即,这些互联网络最多只支持256个网络。即使较复杂的实现也使用比较简单的寻址机制,即单个网络使用一个选路表项来指定,每个网络内部的单个主机使用一个主机表项来指定。
主机名和网络域名与主机地址和网络地址是通过简单的表链接到一起的。假如一个主机的网络地址改变了,例如由于网络重构而导致地址变化,就必须更新相关的表。假如一个网络域的地址改变,也必须更新选路表。主机地址的变化只需要在主机所在的域内进行更新,而网络地址的变化还需要对外部路由器的表进行更新。通过使用域名系统(DNS)服务器可以简化这种情形,而DNS还有待充分地规范和实现。在DNS的支持下,节点可访问DNS服务器以查询与主机名字相对应的网络地址。因此应用程序无需考虑IP地址,除非主机名所对应的IP地址可能改变。
然而,使用IP地址作为主机或节点的全球唯一标识已经有很长的历史,而且暂时还很稳定。即,不仅每个IP主机和网络都是通过唯一地址标识的,而且在一段时间内,该地址将保持不变。直到90年代中期,这种方案的效果一直很好。当Internet作为一种通信媒体,大规模地提供给各机构和个人访问,如同使用电信业务一样,此时IP地址的使用和分发也随之发生了变化。此前,大多数使用IP和Internet的公司直接向负责编址的授权机构申请网络地址和网络域,直接负责自己的Internet(或Internet的前身,如NSFNet或ARPANet)连接,或与某些专业网络厂商(如Bolt,Beranek和Newman,即BBN)合作负责。
但是,当Internet进入商用之后,情况就发生了变化。尤其是随着负责编址的授权机构对地址进行严格治理,单独的机构不再直接控制其IP地址。这些授权机构把编址任务交给ISP来代理,并且与CIDR共同使用,这样就可以对路由进行集聚。由于选路表的膨胀,集聚路由成为一个重要特性。
这种趋势导致IP寻址发生了巨大变化。首先,若一个机构改变了其ISP,可能必须要随之改变其网络地址。其次,由于对IP地址的控制更加严格,一个有500个节点的机构可能只能得到255个节点的地址空间。本章将介绍一些与IP寻址机制相关的IP寻址分支,以及这些分支与IPv6选路的关系。
标识符和定位符
RFC2101(目前IPv4地址行为)发布于1997年2月,该文档描述了IPv4地址的使用如何随时间的推移而变化。它的要点在于对标识符和定位符的使用进行了区分。文档中将标识符定义为“两台主机的通信会话的整个生存期内使用的位串,用于对其中一台主机相对于另一台进行标识”。即,在用于Internet通信时,标识符看起来类似源主机的IP地址。而定位符被定义为“用于对某个特定包必须交付的位置进行标识的位串,例如它可用于在Internet拓扑中对目的主机所连接的位置进行定位”。即,定位符看起来类似目的主机的IP地址。
因此,标识符用于标识源端,而定位符用于标识目的端。这样做很直观,也很合理,主机IP地址既可以用作标识符,也可用作定位符。但是给予定位功能(即发现目的地)的优先权高于标识功能(即了解数据的源头)。即,与能够准确了解包的源头却不能交付该包相比,能够首先交付包然后再找出其源头更重要。
RFC2101的作者指出,对于标识符和定位符的要求有两个重要区别:一是唯一性,二是持久性。
首先讨论唯一性。对于通信节点双方来说,标识符必须是唯一的,即各节点之间进行通信时,其标识符都必须唯一。有唯一合法IP地址的主机能够通过识别有唯一合法IP地址的任何其他主机,且连接到同一个互联网的所有此类主机都是唯一的。而另一方面,对于相互通信的路由器而言,定位符仅在某些情况下要求是唯一的。即,在同一选路域内,定位符必须唯一,但在不同的选路域内,定位符可以重叠。例如,一个路由器可以将10号网络连接到其他网络,但不能将两个或多个10号网络互相连接,否则即使规范没有禁止转发10号网络的包,路由器也不知道该向哪条链路上发送目的地址为10号网络的包。
现在考虑持久性。标识符的生存期要比定位符长。标识符至少要保持到两个节点间的通信结束。假如在通信过程中,一个节点的标识符有所改变,另一个节点则无法对后续包正确寻址。而另一方面,定位符只在相关的选路机制需要时才起作用。即,对于在节点通信过程中定位符改变的情况,路由器有能力进行处理。
目前,尽管定位符和标识符大多来源于节点的IPv4地址,但两者还是有不同的属性,且其理想化特性不同而且不一致。例如,理想的标识符只在节点初次安装到网络上时分配一次,其后永远不变。理想的标识符与一个节点相捆绑,并且只捆绑到一个节点,不能再重新使用或重新分配,这样就可以一直将该标识符与该节点相链接,而不会链接到其他节点。总之标识符的功能是将节点作为数据源进行标识。
而另一方面,定位符用于确定包必须向何处发送,它不需要持续很长时间,但是它应该描述在网络拓扑中节点实际所处的位置。这样,假如主机在网络拓扑中的位置由于某种原因而改变,定位符也随之改变。例如,假如主机从一个网络中迁移到另一个网络中,在理想情况下,其定位符应该改变。同样,假如主机所连接的网络重新编号,主机的定位符也随之变化。
RFC2101的作者已注重到,不论作为定位符或标识符,IP地址都不理想。由于IP地址不再是全球唯一的,例如网络号10代表了共享同一网络和主机地址的相当大一部分IP节点,因此它不是理想的标识符。同时IP地址缺乏持久性的情况越来越多,因此它更不适合作为标识符。对于依靠DHCP来分配临时IP地址的网络,今天这个IP地址由一个节点使用,明天可能由另一个节点使用。
同样,IP地址作为定位符也有其不足。其一,网络号10无法说明此节点在互联网中的位置。其二,由于历史原因,网络地址无法说明该网络与其他网络的位置关系。当然随着越来越多的网络路由使用CIDR进行集聚,这种情况发生了一些变化。某一CIDR块内的网络地址通常由负责该块的机构来处理。但是,对于B类网络,或在CIDR广泛应用之前已分配地址的网络,其地址无法说明此网络在Internet中的位置。其三,假如改变ISP,网络拓扑随之发生变化,但是除非该机构对网络重新编号,否则网络地址无法反映这种拓扑的变化,而重新编号又使IP地址作为标识符的稳定性受到影响。
地址分配、无缝互操作和网络拓扑
RFC2008(Internet选路的不同地址分配策略的含义)发布于1996年10月,该文档提出了有关IP选路的一些问题,并描述了地址分配的“当前最好惯例”。此文档的基本前提是对“地址借出”方法的研究,相对于传统的“地址所有权”方法,该方法极大地改善了性能和扩展性。
换言之,该RFC鼓励能够采用地址借出方法的机构使用由其ISP分配的IP地址,一旦机构改变其ISP,地址也要随之变化。这意味着该机构是向ISP暂借其IP地址,而ISP负责为客户集聚业务。通过集聚,ISP只需维护更少的路由,且Internet的整个扩展性得以改善。但是,集聚也意味着假如机构决定改变ISP,就必须改变其IP地址,以便新的ISP可以对其路由进行集聚。
另一种方法—地址所有权方法导致了地址表的急剧膨胀。但数据流是由其他节点导向一个特定的IP地址时,即在使用IP地址作为标识符时,IP地址还是有很好的实用价值。
然而,使用IP地址作为标识符将导致很多问题。首先,在处理网络业务、升级或改变节点功能方面,用户因此损失了相当多的灵活性。使用DNS,用户可以将一个逻辑名字(如www.loshin.com)捆绑到一个地址,该地址可能随时间变化。例如,用户很轻易将其web站点的捆绑从已过时的80486微机上移到第三方web呈现供给商所运行的高端SMP服务器上,用户只需将其逻辑名的DNS映射从一个IP地址改变为另一个IP地址。
灵活性的用途很大。在上例中,Internet呈现供给商需要将用户的域名映射为自己服务器的IP地址,需要为用户个人系统分配新的主机名。更重要的是,必须要求IP应用程序只使用逻辑节点名,而不能使用IP地址,这样这些应用才能在IPv4和IPv6链路上无缝互操作。假如应用程序只涉及逻辑节点名,就可以采用其他方法来实现节点名和节点地址的映射。有关取决于IPv6的协议这方面及其他方面的论题将在第10章讨论。
使用地址借出方法的最大优点是IP地址可以反映出网络拓扑。在图8-1中,ISPB为Acme公司分配了一个网络地址,这样该公司就可以通过ISPB连接到ISPQ,再通过ISPZ连接到Internet。假如所有的IP地址都借给用户,网络的性能和可扩展性就可以获得显著提高。对于要发送给Acme公司的包,图中的源节点知道首先要选路到ISPZ,对于链接到ISPZ左边的所有网络,都使用该路由。如图所示,在ISPZ只有三条路由,分别连接到其客户ISPP、ISPQ和ISPR。同样,ISPQ也只需要有三条路由,分别连接到其客户ISPA、ISPB和ISPC。
Acme公司从ISPB借用IP地址,假如改变ISP,就必须重新编号。例如,该公司认为ISPA能提供更好的服务且价格更低。此时,ISPQ就必须改变其选路表以呈现Acme公司的新地址,但是对于已经向Acme公司发送的包,更高层的ISP和Internet内另一侧的路由器仍然通过ISPZ进行选路。Acme公司可以决定自己需要只来自上一层ISP的高层服务,此时需要改变更多的路由。但是,该公司应该注重到地址借出能够显著改善扩展能力和性能,代价是一旦改变ISP,或其ISP改变了上级ISP,就必须对该公司的网络重新进行编号。RFC2008的作者指出假如使用某种NAT或应用网关,可以无需对内部主机重新编号。他们还指出,集聚和地址借出的目的不应是构造尽可能小的选路表,而应是减缓现有选路表的增长速度,以确保额外的增长不会影响到选路的性能。
IP路由集聚和地址借出使IP地址能反映Internet拓扑
此出提出的问题和IPv4寻址机制密切相关,但是这些RFC的写作都是以向IPv6升级为前提的,指出IPv4的可以改进之处有助于说明IPv6寻址从何处及如何改进。