IPV6 使用两种不同机制来支持即插即用网络连接。第一种机制的示例是启动协议( BOOTP ),后来又设计了动态主机配置协议( DHCP ),答应IP节点从非凡的BOOTP服务器或DHCP服务器获取配置信息。但是这些协议支持所谓的“状态自动配置”,即服务器必须保持每个节点的状态信息,并治理这些保存的信息。不论对于为许多个人用户服务的I S P,还是雇员经常在各部门间流动的大型机构,DHCP都是ipv4网络配置的重要工具。
状态自动配置与无状态自动配置
DHCP的问题在于,作为状态自动配置协议,它要求安装和治理DHCP服务器,并要求接受DHCP服务的每个新节点都必须在服务器上进行配置。很简单,DHCP服务器保存着它要提供配置信息的节点列表,假如节点不在列表中,该节点就无法获得IP地址。DHCP服务器还保持着使用该服务器的节点的状态,因为该服务器必须了解每个IP地址使用的时间,以及何时IP地址可以进行重新分配。
状态自动配置的问题在于,用户必须保持和治理非凡的自动配置服务器以便治理所有“状态”,即所容许的连接及当前连接的相关信息。对于有足够资源来建立和保持配置服务器
的机构,该系统可以接受;但是对于没有这些资源的小型机构,工作情形较差。至少对于大多数个人或小型机构,无状态自动配置是较好或较轻易的解决方案。这种机制答应个人节点能够确定自己的IP配置,而不必向服务器显式请求各节点的信息。
实际上,至少在理论上且进行了某些假定的情况下,无状态自动配置规程相对轻易实现。首先,假如使用IEEE EUI-64链路层地址(见第6章),用户就可以确信自己的主机I D是唯一的。因此,节点要完成的工作是确定自己的链路层地址并计算出EUI - 6 4地址,然后确定自己的IPV6网络地址。向最近的路由器询问是确定网络地址的一种方法,这就是IPV6中无状态自动配置的实现方式。
最后,根据IPV6中的定义,状态自动配置和无状态自动配置可以共存并可一起操作。后续章节中将涉及正在制订中的DHCP的更新版本,称为DHCPV6。两种类型自动配置方法的合作比单独使用其中一种更易于实现互联网络连接的即插即用。例如,使用无状态自动配置,节点可以很快确定自己的IP地址,而且一旦获得此信息,它就可以与DHCP服务器交互以获得所要求的其他网络配置值。实际上,DHCPV6很可能要依靠IPV6无状态自动配置来简化某些情况下的状态配置。
假如使用无状态自动配置要简单很多,那么为什么还要使用状态自动配置呢?此问题的答案取决于构造网络的机构的要求。无状态自动配置对得到IP地址的节点提供最低程度的监视。任一节点可以连接到链路,通过路由器向能实现无状态自动配置的节点发出的通告来获知网络和子网信息,并构造有效的链路地址。但是,假如有DHCP服务器的支持,机构可以更紧密地控制网络可配置的节点。只有由网络治理员明确授权的节点才能通过DHCP服务器来配置。
IPv6无状态自动配置
RFC1971(IPv6无状态地址自动配置)中描述了IPV6的无状态自动配置。该R F C还在更新,大多数修改是对原规范的澄清或细化,例如对潜在的路由器否认服务攻击的处理方法等。无状态自动配置过程要求节点采用如下步骤:首先,进行自动配置的节点必须确定自己的链路本地地址(如IEEE EUI-64 地址);然后,必须验证该链路本地地址在链路上的唯一性;最后,节点必须确定需要配置的信息。该信息可能是节点的IP地址,或者是其他配置信息,或者两者皆有。假如需要IP地址,节点必须确定是使用无状态自动配置过程还是使用状态自动配置过程来获得。
无状态自动配置要求本地链路支持组播,而且网络接口能够发送和接收组播。完成自动配置的节点首先将其链路本地地址(如IEEE EUI-64地址)追加到链路本地前缀之后。这样,节点就可以开始工作:它可以使用IPV6与同一网络链路上的其他节点通信,只要同一链路没有其他节点使用与之相同的EUI-64地址,该节点的IPV6地址就是可用的。
但是,在使用该地址之前,节点必须先证实起始地址在本地链路是唯一的,即,节点必须确定同一链路上没有其他节点使用与之相同的EUI-64地址。大多数情况下不会出现这个问题,大多数使用网络接口卡(如以太网适配器或令牌环适配器)的节点都有唯一的4 8位MAC地址;而对于通过点到点链路连接的节点,链路上只有一个端节点。但是,其他网络媒体可能没有唯一的MAC地址,某些网络接口卡也可能错误地使用了它们无权使用的MAC地址。此时,节点必须向它打算使用的链路本地地址发送邻居请求报文。假如得到响应,试图自动配置的节点就得知该地址已为其他节点所使用,它必须以其他方式来配置。
假如没有路由器为网络上的节点服务,即,假如本地网络孤立于其他网络,则节点必须寻找配置服务器来完成其配置;否则,节点必须侦听路由器通告报文。这些报文周期性地发往所有主机的组播地址(见第6章),以指明诸如网络地址和子网地址等配置信息。节点可以等待路由器的通告,也可以通过发送组播请求给所有路由器的组播地址来请求路由器发送通告。一旦收到路由器的响应,节点就可以使用响应的信息来完成自动配置。
BOOTP和DHCP
1985年,BOOTP首先在RFC951(自举协议)中描述,该协议的最初目的是答应工作站向本地服务器询问他们自己的IP地址、某服务器主机的地址以及自举执行文件的名称。对于某些应用,如无盘工作站从网络服务器上装入全部软件的情况,BOOTP的功能足够了;但是对于很多其他应用,如将个人机连接到ipv4网络,BOOTP的功能不足。其问题在于除BOOTP提供的信息之外,P C的TCP/IP网络软件需要更多的信息,如主机名字、域名、子网掩码及D N S服务器地址等。
到1993年,描述DHCP的RFC1531( 动态主机配置协议)得以发布。以BOOTP的报文结构为基础,DHCP增加了一些机制,用于传送将主机连接到ipv4 所需要的全部IP 配置信息。DHCP的功能与ipv4网络地址相对不足有关。例如,得到一个C类网络地址的机构最多有2 5 4 个地址来分配给用户。对于某些应用,这些地址很充足,例如一个花店中,连网的计算机不太可能超过几十台。但是,对于有数百名雇员的企业,尤其假如连接到网络的计算机超过250 台时,就可能产生地址分配的问题。
DHCP增加了在有限时期内向节点分配地址的能力。这意味着,对于较大型网络,假如同时连接的节点数不超过254,C类网络是足够的。ISP很愿意使用DHCP,因为这样他们所服务的用户数不再受限于他们控制的地址数,只要在任一时刻只有一部分用户连接到该IP,其他用户就不会浪费额外的未使用的IP地址。
DHCPv6
当然,与处理IP地址的其他协议相同,DHCP必须升级以支持IPV6地址。DHCPV6正在制订中。很显然,它不仅是为支持更长地址而进行的表面更新,由于IPV6中增加了无状态自动配置,对于DHCPV6,使用这个新能力将很有好处。
使用无状态自动配置,节点至少自动拥有了本地连接能力,DHCP也不再是提供一些其他基本配置参数所必需的方法。默认路由器不是配置的一部分,因为通过侦听路由器通告,任何节点都可以自行确定自己的默认路由器。
新的DHCP能支持各种新特性,例如:
• 配置动态更新DNS的能力,可以反映网络当前状态。
• 地址非难,即地址分配即将失效的状态,该机制可用于对网络进行动态重新编号