DNS查询时间是否受使用子域和CNAME的影响?

时间:2013-04-12 20:38:22

标签: dns nameservers

使用子域名和CNAME会减慢DNS查找时间吗?据我了解,如果客户想要查找例如rweb.stat.ucla.edu,则至少需要四个步骤:

[registrar] NS ucla.edu ==> ns2.dns.ucla.edu
[ns2.dns.ucla.edu] NS stat.ucla.edu ==> dns.stat.ucla.edu
[dns.stat.ucla.edu] CNAME rweb.stat.ucla.edu ==> id-86-243.stat.ucla.edu
[dns.stat.ucla.edu] A id-86-243.stat.ucla.edu  ==> 128.97.86.243   

这是否意味着客户端在访问页面时必须连接到每个服务器?或者DNS服务器是否相互连接并直接解析(和缓存)rweb.stat.ucla.edu ==> 128.97.86.243?我还不清楚找到根域的初始记录需要做多少工作?

1 个答案:

答案 0 :(得分:4)

首先,注册商从不参与实际的DNS查找。注册商(实际上是注册管理机构)是DNS协议范围之外的管理实体。实际的查找过程看起来更像是这样:

  1. 向根服务器询问A的{​​{1}}。
    • 他们不会告诉您,但他们会指向rweb.stat.ucla.edu.的服务器。
  2. edu.服务器询问edu.的{​​{1}}。
    • 他们不会告诉您,但他们会指向A
    • 的服务器
  3. rweb.stat.ucla.edu.服务器询问ucla.edu.的{​​{1}}。
    • ucla.edu可以是委派给另一组名称服务器的区域,在这种情况下,您将第三次获得推荐答案。
    • 但不要说它不是。
    • 您会得到答案:Arweb.stat.ucla.edu. stat.ucla.edu
  4. 现在你必须重新开始并查看rweb.stat.ucla.edu. ...

    ...除了因为CNAME的目标位于与原始记录相同的区域内(或者,通常,在恰好从同一名称服务器提供的任何区域内),名称服务器将帮助您在DNS响应的其他部分中为id-86-243.stat.ucla.edu提供id-86-243.stat.ucla.edu记录。解析器会注意到这一点,并且不必在CNAME记录本身之后运行。

    由于解析器缓存了答案,因此可以从缓存中回答许多查询,并且实际上不必每次都询问。特别是查询的前几个步骤都可能已被解析程序缓存,除非它立即启动冷缓存。因此,解析器通常可以从步骤3开始(因为它记住A的名称服务器来自其缓存)或至少在步骤2(因为它记住了id-86-243.stat.ucla.edu的名称服务器是什么)如果它还不知道最终的答案。

    因此,对您的问题的简短回答是,使用A会为解析器带来更多功能,并使解决过程需要更长时间。但实际上它并不重要,因为解析器的缓存非常有用。如果ucla.edu.的目标与edu.记录本身位于同一区域,则由于有用的附加记录而更为重要。