
一、 【真题重现】 (2025.36)
题目描述:
一台新接入网络的主机通过 DHCP 服务器动态请求 IP 地址过程中,与 DHCP 服务器交换 DHCP 报文的部分过程如图所示。
(图示简述:主机 H 收到服务器 192.168.5.1 发来的 DHCPOFFER (yiaddr: 192.168.5.9),随后主机 H 发出 DHCPREQUEST (yiaddr: 192.168.5.9)。)
问题: 封装该 DHCPREQUEST 报文的 IP 数据报的目的 IP 地址和源 IP 地址分别是?
A. 192.168.5.1, 0.0.0.0
B. 192.168.5.1, 192.168.5.9
C. 255.255.255.255, 0.0.0.0
D. 255.255.255.255, 192.168.5.9
【正确答案】 C
二、 核心考点:DHCP 的“四步舞 (DORA)”
要彻底搞懂这道题,必须将 DHCP 获取 IP 的过程按严格的“事务(Transaction)”时序来拆解:
-
Discover(发现):主机全网广播,寻找 DHCP 服务器。
-
Offer(提供):服务器单播或广播回应,“为你预留了 IP(如 192.168.5.9)”。
-
Request(请求):【本题考点阶段】 主机正式向服务器发出申请,决定使用该 IP。
-
ACK(确认):服务器最终确认,IP 正式下发。
三、 底层逻辑剖析(为什么选 C?)
1. 为什么源 IP 是 0.0.0.0?(所有权法则)
-
现象: 虽然在第二步 Offer 中,服务器已经告知了
192.168.5.9这个地址,但在发出 Request 时,主机的源 IP 依然填的是0.0.0.0(代表“未知”或“无地址”)。 -
底层逻辑: 这就像在 C/C++ 中调用
malloc申请动态内存,虽然底层的内存池可能已经为你划好了一块区域,但在最后一步指针正式下发并确认之前,你绝对不能擅自获取它的所有权去使用。在网络协议栈中,只要还没收到最后的 ACK 报文,这个 IP 就不合法,主机只能以“黑户(0.0.0.0)”身份发包。
2. 为什么目的 IP 是 255.255.255.255?(广播的哲学)
-
现象: 主机已经知道了服务器的 IP 是
192.168.5.1,但它没有采用单播,而是继续使用了全网广播255.255.255.255。 -
底层逻辑: 在真实的局域网中,往往存在多台 DHCP 服务器。主机发送 Discover 时,可能会收到多个服务器发来的 Offer(给了不同的预留 IP)。主机通过广播发送 Request,其真实目的是“广而告之”:
-
告诉被选中的服务器:“我决定用你的 IP 了。”
-
告诉其他落选的服务器:“我已经名花有主,你们之前为我预留的 IP 可以收回地址池,分配给别人了。”
-
如果用单播,落选的服务器收不到通知,会导致 IP 地址被白白占用(地址泄漏)。
-
四、 考场防坑总结(引申对比)
在 408 考场上,看到 DHCP 报文,一定要区分当前是“初次获取”还是“租期续约”,两者的封装逻辑截然不同:
-
场景 A:初次获取 IP(如本题的 Request)
-
契约未成,IP 不属于自己 源 IP:
0.0.0.0 -
需要通知局域网内所有服务器 目的 IP:
255.255.255.255(全网广播)
-
-
场景 B:租期过半,申请“续约 (Renew)”
-
此时主机已经合法拥有该 IP 源 IP:
192.168.5.9(自己的 IP) -
此时只需和发证机关(原服务器)一对一沟通 目的 IP:
192.168.5.1(单播)
-