一、什么是DNS?
DNS(Domain Name System,域名系統)?是互聯網的核心服務,負責將人類可讀的域名(如?www.baidu.com
)轉換為機器可識別的?IP地址(如?14.119.104.254
)。它像一本全球分布式“電話簿”,讓用戶無需記憶復雜數字即可訪問網站。
關鍵特性:
-
分層設計:域名結構分層次管理(如?
.com
?→?baidu
?→?www
)。 -
分布式存儲:全球數萬臺DNS服務器協同工作,無單點故障。
-
高效緩存:減少重復查詢,提升解析速度。
二、為什么要有DNS?
沒有DNS的世界會怎樣?
-
訪問網站需輸入IP地址:
用戶需記憶?14.119.104.254
?而非?www.baidu.com
。 -
IP變更導致服務中斷:
若服務器IP更換,所有用戶必須手動更新。 -
無法支持復雜服務:
單IP無法托管多個網站(如虛擬主機)。
DNS的四大價值
痛點 | DNS解決方案 |
---|---|
記憶難度高 | 通過域名提供易記的別名 |
IP動態變化 | 域名與IP動態綁定,自動更新 |
服務擴展性差 | 支持負載均衡、CDN調度等高級功能 |
網絡流量集中 | 分布式架構緩解單點壓力 |
三、域名的構成
1. 域名結構(從右到左)
以?www.baidu.com
?為例:
-
根域(Root Domain):隱式的?
.
(通常省略,如?com.
)。 -
頂級域(TLD):
.com
(商業機構)、.org
(非盈利組織)、.cn
(國家代碼)。 -
二級域(SLD):
baidu
(注冊的網站名稱)。 -
子域(Subdomain):
www
(常見的子域,表示Web服務)。
2. 域名樹狀圖
根域(.) └── 頂級域(com)└── 二級域(baidu)├── 子域(www)└── 子域(mail)
四、DNS服務器的分類
類型 | 作用 | 示例 |
---|---|---|
根DNS服務器 | 提供頂級域服務器的IP地址 | 全球13組根服務器(a.root-servers.net) |
頂級域DNS服務器 | 管理特定頂級域(如?.com )的權威服務器 | gtld-servers.net |
權威DNS服務器 | 存儲具體域名的IP映射記錄 | ns1.baidu.com(百度官方DNS) |
遞歸DNS服務器 | 代表用戶完成完整查詢過程的緩存服務器 | 8.8.8.8(Google Public DNS) |
五、DNS客戶端
1. 客戶端的作用
-
發起查詢:向遞歸DNS服務器發送域名解析請求。
-
緩存管理:臨時存儲解析結果(通過TTL控制緩存時間)。
2. 客戶端配置
Windows
# 查看當前DNS服務器 ipconfig /all
Linux
# 修改DNS配置(/etc/resolv.conf) nameserver 114.114.114.114
六、DNS中繼(Forwarder)
1. 什么是DNS中繼?
企業或ISP部署的本地DNS服務器,將外部查詢請求轉發至上游服務器,實現:
-
緩存加速:減少外網查詢延遲。
-
內容過濾:屏蔽惡意域名。
-
流量管控:限制員工訪問特定網站。
2. 中繼 vs. 遞歸服務器
對比項 | DNS中繼 | 遞歸DNS服務器 |
---|---|---|
查詢方式 | 轉發請求至上游服務器 | 自行完成全鏈路查詢 |
典型場景 | 企業內網、學校機房 | 公共DNS服務(如Cloudflare) |
緩存策略 | 依賴上游響應 | 自主緩存所有層級結果 |
七、域名解析過程
1. 遞歸查詢(客戶端視角)
mermaid
sequenceDiagramparticipant 用戶participant 遞歸DNSparticipant 根DNSparticipant 頂級域DNSparticipant 權威DNS用戶->>遞歸DNS: 查詢 www.baidu.com遞歸DNS->>根DNS: 詢問 .com 的頂級域服務器根DNS-->>遞歸DNS: 返回 .com 服務器IP遞歸DNS->>頂級域DNS: 詢問 baidu.com 的權威服務器頂級域DNS-->>遞歸DNS: 返回 baidu.com 的權威服務器IP遞歸DNS->>權威DNS: 查詢 www.baidu.com 的IP權威DNS-->>遞歸DNS: 返回 14.119.104.254遞歸DNS-->>用戶: 返回最終IP
2. 迭代查詢(服務器視角)
-
本地DNS詢問根服務器 → 獲取?
.com
?服務器地址。 -
詢問?
.com
?服務器 → 獲取?baidu.com
?權威服務器地址。 -
詢問?
baidu.com
?服務器 → 獲取?www
?子域的IP。