In' Request'作为DORA过程的一部分,DHCP服务器的IP和MAC地址对于客户端是已知的(因为在Offer中发送的IP数据报具有此信息)。因此,如果目的地已知,为什么请求仍然广播到网络上的每台机器?
同样在' Ack'作为DORA进程的一部分,客户端的IP地址现在已成功设置在其中并且为DHCP服务器所知。为什么它仍然播放消息?
答案 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中继代理进行广播的提示 客户端子网上客户端的任何消息。