DNS 解析器(ISP 或 Opend DNS 或 Google 的解析器)是否有等待服务器响应的特定超时期限?如果有,它是在 RFC 中还是只是每个解析器自定义的?
我听说有传言说是 2 秒,但没有在任何地方看到过。
ps. 不是本地机器解析器,就像 Windows 那样。http://technet.microsoft.com/en-us/library/cc961411.aspx
答案1
RFC 1034(http://www.faqs.org/rfcs/rfc1034.html)第 5 节
RFC 1035(http://www.faqs.org/rfcs/rfc1035.html)第 7 节
RFC 1536(http://www.faqs.org/rfcs/rfc1536.html)
值得注意的是,解析器通常有两种类型......存根解析器和迭代解析器。
存根解析器可能是您个人系统上的解析器。迭代解析器是 OpenDNS 和其他 ISP 运行的解析器。它们负责“繁重”的查找,并且更有可能缓存结果(尽管现在许多存根解析器也缓存)。
解析器超时/重试/重传算法对于每个实现都是特定的。
答案2
我不确定它是否是 RFC 或者每个解析器是否都有自己的默认值。
通常,解析器会首先按顺序查询所有名称服务器,并设置较低的超时时间。然后,它会提高超时时间并再次查询,除非它收到来自 DNS 系统的错误。
但是根据 DNS 和 BIND,第 5 版中 BIND 的超时工作方式如下。BIND 往往是 DNS 的参考实现。以下是 bind 8.2.1 及更高版本的行为方式。
如果仅配置了一个名称服务器,它将以 5 秒的超时时间查询该名称服务器,如果超时,则将尝试以 10 秒的超时时间进行第二次查询。如果失败,则将返回硬故障。
如果配置了多个名称服务器,则它将按顺序查询每个名称服务器,超时时间为 5 秒。然后,它将再次按顺序循环遍历名称服务器,第一个名称服务器的超时时间为 10 秒,第二个名称服务器的超时时间为 10/2,第三个名称服务器的超时时间为 10/3。如果所有这些超时,则返回硬错误。对于 3 个名称服务器,查找可能需要长达 33 秒才会真正失败。当然,大多数情况下,DNS 系统在发生这种情况之前会为您提供 IP 地址或查找失败。所以我只希望在您的互联网连接中断时才会发生这种情况。