`ping -a` 挂起约 5 秒,而 `nslookup` 不会挂起

`ping -a` 挂起约 5 秒,而 `nslookup` 不会挂起

配置:

  • 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)

来源 :https://support.microsoft.com/en-us/topic/microsoft-tcp-ip-host-name-resolution-order-dae00cc9-7e9c-c0cc-8360-477b99cb978a

至少一个步骤要花费大量时间。

一些可能的问题:

  • 主机文件过大或无法读取的主机文件
  • 应用程序正在等待 DNS 应答
  • 申请正在等待 NBNS/LLMNR 答复

为消除此延迟而应用的配置取决于造成此问题的步骤。

我建议您使用像 Wireshark 这样的嗅探器来查看 ping 运行时发生的情况,以便了解解析使用了哪种协议。

相关内容