什么是 DNS?
域名系統(tǒng) (DNS) 是 Internet 電話簿。人們通過例如 nytimes.com 或 espn.com 等域名在線訪問信息。Web 瀏覽器通過 Internet 協(xié)議 (IP) 地址進(jìn)行交互。DNS 將域名轉(zhuǎn)換為 IP 地址,以便瀏覽器能夠加載 Internet 資源。
連接到 Internet 的每個設(shè)備都有一個唯一 IP 地址,其他計算機(jī)可使用該 IP 地址查找此設(shè)備。DNS 服務(wù)器使人們無需存儲例如 192.168.1.1(IPv4 中)等 IP 地址或更復(fù)雜的較新字母數(shù)字 IP 地址,例如 2400:cb00:2048:1::c629:d7a2(IPv6 中)。
DNS 如何工作?
DNS 解析過程涉及將主機(jī)名(例如 www.example.com)轉(zhuǎn)換為計算機(jī)友好的 IP 地址(例如 192.168.1.1)。Internet 上的每個設(shè)備都被分配了一個 IP 地址,必須有該地址才能找到相應(yīng)的 Internet 設(shè)備 - 就像使用街道地址來查找特定住所一樣。當(dāng)用戶想要加載網(wǎng)頁時,用戶在 Web 瀏覽器中鍵入的內(nèi)容(example.com)與查找 example.com 網(wǎng)頁所需的機(jī)器友好地址之間必須進(jìn)行轉(zhuǎn)換。
為理解 DNS 解析過程,務(wù)必了解 DNS 查詢必須經(jīng)過的不同硬件組件。對于 Web 瀏覽器,DNS 查找在“幕后”進(jìn)行,除了初始請求外,不需要從用戶的計算機(jī)進(jìn)行任何交互。
加載網(wǎng)頁涉及 4 個 DNS 服務(wù)器:
DNS 解析器 - 該解析器可被視為被要求去圖書館的某個地方查找特定圖書的圖書館員。DNS 解析器是一種服務(wù)器,旨在通過 Web 瀏覽器等應(yīng)用程序接收客戶端計算機(jī)的查詢。然后,解析器一般負(fù)責(zé)發(fā)出其他請求,以便滿足客戶端的 DNS 查詢。
根域名服務(wù)器 - 根域名服務(wù)器是將人類可讀的主機(jī)名轉(zhuǎn)換(解析)為 IP 地址的第一步??蓪⑵湟暈橹赶虿煌瑫艿膱D書館中的索引 - 一般其作為對其他更具體位置的引用。
TLD 域名服務(wù)器 - 頂級域服務(wù)器(TLD)可被視為圖書館中的特定書架。此域名服務(wù)器是搜索特定 IP 地址的下一步,其托管主機(jī)名的最后一部分(在 example.com 中,TLD 服務(wù)器為 “com”)。
權(quán)威性域名服務(wù)器 - 可將這個最終域名服務(wù)器視為書架上的字典,其中特定名稱可被轉(zhuǎn)換成其定義。權(quán)威性域名服務(wù)器是域名服務(wù)器查詢中的最后一站。如果權(quán)威性域名服務(wù)器能夠訪問請求的記錄,則其會將已請求主機(jī)名的 IP 地址返回到發(fā)出初始請求的 DNS 解析器(圖書管理員)。
權(quán)威性 DNS 服務(wù)器與遞歸 DNS 解析器之間的區(qū)別是什么?
這兩個概念都是指 DNS 基礎(chǔ)設(shè)施不可或缺的服務(wù)器(服務(wù)器組),但各自擔(dān)當(dāng)不同的角色,并且位于 DNS 查詢管道內(nèi)的不同位置。考慮二者差異的一種方式是,遞歸解析器位于 DNS 查詢的開頭,而權(quán)威性域名服務(wù)器位于末尾。
遞歸 DNS 解析器
遞歸解析器是一種計算機(jī),其響應(yīng)來自客戶端的遞歸請求并花時間追蹤 DNS 記錄。為執(zhí)行此操作,其發(fā)出一系列請求,直至到達(dá)用于所請求的記錄的權(quán)威性 DNS 域名服務(wù)器為止(或者超時,或者如果未找到記錄,則返回錯誤)。幸運(yùn)的是,遞歸 DNS 解析器并不總是需要發(fā)出多個請求才能追蹤響應(yīng)客戶端所需的記錄;緩存是一種數(shù)據(jù)持久性過程,可通過在 DNS 查找中更早地服務(wù)于所請求的資源記錄來為所需的請求提供捷徑。
權(quán)威性 DNS 服務(wù)器
簡言之,權(quán)威性 DNS 服務(wù)器是實(shí)際持有并負(fù)責(zé) DNS 資源記錄的服務(wù)器。這是位于 DNS 查找鏈底部的服務(wù)器,其將使用所查詢的資源記錄進(jìn)行響應(yīng),從而最終允許發(fā)出請求的 Web 瀏覽器達(dá)到訪問網(wǎng)站或其他 Web 資源所需的 IP 地址。權(quán)威性域名服務(wù)器從自身數(shù)據(jù)滿足查詢需求,無需查詢其他來源,因?yàn)檫@是某些 DNS 記錄的最終真實(shí)來源。
值得一提的是,在查詢對象為子域(例如 foo.example.com 或 blog.cloudflare.com)的情況下,將向權(quán)威性域名服務(wù)器之后的序列添加一個附加域名服務(wù)器,其負(fù)責(zé)存儲該子域的 CNAME 記錄。
許多 DNS 服務(wù)與 Cloudflare 提供的服務(wù)之間存在一個關(guān)鍵區(qū)別。Google DNS、OpenDNS 等不同 DNS 遞歸解析器以及 Comcast 等提供商均保持 DNS 遞歸解析器的數(shù)據(jù)中心安裝。這些解析器可實(shí)現(xiàn)通過 DNS 優(yōu)化式計算機(jī)系統(tǒng)的優(yōu)化群集快速輕松地進(jìn)行查詢,但它們與 Cloudflare 托管的域名服務(wù)器截然不同。
Cloudflare 維護(hù) Internet 功能不可或缺的基礎(chǔ)設(shè)施級域名服務(wù)器。一個主要示例是 Cloudflare 部分負(fù)責(zé)托管的 f-根服務(wù)器網(wǎng)絡(luò)。F 根是每天負(fù)責(zé)數(shù)十億個 Internet 請求的根級 DNS 域名服務(wù)器基礎(chǔ)設(shè)施組件之一。我們的 Anycast 網(wǎng)絡(luò)在處理大量 DNS 流量方面發(fā)揮著不可替代的作用,也不會出現(xiàn)服務(wù)中斷。
DNS 查找有哪些步驟?
大多數(shù)情況下,DNS 與正被轉(zhuǎn)換為相應(yīng) IP 地址的域名有關(guān)。要了解此過程的工作方式,在 DNS 查找從 Web 瀏覽器經(jīng)過 DNS 查找過程然后再返回時,跟蹤 DNS 查找的路徑會有所幫助。我們來看一下這些步驟。
注意:通常,DNS 查找信息將本地緩存在查詢計算機(jī)內(nèi),或者遠(yuǎn)程緩存在 DNS 基礎(chǔ)設(shè)施內(nèi)。DNS 查找通常有 8 個步驟。緩存 DNS 信息時,將從 DNS 查找過程中跳過一些步驟,從而使該過程更快。以下示例概述了不緩存任何內(nèi)容時的所有 8 個步驟。
用戶在 Web 瀏覽器中鍵入 “example.com”,查詢傳輸?shù)?Internet 中,并被 DNS 遞歸解析器接收。
接著,解析器查詢 DNS 根域名服務(wù)器(.)。
然后,根服務(wù)器使用存儲其域信息的頂級域(TLD)DNS 服務(wù)器(例如 .com 或 .net)的地址響應(yīng)該解析器。在搜索 example.com 時,我們的請求指向 .com TLD。
然后,解析器向 .com TLD 發(fā)出請求。
TLD 服務(wù)器隨后使用該域的域名服務(wù)器 example.com 的 IP 地址進(jìn)行響應(yīng)。
最后,遞歸解析器將查詢發(fā)送到域的域名服務(wù)器。
example.com 的 IP 地址而后從域名服務(wù)器返回解析器。
然后 DNS 解析器使用最初請求的域的 IP 地址響應(yīng) Web 瀏覽器。
DNS 查找的這 8 個步驟返回 example.com 的 IP 地址后,瀏覽器便能發(fā)出對該網(wǎng)頁的請求:
瀏覽器向該 IP 地址發(fā)出 HTTP 請求。
位于該 IP 的服務(wù)器返回將在瀏覽器中呈現(xiàn)的網(wǎng)頁(第 10 步)。
什么是 DNS 解析器?
DNS 解析器是 DNS 查找的第一站,其負(fù)責(zé)與發(fā)出初始請求的客戶端打交道。解析器啟動查詢序列,最終使 URL 轉(zhuǎn)換為必要的 IP 地址。
注意:典型的未緩存 DNS 查找將涉及遞歸查詢和迭代查詢。
務(wù)必區(qū)分遞歸 DNS 查詢和遞歸 DNS 解析器。該查詢是指向需要解析該查詢的 DNS 解析器發(fā)出的請求。DNS 遞歸解析器是一種計算機(jī),其接受遞歸查詢并通過發(fā)出必要的請求來處理響應(yīng)。
DNS 查詢有哪些類型?
典型 DNS 查找中會出現(xiàn)三種類型的查詢。通過組合使用這些查詢,優(yōu)化的 DNS 解析過程可縮短傳輸距離。在理想情況下,可以使用緩存的記錄數(shù)據(jù),從而使 DNS 域名服務(wù)器能夠返回非遞歸查詢。
3 種 DNS 查詢類型:
遞歸查詢 - 在遞歸查詢中,DNS 客戶端要求 DNS 服務(wù)器(一般為 DNS 遞歸解析器)將使用所請求的資源記錄響應(yīng)客戶端,或者如果解析器無法找到該記錄,則返回錯誤消息。
迭代查詢 - 在這種情況下,DNS 客戶端將允許 DNS 服務(wù)器返回其能夠給出的最佳應(yīng)答。如果所查詢的 DNS 服務(wù)器與查詢名稱不匹配,則其將返回對較低級別域名空間具有權(quán)威性的 DNS 服務(wù)器的引用。然后,DNS 客戶端將對引用地址進(jìn)行查詢。此過程繼續(xù)使用查詢鏈中的其他 DNS 服務(wù)器,直至發(fā)生錯誤或超時為止。
非遞歸查詢 - 當(dāng) DNS 解析器客戶端查詢 DNS 服務(wù)器以獲取其有權(quán)訪問的記錄時通常會進(jìn)行此查詢,因?yàn)槠鋵υ撚涗浘哂袡?quán)威性,或者該記錄存在于其緩存內(nèi)。DNS 服務(wù)器通常會緩存 DNS 記錄,以防止更多帶寬消耗和上游服務(wù)器上的負(fù)載。
什么是 DNS 高速緩存?DNS 高速緩存發(fā)生在哪里?
緩存的目的是將數(shù)據(jù)臨時存儲在某個位置,從而提高數(shù)據(jù)請求的性能和可靠性。DNS 高速緩存涉及將數(shù)據(jù)存儲在更靠近請求客戶端的位置,以便能夠更早地解析 DNS 查詢,并且能夠避免在 DNS 查找鏈中進(jìn)一步向下的額外查詢,從而縮短加載時間并減少帶寬/CPU 消耗。DNS 數(shù)據(jù)可緩存到各種不同的位置上,每個位置均將存儲 DNS 記錄并保存由生存時間(TTL)決定的一段時間。
瀏覽器 DNS 緩存
現(xiàn)代 Web 瀏覽器設(shè)計為默認(rèn)將 DNS 記錄緩存一段時間。目的很明顯;越靠近 Web 瀏覽器進(jìn)行 DNS 緩存,為檢查緩存并向 IP 地址發(fā)出正確請求而必須采取的處理步驟就越少。發(fā)出對 DNS 記錄的請求時,瀏覽器緩存是針對所請求的記錄而檢查的第一個位置。
在 Chrome 瀏覽器中,您可以轉(zhuǎn)到 chrome://net-internals/#dns 查看 DNS 緩存的狀態(tài)。
操作系統(tǒng)(OS)級 DNS 緩存
操作系統(tǒng)級 DNS 解析器是 DNS 查詢離開您計算機(jī)前的第二站,也是本地最后一站。操作系統(tǒng)內(nèi)旨在處理此查詢的過程通常稱為“存根解析器”或 DNS 客戶端。當(dāng)存根解析器獲取來自某個應(yīng)用程序的請求時,其首先檢查自己的緩存,以便查看是否有此記錄。如果沒有,則將本地網(wǎng)絡(luò)外部的 DNS 查詢(設(shè)置了遞歸標(biāo)記)發(fā)送到 Internet 服務(wù)提供商(ISP)內(nèi)部的 DNS 遞歸解析器。
與先前所有步驟一樣,當(dāng) ISP 內(nèi)的遞歸解析器收到 DNS 查詢時,其還將查看所請求的主機(jī)到 IP 地址轉(zhuǎn)換是否已經(jīng)存儲在其本地持久性層中。
根據(jù)其緩存中具有的記錄類型,遞歸解析器還具有其他功能:
如果解析器沒有 A 記錄,但確實(shí)有針對權(quán)威性域名服務(wù)器的 NS 記錄,則其將直接查詢這些域名服務(wù)器,從而繞過 DNS 查詢中的幾個步驟。此快捷方式可防止從根和 .com 域名服務(wù)器(在我們對 example.com 的搜索中)進(jìn)行查找,并且有助于更快地解析 DNS 查詢。
如果解析器沒有 NS 記錄,它會向 TLD 服務(wù)器(本例中為 .com)發(fā)送查詢,從而跳過根服務(wù)器。
萬一解析器沒有指向 TLD 服務(wù)器的記錄,其將查詢根服務(wù)器。這種情況通常在清除了 DNS 高速緩存后發(fā)生。