我运行 Mac 并使用以下命令释放/更新我的 IP:
sudo ipconfig set en0 DHCP
在 wireshark 中,我使用 udp.port==67 作为过滤器获得以下内容:
为什么我的电脑发送的消息是广播的,但服务器直接将它们发送给我。我所读到的文献说一切都是广播的。为什么这里不是这样?
答案1
DHCP 请求是广播流量。您的 PC 不知道本地子网上有哪些 DHCP 服务器可用,因此它必须广播 IP 请求。然后,任何可用的 DHCP 服务器都会直接向您的工作站响应 IP 请求。然后,您的工作站将正式向 DHCP 服务器请求 IP。最后,服务器将接受请求并将 IP 分配给您的工作站。
该过程概述如下步骤:
- 发现
- 提供
- 要求
- 承认
回答评论中的问题,服务器可以通过第 2 层的工作站的 MAC 地址与工作站进行通信。在收到 IP 之前,工作站将使用 IP 0
。
但是,流量被发送到工作站的 MAC(该 MAC 在原始广播消息中从工作站发送discocver
)。
您可以在 wireshark 跟踪中看到这一点。本地子网上的设备使用 MAC 地址进行通信。
来自RFC2131:
客户端在获取其 IP 地址之前广播的 DHCP 消息必须将 IP 标头中的源地址字段设置为 0。