了解DNS响应标头信息

时间:2014-10-20 10:25:58

标签: dns

我正在学习DNS,我试图了解非递归解析器/服务器如何响应空响应。

我对DNS的理解基本上是:

如果服务器返回非权威响应,它通常会提供一个名称服务器列表(NSCOUNT),您可以查询这些名称服务器以查找权威响应。

但是,如果DNS服务器什么都不返回会发生什么?如同 - 只有ANCOUNT = 0NSCOUNT = 0ARCOUNT = 0的回复标题?

例如,如果我查询Google的免费DNS服务器(8.8.8.8),并且我要求它解析" google.com",并且未设置递归位,这是我得到的回应:

+---------------------------------------------------------------------------+
| 25550 | QR: 1 | OP: 00 | AA: 0 | TC: 0 | RD: 0 | RA: 1 | Z: 0 | RCODE: 00 |
+---------------------------------------------------------------------------+
| QDCOUNT:     1,   ANCOUNT:     0,   NSCOUNT:     0,   ARCOUNT:     0      |
+---------------------------------------------------------------------------+

基本上,除了原始查询之外,它没有向我返回任何内容,它告诉我递归是可用的。

在这种情况下,查询应该如何进行(假设我们不要使用请求服务器使用递归)。这是唯一可以联系其中一个顶级服务器的办法吗?或者,换个问题,谷歌的DNS服务器怎么没有给我一个名单服务器列表(为什么NSCOUNT 0?),我可以咨询一下?

2 个答案:

答案 0 :(得分:2)

当你说" No Recurse"时,谷歌的NS没有递归。由于他们不是google.com的权威名称服务商,因此他们没有提供任何回复。这是正常的,可接受的行为。

您只能请求"递归"位设置,找出google.com的A记录。其他方式是:

  1. 从根服务器找到NS for com。
  2. 从一个com NS中找到google.com的NS。
  3. 从gooogle.com NS查找google.com的A记录。
  4. 基本上,你做的是递归名称服务器应该为你做的事情。 注意:递归NS可以使用其缓存来获取没有实际查询的响应,基于记录的TTL(当然,如果您设置递归位( - :

答案 1 :(得分:1)

只有权威服务器才能在响应的权限部分中包含NS记录。

对于google.com,Google 8.8.8.8服务器具有权威性,并且您要求他们不要递归,因此他们没有。

这是一个真正的DNS客户端不会发送给他们的异常查询,因此他们对“NO DATA / NO ERROR”(RCODE == 0, ANCOUNT == 0)的响应是可以接受的。