DHCP 服务器是否真的使用“ping”检查冲突?

Mik*_*e B 14 networking dhcp dhcp-server

我在 CCNA 准备书中阅读了以下摘录,但它不适合我:

因此,在 IP 地址分配期间,DHCP 服务器使用 Ping 程序检查冲突,以在从池中分配地址之前测试地址的可用性。如果没有主机回复,则 DHCP 服务器假定 IP 地址尚未分配。

我明白了目标和原理,但这真的是 ICMP 请求吗?为什么不是ARP?

小智 20

DHCP 服务器使用 ICMP 而不是 ARP 的一个简单原因是无法保证 DHCP 服务器与客户端位于同一子网上(因为您可以拥有一个带有中继代理的集中式 DHCP 服务器)。

RFC 2131 因此说:

作为一致性检查,分配服务器应该在分配地址之前探测重用的地址,例如使用 ICMP 回显请求,并且客户端应该探测新接收的地址,例如使用 ARP。


Esa*_*nen 5

这是客户端使用ARP检测冲突,如在指定的RFC 5227,由此可知在DHCP规范已经提到了一些细节:

-- 现有的地址解析协议 (ARP) 为主机提供了一种简单的方法来检测这种错误配置并将其报告给用户。DHCP 规范[RFC2131]简要提到了 ARP 在检测错误配置中的作用,如以下来自 RFC 2131 的三个摘录所示:

  • 客户端应该探测新收到的地址,例如,使用 ARP

  • 客户端应该对参数进行最终检查(例如,分配网络地址的 ARP)

  • 如果客户端检测到地址已被使用(例如,通过使用 ARP),则客户端必须向服务器发送 DHCPDECLINE 消息

RFC 5227 还从 DHCP 扩展到所有 IPv4 地址使用:

2.1. 探测地址

在开始使用 IPv4 地址(无论是从手动配置、DHCP 还是其他方式接收)之前,实现此规范的主机必须通过广播 ARP 探测数据包来测试该地址是否已被使用。这也适用于以下情况:网络接口从非活动状态转换为活动状态、计算机从睡眠状态唤醒时、链路状态更改表明以太网电缆已连接时、802.11 无线接口与新基站关联时、或者当主机主动连接到逻辑链路时发生任何其他连接变化。

当然,主机不得定期执行此检查。这将浪费网络带宽,并且由于主机具有被动发现冲突的能力,因此没有必要,如第 2.4 节所述。

假设Windows DHCP服务器,使用ICMP回显请求(ping)的服务器端冲突检测默认是禁用的,建议不要使用它,除非在一些罕见的情况下:

如果您的网络包括旧版 DHCP 客户端(运行早于 Windows 2000 的 Windows 版本的客户端),您可以在特定情况下使用 DHCP 服务器服务提供的服务器端冲突检测。例如,当范围被删除和重新创建时,此功能在故障恢复期间可能很有用。有关详细信息,请参阅 DHCP 故障排除。

默认情况下,DHCP 服务不执行任何冲突检测。要启用冲突检测,请在将该地址租给客户端之前增加 DHCP 服务为每个地址执行的 ping 尝试次数。请注意,对于 DHCP 服务执行的每一次额外的冲突检测尝试,为 DHCP 客户端协商租约所需的时间都会增加额外的秒数。