我在 CCNA 准备书中阅读了以下摘录,但我觉得它不太适合:
因此,在 IP 地址分配期间,DHCP 服务器使用 Ping 程序检查是否存在冲突,以在从池中分配地址之前测试地址的可用性。如果没有主机回复,则 DHCP 服务器假定尚未分配 IP 地址。
我明白了目标和理由,但这真的是 ICMP 请求吗?为什么不是ARP?
我在 CCNA 准备书中阅读了以下摘录,但我觉得它不太适合:
因此,在 IP 地址分配期间,DHCP 服务器使用 Ping 程序检查是否存在冲突,以在从池中分配地址之前测试地址的可用性。如果没有主机回复,则 DHCP 服务器假定尚未分配 IP 地址。
我明白了目标和理由,但这真的是 ICMP 请求吗?为什么不是ARP?
DHCP 服务器使用 ICMP 而不是 ARP 的简单原因是不能保证 DHCP 服务器与客户端位于同一子网上(因为您可以拥有一个带有中继代理的集中式 DHCP 服务器)。
RFC 2131 因此说:
是客户端使用ARP 进行冲突检测,如RFC 5227中所述,它阐明了 DHCP 规范中已经提到的一些细节:
RFC 5227 还从 DHCP 扩展到所有 IPv4 地址使用:
假设 Windows DHCP 服务器,默认禁用使用ICMP 回显请求(ping)的服务器端冲突检测,建议不要使用它,除非在极少数情况下:
是的。启用冲突检测后,DHCP 服务器将 ping 它要授予租约的 IP 地址,以确保没有其他计算机正在使用该 IP 地址。如果 ping 请求收到回复,服务器会将 IP 标记为 BAD_ADDRESS。如果没有收到响应,服务器会将 IP 地址分配给请求的客户端(DHCP 客户端通过发送免费 ARP 数据包来探测 IP 地址)。