2011-06-07 83 views
4

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

回答

4

递归服务器(即服务的最终用户的客户端的那些)进行迭代查询权威服务器。

针对这些迭代查询,在链从根下的每个权威服务器要么返回答案如果它的权威性该域,或转诊下一个服务器环比下滑是威力有答案。

根名称服务器不要提供完全递归服务,只能引用由每个TLD运行的名称服务器。

16

对任何DNS服务器的查询,无论它们是否是根服务器,都会根据服务器允许发布的关于他们知道的名称的信息得到答案。这意味着如果你向服务器查询一个它不知道的名字,但它确实知道谁拥有它的一部分,它会引用你到下一个要求的地方。

可以说你需要找出www.example.com是哪里。如果您在绑定包中使用该实用程序,您可以查询根的答案,看看它会告诉你:

# 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...] 

上述反应的效果是根服务器,告诉你“我 唐不知道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 

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

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

;; ANSWER SECTION: 
www.example.com.  172800 IN  A  192.0.32.10 

最后,我们有一个服务器是愿意给我们真正的 答案。

但是,请注意,我们依次询问每个服务器,从根 开始,然后往下走。在每一步都有人说“我有答案” 或“我没有答案,但我知道下一次应该与谁谈话”。