为什么 host+curl 比单独使用 host 和单独 curl 花费更长的时间?

网络工程 dns
2022-02-12 23:51:14

我试图测试我的网站的速度,所以我用

time curl "http://google.com"

结果以

real 0m15.589s user 0m0.012s sys 0m0.000s

我试着看看什么花了这么长时间,所以我给主机计时 time host google.com

并得到

real 0m0.180s user 0m0.008s sys 0m0.004s

time curl "http://216.58.217.206"

并得到

real 0m0.163s user 0m0.000s sys 0m0.004s

0.18 s + 0.16 s小于 15.58s!!

为什么 curl 需要这么长时间?

2个回答

host google.com仅解析 A 记录。curl "http://google.com"发送 HTTP GET 请求。发送 HTTP 消息比解析主机名要多得多。

而且,两者都curl "http://google.com"触发host google.com本地DNS解析器。在解决了所需的记录之后,host已经完成了它的工作,而curl刚刚开始做它的实际工作。

简而言之:curl是一个HTTP的工具。host是一个DNS工具。curl隐含地依赖于 DNS。host明确地是为 DNS 设计的。

当你这样做时curl "http://google.com",你正在指定name; 意味着它有循环/解析nameIP(首先连接到DNS服务器,解析IP)然后连接/ curlIP(在你的情况下是谷歌!)。相对需要一些时间。

现在,检查MAN页面host

“host”是一个用于执行 DNS 查找的简单实用程序

它仅连接到 DNS/解析nameIP. 就是这样!

curl "http://216.58.217.206", 在这种情况下,无需重新加载/循环name. 因为,如您所知,您直接将IP. 所以,只需连接到谷歌!