域名系统(DNS)
DNS 基础与工作方式
前面我们学了 IP address,它让每台机器都能互联。但对人来说,名字比数字好记,google.com 远比 122.250.192.232 更容易记住。
这就引出了 Domain Name System (DNS):一个层级化、去中心化的命名系统,用来把人类可读的 domain name 转换成 IP address。
DNS 是怎么工作的

一次 DNS lookup 通常包含下面 8 个步骤:
- Client 在 browser 输入 example.com,查询进入 internet 并被 DNS resolver 接收。
- Resolver 递归查询 DNS root nameserver。
- Root server 返回 Top-Level Domain (TLD) 的地址。
- Resolver 向
.comTLD 发起请求。 - TLD server 返回该 domain 的 nameserver 的 IP(例如 example.com)。
- Resolver 再向该 domain 的 nameserver 查询。
- nameserver 返回 example.com 的 IP address。
- DNS resolver 把这个 IP 返回给 browser。
当 IP address 被解析出来后,client 就能对该 IP 发请求,例如返回一个网页让 browser 渲染。
Server types
DNS 基础设施里有四类核心 servers:
DNS Resolver
DNS resolver(也叫 DNS recursive resolver)是 DNS query 的第一站。它作为 client 和 DNS nameserver 的中间人。如果 resolver 有 cache,就直接返回;否则就按顺序请求 root nameserver、TLD nameserver,最后请求 authoritative nameserver。拿到 IP 后再回给 client。
DNS root server
Root server 接收 resolver 的查询(含 domain name),然后根据 domain 后缀(.com、.net、.org 等)把 resolver 指向对应的 TLD nameserver。Root nameservers 由 Internet Corporation for Assigned Names and Numbers (ICANN) 管理。
全球有 13 组 root nameservers。注意这里的 13 指的是 13 种“类型”,每种在全球都有多个实例,通过 Anycast routing 提供更快响应。
TLD nameserver
TLD nameserver 维护共享同一后缀的所有 domains 信息,比如 .com、.net。TLD 管理由 Internet Assigned Numbers Authority (IANA) 负责,它隶属 ICANN。IANA 把 TLD 分为两类:
- Generic TLD:
.com、.org、.net、.edu、.gov等。 - Country code TLD:国家/地区相关,如
.uk、.us、.ru、.jp。
Authoritative DNS server
Authoritative nameserver 通常是解析流程的最后一站。它保存特定 domain 的权威信息(例如 google.com)。它会返回该 domain 的 A record(IP address),或者返回 CNAME record(alias),此时 resolver 需要再做一次解析。若找不到 domain,返回 NXDOMAIN。
Query Types
DNS 里常见的 query types 有三种:
Recursive
Recursive query 中,client 要求 DNS server(通常是 recursive resolver)必须返回最终记录,或者在找不到时返回 error。
Iterative
Iterative query 中,DNS client 提供 hostname,resolver 返回它能提供的最佳答案。如果 resolver 有 cache 就直接返回;否则指向更上游的 Root 或 Authoritative nameserver,client 需要自己继续追问。
Non-recursive
Non-recursive query 指 resolver 已知答案:要么 cache 里有,要么它本身就是 authoritative nameserver。此时无需递归或迭代,直接返回。
Record Types
DNS records(也叫 zone files)是 authoritative DNS server 上的配置,告诉系统某个 domain 对应什么 IP,以及如何处理请求。这些记录是以 DNS syntax 写成的文本。每条记录还有 TTL(time-to-live),决定 cache 多久。
常用 record types:
- A (Address record):domain 对应的 IPv4。
- AAAA (IP Version 6 Address record):domain 对应的 IPv6。
- CNAME (Canonical Name record):将一个 domain 或 subdomain 指向另一个 domain(不直接提供 IP)。
- MX (Mail exchanger record):邮件服务器的路由。
- TXT (Text Record):文本说明,常用于 email security。
- NS (Name Server records):DNS entry 的 nameserver。
- SOA (Start of Authority):domain 的 admin 信息。
- SRV (Service Location record):特定服务的端口信息。
- PTR (Reverse-lookup Pointer record):反向解析用的记录。
- CERT (Certificate record):存储 public key certificates。
Subdomains
Subdomain 是主 domain 的延伸部分,用于把网站逻辑拆分。例如 blog.example.com 中 blog 是 subdomain,example 是主 domain,.com 是 TLD。类似还有 support.example.com、careers.example.com。
DNS Zones
DNS zone 是 domain namespace 的一个独立区域,委派给某个实体(个人/组织/公司)维护。它也是一种 administrative 单元,用于精细化管理 DNS 组件,比如 authoritative nameservers。
DNS Caching
DNS cache(也叫 resolver cache)是 OS 维护的临时数据库,存储最近的 DNS lookup 结果,用来加速加载网站。
DNS 的每条记录都有 TTL,表示这条记录在 cache 中能保留多久。记录进入 cache 时,TTL 会开始倒计时,归零后记录被删除。此时再查询就必须重新解析。
Reverse DNS
Reverse DNS lookup 是用 IP address 反查 domain name。它通过 PTR records 实现。如果 server 没有 PTR record,就无法反向解析。
Reverse lookup 常用于 email servers:它们会验证发件 server 是否可信,若没有 reverse lookup 或看起来不可信,很多邮件会被拒收。
注意:Reverse DNS 不是互联网正常功能的硬性要求,所以并非所有服务都支持。
Examples
常见的 managed DNS 服务: