DHCP是一个局域网的网络协议,用于管理、分配IP地址,前身是BOOTP协议,使用UDP协议工作,常用端口为67(server),68(client)。
【工作原理】
用户第一次登录网络时,获取IP地址的步骤:
(1)地址租用申请 ( DHCP DISCOVER ): DHCP客户机通过UDP 68端口发送DHCP DISCOVER广播信息来查找DHCP服务器。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。由于客户机没有IP,也不知道自己属于哪个网络,因此DHCP客户机发送的DHCP DISCOVER数据包的源地址是0.0.0.0,目标地址是255.255.255.255。
(2)IP地址租用提供 (DHCP OFFER):当网络中的DHCP服务器接收到DHCP DISCOVER广播时,DHCP服务器就从尚未出租的IP地址范围中选择最前面的空置IP,连同其他TCP/IP设定,通过UDP 67端口以单播DHCP OFFER的形式为客户端提供IP配置信息,可能有多台DHCP服务器收到DHCP DISCOVER广播,并且向DHCP客户端响应DHCP OFFER。客户接收到的DHCP OFFER数据包中包含客户的MAC地址,后面跟着服务器能提供的IP地址、子网掩码、租约期限以及DHCP服务器的IP地址。
(3)IP地址租用选择( DHCP REQUEST ):DHCP客户端通常是接收第一个收到的DHCP OFFER所提供的信息,并且会向网络发送一个DHCP REQUEST广播,告诉所有DHCP服务器它将接收哪一台服务器提供的IP地址。同时还会向网络发出一个ARP包,查询网络上面有没有其他机器正在使用该IP,如果发现该IP已被占用,客户机就会给DHCP服务器发送一个DHCP decline包,拒绝接受其DHCP offer,并重新发送DHCP discover。
(4)IP地址租用确认(DHCP ACK):当DHCP服务器收到DHCP REQUEST信息之后,便向DHCP客户端发送一个单播的DHCP ACK信息,以确认IP租约的正式生效。然后DHCP客户端便将其TCP/IP协议与网卡绑定。
客户机第二次登陆网络,获取IP地址的步骤:
(1)一旦客户机成功的获取了IP地址租约,除非其租约已失效并且IP地址也重新设定会0.0.0.0,否则就无须再次发送DHCP discover,客户机会直接使用已经租用到的IP地址,向DHCP服务器发送DHCP request信息,服务器会尽量让客户端继续使用原来的IP地址,如果没有问题的话,直接响应DHCP ACK确认即可。
(2)如果原IP已被占用,服务器会响应一个DHCP NACK 要求客户机重新执行DHCP discover。
测试:
(1)在客户机的命令行模式,执行ipconfig/all命令,可以查看客户机获得的IP地址及其他配置情况。
(2)在客户机的命令行模式,执行ipconfig/release命令,可以释放已经获得的租约。
(3)在客户机的命令行模式,执行ipconfig/renew命令,可以从DHCP服务器获得新的地址租约
文中部分内容来自百度文库https://wenku.baidu.com/view/4e5781136edb6f1aff001f63.html