
上一篇文章中,我们提到IP地址是网络中的地址。那为什么我们访问网站可以以Google.com直接访问谷歌,而不是查找谷歌的IP进行访问呢?
这背后就有 DNS 的作用。
DNS 的全称是 Domain Name System(域名系统)。如果用一句最简单的话来解释:
DNS 就是负责帮你“查网站地址”的系统。
我们平时访问网站时记住的是域名,例如:
google.com
但计算机在网络中寻找服务器时,更依赖 IP 地址,例如:
142.250.xxx.xxx
DNS 做的事情,就是在域名和 IP 地址之间建立联系。
你可以把它想象成手机里的通讯录:
- 你记住的是「张三」;
- 手机里保存的是张三的电话号码;
- 你点击张三的名字,手机就知道应该拨哪个号码。
在互联网中也是一样:
- 域名:方便人记忆的名字;
- IP 地址:计算机用来寻找服务器的地址;
- DNS:负责根据域名找到对应的 IP 地址。
为什么不能直接用 IP 地址?
既然计算机最终还是需要 IP 地址,那为什么网站不直接让我们输入 IP 呢?
当然可以。
例如,你可以直接通过一个网站的 IP 地址访问它。但问题是,IP 地址通常是一串不太容易记住的数字,而且网站背后的服务器也可能发生变化。
相比之下:
google.com
显然比:
142.250.xxx.xxx
更容易记。
而且一个网站可能使用多个服务器,甚至会根据用户所在的位置,让用户连接到不同的服务器。
所以,对于人来说,记住一个简单的域名要方便得多。
DNS 就像一个中间人:
你告诉它网站叫什么,它帮你找到网站在哪里。
打开一个网站时,DNS 做了什么?
我们来看一个非常简单的例子。
假设你想打开:
example.com
你在浏览器地址栏输入网址,然后按下回车。
这时候,浏览器首先需要知道:
example.com对应哪个 IP 地址?
于是,设备会向 DNS 服务器发起查询。
DNS 服务器找到对应的 IP 后,把结果告诉设备。
接下来,浏览器就可以根据这个 IP 地址去连接网站服务器,并把网页内容加载回来。
整个过程可以简单理解为:
输入域名 → DNS 查找 IP → 找到服务器 → 加载网页
这个过程通常非常快,所以我们平时几乎感觉不到 DNS 的存在。
DNS 服务器是什么?
那么问题来了:
DNS 到底在哪里?
实际上,DNS 并不是一台服务器,而是一整套由很多 DNS 服务器组成的系统。
我们平时使用电脑、手机连接网络时,通常会自动获得一个可以使用的 DNS 服务器。
当你访问网站时,设备就会把类似:
「
example.com的 IP 地址是什么?」
这样的请求发送给 DNS 服务器。
DNS 服务器找到答案后,再把 IP 地址返回给你的设备。
你可以把 DNS 服务器理解成一个网络地址查询员。
你不用知道它是怎么工作的,只需要告诉它:
「我要找
example.com。」
它负责帮你查到对应的地址。
DNS 是怎么找到网站地址的?
如果 DNS 服务器自己已经知道答案,事情就很简单。
例如,它之前已经查询过:
example.com → 123.123.123.123
那么这次再有人询问,它就可以直接把这个 IP 返回。
这就是 DNS 缓存。
如果它自己不知道,就需要继续向其他 DNS 服务器询问。
DNS 的整个系统采用了类似「一层一层查找」的方式。
你可以把它想象成寄快递。
你只知道:
我要把东西寄给「某某小区的张三」。
快递系统会根据地址逐步找到:
国家 → 城市 → 区域 → 小区 → 具体住址
DNS 的工作方式也有些类似。
它会根据域名的不同部分,逐级找到负责这个域名的服务器,最后找到具体的 IP 地址。
对于普通用户来说,不需要记住这些服务器的具体名称,只需要理解:
DNS 是一个分层工作的地址查询系统。
什么是 DNS 缓存?
DNS 缓存其实非常容易理解。
比如你刚刚问朋友:
「附近那家咖啡店在哪里?」
朋友告诉你地址。
过了一会儿,另一个朋友又问同样的问题,你不需要重新去问咖啡店老板,直接把刚才得到的地址告诉他就可以了。
DNS 也是这样。
设备和 DNS 服务器都会暂时保存一些查询结果。
如果你刚刚访问过某个网站,再次访问时可能不需要重新查询,直接使用之前得到的结果即可。
这样做可以:
- 减少重复查询;
- 减少等待时间;
- 降低 DNS 服务器的压力。
所以,DNS 缓存也是我们平时访问网站能够快速完成的一部分原因。
DNS 只有一种记录吗?
不是。
DNS 不只是保存「域名对应哪个 IP」这么简单。
不同类型的 DNS 记录,可以保存不同的信息。
普通用户最常听到的主要有以下几种。
A 记录
A 记录可以理解成最常见的「地址记录」。
它负责告诉 DNS:
这个域名对应哪个 IPv4 地址。
例如:
example.com → 192.0.2.1
AAAA 记录
AAAA 记录和 A 记录作用类似,只不过它对应的是 IPv6 地址。
如果你暂时不了解 IPv6,也不用担心。
简单理解就是:
A 记录主要对应 IPv4,AAAA 记录主要对应 IPv6。
CNAME 记录
CNAME 可以理解成「别名」。
比如:
www.example.com
可能并没有直接对应一个 IP,而是告诉 DNS:
「这个名字实际上就是另一个域名。」
然后再通过另一个域名找到最终的 IP 地址。
这就像通讯录里的「备注名」。
你可以给同一个人保存多个称呼,但最终找到的还是同一个联系人。
NS 记录
NS 记录则可以理解成:
这个域名由谁负责管理?
它告诉 DNS 系统,应该去哪些 DNS 服务器查询这个域名的信息。
对于普通用户来说,知道这些记录的大概作用就足够了。
DNS 查询安全吗?
这里还有一个值得注意的问题。
传统的 DNS 查询通常没有进行加密。
比如,当你的设备询问 DNS 服务器:
「
example.com的 IP 是什么?」
这条查询在传输过程中可能是明文的。
这并不意味着别人一定能够看到你访问网页里的所有内容,但 DNS 查询本身可能暴露你正在查询哪个域名。
举个简单的例子:
你访问一个使用 HTTPS 的网站时,网页里的具体内容可以受到 HTTPS 的保护。
但在传统 DNS 查询中,最开始的「我想找这个网站」这件事,并不一定是加密的。
于是,人们又发展出了加密 DNS。
什么是加密 DNS?
如果把普通 DNS 查询想象成:
你把一张写着「我要找谁」的纸条交给快递员。
那么加密 DNS 就像是:
你把纸条放进一个上锁的箱子里,再交给快递员。
快递员可以帮你把箱子送到目的地,但路上的其他人无法直接看到里面写了什么。
常见的加密 DNS 方式包括:
DNS over TLS(DoT)
DoT 会利用 TLS 对 DNS 查询进行加密。
TLS 可以理解成一种加密通信方式。
它的作用之一,就是让通信双方能够在不让旁人看到内容的情况下进行交流。
DNS over HTTPS(DoH)
DoH 则是把 DNS 查询放进 HTTPS 的通信中。
你可以简单理解为:
给 DNS 查询套上一层 HTTPS 的加密保护。
DNS over QUIC(DoQ)
DoQ 则是利用 QUIC 来传输 DNS 查询,也是现代 DNS 加密方案之一。
这些名称看起来比较复杂,但普通用户只需要记住一点:
传统 DNS 主要负责“查地址”,加密 DNS 则是在“查地址”的同时,让查询过程更加私密。
DNS 会影响网速吗?
会,但 DNS 和我们通常说的「网速」不是一回事。
打开网站时,设备需要先通过 DNS 找到网站的 IP 地址。
如果 DNS 响应比较慢,你可能会感觉:
输入网址后,网页过了一会儿才开始加载。
但 DNS 找到 IP 之后,后面的数据传输还要经过很多环节。
例如:
- 你的网络连接;
- 服务器距离;
- 网络线路;
- 服务器性能;
- 当前网络拥堵情况。
所以:
DNS 响应快,不代表整个网络速度一定快。
DNS 更像是「找路」的第一步。
如果找路花了很长时间,确实会影响打开网站时的第一感觉;但真正下载网页、视频和文件的速度,还取决于后面的网络连接。
DNS 出问题会怎么样?
DNS 虽然平时不太起眼,但一旦出现问题,我们很容易发现。
比如:
网络明明连接正常,却打不开网站。
这时候可能不是你的网络完全断了,而是 DNS 没有正常工作。
例如:
- 输入网址后一直加载;
- 浏览器提示找不到服务器;
- 某些网站打不开,但其他网站正常;
- 修改 DNS 后,网站又可以访问。
原因很简单:
浏览器知道你想访问哪个网站,但不知道这个网站的 IP 地址。
就像你知道朋友叫「张三」,但通讯录突然坏了,找不到他的电话号码。
人还在,电话也正常,但你就是不知道应该拨哪个号码。
DNS 和 VPN 有什么关系?
DNS 和 VPN 经常一起出现,但它们负责的事情并不一样。
DNS:
帮你找到网站的 IP 地址。
VPN:
建立一条经过 VPN 服务器的网络连接,让网络流量通过这条连接传输。
VPN 开启后,DNS 查询通常也会受到 VPN 设置的影响。
因此,当 VPN 出现连接问题时,DNS 也可能成为其中一个需要排查的环节。
不过,两者不能简单理解成同一种东西:
DNS 负责“找地址”,VPN 负责“怎么连接”。
总结
DNS 其实没有想象中复杂。
每次你输入一个网址时,浏览器首先需要知道:
这个网站在哪里?
DNS 就负责回答这个问题。
如果把整个过程想象成去朋友家:
域名是朋友的名字,
IP 地址是朋友家的地址,
DNS是帮你查地址的人。
你告诉它:
「我要找 Google。」
它帮你找到:
「Google 的服务器地址是这个。」
然后浏览器才能继续连接服务器,把网页内容带回来。
所以,虽然我们平时几乎感觉不到 DNS 的存在,但从输入网址到网页真正打开,中间的第一步往往就是:
先通过 DNS 找到网站的地址。
简单来说,DNS 就是互联网里的“查号台”。