DHCP 过程
分析命令
- 在终端中对包进行监听分析
tcpdump -i eth0 port 67 or port 68 -vvv - 在另一个终端中进行DHCP请求
dhclient -v eth0
结果分析
以下是针对 DHCP 协议交互过程的四个阶段分析:
阶段 1:DHCP Discover(客户端广播请求)
- 传输方向:客户端(
0.0.0.0)→ 广播(255.255.255.255) - 报文类型:
BOOTP/DHCP Request(类型为 Discover,对应选项53: Discover) - 目的:客户端主动广播寻找可用的 DHCP 服务器。
- 关键字段:
- 源 IP
0.0.0.0(客户端未分配 IP)、目标 IP255.255.255.255(广播地址)。 - 客户端 MAC
50:0a:52:10:12:27,主机名RK3568。 - 请求参数列表(Option 55):子网掩码、网关、DNS 等。
- 源 IP
Bash 输出片段:
10:43:39.709011 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 50:0a:52:10:12:27
DHCP-Message Option 53, length 1: Discover
Hostname Option 12, length 6: "RK3568"

阶段 2:DHCP Offer(服务器单播响应)
- 传输方向:服务器(
_gateway)→ 客户端(192.168.0.134) - 报文类型:
BOOTP/DHCP Reply(类型为 Offer,对应选项53: Offer) - 目的:服务器向客户端提供 IP 配置参数(如 IP、子网掩码、网关等)。
- 关键字段:
- 分配的 IP
192.168.0.134,租约时间7200秒(约 2 小时)。 - 服务器标识(
_gateway,IP 为192.168.0.1,未直接显示但可从后续交互推断)。 - 提供的配置参数:子网掩码
255.255.255.0、网关、DNS 等。
- 分配的 IP
Bash 输出片段:
10:43:40.524091 IP _gateway.bootps > 192.168.0.134.bootpc: BOOTP/DHCP, Reply
DHCP-Message Option 53, length 1: Offer
Your-IP 192.168.0.134
Subnet-Mask Option 1, length 4: 255.255.255.0
- 注意: 网络中可能有多个 DHCP 服务器(例如主路由和旁路由),客户端通常会收到多个 Offer,但通常会优先接受第一个到达的。

阶段 3:DHCP Request(客户端广播确认)
- 传输方向:客户端(
0.0.0.0)→ 广播(255.255.255.255) - 报文类型:
BOOTP/DHCP Request(类型为 Request,对应选项53: Request) - 目的:客户端确认接受服务器的 Offer,并广播告知所有 DHCP 服务器其选择。
- 关键字段:
- 请求的 IP
192.168.0.134(通过Option 50明确指定)。 - 服务器标识(
_gateway),表明选择此服务器提供的配置。
- 请求的 IP
Bash 输出片段:
10:43:40.524623 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request
DHCP-Message Option 53, length 1: Request
Requested-IP Option 50, length 4: 192.168.0.134

阶段 4:DHCP ACK(服务器单播确认)
- 传输方向:服务器(
_gateway)→ 客户端(192.168.0.134) - 报文类型:
BOOTP/DHCP Reply(类型为 ACK,对应选项53: ACK) - 目的:服务器确认客户端的 Request,正式分配 IP 配置。
- 关键字段:
- 重复提供 IP
192.168.0.134及配置参数,与 Offer 一致。 - 租约时间(
7200秒)生效。
- 重复提供 IP
Bash 输出片段:
10:43:40.550810 IP _gateway.bootps > 192.168.0.134.bootpc: BOOTP/DHCP, Reply
DHCP-Message Option 53, length 1: ACK
Your-IP 192.168.0.134
Lease-Time Option 51, length 4: 7200

总结
- Discover:客户端广播寻找服务器。
- Offer:服务器单播提供配置。
- Request:客户端广播确认选择。
- ACK:服务器单播确认分配。
特殊说明:
- 客户端在 Request 阶段仍使用广播(而非单播),目的是通知其他可能存在的 DHCP 服务器“已选择某台服务器”。
- 服务器在 Offer 和 ACK 阶段通过单播(目标 IP
192.168.0.134)发送,但实际链路层仍可能为广播(依赖 ARP 缓存或协议实现)。 - 通过
tcpdump过滤条件port 67 or 68可精准捕获 DHCP 流量(67 为服务器端口,68 为客户端端口)。
留下评论