Appearance
题目
一台新接入网络的主机 H 通过 DHCP 服务器动态请求 IP 地址过程中,与 DHCP 服务器交换 DHCP 报文过程如下图所示。封装 DHCP 的 REQUEST 报文的 IP 数据报的目的 IP 地址和源 IP 地址分别是( )。
错因
A
目的 IP 写成 server 的单播地址——以为 H 知道 server 是 192.168.5.1 就直接单播。但 DHCP REQUEST 阶段 H 必须广播:H 此前可能收到过多个 OFFER(来自不同 DHCP server),REQUEST 是要"对所有 server 同时声明:我选了哪一个",未被选中的 server 也要靠这个广播来释放它们暂留的 IP 资源。所以目的 IP 必须是受限广播 255.255.255.255。源 IP "0.0.0.0" 这一项是对的——H 此时尚未确认获得 IP。
B
两端都错:
- 目的 IP 192.168.5.1:同 A,REQUEST 必须广播
- 源 IP 192.168.5.9:这是 DHCP server 在 OFFER 阶段提议给 H 的 IP,但 H 在 REQUEST 阶段还没正式获得这个 IP(要等收到 ACK 才算确认)。所以 H 不能把它当成自己的源 IP
D
目的 IP 255.255.255.255 对(广播),但 源 IP 192.168.5.9 错——错因同 B:H 在 REQUEST 时还没正式拿到这个 IP,源 IP 必须填 0.0.0.0。
总解析
DHCP 的 4 步交互回顾(DORA):
| 步骤 | 动作 | 源 IP / 目的 IP | 关键点 |
|---|---|---|---|
| Discover | H → 网络(广播) | 0.0.0.0 → 255.255.255.255 | H 没 IP、不知 server,全广播 |
| Offer | server → H(广播或单播) | 192.168.5.1 → 255.255.255.255 | server 提议一个 IP(如 .9)给 H |
| Request | H → 网络(广播) | 0.0.0.0 → 255.255.255.255 | H 正式选定某 server 的 OFFER;其他 server 听到后释放保留 |
| Ack | server → H(广播或单播) | 192.168.5.1 → 255.255.255.255 | server 确认 IP 分配生效 |
REQUEST 阶段两个 IP 字段的填法:
- 源 IP = 0.0.0.0:H 还没拿到 IP(要等 ACK 才算正式获得),不能假装已经是 192.168.5.9
- 目的 IP = 255.255.255.255:必须广播——
- 通知所有 DHCP server "我选了 X server 的 OFFER",让其他 server 释放暂留的 IP
- H 自己也还不知道选定 server 的 MAC,无法定向单播
最终答案是 C(255.255.255.255, 0.0.0.0)。
理解要点:DHCP 整个 DORA 4 步全部用广播——只要 H 还没拿到正式 IP(即 ACK 之前),所有 H 发的报文都是源 0.0.0.0 / 目的 255.255.255.255。这是 DHCP 题的硬规则。等 ACK 之后 H 才能用分到的 IP(如 192.168.5.9)做正常通信。
编者注(生僻术语):"受限广播地址"
255.255.255.255与"定向广播地址"(如192.168.5.255)的区别:受限广播只在本网段传,路由器不转发;定向广播指向"某个具体子网的广播地址",理论上可以跨网段转发但现代路由器一般禁。DHCP 的 DORA 用受限广播,因为 H 还不知道自己在哪个子网。