DNS:它是什麼以及它是如何工作的

已發表: 2014-08-14

域名系統或 DNS 是互聯網最重要的基礎之一。 它負責我們連接服務器的能力,而無需記住長而繁瑣的數字字符串。 作為設計人員或開發人員,了解 DNS 是什麼、它如何工作以及如何使用它非常重要。

什麼是 DNS?

Arpanet_logical_map_march_1977

1977 年 3 月,每台連接到互聯網前身 ARPANET 的計算機示意圖

在 1970 年代,聯網的計算機非常少,以至於每個人都可以輕鬆地保留每台其他計算機的手動列表。 在 ARPANET(互聯網的前身)時代,如果購買了一台新計算機並將其添加到網絡中,所有者只需告訴 ARPANET 上的其他所有人,誰會將這台新計算機添加到他們的列表中。 當只有幾十台計算機連接在一起時,這個系統工作得很好,但隨著計算變得更便宜和更容易公開訪問,它很快就退化了。 用今天的術語來說,這類似於在新網站或服務啟動時必須通知全世界。

在 80 年代初期,DNS 旨在通過維護一個權威的域列表以及它們指向哪些計算機來解決這個問題。 但這究竟是如何工作的? 用技術術語來說,DNS 是一個系統,幾乎所有支持網絡的設備都使用它來解析具有關聯 IP 地址的域名。 把它想像成互聯網的電話簿。

當您在網絡瀏覽器中輸入 http://www.getflywheel.com 之類的網址時,您的計算機不會自動知道要去哪裡。 它需要一個 IP 地址才能連接,但您為它提供了一個域名,它只是一串字母。 域使人們更容易記住網站的位置,但它們並不是計算機建立連接所需要的。 相反,您的計算機會聯繫 DNS 服務器並要求它提供該網站的 IP 地址。 DNS 服務器響應並告訴您的計算機“http://www.getflywheel.com 位於 192.241.128.208”。 您的計算機從 DNS 服務器中獲取該 IP 地址並使用它連接到該 IP 地址,從而打開 Flywheel 的網站。

DNS_Rquest

DNS 記錄是如何管理和設置的?

DNS 是通過 DNS 記錄設置的,其中包含域應指向的 IP 地址、子域、電子郵件設置甚至任意文本等信息。 購買域後,所有者會為該域指定權威名稱服務器。 這些名稱服務器控制域的 DNS 記錄,這些記錄被其他 DNS 服務器獲取並在整個 Internet 中傳播。 通常,如果您要設置自己的 DNS 記錄,您會知道您網站的 IP 地址。 例如,Flywheel 將為您提供一個 IP 地址,您可以將 A 名稱記錄指向該地址。

全世界有成千上萬的 DNS 服務器,它們都同步在一起以記錄所有內容的位置。 但是,並非所有 DNS 服務器都是一樣的。

了解 DNS 的工作原理非常棒。 需要付諸實踐嗎? 查看我們很棒的免費電子書,了解最常見的 DNS 記錄以及如何使用它們。

DNS 服務器的結構有點像倒置的樹。 有 13 台服務器或主服務器構成了這棵樹的主幹。 它們是 DNS 的終極主副本。 所有 DNS 數據必須要么來自根服務器,要么來自之前聯繫過根服務器並獲取數據的服務器。 根服務器構成所謂的根區域,或最權威的 DNS 區域。

在根區域之後,還有包含域的子區域。 每個頂級域都有自己的區域記錄,該區域記錄進一步細分為單獨的域,例如http://www.getflywheel.com,稱為二級域。

這有點技術性,所以讓我們從樹類比的角度來看。 根區域形成主幹,每個頂級域,例如 .com 或 .org,都是該主幹的一個分支。 每個網站,例如 getflywheel.com 都是從該分支伸出的一片葉子。 那個小葉子是域所有者擁有 DNS 控制權的區域。 每個分支都是一個單獨的名稱服務器,跟踪源自它的分支和葉子。

因此,當計算機請求 getflywheel.com 時,它首先會聯繫根服務器,該服務器會說:“您正在尋找一個 .com 網站。 去與位於此處的 .com 名稱服務器交談。” 然後,您的計算機沿著鏈向下遞歸到負責 .com 的名稱服務器,並要求它提供更多詳細信息。 您的計算機與服務器聯繫,直到它最終找到域所有者指定的名稱服務器。 然後它會計算出與該網站關聯的 IP 地址並訪問它。 您的計算機沿著分支遍歷服務器樹,直到它最終到達包含最終目標的葉子。

DNS 根層次結構

注意:雖然官方有 13 台根 DNS 服務器,但除兩台外,其他所有服務器都通過一種稱為選的路由技術單獨鏈接並分發到數十台相同的服務器。 Anycast 允許多個節點作為同一個實體存在。 當設備連接到該實體時,它將連接到網絡上最近的可用節點(這與在 CDN 中使用的geocast不同,例如,設備連接到最近的地理服務器)。 Anycast 允許根服務器在世界範圍內成倍增加和分佈,從而平衡負載、加快響應時間並防止單點故障。

每次您想訪問一個網站時,整個服務器聯繫鏈似乎都非常麻煩且費力。 幸運的是,DNS 被大量緩存,這意味著副本經常保存在離您較近的計算機上,從而減輕了根服務器的負載並使您的查詢加載速度更快。 許多 ISP、公司、大學,甚至您自己的計算機都會保留最近 DNS 查詢的緩存。 例如,如果您正在尋找 google.com,那麼您的計算機很可能已經存儲了 IP 地址。 但是,如果您正在尋找一個您從未訪問過的網站,那麼您附近或公司中的其他人可能已經在那裡,並且查詢和信息只是存儲在您的 ISP 的 DNS 服務器中。

如果沒有 DNS,我們每個人都必須記住或寫下我們想要訪問的每個網站和計算機的 IP 地址。 幸運的是,DNS 是一個非常有彈性、可靠和令人印象深刻的工程,它可以跟踪我們所有的網站和我們的通信,所以我們不必這樣做。