Skip to content

DNS 详解与查找过程

一、DNS 基础概念

1.1 DNS 定义

域名系统(Domain Name System, DNS) 是互联网的核心基础设施之一,它负责将人类易读的域名(如 example.com)转换为计算机可识别的 IP 地址(如 192.0.2.1)。这一过程类似于电话簿将人名映射到电话号码。

1.2 DNS 的核心作用

  • 地址解析:将域名转换为 IP 地址,实现网络资源的定位
  • 负载均衡:通过返回不同 IP 地址,将流量分配到多个服务器
  • 服务发现:支持邮件系统(MX 记录)、分布式服务等场景的资源定位
  • 网络架构抽象:解耦域名与物理 IP,便于服务器迁移和扩展

二、DNS 系统组成

2.1 域名空间(Domain Name Space)

采用树形分层结构,顶级域(TLD)分为三类:

  • 通用顶级域(gTLD):.com、.org、.net、.edu 等
  • 国家/地区顶级域(ccTLD):.cn(中国)、.jp(日本)、.uk(英国)等
  • 新通用顶级域(new gTLD):.xyz、.online、.shop 等

2.2 资源记录(Resource Record, RR)

DNS 数据以资源记录形式存储,常见类型包括:

记录类型作用示例
A域名映射到 IPv4 地址www.example.com A 192.0.2.1
AAAA域名映射到 IPv6 地址ipv6.example.com AAAA 2001:db8::1
MX邮件服务器优先级example.com MX 10 mail.example.com
CNAME域名别名www.example.com CNAME example.net
NS域名服务器记录example.com NS ns1.registrar.com
TXT文本记录(用于验证、SPF 等)_spf.example.com TXT "v=spf1 mx ~all"
SRV服务定位记录_ssh._tcp.example.com SRV 10 5 22 ssh-server.example.com

2.3 DNS 服务器层级结构

  1. 根域名服务器(Root DNS Server)
    全球共 13 组(A~M),负责解析顶级域服务器地址,是 DNS 查询的起点。

  2. 顶级域名服务器(TLD Server)
    负责解析对应顶级域(如 .com、.cn)下的权威域名服务器地址。

  3. 权威域名服务器(Authoritative DNS Server)
    负责特定域名空间的最终解析,存储该域名的资源记录,分为:

    • 主域名服务器(Primary DNS)
    • 从域名服务器(Secondary DNS)
    • 托管域名服务器(Forwarding DNS)
  4. 递归域名服务器(Recursive DNS Server)
    通常为用户本地网络配置的 DNS 服务器(如家庭路由器、ISP 提供的 DNS),负责替用户执行完整的递归查询过程。

三、DNS 查找过程详解

3.1 递归查询与迭代查询

递归查询(客户端 → 本地 DNS 服务器)

  • 特点:本地 DNS 服务器承担全部查询任务,客户端只需等待最终结果
  • 场景:用户设备(PC/手机)向本地 DNS 服务器发起查询

迭代查询(本地 DNS 服务器 → 各级域名服务器)

  • 特点:本地 DNS 服务器逐次向各级域名服务器询问,逐步获取解析结果
  • 场景:本地 DNS 服务器与根服务器、TLD 服务器、权威服务器的交互

3.2 完整查询流程(以 www.example.com 为例)

  1. 客户端发起查询
    用户在浏览器输入 www.example.com,操作系统向本地递归 DNS 服务器(如 192.168.1.1)发送 DNS 查询请求(UDP 53 端口)。

  2. 本地 DNS 服务器检查缓存

    • 若缓存中有 www.example.com 的 A 记录,直接返回 IP 地址
    • 若缓存失效或无记录,进入迭代查询流程
  3. 迭代查询根服务器
    本地 DNS 服务器向根域名服务器(如 a.root-servers.net)发送查询,根服务器返回 .com 顶级域服务器地址(如 gTLD-servers.net)。

  4. 迭代查询顶级域服务器
    本地 DNS 服务器向 .com 顶级域服务器查询 example.com,获取其权威域名服务器地址(如 ns1.example.com)。

  5. 迭代查询权威域名服务器
    本地 DNS 服务器向 example.com 的权威服务器查询 www 子域名,权威服务器返回 www.example.com 的 A 记录(如 192.0.2.1)。

  6. 返回结果并缓存
    本地 DNS 服务器将结果返回给客户端,同时缓存该记录(TTL 时间内有效)。

