连接到互联网的每个设备都有一个唯一 IP 地址,其他计算机可使用该 IP 地址查找此设备。DNS 服务器使人们无需存储例如 192.168.1.1(IPv4 中)等 IP 地址或更复杂的较新字母数字 IP 地址,例如 2400:cb00:2048:1::c629:d7a2(IPv6 中)。
DNS 的基本功能
- 域名解析:将域名转换为 IP 地址(正向解析),也可以将 IP 地址转换为域名(反向解析)。
- 分布式数据库系统:DNS 并不是一个集中式数据库,而是一个层级式、分布式的命名系统。
- 提高访问效率:通过本地缓存、CDN 节点和智能解析,使用户访问速度更快。
- 负载均衡与容灾:通过返回不同 IP 地址,实现多个服务器的负载分担。
DNS 如何工作?
当你在浏览器中输入 www.example.com
,浏览器背后会发生如下步骤:
- 浏览器缓存:浏览器先查看自己是否有该域名的 IP 地址缓存,有就直接使用。
- 操作系统缓存:如果浏览器没命中,它会请求操作系统缓存。
- 本地域名服务器(递归解析器):若操作系统也没有,它会向配置的 DNS 服务器(如 114.114.114.114)发起请求。
- 根域名服务器:若本地 DNS 服务器没有结果,会先问“根 DNS 服务器”。
- 顶级域名服务器(TLD):根服务器告诉它
.com
的服务器地址。 - 权威域名服务器:TLD 服务器告诉它
example.com
的权威 DNS 地址。 - 最终解析:本地 DNS 向
example.com
的权威服务器请求www.example.com
的 IP 地址。 - 返回并缓存结果:IP 地址被返回给浏览器,并被本地 DNS 服务器缓存以提高下次访问速度。
DNS 解析过程涉及将主机名(例如 www.example.com)转换为计算机友好的 IP 地址(例如 192.168.1.1)。互联网上的每个设备都被分配了一个 IP 地址,必须有该地址才能找到相应的互联网设备 – 就像使用街道地址来查找特定住所一样。当用户想要加载网页时,用户在 Web 浏览器中键入的内容(example.com)与查找 example.com 网页所需的机器友好地址之间必须进行转换。
为理解 DNS 解析过程,务必了解 DNS 查询必须通过的各种硬件设备。对于 Web 浏览器而言,DNS 查询是“在幕后”发生的,除了初始请求外,不需要从用户的计算机进行任何交互。
加载网页涉及 4 个 DNS 服务器:
1. 递归解析器(Recursive Resolver)
- 又称为本地 DNS 服务器,通常由你的 ISP(互联网服务提供商)或操作系统配置。
- 它的职责是代表用户发起查询,层层询问其它 DNS 服务器直到找到最终结果。
- 会缓存查询结果,提高解析速度。
2. 根DNS服务器(Root DNS Server)
- 全球共部署了 13 组(A–M)根服务器副本,实际上有上千台分布式节点。
- 它知道每个顶级域(如
.com
、.org
、.cn
)的服务器在哪里。 - 响应本地 DNS 请求,并返回相应 TLD 服务器的地址。
3. 顶级域DNS服务器(TLD DNS Server)
- 负责管理某一类顶级域(如
.com
、.net
、.cn
等)。 - 告诉本地解析器某个具体域(如
example.com
)的权威 DNS 服务器地址。
4. 权威DNS服务器(Authoritative DNS Server)
- 实际存储域名与 IP 地址之间的映射关系。
- 由网站托管方或云服务提供商(如2743、阿里云、Cloudflare、godaddy)负责维护。
- 返回最终的 IP 地址,供浏览器连接目标网站服务器。
权威性 DNS 服务器与递归 DNS 解析器之间的区别是什么?
这是一个非常关键的问题。**权威 DNS 服务器(Authoritative DNS Server)和递归解析器(Recursive Resolver)**在 DNS 系统中扮演着完全不同的角色。
下面从多个维度来对比它们:
一、基本定义
项目 | 权威 DNS 服务器 | 递归解析器 |
---|---|---|
角色 | 提供最终答案 | 代表用户去查找答案 |
维护者 | 域名注册者或云服务商(如 阿里云、Cloudflare) | 通常是 ISP、企业网关或公共 DNS 提供商(如 Google DNS) |
是否存储解析记录 | 是(正式记录) | 否(只做临时缓存) |
二、功能对比
功能点 | 权威 DNS 服务器 | 递归解析器 |
---|---|---|
是否存储域名的实际解析记录 | ✅ 是,存储 A、CNAME、MX 等记录 | ❌ 否,只临时缓存查询结果 |
是否发起其他 DNS 查询 | ❌ 否,它是终点,不再向上游查询 | ✅ 是,它要逐级向根、TLD 等服务器查找 |
是否可以缓存结果 | ❌ 一般不缓存,是数据源 | ✅ 是,为加快后续访问速度会缓存结果 |
响应内容 | 返回原始解析数据(权威结果) | 返回最终解析结果(可能是缓存,也可能是新查询) |
三、举个例子说明
假设用户要访问 www.example.com
:
- 递归解析器会代表用户:
- 先问根 DNS,得到
.com
服务器; - 再问
.com
,得到example.com
的权威服务器; - 最后问权威服务器,得到
www.example.com
的 IP 地址; - 并将结果返回给用户,并缓存它一段时间。
- 先问根 DNS,得到
- 权威 DNS 服务器:
- 只负责回答:“我知道
www.example.com
是93.184.216.34
”; - 它不会去根服务器或 TLD 查询任何东西。
- 只负责回答:“我知道
四、总结类比
可以类比为:
- 递归解析器 = 快递员,跑去各个仓库找货物,把最终结果送到你手上。
- 权威 DNS 服务器 = 最终仓库,它拥有“货物”(IP 地址),等别人来取。

