当用户在浏览器中输入特定网站时发生的整个端到端过程可以参考下图:
图片
问题: 什么是 DNS?
答案 → DNS 指的是域名系统(Domain Name System)。DNS 是互联网的目录,将人类可读的域名,例如 google.com,转换为机器可读的 IP 地址。
问题: 高层次解释 DNS 查询的过程是什么?
答案 → 这个过程是一个复杂而优雅的过程。DNS 信息被大量缓存在各个地方:
- 首先, 浏览器从自己的缓存中短时间查找这些信息。
- 接下来, 如果在缓存中找不到 DNS 映射,则向计算机操作系统进行查询,操作系统也会短时间缓存此信息。
- 接着, 如果在操作系统的缓存中仍然找不到 DNS 映射,则浏览器向互联网发出查询,查询到 DNS 解析器。这将引发一系列请求,直到找到 DNS 映射为止。这一步涉及 DNS 基础设施中的许多服务器。
- 最终,浏览器获得了服务器的 IP 地址。
问题: 解释一下 DNS 服务器?
答案 → DNS 层次结构中有不同类型的 DNS 服务器,每个服务器都有不同的用途。
当浏览器进行 DNS 查询时,实际上是在询问 DNS 解析器。
这个 DNS 解析器可以来自我们的 ISP,也可以来自像 CloudFlare 的 1.1.1.1 或 Google 的 8.8.8.8 这样的流行 DNS 提供商。
如果 DNS 解析器在其缓存中没有答案,它会找到正确的权威名称服务器并向其发出请求。
问题: 什么是“权威名称服务器”?
答案 → “权威名称服务器”是保存答案的服务器。当我们更新域名的 DNS 记录时,我们实际上是在更新其权威名称服务器。
问题: DNS 解析器如何找到权威名称服务器?
答案 → 权威名称服务器有三个主要级别:
- 根名称服务器。
- 顶级域名服务器。
- 域的权威名称服务器。
问题: 解释一下根名称服务器?
答案 → 请找到有关根名称服务器的详细信息:
根名称服务器存储顶级域名服务器的 IP 地址。
有 13 个逻辑根名称服务器,每个根名称服务器都分配了一个唯一的 IP 地址。
每个前述 IP 地址后面实际上有很多物理服务器。
通过 Anycast 的神奇之处,我们被路由到最接近我们的任何一个服务器。
问题: 解释一下顶级域名服务器?
答案 → 请找到有关顶级域名服务器的详细信息:
- 顶级域名服务器存储了其下所有域的权威名称服务器的 IP 地址。
- 有许多类型的顶级域名。例如,我们熟悉的有“.com”、“.org”、“.edu”。还有国家代码顶级域名如“.de”和“.uk”。还有许多其他类型。
- 域的权威名称服务器提供 DNS 查询的权威答案。
问题: 解释一下权威名称服务器?
答案 → 当我们注册一个域时,默认情况下注册商运行权威名称服务器,但我们可以将其更改为其他服务器。
请注意,像 AWS 和 CloudFlare 这样的云服务提供商运行强大的权威名称服务器。
问题: 介绍一下典型 DNS 查询的流程?
答案 → 此过程涉及以下步骤:-
第一步: 用户在浏览器中输入 google.com。
- 浏览器首先检查自己的缓存以找到相应的 IP 地址。
- 如果缓存中没有答案,则进行操作系统调用以获取答案。操作系统调用很可能有自己的缓存。
第二步: 如果在操作系统缓存中找不到答案,它会向 DNS 解析器发出请求。DNS 解析器首先检查自己的缓存。
第三步: 如果在 DNS 解析器缓存中找不到答案,或者说答案已过期,则它会请求根名称服务器。
第四步: 根名称服务器首先返回“.com”顶级域名服务器的列表。
请注意,由于“.com”是一个常见的顶级域名,解析器很可能已经缓存了那些“.com”顶级域名服务器的 IP 地址。
第五步: 然后,DNS 解析器到达“.com”顶级域名服务器。
第六步: “.com”顶级域名服务器返回“google.com”的权威名称服务器。
第七步: 然后,DNS 解析器到达“google.com”的权威名称服务器。
第八步: “google.com”的权威名称服务器然后返回“google.com”的 IP 地址。
第九步: 然后,DNS 解析器将 IP 地址返回给操作系统。操作系统然后将其返回给浏览器。
问题: 在 DNS 级别进行更改通常需要很长时间才能反映这些更改?
答案 → 这有两个原因:
(1) DNS 传播很慢,因为每个 DNS 记录都有 TTL。而且一些默认 TTL 很长。
(2) 并非每个 DNS 解析器都是良好的“公民”,也就是说,有些 DNS 解析器可能不遵守 TTL。
问题: 有哪些方法可以减轻这种风险?
答案 → 有两种主要方法:
方法 #1.) 将要更改的记录的 TTL 缩短到非常短的时间(比如 60 秒),并在实际更新发生之前提前更改。
这样做可以让所有 DNS 服务器有足够的时间接收新的缩短 TTL,从而根据新的缩短 TTL 实际记录更新可以生效。
方法 #2.) 在旧 IP 地址上保留服务器运行一段时间。只有当流量下降到可接受的水平时,才关闭服务器。