其实,DHCP通常是用于局域网内的一个通信协议,它主要是通过客户端发送广播数据包给整个物理网段的所有主机,若局域网内有DHCP服务器时,才会响应客户端的IP数据包的参数要求。
所以DHCP服务器应该和客户端在同一个物理网段内。
注:port67监听客户端请求,port68客户端向服务端发送请求。
通过如上图可以看出,客户端取得IP参数的程序可以简化如下:
(1)客户端:利用广播数据包发送搜索DHCP服务器的数据包。
若客户端网络设置使用DHCP取得IP,则当客户端开机或是重新启动网卡时,客户端主机会发送出查找DHCP服务器的UDP数据包给物理网段内的所有计算机。
注:此数据包的目标IP会是255.255.255.255,所以一般主机接收到这个数据包后会直接予以丢弃,但若局域网内有DHCP服务器时,则会开始后续行为。
(2)服务器端:提供客户端网络相关的租约以供选择。
DHCP服务器在接收到客户端的要求后,会针对这个客户端的硬件地址(MAC)。
与本身的设置数据来进行下列工作:
到服务器的日志文件中查找该用户之前是否租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端。
若配置文件针对该MAC地址提供特定的固定IP(static IP)时,则提供该固定IP给客户端。
若不符合上述两个条件,则随机选取当前没有使用过的IP参数给客户端,并记录下来。
总而言之,服务器端会针对客户端的要求提供一组网络参数租约给客户端选择。
注:由于此时客户端尚未有IP,所以在服务器端响应的数据包信息中,主要是针对客户端的MAC来给予回应的。
此时服务器会保留这个租约然后开始等待客户端的回应。
(3)客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认。
由于局域网内可能并非有一台DHCP服务器,但是客户端仅能接受一组网络参数租约。因此客户端需要选择。
当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。因此,客户端也会发送一个广播数据包给所有在此物理段内的主机。告知已经接受该服务器的租约,其他的没有被接受的DHCP服务器就会收回该IP租约。
被接受的DHCP服务器会继续进行以下动作。
(4)服务端:记录该次租约行为,并向客户端发送响应数据包信息以确认客户端的使用。
当服务端接收到客户端的确认选择后,服务器会回送确认的相应数据包,并且告知客户端这个网络参数租约的期限,并且开始租约计时。