IP 地址、域名和 DNS:一个网址是怎么找到服务器的

通俗讲解 IP 地址、域名和 DNS 的关系:输入网址后,电脑如何通过 DNS 查询得到 IP 地址并连接服务器,IPv4 和 IPv6 的区别,以及 DNS 缓存、DNS 污染和加密 DNS 是怎么回事。

作者:最后更新:阅读约 3 分钟

直接答案IP 地址是网络上每台设备的「门牌号」,域名是方便人记忆的名字,DNS 则是把域名翻译成 IP 地址的「电话簿」。你输入网址后,电脑先向 DNS 服务器查询这个域名对应的 IP,拿到 IP 后才能连接网站的服务器。

在浏览器里输入一个网址、按下回车,网页几乎瞬间就打开了。这背后有一个「查号码」的过程,主角就是 IP 地址、域名和 DNS。

IP 地址:网络上的门牌号

互联网上的每台设备都需要一个地址,别人才能把数据发给它,这个地址就是 IP 地址。

  • IPv4:由 4 组 0–255 的数字组成,比如 203.0.113.10,总数大约 43 亿个,早就不够全世界分了。
  • IPv6:长得多,比如 2001:db8::1,数量几乎是无限的。

现在两种地址同时在用。你家的设备通常还有一个内网地址(比如 192.168.1.5),由路由器分配,只在家里有效;对外访问时,路由器会把它换成运营商分配的公网地址。

IP 地址还能大致反映设备所在的国家和地区,这就是为什么有些网站会根据你的 IP 判断你在哪里。

域名:给人记的名字

IP 地址对人来说太难记了,于是有了域名,比如 example.com。域名是分层的,从右往左读:

  • .com、.cn、.org 是顶级域名;
  • example 是网站自己注册的名字;
  • www、mail 这样的前缀叫子域名。

一个域名可以对应多个 IP 地址,大型网站会根据你的位置,给你分配离你最近的服务器。

DNS:把域名翻译成 IP

DNS(域名系统)就是把域名翻译成 IP 地址的服务,相当于一本全球共享的电话簿。一次查询的大致过程:

  1. 你输入 www.example.com;
  2. 电脑先看自己的缓存里有没有这个域名的记录,有就直接用;
  3. 没有的话,问运营商或你设置的 DNS 服务器;
  4. DNS 服务器如果也不知道,会依次去问根服务器、.com 服务器、example.com 的权威服务器;
  5. 拿到 IP 地址后返回给你的电脑,并缓存一段时间;
  6. 电脑用这个 IP 连接网站服务器。

整个过程通常只要几毫秒到几十毫秒。

DNS 缓存:为什么改了不立刻生效

为了减少重复查询,DNS 结果会在浏览器、系统、路由器、DNS 服务器上被缓存一段时间,这个时间叫 TTL。所以网站换了服务器 IP 后,有些人要过一阵才能访问到新地址。遇到「别人能打开、我打不开」的情况,清一下系统的 DNS 缓存有时能解决。

DNS 污染和加密 DNS

传统的 DNS 查询是明文的,网络中间的设备能看到你查询了哪个域名,也可能篡改返回的结果。DNS 查询被干扰、返回错误 IP 的情况,叫 DNS 污染,结果是网站打不开或被导向别处。

为此出现了加密 DNS:

  • DoH(DNS over HTTPS):把 DNS 查询包在 HTTPS 里发送;
  • DoT(DNS over TLS):用 TLS 加密 DNS 查询。

它们能防止查询被偷看和篡改。很多浏览器和操作系统已经支持开启加密 DNS。加密是怎么实现的,见 HTTPS 和 TLS 加密。

DNS 泄露是什么

使用代理时,如果域名查询没有经过代理,而是直接发给了本地运营商的 DNS,就叫 DNS 泄露:别人能从 DNS 记录看出你访问了哪些网站,也可能拿到被污染的结果。代理客户端里的 DNS 设置,就是用来处理这个问题的,原理见 代理是怎么工作的。

总结

  • IP 地址是设备的门牌号,域名是方便记忆的名字,DNS 负责把域名翻译成 IP。
  • DNS 结果会被缓存,所以变更有延迟。
  • 明文 DNS 可能被偷看和篡改,加密 DNS(DoH、DoT)能缓解。
  • 想了解数据整体怎么在网络中传输,见 互联网是怎么连起来的。

常见问题

IPv4 和 IPv6 有什么区别?

IPv4 地址是 32 位,像 203.0.113.10 这样,总数约 43 亿个,已经不够用;IPv6 地址是 128 位,像 2001:db8::1 这样,数量几乎用不完。两者目前同时在使用。

DNS 污染是什么?

指 DNS 查询被干扰,返回了错误的 IP 地址,导致网站打不开或被导向错误的地方。使用加密 DNS 可以减少这类干扰。

改 DNS 能让网速变快吗?

一般只影响「找到服务器」这一步的速度和准确性,不影响下载速度。选一个响应快、结果准确的 DNS,打开网页会更顺畅一些。