在TCP/IP网络上,每台工作站要能与其他计算机进行互联,都必须进行基本的网络配置,如IP地址、子网掩码、缺省网关、DNS等。对于小型网络,为每台计算机一一配置这样的属性也许还可以承受,但对于一个有几百、上千台的网络,这部分工作虽然简单,但工作量相当大,网络管理员就可能没有时间和精力来一一为这么多计算机配置了。这时我们通常是采用下面要讲的DHCP来自动为客户机分配IP地址了。
DHCP的全称是动态主机配置协议(Dynamic Host Configuration Protocol),它的目的就是为了减轻TCP/IP网络的规划、管理和维护的负担,解决IP地址空间缺乏问题(因为这样配置后,每一时刻只有实际连接的用户才分配IP地址,减少离IP地址的占用)。
DHCP分为两个部分:一个是服务器端╋而另一个是客户端。所有的 IP 网路设定资料都由 DHCP 服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境资料。DHCP 协议通过“"租约” 的概念,有效且动态的分配客户端的 TCP/IP 设定。
1. DHCP协议IP地址分配方式
DHCP协议的IP地址分配,必须至少有一台 DHCP 服务器工作在网路上。它会监听网络中的所有 DHCP 请求,并与客户端商议 TCP/IP 的设定环境。它提供两种 IP 定位方式:
Automatic Allocation(自动分配)
其分配方式是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端租用到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation (动态分配)
其分配方式是:当 DHCP 第一次从 HDCP服务器端租用到 IP 地址之后,并非永久的使用该位,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的延续(renew)租约,或是租用其它的 IP 地址。
动态分配显然比自动分配更加灵活,尤其是当您的实际 IP 地址不足的时候╋例如一家ISP只能提供1000 个IP地址用来给接入用户,但并不意味着您的客户最多只能有1000 个,因为您的客户基本上不太可能全部在同一时间上网的。这样,您就可以将这 1000 个地址,轮流的租用给接入上来的客户使用了,这样你允许的客户限制也就大大超过1000个了。 在企业局域网中也一样,如一些部门虽然有大量用户,但平时上网的却是其中的少部分(如市场部),则可以在IP地址紧张的情况下采用DHCP自动分配方式,则可节省大量的IP地址资源。
DHCP 除了能动态的设定 IP 地址之外,还可以将一些IP 保留下来给一些特殊用途的机器使用,也就是在动态之中还可以设置部分客户机的静态地址。通常是与主机网卡的物理地址(MAC地址)进行绑定的,这样可以给您更大的设计空间。同时,DHCP 还可以帮客户端指定router?netmask?DNS Server ?WINS Server等等属性,这样一来,您在客户端网络TCP/IP属性配置上,除了选择 DHCP选项之外,几乎无需做任何其他的 IP环境设定,大大提高了设置效率,减轻了工作量。
DHCP协议的作用可以用以下三个方面来解释:
集中TCP/IP IP子网的管理。所有客户机的IP地址,以及它们的配置参数都存储在DHCP服务器的中心数据库内。
自动为客户机进行TCP/IP IP地址的分配和配置。当客户计算机启动并首次访问网络时,自动给它分配IP地址、子网掩码、缺省网关以及WINS服务器IP地址。当该客户机在子网之间移动时(比如便携机),初始的IP地址以及相关配置信息释放回初始的可用IP地址池,客户在系统启动时重新分配新的IP地址以及相关的配置信息。
未使用的IP地址返回到可用IP地址池,提高IP地址使用效率。通常情况下,IP地址由管理员静态分配,并且这些IP地址保存在一张纸上,或者存储在本地数据库中,但是当客户在子网移动或者分配了多个新的IP地址而未修改该IP地址表列时,该表列常常变得过期。这也意味着某些IP地址将丢失,从而不能再用。DHCP采用一种称为租用期限(Lease)的基于时间的机制,便利客户定期进行更新。如果租用期限已满,但客户并没有对它的IP地址进行更新,则该IP地址返回给可用IP地址池。
DHCP协议的自动IP地址分配过程通常需要经过如下几个阶段:
初始阶段
当启动客户的TCP/IP组时,由于在IP网络中的每台机器都需要有一个地址,因此TCP/IP组与地址0.0.0.0绑定在一起。然后它将一个DHCP Discover信息包发送给它的本地子网。该信息包时发送给UDP端口67,也即DHCP/BOOTP服务器端口的广播信息包。
发现阶段
即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
提供阶段
本地子网的每一个DHCP服务器都接收DHCP Discover信息包。每个接收请求的DHCP服务器都检查它是否有给请求客户的有效空闲地址。然后它以DHCP Offer信息包作为响应,该信息包包括有效的IP地址、子网掩码、DHCP服务器的IP地址、租用期限、以及其他的有关DHCP范围的详细配置。所有发送DHCP Offer信息包的服务器将保留它们提供的一个IP地址。在该地址不再保留之前,该地址不能分配给其他的客户。DHCP Offer信息广播发送给UDP端口68,也即DHCP/BOOTP客户端口。相应必须以广播方式发送,因为客户没有能直接寻址的IP地址。
选择阶段
即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
确认阶段
即DHCP服务器确认所提供的IP地址的阶段。客户通常对第一个提议产生响应,并以广播的方式发送DHCP Request信息包作为响应。该信息包告诉服务器“是的,我想让你给我提供服务。我接收你给我的租用期限”。而且,一旦信息包以广播方式发送以后,网络中所有的DHCP服务器都可以看到该信息包,那些提议没有被客户承认的DHCP服务器将保留的IP地址返回给它的可用地址池。客户还可利用DHCP Request询问服务器其他的配置选项,如:DNS或网关地址。
重新登录阶段
以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
更新租约阶段
当客户注意到它的租用期到了50%以上时,就要更新该租用期。这时它发送一个直接UDP信息包给他获得它的原始信息的服务器。该信息包是一个DHCP Request信息包,用以询问是否能保持TCP/IP配置信息并更新它的租用期。如果服务器是可用的,则它通常发送一个DHCP Acknowledge信息包给客户,同意客户的请求。
重新捆绑阶段
当租用期达到期满时间的近87.5%时,客户如果在前一次请求中没能更新租用期的话,他会再次试图更新租用期。如果这次更新失败的话,客户机就会试着与任何一个DHCP服务器联系以获得一个有效的IP地址。如果另外的一个DHCP服务器能够分配一个新的IP地址,则该客户机再次进入捆绑状态。如果客户机当前的IP地址租用期满,则客户机必须放弃该IP地址,并重新进入初始化状态,然后重复整个过程。
【说明】DHCP服务不仅可以在主机上配置,像路由器等设备中也可以提供这类服务,最常见的就是宽带路由器,通过它的DHCP服务同样可以为客户机提供自动IP地址分配,减轻服务器主机的负担。