Ipv4尴尬的现状
Internet起源于1968年开始研究的ARPANET,当时的研究者们为了给ARPANET建立一个标准的网络通信协议而开发了IP协议。 IP协议开发者当时认为ARPANET的网络个数不会超过数十个,因此他们将IP协议的地址长度设定为32个二进制数位,其中前8位标识网络,其余24位标识主机。然而随着ARPANET日 膨胀,IP 协议开发者认识到原先设想的网络个数已经无法满足实际需求,于是他们将32位IP地址分成了三类:A类,用于大型企业:B类,用于中型企业;C类,用于小型企业。A类、B类、C类地址可以标识的网络个数分别是128、16384、2097152,每个网络可容纳的主机个数分别是16777216、65536、256。虽然对IP地址进行分类大大增加了网络个数,但新的问题又出现了。由于一个C类网络仅能容纳256个主机,而个人计算机的普及使得许多企业网络中的主机个数都超出了256,因此,尽管这些企业的上网主机可能远远没有达到B类地址的最大主机容量65536,但InterNIC不得不为它们分配B类地址。这种情况的大量存在,一方面造成了IP地址资源的极大浪费,另一方面导致B类地址面临着即将被分配殆尽的危险。
非传统网络区域路由(Classless InterDomain Routing, CIDR),是节省B类地址的一个紧急措施。CIDR的原理是为那些拥有数千个网络主机的企业分配一个由一系列连续的C类地址组成的地址块,而非一个B类地址。例如,假设某个企业网络有15 00个主机,那么可能为该企业分配8个连续的C类地址,如:192. 56.0.0至192.56.7.0,并将子网掩码定为255.255.248.0,即地址的前21位标识网络,剩余的11位标识主机。尽管通过采用CID R,可以保护B类地址免遭无谓的消耗,但是依然无法从根本上解决IPv4面临的地址耗尽问题。
另一个延缓IPv4地址耗尽的方法是网络地址翻译(Network AddressTranslation, NAT),它是一种将无法在Internet上使用的保留IP地址翻译成可以在Internet上使用的合法IP地址的机制。NAT使企业不必再为无法得到足够的合法IP地址而发愁了,它们只要为内部网络主机分配保留IP地址,然后在内部网络与I nternet交接点设置NAT和一个由少量合法IP地址组成的IP地址池,就可以解决大量内部主机访问Internet的需求了。由于目前要想得到一个A类或B类地址十分困难,因此许多企业纷纷采用了NAT 。然而,NAT也有其无法克服的弊端。首先,NAT会使网络吞吐量降低,由此影响网络的性能。其次,NAT必须对所有去往和来自 Internet的IP数据报进行地址转换,但是大多数NAT无法将转换后的地址信息传递给IP数据报负载,这个缺陷将导致某些必须将地址信息嵌在IP数据报负载中的高层应用如FTP和WINS注册等的失败。
IPv6的对策
IPv6采用了长度为128位的IP地址,彻底解决了IPv4地址不足的难题。128位的地址空间,足以使一个大企业将其所有的设备如计算机、打印机甚至寻呼机等联入Internet而不必担心IP地址不足。
IPv6的地址格式与IPv4不同。一个IPv6的IP地址由8个地址节组成,每节包含16个地址位,以4个十六进制数书写,节与节之间用冒号分隔,除了128位的地址空间,IPv6还为点对点通信设计了一种具有分级结构的地址,这种地址被称为可聚合全局单点广播地址(aggregatable global unicastaddress),其分级结构划分如图所示。开头3个地址位是地址类型前缀,用于区别其它地址类型。其后的13位TLA ID、32位NLA ID、16位SLA ID和 64位主机接口ID,分别用于标识分级结构中自顶向底排列的TLA (TopLevel Aggregator,顶级聚合体)、NLA(Next Level Ag gregator,下级聚合体)、SLA(Site Level Aggregator,位置级聚合体)和主机接口。TLA是与长途服务供应商和电话公司相互连接的公共网络接入点,它从国际Internet注册机构如IANA处获得地址。NLA通常是大型ISP,它从TLA处申请获得地址,并为 SLA分配地址。SLA也可称为订户(subscriber),它可以是一个机构或一个小型ISP。SLA负责为属于它的订户分配地址。SLA通常为其订户分配由连续地址组成的地址块,以便这些机构可以建立自己的地址分级结构以识别不同的子网。分级结构的最底级是网络主机。
Ipv6中的地址配置
众所周知,手工配置主机IP地址是一件既费时又乏味的事情,而管理分配给主机的静态IP地址更是一项艰难的任务,尤其当主机IP地址需要经常改动的时候。在IPv4中,动态主机配置协议( Dynamic Host ConfigurationProtocol,DHCP)实现了主机IP地址及其相关配置的自动设置。一个DHCP服务器拥有一个IP地址池,主机从DHCP服务器租借IP地址并获得有关的配置信息(如缺省网关、DNS服务器等),由此达到自动设置主机IP地址的目的。IP v6继承了IPv4的这种自动配置服务,并将其称为全状态自动配(stateful autoconfiguration)。
除了全状态自动配置,IPv6还采用了一种被称为无状态自动配置(stateless autoconfiguration)的自动配置服务。在无状态自动配置过程中,主机首先通过将它的网卡MAC地址附加在链接本地地址前缀1111111010之后,产生一个链接本地单点广播地址(IEEE已经将网卡MAC地址由48位改为了64位。如果主机采用的网卡的MAC地址依然是48位,那么IPv6网卡驱动程序会根据 IEEE的一个公式将48位MAC地址转换为64位MAC地址)。接着主机向该地址发出一个被称为邻居探测(neighbordiscovrey)的请求,以验证地址的唯一性。如果请求没有得到响应,则表明主机自我设置的链接本地单点广播地址是唯一的。否则,主机将使用一个随机产生的接口ID组成一个新的链接本地单点广播地址。然后,以该地址为源地址,主机向本地链接中所有路由器多点广播一个被称为路由器请求(router solicitation)的配置信息请求,路由器以一个包含一个可聚合全局单点广播地址前缀和其它相关配置信息的路由器公告响应该请求。主机用它从路由器得到的全局地址前缀加上自己的接口ID,自动配置全局地址,然后就可以与Internet中的其它主机通信了。
使用无状态自动配置,无需手动干预就能够改变网络中所有主机的IP地址。例如,当企业更换了联入Internet的ISP时,将从新ISP处得到一个新的可聚合全局地址前缀。ISP把这个地址前缀从它的路由器上传送到企业路由器上。由于企业路由器将周期性地向本地链接中的所有主机多点广播路由器公告,因此企业网络中所有主机都将通过路由器公告收到新的地址前缀,此后,它们就会自动产生新的IP地址并覆盖旧的IP地址。
Ipv6中的安全协议
安全问题始终是与Internet相关的一个重要话题。由于在I P协议设计之初没有考虑安全性,因而在早期的Internet上时常发生诸如企业或机构网络遭到攻击、机密数据被窃取等不幸的事情。为了加强Internet的安全性,从1995年开始,IETF着手研究制定了一套用于保护IP通信的IP安全(IPSecurity,IPSec)协议。IPSec是IPv6的一个组成部分,也是IPv4的一个可选扩展协议。
IPSec提供了两种安全机制:认证和加密。认证机制使IP通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭到改动。加密机制通过对数据进行编码来保证数据的机密性,以防数据在传输过程中被他人截获而失密。IPSec的认证包头
(Authentication Header,AH)协议定义了认证的应用方法,封装安全负载(Encapsulating Security Payload,E SP)协议定义了加密和可选认证的应用方法。在实际进行IP通信时,可以根据安全需求同时使用这两种协议或选择使用其中的一种.AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。
在一个特定的IP通信中使用AH或ESP时,协议将与一组安全信息和服务发生关联,称为安全关联(Security Association, SA)。SA可以包含认证算法、加密算法、用于认证和加密的密钥。 IPSec使用一种密钥分配和交换协议如Internet安全关联和密钥管理协议(Internet Security Association andKey Manageme nt Protocol,ISAKMP)来创建和维护SA。SA是一个单向的逻辑连接,也就是说,两个主机之间的认证通信将使用两个SA,分别用于通信的发送方和接收方。
IPSec定义了两种类型的SA:传输模式SA和隧道模式SA。传输模式SA是在IP包头(以及任何可选的扩展包头)之后和任何高层协议(如TCP或UDP)包头之前插入AH或ESP包头,隧道模式SA 是将整个原始的IP数据报放入一个新的IP数据报中。在采用隧道模式SA时,每一个IP数据报都有两个IP包头:外部IP包头和内部 IP包头。外部IP包头指定将对IP数据报进行IPSec处理的目的地址,内部IP包头指定原始IP数据报最终的目的地址。传输模式S A只能用于两个主机之间的IP通信,而隧道模式SA既可以用于两个主机之间的IP通信,还可以用于两个安全网关之间或一个主机与一个安全网关之间的IP通信。安全网关可以是路由器、防火墙或VPN设备。
做为IPv6的一个组成部分,IPSec是一个网络层协议。它只负责其下层的网络安全,并不负责其上层应用的安全,如Web、电子邮件和文件传输等。也就是说,验证一个Web会话,依然需要使用SSL协议。不过,TCP/IPv6协议簇中的协议可以从IPSec中受益,例如,用于IPv6的OSPF路由协议就去掉了用于IPv4的OSP F中的认证机制。
Ipv4向Ipv6的过渡
尽管IPv6比IPv4具有明显的先进性,但是IETF认识到,要想在短时间内将Internet和各个企业网络中的所有系统全部从IPv 4升级到IPv6是不可能的,换言之,IPv6与IPv4系统在Internet 中长期共存是不可避免的现实。为此,做为IPv6研究工作的一个部分,IETF制定了推动IPv4向IPv6过渡的方案,其中包括三个机制:兼容IPv4的IPv6地址、双IP协议栈和基于IPv4隧道的IPv6。
兼容IPv4的IPv6地址是一种特殊的IPv6单点广播地址,一个 IPv6节点与一个IPv4节点可以使用这种地址在IPv4网络中通信。这种地址是由96个0位加上32位IPv4地址组成的,例如,假设某节点的IPv4地址是192.56.1.1,那么兼容IPv4的IPv6地址就是0:0:0:0:0:0:C038:101。
双IP协议栈是在一个系统(如一个主机或一个路由器)中同时使用IPv4和IPv6两个协议栈。这类系统既拥有IPv4地址,也拥有IPv6地址,因而可以收发IPv4和IPv6两种IP数据报。
与双IP协议栈相比,基于IPv4隧道的IPv6是一种更为复杂的技术,它是将整个IPv6 数据报封装在IPv4数据报中,由此实现在当前的IPv4网络(如Internet)中IPv6节点与IPv4节点之间的I P通信。基于IPv4隧道的IPv6实现过程分为三个步骤:封装、解封和隧道管理。封装,是指由隧道起始点创建一个IPv4包头,将 IPv6数据报装入一个新的IPv4数据报中。解封,是指由隧道终结点移去IPv4包头,还原原始的IPv6数据报。隧道管理,是指由隧道起始点维护隧道的配置信息,如隧道支持的最大传输单元(M TU)的尺寸等。
IPv4隧道有四种方案:路由器对路由器、主机对路由器、主机对主机、路由器对主机。如图所示的使用IPv4路由基础设施传递IPv6数据报的网络中,可以根据两个主机之间特定的通信选用相应的隧道方案。例如:当主机2向主机4发送一个IPv6数据报时,路由器A将把该IPv6数据报封装在一个目的地址为路由器B的IPv 4数据报中。当路由器B收到该IPv4数据报后,就将它解封,取出其中的IPv6数据报并将其发往主机4。在这个隧道中,隧道 终结点(路由器B)不是数据报的最终目的地址(主机4)。当隧道起始点(路由器A)建立隧道时,必须确定隧道终结点并从配置信息中找到隧道终结点的地址,因此这种类型的隧道被称为配置隧道(configured tunneling)。当主机7向主机1发送一个IPv6数据报时,主机7在它与路由器A之间建立一个主机对路由器隧道。因为路由器A不是该数据报的最终目的地址,所以这种主机对路由器隧道也是配置隧道。
当进行通信的两个主机都有兼容IPv4的IPv6地址时,数据发送方主机将建立一个主机对主机隧道。隧道起始点(数据发送方主机)确定数据接收方主机就是隧道终结点,并自动从其兼容I Pv4的IPv6地址中抽取后32个地址位以确定隧道终结点的IPv4地址,这种类型的隧道被称为自动隧道(automated tunneling)。例如,当图中的主机5向主机7发送 数据时,将使用从主机5到主机7的自动隧道。自动隧道也可以应用于路由器对主机的隧道方案,例如,当主机4向主机5发送数据时,主机4 将使用从路由器 B到主机5的自动隧道。
双IP协议栈和基于IPv4的IPv6网络使IPv4网络能够以可控的速度向IPv6迁移。在开始向IPv6过渡之前,首先必须设置一个同时支持IPv4和IPv6的新的DNS服务器。在该DNS服务器中,IPv6主机名称与地址的映射可以使用新的AAAA资源记录类型来建立,I Pv4主机名称与地址的映射仍然使用A资源记录类型来建立。
结论
IPv6是一个建立可靠的、可管理的、安全和高效的IP网络的长期解决方案。尽管IPv6的实际应用之日还需耐心等待,不过,了解和研究IPv6的重要特性以及它针对目前IP网络存在的问题而提供的解决方案,对于制定企业网络的长期发展计划,规划网络应用的未来发展方向,都是十分有益的。