DHCP四步交互为Discover、Offer、Request、ACK:客户端广播Discover寻找服务器;服务器单播或广播Offer提供IP;客户端广播Request确认所选IP及服务器;服务器单播ACK确认租约并完成配置。
Discover阶段:客户端主动广播寻找可用DHCP服务器
当windows客户端首次接入网络或租约到期重启获取ip时,会发起dhcp discover。此时客户端尚未配置ip地址,源ip为0.0.0.0,目的ip为255.255.255.255,通过udp 67/68端口广播发送。该报文不携带ip头中的有效源地址,仅含客户端mac(chaddr字段)、标识符(xid)及标志位(如广播位b=1),用于告知网络“我需要一个ip”。注意:若客户端此前有残留租约(如ipconfig /release后未renew),可能跳过discover直接尝试request已知地址。
Offer阶段:服务器响应并预留IP资源
收到Discover的DHCP服务器(可能多个)会检查自身作用域,选择一个可用IP,构造DHCP Offer单播或广播回应。Windows Server默认以单播回复,但若客户端明确要求广播(Discover中Flags字段B=1),则改用广播。Offer中包含拟分配IP、子网掩码、租期、DNS、网关等参数,并将xid与Discover保持一致以便客户端匹配。关键点:Offer只是“意向”,不具约束力,服务器需临时保留该IP,防止重复分配;若多台服务器响应,客户端通常只接受第一个Offer。
Request阶段:客户端确认并锁定所选服务器
客户端收到Offer后,选取一个(通常是首个到达的),向对应服务器广播DHCP Request。报文中明确填写“requested IP address”字段(即选中的IP)和“server identifier”(该服务器的IP)。此广播让其他服务器知晓该IP已被占用,及时撤销自己的Offer并释放预留。Windows客户端在Request中还会携带之前Discover的xid,确保事务连续性。若Request超时无ACK,客户端可能重试或退回到重新Discover。
ACK阶段:服务器最终确认租约生效
DHCP服务器收到Request且验证无误(如IP仍可用、策略允许),即发送DHCP ACK单播回应(目标为刚分配的IP,源为服务器自身)。ACK中再次携带完整配置参数,并确认租期起始与截止时间。客户端收到ACK后,立即将IP配置到网卡,启动ARP探测防冲突(Windows默认发送免费ARP检测IP是否被占用),成功后才正式启用网络通信。若收到NAK,则清空配置,重新进入Discover流程。
补充说明:整个过程可在Wireshark中用过滤器 bootp 或 dhcp 捕获观察;Windows下执行 ipconfig /release && ipconfig /renew 可强制触发完整四步;若卡在Discover收不到Offer,常见原因包括:客户端与服务器不在同一广播域(需DHCP中继)、防火墙拦截UDP 67/68、服务器作用域耗尽或未授权。










