6.2 詳解DNS域名解析系統(域名、域名服務器[根、頂級、授權/權限、本地]、域名解析過程[遞歸與迭代])


1.DNS系統

  • 域名系統(Domain Name System, DNS)是因特網使用的命名系統,用來把便於人們記憶的具有特定含義的主機名(如www.BitHachi.com)轉換爲便於機器處理的IP地址
  • 相對於IP地址,人們更喜歡使用具有特定含義的字符串來標識因特網上的計算機。
  • DNS系統採用客戶/服務器模型,其協議運行在UDP之上,使用53號端口。
  • 從概念上可將DNS分爲3部分:層次域名空間、域名服務器和解析器
    在這裏插入圖片描述
  • 某臺主機訪問網站www.bithachi.cn網站爲例,DNS的大致流程
    在這裏插入圖片描述

2.域名

  • 因特網採用層次樹狀結構的命名方法。採用這種命名方法,任何一個連接到因特網的主機或路由器,都有一個唯一的層次結構名稱,即域名(Domain Name)
  • 域(Domain)是名字空間中一個可被管理的劃分。
  • 域還可以劃分爲子域,而子域還可以繼續劃分爲子域的子域,這樣就形成
    了頂級域、二級域、三級域等。

在域名系統中,每個域分別由不同的組織進行管理。每個組織都可以將它的域再分成一定數目的子域,並將這些子域委託給其他組織去管理。

  • 例如,管理CN域的中國將EDU.CN子域授權給中國教育和科研計算機網(CERNET)來管理。
  • 比如我的域名bithachi.cn是一個二級域名,我可以任意分配三級域名,比如1001.bithachi.cn和1002.bithachi.cn,這兩個網址是可以訪問的,小項目。

域名空間的樹狀結構:
在這裏插入圖片描述
每個域名都由標號序列組.成,而各標號之間用點(“.”)隔開。

在這裏插入圖片描述

關於域名中的標號有以下幾點需要注意:

  • 1)標號中的英文不區分大小寫。.
  • 2)標號中除連字符(-) 外不能使用其他的標點符號。
  • 3)每個標號不超過63個字符,多標號組成的完整域名最長不超過255個字符。
  • 4)級別最低的域名寫在最左邊,級別最高的頂級域名寫在最右邊。

頂級域名(Top Level Domain, TLD)分爲如下三大類:

  • 1)國家頂級域名(nTLD)。國家和某些地區的域名,如“.cn”表示中國,“.us”表示美國,.uk”表示英國。
  • 2)通用頂級域名(gTLD)。 常見的有“.com” (公司)、“.net" (網絡服務機構)、“.org”(非營利性組織)和“.gov" (國家或政府部門)等。
  • 3)基礎結構域名。這種頂級域名只有一個,即arpa,用於反向域名解析,因此又稱反向域名。反向域名解析與通常的正向域名解析相反,提供IP地址到域名的對應,反向域名格式如:X.X.X.in-addr.arpa。很多網絡服務提供商要求訪問的IP地址具有反向域名解析的結果,否則不提供服務。

國家頂級域名下注冊的二級域名均由該國家自行確定。

3.域名服務器

  • 因特網的域名系統被設計成一個聯機分佈式的數據庫系統,並採用客戶/服務器模型

  • 域名到IP地址的解析是由運行在域名服務器上的程序完成的,一個服務器所負責管轄的(或有權限的)範圍稱爲區(不以“域”爲單位),各單位根據具體情況來劃分自己管轄範圍的區,但在一個區中的所有結點必須是能夠連通的,每個區設置相應的權限域名服務器,用來保存該區中的所有主機的域名到IP地址的映射。

  • 每個域名服務器不但能夠進行一些域名到IP地址的解析,而且還必須具有連向其他域名服務器的信息。當自己不能進行域名到IP地址的轉換時,能夠知道到什麼地方去找其他域名服務器。

  • DNS使用了大量的域名服務器,它們以層次方式組織。沒有一臺域名服務器具有因特網上所有主機的映射,相反,該映射分佈在所有的DNS上。

  • 採用分佈式設計的DNS,是一個在因特網上實現分佈式數據庫的精彩範例。主要有4種類型的域名服務器。

在這裏插入圖片描述

(1)根域名服務器

  • 根域名服務器最高層次的域名服務器,所有的根域名服務器都知道所有頂級域名服務器的IP地址
  • 根域名服務器也是最重要的域名服務器,不管是哪個本地域名服務器,若要對因特網上任何一個域名進行解析,只要自己無法解析,就首先要求助於根域名服務器
  • 因特網上有13個根域名服務器,儘管我們將這13個根域名服務器中的每個都視爲單個服務器,但每個“服務器”實際上是冗餘服務器的集羣,以提供安全性和可靠性。
  • 需要注意的是,根域名服務器用來管轄頂級域(如.com), 通常它並不直接把待查詢的域名直接轉換成IP地址,而是告訴本地域名服務器下一步應當找哪個頂級域名服務器進行查詢。

(2)頂級域名服務器

  • 這些域名服務器負責管理在該頂級域名服務器註冊的所有二級域名
  • 收到DNS查詢請求時,就給出相應的回答(可能是最後的結果,也可能是下一步應當查找的域名服務器的IP地址)。

(3)授權域名服務器(權限域名服務器)

  • 每臺主機都必須在授權域名服務器處登記。爲了更加可靠地工作,一臺主機最好至少有兩個授權域名服務器。
  • 實際上,許多域名服務器同時充當本地域名服務器授權域名服務器
  • 授權域名服務器總能將其管轄的主機名轉換爲該主機的IP地址

(4)本地域名服務器

  • 本地域名服務器對域名系統非常重要。
  • 每個因特網服務提供者(ISP), 或一所大學,甚至一所大學中的各個系,都可以擁有一個本地域名服務器。
  • 當一臺主機發出DNS查詢請求時,這個查詢請求報文就發送給該主機的本地域名服務器
  • 事實上,我們在Windows系統中配置“本地連接”時,就需要填寫DNS地址,這個地址就是本地DNS (域名服務器)的地址

4.域名解析過程

  • 域名解析是指把域名映射成爲IP地址或把IP地址映射成域名的過程。前者稱爲正向解析,後者稱爲反向解析。
  • 當客戶端需要域名解析時,通過本機的DNS客戶端構造一個DNS請求報文,以UDP數據報方式發往本地域名服務器
  • 域名解析有兩種方式:遞歸查詢遞歸與迭代相結合的查詢。

(1)遞歸查詢方式

  • 遞歸查詢的過程如下圖所示, 由於該方法給根域名服務造成的負載過大,所以在實際中幾乎不使用。
    在這裏插入圖片描述

(2) 常用遞歸與迭代相結合的查詢方式

常用遞歸與迭代相結合的查詢方式如下圖所示,該方式分爲兩個部分。

在這裏插入圖片描述
(1)主機本地域名服務器的查詢採用的是遞歸查詢

  • 也就是說,如果本地主機所詢問的本地域名服務器不知道被查詢域名的IP 地址,那麼本地域名服務器就以DNS客戶的身份,向根域名服務器繼續發出查詢請求報文(即替該主機繼續查詢),而不是讓該主機自己進行下一步的查詢。
  • 在這種情況下,本地域名服務器只需向根域名服務器查詢一次,後面的幾次查詢都是遞歸地在其他幾個域名服務器之間進行的[見圖6.6(a)中的步驟③~⑥]。
  • 在步驟⑦中,本地域名服務器根域名服務器得到了所需的IP地址,最後在步驟⑧中,本地域名服務器把查詢結果告訴主機m.xyz.com.

(2)本地域名服務器根域名服務器的查詢採用迭代查詢

  • 根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地域名服務器:“你下一步應當向哪個頂級域名服務器進行查詢”。
  • 然後讓本地域名服務器向這個頂級域名服務器進行後續的查詢,如圖6.6(b)所示。
  • 同樣,頂級域名服務器收到查詢報文後,要麼給出所要查詢的IP地址,要麼告訴本地域名服務器下一步應向哪個·權限域名服務器·查詢。
  • 最後,知道所要解析的域名的IP地址後,把這個結果返回給發起查詢的主機

下面舉例說明域名解析的過程:
假定某客戶機想獲知域名爲y.abc.com主機的IP地址,域名解析的過程(共使用8個UDP報文)如下:

  • 客戶機向其本地域名服務器發出DNS請求報文
  • 本地域名服務器收到請求後,查詢本地緩存,若沒有該記錄,則以DNS客戶的身份向根域名服務器發出解析請求。
  • 根域名服務器收到請求後,判斷該域名屬於.com域,將對應的頂級域名服務器dns.com的IP地址返回給本地域名服務器
  • 本地域名服務器頂級域名服務器dns.com發出解析請求報文
  • 頂級域名服務器dns.com收到請求後,判斷該域名屬於abc.com域,因此將對應的授權域名服務器dns.abc.com的IP地址返回給本地域名服務器
  • 本地域名服務器授權域名服務器dns.abc.com發起解析請求報文
  • 授權域名服務器dns.abc.com收到請求後,將查詢結果返回給本地域名服務器
  • 本地域名服務器將查詢結果保存到本地緩存,同時返回給客戶機

在這裏插入圖片描述

  • 爲了提高DNS的查詢效率,並減少因特網上的DNS查詢報文數量,在域名服務器中廣泛地使用了高速緩存
  • 當一個DNS服務器接收到DNS查詢結果時,它能將該DNS信息緩存在高速
    緩存中。這樣,當另一個相同的域名查詢到達該DNS服務器時,該服務器就能夠直接提供所要求的IP地址,而不需要再去向其他DNS服務器詢問。
  • 因爲主機名和IP地址之間的映射不是永久的,所以DNS服務器將在一段時間後丟棄高速緩存中的信息
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章