有趣的往返时间行为

有趣的往返时间行为

我目前正在研究一个网络模块,一些课程涉及 ping 不同的网站以调查往返时间。我在做这件事时注意到一些有趣的事情,这让我感到困惑并寻求解释。如果我输入ping -4 google.com,RTT 与我输入 时有显著不同ping -4 www.google.com。我觉得特别奇怪的是,时间不是每次都更快或更慢;有时更快,有时更慢。为什么会这样?

答案1

答案其实很简单:同名 != 同主机。Google 使用基于 DNS 的负载平衡。只需使用合适的 DNS 客户端即可查看发生了什么:

$ dig www.google.com @8.8.4.4

; <<>> DiG 9.11.1-P3 <<>> www.google.com @8.8.4.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19808
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     45  IN  A   172.217.21.228

;; Query time: 13 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Sat Oct 28 22:19:15 CEST 2017
;; MSG SIZE  rcvd: 59

回复的生存时间 (TTL) 非常短:仅 45 秒。果然,过了这段时间,出现了一个不同的 IP 地址:

$ dig www.google.com @8.8.4.4

; <<>> DiG 9.11.1-P3 <<>> www.google.com @8.8.4.4
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47841
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.google.com.            IN  A

;; ANSWER SECTION:
www.google.com.     299 IN  A   216.58.206.4

;; Query time: 14 msec
;; SERVER: 8.8.4.4#53(8.8.4.4)
;; WHEN: Sat Oct 28 22:19:40 CEST 2017
;; MSG SIZE  rcvd: 59

再次强调,TTL 非常短:5 分钟。由于 TTL 如此短,您测试内容的时间可能比缓存的 DNS 回复过期所需的时间更长。

www.当然,对于带有或不带有其他子域(例如maps.或或其他)的查询也是如此mail.。对于这些,您更有可能得到不同的答复,因为您询问的是不同的名称。

相关内容