打开浏览器,输入example.com按下回车,等待几毫秒页面开始加载。这一过程背后有一步关键操作,电脑没办法直接识别example.com,只能读取数字形式的IP,像93.184.216.34这类。域名系统也就是DNS,负责把域名翻译成对应的IP。它相当于一套分布式电话簿,并不单独存放在某一台服务器,全球大量服务器共同维护这份数据。
DNS采用分层架构。顶层是根域名服务器,它不会直接返回网站IP,只会告知查询请求该转发到哪一组顶级域服务器。.com、.cn、.org这类后缀就属于顶级域,再往下就是各个域名对应的权威服务器。查询example.com时,根服务器指向.com服务器,.com服务器继续指向example.com的权威服务器,权威服务器最终返回IP。整个流程叫递归查询,本地电脑只需要向本地DNS服务器发起请求,后续一层层查找都交由它代为完成。

正向解析是DNS最核心的能力,把域名转换为IP。缺少这项能力,上网就得记忆一长串数字。反向解析则是反过来,凭借IP查找对应的域名。这项功能日常使用频次偏低,邮件服务器校验、日志分析、爬虫抓取场景会用到。部分站点会凭借访客IP做反向域名查询,用来区分真实用户和自动化爬虫。
除去两类基础解析,DNS还承担不少其他工作。邮件系统高度依赖DNS,发送邮件时,邮件服务器会查询目标域名的MX记录,确定邮件投递的目标主机。MX记录配置出错,邮件会被拒收或者直接归入垃圾箱。CNAME记录可以把一个域名指向另一个域名,等同于域名别名。很多网站会将www前缀域名CNAME绑定主域名,后续主域名更换IP,只需要修改一处配置。
TXT记录同样属于DNS记录类型。最初设计只是给管理员留存备注,现在多用于邮件安全校验,SPF、DKIM都依靠它。没有配置这类记录,发出的邮件容易判定为伪造内容。域名所有权核验也常用TXT记录,申请网站SSL证书时,证书机构会要求添加特定TXT记录,以此确认域名归属。
DNS还可以实现流量负载均衡。同一个域名能够解析出多个IP,每次查询返回IP顺序存在变化,或是依据访客地理位置分配就近服务器。大型网站和CDN依靠这个机制,引导用户接入距离最近的节点。访问视频站点时,DNS可能直接分配同城或者同运营商缓存节点,页面加载速度会明显提升。这套调度全程后台运行,用户感知不到。
缓存机制保证DNS查询速度。电脑、路由器、本地DNS服务器都会暂存查询结果,保存时长叫做TTL。TTL有效期内,再次查询相同域名直接读取缓存,不用重复执行递归查询。TTL设置过长,域名变更IP之后,外部长时间无法访问新地址;TTL设置太短,查询请求会持续产生压力。管理员需要结合业务场景权衡数值。
DNS早期设计没有过多考量安全,查询和返回内容默认明文传输,很容易遭到篡改或者DNS投毒。后续推出DNSSEC,借助数字签名校验返回数据真实性。DNS over HTTPS、DNS over TLS则对查询链路加密,防止他人窥探访问站点信息。这类技术普及范围持续扩大,但还没有完全替代传统DNS。
域名系统的作用不只是域名转数字。寻址、邮件路由分发、流量调度、身份核验这些任务都由它承载,属于互联网基础支撑设施。平时几乎感受不到它的存在,一旦服务中断,绝大多数网站都无法打开。