配置:
Windows 7的
TCP 上的 NetBIOS 已关闭
观察结果:
ping -a <ip-address>
挂起约 5 秒后反向查找失败(改用 IP 地址)任何
gethostbyaddr()
尝试反向查找 IP 地址的应用程序都会遇到同样的问题nslookup <ip-address>
几乎立即返回blah-blah: Non-existent domain
问题:
为什么会发生这种情况?我猜是因为 NetBIOS 广播消息(反向查找的最后一步),但关闭它
NetBIOS over TCP
应该会禁用此步骤,不是吗?如何更改我的配置以消除现有应用程序的这种延迟?
应用程序需要使用什么功能来避免这种延迟(即表现为
nslookup
而不是ping
)?
答案1
名称解析过程有不同的步骤。
这些主要步骤如下(按顺序):
- 查看主机文件
- 使用域名服务
- 使用备用名称解析协议(NBNS 和/或 LLMNR)
至少一个步骤要花费大量时间。
一些可能的问题:
- 主机文件过大或无法读取的主机文件
- 应用程序正在等待 DNS 应答
- 申请正在等待 NBNS/LLMNR 答复
为消除此延迟而应用的配置取决于造成此问题的步骤。
我建议您使用像 Wireshark 这样的嗅探器来查看 ping 运行时发生的情况,以便了解解析使用了哪种协议。