DHCP服务器的四个包是Discover、Offer、Request、Ack,业内常称DORA;IPv4地址初次获取的完整握手,就靠这四步完成。
DHCP服务器的四个包分别是什么?先记住DORA
行业共识认为,IPv4 DHCP初始分配的标准交互就是DORA四包,你可以把它想成一次租房:客户端先找房东,房东给报价,客户端正式签约,房东确认交钥匙。
四个包的分工
- Discover:客户端喊一声“附近有DHCP服务器吗?”它还没有IP,源地址通常是0.0.0.0。
- Offer:DHCP服务器回应“我这儿有个地址,你要不要?”Offer里可能带IP、掩码、网关、DNS、租期。
- Request:客户端选中某个Offer,正式请求“我就要这个地址,请确认。”
- Ack:服务器最终确认“这个地址租给你了,租期从此刻开始。”
据IETF RFC 2131定义,DHCPv4的地址分配、租约确认都围绕这些报文展开,客户端不是随便拿一个Offer就用,它会通过Request告诉所有DHCP服务器自己选了谁,没被选中的服务器会收回预分配地址。
报文方向与端口速查表
| 报文 | 方向 | 传输方式 | 源/目的端口 | 关键作用 |
|---|---|---|---|---|
| Discover | 客户端→服务器 | 广播 | 68→67 | 寻找可用DHCP服务器 |
| Offer | 服务器→客户端 | 广播或单播 | 67→68 | 提供候选IP配置 |
| Request | 客户端→服务器 | 广播 | 68→67 | 正式请求某个Offer |
| Ack | 服务器→客户端 | 广播或单播 | 67→68 | 确认租约并下发配置 |

据IANA服务端口分配,DHCPv4服务器使用UDP 67,客户端使用UDP 68,抓包时先看这两个端口,再看Option 53里的消息类型。
DHCP四个包和三个包对比有什么区别
标准IPv4初次获取地址是四个包,你如果只抓到三个,常见情况不是协议变了,而是抓包点漏了包,比如Offer被单播到别的端口、镜像口只抓了一个方向、客户端续租时只走Request和Ack,续租流程通常不需要Discover和Offer,客户端会直接向原服务器发Request,服务器回Ack,租期过半会进入T1续租,接近到期还有T2续租,RFC 2131里把这套计时器定义得很清楚,所以排障时要先分清“初次获取”还是“续租”。
DHCPv6又是另一套四包:Solicit、Advertise、Request、Reply,常叫SARR,别把IPv4的DORA和IPv6的SARR混在一起看。
北京企业网络DHCP四个包怎么排查?抓包看这四步
在北京不少园区网、办公楼宇、连锁门店里,DHCP故障看起来像“上不了网”,本质却卡在四个包中的某一步,业内专家指出,企业网排障时,抓包点选错比协议不熟更容易误判。
先定位在哪个包断开
- 只有Discover,没有Offer:DHCP服务没起来、地址池耗尽、中继不通、防火墙拦了UDP 67/68。
- 有Discover和Offer,没有Request:客户端没接受Offer,可能收到多个Offer后选了别的,或者系统策略拒绝。
- 有Request,没有Ack:服务器可能发现地址冲突,回NAK;也可能中继回包路径不通。
- 出现NAK:客户端请求的地址不可用,或者租约已失效,需要重新走Discover。
据统计,在园区网DHCP故障里,地址池耗尽、中继配置错误、Snooping信任端口漏配占相当一部分,别一上来就重启服务,先看四个包停在哪。
命令行与抓包

在Linux服务器或网关侧,可以这样抓:
sudo tcpdump -i any -n -e 'udp port 67 or udp port 68'sudo tcpdump -i eth0 -n -vv -e -w dhcp.pcap port 67 or port 68- Wireshark过滤器用
bootp或dhcp,看Option 53判断消息类型。
客户端侧可以验证:
- Windows:
ipconfig /release,再ipconfig /renew,ipconfig /all看是否拿到地址。 - Linux:
sudo dhclient -v -r eth0,再sudo dhclient -v eth0。 - 检查服务端口:
ss -lunp | grep :67,看DHCP服务是否监听。 - 检查防火墙:确认UDP 67和UDP 68没有被拦截。
交换机侧要关注DHCP Snooping,接入端口通常设为不信任,上联口设为信任,信任端口配错,Discover能上来,Offer和Ack可能下不去。
企业级DHCP服务器价格与四个包有关系吗
企业级DHCP服务器价格与四个包没有直接关系,四个包是协议行为,免费开源软件也能完整实现,价格通常花在地址池规模、HA热备、IPAM联动、日志审计、厂商服务上,你买再贵的设备,Discover、Offer、Request、Ack的交互逻辑也不会变成五个包,近年来,很多企业把DHCP和IPAM联动,四个包本身没变,变的是管理效率和可观测性。
DHCP服务器四个包抓包分析教程:用tcpdump和Wireshark验证
抓包位置
- 客户端同VLAN的镜像口:能看到广播Discover和Request。
- DHCP中继上联口:能看到带giaddr的中继报文。
- 服务器网卡:能确认服务器是否发出Offer和Ack。
- 无线场景:在AP上联或AC侧抓,注意CAPWAP隧道封装。
抓包最好双向抓,只抓一个方向,很容易误判“服务器没回”。
关键字段
- Option 53:消息类型,1是Discover,2是Offer,3是Request,5是Ack,6是NAK。
- Option 50:客户端请求的IP地址。
- Option 54:服务器标识,用来区分多个DHCP服务器。
- Option 55:参数请求列表,客户端告诉服务器想要网关、DNS等。
- Option 82:中继代理信息,企业网里很常见。
- giaddr:中继网关地址,服务器靠它决定从哪个地址池分配。

常见陷阱
- 多个DHCP服务器同时发Offer,客户端选了一个,其他服务器要收回地址。
- 地址池有IP但被静态占用,服务器可能回NAK。
- DHCP Snooping绑定表没生成,IP Source Guard会拦后续流量。
- 中继配置里服务器地址写错,Discover到了中继却转不出去。
- 防火墙只放行UDP 67,忘了UDP 68。
IPv4初次拿地址看DORA,排查就按四个包逐段卡位;DHCPv6对应SARR,别混用。
DHCP服务器四个包常见问答
DHCP服务器的四个包分别是什么,顺序能乱吗?
四个包是Discover、Offer、Request、Ack,顺序不能乱,客户端先发现服务器,再收到Offer,然后正式Request某个Offer,最后等Ack确认,重传时可能出现多个同类型包,但逻辑顺序不变。
DHCP四个包和ARP有什么关系?
DHCP负责把IP租给客户端,ARP负责在局域网里解析IP对应的MAC,客户端拿到IP后,可能用ARP做冲突检测,交换机的IP Source Guard也会结合DHCP Snooping绑定表检查ARP和IP报文,四个包里不直接包含ARP,但排障时经常要一起看。
为什么抓包只看到三个包?
常见原因有:抓包点不在同一广播域,Offer单播被转发到其他端口,镜像口只抓单向,客户端实际走的是续租流程,或者重传导致你只看到一个方向,标准IPv4初始分配完整流程仍然是Discover、Offer、Request、Ack四个包。
