AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1003172
Accepted
user5289027
user5289027
Asked: 2020-02-15 19:44:20 +0800 CST2020-02-15 19:44:20 +0800 CST 2020-02-15 19:44:20 +0800 CST

回答缓存的 DNS 查询

  • 772

我不确定当它的缓存包含部分答案时递归解析的行为如何。具体来说,假设我首先运行了这个查找请求:

dig example.com @8.8.8.8

根据我的理解,在解析过程之后,以下记录将缓存在这个公共解析器(8.8.8.8)

example.com.        17834   IN  NS  a.iana-servers.net.
example.com.        17834   IN  NS  b.iana-servers.net.
example.com.        18662   IN  A   93.184.216.34

其次,假设我运行了另一个查找请求如下(在上述记录的 TTL 到期之前):

dig sub.example.com @8.8.8.8

现在,由于解析顶点域所需的 NS 记录已经在缓存中,递归解析器是否使用此缓存信息直接查询这些 NS 记录之一以获取 (sub.example.com) 的 A 记录?如果是,它如何知道如何分解请求?

我知道解析器如何从层次结构的顶部开始,即如果它在缓存中没有答案,则为根 (.)。但是,我发现令人困惑的是,如果缓存有部分答案(在本例中是顶点域的 NS 记录),解析器如何使用这些缓存的答案?

  1. 它会分解查询(sub.example.com)并识别顶点域(example.com),然后在缓存中找到(example.com)的NS记录的命中吗?
  2. 或者,它会从根目录开始递归解析 (sub.example.com) 并完全忽略 (example.com) 的任何先前缓存吗?
domain-name-system recursive
  • 1 1 个回答
  • 83 Views

1 个回答

  • Voted
  1. Best Answer
    Patrick Mevzek
    2020-03-09T22:43:33+08:002020-03-09T22:43:33+08:00

    递归缓存名称服务器将使用它在本地拥有的所有信息以执行尽可能少的查询,因此对于“递归解析器是否使用此缓存信息直接查询这些 NS 记录之一以获取 (sub.example.xml) 的 A 记录。 com)" 答案是肯定的,当然如果缓存中的内容没有过期。

    如果是,它如何知道如何分解请求?

    整个过程记录在RFC 1034 的 §4.3.2 中。另见§5.3.3

    它会分解查询(sub.example.com)并识别顶点域(example.com),然后在缓存中找到(example.com)的NS记录的命中吗?或者,它会从根目录开始递归解析 (sub.example.com) 并完全忽略 (example.com) 的任何先前缓存吗?

    根据上述算法,搜索从根开始查找所需的特定(名称、类型)。请注意,类型已被考虑在内。在任何步骤,如果给定的(名称,类型)信息已经在本地缓存中,并且没有过期,那么它将被使用。

    dig是解决 DNS 问题的有用工具,但如果您使用它,+trace您可以看到典型的递归名称服务器(但没有缓存)是如何工作的,并查看每个步骤以及如何从根目录开始解析。否则,您可以安装任何递归名称服务器,例如bindor unbound,在其日志记录中增加详细程度,然后阅读日志文件以了解正在发生的事情......

    • 0

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve