在DORA进程的“请求”部分中,客户端知道DHCP服务器的IP和MAC地址(因为提供的IP数据报具有此信息)。那么,如果目的地是已知的,为什么请求仍然被广播到网络上的每台机器?
类似地,在DORA进程的'Ack‘部分,客户端的IP地址现在已成功地设置在其中,并为DHCP服务器所知。为什么它还在播送信息呢?
发布于 2015-08-29 15:46:30
当网络上有多个DHCP服务器并且客户端已经收到来自RFC 2131第3.1节的多个报价响应时,请求将被广播。
服务器从客户端接收DHCPREQUEST广播。那些未被DHCPREQUEST消息选中的服务器使用该消息作为客户端拒绝该服务器提供的通知。在DHCPREQUEST消息中选择的服务器将客户端的绑定提交到持久存储,并使用包含请求客户端配置参数的DHCPACK消息进行响应。
来自服务器的ACK可能并不总是一个广播数据包,但在您检查的情况下可能是这样。DHCP协议的一部分允许为DHCPOFFER、DHCPACK和DHCPNAK消息启用广播目的地。这是必要的,因为一些TCP/IP堆栈在IP地址被完全声明并分配到网络接口之前无法接收单播数据报。来自RFC 2131 4.1节
通常,DHCP服务器和BOOTP中继代理试图使用uicast传递直接将DHCPOFFER、DHCPACK和DHCPNAK消息传递给客户端。IP目标地址(在IP报头中)设置为DHCP 'yiaddr‘地址,链路层目标地址设置为DHCP 'chaddr’地址。不幸的是,一些客户端实现无法接收这样的单播IP数据报,直到实现配置了有效的IP地址(导致在客户端配置了IP地址之前无法传递客户端IP地址的死锁)。在客户端发送的任何DHCPDISCOVER或DHCPREQUEST消息中,除非协议软件配置了IP地址,否则无法接收单播IP数据报的客户端应该将“标志”字段中的广播位设置为1。广播位将向DHCP服务器和BOOTP中继代理提供提示,以便向客户端子网上的客户端广播任何消息。
https://stackoverflow.com/questions/32068586
复制相似问题