五、數據中心核心技術之網絡技術(DNS技術)

一、域名系統

1、域名系統概述

        域名系統DNS(Domain Name System)是因特網使用的命名系統,用來把便於人們使用的機器名字轉換成爲IP地址。域名系統其實就是名字系統。爲什麼不叫“名字”而叫“域名”呢?這是因爲在這種因特網的命名系統中使用了許多的“域(domain)”,因此就出現了“域名”這個名詞。“域名系統”明確地指明這種系統是應用在因特網中。

        我們都知道,IP地址是由32位的二進制數字組成的。用戶與因特網上某臺主機通信時,顯然不願意使用很難記憶的長達32位的二進制主機地址。即使是點分十進制IP地址也並不太容易記憶。相反,大家願意使用比較容易記憶的主機名字。但是,機器在處理IP數據報時,並不是使用域名而是使用IP地址。這是因爲IP地址長度固定,而域名的長度不固定,機器處理起來比較困難。

        因爲因特網規模很大,所以整個因特網只使用一個域名服務器是不可行的。因此,早在1983年因特網開始採用層次樹狀結構的命名方法,並使用分佈式的域名系統DNS。並採用客戶服務器方式。DNS使大多數名字都在本地解析(resolve),僅有少量解析需要在因特網上通信,因此DNS系統的效率很高。由於DNS是分佈式系統,即使單個計算機除了故障,也不會妨礙整個DNS系統的正常運行。

        域名到IP地址的解析是由分佈在因特網上的許多域名服務器程序共同完成的。域名服務器程序在專設的結點上運行,而人們也常把運行域名服務器程序的機器稱爲域名服務器。

        域名到IP地址的解析過程的要點如下:當某一個應用需要把主機名解析爲IP地址時,該應用進程就調用解析程序,並稱爲DNS的一個客戶,把待解析的域名放在DNS請求報文中,以UDP用戶數據報方式發給本地域名服務器。本地域名服務器在查找域名後,把對應的IP地址放在回答報文中返回。應用程序獲得目的主機的IP地址後即可進行通信。

        若本地域名服務器不能回答該請求,則此域名服務器就暫時稱爲DNS的另一個客戶,並向其他域名服務器發出查詢請求。這種過程直至找到能夠回答該請求的域名服務器爲止。此過程在後面作進一步討論。


2、因特網的域名結構

        由於因特網的用戶數量較多,所以因特網在命名時採用的是層次樹狀結構的命名方法。任何一個連接在因特網上的主機或路由器,都有一個唯一的層次結構的名字,即域名(domain name)。這裏,“域”(domain)是名字空間中一個可被管理的劃分。

        從語法上講,每一個域名都是有標號(label)序列組成,而各標號之間用點(小數點)隔開。

        如下例子所示:

        

        這是中央電視臺用於手法電子郵件的計算機的域名,它由三個標號組成,其中標號com是頂級域名,標號cctv是二級域名,標號mail是三級域名。

        DNS規定,域名中的標號都有英文和數字組成,每一個標號不超過63個字符(爲了記憶方便,一般不會超過12個字符),也不區分大小寫字母。標號中除連字符(-)外不能使用其他的標點符號。級別最低的域名寫在最左邊,而級別最高的字符寫在最右邊。由多個標號組成的完整域名總共不超過255個字符。DNS既不規定一個域名需要包含多少個下級域名,也不規定每一級域名代表什麼意思。各級域名由其上一級的域名管理機構管理,而最高的頂級域名則由ICANN進行管理。用這種方法可使每一個域名在整個互聯網範圍內是唯一的,並且也容易設計出一種查找域名的機制。

        域名只是邏輯概念,並不代表計算機所在的物理地點。據2006年12月統計,現在頂級域名TLD(Top Level Domain)已有265個,分爲三大類:

        (1)國家頂級域名nTLD:採用ISO3166的規定。如:cn代表中國,us代表美國,uk代表英國,等等。國家域名又常記爲ccTLD(cc表示國家代碼contry-code)。

        (2)通用頂級域名gTLD:最常見的通用頂級域名有7個,即:com(公司企業),net(網絡服務機構),org(非營利組織),int(國際組織),gov(美國的政府部門),mil(美國的軍事部門)。

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

                             


3、域名服務器

        如果採用上述的樹狀結構,每一個節點都採用一個域名服務器,這樣會使得域名服務器的數量太多,使域名服務器系統的運行效率降低。所以在DNS中,採用劃分區的方法來解決。

        一個服務器所負責管轄(或有權限)的範圍叫做區(zone)。各單位根據具體情況來劃分自己管轄範圍的區。但在一個區中的所有節點必須是能夠連通的。每一個區設置相應的權限域名服務器,用來保存該區中的所有主機到域名IP地址的映射。總之,DNS服務器的管轄範圍不是以“域”爲單位,而是以“區”爲單位。區是DNS服務器實際管轄的範圍。區 <= 域。

        下圖是區的不同劃分方法的舉例。假定abc公司有下屬部門x和y,部門x下面有分三個分佈們u,v,w,而y下面還有下屬部門t。圖a表示abc公司只設一個區abc.com。這是,區abc.com和域abc.com指的是同一件事。但圖b表示abc公司劃分爲兩個區:abc.com和y.abc.com。這兩個區都隸屬於域abc.com,都各設置了相應的權限域名服務器。不難看出,區是域的子集。

                           

        下圖是以上圖b中abc公司劃分的兩個區爲例,給出了DNS域名服務器樹狀結構圖。這種DNS域名服務器樹狀結構圖可以更準確地反映出DNS的分佈式結構。圖中的每一個域名服務器都能夠部分域名到IP地址的解析。當某個DNS服務器不能進行域名到IP地址的轉換時,它就會設法找因特網上別的域名服務器進行解析。

        從下圖可以看出,因特網上的DNS服務器也是按照層次安排的。每一個域名服務器只對域名體系中的一部分進行管轄。根據域名服務器所起的作用,可以把域名服務器劃分爲下面四種不同的類型。


