Skip to content

DNS解析流程

完整解析过程(迭代查询)

以解析 www.abc.xyz.com 为例:

用户程序(客户端)
    │ 1. DNS查询请求
    ▼
本地域名服务器(Local DNS,最重要的服务器)
    │ 2. 本地缓存未命中,向根服务器查询
    ▼
根域名服务器(Root DNS Server)
    │ 3. 告知:.com的顶级域服务器地址是 X.X.X.X
    ▼
本地域名服务器(迭代:自己继续查)
    │ 4. 向TLD服务器查询
    ▼
顶级域名服务器(TLD Server for .com)
    │ 5. 告知:xyz.com的权限服务器是 Y.Y.Y.Y
    ▼
本地域名服务器
    │ 6. 向权限服务器查询
    ▼
权限域名服务器(Authoritative for xyz.com)
    │ 7. 返回 www.abc.xyz.com 的IP地址
    ▼
本地域名服务器(缓存结果,按TTL计时)
    │ 8. 返回IP给客户端
    ▼
用户程序(得到IP,建立TCP连接)

四类DNS服务器角色

服务器类型 数量 作用 特殊说明
根域名服务器 13套装置(实际1098+节点) 知道所有TLD服务器 任播技术,不直接返回IP
TLD服务器 数千 管理.com/.cn等注册域名 可能直接回答或转给权限服务器
权限域名服务器 数十万 对某区有最终权限 一个域可分多个区
本地域名服务器 每个ISP/大学一个 代理客户端查询 最重要,客户直接联系

高速缓存机制

  • 每次解析结果缓存,设置 TTL(Time To Live) 计时器
  • TTL大:减少查询量;TTL小:域名更新快
  • 大大减轻根服务器负荷(全球1098个根节点每天仍处理数十亿查询)

递归查询(对比)

本地服务器让根服务器代为查询(根服务器问TLD,TLD问权限服务器,逐层回答): - 使用较少(增加根/TLD服务器负担) - 某些情况下客户直接发起递归查询到本地服务器

DNS安全问题

DNS缓存中毒(Cache Poisoning):攻击者伪造DNS响应,将域名指向恶意IP - 防御:DNSSEC(DNS安全扩展)对响应进行数字签名

参见

  • [[06-应用层]] — DNS完整章节
  • [[06-应用层|HTTP协议]] — HTTP请求前必须先进行DNS解析
  • [[04-网络层]] — DNS查询底层使用UDP(端口53)