你有没有想过,当你在浏览器里敲下 www.baidu.com 时,电脑是怎么找到对应的网站的?
这背后,离不开一个庞大而精巧的系统------DNS(域名系统)。
今天这篇博客,就结合教材内容,带你轻松了解 DNS 是什么、怎么工作,以及那个经常被误解的"域名空间"。
一、为什么需要 DNS?
在 TCP/IP 网络中,每台设备都有一个唯一的数字地址,比如 202.97.135.160。
计算机只认得这些数字,但我们人类显然更喜欢有意义的名称,比如 www.ryjiaoyu.com。
DNS 服务器扮演的就是"翻译官"的角色:
它把人类容易记的域名,翻译成计算机能懂的 IP 地址。
你在浏览器输入域名后,背后就有一台 DNS 服务器在自动完成这个翻译工作。
DNS 系统由 DNS 服务器 和 DNS 客户端 两部分组成,采用 C/S(客户端/服务器)模式。
服务器通常用 UDP 的 53 端口 与客户端通信,接收并处理域名解析请求。
二、DNS 的设计哲学
DNS 是一个分级的、基于域的命名机制,它的核心是一个分布式、层次化的命名数据库系统。
为什么要这样设计?
-
分布式:避免单一主机负载过重。
-
层次化:解决线性平面结构查找速度慢的问题。
整个 DNS 服务器系统由三个部分构成:域名空间、域名服务器和解析器。
三、域名空间:名称的"家谱"
"域名空间"到底指什么?
这里有个很大的误解需要澄清。
平时我们听到"买个域名空间",其实是 "域名 + 网站空间(虚拟主机)" 的俗称,并不是指"域名的空间"这个字面意思。
一台服务器被划分成多个"虚拟主机",每个虚拟主机都有独立的域名和完整的 Internet 服务器功能(支持 WWW、FTP、电子邮件等),并且由用户自行管理。
真正的"域名空间"
回到技术本身,"域名空间"是指整个 DNS 的命名结构,它呈现为一棵层次式树状结构(如教材图 10-2 所示)。

根域
树的最顶端是根域 ,用 . 表示,通常省略不写。
全世界有 13 台根服务器分布各地,由 InterNIC 管理。根服务器不保存具体网址,只持有指向第一层域(顶级域)的初始指针。
顶级域
顶级域位于根域之下,数目有限且不能轻易变动,由 InterNIC 统一管理。
它分为两类:
-
机构域 :如
.com(商业机构)、.net(网络服务商)、.org(组织)、.edu(教育)、.gov(政府)、.mil(军事)、.int(国际组织)。 -
地理域 :如
.us(美国)、.uk(英国)、.ca(加拿大)、.au(澳大利亚)、.jp(日本)等。
注意:
域名和主机名只能由 字母 a~z、数字 0~9 和连字符
-组成(Windows 下大小写等效,UNIX 则不同),斜杠/、句点.、下划线_等特殊字符不能用于表示域名和主机名。
子域
就是顶级域下面的进一步划分 。以 com 域为例,为了区分不同组织或用途,可以在 com 之下创建 xyz.com、abc.com 等二级域(子域)。子域之下还可以继续划分子域,比如 mail.xyz.com 就是 xyz.com 的一个子域,而 xyz.com 又是 com 的一个子域。这种层级嵌套的结构,使得域名空间可以无限延伸,灵活地容纳互联网上浩如烟海的主机。
主机
则是这棵树的叶子节点 ,是域名空间中最末端的实体 。主机名通常用来标识某台具体的服务器或网络设备,比如图 10-2 中的 www、cctv、mail、news 等等------它们就是挂在 com 域下的主机或服务名称。当你在浏览器中输入 www.cctv.com 时,www 就是 cctv.com 域中的一台主机,整个域名路径清晰地描述了这台主机在域名空间中的位置:根域 → 顶级域 com → 二级域 cctv → 主机 www。
四、域名服务器:按层级分工
域名服务器的组织也采用层次化结构:
-
根服务器管理到各个顶级域名服务器的连接。
-
每台域名服务器只负责管理域名空间中的一部分信息。
比如,根服务器管理顶级域,但它不直接管三级域名,不过它一定能找到所有二级域名服务器。
一个典型的解析过程是:
-
用户使用域名访问某台主机。
-
先由本地域名服务器尝试解析,如果找到匹配 IP 就直接返回。
-
如果没找到,本地服务器就作为"客户端",向上一级域名服务器发出请求。
-
上一级服务器在自己的管理范围内查询,找到就返回,找不到就继续向上请求。
-
层层递归/迭代,直到找到目标 IP 地址为止。
五、解析器:两种查询模式
解析器是 DNS 中的关键角色,它完成"域名翻译成 IP"的具体工作。
这个过程称为域名解析,分为:
-
正向解析:域名 → IP 地址。
-
反向解析:IP 地址 → 域名。
DNS 的查询模式主要有两种:
(1)递归查询
DNS 服务器收到客户端请求后,如果在自己的缓存或区域数据库里找不到结果,就自己替客户端去问其他服务器 ,最后把查到的结果一次性返回给客户端。
客户端省心,服务器累一点。
(2)转寄查询(迭代查询)
服务器在本地查不到时,不替客户端去问,而是告诉客户端"你去问另一台服务器" ,并给出那台服务器的 IP 地址。
客户端自己接着去下一台问,直到查到结果或者所有服务器都返回失败。
"转寄"的意思就是:我这里没有,你去别的地方找吧。
通常,DNS 服务器之间的查询多属于转寄查询。
六、一些重要的 DNS 记录类型
教材中还提到了几种常见的 DNS 记录:
-
A 记录:主机名到 IP 地址的映射(名称 → 地址)。
-
CNAME 记录:主机的别名。
-
NS 记录:域名的权威域名服务器。
-
MX 记录:域的邮件交换器主机。
-
PTR 记录:IP 地址到主机名的映射(地址 → 名称,用于反向解析)。