一张图看懂「DNS」:输入网址后,浏览器怎么找到服务器
你有没有想过:浏览器地址栏里敲下 www.baidu.com,回车,网页就出来了。可互联网只认 IP 地址(比如 110.242.68.66),不认字母名字。那么,名字是怎么变成 IP 的?
干这件事的,就是 DNS(Domain Name System,域名系统)。一句话:DNS 就是互联网的“通讯录”。
一、DNS = 一本超级通讯录
现实里,你不会背下每个朋友的手机号,而是存进通讯录,要打时搜名字就出号码。
互联网也一样:服务器太多,没人能记住所有 IP,于是把“名字 → IP”的对应关系集中存起来,这就是 DNS。
所以你访问 www.baidu.com,第一步就是:“通讯录,告诉我 www.baidu.com 的 IP 是多少?”
二、这台通讯录不可能只有一本
全球几十亿网站,通讯录不可能塞进你电脑里。它是分散存放的:
- 你电脑里有一份本地缓存(最近查过的先记着);
- 你连的路由器、运营商(比如电信)有一台本地 DNS 服务器;
- 再往上,是层层“总机”——根域名服务器、顶级域服务器、权威服务器。
于是查一个名字,常常是一级一级问上去的,这叫“递归 + 迭代查询”。
三、一次完整的查询过程
假设你第一次访问 www.baidu.com,缓存里没有:
- 你的电脑问本地 DNS 服务器:“
www.baidu.com的 IP 是?” - 本地 DNS 也没有,就去问根服务器:“
.com谁管?”根说:“去找.com的顶级域服务器。”(它只告诉“去哪问”,不直接给答案,这叫迭代) - 本地 DNS 又去问
.com顶级域服务器:“baidu.com谁管?”它说:“去找baidu.com的权威服务器。” - 本地 DNS 最后问权威服务器,这次拿到了真正的 IP:
110.242.68.66。 - 本地 DNS 把答案存进缓存(下次就快了),再回给你。
整个过程通常只要几十毫秒,你根本感觉不到。
四、为什么有时打开网站特别慢 / 打不开?
- DNS 解析慢:本地 DNS 服务器响应慢,或缓存过期要重新层层问。
- DNS 被污染/劫持:有人故意把名字指向错误 IP,你以为进了真网站,其实进了假站(这也是为什么要注意 HTTPS 小绿锁)。
- 域名没备案/没解析:站长忘了在域名商后台填 DNS 记录。
五、和你有关的几个小常识
- 改 DNS:卡顿时可以把本地 DNS 换成
114.114.114.114或8.8.8.8,相当于换个更顺手的通讯录。 - hosts 文件:电脑里一个“私人通讯录”(
C:\Windows\System32\drivers\etc\hosts),优先级比 DNS 高,常被开发用来本地调试。 - TTL:每条 DNS 记录都有“保质期”,过期才重新查,所以改了解析不会秒生效。
一句话总结:DNS 把人能记住的名字,翻译成机器要用的 IP;它像通讯录一样分层存放、层层查询,是你每次上网看不见却离不开的第一脚。