DNS 递归查询 — 逐级委托、逐级返回
1 主机向本地域名服务器发起递归查询
用户主机
查询 y.abc.com
本地域名服务器
接受递归查询委托
① 递归查询 y.abc.com
主机发出一次查询请求后,后面的所有查询工作都委托给本地域名服务器完成。主机只需等待最终结果。
递归查询的特征
查询者发出请求后,被查询的服务器代替查询者完成后续所有查询步骤,最终把完整结果返回给查询者。
对查询者而言:一次请求 → 一次响应。
2 本地域名服务器向根域名服务器递归查询
本地域名服务器
委托根服务器查询
根域名服务器
接受递归查询委托
② 递归查询 y.abc.com
本地域名服务器继续委托根域名服务器。根服务器如果不知道最终结果,又继续委托给顶级域名服务器……
问题:每一级服务器都被迫承担递归查询的负担,特别是根域名服务器压力极大。
3 逐级递归委托,直到权限域名服务器
本地域名服务器
根域名服务器
com 顶级域名服务器
abc.com 权限服务器
知道 y.abc.com 的 IP
② 递归
③ 递归
④ 递归
递归查询形成一条委托链:本地 → 根 → 顶级 → 权限。权限域名服务器知道最终答案。
4 查询结果沿委托链逐级返回
用户主机
得到 IP 地址
本地域名服务器
根域名服务器
com 顶级域名服务器
abc.com 权限服务器
IP = 1.2.3.4
←⑧ 返回结果
←⑦ 返回
←⑥ 返回
←⑤ 返回
权限域名服务器找到 IP 后,结果沿原委托链逐级往回传递,最终到达用户主机。
递归查询对各级域名服务器负担太大,在因特网 DNS 中很少全程使用。