为什么通过主机名 ping 比通过 IP 地址 ping 花费的时间更长?

为什么通过主机名 ping 比通过 IP 地址 ping 花费的时间更长?

我注意到,通过主机名 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 解析器没有在应该缓存回复时正确缓存回复(即使是负面回复也是可缓存的)。

当使用pingiputils 时,添加-n选项以避免反向 DNS 查找。


1它是一个域名或主机名,而不是 URL;它没有指定任何特定的协议或资源。http://google.com是一个 URL。http://150.101.213.160也是一个 URL。

答案2

这是路由器的 IPv6 问题,与这里

相关内容