根域名服務器:最高層次的域名服務器,也是最重要的域名服務器。所有的根域名服務器都知道所有的頂級域名服務器的域名和IP地址。不管是哪一個本地域名服務器,若要對因特網上任何一個域名進行解析,只要自己無法解析,就首先求助根域名服務器。所以根域名服務器是最重要的域名服務器。假定所有的根域名服務器都癱瘓了,那麼整個DNS系統就無法工作。需要注意的是,在很多情況下,根域名服務器並不直接把待查詢的域名直接解析出IP地址,而是告訴本地域名服務器下一步應當找哪一個頂級域名服務器進行查詢。


頂級域名服務器:負責管理在該頂級域名服務器註冊的二級域名。


權限域名服務器:負責一個“區”的域名服務器。


本地域名服務器:本地服務器不屬於下圖的域名服務器的層次結構,但是它對域名系統非常重要。當一個主機發出DNS查詢請求時,這個查詢請求報文就發送給本地域名服務器。

                       

4、域名的解析過程

注意:

        一、主機向本地域名服務器的查詢一般都是採用遞歸查詢。所謂遞歸查詢就是:如果主機所詢問的本地域名服務器不知道被查詢的域名的IP地址,那麼本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續發出查詢請求報文(即替主機繼續查詢),而不是讓主機自己進行下一步查詢。因此,遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。

       二、本地域名服務器向根域名服務器的查詢的迭代查詢。迭代查詢的特點:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要麼給出所要查詢的IP地址,要麼告訴本地服務器:“你下一步應當向哪一個域名服務器進行查詢”。然後讓本地服務器進行後續的查詢。根域名服務器通常是把自己知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求後,要麼給出所要查詢的IP地址,要麼告訴本地服務器下一步應當向哪一個權限域名服務器進行查詢。最後,知道了所要解析的IP地址或報錯,然後把這個結果返回給發起查詢的主機。

        下圖給出了這兩種查詢的差別

                

        下面舉一個例子演示整個查詢過程:

        假定域名爲m.xyz.com的主機想知道另一個主機y.abc.com的IP地址。例如,主機m.xyz.com打算髮送郵件給y.abc.com。這時就必須知道主機y.abc.com的IP地址。下面是上圖a的幾個查詢步驟:

        1、主機m.abc.com先向本地服務器dns.xyz.com進行遞歸查詢。

        2、本地服務器採用迭代查詢。它先向一個根域名服務器查詢。

        3、根域名服務器告訴本地服務器,下一次應查詢的頂級域名服務器dns.com的IP地址。

        4、本地域名服務器向頂級域名服務器dns.com進行查詢。

        5、頂級域名服務器dns.com告訴本地域名服務器,下一步應查詢的權限服務器dns.abc.com的IP地址。

        6、本地域名服務器向權限域名服務器dns.abc.com進行查詢。

        7、權限域名服務器dns.abc.com告訴本地域名服務器,所查詢的主機的IP地址。

        8、本地域名服務器最後把查詢結果告訴m.xyz.com。

        整個查詢過程共用到了8個UDP報文。

        爲了提高DNS查詢效率,並減輕服務器的負荷和減少因特網上的DNS查詢報文數量,在域名服務器中廣泛使用了高速緩存,用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄。

        例如,在上面的查詢過程中,如果在m.xyz.com的主機上不久前已經有用戶查詢過y.abc.com的IP地址,那麼本地域名服務器就不必向根域名服務器重新查詢y.abc.com的IP地址,而是直接把告訴緩存中存放的上次查詢結果(即y.abc.com的IP地址)告訴用戶。

        由於名字到地址的綁定並不經常改變,爲保持告訴緩存中的內容正確,域名服務器應爲每項內容設置計時器並處理超過合理時間的項(例如每個項目兩天)。當域名服務器已從緩存中刪去某項信息後又被請求查詢該項信息,就必須重新到授權管理該項的域名服務器綁定信息。當權限服務器回答一個查詢請求時,在響應中都指明綁定有效存在的時間值。增加此時間值可減少網絡開銷,而減少此時間值可提高域名解析的正確性。

        不僅在本地域名服務器中需要高速緩存,在主機中也需要。許多主機在啓動時從本地服務器下載名字和地址的全部數據庫,維護存放自己最近使用的域名的高速緩存,並且只在從緩存中找不到名字時才使用域名服務器。維護本地域名服務器數據庫的主機應當定期地檢查域名服務器以獲取新的映射信息,而且主機必須從緩存中刪除無效的項。由於域名改動並不頻繁,大多數網點不需花精力就能維護數據庫的一致性。


參考文獻《計算機網絡第5版》--謝希仁

發佈了42 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章