跳到主要内容

DNS 域名解析

DNS 如何把域名解析成地址?​

  • DNS: 分层、分布式的命名系统,把便于记忆的域名映射到地址等资源记录;
  • 递归解析器: 代客户端完成查询,先查缓存,未命中才继续询问 DNS 层级;
  • 根服务器: 返回相关顶级域的服务器线索,13 个根标识由许多 Anycast 实例承载,并非全球仅 13 台机器;
  • 顶级域服务器: 负责指向 .com、.org 或国家代码顶级域下域名的权威服务器;
  • 权威服务器: 保存所负责区域的正式记录,回答地址或别名等结果;
客户端 → 递归解析器 → 根 → 顶级域 → 权威服务器
客户端 ← 最终结果或错误 ← 地址记录或需继续解析的别名

递归查询和迭代查询有什么区别?​

查询方式请求方要求响应行为
递归请替我查到底返回最终结果或错误
迭代请给你知道的最好答案返回答案或下一站线索
无需继续递归当前即可回答依据缓存或权威数据直接响应
  • 典型组合: 客户端要求递归解析器完成任务,解析器通常通过迭代询问根、顶级域和权威服务器;

常见资源记录分别表达什么?​

记录含义
A / AAAAIPv4 / IPv6 地址
CNAME指向另一个域名的别名,不直接提供 IP
MX邮件交换服务器
TXT文本信息,也常用于域验证和邮件策略
NS / SOA权威名称服务器 / 区域管理与版本信息
SRV服务的目标主机、端口等定位信息
PTR反向查找的域名
CERT公钥证书相关信息

区域与缓存怎样影响解析结果?​

  • 子域: blog.example.com 在 example.com 下进一步划分名称,可用于产品或组织分区;
  • DNS 区域: 委派给某个管理方维护的名称空间范围,子域是否单独成区取决于委派;
  • TTL: 记录允许缓存的秒数,缓存倒计时后需要重新解析,变更不会瞬间传播到所有客户端;
  • 缓存位置: 浏览器、操作系统和解析器都可能缓存,排错时要识别实际命中的层;
  • 反向查询: 根据 IP 查 PTR 得到域名,常用于邮件校验;缺少 PTR 不妨碍普通正向解析;
  • 实现示例: 原文列举 Route 53、Cloudflare DNS、Google Cloud DNS、Azure DNS、NS1,产品名单不表示固定能力或排名;