2

使用子域和 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?我也不清楚找到根域的初始记录需要做多少工作?

4

1 回答 1

5

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

  1. 向根服务器询问 A.rweb.stat.ucla.edu.
    • 他们不会告诉你,但他们会为你指出edu..
  2. edu.服务器询问 A.rweb.stat.ucla.edu.
    • 他们不会告诉你,但他们会为你指出服务器ucla.edu.
  3. ucla.edu服务器询问 A.rweb.stat.ucla.edu.
    • stat.ucla.edu可能是委托给另一组名称服务器的区域,在这种情况下,您将第三次获得推荐答案。
    • 但不能说不是。
    • 你得到一个答案:rweb.stat.ucla.edu.CNAME id-86-243.stat.ucla.edu

现在你必须重新开始并抬头看id-86-243.stat.ucla.edu......

...除了因为目标与原始记录CNAME在同一个区域内(或者,一般来说,在恰好由同一个名称服务器提供服务的任何区域内),名称服务器将有助于您在DNS 响应的附加部分。解析器会注意到这一点,并且不必在记录本身之后运行。Aid-86-243.stat.ucla.eduA

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

所以对你的问题的简短回答是肯定的,使用CNAME为解析器做更多的工作并使解析过程花费更长的时间。但实际上这并不重要,因为解析器的缓存非常有用。如果CNAME's 的目标与记录本身位于同一区域CNAME,则由于有用的附加记录,它的重要性就更小了。

于 2013-04-12T21:31:35.783 回答