动态主机配置协议( 四 )


在下面的表2和图3中描述了DHCP协议包中信息的意义以及DHCP客户与服务器交换信息的流程图 。下面我们就过程简述如下:
1. 客户会首先进行广播,它要地址当然是它先开口,它在本子网段内广播一个DHCPDISCOVER消息,这个消息内可能包括了它希望租用的网络地方和租用时间 。BOOTP转发代理可以将这个消息传送到不在这个网段内的DHCP服务器上 。
2. 每个有空闲地址的DHCP服务器都响应这个消息,在响应消息中包括了可用的地址,这个地址在消息的"yiaddr"字段中,其它的配置参数在DHCP选项中 。服务器无需要保留已经分配的地址,虽然这样可能想起来更有效率 。在分配时,因为未保留已经分配的地址,服务器必须想办法知道这个地址未被别的客户使用,服务器可以使用ICMP协议的回应请求进行 。在分配地址时,服务器有时候可能需要使用BOOTP转发代理,这一点要在实现上给予支持 。下表是各种消息及其应用:
消息; 功能
-------;;;;---
DHCPDISCOVER - 客户进行广播以确定本地可用的服务器 。
DHCPOFFER;- 服务器给客户的应答,在其中包括了配置参数 。
DHCPREQUEST; - 此消息是客户发送给服务器的,作用有三个:客户从一台服务器上请求配置信息(在这个时候客户也就拒绝了其它服务器发来的地址,客户就用这个地址了);在系统重新启动后,客户利用这个消息确认原来分配的网络地址仍然有效;客户还可以腹这个地址对特定的网络地址租用时间要求延期 。
DHCPACK;;;- 服务器发向用户的消息,包括了配置参数和网络地址 。
DHCPNAK;;;- 服务器发向用户的消息,告知客户当前使用的网络地址无效或租期已满 。
DHCPDECLINE; - 客户发向服务器的消息,告知服务器此地址已被使用 。
DHCPRELEASE; - 客户发向服务器的消息,告知服务器此地址不再使用 。
DHCPINFORM- 客户发向服务器的消息,要求服务器发送本地配置信息,客户已经配置好了网络地址,不需要再发送网络地址了 。
3. 客户将会接收到一个或多个服务器发来的地址和配置参数 。客户可以不用那么急于回应哪一个地址,它也可以挑的 。当选择好了以后,客户广播DHCPREQUEST消息,在这个消息中的“服务器标记”字段中必须包括选定的服务器的标记,此消息中也可以包括希望获得的网络配置参数,而“请求IP地址”选项则要填写服务器发来信息包中"yiaddr"的内容,也就是服务器给客户提供的IP地址 。DHCPREQUEST消息在本网段广播,并通过DHCP/BOOTP转发代理向不同网段转发 。假如客户在规定时间内没有收到任何服务器的回应,它会再次发送DHCPDISCOVER 。
4. 许多服务器会接收到DHCPREQUEST广播,那些没有被选择的服务器将DHCPREQUEST视为拒绝包 。那个被选择的服务器会记录这个地址已经有人用了,并以包含配置参数的DHCPACK包返回给客户 。“客户标记”字段和指定的网络地址用以唯一确定一个客户 。服务器发送的DHCPACK包内的参数不应该和原来发送的DHCPOFFER包内的内容有冲突,服务器也不在这时再次检测提供的网络地址,在DHCPACK包内的"yiaddr"字段包括了选择的网络地址 。假如被选的主机不能满足DHCPREQUEST包内的要求,它应该以DHCPNAK包回复 。服务器可以将DHCPOFFER包内包括的地址设置为不可用,也可以不设置,但是假如服务器没有从客户那儿接收到DHCPREQUEST包,此地址一定要保证是可用的 。
)

更多的请看:http://www.QQread.com/windows/2003/index.Html
5. 客户接收到包括配置参数的DHCPACK包,它应该对此参数进行最后一次检查,不要和人家的冲突了,当没有发现冲突时客户才算真正配置好了 。假如客户发现有人已经使用了这个地址,它需要向服务器发送DHCPDECLINE包,并重新开始配置过程,当然了,客户机必须等待一段时间后才能进行重要的配置过程,假如紧接着就进行会对网络造成巨大的压力 。不但在地址冲突的时候要重新开始配置过程,在接收到DHCPNAK包时也要进行重要配置过程 。假如超时而未接收到DHCPACK或DHCPNAK包,客户需要再次发送DHCPREQUEST 。当然这个发送的过程要有一定的时间,不要人家服务器还没接收到呢,这边就放弃了 。假如重新发送后还是没有收到DHCPACK或DHCPNAK包,客户要返回初始状态,并通用用户,初始化过程失败,正在重新开始 。

推荐阅读