为什么我的 PC 对 www.ietf.org 执行多个 DNS 查询?

Seg*_*ult 2 domain-name-system wireshark cloudflare

我正在为一个课程做一个练习,我必须刷新 DNS 缓存,然后访问www.ietf.org并捕获数据包。我懂了:

在此处输入图片说明

选定的查询和响应是“主要”的。其他人呢?看起来像一个重定向。我的猜测是第二个和第三个查询也与查找 IPv4 和 IPv6 地址有关。

Pat*_*zek 6

由于使用 CNAME 记录,因此存在多个查询,这在使用 CDN 时很常见。

你可以很容易地看到它:

$ dig www.ietf.org +noall +ans
www.ietf.org.       16m2s IN CNAME www.ietf.org.cdn.cloudflare.net.
www.ietf.org.cdn.cloudflare.net. 5m IN A 104.16.45.99
www.ietf.org.cdn.cloudflare.net. 5m IN A 104.16.44.99
Run Code Online (Sandbox Code Playgroud)

但那是因为递归名称服务器确实进行了迭代以给您答复。如果你一步一步来,你会发现会发生什么:

$ dig www.ietf.org +norecurse A
[..]
;; ANSWER SECTION:
www.ietf.org.       13m23s IN CNAME www.ietf.org.cdn.cloudflare.net.
Run Code Online (Sandbox Code Playgroud)

进而:

$ dig www.ietf.org.cdn.cloudflare.net. A
[..]
;; ANSWER SECTION:
www.ietf.org.cdn.cloudflare.net. 5m IN A 104.16.44.99
www.ietf.org.cdn.cloudflare.net. 5m IN A 104.16.45.99

$ dig www.ietf.org.cdn.cloudflare.net. AAAA
[..]
;; ANSWER SECTION:
www.ietf.org.cdn.cloudflare.net. 5m IN AAAA 2606:4700::6810:2d63
www.ietf.org.cdn.cloudflare.net. 5m IN AAAA 2606:4700::6810:2c63
Run Code Online (Sandbox Code Playgroud)

现在的智能应用程序预计使用 AAAA 和 A 记录类型来解析名称,并略微偏向于 IPv6。例如,这在“Happy Eyeballs”算法中进行了解释。

PS:DNS 中没有“重定向”,因此请不要在这种情况下使用该术语;重定向是 HTTP 级别的问题,远远超过/之后发生在 DNS 层。