在RFC2131(第 12 页)中提到
服务器应使用配置信息存储库中可用的任何信息来选择要重用的地址。例如,服务器可以选择最近最少分配的地址。作为一致性检查,分配服务器应该在分配地址之前探测重用的地址,例如,使用ICMP 回显请求,客户端应该探测新接收的地址,例如,使用ARP。
您能否向我解释一下 ICMP 回显请求和 ARP 对 DHCP 有何帮助?
谢谢
在RFC2131(第 12 页)中提到
服务器应使用配置信息存储库中可用的任何信息来选择要重用的地址。例如,服务器可以选择最近最少分配的地址。作为一致性检查,分配服务器应该在分配地址之前探测重用的地址,例如,使用ICMP 回显请求,客户端应该探测新接收的地址,例如,使用ARP。
您能否向我解释一下 ICMP 回显请求和 ARP 对 DHCP 有何帮助?
谢谢
从 DHCP 服务器向其即将分配的 IP 地址发出的 ICMP Echo 请求用于确定即将分配的 IP 地址是否已在网络上使用。如果收到来自该 IP 的响应,DHCP 服务器将分配一个不同的地址。
对从客户端新接收到的地址的 ARP 请求也会这样做,检查是否有其他设备正在使用该地址并响应 ARP。如果是这样,它知道它收到的地址已经在使用中。
您链接到的 RFC 稍后会提到:
Servers need not reserve the offered network address, although the protocol will
work more efficiently if the server avoids allocating the offered
network address to another client. When allocating a new address,
servers SHOULD check that the offered network address is not
already in use; e.g., the server may probe the offered address
with an ICMP Echo Request. Servers SHOULD be implemented so that
network administrators MAY choose to disable probes of newly
allocated addresses.
我不确定是否所有 DHCP 服务器都实现了这一要求,但据我所知,DHCP 服务器没有其他方法可以可靠地意识到使用其 DHCP 池中可用 IP 的另一台设备。
同样来自关于来自客户端的 ARP 的相同 RFC:
if the client is on a network that
supports ARP, the client may issue an ARP request for the suggested
request. ... If the network address appears to be in use, the client MUST send a
DHCPDECLINE message to the server
请参阅此链接ICMP 代码的 ICMP 代码部分。
某些操作系统仅在返回代码而不是回复或主机无法访问时才显示“超时”,请记住这只是一个笼统的说法。因此,经过良好编程的 DHCP 服务器可以根据返回的特定代码做出假设。例如,如果您的设备安装了防火墙,则将返回 ICMP 代码 10(与目标主机的通信被管理禁止)。此时 DHCP 服务器可以可靠地假设地址正在使用中,并且不会将其分配给其他设备。
由于 ARP 是第 2 层协议,因此仅当 DHCP 服务器位于同一网段时才有用。DHCP 服务器会发出 ARP 请求,询问地址 xxxx 是谁,如果没有响应,则服务器知道该地址是空闲的并且可以分配。