新节点通过DHCP获取地址信息的主要流程有如下四个过程:
寻找DHCP Server:客户机第一次登录网络的时,向网络上发出一个DHCPDISCOVER广播(包中包含客户机的MAC地址和计算机名等信息)。其源地址为0.0.0.0,目标地址为255.255.255.255。
提供IP地址租用:服务端监听到客户机发出的DHCP discover广播后,从剩余地址池中选择最前面的空置IP,连同其它TCP/IP设定,通过广播方式响应给客户端一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。
接受IP租约:客户机挑选最先响应的DHCP OFFER(一般是最先到达的那个),同时向网络广播DHCP REQUEST数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),声明将接受某一台服务器提供的IP地址。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。
租约确认:服务端接收到客户端的DHCP REQUEST之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。
客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。
如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。