为什么通过 DHCP 获取 IP 地址需要几秒钟?

为什么通过 DHCP 获取 IP 地址需要几秒钟?

出于好奇,为什么经常需要当 CPU 每秒能够处理数百万次操作并且 ping 到路由器需要几毫秒时,如何通过 DHCP 获取网络配置?

在我的家庭环境中,有一个 WiFi 路由器和大约 5 台设备,看到 5-10 秒这样的时间并不罕见。

答案1

除了从 DHCP 服务器实际获取 DHCP 租约(通常不会花很长时间)之外,一些服务器在实际分配 IP 地址之前会先 ping 即将分配的 IP 地址,以验证该地址尚未在网络上使用 - 这需要几秒钟才能超时。客户端有时会做同样的事情(同样是为了防止 IP 地址冲突),这会增加一些时间。然后,除此之外,一些客户端还会注册他们的 DNS 条目等。

答案2

DHCP 可能需要更长的时间,因为它涉及一系列交易,不是与单个服务器进行交易,而是在初始请求期间与网络上的所有设备进行交易,因为它会发送广播消息。

如果你检查 DHCP 的 RFC,

http://www.faqs.org/rfcs/rfc2131.html

您可以清楚地看到涉及的一系列协商。一开始,客户端向 LAN 上的所有设备发送 DHCPDISCOVER,然后运行 ​​dhcp 服务的服务器返回 DHCPOFFER 消息。客户端可能还会等待所有可用的 dhcp 服务器的响应,然后再选择一个。然后,它发送一个带有标识符的 DHCPREQUEST,该标识符指示它选择了哪个服务器作为其 ip 提供商。最后,它获得带有所有配置参数的 DHCPACK。这只是 RFC 中“3.1 客户端-服务器交互 - 分配网络地址”的摘要。

根据我的经验,dhcp 需要很长时间,主要是在连接大量节点的大型 LAN 设置中。在只有一个 dhcp 服务器(例如 WIFI 路由器)和一两台电脑的家庭网络中,它相当快。

答案3

当我希望从 DHCP 服务器快速获得回复时,我发现了两个原因(和解决方案)。

1) 我的 DHCP 对其想要分配的地址执行了 ping 操作。这增加了 3 秒的延迟。我通过更改 DHCP 配置来消除此问题,使 MAC 地址与 IP 地址之间有映射。这基本上是使用 DHCP 分配静态地址。这为我消除了 3 秒的延迟。

2) 我有一个隔离网络,但是,您有时可能会遇到这种情况。当时正在进行 DNS 查找,这导致我从 DHCP 获取 IP 地址延迟了好几秒钟。在 DHCP 服务器配置中,有我们的域和 DNS 服务器的选项。删除 DNS 选项并进行上述更改后,我立即从 DHCP 服务器获得了回复。(**)

这些问题是我在设置中发现的。您的情况可能有所不同。

干杯

(**) 如果每次 DNS 查找失败造成延迟,并产生奇怪的连锁影响,让我抓耳挠腮,我都能得到一分钱,那么我就会得到很多很多分钱了。

答案4

如果您遇到 dhcp 性能问题;

  1. 检查网络延迟
  2. 查看数据包上限 dhcp 协商。您应该能够看到哪些操作花费了很长时间。(问题可能不是出在 dhcp 服务器上,谁在等待谁?)
  3. 检查 dhcp 服务器负载和日志。

相关内容