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


24

出于好奇,为什么当CPU每秒能够处理数百万个操作并且对路由器执行ping操作需要几毫秒的时间时,为什么通常需要几秒钟通过DHCP获得网络配置?

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

Answers:


22

除了从DHCP服务器实际获取DHCP租约(通常不会花费很长时间)之外,某些服务器还将在实际分发之前先对要分发的IP地址进行ping操作,以验证它是否尚未分发在网络上使用-超时需要几秒钟。客户端有时会做同样的事情(再次,以防止IP地址冲突),这会增加一些时间。然后,最重要的是,某些客户端还将注册其DNS条目等。


3
我工作的dhcp服务器使用ARP请求来检测IP冲突。
erichui 2010年

9

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

如果您检查RFC的DHCP,

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

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

根据我的经验,dhcp需要花费很长时间,主要是在大型LAN设置中连接了许多节点。在只有一台dhcp服务器(例如WIFI路由器)和一两台PC的家庭网络中,速度非常快。


在具有一台WiFi路由器和大约5台设备的家庭网络中,大约需要5到10秒,我认为这很慢。但是感谢您的解释。
Borek Bernard '12

确保您有一台dhcp服务器。如果只有5个设备,则可能要为dhcp服务器中的每个设备保留IP。但是,如果您很好奇,则可以使用tcpdump查看实际的协商,并查看造成延迟的原因。
Daniel t。

根据dhcp服务器的不同,它可能需要花费几秒钟的时间,而不管网络活动或CPU速度如何。这是因为服务器在向地址提供给客户端之前首先查询网络以查看地址是否正在使用中,并且它必须至少等待一会儿才能找到答案。此超时是您注意到的延迟的一部分,即使在最安静的网络上也将存在。
6

2

我想从DHCP服务器中快速回复时发现了两个原因(和解决方案)。

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

2)我有一个隔离的网络,但是,您有时可能会收到此消息。DNS查找已完成,对我来说,这导致从DHCP获取IP地址需要很多秒的延迟。在DHCP服务器配置中,有用于域和DNS服务器的选项。删除DNS选项和以上更改后,我从DHCP服务器获得了即时答复。(**)

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

干杯

(**)如果每次DNS查找失败都会给我带来一分钱的延误,这会导致奇怪的敲门声,导致我挠头,那么我将得到很多便士。


1

我不知道您有什么场景,但是在现实世界中,您是从一台旧服务器(dhcp服务器始终是拥有最旧硬件的那台服务器:))获得IP地址...等,在防火墙后面有很多请求,一个或多个路由器/交换机...延迟,cpu功率...以及在Windows世界中,dhcp实现的效率不如我们想要的!


1
“在Windows世界中,dhcp实现的效率不如我们所希望的!!” 您是否有任何文档或资料来源可以备份您在此处所说的内容?
mfinni 2010年

不,但是例如。。。Linux以非常简单的方式提供了故障转移DHCP选项。除了Windows中内置的Active Directory功能之外,还有其他一些要考虑的潜在安全问题。
C_Sense 2010年

2
我认为您正在反省多年阅读过多互联网帖子而引起的夸张。“微软很糟糕。” “为什么?” “因为每个人都这么说。”
joeqwerty 2010年

您可以在Windows DHCP服务器上重叠DHCP作用域。显然,对于win2k8 R2,还有一个新的故障转移选项。也许Linux比这更好。这些都与“效率”无关。您指的是Windows DHCP中的哪些“安全问题”?我要求您提供消息来源,而不是您提出更多要求。
mfinni 2010年

0

如果您在使用dhcp时遇到性能问题,请执行以下操作:

  1. 检查网络延迟
  2. 查看数据包上限dhcp协商。您应该能够看到长时间采取的措施。(问题可能不在dhcp服务器上,谁在等待谁?)
  3. 检查dhcp服务器负载和日志。

这是家庭网络场景,我已经更新了问题。
Borek Bernard

ಠ_ಠYU没有询问超级用户了吗?
Ablue 2010年

也许是因为它与网络相关,这是最佳选择?
Kedare 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.