我注意到,通过主机名 ping 比使用 IP 地址慢。例如,在 Linux 命令行中:
$ time ping google.com -c 1
PING google.com (150.101.213.160) 56(84) bytes of data.
64 bytes from 150.101.213.160: icmp_seq=1 ttl=61 time=14.4 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.425/14.425/14.425/0.000 ms
real 0m5.251s
user 0m0.003s
sys 0m0.005s
$ time ping 150.101.213.160 -c 1
PING 150.101.213.160 (150.101.213.160) 56(84) bytes of data.
64 bytes from 150.101.213.160: icmp_seq=1 ttl=61 time=14.5 ms
--- 150.101.213.160 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 14.537/14.537/14.537/0.000 ms
real 0m0.019s
user 0m0.001s
sys 0m0.004s
我起初以为是 DNS 服务器需要一段时间才能解析,但当我按主机名 ping 时,第一行几乎立即出现,表明 IP 地址已经确定。五秒钟的停顿发生在 DNS 解析之后,就在收到(第一个)ping 之前。
答案1
延迟是由于ping
尝试通过查找(160.213.101.150.in-addr.arpa
反向 DNS)。
正常回复(无论是成功还是nxdomain)应该是即时的,但可能是你的 ISP 没有缓存它和213.101.150.in-addr.arpa
当时权威服务器出现了问题。
这也可能是由于配置错误或某些 DNS 服务器中的错误造成的。如果您每次都看到这种延迟,则可能是因为您的 DNS 解析器没有在应该缓存回复时正确缓存回复(即使是负面回复也是可缓存的)。
当使用ping
iputils 时,添加-n
选项以避免反向 DNS 查找。
1它是一个域名或主机名,而不是 URL;它没有指定任何特定的协议或资源。http://google.com
是一个 URL。http://150.101.213.160
也是一个 URL。
答案2
这是路由器的 IPv6 问题,与这里。