通过名称 ping Windows 7 计算机时延迟时间比通过 ip ping 时长长

通过名称 ping Windows 7 计算机时延迟时间比通过 ip ping 时长长

这个问题涉及在我的本地网络上通过名称或 IP 访问/ping 彼此的机器,以及通过名称执行此操作相关的延迟。所有机器都是 Windows 7 Ultimate 64 位。

以下是三种场景的输出:

  1. 通过名称 ping machine2。关键问题是接近6秒延迟在结果开始返回之前,请在命令行上按下回车键。

C:\Users\machine1>ping machine2

Pinging machine2 [fe80::95f5:38e3:fc8a:4a70%11] with 32 bytes of data:
Reply from fe80::95f5:38e3:fc8a:4a70%11: time=1ms
Reply from fe80::95f5:38e3:fc8a:4a70%11: time=1ms
Reply from fe80::95f5:38e3:fc8a:4a70%11: time=1ms
Reply from fe80::95f5:38e3:fc8a:4a70%11: time=1ms

Ping statistics for fe80::95f5:38e3:fc8a:4a70%11:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 1ms, Average = 1ms
  1. 通过 ip ping machine2。没有延迟从按下回车键到收到结果

C:\Users\machine1>ping 192.168.1.101

Pinging 192.168.1.101 with 32 bytes of data:
Reply from 192.168.1.101: bytes=32 time=1ms TTL=128
Reply from 192.168.1.101: bytes=32 time=1ms TTL=128
Reply from 192.168.1.101: bytes=32 time=1ms TTL=128
Reply from 192.168.1.101: bytes=32 time=1ms TTL=128

Ping statistics for 192.168.1.101:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 1ms, Average = 1ms
  1. 强制 ping 使用 IPv4 并通过机器名称进行 ping。仍然会出现相同的延迟。

C:\Users\machine1>ping machine2 -4

Pinging machine2 [192.168.1.101] with 32 bytes of data:
Reply from 192.168.1.101: bytes=32 time=58ms TTL=128
Reply from 192.168.1.101: bytes=32 time=86ms TTL=128
Reply from 192.168.1.101: bytes=32 time=1ms TTL=128
Reply from 192.168.1.101: bytes=32 time=19ms TTL=128

Ping statistics for 192.168.1.101:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 86ms, Average = 41ms

这个问题主要出现在使用程序时,我只想快速输入网络上要连接的机器名称,例如远程桌面,每次都要等待 6 秒钟,或者先查找其 IP,当 IP 发生变化时,这不太好。我对静态 IP 也不感兴趣。

此时,我认为这与机器名称解析的关系比任何其他事情都大,但不知道下一步该怎么做。任何帮助都将不胜感激。

答案1

超时将发生在 DNS 解析中。这可能是因为您指定了多个 DNS 服务器,但其中一个服务器没有响应。

在命令提示符窗口中输入:

C:\> ipconfig /all | find "DNS Servers"

并记下DNS服务器的IP地址。

然后使用该nslookup工具来探测它们:

C:\> nslookup
Default Server: Blah
Address: 192.168.1.1

>

然后依次选择每个 DNS 服务器:

> server 192.168.1.1
Default Server: [192.168.1.1]
Address: 192.168.1.1

并使用它进行查找:

> machine2
Server: [192.168.1.1]
Address: 192.168.1.1

Name: machine2.mydomain.com
Address: 192.168.1.101

对列表中的每个 IP 地址重复上述server命令。其中一个应该会失败,并显示以下内容:machine2

Request to [192.168.1.1] timed-out

然后只需要找出 a) 为什么 DNS 服务器不工作,以及 b) 您是否应该使用它。

答案2

Windows 使用几种不同的方法来解析机器名称:

  • DNS
  • NBNS,NetBIOS 名称服务(所有 Windows 版本均使用)
  • LLMNR(Windows 7 中引入;仅限 IPv6)
  • mDNS(如果安装了 Bonjour;iTunes 和 Safari 可能附带)

可能是您的 DNS 服务器没有响应查询,或者其他计算机已禁用或设置了防火墙,或禁用了 NBNS 和/或 LLMNR。(我不知道确切的顺序,但似乎总是先尝试 DNS。)

安装Wireshark并观察与名称解析相关的所有数据包。将显示过滤器设置为dns or nbns or udp.port=5355

答案3

我最近在 Linux 系统上确实遇到了这个问题。

原因是,一旦返回数据包开始到来,某些版本ping默认会尝试对响应所来自的 IP 地址进行反向 DNS 查找:

shadur@caleburn: ~/ > ping google.com
PING google.com (74.125.136.113) 56(84) bytes of data.
64 bytes from ea-in-f113.1e100.net (74.125.136.113): icmp_seq=1 ttl=49 time=12.7 ms
64 bytes from ea-in-f113.1e100.net (74.125.136.113): icmp_seq=2 ttl=49 time=7.75 ms
64 bytes from ea-in-f113.1e100.net (74.125.136.113): icmp_seq=3 ttl=49 time=7.85 ms

如果您的设置没有为 192.168.1.1 配置反向 DNS 1.168.192.in-addr.arpa(或者至少在您的文件中没有 192.168.1.1 的条目)hosts,它将在尝试访问 DNS 服务器以完成查找时超时,并且它不能开始打印响应数据包,直到查找得到解决(通过正确的 DNS 响应,在这种情况下它会打印返回的名称,或者通过超时,在这种情况下它只打印 IP 地址)。

将名称/IP 地址组合添加到您的hosts文件中应该可以解决该问题。

编辑:在 Windows 中,您要查找的文件C:\Windows\System32\drivers\etc\hosts默认位于。)

相关内容