接受的DNS根服务器查询

joa*_*nna 4 dns root

我没有在任何地方找到这个问题的答案,我有点困惑..我想知道是否迭代地或递归地查询根DNS服务器?就我对该主题的理解而言,它们可以递归地查询,因为它们是恢复名称的"最后一个选项",因此它们必须回答IP地址/错误消息.我对么?请为我说清楚.谢谢.

Wes*_*ker 17

对任何DNS服务器的查询,无论它们是否是根服务器,都会得到服务器可以提供的有关他们所知道的名称的信息.这意味着如果你在服务器上查询它不知道的名字,但它确实知道谁拥有它的一部分,它会引导你到下一个要问的地方.

让我们说你需要找出它的位置www.example.com.如果您使用dig绑定包中的实用程序,则可以查询根目录以获取答案,并查看它将告诉您的内容:

# dig @b.root-servers.net. www.example.com a
;; QUESTION SECTION:
;www.example.com.               IN      A

;; AUTHORITY SECTION:
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
; [...11 more authority servers  for .com not shown...]

;; ADDITIONAL SECTION:
h.gtld-servers.net.     172800  IN      A       192.54.112.30
d.gtld-servers.net.     172800  IN      A       192.31.80.30
; [...11 more IP addresses  for .com not shown...]
Run Code Online (Sandbox Code Playgroud)

上述响应的效果是根服务器告诉您"我不知道www.exmaple.com在哪里.您需要先询问.com,这是在以下地址列表中.

所以关闭你要求.com服务器问同样的问题:

 # dig @h.gtld-servers.net. www.example.com a
;; QUESTION SECTION:
;www.example.com.               IN      A

;; AUTHORITY SECTION:
example.com.            172800  IN      NS      a.iana-servers.net.
example.com.            172800  IN      NS      b.iana-servers.net.

;; ADDITIONAL SECTION:
a.iana-servers.net.     172800  IN      A       199.43.132.53
a.iana-servers.net.     172800  IN      AAAA    2001:500:8c::53
b.iana-servers.net.     172800  IN      A       193.0.0.236
b.iana-servers.net.     172800  IN      AAAA    2001:610:240:2::c100:ec
Run Code Online (Sandbox Code Playgroud)

这个答案可以帮助你进一步说"我也不知道,但去问example.com的所有者".问他们最终会得到你正在寻找的真正答案:

# dig @a.iana-servers.net. www.example.com a

;; ANSWER SECTION:
www.example.com.        172800  IN      A       192.0.32.10
Run Code Online (Sandbox Code Playgroud)

最后我们有一台愿意给我们真正答案的服务器.

但请注意,我们依次从根目录开始逐个询问每个服务器.在每一步,有人说"我有答案"或"我没有答案,但我知道你应该和谁谈谈".


Aln*_*tak 5

递归服务器(即服务于最终用户客户端的服务器)对权威服务器执行迭代查询.

响应那些迭代查询,从根目录开始链中的每个权威服务器将返回答案,如果它对该域具有权威性,或者引用可能具有答案的链中的下一个服务器.

根名称服务器提供完全递归服务,只引用每个TLD运行的名称服务器.