一句话说清

人记名字、机器认地址,DNS 就是那本全球电话簿。

为什么值得懂

你输入的是名字,数据包认的却是地址,把两边对上号的就是 DNS。它也解释了一件恼火的事:域名改了,为什么有人打得开、有人还停在旧页面。

零基础讲解

一、三件东西。 RFC 1034 把 DNS 拆成三部分:域名空间与资源记录(名字树与记录数据)、名字服务器(保存并回答)、解析器(替程序去问)。

二、递归与迭代。 你的电脑只问本地解析器「这个域名在哪」。解析器依次问根服务器、顶级域(如 .com)和权威服务器,把答案带回来:替你走完整条链是递归,中途「去问它」的指路是迭代。

三、每一级都缓存。 每级都把答案记一段时间,长短写在记录里的 TTL 上。所以多数查询几毫秒就结束:答案早在缓存里。

四、改了域名为什么不立刻生效。 生效快慢由各级缓存的 TTL 决定:旧答案还能用多久,缓存就还答旧的。想切得干净,提前调小 TTL,等旧记录过期再改地址。

五、它同时是攻击面。 解析器会相信听到的答案并缓存:伪造答案塞进缓存是缓存投毒,把查询引到假服务器是 DNS 劫持。RFC 4033 第 1 节也说清了 DNSSEC 的边界——它补的是来源认证与完整性,不提供保密性。

DNS 查询流程:你的电脑问本地解析器,解析器依次问根服务器、顶级域、权威服务器,再把答案带回来并逐级缓存
答案一级级问出来、又一级级被缓存;TTL 决定旧答案还能用多久。

一个例子

公司的网站换了服务器,你刷新看到新站,同事还停在旧页面。你手上是刚查来的答案,他机器里的旧答案还没到期——同一个域名,两拨人的号码不一样,等的都是 TTL 走完。

常见误解

  • 以为 DNS 属于网站:网站宕机 DNS 照样能答;DNS 一坏,网站再健康也打不开。
  • 以为改完域名全世界同时生效:快慢由各级缓存的 TTL 决定。
  • 以为域名和地址一对一:一个名字可指向多个地址,反之亦然。

应用场景

  • 生活:网站打不开,先换个网络或公共 DNS 试一次,分清是站点问题还是本地解析问题。
  • 职场:上线新服务器前把 TTL 调小,切换那天才不会有一半用户停在旧站。
  • 写作与创作:写技术情节,用「缓存还没到期」解释访问异常,比「黑客攻破了网站」真实。

关联知识点

  • 互联网原理(web-internet,先读它:名字与包裹的分工)
  • 互联网协议 TCP/IP(tcp-ip,DNS 报文搭在它上面)
  • 网络安全(cybersecurity,劫持与投毒是攻防一环)