在 DORA 流程的“请求”部分,客户端知道 DHCP 服务器的 IP 和 MAC 地址(因为 Offer 中发送的 IP 数据报包含此信息)。那么如果知道目的地,为什么仍会将请求广播到网络上的每台机器?
同样,在 DORA 流程的“Ack”部分,客户端的 IP 地址现已成功设置在其中,并且 DHCP 服务器知道该地址。为什么它仍然广播该消息?
答案1
由于多个 DHCP 服务器可以响应客户端的 DHCP 发现消息,因此客户端广播的 DHCP 请求消息包含有关客户端选择接受哪个服务器的哪个 IP 地址的信息。然后其他服务器就有机会立即撤回其提供的信息,而不是让其超时。
答案2
由于您询问了 offer、request 和 ack,让我一一解释一下,首先,关于 offer,必须广播,因为客户端没有任何 ip 地址。现在关于 request,客户端拥有服务器的 ip 地址,那么为什么要广播此消息呢?答案是,如果有两个或多个服务器响应了客户端并向其提供了 ip,那么为了让他们知道我选择了这个客户端,会广播请求消息。现在必须广播 ack,因为客户端尚未获取服务器为其提供的 ip 地址,而他只是选择了 ip 地址。现在客户端将向其发送 ack 数据包“您可以拥有这个 ip”。