值得一提的是,在查询对象为子域命(例如 forums.2743.com )的情况下,将向权威性域名服务器之后的序列添加一个附加域名服务器,负责存储该子域的 CNAME 记录。

DNS 查找有哪些步骤?
大多数情况下,DNS 与正被转换为相应 IP 地址的域名有关。要了解此过程的工作方式,在 DNS 查找从 Web 浏览器经过 DNS 查找过程然后再返回时,跟踪 DNS 查找的路径会有所帮助。我们来看一下这些步骤。
注意:通常,DNS 查找信息将本地缓存在查询计算机内,或者远程缓存在 DNS 基础设施内。DNS 查找通常有 8 个步骤。缓存 DNS 信息时,将从 DNS 查找过程中跳过一些步骤,从而使该过程更快。以下示例概述了不缓存任何内容时的所有 8 个步骤。
DNS 查找的 8 个步骤:
-
- 用户在 Web 浏览器中键入 “example.com”,查询传输到互联网中,并被 DNS 递归解析器接收。
- 接着,解析器查询 DNS 根域名服务器(.)。
- 然后,根服务器使用存储其域信息的顶级域(TLD)DNS 服务器(例如 .com 或 .net)的地址响应该解析器。在搜索 example.com 时,我们的请求指向 .com TLD。
- 然后,解析器向 .com TLD 发出请求。
- TLD 服务器随后使用该域的域名服务器 example.com 的 IP 地址进行响应。
- 最后,递归解析器将查询发送到域的域名服务器。
- example.com 的 IP 地址而后从域名服务器返回解析器。
- 然后 DNS 解析器使用最初请求的域的 IP 地址响应 Web 浏览器。
DNS 查找的这 8 个步骤返回 example.com 的 IP 地址后,浏览器便能发出对该网页的请求:
- 浏览器向该 IP 地址发出 HTTP 请求。
- 位于该 IP 的服务器返回将在浏览器中呈现的网页(第 10 步)。

