动态主机配置协议(DHCP)是一个应用层协议,传输层使用了UDP协议。
交互过程
1. 发现阶段
由于不知DHCP服务器的IP地址和Mac地址,客户端通过向本地网络广播一个DHCP DISCOVER请求报文以向网络中的DHCP服务器请求网络配置信息。
最后本地网络上每个DHCP服务器都会接收到DHCP发现报文,而同时其他主机也会收到此报文,只不过当拆包后发现源IP地址是0.0.0.0后就会抛弃这个包。
2. 提供阶段
当DHCP服务器收到发现报文,它就从它的地址池中选出一个空闲IP填充到DHCP OFFER的"Your" IP address字段,并在选项字段加上子网掩码,路由器,DNS,服务器标识,IP地址租用时间等字段,然后广播此报文(此时还不知客户端的IP地址)
3. 请求阶段
最后客户端可能会收到多个DHCP服务器的DHCP OFFER报文,一般是选最先到达那个报文并作出回应请求,即广播发出一个 包含服务器选项字段的DHCP REQUEST报文。这里还使用广播的目的是因为要让所有的DHCP服务器知道客户端选择了哪个服务器提供的IP。
4. 确认阶段
DHCP 服务器
DHCP服务器收到来自客户端的DHCP REQUEST报文,而只有符合服务器标识这个选项字段的DHCP服务器才会对此作出响应:
如果服务器可以分配此IP则以DHCP ACK报文进行响应。
如果服务器无法分配此IP则以DHCP NAK报文进行响应。
其他DHCP服务器则清除与此请求相关的状态。响应方式还是跟提供阶段一样广播此报文。
DHCP客户端
当DHCP客户端收到的响应是DHCP NAK报文,则会重新发送 DHCP DISCOVER报文。
若收到的是DHCP ACK报文则会执行地址冲突检测(ACD)探测获得的IP地址是否未被使用。
如果已经被使用则向DHCP服务器发送一个DHCP DECLINE报文以通知该地址已经不能被使用。之后经过默认的10秒延时后客户端可再次重试。
如果未被使用则获得了该IP地址在租用期间的使用权。
网友评论