在浏览器中输入 2743.com,按下回车,网页就出现在屏幕上。
这个动作看起来很简单,但你的电脑怎么知道网站在哪里?它又该连接哪个网络地址?
这就需要 DNS。
DNS 的全称是 Domain Name System,中文叫“域名系统”。它帮助设备查找域名对应的地址,是访问网站、收发邮件和使用许多互联网服务的重要基础。
本文将从一次网页访问出发,解释 DNS 的工作原理,并提供五个可以亲自操作的演示。
一、从打开一个网站开始
打开浏览器,在地址栏输入:
你输入的是一个容易记住的名称,而不是服务器的数字地址。
在连接网站之前,浏览器需要获得这个主机名对应的地址。它可能使用已经缓存的信息,也可能通过 DNS 查询获取答案。
得到地址后,浏览器还需要连接服务器、建立 HTTPS 加密连接,并请求网页内容。
因此,打开网页涉及多个环节。DNS 负责提供连接所需的信息,不负责把网页内容传送给你。
演示一: 在浏览器中输入网站地址,观察页面是否能够打开。这个动作展示了 DNS 支持的日常访问过程,但浏览器地址栏不会直接显示后台查询步骤。
二、什么是 DNS?
DNS 是一个分布式命名系统。对于网页访问,它的一项主要任务是查找主机名对应的 IP 地址。
人更容易记住 2743.com 这样的名称,网络连接则使用 IP 地址定位目的地。
可以把 DNS 理解为一个通讯录:通过名称,查找连接所需的地址信息。
不过,这本“通讯录”没有集中存放在某一台电脑上。不同组织管理不同部分,DNS 解析器负责帮助用户寻找答案。
域名和网址有什么区别?
看下面这个示例:
它包含三个不同部分:
- https:说明使用的连接方式。
- example.com:主机名。
- /about:网站中的资源路径。
DNS 查询的是主机名,不会根据文章标题或页面路径寻找服务器。
三、怎样查看域名对应的 IP 地址?
在 Windows 中打开 PowerShell,输入:
|
1 |
<span>nslookup -type=A 2743.com</span> |
这条命令查询域名的 A 记录。
A 记录包含 IPv4 地址,也就是常见的四组数字、中间用点分隔的地址格式。
接着查询 IPv6 地址记录:
|
1 |
<span>nslookup -type=AAAA 2743.com</span> |
AAAA 记录包含 IPv6 地址,使用十六进制字符,并通过冒号分隔。
一个域名可以有 A 记录、AAAA 记录,或者同时拥有两者。没有查到 AAAA 记录,并不意味着网站发生了故障。
演示二: 先展示浏览器中的域名,再切换到 PowerShell,查看该域名的地址记录。
查询结果应该怎么看?
输出顶部的 Server 和 Address,表示本次查询联系的 DNS 服务器,不一定是网站服务器。
下方的答案区域才包含所查询域名的结果。
你可能看到 Non-authoritative answer,意思是“非权威应答”。
它表示回答查询的服务器不是该域名的权威信息来源,并不自动意味着答案错误。解析器可以返回此前取得并缓存的信息。
同一个域名可能对应多个地址,不同域名也可能共享一个地址。实际结果还可能随时间、位置和服务配置变化。
可以直接输入 IP 地址访问网站吗?
有时可以,但不能可靠地代替域名访问。
一台服务器可能同时承载多个网站,需要根据主机名选择正确的网站。HTTPS 证书检查通常也依赖主机名。
因此,测试正常的网站访问时,应该使用域名。
四、DNS 是怎样找到答案的?
DNS 查询通常从缓存开始。
浏览器或操作系统可能已经保存了可用结果。缓存是一种临时存储,可以减少重复查询。
如果本地没有可用答案,请求会交给 递归解析器。
递归解析器可能由互联网服务提供商、企业或公共 DNS 服务运营。有些浏览器也可以使用单独配置的解析器。
解析器先检查自己的缓存。如果仍然需要寻找信息,一个简化的 .com 域名查询会经历以下过程。
第一步:询问根名称服务器
根名称服务器通常不会直接返回网站的最终地址。
它会提供转介信息,告诉解析器应该向哪些负责 .com 的名称服务器继续询问。
第二步:询问顶级域名称服务器
顶级域名是域名末尾的部分,例如 .com、.org、.net。
在这个例子中,.com 名称服务器会提供指向目标域名权威名称服务器的转介信息。
第三步:询问权威名称服务器
权威名称服务器发布其负责的 DNS 区域中的记录。
根据查询内容和实际配置,它可以返回地址记录、别名或其他相应结果。
递归解析器取得答案后,把结果返回给你的设备。浏览器便可以使用地址尝试连接。
可以用下面的流程理解各个角色:
设备 → 递归解析器 → 根名称服务器 → 顶级域名称服务器 → 权威名称服务器
实际查询不一定每次都经过所有步骤。缓存可以让解析器跳过部分过程,别名或额外委派则可能增加查询次数。
查看域名的名称服务器
在 PowerShell 中输入:
|
1 |
<span>nslookup -type=NS 2743.com</span> |
NS 是 Name Server 的缩写,意思是“名称服务器”。
演示三: 查看查询返回的 NS 记录,并配合上面的流程理解名称服务器的作用。
这条命令展示的是 NS 记录,不是对整个 DNS 查询过程的逐步追踪。
五、为什么 DNS 要使用缓存?
如果每次访问网站都从头查找相同信息,就会增加网络流量和等待时间。
缓存允许 DNS 答案在一定时间内重复使用。
DNS 记录包含一个叫 TTL 的值,全称是 Time to Live。它表示记录可以被缓存多长时间,通常以秒为单位。
在 PowerShell 中输入:
|
1 |
<span>Resolve-DnsName -Name 2743.com -Type A -DnsOnly</span> |
输出中可能显示以下信息:
| 字段 | 含义 |
|---|---|
| Name | 查询的名称 |
| Type | 记录类型 |
| TTL | 缓存有效时间 |
| IPAddress | IP 地址 |
演示四: 查看 TTL,等待几秒,再运行同一条命令。
显示的 TTL 可能是缓存答案的剩余有效时间。它可能减少,也可能因为刷新或不同响应而变化,不一定等于域名所有者最初设置的数值。
为什么修改 DNS 后,有人看到新结果,有人仍看到旧结果?
修改记录后,部分解析器可能还保存着旧答案。
因此,不同访客可能暂时获得不同结果。
人们常把这种等待称为“DNS 传播”。其中相当一部分时间,是在等待已有缓存到期。
清除电脑上的 DNS 缓存,只会影响这台电脑,不会清除其他解析器保存的信息。
六、DNS 不只是查询网站地址
DNS 支持多种记录,它们承担不同任务。
| 记录类型 | 常见用途 |
|---|---|
| A | 将名称关联到 IPv4 地址 |
| AAAA | 将名称关联到 IPv6 地址 |
| CNAME | 将一个名称设置为另一个名称的别名 |
| MX | 指定域名的邮件接收服务器 |
| TXT | 保存用于验证及其他用途的文本 |
| NS | 标识名称服务器 |
网站可以正常打开,但邮件仍可能因为邮件相关记录错误而无法接收。
迁移网站主机时,也不应该因此随意修改所有 DNS 记录。网站访问和邮件服务可能使用不同的服务商。
DNS 安全和 HTTPS 有什么关系?
它们保护的是不同环节。
DNSSEC 使用数字签名,让支持验证的解析器检查已签名 DNS 数据的真实性。它不会加密网页连接,也不能保证网站内容安全。
DNS over HTTPS 加密设备与所选解析器之间的 DNS 通信。
网站的 HTTPS 则保护浏览器与网站之间的连接。
因此,DNS 查询成功或者连接受到加密保护,都不代表整个网站一定可信或安全。
七、DNS 查询失败意味着什么?
为了演示失败情况,可以输入:
|
1 |
<span>nslookup -type=A webmind-demo.invalid</span> |
.invalid 是为无效名称保留的域名结尾。用它演示失败,不需要等待真实网站发生故障。
演示五: 展示这次查询结果,再与前面的网站域名查询进行比较。
错误文字可能有所不同,常见情况包括:
- 名称不存在:响应指出所查询的名称不存在。
- 查询超时:没有在规定时间内收到答案。
- 服务器失败:解析器无法完成查询。
查询超时不能直接作为“域名不存在”的证据。
网站打不开,一定是 DNS 的问题吗?
不一定。
如果 DNS 已经返回地址,但网页仍然无法加载,还可能涉及网络连接、服务器状态、HTTPS 配置或网站程序错误。
DNS 返回答案,只说明查询取得了信息,不保证目标服务器能够连接或正常工作。
排查时,可以按三个阶段思考:
- 查找地址是否成功?
- 能否连接目标服务器?
- 服务器能否正常返回网页?
这样比把所有访问故障都归结为 DNS 更容易找到原因。
八、WordPress 网站所有者应该检查什么?
域名注册商、DNS 服务商和网站主机服务商,可能是不同公司。
建议检查以下事项:
- 网站地址记录是否符合主机服务商的要求。
- 迁移网站时,邮件记录是否仍然正确。
- 别名是否指向预期名称。
- 测试修改结果时,是否考虑了旧缓存。
- 修改之前,是否保存了现有记录的副本。
排查一个服务时,避免同时修改无关记录。
对于 WordPress 网站,DNS 帮助访客找到主机地址,WordPress 再负责网站内容和应用功能。
正确的 DNS 配置很重要,同时仍然需要可靠的主机、软件维护、备份和安全防护。
继续探索互联网背后的原理
DNS 把容易记住的名称,与设备连接互联网服务所需的信息联系起来。
递归解析器寻找答案,权威名称服务器发布记录,缓存减少重复工作。
下次遇到网站无法打开,你可以先判断:是地址没找到、服务器连不上,还是网页没有正常返回?
欢迎观看配套的 Webmind 视频,跟随五个演示了解 DNS。如果内容对你有帮助,请点赞并订阅 Webmind。
你希望下一期讲域名、网站主机,还是 HTTPS?欢迎在评论区留言。
感谢阅读和收看 Webmind,我们下期再见!
