使用子域名和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
?我还不清楚找到根域的初始记录需要做多少工作?
答案 0 :(得分:4)
首先,注册商从不参与实际的DNS查找。注册商(实际上是注册管理机构)是DNS协议范围之外的管理实体。实际的查找过程看起来更像是这样:
A
的{{1}}。
rweb.stat.ucla.edu.
的服务器。edu.
服务器询问edu.
的{{1}}。
A
rweb.stat.ucla.edu.
服务器询问ucla.edu.
的{{1}}。
ucla.edu
可以是委派给另一组名称服务器的区域,在这种情况下,您将第三次获得推荐答案。A
有rweb.stat.ucla.edu.
stat.ucla.edu
。现在你必须重新开始并查看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.
记录本身位于同一区域,则由于有用的附加记录而更为重要。