曲径通幽论坛

标题: 为什么 ping 和 wget 时的解析有时很慢? [打印本页]

作者: beyes    时间: 2015-4-5 10:02
标题: 为什么 ping 和 wget 时的解析有时很慢?
为什么 ping 和 wget 时的解析有时很慢?

比如我 ping www.groad.net ,可能会要好一会才得到 ping 的返回信息,而 ping www.baidu.com 时却一下子就可以了。这是网站服务器慢的原因吗?

要知道,ping 一个网址时,是要先解析成 IP 的,这样势必就要求发起 DNS 查询。现在,解析 IP 时,许多平台上的 ping 或 wget 默认是优先查询 IPv6 地址的,如果对方没有 IPv6,那么许多时间都耗在这个解析身上了。

下面来做一下测试(基于 OpenWrt 平台的 ping,有指定 -4 或 -6 来选择 ipv4 或 ipv6 的 ping,其它的 linux 发行版要 ping ipv6 的话可选 ping6 这个命令):
[attach]4025[/attach]

一个 ping 总共耗时 18 秒,确实够慢的。同样可以测试 wget ,也会得到同样的结果。

测试一下 baidu 的 ping,看情况如何:
[attach]4027[/attach]

非常给力,只用了 3 秒的时间。

如果我们用 ping -4 www.groad.net -c 4 来看看情况:
[attach]4028[/attach]

结果令人满意,也只是耗时 3 秒 。

来测试 ipv6 的 ping 一把:
[attach]4029[/attach]

耗时 15 秒,而且 ping 不通。这 15 秒 加上强制 ipv4 ping 的 3 秒,刚好等于默认测试时的 18 秒。由此可见,确实是 IPv6 的优先影响了测试结果。为了进一步验证,使用 wireshark 来捕捉:
[attach]4030[/attach]

从上图可以看出,情况确实如上述所推测的。同时也了解了为什么默认 ping www.baidu.com 就很快,因为 baidu.com 只是一个 CNAME ,真正的域名对应了一个 IPv4 的 A  记录。





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2