答案 0 :(得分:0)
只有特定情况下才应广播DHCPOFFER和DHCPACK。在大多数情况下,这些应该单播回请求主机。
服务器知道请求主机的MAC地址,因此除非请求主机已在DHCPREQUEST中设置广播位,否则帧将单播返回给请求主机。
请参阅RFC 2131, Dynamic Host Configuration Protocol:
通常,DHCP服务器和BOOTP中继代理尝试传递 DHCPOFFER,DHCPACK和DHCPNAK消息直接使用到客户端 单播交付。 IP目标地址(在IP标头中)是 设置为DHCP'yiaddr'地址和链路层目标 address设置为DHCP'chaddr'地址。不幸的是,一些 客户端实现无法接收此类单播IP数据报 直到使用有效的IP地址配置实施 (导致客户端的IP地址无法解决的死锁 交付,直到客户端配置了IP地址。)
在协议之前无法接收单播IP数据报的客户端 软件配置了IP地址应该设置 任何DHCPDISCOVER或''flags'字段中的BROADCAST位为1 客户端发送的DHCPREQUEST消息。 BROADCAST位会 提供DHCP服务器和BOOTP中继代理进行广播的提示 客户端子网上客户端的任何消息。可以的客户 在协议软件出现之前接收单播IP数据报 配置时应该将BROADCAST位清零.BOOTP 澄清文件讨论了使用的后果 BROADCAST位[21]。
- 和 -
如果客户端使用DHCP进行初始配置(之前 客户端的TCP / IP软件已完全配置),DHCP 需要创造性地使用客户端的TCP / IP软件和自由软件 RFC 1122的解释.TCP / IP软件应该接受和 向IP层转发任何传递给客户端的IP数据包 配置IP地址前的硬件地址; DHCP服务器和 BOOTP中继代理可能无法向客户端传递DHCP消息 在TCP / IP之前无法接受硬件单播数据报 软件已配置。
解决一些无法接受IP单播数据报的客户端 在配置TCP / IP软件之前,如前所述 段落,DHCP使用'flags'字段[21]。最左边的位是 定义为BROADCAST(B)标志。这个标志的语义是 在本文件的第4.1节中讨论过。其余部分 标志字段保留供将来使用。它们必须设置为零 客户端并被服务器和中继代理忽略。图2给出了 'flags'字段的格式。
1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |B| MBZ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ B: BROADCAST flag MBZ: MUST BE ZERO (reserved for future use) Figure 2: Format of the 'flags' field