​ 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)等。
  • 目的:寻找网络中可用的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,重新开始流程。

✅ 至此,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四步握手,辅以租期管理、冲突检测和异常处理机制,确保网络高效稳定运行。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