DNS 域名解析机制

人脑记 www.bilibili.com 很容易,但路由器和交换机只认 IP 地址。DNS(Domain Name System,域名系统)就是互联网的电话簿,负责把域名翻译成 IP 地址。

看一眼完整的 URL:

https://www.example.com/books/intro
        └─ 域名 ──────┘└─ 路径 ──┘

DNS 解析时只拿中间的域名 www.example.com 去查 IP,前面的 https:// 协议头和后面的 /books/intro 路径都不归 DNS 管,它们要等连上 Web 服务器之后才用得上。

递归查询与迭代查询

当浏览器访问 www.example.com 且本地没有缓存时,DNS 查询会按层级一步步往下找:

  1. 问递归解析器:电脑向自己配好的 DNS 服务器(比如公共 DNS 223.5.5.5 或运营商 DNS)发请求:“帮我查 www.example.com 的 IP。”这台替客户端跑腿查到底的服务器叫递归解析器(Recursive Resolver)。
  2. 问根域名服务器(Root DNS):递归解析器先问根服务器。根服务器不存具体网站的 IP,只告诉它去哪找管 .com 的顶级域名服务器。
  3. 问顶级域名服务器(TLD DNS):递归解析器接着问 .com 服务器,拿到负责管理 example.com 的权威 DNS 服务器地址(比如 elliott.ns.cloudflare.com)。
  4. 问权威域名服务器(Authoritative DNS):递归解析器最后问 example.com 的权威服务器,拿到最终答案:www.example.com 的 IPv4 地址是 104.20.23.154。
  5. 返回结果并缓存:递归解析器把 IP 返回给电脑,并按记录的 TTL(生存时间)把结果缓存起来。在 TTL 过期前,后续相同的查询直接从缓存返回。

递归解析器依次询问根、顶级域和权威服务器,再把地址返回电脑

常见 DNS 记录与 nslookup

DNS 里存的条目叫资源记录(Resource Record),最常见的有:

  • A 记录:域名指向 IPv4 地址。
  • AAAA 记录:域名指向 IPv6 地址。
  • CNAME 记录:别名记录,把一个域名指向另一个域名(比如把 www 指向 CDN 加速域名)。
  • MX 记录:指定接收该域名邮件的邮件服务器。
  • NS 记录:指定该域名由哪台权威 DNS 服务器管理。
  • TXT 记录:存任意文本,常用于验证域名所有权或配置邮件防伪(SPF/DKIM/DMARC)。

在终端里可以用 nslookup 查域名的解析结果:

crow@laptop:~$ nslookup www.bilibili.com

输出里的 Server / Address 是回答本次查询的本地递归 DNS 服务器;Non-authoritative answer(非权威应答)说明结果是从递归解析器的缓存里拿的,不是刚从权威服务器现场问来的;下面的 Name / Aliases / Addresses 则是查出来的别名和最终 IP。

nslookup 查询域名,区分回答服务器与域名结果

解析成功以后

练习

DNS 查询已经返回了地址,但浏览器访问该网站超时。以下哪项判断成立?

A. DNS 成功就表示网页内容已经传到浏览器。 B. 根域名服务器应该直接重新发送网页。 C. DNS 解析和访问网站是两个步骤,超时还需要检查连接和服务。 D. 有域名就不再需要 IP 路由。

提交选项字母。

提交答案

题解 Hint