5.1.1 DHCP客户端首次登录网络

5.1.1 DHCP客户端首次登录网络

DHCP客户端首次登录网络时,主要通过4个阶段与DHCP服务器建立联系。

1.发现阶段

发现阶段,即DHCP客户端寻找DHCP服务器的阶段。DHCP客户端通过发送DHCP DISCOVER报文来寻找DHCP服务器。由于DHCP服务器的IP地址对于客户端来说是未知的,所以DHCP客户端以广播方式发送DHCP DISCOVER报文。所有收到DHCP DISCOVER报文的DHCP服务器都会发送回应报文,DHCP客户端据此可以知道网络中存在的DHCP服务器的位置。

2.提供阶段

提供阶段,即DHCP服务器提供IP地址的阶段。网络中接收到DHCP DISCOVER报文的DHCP服务器会从地址池中选择一个合适的IP地址,连同IP地址租约期限和其他配置信息(如网关地址、域名服务器地址等)以单播方式通过DHCP OFFER报文发送给DHCP客户端

3.选择阶段

选择阶段,即DHCP客户端选择IP地址的阶段。如果有多台DHCP服务器向DHCP客户端回应DHCP OFFER报文,则DHCP客户端只接收第一个收到的DHCP OFFER报文。然后以广播方式发送DHCP REQUEST请求报文,该报文中包含了服务器标识选项(Option54),这个选项中的内容是客户端选择的DHCP服务器的IP地址信息。以广播方式发送DHCP REQUEST请求报文是为了通知所有的DHCP服务器,客户端将选择Option54中标识的DHCP服务器提供的IP地址,其他的没有被选中的DHCP服务器可以重新使用曾提供给客户端但客户端没有选用的IP地址,用于其他客户端的IP地址申请。

4.确认阶段

确认阶段,即DHCP服务器确认所提供IP地址的阶段。当DHCP服务器收到DHCP客户端回答的DHCP REQUEST报文后,DHCP服务器会根据DHCPREQUEST报文中携带的MAC地址来查找有没有相应的租约记录。如果有,则以单播方式向客户端发送包含它所提供的IP地址和其他设置的DHCP ACK确认报文。DHCP客户端收到该确认报文后,会以广播的方式发送免费ARP报文,探测是否有主机使用服务器分配的IP地址,如果在规定的时间内没有收到回应,客户端才使用此地址。

如果DHCP服务器收到DHCP REQUEST报文后,没有找到相应的租约记录,或者由于某些原因无法正常分配IP地址,则以单播方式发送DHCP NAK报文作为应答,通知DHCP客户端无法分配合适IP地址。DHCP客户端需要重新发送DHCP DISCOVER报文来申请新的IP地址。 DHCP Client获得IP地址后,上线之前会检测正在使用的网关的状态,如果网关地址错误或网关设备故障,DHCP客户端将重新使用4步交互方式请求新的IP地址。

数据包交互方式如图5-1所示。

图5-1 DHCP客户端动态获取IP地址的四步交互过程