1. 简介

IP 地址是互联网通信的基础,但人类更擅长记忆短小的域名而非复杂的数字串。DNS(Domain Name System,域名系统) 就是为了解决这个问题而诞生的。

DNS 的核心作用是:将域名解析为对应的 IP 地址,比如将 google.com 转换为 142.251.42.174。通过本文,我们将系统性地了解 DNS 的基本原理与工作机制。

2. DNS 基础概念

2.1. 域名解析流程

浏览器访问网站时,首先需要通过 DNS 解析域名获取目标服务器的 IP 地址。整个流程如下:

  1. 浏览器发起 DNS 查询请求
  2. DNS 服务器查找并返回对应的 IP 地址
  3. 浏览器使用该 IP 地址连接服务器

DNS v1

由于互联网上活跃的域名数量庞大,每个设备不可能存储全部域名与 IP 的映射关系。因此,DNS 被设计为一个分布式数据库系统,以支持全球范围的高效查询。

2.2. 分布式系统特性

DNS 是一个典型的分布式系统,具备高可用性、最终一致性和一定的容错能力。

根据 CAP 定理,DNS 在网络分区时优先保障可用性,而不是强一致性。这意味着:

✅ 允许短暂的不一致
❌ 无法保证所有节点数据实时同步
⚠️ 但最终会收敛一致

dns CAP v1

3. 域名空间结构

为了高效管理全球域名,DNS 使用了一种树状层级结构,称为Domain Namespace(域名空间)

Domain Namespace v1

3.1. 层级结构

整个域名空间是一个倒置的树形结构,每个节点代表一个域名。从上到下依次为:

  • 根域(Root Domain):最顶层,用 . 表示
  • 顶级域(TLD):如 .com.org.cn
  • 二级域(SLD):如 google.combaidu.com
  • 三级域及子域(Subdomain):如 mail.google.comdocs.google.com

这种结构使得域名易于组织和管理。

3.2. 完全限定域名(FQDN)

从任意域名节点向上追溯到根域,就构成了该域名的完全限定域名(Fully Qualified Domain Name,FQDN),例如:

docs.google.com.(注意结尾的点表示根域)

FQDN 是 DNS 内部使用的完整路径,具有以下命名限制:

  • 只能包含字母、数字和连字符(a-z, A-Z, 0-9, -)
  • 不能以连字符开头
  • 总长度不超过 255 字符,每段不超过 63 字符

3.3. 区域(Zone)

Zone 是 DNS 管理的基本单位,代表由同一台 DNS 服务器管理的一组域名记录。

例如:

  • google.comdocs.google.comsheets.google.com 由同一台服务器管理,构成一个 Zone
  • dns.google.com 由另一台服务器管理,构成另一个 Zone

dns zones v1

Zone 可以是主域,也可以是子域,后者称为从属区域(Subordinate Zone)

4. DNS 客户端-服务器架构

DNS 本质上采用客户端-服务器架构

dns arch v1

  • 客户端发起查询请求(DNS Resolver)
  • 服务器返回解析结果

但实际流程比图示复杂得多。由于域名数据分布在全球多个服务器上,通常需要多级递归查询才能获取最终答案。

5. 域名服务器(Name Server)

Name Server 是 DNS 的核心组件,负责存储域名与 IP 的映射信息。

5.1. 权威服务器(Authoritative Name Server)

这类服务器由管理员配置,保存某个 Zone 的权威数据,是解析的最终来源。

DNS 服务器按层级排列:

  • 根服务器(Root Server):全球 13 组,管理根域
  • TLD 服务器:如 .com.net 的服务器
  • 域服务器:如 google.com 的服务器

5.2. 缓存服务器(Caching Name Server)

为了提高解析效率,DNS 引入了缓存机制。缓存服务器可以:

✅ 减少对权威服务器的查询压力
❌ 存在缓存过期导致的不一致风险

缓存的有效期由 TTL(Time To Live)控制。TTL 由权威服务器设置,缓存服务器据此决定何时刷新数据。

6. DNS 解析流程

6.1. 递归与非递归查询

DNS 支持两种查询方式:

类型 说明
递归查询 客户端要求服务器返回最终答案
非递归查询 服务器可以返回答案或推荐下一个查询的服务器

解析流程如下:

  1. 客户端向本地 DNS 缓存服务器发起递归查询
  2. 缓存服务器向根服务器发起非递归查询
  3. 根服务器返回 TLD 服务器地址
  4. 缓存服务器继续向 TLD 服务器查询
  5. TLD 返回权威服务器地址
  6. 缓存服务器最终向权威服务器获取 IP 地址
  7. 结果返回客户端

dns query v1

6.2. 转发器与递归器

DNS 服务器类型:

  • Forwarder(转发器):将查询请求转发给其他 DNS 服务器
  • Recursor(递归器):自己完成整个解析过程

大多数公共 DNS 服务(如 Google Public DNS 或 Cloudflare 1.1.1.1)都是递归服务器。

7. DNS 资源记录(Resource Records)

DNS 不仅能解析域名到 IP,还支持多种资源记录类型,用于不同用途:

类型 用途
A IPv4 地址
AAAA IPv6 地址
CNAME 别名记录,指向另一个域名
MX 邮件服务器地址
NS 指定该域名的权威 DNS 服务器
SRV 服务发现记录,包含主机名和端口,常用于微服务架构

例如,SRV 记录可用于服务发现:

_service._proto.name. TTL class SRV priority weight port target

8. 总结

通过本文,我们了解了 DNS 的核心概念与工作原理:

  • DNS 是一个分布式数据库系统
  • 域名空间采用树状结构组织
  • 域名解析依赖递归与非递归查询机制
  • 权威服务器与缓存服务器协同工作
  • DNS 支持多种资源记录类型,适应不同场景

理解 DNS 的工作机制,有助于我们更好地进行网络故障排查、性能优化和系统设计。


原始标题:Introduction to the Domain Name System (DNS)