DNS漫游指南:從網址到IP的奇妙之旅
當用戶在瀏覽器中輸入特定網站時發生的整個端到端過程可以參考下圖:
圖片
問題: 什么是 DNS?
答案 → DNS 指的是域名系統(Domain Name System)。DNS 是互聯網的目錄,將人類可讀的域名,例如 google.com,轉換為機器可讀的 IP 地址。
問題: 高層次解釋 DNS 查詢的過程是什么?
答案 → 這個過程是一個復雜而優雅的過程。DNS 信息被大量緩存在各個地方:
- 首先, 瀏覽器從自己的緩存中短時間查找這些信息。
- 接下來, 如果在緩存中找不到 DNS 映射,則向計算機操作系統進行查詢,操作系統也會短時間緩存此信息。
- 接著, 如果在操作系統的緩存中仍然找不到 DNS 映射,則瀏覽器向互聯網發出查詢,查詢到 DNS 解析器。這將引發一系列請求,直到找到 DNS 映射為止。這一步涉及 DNS 基礎設施中的許多服務器。
- 最終,瀏覽器獲得了服務器的 IP 地址。
問題: 解釋一下 DNS 服務器?
答案 → DNS 層次結構中有不同類型的 DNS 服務器,每個服務器都有不同的用途。
當瀏覽器進行 DNS 查詢時,實際上是在詢問 DNS 解析器。
這個 DNS 解析器可以來自我們的 ISP,也可以來自像 CloudFlare 的 1.1.1.1 或 Google 的 8.8.8.8 這樣的流行 DNS 提供商。
如果 DNS 解析器在其緩存中沒有答案,它會找到正確的權威名稱服務器并向其發出請求。
問題: 什么是“權威名稱服務器”?
答案 → “權威名稱服務器”是保存答案的服務器。當我們更新域名的 DNS 記錄時,我們實際上是在更新其權威名稱服務器。
問題: DNS 解析器如何找到權威名稱服務器?
答案 → 權威名稱服務器有三個主要級別:
- 根名稱服務器。
- 頂級域名服務器。
- 域的權威名稱服務器。
問題: 解釋一下根名稱服務器?
答案 → 請找到有關根名稱服務器的詳細信息:
根名稱服務器存儲頂級域名服務器的 IP 地址。
有 13 個邏輯根名稱服務器,每個根名稱服務器都分配了一個唯一的 IP 地址。
每個前述 IP 地址后面實際上有很多物理服務器。
通過 Anycast 的神奇之處,我們被路由到最接近我們的任何一個服務器。
問題: 解釋一下頂級域名服務器?
答案 → 請找到有關頂級域名服務器的詳細信息:
- 頂級域名服務器存儲了其下所有域的權威名稱服務器的 IP 地址。
- 有許多類型的頂級域名。例如,我們熟悉的有“.com”、“.org”、“.edu”。還有國家代碼頂級域名如“.de”和“.uk”。還有許多其他類型。
- 域的權威名稱服務器提供 DNS 查詢的權威答案。
問題: 解釋一下權威名稱服務器?
答案 → 當我們注冊一個域時,默認情況下注冊商運行權威名稱服務器,但我們可以將其更改為其他服務器。
請注意,像 AWS 和 CloudFlare 這樣的云服務提供商運行強大的權威名稱服務器。
問題: 介紹一下典型 DNS 查詢的流程?
答案 → 此過程涉及以下步驟:-
第一步: 用戶在瀏覽器中輸入 google.com。
- 瀏覽器首先檢查自己的緩存以找到相應的 IP 地址。
- 如果緩存中沒有答案,則進行操作系統調用以獲取答案。操作系統調用很可能有自己的緩存。
第二步: 如果在操作系統緩存中找不到答案,它會向 DNS 解析器發出請求。DNS 解析器首先檢查自己的緩存。
第三步: 如果在 DNS 解析器緩存中找不到答案,或者說答案已過期,則它會請求根名稱服務器。
第四步: 根名稱服務器首先返回“.com”頂級域名服務器的列表。
請注意,由于“.com”是一個常見的頂級域名,解析器很可能已經緩存了那些“.com”頂級域名服務器的 IP 地址。
第五步: 然后,DNS 解析器到達“.com”頂級域名服務器。
第六步: “.com”頂級域名服務器返回“google.com”的權威名稱服務器。
第七步: 然后,DNS 解析器到達“google.com”的權威名稱服務器。
第八步: “google.com”的權威名稱服務器然后返回“google.com”的 IP 地址。
第九步: 然后,DNS 解析器將 IP 地址返回給操作系統。操作系統然后將其返回給瀏覽器。
問題: 在 DNS 級別進行更改通常需要很長時間才能反映這些更改?
答案 → 這有兩個原因:
(1) DNS 傳播很慢,因為每個 DNS 記錄都有 TTL。而且一些默認 TTL 很長。
(2) 并非每個 DNS 解析器都是良好的“公民”,也就是說,有些 DNS 解析器可能不遵守 TTL。
問題: 有哪些方法可以減輕這種風險?
答案 → 有兩種主要方法:
方法 #1.) 將要更改的記錄的 TTL 縮短到非常短的時間(比如 60 秒),并在實際更新發生之前提前更改。
這樣做可以讓所有 DNS 服務器有足夠的時間接收新的縮短 TTL,從而根據新的縮短 TTL 實際記錄更新可以生效。
方法 #2.) 在舊 IP 地址上保留服務器運行一段時間。只有當流量下降到可接受的水平時,才關閉服務器。