我知道这主要是学术性的,因为我们讨论的DNS查找最多只需要几百毫秒,并且只在会话开始时才相关.我只是很好奇.
我知道一个未缓存的.com查询将涉及至少咨询一个?.gtld-servers.net.服务器和未缓存的.com.au将涉及咨询至少一个.au.服务器.
现在,我想我需要知道的是
>各种各样的?.gtld-servers.net.使用任播技术的服务器在澳大利亚拥有本地完全权威的节点,使其与澳大利亚人一样快.?.并避免200毫秒的海外延迟,或者只在美国或北半球主持部分或全部?
解决方法
虽然针对.au域名和.com域名的查询数量惊人,但来自名称服务器似乎涉及到美国的往返,但.com域名比.au域名更多.
…
好的,所以我做了更多的研究,我想我也可以报告结果.
>所有DNS查询都以根区域开头,但根区域中的查询不太可能必须查询根区域服务器,因为它几乎总是被缓存(这是一个小区域,只能解析名称“根区域名称服务器在澳大利亚有相当好的存在(我认为13个中有4个在澳大利亚有一个节点).但我们可能不需要担心这个问题.“,”org“,”au“等. .
>然后DNS查询将查询顶级域服务器.对于未知的域名,这不会被缓存,因此这一步对于解决某些事情的速度很重要.
在.com和.net域名的13个TLD服务器中,其中1个将从澳大利亚回复(很可能是因为它使用任播地址并且有澳大利亚节点).在为一个未知的.com域尝试一个随机名称服务器时,它有1/13的可能性会快速返回(我的意思是,对于澳大利亚人来说,这个时间是25毫秒,而对于往返美国来说往往是190-280毫秒) .
在.au域名的12个TLD服务器中,其中4个将从澳大利亚回复.在为一个未知的.*.au域尝试一个随机名称服务器时,有一个4/12(或1/3)的机会它将很快返回.仅供参考,其中两个在我测试的悉尼地点不到5毫秒内回复.
在.org域名的6个TLD服务器中,其中1个将从澳大利亚东海岸回复,另外1个将从距离约55毫秒的附近位置回复(这可能意味着,例如,新加坡),所以我们将给出那个半点.在为一个未知的.org域尝试一个随机名称服务器时,有1.5 / 6(或1/4)的可能性会很快返回.
测试我有时间解决.au vs .org支持这一点:未缓存域的返回时间不同,因为测试的DNS服务器随机选择了名称服务器.但.au域的查找平均为203毫秒(12次试验),而.com域平均为278毫秒(12次试验).正如我在下面讨论的那样,当使用繁忙的DNS服务器(具有充分引用的缓存的服务器)时,这可能会变得更快.
>运行类似BIND的最新副本的繁忙的递归DNS服务器将缓存各种名称服务器的RTT(返回时间),并且将支持先前返回最快的那些.这是一个好消息,但为了使其运行良好,它必须是一个相当大的流量DNS服务器.服务器的RTT信息随着时间的推移而衰减,并在30分钟或者对更快的服务器的一定数量的查询完成时被丢弃.要“准备好”这个RTT缓存需要数十个或数百个不同域的查询(这样你就可以至少每次击中每个?.gtld-servers.net名称服务器,每个?.au名称服务器等).因此,为了使其保持准备,每半小时需要数十次或数百次查询.
一个典型的大型ISP的递归DNS服务器应该在这方面做得很好.
>从TLD服务器获取结果不仅仅足够 – 只是将您引用到域自己的名称服务器.然后你也要查询它们.如果TLD服务器上没有胶水记录(例如,如果您的域名是example.com而您的名称服务器是ns?.example.org则不会有胶水记录),这需要全新的DNS查询再次为名称服务器地址.