dhcp 请求流程
DHCP协议通过DORA四步交互(Discover-Offer-Request-Acknowledge)实现IP地址自动分配。客户端首次接入时广播DHCPDISCOVER报文,服务器响应DHCPOFFER提供IP配置,客户端确认选择后发送DHCPREQUEST,最终服务器回复DHCPACK完成分配。该流程支持租期续约(50%和87.5%租期时触发)、地址冲突检测(通过免费ARP)和异常处理(如DH
·
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)的请求流程是客户端自动获取IP地址及相关网络参数(如子网掩码、默认网关、DNS服务器等)的核心机制。整个过程基于 DORA 四步交互模型(Discover → Offer → Request → Acknowledge),适用于首次接入网络的客户端。
一、标准四步交互流程(首次接入)
1. Discover(发现阶段)
- 触发条件:客户端开机或未配置IP地址。
- 行为:
- 客户端广播发送 DHCPDISCOVER 报文(源IP:
0.0.0.0,目的IP:255.255.255.255)。 - 报文中包含客户端MAC地址(
chaddr)、请求的参数列表(Option 55)等。
- 客户端广播发送 DHCPDISCOVER 报文(源IP:
- 目的:寻找网络中可用的DHCP服务器。
✅ 使用 UDP 68 → 67 端口,广播方式(因无IP)。
2. Offer(提供阶段)
- 行为:
- 所有收到 Discover 的 DHCP 服务器从地址池中选择一个可用IP。
- 向客户端广播 DHCPOFFER 报文(仍用广播,因客户端尚无IP)。
- 报文包含:提供的IP地址(
yiaddr)、子网掩码、租期、网关、DNS、服务器标识(Option 54)等。
- 注意:客户端可能收到多个 Offer(多台服务器时)。
⚠️ 此IP仅为“预分配”,尚未正式绑定。
3. Request(请求阶段)
- 行为:
- 客户端通常选择 第一个收到的 Offer。
- 广播发送 DHCPREQUEST 报文,内容包括:
- 选中的服务器IP(Option 54)
- 请求的IP地址(Option 50)
- 目的:
- 告知所有DHCP服务器:“我选了这台服务器”;
- 让其他服务器释放为其预留的IP。
🔁 此步骤确保地址资源不被浪费。
4. Acknowledge(确认阶段)
- 行为:
- 被选中的DHCP服务器检查请求是否合法。
- 若合法,发送 DHCPACK 报文(单播或广播,取决于客户端 flags 字段)。
- 报文确认IP分配成功,并包含完整网络配置。
- 客户端动作:
- 收到 ACK 后,立即执行免费ARP(Gratuitous ARP) 检测IP冲突。
- 若无冲突 → 正式使用该IP;
- 若有冲突 → 发送 DHCPDECLINE,重新开始流程。
- 收到 ACK 后,立即执行免费ARP(Gratuitous ARP) 检测IP冲突。
✅ 至此,IP租约建立完成,客户端可正常通信。
二、其他常见场景流程
场景1:客户端重启(非首次接入)→ 两步交互
- 客户端直接广播 DHCPREQUEST(携带上次IP)。
- 服务器若该IP仍可用 → 回 DHCPACK;
- 若已被占用 → 回 DHCPNAK,客户端重新发起 Discover。
场景2:租期续约
- T1 = 50% 租期:客户端 单播 发送 REQUEST 续租;
- T2 = 87.5% 租期:若T1失败,则 广播 REQUEST;
- 若租期到期仍未续租成功 → 释放IP,重新 Discover。
场景3:主动释放IP
- 客户端发送 DHCPRELEASE(单播)通知服务器释放地址;
- 服务器回收IP并回 ACK。
三、补充:DHCP报文传输方式总结
| 报文类型 | 发送方 | 接收方 | 传输方式 | 端口 |
|---|---|---|---|---|
| DHCPDISCOVER | 客户端 | 服务器 | 广播 | UDP 68 → 67 |
| DHCPOFFER | 服务器 | 客户端 | 广播 | UDP 67 → 68 |
| DHCPREQUEST | 客户端 | 服务器 | 广播/单播 | UDP 68 → 67 |
| DHCPACK/NAK | 服务器 | 客户端 | 单播/广播 | UDP 67 → 68 |
注:跨网段需 DHCP中继(Relay) 转发报文。
四、总结
DHCP请求流程通过自动化、集中化管理,极大简化了网络配置,提升IP利用率与安全性。核心在于 DORA四步握手,辅以租期管理、冲突检测和异常处理机制,确保网络高效稳定运行。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)