DHCP 服务器或 DHCP 中继代理如何单播 DHCP 回复?

How are DHCP Replies unicasted by DHCP Server or DHCP Relay Agent?

虽然 DHCP 请求消息总是在 DHCP 客户端初始化阶段通过广播发送,但 DHCP 回复可以通过广播和单播发送。使用哪种发送方法取决于 DHCP 服务器或 DHCP 中继代理以及 DHCP 客户端的要求。

DHCP 客户端可以请求广播 DHCP 回复,以防它自己的 IP 协议实现软件无法接收单播 IP 数据包,直到它配置了有效的 IP 地址,这就是初始化阶段的情况。在这种情况下,它将通过将 DHCP 请求消息中标志字段的广播位设置为 1,专门从 DHCP 服务器或中继代理请求通过广播发送 DHCP 回复。 在 DHCP 客户端即使没有配置 IP 地址也可以接收单播 IP 数据包的情况下,广播位未设置(0)并且由 DHCP 服务器或中继代理决定它是通过单播还是广播发送 DHCP 回复.单播是首选方法,因为它减少了客户端的网络流量和处理能力。

为了发送 packet/frame IP 地址和 MAC 地址都需要为发件人所知。 DHCP 服务器或中继代理知道 IP 和 MAC 地址,它提供的 IP 地址和包含在 DHCP 请求消息中的 MAC 地址。然而,标准的发送数据包程序要求 MAC 地址是通过 ARP 协议获得的,这显然不能工作,因为 DHCP 客户端无法响应 ARP 数据包,因为它还没有配置 IP 地址。 那么问题是,DHCP 服务器或中继代理如何通过单播发送 DHCP 回复?是否有访问 ARP table 并直接添加 ARP 条目的机制?

DHCP 服务器可以生成原始数据包并将 MAC 和 IP 地址放入其中。发送原始数据包时,OS 不会对 ARP 条目或任何内容进行任何检查。因此,该数据包将是一个有效的单播 UDP 数据包,即使客户端还不能回答 ARP 并且服务器在 ARP 表中没有任何内容。