1687 字
8 分钟
一文看懂DNS:域名解析的全过程与工作原理
什么是 DNS?
DNS(Domain Name System,域名系统)是互联网的核心基础服务之一,可以将其理解为一本全球通用的“电话簿”。它的主要功能是将人类易于记忆的域名(例如 www.aliyun.com)翻译成机器用于通信的 IP 地址(例如 106.11.226.155)。当然也有反向解析的功能,也就是:将 IP 地址翻译成域名。不过通常用在邮件等方面,我们日常建站来说用不到。
总之这样,我们就无需记忆枯燥的数字串了,可以用类似 baidu.com、mi.com、qq.com 等直观的域名来访问互联网服务。
域的层级划分
域名的结构并非扁平,而是呈树状的层级划分。从上至下主要分为:根域、顶级域、二级域 和 子域。
Loading Mermaid...
根域
- DNS 树的最顶端,是所有域名的最终归属。
- 虽然我们在浏览器输入网址时通常会省略这个点,但完整的格式其实是
www.example.com. - 例如,完整的域名
www.aliyun.com.末尾的.即代表根域。
顶级域
- 直接位于根域之下,分为两类:
- 通用顶级域 (gTLD):如
.com、.org、.net、.io等。 - 国家及地区顶级域 (ccTLD):如
.cn(中国)、.uk(英国)、.jp(日本)等。
- 通用顶级域 (gTLD):如
- 在
aliyun.com中,.com就是其顶级域。
二级域
- 注册在顶级域之下的名称,就是你能实际买到的域名。
- 你可能还会见过
com.cn这样后缀的域名。实际上你可以理解为cn管理机构自己注册了com.cn然后把com.cn的三级子域开放出来给大家注册购买。但在架构上,com就是.cn顶级域下的一个二级域(所以你也不要想着通过注册com.cn来创建新的顶级域了)。
子域
- 你作为一个域名所有者,可以为自己的域名创建子域。
- 例如,
www.aliyun.com中的www,以及我的blog.tianhw.top中的blog都是子域。 - 理论上你可以创建无限个二级域名,如
1.2.3.4.example.com。同理一个二级域名可以解析无限个三级域名,无限套娃。然而在实际操作中,用户解析域名过多会严重影响DNS服务器的性能。所以你能实际添加的子域名数量是受到云服务商限制的 - 子域可以拥有独立的 NS(域名服务器)记录,从而实现分离管理。当递归解析器在查询中发现子域存在专属的 NS 服务器时,会将查询转向该服务器继续递归。
DNS 服务器
在 DNS 解析网络中,根据所处位置和功能,服务器主要分为以下五种角色。日常配置中最常接触的是前两种。
| 角色 | 主要功能 | 典型例子/位置 |
|---|---|---|
| DNS 转发器 | 接收客户端请求,简单转发给上游递归服务器,自身不具备递归解析能力。通常用于局域网内分发 DNS 配置。 | 家用路由器(如 192.168.1.1) |
| 递归 DNS 服务器 | DNS 系统的核心引擎。接收用户请求后,负责完成从根到权威的完整查询流程(“跑腿”),并将最终结果返回给用户。同时会缓存结果以提升效率。 | 公共DNS服务,如阿里云DNS(223.5.5.5)、腾讯云DNS(119.29.29.29)、114DNS(114.114.114.114) |
| 根 DNS 服务器 | 整个DNS查询的起点,负责告知递归服务器去哪里寻找顶级域(TLD)服务器的信息。全球共13个逻辑标识。 | a.root-servers.net 至 m.root-servers.net |
| TLD 权威服务器 | 管理特定顶级域(如 .com, .cn)下所有二级域的权威服务器地址。相当于“片区派出所”,知道该找哪位“户籍警”。 | 管理 .com 的服务器知道 aliyun.com 该找谁查询 |
| 权威 DNS 服务器 | 持有特定域名(如 aliyun.com)最终、最准确的解析记录(如A, AAAA记录)。是解析流程的“终审法官”。 | 由域名所有者自行配置或托管于云服务商(如阿里云、腾讯云、AWS) |
DNS 查询流程
假设你的电脑连接家用路由器,路由器上游 DNS 为 223.5.5.5。当你在浏览器输入 www.aliyun.com 时,一次完整的 DNS 解析过程如下:
- 发起查询:你的设备(假设没有本地缓存)向家里的路由器发送请求解析
www.aliyun.com。 - 请求转发:路由器直接将请求打包转发给上游的递归 DNS(如阿里云DNS(
223.5.5.5)、腾讯云DNS(119.29.29.29)、114DNS(114.114.114.114)。 - 查询根域(缓存未命中时):如果递归 DNS 自己没有这条记录的缓存,它就会先去找根 DNS 服务器,询问:“管理
.com的 TLD 权威服务器在哪里?” - 根域指路:根 DNS 服务器返回
.com的 TLD 服务器列表,同时贴心地附加上这些服务器的 IP 地址。 - 查询 TLD:递归 DNS 拿到地址后,向
.com的 TLD 权威服务器发起查询:“管理aliyun.com的权威服务器在哪里?” - TLD 指路:TLD 权威服务器返回
aliyun.com的 NS 服务器及其对应 IP。 - 查询权威服务器:递归 DNS 终于找到了正主,向
aliyun.com的权威服务器发问:“www.aliyun.com的 A 记录是多少?” - 权威答复:权威服务器给出最终答案,返回相应的 A 记录(如
106.11.226.155),并带有一个用于缓存的 TTL。 - 返回与缓存:递归 DNS 收到结果后自己缓存一份,然后将这个 IP 地址返回给路由器,最终交回给你的设备。下次访问时,递归 DNS 就会直接从缓存中获取结果,省去一次完整的查询过程。
- 建立连接:你的设备使用这个获取到的 IP 地址,成功与阿里云服务器建立了连接。
常见解析记录类型
DNS 不仅解析IP地址,还承载多种网络服务配置信息。以下是常用的记录类型:
| 记录类型 | 全称 | 用途说明 |
|---|---|---|
| A | Address | 将域名指向一个 IPv4 地址。 |
| AAAA | IPv6 Address | 将域名指向一个 IPv6 地址。 |
| CNAME | Canonical Name | 将一个域名指向另一个域名(别名)。注意:CNAME记录不能与其他记录(如MX, TXT)共存于同一主机名下。 |
| NS | Name Server | 指定该域名由哪些权威服务器进行解析。 |
| MX | Mail Exchange | 指定处理该域名电子邮件的服务器。搭建企业邮箱必备。 |
| TXT | Text | 存储任意文本信息。广泛用于域名所有权验证、SPF(发件人策略框架)、DMARC(域名消息认证)等邮件安全协议。 |
结尾
希望能够对DNS有所理解。