前言
上週的文章中我們提到了如何在Cloudflare上面買domain,這次我預計說明Domain Name是如何一步步訪問到我們架起的服務的,那麼我們開始吧。
首先,以我們當前的blog舉例:https://blog.clarkliu.com。在實際訪問到伺服器主機前,會經過以下步驟。
瀏覽器查快取
如果之前已經訪問過該網站,Browser或是OS就會保存相關的快取,如此一來下次訪問就不用再查一遍。
瀏覽器詢問Recursive Resolver(ISP 或 8.8.8.8)
我們會利用一個服務叫做Recursive Resolver,他的主要作用是替你負責不斷地輪詢主機,最後幫你把你要的答案,也就是Server的IP位址抓回來,預設主機的Recursive Resolver會是來自ISP提供的服務,例如說台灣的話就是中華電信、遠傳等等。
Recursive Resolver 詢問 Root Name Server
Recursive Resolver會首先查詢Root Name Server,用來取得 Top Level Domain(TLD NS) 的 IP。
Top Level Domain Name Server主要負責保存相關Top Level網域的資訊,比方說”.com”就是一個Top Level Domain,除此之外常見的TLD NS包含”jp”、“tw”等等。
Recursive Resolver 詢問 TLD Name Server
此時得知TLD的Recursive Resolver就會詢問TLD, 接著得到Authoritative NS的 IP,Authoritative NS就是雲端服務商的Domain Name Server,這裡保存著用戶Domain Name所對應的IP,如果你使用AWS去管理DNS 就會是 AWS Route 53,你如果是Cloudflare 就會是 Cloudflare的服務等等。
Recursive Resolver 詢問 Authoritative Name Server
假設我的domain部署在cloudflare,我就可以透過Cloudflare的Authoritative Name Server得到 伺服器主機的IP
Recursive Resolver結果回傳瀏覽器,並快取起來
你可以參考圖片來更理解流程。

以上的範例是 若從Cloudflare購買網域,且DNS也透過Cloudflare管理的情況。
實務上可能會更加複雜,舉例來說,你只是透過cloudflare買domain,實際上是使用AWS Route 53管理DNS的話,狀況就會變成訪問完Cloudflare後繼續訪問AWS Route 53…詳細可以看以下的DNS設定。
在DNS中,我們可以設定多種Type,最常見的就是A與CNAME了,這邊我使用AI一次列出各種DNS Type。
| Record Type | 功能 | 範例 | 補充 |
|---|---|---|---|
| A | 網域 → IPv4 | yoursite.com -> 104.21.1.1 | 最常見 |
| AAAA | 網域 → IPv6 | yoursite.com -> 2606:4700::... | IPv6 版本的 A Record |
| CNAME | 網域別名 → 另一個網域 | www -> yoursite.com | 不能直接指向 IP |
| MX | 郵件伺服器 | yoursite.com -> mail.google.com | Email 收信用 |
| TXT | 純文字資訊 | SPF / DKIM / 網域驗證 | 很多 SaaS 都靠它驗證 |
| NS | 指定 DNS 管理者 | ns1.cloudflare.com | 告訴全世界「去哪查這個網域」 |
| SOA | DNS Zone 的管理資訊 | serial、refresh 等 | DNS 同步機制重要依據 |
| SRV | 服務位置資訊 | _sip._tcp.example.com | 常見於 SIP、Minecraft、K8s 等 |
其中跟本文最相關的是 A 與 NS Record,A Record 決定最終的 IP,NS Record 決定誰是 Authoritative Server。
透過以上描述,你應該可以很清楚的知道DNS背後的運作可能相當複雜,而每一次的請求如果都需要這樣訪問,那速度可想而知將會非常慢,於是為了減少DNS解析需要消耗的時間,每筆 DNS 記錄都有一個 TTL(Time To Live),也就是快取的有效期限,單位是秒,到期後快取就會失效,需要重新查詢。
為了減少每次都要走完整個查詢流程,DNS 設計了多層快取:當中包含
- Recursive Resolver 快取 → 最重要,TTL 到期前不會再問 Authoritative
- OS 快取 → TTL 到期或重啟清除
- 瀏覽器快取 → TTL 到期或關閉瀏覽器清除
總結來說DNS的功能相當複雜,希望我的內容是簡單好懂,那我們先到這邊,下週再會吧。