3.3 流程图解

客户端(浏览器)


本地递归 DNS 服务器(检查缓存)
  │ 否

┌──────────────┐     ┌────────────────┐     ┌──────────────────┐
│  根域名服务器  │────►│ .com 顶级域服务器 │────►│ example.com 权威服务器 │
└──────────────┘     └────────────────┘     └──────────────────┘
  │  ↓                │  ↓                  │  ↓
  └──────────────────┴────────────────────┴───────────────────┘


                本地 DNS 服务器(缓存结果)


                     客户端(获取 IP 地址)

3.4 缓存机制

  • 缓存位置:客户端操作系统、本地 DNS 服务器、各级域名服务器均会缓存解析结果
  • TTL(Time To Live):资源记录的生存时间,决定缓存有效期(如 TTL 3600 表示缓存 1 小时)
  • 缓存失效场景:TTL 到期、域名解析记录更新、手动清除缓存

四、DNS 高级特性与应用

4.1 DNS 记录类型扩展

  • SRV 记录:用于服务发现(如 SIP、XMPP 等协议)
  • DNSSEC(DNS Security Extensions):通过数字签名防止 DNS 欺骗和篡改
  • DANE(DNS-based Authentication of Named Entities):为 TLS 证书提供 DNS 级别的验证

4.2 负载均衡与流量调度

  • 轮询 DNS(Round Robin DNS):通过返回多个 IP 地址按顺序分配流量
  • 基于地理位置的 DNS(GeoDNS):根据用户 IP 地址返回最近的服务器 IP
  • 加权轮询:为不同服务器设置权重,实现流量比例分配

4.3 常见问题与优化

  • DNS 污染:通过伪造 DNS 响应定向用户流量,解决方案包括使用加密 DNS(如 DoH、DoT)
  • 解析延迟:优化措施包括:
    • 部署本地 DNS 缓存服务器(如 DNSmasq)
    • 使用公共递归 DNS 服务(如 Cloudflare 1.1.1.1、Google 8.8.8.8)
    • 缩短 TTL 提高记录更新效率
  • DNS 放大攻击:利用 DNS 反射特性发起 DDoS 攻击,防护措施包括启用 DNS 源端口随机化、部署流量清洗设备

五、DNS 与现代网络

5.1 加密 DNS 趋势

  • DoH(DNS over HTTPS):通过 HTTPS 协议传输 DNS 查询,防止中间人攻击,代表服务:Cloudflare Warp、Firefox 内置 DoH
  • DoT(DNS over TLS):通过 TLS 协议加密 DNS 通信,常见于企业网络和运营商部署

5.2 DNS 在 CDN 中的应用

  • CDN(内容分发网络)通过 DNS 将用户请求导向离其最近的边缘节点:
    1. 用户请求 www.example.com
    2. DNS 解析返回离用户最近的 CDN 节点 IP
    3. 流量被路由到该节点,加速内容加载

5.3 未来发展:DNS over QUIC

基于 QUIC 协议的 DNS 传输,结合 UDP 的低延迟和 TLS 的安全性,适用于移动网络和高丢包率场景。

六、总结

DNS 作为互联网的"电话簿",看似简单却支撑着整个网络的寻址系统。从基础的域名解析到复杂的流量调度、安全扩展,其设计思想体现了分布式系统的核心原则。理解 DNS 的工作原理,对网络故障排查、性能优化和安全防护都具有重要意义。

如需进一步实践,可以通过 nslookupdighost 等命令行工具观察 DNS 查询过程,或部署本地 DNS 服务器深入理解缓存与解析机制。

Released under the MIT License.