DNS 查询类型
DNS 查询包括不同类型的记录:
什么是 DNS 解析器?
DNS 解析器是 DNS 查找的第一站,其负责与发出初始请求的客户端打交道。解析器启动查询序列,最终使 URL 转换为必要的 IP 地址。
务必区分递归 DNS 查询和递归 DNS 解析器。该查询是指向需要解析该查询的 DNS 解析器发出的请求。DNS 递归解析器是一种计算机,其接受递归查询并通过发出必要的请求来处理响应。
DNS 查询有哪些类型?
典型 DNS 查找中会出现三种类型的查询。通过组合使用这些查询,优化的 DNS 解析过程可缩短传输距离。在理想情况下,可以使用缓存的记录数据,从而使 DNS 域名服务器能够返回非递归查询。
3 种 DNS 查询类型:
- 递归查询 – 在递归查询中,DNS 客户端要求 DNS 服务器(一般为 DNS 递归解析器)将使用所请求的资源记录响应客户端,或者如果解析器无法找到该记录,则返回错误消息。
- 迭代查询 – 在这种情况下,DNS 客户端将允许 DNS 服务器返回其能够给出的最佳应答。如果所查询的 DNS 服务器与查询名称不匹配,则其将返回对较低级别域名空间具有权威性的 DNS 服务器的引用。然后,DNS 客户端将对引用地址进行查询。此过程继续使用查询链中的其他 DNS 服务器,直至发生错误或超时为止。
- 非递归查询 – 当 DNS 解析器客户端查询 DNS 服务器以获取其有权访问的记录时通常会进行此查询,因为其对该记录具有权威性,或者该记录存在于其缓存内。DNS 服务器通常会缓存 DNS 记录,以防止更多带宽消耗和上游服务器上的负载。
什么是 DNS 高速缓存?DNS 高速缓存发生在哪里?
DNS 系统中广泛使用缓存机制,缓存的位置包括:
缓存记录的时长由 TTL(Time To Live)指定。
缓存的目的是将数据临时存储在某个位置,从而提高数据请求的性能和可靠性。DNS 高速缓存涉及将数据存储在更靠近请求客户端的位置,以便能够更早地解析 DNS 查询,并且能够避免在 DNS 查找链中进一步向下的额外查询,从而缩短加载时间并减少带宽/CPU 消耗。DNS 数据可缓存到各种不同的位置上,每个位置均将存储 DNS 记录并保存由生存时间(TTL)决定的一段时间。
浏览器 DNS 缓存
现代 Web 浏览器设计为默认将 DNS 记录缓存一段时间。目的很明显;越靠近 Web 浏览器进行 DNS 缓存,为检查缓存并向 IP 地址发出正确请求而必须采取的处理步骤就越少。发出对 DNS 记录的请求时,浏览器缓存是针对所请求的记录而检查的第一个位置。
在 Chrome 浏览器中,您可以转到 chrome://net-internals/#dns 查看 DNS 缓存的状态。
操作系统(OS)级 DNS 缓存
操作系统级 DNS 解析器是 DNS 查询离开您计算机前的第二站,也是本地最后一站。操作系统内旨在处理此查询的过程通常称为“存根解析器”或 DNS 客户端。当存根解析器获取来自某个应用的请求时,其首先检查自己的缓存,以便查看是否有此记录。如果没有,则将本地网络外部的 DNS 查询(设置了递归标记)发送到互联网服务提供商(ISP)内部的 DNS 递归解析器。
与先前所有步骤一样,当 ISP 内的递归解析器收到 DNS 查询时,其还将查看所请求的主机到 IP 地址转换是否已经存储在其本地持久性层中。
根据其缓存中具有的记录类型,递归解析器还具有其他功能:
- 如果解析器没有 A 记录,但确实有针对权威性域名服务器的 NS 记录,则其将直接查询这些域名服务器,从而绕过 DNS 查询中的几个步骤。此快捷方式可防止从根和 .com 域名服务器(在我们对 example.com 的搜索中)进行查找,并且有助于更快地解析 DNS 查询。
- 如果解析器没有 NS 记录,它会向 TLD 服务器(本例中为 .com)发送查询,从而跳过根服务器。
- 万一解析器没有指向 TLD 服务器的记录,其将查询根服务器。这种情况通常在清除了 DNS 高速缓存后发生。
DNS 的安全问题
-
DNS Spoofing / Cache Poisoning:攻击者伪造 DNS 响应,使用户被重定向。
-
DNS 劫持:ISP 或攻击者截获 DNS 请求,返回错误结果。
-
DNS 放大攻击:用于 DDoS 攻击,利用开放 DNS 服务器对特定目标发送大量流量。
-
解决方案:
- DNSSEC(DNS 安全扩展):对 DNS 数据进行签名,防止伪造。
- DoH(DNS over HTTPS)、DoT(DNS over TLS):加密 DNS 查询防止监听。
常用的公共 DNS 服务
服务商 | 地址 | 特点 |
---|---|---|
Google DNS | 8.8.8.8 , 8.8.4.4 |
快速、稳定 |
Cloudflare DNS | 1.1.1.1 , 1.0.0.1 |
支持 DoH、隐私保护强 |
阿里 DNS | 223.5.5.5 , 223.6.6.6 |
中国用户访问速度快 |
114 DNS | 114.114.114.114 |
本地化,国内普及度高 |