热点

域名解析原理

时间:2010-12-5 17:23:32  作者:知识   来源:知识  查看:  评论:0
内容摘要:```html 域名解析原理 域名解析原理 你在浏览器里敲下 www.example.com,按下回车。屏幕一闪,页面就出来了。这中间发生的事,比你想象的要绕。你的电脑并不知道 www.e

```html 域名解析原理

域名解析原理

你在浏览器里敲下 www.example.com,域名原理按下回车。解析屏幕一闪,域名原理页面就出来了。解析这中间发生的域名原理事,比你想象的解析要绕。你的域名原理电脑并不知道 www.example.com 在哪里,它只知道一件事:得先找到这个域名对应的解析 IP 地址。没有 IP,域名原理数据包根本不知道往哪送。解析域名解析,域名原理干的解析就是这个翻译的活。

翻译过程不是域名原理一步到位的。你的解析操作系统先翻自己的“小本子”—— hosts 文件。这文件历史比 DNS 还老,域名原理当年互联网没几台机器,大家全靠它记地址。现在里面通常只有一条 127.0.0.1 localhost。如果 hosts 里没写,系统才会去问 DNS 服务器。这个 DNS 服务器地址,要么是你手动配的,要么是路由器通过 DHCP 塞给你的。我家路由器给的 DNS 是 192.168.1.1,也就是路由器自己。它接到查询后,如果自己也不知道,就会往上转发。

往上是谁?通常是运营商提供的递归 DNS 服务器。比如电信的 202.96.128.86,或者你手动改成 8.8.8.8、223.5.5.5。递归服务器的工作方式很实在:它替你去问一圈。先问根域名服务器:“.com 谁管?”根服务器回:“去问 a.gtld-servers.net。”递归服务器再问 .com 的服务器:“example.com 谁管?”对方回:“去问 ns1.example.com。”最后递归服务器问 example.com 的权威服务器:“www.example.com 的 IP 是多少?”权威服务器查了自己的记录,回一个 93.184.216.34。递归服务器把这个结果缓存下来,再交给你。

缓存是这里的关键。没有缓存,每次访问网页都要把上面那一圈跑一遍,互联网早堵死了。递归服务器会按记录的 TTL 值缓存结果。TTL 是权威服务器设的,比如 3600 秒,就是一个小时内再来问同一个域名,递归服务器直接报答案,不再往上跑。你的操作系统和浏览器也各自缓存。Chrome 有自己的 DNS 缓存,地址栏输入 chrome://net-internals/#dns 就能看到。有时候网站换了 IP,你本地却还访问旧地址,就是缓存没到期。等 TTL 过期,或者手动清缓存,才能拿到新结果。

查询方式有两种:递归和迭代。你电脑向本地 DNS 发的查询,通常期望对方给最终答案,这叫递归查询。本地 DNS 向根、向 .com、向权威服务器发的查询,每次只拿到“下一步去哪问”,这叫迭代查询。实际中你很少感知这个区别,但抓包看 DNS 报文时,flags 字段里 RD(Recursion Desired)位就标着你的期望。如果 RD 是 0,本地 DNS 可能直接回一个它知道的根服务器地址,让你自己去问。普通用户不会这么干。

还有一种情况:域名解析出来的不是 A 记录,而是 CNAME。比如 www.example.com 可能指向 example.cdnprovider.com。递归服务器拿到 CNAME 后,得接着解析那个新名字,直到拿到最终 IP。CDN 就靠这个机制做调度。你人在广州,递归服务器可能在北京,权威服务器根据递归服务器的 IP 判断你大概在北方,就返回北方节点的 IP。你要是用 8.8.8.8,Google 的服务器可能把你导向美国节点,访问国内网站反而变慢。我试过把 DNS 改成 114.114.114.114 和 223.5.5.5,同一个网站解析出的 IP 完全不同,延迟差几十毫秒。

DNS 协议本身很简单,查询和响应都是二进制格式,默认走 UDP 53 端口。UDP 不保证送达,所以 DNS 查询超时后会重试,通常试两三次。响应超过 512 字节会截断,这时得用 TCP 重发。DNSSEC 加了签名,报文更大,基本都走 TCP 了。你可以在终端敲 dig www.example.com +trace,看着它从根开始一层层问下来,每一跳的延迟和返回都列得清清楚楚。我头一回跑这个命令,才意识到平时那零点几秒的等待里,背后跑了这么多趟。

域名解析不是查一次就完事。浏览器拿到 IP 后,建立 TCP 连接,发 HTTP 请求,服务器返回页面。页面里如果引用了 static.example.com 的图片,浏览器又得解析一次。一个现代网页动辄几十个域名,每个都要走一遍解析流程。有缓存就快,没缓存就慢。你感觉网页“卡了一下才出来”,很多时候就是卡在 DNS 解析上。换个靠谱的递归服务器,或者把常用域名写进 hosts,体验会明显不一样。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap