1. 程式人生 > >帶你簡單瞭解域名系統DNS

帶你簡單瞭解域名系統DNS

帶你簡單瞭解域名系統DNS

一、域名簡介

1.1.DNS服務的作用

負責解析域名,將域名解析成IP地址。

1.2.域名系統概述

  • 由於32位的IP地址並不容易記憶,人們往往喜歡記憶網站的域名。所以當我們訪問網站時,是通過輸入的域名解析為對應IP地址,對該IP地址進行訪問的。
  • 名字到 IP 地址的解析是由若干個域名伺服器程式完成的。域名伺服器程式在專設的結點上執行,執行該程式的機器稱為域名伺服器。

1.3.因特網的域名結構

  • 因特網採用了層次樹狀結構的命名方法。

  • 任何一個連線在因特網上的主機或路由器,都有一個唯一的層次結構的名字,即域名。
  • 域名的結構由標號序列組成,各標號之間用點隔開:

  • 上圖的各標號:三級域名、二級域名等分別代表不同級別的域名。

1.4.域名只是個邏輯概念

  • 域名只是個邏輯概念,並不代表計算機所在的物理地點。
  • 變長的域名和使用有助記憶的字串,是為了便於人來使用。而 IP 地址是定長的 32 位二進位制數字則非常便於機器進行處理。

1.5.頂級域名 TLD (Top Level Domain)

  • 國家頂級域名 nTLD:如: .cn 表示中國,.us 表示美國,.uk 表示英國,等等。

  • 通用頂級域名 gTLD:最早的頂級域名是:

    .com (公司和企業);

    .net (網路服務機構);

    .org (非贏利性組織);

    .edu (美國專用的教育機構);

    .gov (美國專用的政府部門);

    .mil (美國專用的軍事部門);

    .int (國際組織);

    新增的有:

    .aero (航空運輸企業);

    .biz (公司和企業);

    .cat (加泰隆人的語言和文化團體);

    .coop (合作團體);

    .info (各種情況);

    .jobs (人力資源管理者);

    .mobi (移動產品與服務的使用者和提供者);

    .museum (博物館);

    .name (個人);

    .pro (有證書的專業人員);

    .travel (旅遊業);

  • 基礎結構域名(infrastructure domain):這種頂級域名只有一個,即 arpa,用於反向域名解析,因此又稱為反向域名。

1.6.因特網的域名空間

比如域名:www.cnblogs.com 。該域名由三部分組成:三級域名www;二級域名cnblogs;頂級域名com;每部分之間用點隔開。

需要注意的是:

  • 域名也可以由兩部分組成、四部分組成,域名組成部分數量是不定的;
  • 並非所有的域名都以www開頭,也可以使用其他的三級域名比如:mail.cnblogs.com 。只不過按照習慣通常把www作為域名的開頭。

1.7.關於域名註冊

為了保證域名的唯一性,需要相關機構管理,我們想要申請域名則必須花錢購買。在購買域名時只需要選擇相應的頂級域名和二級域名,若這兩部分組成的域名全球唯一,那麼在此基礎上加上三級域名、四級域名組成的域名也都是全球唯一。

比如購買了域名:cnblogs.com,在此域名基礎上派生出www.cnblogs.com 、mail.cnblogs.com等都是免費的,只要你有伺服器派生出多少個域名都只用繳納cnblogs.com一個域名的費用。並且由於cnblogs.com的全球唯一性,所以其派生出的域名都是全球唯一的。


二、域名伺服器

  • 域名伺服器的作用為,把網站域名解析成對應的IP地址。

  • 一個伺服器所負責管轄的(或有許可權的)範圍叫做區(zone)。
  • 每一個區設定相應的許可權域名伺服器,用來儲存該區中的所有主機的域名到IP地址的對映。

2.1.樹狀結構的 DNS 域名伺服器

域名伺服器有以下四種類型 :

  • 根域名伺服器
  • 頂級域名伺服器
  • 許可權域名伺服器
  • 本地域名伺服器

關係為:

根域名伺服器:

  • 根域名伺服器是最重要的域名伺服器。根域名伺服器並不直接把域名直接轉換成 IP 地址,而是儲存著所有的頂級域名伺服器的域名及其 IP 地址。在使用迭代查詢時,根域名伺服器把下一步應當查詢的頂級域名伺服器的 IP 地址告訴本地域名伺服器。

  • 當本地域名伺服器無法解析特定的域名時,首先求助於根域名伺服器。

    比如某本地域名伺服器負責abc.com區域的域名解析,當本地使用者輸入abc.cn時,該本地域名伺服器無法對其進行解析,於是第一時間求助於根域名伺服器,詢問負責.cn的頂級域名伺服器的IP地址。

  • 在因特網上共有13 個不同 IP 地址的根域名伺服器,它們的名字是用一個英文字母命名,從a 一直到 m(前13 個字母)。

  • 根域名伺服器共有 13 套裝置,它由分佈在世界各地的許多臺作為根域名伺服器的機器組成。目的是為了方便使用者,使世界上大部分 DNS 域名伺服器都能就近找到一個根域名伺服器。

    這些根域名伺服器相應的域名分別是:

    a.rootservers.net;

    b.rootservers.net;

    m.rootservers.net;

頂級域名伺服器(即 TLD 伺服器)

  • 這些域名伺服器負責管理在該頂級域名伺服器註冊的所有二級域名。

    比如頂級域名伺服器.CN負責所有以.CN結尾的域名的解析。

  • 當收到 DNS 查詢請求時,就給出相應的回答(可能是最後的結果,也可能是下一步應當找的域名伺服器的 IP 地址)。

許可權域名伺服器

  • 負責一個區的域名伺服器。

    比如:在頂級域名伺服器.com負責下的許可權域名伺服器abc.com,負責的是所有以abc.com結尾的域名的解析。

  • 當一個許可權域名伺服器還不能給出最後的查詢回答時,就會告訴發出查詢請求的 DNS 客戶,下一步應當找哪一個許可權域名伺服器。

    比如:在許可權域名伺服器abc.com負責下的使用者查詢域名xyz.com,該許可權域名伺服器無法告訴客戶最終結果,而是告訴客戶許可權域名伺服器xyz.com的IP地址。

本地域名伺服器(預設域名伺服器)

  • 本地域名伺服器即在許可權域名伺服器下的負責更小區域的域名伺服器。比如某個大學裡面的域名伺服器,某公司的域名伺服器。
  • 當一個主機發出 DNS 查詢請求時,這個查詢請求報文就傳送給本地域名伺服器。
  • 可以安裝位元組的DNS伺服器(本地域名伺服器)。

2.2.提高域名伺服器的可靠性

  • DNS 域名伺服器都把資料複製到幾個域名伺服器來儲存,其中的一個是主域名伺服器,其他的是輔助域名伺服器。
  • 當主域名伺服器出故障時,輔助域名伺服器可以保證 DNS 的查詢工作不會中斷。
  • 主域名伺服器定期把資料複製到輔助域名伺服器中,而更改資料只能在主域名伺服器中進行。這樣就保證了資料的一致性。

2.3.域名解析過程舉例

如圖:根DNS的IP地址為100,裡面儲存著頂級域名伺服器:com、net、edu、cn等的IP地址;頂級域名伺服器com中儲存著域名www.baidu.com對應的IP地址;頂級域名伺服器net中儲存著www.inhe.net對應的IP地址。

當指定DNS伺服器IP地址為192的使用者輸入www.baidu.com域名時,IP地址為192的本地域名伺服器沒有查詢到域名的資訊,於是求助於IP地址為101的頂級域名伺服器com。經查詢,該頂級域名伺服器(com)正好儲存有該網址對應的IP地址,於是把域名解析出的IP地址告訴本地域名伺服器,本地域名伺服器再告訴使用者。於是使用者得以通過IP地址該網站。

當該使用者輸入www.inhe.net域名時,先在使用者指定的本地域名伺服器中查詢,發現沒有該域名的資訊。於是本地域名伺服器求助於頂級域名伺服器com,com也沒找到域名資訊。於是頂級域名伺服器com求助於根DNS伺服器,根DNS伺服器找到頂級域名伺服器net的IP地址並把它告訴com,於是com通過IP地址102找到頂級域名伺服器net,net找到www.inhe.net對應的IP地址後再告訴頂級域名伺服器com,com再告訴本地域名伺服器,本地域名伺服器再告訴使用者。最後使用者得以通過該網站的IP地址訪問該網站。

可見,頂級域名伺服器com不知道的域名可以求助於根DNS伺服器,根DNS伺服器會告訴它去哪找相應域名,最後總能得到域名解析結果。所以,只要使用者指定了一處DNS伺服器,無論是88.88.88.88還是22.22.22.22,能把全球的域名解析出來。

總結

  • 主機向本地域名伺服器的查詢一般都是採用遞迴查詢。如果主機所詢問的本地域名伺服器不知道被查詢域名的 IP 地址,那麼本地域名伺服器就以 DNS 客戶的身份,向其他根域名伺服器繼續發出查詢請求報文。

    遞迴查詢(較少用):

  • 本地域名伺服器向根域名伺服器的查詢通常是採用迭代查詢。當根域名伺服器收到本地域名伺服器的迭代查詢請求報文時,要麼給出所要查詢的 IP 地址,要麼告訴本地域名伺服器:“你下一步應當向哪一個域名伺服器進行查詢”。然後讓本地域名伺服器進行後續的查詢。

    迭代查詢:

域名伺服器的快取記憶體

  • 每個域名伺服器都維護一個快取記憶體,存放最近用過的名字以及從何處獲得名字對映資訊的記錄。
  • 可大大減輕根域名伺服器的負荷,使因特網上的 DNS 查詢請求和回答報文的數量大為減少。
  • 為保持快取記憶體中的內容正確,域名伺服器應為每項內容設定計時器,並處理超過合理時間的項(例如,每個專案只存放兩天)。

2.4.安裝自己的DNS伺服器

自己的DNS伺服器相當於負責區域更小的本地DNS伺服器。

適用場景

  • 提供內網網站的域名解析服務。

    比如學校內網中可能存在許多的網站,這些網站僅供內部使用,並不在網際網路上開放,域名可能與網際網路中的部分網站衝突。這時可以再內網中安裝一個DNS伺服器,提供內網網站的域名解析服務。

    並且內網的DNS伺服器也知道網際網路中的根域名伺服器地址,只要內網DNS伺服器能夠訪問網際網路,當內網使用者訪問外網時也能提供相應的域名解析服務。

  • 降低到Internet的域名解析流量。

    即使無內部網站,假如校園內網2000人使用,每人訪問百度時都要傳送一個數據包給外網的DNS伺服器進行域名解析,造成的網路流量是不可忽視的,若安裝了內網DNS伺服器只要有一個人訪問百度,傳送了一個數據包給外網的DNS伺服器解析出來的IP地址會在內網DNS伺服器上快取一段時間,該段時間內內網的其餘使用者訪問百度時,內網DNS伺服器都能直接告訴它們快取的IP地址,由此節省了重複域名解析造成的大量網路流量。

  • 存在域環境。

檢視域名地址

可通過以下命令在命令列視窗檢視域名地址:以搜狐網為例

nslookup www.sohu.com

“非權威應答”表示,該域名的解析是藉助外網的其他DNS伺服器的。