我了解到 DNS 解析器从顶级域名开始反向工作,检查每一级的子域名服务器。例如,假设没有缓存,尝试解析 abexample.com 的解析器将查询根服务器,然后查询 .COM 域名服务器,然后检查 b.example.com 是否有自己的 NS 记录(如果没有),则使用 example.com 的权威域名服务器解析此第四级域名。我理解必须进行此子 NS 检查才能使 DNS 正常运行,但与“较浅”标签(例如二级和三级域名)相比,这会增加“较深”子域名(例如四级、五级和六级子域名)的 DNS 解析时间吗?
我认为,当解析涉及权威名称服务器时,粘合记录会否定这一点(例如,Nominet 似乎允许 .UK 和 .CO.UK 域名使用粘合记录),但如果不涉及粘合记录或仅部分涉及粘合记录(例如,abcdexample.com. 与 www.example.com.)呢?谢谢您的宝贵时间。
答案1
据我所知,DNS 解析器从顶级域名开始向后工作,检查每一级的子名称服务器。
解析器并不会在每个级别上检查名称服务器,而是在(可能)每个代表团考虑一下我们的递归解析器没有缓存任何记录但知道根区域的情况。
客户端询问c.b.a.example.com. IN A
,解析器不知道c.b.a.example.com.
、b.a.example.com.
、 ...example.com.
或 的权威是谁com.
。但它知道.
(根区域) 的权威是谁。
解析器会询问根域名服务器c.b.a.example.com. IN A
,但由于根域名服务器不具有 的权威性com.
,因此它们会回复类似 的内容,说明com. IN NS ...
具有 权威性的域名服务器com.
。解析器会继续向其中一个域名服务器询问 的相同问题c.b.a.example.com. IN A
,这可能会返回另一个 的授权example.com. IN NS ...
。
名称中的每个标签并不是都对应一个委托,毕竟,区域c.b.a.example.com.
中的情况可能是这样example.com.
的,当解析器向名称服务器权威机构询问example.com.
问题时c.b.a.example.com. IN A
,它可以回答c.b.a.example.com. IN A ...
(当然,除非它委托,比如说a.example.com.
)。
预计每个代表团增加了解析时间(可能不适用于服务器可能对多个委托具有权威性的情况),但这并不一定意味着更多的标签导致解决时间增加。
至于粘合记录,它们不具有权威性。假设,如果区域中example.com.
有一个名称服务器ns1.example.com.
,其 A 记录也com.
作为粘合记录,我们仍可能要求ns1.example.com.
其提供自己的 A 记录,因为对于客户端查询,我们应该向权威名称服务器询问答案。
答案2
标签数量越多是否会导致 DNS 解析时间增加?
不,一般来说不是,因为你必须记住(这常常被误解).
名称并不一定是授权。
以您自己的例子来说,由于上述原因,您的描述略有错误,对于a.b.example.com
,一旦查询名称服务器找到了example.com
它的权威名称服务器,就会查询这些名称服务器,它们可能会直接得到答案,a.b.example.com
因为b.example.com
不一定是一个单独的区域,其中有不同的名称服务器委托给区域之外example.com
。
您无法仅通过查看字符串来了解委托点的位置,您需要执行主动 DNS 查询。例如,gouv.fr
不是委托给fr
,co.uk
委托给 的位置是uk
... 但名称服务器完全相同(观察SOA
记录可以查看委托发生的位置)。
至于
我了解到 DNS 解析器是从顶级域名开始反向工作的
首先,它们从根开始,确切地说。然后,这个概念是正确的,但是有大量的缓存。因此,在实践中,它很少需要从最右边重新开始。.com
例如,名称服务器以及“始终”被请求的名称(如前 X 个网站...)将在所有缓存中,因此不会触发新查询(当然,当 TTL 变为零时除外,但那时它是一个查询,结果放入缓存中,然后结果用于大量进一步的查询)。
我认为胶水记录
粘合记录与上述内容无关,或者几乎无关。它们只在非常特殊的情况下才会发挥作用,即名称服务器位于它们所服务的域名的管辖范围内。那么它们是必需的,但也会产生各种问题,因此它们在加快查询速度方面的优点值得怀疑。