我已阅读RFC1123中描述的“存根解析器”的定义,但我仍然不清楚。
据我所知,在 DNS 解析中,客户端使用递归解析器(可能来自 ISP 或外部提供商)与根服务器、TLD 名称服务器和权威名称服务器建立联系。但是,客户端的“存根解析器”到底是什么?
我理解“存根解析器”是连接到“递归解析器”的解析器,但是 Chrome 或 Firefox 等浏览器可以充当“存根解析器”吗,或者“存根解析器”是否依赖于操作系统本身?
非常感谢。
答案1
这存根解析器是客户端的软件组件,它将所有 DNS 查询发送到预先配置的递归解析器服务器(具有需要递归标志设置在查询中),让所述服务器完成所有工作,然后仅使用来自所述服务器的响应。
传统上,普通应用程序本身并不是存根解析器,而是调用getaddrinfo
(或在此之前gethostbyname
)让操作系统执行名称解析并返回结果。也就是说,存根解析器传统上是操作系统组件。
然而,如今 Web 浏览器的范围非常庞大,并且越来越多地附带它们喜欢的所有组件。我不确定浏览器是否仍然遵循普通应用程序工作的一般规则,或者它们是否选择复制存根解析器功能(在这种情况下,大概只是从 OS 存根解析器读取配置参数)。
无论浏览器总体上有多“正常”,Firefox 在配置了其新的可信递归解析器 (TRR)启用(基于 DoH 的浏览器内名称解析)模式可能应该被视为存根解析器本身。
TL;DR:如果您询问的是一般应用程序,答案会是简单的“否”。对于浏览器,答案更像是“它很复杂”。