DNS 可讓使用者利用網域名稱而不是 IP 位址連接到網站。瞭解 DNS 的工作方式。
閱讀本文後,您將能夠:
複製文章連結
網域名稱系統 (DNS) 是網際網路的電話簿。人們透過 nytimes.com 或 espn.com 之類的網域名稱線上存取資訊。Web 瀏覽器透過網際網路通訊協定 (IP) 位址進行互動。DNS 將網域名稱轉換為 IP 位址,以便瀏覽器能夠載入網際網路資源。
連接到網際網路的每個裝置都有一個唯一 IP 位址,其他電腦可使用該 IP 位址尋找此裝置。DNS 伺服器讓人們無需儲存 192.168.1.1 (IPv4 中) 之類的 IP 位址或更複雜的新版字母數字 IP 位址,例如 2400:cb00:2048:1::c629:d7a2(IPv6 中)。
DNS 解析過程是指將主機名稱(例如 www.example.com)轉換為便於電腦使用的 IP 位址(例如 192.168.1.1)的過程。網際網路上的每個裝置都被分配了一個 IP 位址,必須有該位址才能找到相應的網際網路裝置——就像使用街道地址來尋找特定住所一樣。若使用者想要載入網頁,使用者在 Web 瀏覽器中輸入的內容 (example.com) 與機器方便使用的位址之間必須進行轉譯,才能讓機器找到 example.com 網頁。
為理解 DNS 解析過程,務必瞭解 DNS 查詢必須經過的不同硬體元件。對於 Web 瀏覽器而言,DNS 查詢是「在幕後」發生的,除了初始要求外,不需要從使用者的電腦進行任何交互。
這兩個概念都是指 DNS 基礎架構不可或缺的伺服器(伺服器組),但各自執行不同的角色,並且位於 DNS 查詢管道內的不同位置。可以這樣來考慮二者之間的差異:遞迴解析程式位於 DNS 查詢的開頭,而權威名稱伺服器位於末尾。
遞迴解析程式是回應來自用戶端之遞迴請求的電腦,並花時間追蹤 DNS 記錄。為執行此操作,其發出一系列請求,直到其到達所請求記錄的權威 DNS 名稱伺服器(或者逾時,或者如果未找到記錄,則傳回錯誤)。幸運的是,遞迴 DNS 解析程式並不總是需要發出多個請求才能追蹤回應用戶端所需的記錄;快取是一種資料持久性過程,可透過在 DNS 查閱中更早地提供所請求的資源記錄,協助減少所需的請求數。
簡言之,權威 DNS 伺服器是實際上保留並負責處理 DNS 資源記錄的伺服器。這是位於 DNS 查閱鏈底部的伺服器,其將使用所查詢的資源記錄進行回應,從而最終允許發出請求的 Web 瀏覽器達到存取網站或其他網頁資源所需的 IP 位址。權威名稱伺服器可以透過自己的資料滿足查詢,不需要查詢另一個來源,因為這就是特定 DNS 記錄的事實最終來源。
值得一提的是,在查詢對象為子網域(例如 foo.example.com 或 blog.cloudflare.com)的情況下,將向權威名稱伺服器之後的序列新增一個附加名稱伺服器,其負責儲存該子網域的 CNAME 記錄。
許多 DNS 服務與 Cloudflare 提供的服務之間存在一個關鍵區別。Google DNS、OpenDNS 等不同 DNS 遞迴解析程式以及 Comcast 等提供者均保持 DNS 遞迴解析程式的資料中心安裝。這些解析程式允許透過 DNS 最佳化電腦系統的最佳化叢集快速輕鬆地進行查詢,但它們與 Cloudflare 代管的名稱伺服器截然不同。
Cloudflare 維護網際網路功能不可或缺的基礎結構級名稱伺服器。一個主要範例是 Cloudflare 部分負責代管的 f-根伺服器網路。F 根是每天負責數十億個網際網路請求的根級 DNS 名稱伺服器基礎結構元件之一。我們的 Anycast 網路在處理大量 DNS 流量方面發揮著不可替代的作用,同時不會出現服務中斷。
在大部分的情況下,DNS 與轉譯為適當 IP 位址的網域名稱有關。要瞭解此過程的工作方式,在 DNS 查閱從 Web 瀏覽器經過 DNS 查閱過程然後再返回時,追蹤 DNS 查閱的路徑會有所幫助。現在來看看步驟。
注意:通常會在查詢電腦內部本機快取或在 DNS 基礎架構中遠端快取 DNS 查閱資訊。DNS 查閱通常涉及 8 個步驟。快取 DNS 資訊時,會在 DNS 查閱過程中略過步驟,以加快速度。以下範例概述了沒有快取任何內容時的所有 8 個步驟。
DNS 查閱的這 8 個步驟傳回了 example.com 的 IP 位址後,瀏覽器便能夠發出對該網頁的請求:
DNS 解析程式是 DNS 查閱的第一站,其負責與發出初始請求的用戶端打交道。解析程式會開始進行查詢序列,最終導致 URL 被轉譯為必要的 IP 位址。
注意:典型的未快取 DNS 查閱將涉及遞迴查詢和反覆查詢。
務必區分遞迴 DNS 查詢和遞迴 DNS 解析程式。該查詢是指向需要解析該查詢的 DNS 解析程式發出的請求。DNS 遞迴解析程式是一種電腦,其接受遞迴查詢並透過發出必要的請求來處理回應。
在一般的 DNS 查閱中,會發生三種類型的查詢。藉由使用這些查詢組合,最佳化的 DNS 解析流程可減少傳輸距離。在理想情況下,將可使用快取記錄資料,允許 DNS 名稱伺服器傳回非遞迴查詢。
快取的目的是將資料臨時儲存在某個位置,從而提高資料請求的效能和可靠性。DNS 快取涉及將資料儲存在更靠近請求用戶端的位置,以便能夠更早地解析 DNS 查詢,並且能夠避免在 DNS 查閱鏈中進一步向下的額外查詢,從而縮短載入時間並減少頻寬/CPU 消耗。DNS 資料可快取在各個位置,每個位置均將儲存 DNS 記錄並儲存由存留時間 (TTL) 確定的一段時間。
新式 Web 瀏覽器被設計為預設將 DNS 記錄快取一段時間。目的很明顯;越靠近 Web 瀏覽器進行 DNS 快取,為檢查快取記憶體並向 IP 位址發出正確請求而必須採取的處理步驟就越少。為 DNS 記錄發出請求時,瀏覽器快取是針對請求記錄檢查的第一個位置。
在 Chrome 瀏覽器中,您可以切換到 chrome://net-internals/#dns 檢視 DNS 快取記憶體的狀態。
作業系統層級 DNS 解析程式是 DNS 查詢離開機器之前的本機第二站和最後一站。作業系統內旨在處理此查詢的過程通常稱為「存根解析程式」或 DNS 用戶端。然後存根解析程式會取得來自應用程式的請求,這會先檢查自己的快取,以查看是否有記錄。如果沒有,則其將本機網路外部的 DNS 查詢(設定了遞迴標記)傳送到網際網路服務提供者 (ISP) 內部的 DNS 遞迴解析程式。
與先前所有步驟一樣,當 ISP 內的遞迴解析程式收到 DNS 查詢時,其還將檢視所請求的主機到 IP 位址轉換是否已經儲存在其本機持久性層中。
根據其快取記憶體中具有的記錄類型,遞迴解析程式還具有其他功能:
瞭解 Cloudflare DNS 與其他 DNS 提供者之間的區別。