1.什么是DNS?
一种基于UDP协议的域名系统 (DNS)
是互联网的电话簿。
互联网中每个设备都有一个唯一
IP地址,其他计算机可使用该IP地址查找此设备。人们通过例如 nytimes.com 或 espn.com 等域名在线访问信息。
Web 浏览器则通过IP地址进行交互。
DNS 将域名转换为 IP 地址,以便浏览器能够加载资源。
DNS 服务器使人们无需存储例如 192.168.1.1(IPv4 中)等 IP 地址。
2.DNS如何工作?
DNS 解析过程涉及将主机名(例如www.example.com)转换为计算机友好的 IP 地址(例如 192.168.1.1)。
当用户想要加载网页时,用户在 Web 浏览器中键入的内容(example.com)与查找网页所需的对机器友好的IP地址之间需要进行转换。
为理解 DNS 解析过程,务必了解DNS 查询必须经过的不同硬件组件。
对于 Web 浏览器,DNS查找 在“幕后”进行,除了初始请求外,不需要从用户的计算机进行任何交互。
也就是说,以下内容对用户来说是透明的。
3.加载网页涉及的4个DNS服务器
① DNS解析器
该解析器可被视为被要求去图书馆的某个地方查找特定图书的图书馆员。
DNS 解析器是一种服务器,是 DNS 查找的第一站,旨在通过 Web 浏览器等应用程序接收客户端计算机的查询。
然后,解析器一般负责发出其他请求,解析器启动查询序列,最终使 URL 转换为必要的 IP 地址。
注意:未缓存的DNS查找将涉及 递归查询 和 迭代查询。
区分 递归DNS查询 和 递归DNS解析器
递归DNS查询 是指向需要解析该查询的 DNS 解析器发出的请求。
递归DNS解析器 是一种计算机,其接受递归查询并通过发出必要的请求来处理响应。
② 根域名服务器
根域名服务器是将人类可读的主机名解析为 IP 地址的第一步。
可将其视为指向不同书架的图书馆中的索引,一般其作为对其他更具体位置的引用。
③ TLD域名服务器
顶级域服务器(TLD)可被视为图书馆中的特定书架。
此域名服务器是搜索特定 IP 地址的下一步,其托管主机名的最后一部分(在 example.com 中,TLD服务器为 “com”)。
④ 权威性域名服务器
可将这个最终域名服务器视为书架上的字典,其中特定名称可被转换成其定义。
权威性域名服务器是域名服务器查询中的最后一站。
如果权威性域名服务器能够访问请求的记录,则其会将已请求主机名的 IP 地址返回到发出初始请求的 DNS 解析器(图书管理员)。
权威性DNS服务器 | 递归DNS解析器?
这两个概念都是指 DNS 基础设施不可或缺的服务器(服务器组),但各自担当不同的角色,并且位于 DNS 查询管道内的不同位置。考虑二者差异的一种方式是,递归解析器位于 DNS 查询的开头,而权威性域名服务器位于末尾。
递归 DNS 解析器
递归解析器是一种计算机,其响应来自客户端的递归请求并花时间追踪DNS 记录。
为执行此操作,其发出一系列请求,直至到达用于所请求的记录的权威性 DNS 域名服务器为止(或者超时,或者如果未找到记录,则返回错误)。
幸运的是,递归 DNS 解析器并不总是需要发出多个请求才能追踪响应客户端所需的记录。他实现了缓存机制,维护了过去的DNS记录缓存,可以减少请求次数。
权威性DNS服务器
权威性DNS服务器是实际持有并负责DNS资源记录的服务器。
其是位于DNS查找链底部的服务器,其将使用所查询的资源记录进行响应,从而最终允许发出请求的 Web 浏览器达到访问网站或其他 Web 资源所需的 IP 地址。
权威性域名服务器从自身数据满足查询需求,无需查询其他来源,因为这是某些 DNS 记录的最终真实来源。
值得一提的是,在查询对象为子域(例如 image.baidu.com/ ) 的情况下,将向权威性域名服务器之后的序列添加一个附加域名服务器,其负责存储该子域的 CNAME 记录
4.DNS查找有哪些步骤?
大多数情况下,DNS 与正被转换为相应 IP 地址的域名有关。
要了解此过程的工作方式,在 DNS 查找从 Web 浏览器经过 DNS 查找过程然后再返回时,跟踪 DNS 查找的路径会有所帮助。我们来看一下这些步骤。
注意:通常,DNS 查找信息将本地缓存在查询计算机内,或者远程缓存在 DNS 基础设施内。
DNS 查找通常有 8 个步骤。缓存 DNS 信息时,将从 DNS 查找过程中跳过一些步骤,从而使该过程更快。以下示例概述了不缓存任何内容时的所有 8 个步骤。
- 用户在 Web 浏览器中键入 “example.com”,查询传输到 Internet 中,并被 DNS 递归解析器接收。
- 解析器查询 DNS 根域名服务器(.)。
- 根服务器使用存储其域信息的顶级域名(TLD)DNS 服务器(例如 .com 或 .net)的地址响应该解析器。本案例中,我们的请求指向 .com TLD。
- 解析器向 .com TLD 发出请求。
- TLD 服务器随后使用该域的域名服务器 example.com 的 IP 地址进行响应。
- 递归解析器将查询发送到域的域名服务器。
- 将 example.com 的 IP 地址从域名服务器返回给解析器。
- DNS 解析器使用最初请求的域的 IP 地址响应 Web 浏览器。
- DNS 查找的这 8 个步骤返回 example.com 的 IP 地址后,浏览器便能发出对该网页的请求:
- 浏览器向该 IP 地址发出HTTP请求。
- 位于该 IP 的服务器返回将在浏览器中呈现的网页(第 10 步)。
5.DNS查询的3种类型?
DNS查找中会出现三种类型的查询。通过组合使用这些查询,可缩短DNS解析过程的传输距离。
还可以使用缓存的记录数据,使DNS域名服务器能够返回非递归查询。
- 递归查询:在递归查询中,DNS客户端 要求 DNS服务器(一般为DNS递归解析器)将使用请求的资源记录或错误消息(如果解析器找不到该记录)响应客户端。
- 迭代查询:在这种情况下,DNS客户端 将允许 DNS服务器返回它所能返回的最佳答案。可能是下一步最近的服务器IP,然后DNS客户端使用该IP发送请求进行进一步查询,直到发生错误或超时。
- 非递归查询:当DNS解析器客户端 向 DNS服务器查询它有权访问的记录时,就会发生这种情况,因为它对该记录具有权威性,或者该记录存在于其缓存中。就可以直接返回查询结果,缩短加载时间并减少带宽/CPU 消耗。
6.DNS高速缓存
缓存的目的是将数据临时存储在某个位置,从而提高数据请求的性能和可靠性。
DNS 高速缓存涉及将数据存储在更靠近请求客户端的位置,以便能够更早地解析 DNS 查询,并且能够避免在 DNS 查找链中进一步向下的额外查询,从而缩短加载时间并减少带宽/CPU 消耗。
DNS 数据可缓存到各种不同的位置上,每个位置均将存储DNS记录并保存由生存时间(TTL)决定的一段时间。
DNS 高速缓存发生在哪里?
浏览器 DNS 缓存
现代 Web 浏览器设计为默认将 DNS 记录缓存一段时间。
目的很明显:越靠近 Web 浏览器进行 DNS 缓存,为检查缓存并向 IP 地址发出正确请求而必须采取的处理步骤就越少。
发出对 DNS 记录的请求时,浏览器缓存是针对所请求的记录而检查的第一个位置。
在 Chrome 浏览器中,您可以转到 chrome://net-internals/#dns 查看 DNS 缓存的状态。
操作系统(OS)级 DNS 缓存
DNS解析器是 DNS 查询离开您计算机前的第二站,也是本地最后一站。
操作系统内处理此查询的过程通常称为“存根解析器”或 DNS客户端。
当存根解析器获取来自某个应用程序的请求时,其首先检查自己的缓存,以便查看是否有此记录。
如果没有,则将本地网络外部的 DNS 查询(设置了递归标记)发送到 Internet 服务提供商(ISP)内部的 DNS 递归解析器。
与先前所有步骤一样,当 ISP 内的递归解析器收到 DNS 查询时,其还将查看所请求的主机到 IP 地址转换是否已经存储在其本地持久性层中。
根据其缓存中具有的记录类型,递归解析器还具有其他功能:
- 如果解析器没有
A 记录,但确实有针对权威性域名服务器的NS 记录,则其将直接查询这些域名服务器,从而绕过 DNS 查询中的几个步骤。此快捷方式可防止从根和 .com 域名服务器(在我们对 example.com 的搜索中)进行查找,并且有助于更快地解析 DNS 查询。 - 如果解析器没有
NS 记录,它会向TLD 服务器(本例中为 .com)发送查询,从而跳过根服务器。 - 万一解析器没有指向 TLD 服务器的记录,其将查询根服务器。这种情况通常在清除了 DNS 高速缓存后发生。
参考文献
【1】什么是 DNS_DNS的工作方式_DNS高速缓存的工作方式| Cloudflare 中国官网 | Cloudflare