使用子域和 CNAME 会影响 DNS 查找时间吗?

Jer*_*oen 2 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   
Run Code Online (Sandbox Code Playgroud)

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

Cel*_*ada 5

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

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

现在你必须重新开始,抬头仰望id-86-243.stat.ucla.edu......

......只是因为目标CNAME是相同的区域原始记录(或者,在一般情况下,恰好是来自同一个域名服务器提供服务的任何区域内)内,域名服务器会帮忙,给你A记录id-86-243.stat.ucla.edu在DNS 响应的附加部分。解析器会注意到这一点,并且不必在A记录本身之后运行。

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

因此,对您的问题的简短回答是yes, usingCNAME使解析器的工作更多,并使解析过程花费更长的时间。但实际上这并不重要,因为解析器的缓存非常有用。如果CNAME的目标与CNAME记录本身在同一区域中,那么由于有用的附加记录,它就更不重要了。