DHCP协议是如何工作的?
1、DHCP协议的设计目标
最主要的目标是使得基于TCP/IP的网络的治理易于实现和维护。Microsoft DHCP实现的部分目标如下:
◇集中TCP/IP IP子网的治理。所有IP地址,以及它们的配置参数都存储在DHCP服务器的中心数据库内。
◇自动TCP/IP IP地址的分配和配置。当客户计算机启动并首次访问网络时,自动给它分配IP地址、子网掩码、缺省网关以及WINS服务器IP地址。当该客户机在子网之间移动时(比如便携机),初始的IP地址以及相关配置信息释放回初始的可用IP地址池,客户在系统启动时重新分配新的IP地址以及相关的配置信息。
◇未使用的IP地址返回到可用IP地址池。通常情况下,IP地址由治理员静态分配,并且这些IP地址保存在一张纸上,或者存储在本地数据库中,但是当客户在子网移动或者分配了多个新的IP地址而未修改该IP地址表列时,该表列经常变得过期。这也意味着某些IP地址将丢失,从而不能再用。DHCP采用一种称为租用期限(Lease)的基于时间的机制,便利客户定期进行更新。假如租用期限已满,但客户并没有对它的IP地址进行更新,则该IP地址返回给可用IP地址池。
2、了解DHCP租用期限的工作原理
租用期限是整个DHCP过程的基础。DHCP服务器提供的每个IP地址都有相应的租用期。“租用期限”是一个精确的术语,因为DHCP服务器并不给客户分配永久的IP地址,而只答应客户在某个指定的时间内使用某个IP地址。当然无论是服务器还是客户都可以在任何时刻中止租用。
由于DHCP设计的目标之一就是提供动态IP地址,因此必须有办法将这些IP地址返回给地址池,这个方法就是所谓的“范围(scope)”。租用期的定义适用于不同的情况,没有一个租用期能够满足所有的需求。然而,我不推荐使用无限的租用期,即使是采用DHCP静态分配IP地址,也最好采用几个月的租用期来代替。
DHCP客户计算机经历了在建立客户计算机使用的有效IP地址过程中的6个转换状态。这六个状态是:
◇初始化:当启动客户的TCP/IP组时,由于在IP网络中的每台机器都需要有一个地址,因此TCP/IP组与地址0.0.0.0绑定在一起。然后它将一个DHCP Discover信息包发送给它的本地子网。该信息包时发送给UDP端口67,也即DHCP/BOOTP服务器端口的广播信息包。
◇选择:本地子网的每一个DHCP服务器都接收DHCP Discover信息包。每个接收请求的DHCP服务器都检查它是否有给请求客户的有效空闲地址。然后它以DHCP Offer信息包作为响应,该信息包包括有效的IP地址、子网掩码、DHCP服务器的IP地址、租用期限、以及其他的有关DHCP范围的具体配置。所有发送DHCP Offer信息包的服务器将保留它们提供的一个IP地址。在该地址不再保留之前,该地址不能分配给其他的客户。DHCP Offer信息广播发送给UDP端口68,也即DHCP/BOOTP客户端口。相应必须以广播方式发送,因为客户没有能直接寻址的IP地址。
◇请求:客户通常对第一个提议产生响应,并以广播的方式发送DHCP Request信息包作为响应。该信息包告诉服务器“是的,我想让你给我提供服务。我接收你给我的租用期限”。而且,一旦信息包以广播方式发送以后,网络中所有的DHCP服务器都可以看到该信息包,那些提议没有被客户承认的DHCP服务器将保留的IP地址返回给它的可用地址池。客户还可利用DHCP Request询问服务器其他的配置选项,如:DNS或网关地址。
◇捆绑:当服务器接收到DHCP Request信息包时,它以一个DHCP Acknowledge信息作为响应,该信息包提供了客户请求的任何其他信息。该信息包也是以广播的方式发送的。该信息包告诉客户“一切预备好。记住你只能租用该地址,而不能永久占据!好了,以下是你询问的其他信息”。
◇更新:当客户注重到它的租用期到了50%以上时,就要更新该租用期。这时它发送一个直接UDP信息包给他获得它的原始信息的服务器。该信息包是一个DHCP Request信息包,用以询问是否能保持TCP/IP配置信息并更新它的租用期。假如服务器是可用的,则它通常发送一个DHCP Acknowledge信息包给客户,同意客户的请求。
◇重新捆绑:当租用期达到期满时间的近87.5%时,客户假如在前一次请求中没能更新租用期的话,他会再次试图更新租用期。假如这次更新失败的话,客户就会试着与任何一个DHCP服务器联系以获得一个有效的IP地址。假如另外的一个DHCP服务器能够分配一个新的IP地址,则该客户再次进入捆绑状态。假如客户当前的IP地址租用期满,则客户必须放弃该IP地址,并重新进入初始化状态,然后重复整个过程。
注释:
当DHCP客户最初试图请求一个IP地址时,在网络中仅有4个网络信息包进行交换,它们是:DHCP Discover信息包、DHCP Offer信息包、DHCP Request信息包,以及DHCP Acknowledge信息包。每个信息包不超过400个字节。这样一来,网络由于DHCP带来的消耗就相对减少了。