DHCP交互过程
标准的DHCP server端与client端的交互过程如下:
1. 发现阶段:CLIENT首先发出广播的DHCPDISCOVER报文,广播的目的是让DHCP SERVER能够收到这个请求报文在这个报文中CLIENT可以在选项字段中加入“request paramter list” 选项,表明自己想要获得的各种参数,而且四个IP地址字段都必须为0。
2.提供阶段:由于DHCPDISCOVER报文是广播,那么所有的DHCP SERVER都能够收到所有的DHCP SERVER都会响应一个DHCPOFFER报文,其中你的IP地址字段就是DHCP SERVER能够提供给CLIENT使用的IP地址,而且DHCP SERVER会把自己的IP地址放在选项字段中以便CLIENT区分不同的DHCP SERVER,发出此报文后在DHCP SERVER上就会存在一个已分配IP地址的记录。
3.选择阶段:CLIENT能够收到所有的DHCPOFFER报文,但CLIEN只能处理其中的一个。一般的原则是CLIENT接收处理最先收到的那个DHCPOFFER报文,CLIENT会再发出一个广播的DHCPREQUEST报文,在选项字段中会加入选中的DHCP SERVER的IP地址和用户想要的IP地址,之所以广播是因为要通知所有的DHCP SERVER进行相应的处理。
4.确认阶段:DHCP SERVER收到DHCPREQUEST报文判断选项字段中的DHCP SERVER的IP地址是否与自己的地址相同,不相同则不做任何处理。如果自己发出过DHCPOFFER报文,则清除相应IP地址记录,当选项字段中的DHCP SERVER的IP地址是与自己的IP地址相同时,DHCP SERVER就会响应一个DHCPACK报文,其内容同DHCPOFFER类似并在选项字段中增加了IP地址使用租期选项。
5.验证阶段:CLIENT收到DHCPACK报文后(经过上面的处理后有且只有一个DHCPACK报文)会检查DHCP SERVER分配给自己的IP地址是否能够使用,如在以太网类型的网络中,CLIENT会发出免费的ARP请求来确定DHCP SERVER分配的IP地址是否已经被别人使用。如果可以使用,则CLIENT成功获得IP地址并根据IP地址使用租期自动启动续延过程 ;如果CLIENT发现DHCP SERVER分配的IP地址已经被别人使用,则CLIENT会发出DHCPDECLINE报文通知DHCP SERVER禁用这个IP地址以免引起IP地址冲突,然后CLIENT又开始新的DHCP过程从第1步开始。
6.续约阶段:当CLIENT成功获取IP地址后会根据IP地址使用租期自动启动续延过程,在使用租期过去50%时刻处向DHCP SERVER发送单播DHCPREQUEST报文续延租期。如果成功,即收到DHCP SERVER的DHCPACK报文则租期相应向前延长,如果失败,即没有收到DHCPACK报文则CLIENT继续使用这个IP地址,在使用租期过去87.5%时刻处向DHCP SERVER发送广播DHCPREQUEST报文续延租期,如果成功即收到DHCP SERVER的DHCPACK报文,则租期相应向前延长,如果失败即没有收到DHCPACK报文,则CLIENT继续使用这个IP地址,在使用租期到期时CLIENT应自动放弃使用这个IP地址并开始新的DHCP过程从第1步开始。
7.释放阶段:CLIENT在成功获取IP地址后,随时可以通过发送CLIENTRELESE报文释放自己的IP地址,DHCP SERVER收到CLIENTRELESE报文后,会回收相应的IP地址并重新分配。
DHCP CLIENT的行为
所有支持DHCP 协议并能够发起DHCP过程的终端都称之为DHCP CLIENT,包括普通PC机,各种特殊设备,如CABLE MODEM,IDT等。DHCP CLIENT自己必须能够发出DHCPDISCOVER,DHCPREQUEST,DHCPDECLINE等报文(DHCPINFORM报文也是DHCP CLIENT发出但实际中很少见),并且必须能够处理从服务器收到的以下几种报文:DHCPOFFER,DHCPACK和DHCPNAK。
DHCP CLIENT 行为图
————————————————
版权声明:本文为CSDN博主「hurray2004」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hurray2004/article/details/26240171