TLD何时为名称服务器粘贴logging可以保存DNS查询?

我的理解是,如果我将example1.com和example2.us的名称服务器设置为ns1.example2.us和ns2.example2.us,则查找www.example1.com将会:

  • 查找example1.comfind其名称服务器,没有胶水logging(.comregistry不会提供.us域的胶水)
  • 查找ns1.example2.us和ns2.example2.us( 必然都是? ),其中每个都将:
    • 查询example2.us,产生ns1.example2.us和ns2.example2.us的胶水logging
    • 显然是查询ns1.example2.us和/或ns2.example2.us来获取ns1.example2.us和/或ns2.example2.us的地址( 这是否正确?这似乎是我的经验)
  • 查询ns1.example2.us和/或ns2.example2.us以获取www.example1.com的地址

相反,如果我们将example1.com和example2.com的名称服务器设置为ns1.example2.com和ns2.example2.com,则查找www.example1.com将会:

  • 查找example1.com以查找其名称服务器,为ns1.example2.com和ns2.example2.com生成粘合logging
  • 请查询ns1.example2.com和/或ns2.example2.com以获取www.example1.com的地址

在这种情况下,我认为在查找中只有这两个步骤吗? 具体来说,我似乎遇到了example2.com中的查找量,表明查找example1.com并不总是使用胶水logging,导致额外的一步,其中ns1.example2.com和/或ns2.example2.com通过查询ns1.example2.com和/或ns2.example2.com查找。

编辑为突出我的第一个例子埋在我的小问题,并试图澄清我的主要问题在最后。)


也许一些图表会有所帮助,因为我认为我正在解释这一点。 如果exam​​ple.com的名称服务器是ns1.host.us和ns2.host.us,那么查看www.example.com时会发生什么?

图

第三个查找步骤似乎几乎普遍发生,但对我来说并不完全合理。 那第三步真的应该在那里吗?

如果exam​​ple.com的域名服务器是ns1.host.com和ns2.host.com,那么查看www.example.com时会发生什么?

图

我对这个案子的理解是否正确?

以下是我认为www.example.com的三分之一左右的查找可能会发生的情况,名称服务器ns1.host.com和ns2.host.com(基于对各个域的名称服务器的查询数量和时间) :

图

这实际上是可能的和/或它代表了一个糟糕的客户?

添加到Mit的答案。 最好的做法是使用胶水logging来解决这些循环依赖。 请参阅RFC1912的第2.3节: http : //www.faqs.org/rfcs/rfc1912.html

去引用:

有些人随时都会遇到胶水logging的坏习惯
他们添加一个NSlogging“只是为了确保”。 有重复的胶水
当域名服务器移动到新的IP地址或删除时,您的区域文件中的logging只会使其更难。 你会花上几个小时,试图弄清楚为什么随机的人仍然可以看到一些主机的旧IP地址,因为有人忘了更改或删除其他文件中的胶水logging。 较新的BIND版本将忽略本地区域文件中的这些额外粘合logging。

请注意,如果你使用BIND,最后一点。 另外,我认为大多数DNS 客户端会忽略额外的域名粘合logging,这将解释你所看到的。

编辑以跟进评论。

对于TLD胶水logging,您通常会将其提供给您的注册商,但是另有相同的规则适用。 我在.co.uk.com运行域名。 我在这两个对所有域名都具有权威性的顶级域名(TLD)中也有名称服务器。

如果我运行dig ns co.ukdig ns com ,我可以看到那些TLD权威服务器的大堆。 如果我select其中一个列出的.com服务器,并且dig @<server> ns <mydomain>.com它将返回我的域名的所有四个名称服务器,但只返回同一个TLD中的名称服务器的粘合loggingADDITIONALs),这就是你所描述的。

如果我运行dig @<co.uk server> <myotherdomain>.co.uk ,我将再次获得所有四个名称服务器,但是这次伴随着.co.uk TLD中这三个名称服务器的粘合logging。

这是应该的。 如果您的所有名称服务器都在.us TLD中,那么.com服务器将会通知您的.com域名的客户端将告诉您的域名服务器; 那么客户端将在.us服务器上执行另一个查询来查找他们的IP。 这额外的往返听起来可能听起来效率低下,但每个客户端的TTL周期只需要发生一次。 (TLDlogging通常为48小时)。

(道歉,如果你已经知道上述所有)。 回答原来的问题。 胶水logging不是为了保存DNS查找。 他们是必要的,以防止无限循环。

编辑2

对不起在这个问题上挥之不去。 我明白你的意思了(顺便说一下,好的图表)。

我对客户应该如何performance的理解是,如果有机会获得权威的RR,那么它应该; 但在这种情况下,客户端正在向名称服务器请求自己的 Alogging,这是毫无意义的,因为Glue Alogging。

我在这里已经达到了我所知道的极限,但我想不出为什么客户需要这样做。 我在这里猜测,但是也许客户端实现需要检查服务器是否对ns_.host.us是绝对权威的,即使这意味着什么看起来像一个毫无意义的额外往返。

试试dig +trace www.example.com看它是否做同样的事情。 如果最初的查询也是用_host.us这个名字的话,我会好奇的看它是否执行了同样的查询。

代理中的名称服务器是通过名称来标识的,而不是通过IP地址来标识的。 这意味着parsing名称服务器必须发出另一个DNS请求来找出它所涉及的服务器的IP地址。 如果委派中给出的名称是提供委托的域的子域,则存在循环依赖关系。 在这种情况下,提供委托的域名服务器还必须为委托中提到的权威域名服务器提供一个或多个IP地址。 这个信息被称为胶水。 委托名称服务器在DNS响应的附加部分以logging的forms提供此粘贴,并在响应的答案部分提供委派。

例如,如果exam​​ple.org的授权名称服务器是ns1.example.org,则试图parsingwww.example.org的计算机首先会parsingns1.example.org。 由于ns1包含在example.org中,所以首先需要parsingexample.org,它提供了一个循环依赖。 为了打破依赖关系,组织顶级域名的域名服务器与example.org的代理一起包含了粘合剂。 胶水logging是为ns1.example.org提供IP地址的地址logging。 parsing器使用这些IP地址中的一个或多个来查询域的权威服务器,从而允许其完成DNS查询。 这可能会解决这个问题。

胶水的目的是引导查询,否则将无法解决。 想象一下没有胶水:

  1. 查询www.example1.com的根目录,获取com名称服务器的引用。
  2. 查询www.example1.com的com名称服务器,请参阅example1..com的名称服务器ns1.example.com。
  3. 糟糕,我们没有ns1.example1.com的IP地址。 查询ns1.example.com的com名称服务器。
  4. 转到3。

com名称服务器需要为ns1.example.com返回Alogging,否则您永远不会到达那里。

由于权威的域名服务器通常不会为这些客户返回粘合logging,所以您仍然可能遇到问题。 例如:

  1. 查询ns1.example1.com的com名称服务器,获取ns1.example1.us的答案
  2. 查询我们的ns1.example1.us域名服务器,获取ns1.example.com的答案
  3. 转到1

哎呀 – 既不是com域名服务器,也不是美国域名服务器将返回胶水的出口bailiwick转介。 DJB有更详细的例子。

无论如何,胶水并不是一个快捷方式,而是一种避免循环的机制。 caching提供了保存查找的机制。