为什么广播DHCP请求和确认消息而不是单播?

时间:2015-08-18 09:29:25

标签: dhcp

In' Request'作为DORA过程的一部分,DHCP服务器的IP和MAC地址对于客户端是已知的(因为在Offer中发送的IP数据报具有此信息)。因此,如果目的地已知,为什么请求仍然广播到网络上的每台机器?

同样在' Ack'作为DORA进程的一部分,客户端的IP地址现在已成功设置在其中并且为DHCP服务器所知。为什么它仍然播放消息?

1 个答案:

答案 0 :(得分:8)

REQUEST是针对网络上有多个DHCP服务器并且客户端收到来自RFC 2131 Section 3.1的多个OFFER响应的情况广播的:

  

服务器从客户端接收DHCPREQUEST广播。   DHCPREQUEST消息未选择的那些服务器使用   消息作为客户拒绝该服务器的通知   提供。在DHCPREQUEST消息中选择的服务器提交   将客户端绑定到持久存储并使用   DHCPACK消息包含的配置参数   请求客户。

来自服务器的ACK可能并不总是广播数据包,但可能是您检查过的情况。 DHCP协议的一部分允许为DHCPOFFER,DHCPACK和DHCPNAK消息启用广播目的地。这是必要的,因为一些TCP / IP堆栈不能接收单播数据报,直到IP地址被完全声明并分配给网络接口。来自RFC 2131 Section 4.1:

  

通常,DHCP服务器和BOOTP中继代理尝试传递   DHCPOFFER,DHCPACK和DHCPNAK消息直接使用到客户端   uicast交付。 IP目标地址(在IP标头中)是   设置为DHCP' yiaddr'地址和链路层目的地   地址设置为DHCP' chaddr'地址。不幸的是,一些   客户端实现无法接收此类单播IP   数据报,直到实现配置有效   IP地址(导致客户端IP地址死锁)   在客户端配置了IP之前无法发送   地址)。

     

在协议之前无法接收单播IP数据报的客户端   软件配置了IP地址应该设置   BROADCAST位在'标志'任何DHCPDISCOVER或中的字段为1   客户端发送的DHCPREQUEST消息。 BROADCAST位会   提供DHCP服务器和BOOTP中继代理进行广播的提示   客户端子网上客户端的任何消息。