视乎客户端是否***次登录网路,DHCP 的工作形式会有所不同。
***次登录的时候:
1. 寻找 Server。当 DHCP 客户端***次登录网路的时候,也就是客户发现本机上没有任何 IP 资料设定,它会向网路发出一个 DHCPDISCOVER 封包。因为客户端还不知道自己属于哪一个网路,所以封包的来源位址会为 0.0.0.0 ,而目的位址则为 255.255.255.255 ,然后再附上 Dhcpdiscover 的信息,向网路进行广播。
在 Windows 的预设情形下,Dhcpdiscover 的等待时间预设为 1 秒,也就是当客户端将***个 Dhcpdiscover 封包送出去之后,在 1 秒之内没有得到回应的话,就会进行第二次 Dhcpdiscover 广播。若一直得不到回应的情况下,客户端一共会有四次 Dhcpdiscover 广播(包括***次在内),除了***次会等待 1 秒之外,其余三次的等待时间分别是 9、13、16 秒。如果都没有得到 DHCP 伺服器的回应,客户端则会显示错误信息,宣告 Dhcpdiscover 的失败。之后,基于使用者的选择,系统会继续在 5 分钟之后再重复一次 Dhcpdiscover 的过程。
2. 提供 IP 租用位址。当 DHCP 伺服器监听到客户端发出的 Dhcpdiscover 广播后,它会从那些还没有租出的位址范围内,选择最前面的的空置 IP ,连同其它 TCP/IP 设定,回应给客户端一个 DHCPOFFER 封包。
由于客户端在开始的时候还没有 IP 位址,所以在其 Dhcpdiscover 封包内会带有其 MAC 位址信息,并且有一个 XID 编号来辨别该封包,DHCP 伺服器回应的 Dhcpoffer 封包则会根据这些资料传递给要求租约的客户。根据伺服器端的设定,Dhcpoffer 封包会包含一个租约期限的信息。
3. 接受 IP 租约。如果客户端收到网路上多台 DHCP 伺服器的回应,只会挑选其中一个 Dhcpoffer 而已(通常是***抵达的那个),并且会向网路发送一个Dhcprequest广播封包,告诉所有 DHCP 伺服器它将指定接受哪一台伺服器提供的 IP 位址。
同时,客户端还会向网路发送一个 ARP 封包,查询网路上面有没有其它机器使用该 IP 位址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 伺服器,拒绝接受其 Dhcpoffer ,并重新发送 Dhcpdiscover 信息。
【编辑推荐】