人脑记 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 查询会按层级一步步往下找:
- 问递归解析器:电脑向自己配好的 DNS 服务器(比如公共 DNS
223.5.5.5或运营商 DNS)发请求:“帮我查www.example.com的 IP。”这台替客户端跑腿查到底的服务器叫递归解析器(Recursive Resolver)。 - 问根域名服务器(Root DNS):递归解析器先问根服务器。根服务器不存具体网站的 IP,只告诉它去哪找管
.com的顶级域名服务器。 - 问顶级域名服务器(TLD DNS):递归解析器接着问
.com服务器,拿到负责管理example.com的权威 DNS 服务器地址(比如elliott.ns.cloudflare.com)。 - 问权威域名服务器(Authoritative DNS):递归解析器最后问
example.com的权威服务器,拿到最终答案:www.example.com的 IPv4 地址是104.20.23.154。 - 返回结果并缓存:递归解析器把 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。
