在計算機網絡中,DNS(Domain Name System)用于 將域名解析為 IP 地址。一個完整的解析過程涉及 遞歸查詢、迭代查詢,以及多個關鍵角色(LDNS、本地域名服務器;根服務器;頂級域名服務器;權威服務器)。
1. DNS 中的關鍵角色
1.1 本地域名服務器(LDNS, Local DNS Server)
由運營商(電信、聯通、移動)或企業網絡提供,離用戶最近。
當客戶端發起域名解析請求時,第一步就是問 LDNS。
LDNS 會查緩存,有結果就直接返回,否則去找根服務器繼續解析。
1.2 根域名服務器(Root DNS Server)
DNS 系統的起點,全球一共 13 組(A–M),分布在世界各地。
作用:告訴你 頂級域名服務器的地址(如
.com
、.cn
)。不存放最終 IP,只起導航作用。
1.3 頂級域名服務器(TLD DNS Server)
按域名后綴分類,例如:
.com
、.net
、.org
→ 通用頂級域名.cn
、.jp
→ 國家頂級域名
作用:告訴你具體 權威服務器的地址。
1.4 權威域名服務器(Authoritative DNS Server)
存放最終的域名 → IP 映射關系。
網站管理員在這里配置解析記錄:
A 記錄:域名 → IPv4 地址
AAAA 記錄:域名 → IPv6 地址
CNAME 記錄:域名別名映射
作用:返回最終 IP 地址。
2. 遞歸查詢(Recursive Query)
定義
客戶端向 DNS 服務器發出請求,要求它 必須返回最終結果。
中間查詢由該服務器自己完成,客戶端只需等待結果。
特點
對客戶端友好,只發一次請求。
服務器壓力較大。
示例
電腦問 LDNS:“
www.example.com
的 IP 是多少?”LDNS 自己去問根、TLD、權威服務器,最終把結果返回給客戶端。
3. 迭代查詢(Iterative Query)
定義
客戶端向 DNS 服務器請求,服務器 只返回自己知道的最優答案,如果不知道,就告訴客戶端“去問誰”。
客戶端需要多次詢問,直到得到結果。
特點
服務器壓力小。
客戶端需要多次發請求。
示例
客戶端問根服務器:“
www.example.com
的 IP 是多少?”根服務器答:“我不知道,但
.com
服務器可能知道。”
客戶端問
.com
服務器。.com
服務器答:“去問 example.com 的權威服務器。”
客戶端問權威服務器,最終拿到 IP。
4. DNS 解析流程
以訪問 www.csdn.com
為例:
客戶端 → LDNS:遞歸查詢,LDNS 必須返回最終 IP。
LDNS → 根服務器:迭代查詢,根告訴 LDNS 去找
.com
服務器。LDNS → 頂級域名服務器 (TLD):迭代查詢,TLD 告訴 LDNS 去找
csdn.com
的權威服務器。LDNS → 權威服務器:迭代查詢,權威服務器返回 IP(如 93.184.216.34)。
LDNS → 客戶端:把結果返回客戶端,并緩存以供下次查詢。
說也就是說,DNS解析的時候,既要有客戶端的遞歸,也要有服務端的迭代。
5. 遞歸 vs 迭代 對比
方式 | 誰來完成查詢 | 客戶端請求次數 | 服務器壓力 | 使用場景 |
---|---|---|---|---|
遞歸查詢 | DNS 服務器 | 一次 | 高 | 客戶端 → LDNS |
迭代查詢 | 客戶端(或 LDNS) | 多次 | 低 | LDNS → 根/TLD/權威 |