DNS 解析:从一人维护到分布式

1983 年之前,全球互联网的「地址簿」是一个人手动维护的文本文件。
体验 HOSTS.TXT 的线性查找之痛,对比 DNS 分层查询的优雅。

模块一:HOSTS.TXT 模拟器

选一个年代场景,亲手体验 1982 年的「域名系统」有多原始。输入主机名查找,看要扫描多少行。

1973 年 ARPANET
40 台主机
1982 年 互联网前夜
500 台主机
假如今天还用 HOSTS.TXT
3.5 亿域名
0
HOSTS.TXT 文件大小
0
100Mbps 下载耗时
0
每秒新增域名数
斯坦福断电 = 全球互联网瘫痪
HOSTS.TXT - Stanford NIC
# 请选择一个年代场景开始体验
MIT 和 Harvard 同时申请注册 "mail-server"
结果:谁先发邮件给 Elizabeth Feinler 谁赢。没有仲裁机制,没有自动检测,全靠人工判断。
在 3.5 亿域名的今天,这种冲突每秒发生数千次。
文件行数:0 行

模块二:DNS 分层查询动画

选一个域名,逐步点击「下一步」,看 DNS 如何通过分层查询从根服务器找到 IP。

www.zhihu.com
docs.google.com
api.github.com
浏览器
递归解析器
根服务器 .
TLD .com
权威服务器
IP 结果
4
总查询次数
≈ 80ms
总耗时(含网络开销)

模块三:HOSTS.TXT vs DNS 数据对比

用数字说话,直观对比两种方案。关键数字滚动动画在进入视口时触发。

维度 HOSTS.TXT (1982) DNS (今天)
维护者 1 人(Elizabeth Feinler) 全球分布式
记录数 ~500 ~3.5 亿
更新方式 邮件申请 + FTP 下载 秒级传播
查找复杂度 O(n) 线性扫描 O(层级) ≈ 3-4 次查询
单点故障 斯坦福断电 = 全网瘫 13 组根服务器 + 任播冗余
命名冲突 人工判断 层级命名空间天然隔离
解析耗时 数秒 ~ 数分钟 ≈ 80ms(缓存命中 < 1ms)

模块四:历史时间线

滚动浏览 DNS 诞生的关键节点,每个事件会随滚动淡入。

1969
ARPANET 诞生,4 个节点,hosts 文件只有 4 行。一切从这里开始。
1973
40 台主机。Elizabeth Feinler 在斯坦福 NIC 开始手动维护 HOSTS.TXT,所有人通过 FTP 下载最新版。
1982
500+ 主机,系统不堪重负:更新延迟数天、命名冲突无法仲裁、FTP 服务器经常过载。
1983
Paul Mockapetris 发表 RFC 882/883,发明 DNS。分层命名空间 + 分布式存储 + 缓存机制,彻底重构互联网的地址系统。
1984
第一批 DNS 根服务器上线。全球 13 组根服务器,通过任播技术分散到数百个节点。
1985
.com 域名开始注册,第一个是 symbolics.com。没人想到这个决定会催生数亿个域名。
2024
全球域名总数超 3.5 亿,单次解析 ≈ 50ms,加上缓存大多数时候 < 1ms。DNS 太成功了,成功到隐形。