DNS 查詢的完整旅程
當你在瀏覽器輸入 www.example.com 按下 Enter,到頁面顯示,背後發生了一場超快速的「接力賽」——通常在 50 毫秒內完成。
完整查詢流程
每個角色的職責
1. 你的電腦(本地緩存)
你的電腦和操作系統本身就有 DNS 緩存。查詢前先看緩存:
- Windows:
ipconfig /displaydns查看緩存 - Mac:
sudo dscacheutil -statistics查看緩存 - 清除緩存:Windows
ipconfig /flushdns;Macsudo dscacheutil -flushcache
2. 遞歸解析器(Recursive Resolver)
這是你的 ISP 或你手動設置的 DNS 服務器(例如 Google 的 8.8.8.8)。
它負責替你完成整個查詢過程,然後把結果告訴你。因為它也有緩存,如果最近有人查詢過同樣的域名,它直接返回緩存結果,不需要走完整的流程。
常用公共遞歸解析器:
| 提供商 | IPv4 | 特點 |
|---|---|---|
| 8.8.8.8 / 8.8.4.4 | 快速,全球最大 | |
| Cloudflare | 1.1.1.1 / 1.0.0.1 | 更快,隱私保護更好 |
| Quad9 | 9.9.9.9 | 有惡意域名攔截 |
3. 根域名服務器(Root Nameservers)
全球只有 13 組根服務器(但每組有數百個物理服務器),由 ICANN 管理。它們只做一件事:告訴遞歸解析器不同頂級域名(.com、.net、.org)的服務器在哪裡。
4. TLD 服務器(頂級域名服務器)
管理特定頂級域名的服務器:
- .com 由 Verisign 管理
- .org 由 Public Interest Registry 管理
- .tw 由 TWNIC(台灣網路資訊中心)管理
TLD 服務器告訴遞歸解析器:某個二級域名的權威 DNS 服務器在哪裡。
5. 權威 DNS 服務器(Authoritative DNS)
這是你的域名的「官方記錄本」——包含你所有配置的 DNS 記錄(A、CNAME、MX 等)。
誰提供你的權威 DNS: - 域名注冊商(GoDaddy、Namecheap 等) - 第三方 DNS 服務(Cloudflare、Route53 等) - 你自架的 DNS 服務器(進階)
本地 hosts 文件
在 DNS 查詢之前,系統會先查詢 hosts 文件:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Mac/Linux:
/etc/hosts
# hosts 文件示例
127.0.0.1 localhost
93.184.216.34 example.com ← 硬覆蓋 DNS 記錄
用途: - 本地開發時把域名指向本機(127.0.0.1) - 阻止訪問特定網站(把它指向 127.0.0.1)
DNS 緩存的工作機制
第一次查詢 www.example.com:
本地緩存 → 沒有
遞歸解析器緩存 → 沒有
→ 完整查詢(走完所有步驟)
→ 結果緩存到遞歸解析器(TTL 時間)
第二次查詢(TTL 內):
本地緩存 → 有!
→ 直接返回(幾毫秒)
為什麼你改了 DNS 但別人還看到舊內容:
不同的人使用不同的遞歸解析器,它們各自有緩存,不會同時更新。這就是「DNS 傳播時間」的本質——不是一個中央更新命令,而是等全球各地的緩存自然過期。
實際測試
你現在就可以追蹤一次 DNS 查詢:
# Mac / Linux
dig www.google.com +trace
# Windows
nslookup -type=A www.google.com
dig +trace 會顯示完整的查詢路徑,從根服務器到最終 IP,每一步都清晰可見。
本章執行清單
- [ ] 用
nslookup或dig查詢你的域名,確認 IP 地址正確 - [ ] 嘗試
dig +trace觀察完整查詢路徑 - [ ] 確認你使用的 DNS 服務器(
ipconfig /all或cat /etc/resolv.conf)
下一節:DNS 服務器的層次結構——深入理解根服務器、TLD 和權威 DNS 的管理架構。