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 / 问题 / 1043507
Accepted
vinz
vinz
Asked: 2020-11-23 11:58:14 +0800 CST2020-11-23 11:58:14 +0800 CST 2020-11-23 11:58:14 +0800 CST

RFC 8767 7. 陈旧数据与新查找

  • 772

RFC 8767的第 7 节说:

因为现代解析器使用预取和请求合并等技术来提高效率,所以不必在存在陈旧数据的情况下每个客户端请求都需要触发新的查找流,而是最近已经做出了善意的努力来刷新过时的数据在交付给任何客户端之前。

我没有得到这个建议的限制。假设我的缓存中有“abc.com”,其 TTL 为 1 小时并已过期 30 分钟,而“xyz.com”的 TTL 为 1 小时并已过期 20 分钟。如果我将陈旧数据保留 12 小时,我应该先提供陈旧数据(因为它不久前已过期)还是应该先尝试刷新?

在文档中,它说如果客户端计时器过期(约 1.8 秒),则可以提供陈旧数据,但现在建议在某些情况下返回第一个陈旧数据。但我不明白这些情况是什么。

而是最近做出了善意的努力来刷新过时的数据

这是否意味着如果解析器在 TTL 过期之前至少尝试刷新数据一次,我可以立即服务器陈旧数据?现在可以成功刷新任何请求吗?

domain-name-system
  • 1 1 个回答
  • 75 Views

1 个回答

  • Voted
  1. Best Answer
    Håkan Lindqvist
    2020-11-23T12:29:16+08:002020-11-23T12:29:16+08:00

    您引用的文本是在此上下文中(紧接在您的文本之前):

    仅在刷新失败时才使用陈旧数据,以符合 DNS 设计的初衷和运营商所期望的行为。如果总是立即使用陈旧的数据,然后在发送客户端响应后尝试刷新缓存,则解析器将经常发送刷新不会遇到问题的数据。

    这意味着只有当解析器在“客户端响应计时器”触发之前无法获取新数据时(这是建议的 1.8s 相关的地方,在本文前面),才允许提供陈旧数据(使用缩短的 TTL)。

    这也不意味着它停止处理此查找只是因为它向客户端提供了陈旧的数据。它仍应尝试完成查找并为将来更新缓存,以避免下次提供过时的数据。

    如果查找不仅比“客户端响应计时器”(建议 1.8 秒)慢,而且比“查询解析计时器”(查询的最大时间,建议 10-30 秒)慢,甚至完全不可能,那么它建议只需要每隔“故障复查定时器”秒(建议30s)再次尝试查询。

    即,如果您尝试在过去 30 秒内刷新(或使用任何失败重新检查计时器)并且该尝试完全失败(或可能仍在进行中),那么您可以提供陈旧的数据。否则没有。

    您应该将其视为不提供过时数据的目标。RFC8767 所说的本质上是,当传统行为是超时(从客户端的角度来看)或由于无法获取当前数据而返回错误时,您可以在继续时暂时提供陈旧数据尝试获取当前数据。

    来自第 5 节。示例方法:

    当递归解析器收到请求时,它应该启动
    客户端响应计时器。此计时器用于避免客户端超时。
    它应该是可配置的,推荐值为 1.8 秒,因为
    它略低于 2 秒的常见超时值,同时仍
    让解析器公平地解析名称。

    然后,解析器检查其缓存中是否有任何
    满足请求的未过期记录,并在可用时返回它们。如果它没有找到
    相关的未过期数据,并且
    请求中没有设置 Recursion Desired 标志,它应该立即返回响应,而不需要
    查询缓存中的过期记录。通常,此响应
    将是对覆盖该区域的权威名称服务器的引用,
    但具体情况取决于实现。

    如果将进行迭代查找,则查询失败重新检查计时器
    。
    建议从无响应或以其他方式失败的权威名称服务器刷新的尝试
    频率不超过每 30 秒。如果
    在此期间收到此请求,则可以立即查询缓存以获取陈旧
    数据以满足该请求。

    在故障复查定时器的周期之外,解析器
    应该启动查询解析定时器并开始迭代
    解析过程。此计时器限制了解析器在联系外部机构时所做的工作,
    通常
    在 10 到 30 秒左右。如果此计时器在
    仍在处理的尝试查找上到期,则
    放弃解析工作。

    如果在客户端响应计时器过去后仍未完全确定答案
    ,则解析器应检查其
    缓存以查看是否存在满足
    请求的过期数据。如果是这样,它将该数据添加到 TTL
    大于 0 的响应消息中(如第 4 节中所述)。
    然后在解析器继续尝试
    刷新数据时将响应发送到客户端。

    如果在解析尝试期间无法访问任何权限
    ,解析器应尝试刷新委托并
    重新启动迭代查找过程,剩余时间在
    查询解析计时器上。这种恢复应该在每次
    解决工作中只进行一次。

    在解析过程之外,最大陈旧计时器用于
    缓存管理,并且独立于查询解析过程。
    此计时器在概念上与
    许多解析器中存在的最大缓存 TTL 不同,后者是对
    从权威服务器接收的 TTL 值的限制,在第 4 节中的 TTL 定义中建议为 7
    天。最大陈旧计时器
    应可配置。它定义了记录
    过期后应该保留在缓存中的时间长度。建议值
    介于 1 到 3 天之间。

    • 2

相关问题

  • 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