DHCP 握手原理
DHCP 握手原理
一、DHCP 概述
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP) 用于自动分配网络配置参数(如 IP 地址、子网掩码、网关、DNS 等),简化手动配置流程。其核心是 DORA 四步握手(Discover → Offer → Request → Acknowledge),基于 UDP 协议(客户端端口 68,服务器端口 67)。
二、DHCP 四步握手流程
1. 阶段 1:Discover(客户端广播请求)
- 触发场景:客户端初始化(如开机、重启、未获取到 IP)。
- 消息:
DHCPDISCOVER
- 源地址:
0.0.0.0
(客户端无 IP) - 目标地址:
255.255.255.255
(广播) - 内容:
- 客户端 MAC 地址
- 请求的参数(如 IP 地址、租期)
流程图:
Client: DHCPDISCOVER ────────────────▶ 广播网络
2. 阶段 2:Offer(服务器响应)
- 触发场景:DHCP 服务器收到
DHCPDISCOVER
。 - 消息:
DHCPOFFER
- 源地址:DHCP 服务器 IP
- 目标地址:
255.255.255.255
(广播,客户端仍无 IP) - 内容:
- 提供的 IP 地址、子网掩码
- 租期、服务器标识(IP)
流程图:
Server: ◀────────── DHCPOFFER ─────────── 广播网络
3. 阶段 3:Request(客户端确认选择)
- 触发场景:客户端可能收到多个
DHCPOFFER
,选择其中一个。 - 消息:
DHCPREQUEST
- 源地址:
0.0.0.0
(未正式分配 IP) - 目标地址:
255.255.255.255
(广播) - 内容:
- 选中的服务器 IP
- 请求的 IP 地址
流程图:
Client: DHCPREQUEST ────────────────▶ 广播网络
4. 阶段 4:Acknowledge(服务器确认分配)
- 触发场景:服务器收到
DHCPREQUEST
,确认分配。 - 消息:
DHCPACK
- 源地址:DHCP 服务器 IP
- 目标地址:客户端 IP(此时客户端已临时使用分配的 IP)
- 内容:
- 正式分配的 IP 地址、租期
- 完整网络配置参数(网关、DNS 等)
流程图:
Server: ◀────────── DHCPACK ──────────── 客户端
三、关键机制与细节
1. 消息类型与端口
阶段 | 消息 | UDP 源端口 | UDP 目标端口 | 传输方式 |
---|---|---|---|---|
1-3 步 | DISCOVER/REQUEST | 68 | 67 | 广播 |
2-4 步 | OFFER/ACK | 67 | 68 | 单播/广播 |
2. 状态机(客户端)
3. 续租机制
- T1 时间(租期的 50%):客户端发送
DHCPREQUEST
续租。 - T2 时间(租期的 87.5%):若 T1 未响应,广播
DHCPREQUEST
续租。 - 租期过期:客户端释放 IP,回到 INIT 状态。
4. 异常处理
- 无服务器响应:客户端定期重发 DISCOVER(指数退避策略)。
- IP 冲突:客户端检测到 IP 冲突时,发送
DHCPDECLINE
拒绝分配。
四、示意图
Client DHCP Server│ ││ DHCPDISCOVER │├───────────────▶│ (广播)│ ││◀───────────────│ DHCPOFFER (单播/广播)│ DHCPREQUEST │├───────────────▶│ (广播)│ ││◀───────────────│ DHCPACK (单播)│ IP 已分配 │
五、常见问题
-
为什么前两步使用广播?
客户端初始无 IP,无法单播;服务器需通过广播响应所有客户端。 -
DHCP 与 BOOTP 的区别?
DHCP 是 BOOTP 的扩展,支持动态租期、续租、更多配置参数。 -
能否分配固定 IP?
可以,通过 DHCP 服务器的 静态绑定(根据客户端 MAC 地址分配固定 IP)。
DHCP 通过 DORA 四步握手 实现 IP 地址的动态分配,结合广播与单播机制,确保网络配置的自动化与高效性。