DNS全稱為(Domain Name System),又名域名服務器,作用是把IP地址和網(wǎng)址名稱互換,比如說你登陸新浪要輸入新浪網(wǎng)址www.sina.com,而不是輸135.165.12.37,因為IP地址太麻煩還不好記,你輸入www.sina.com然后通過DNS解析就是135.165.12.37,網(wǎng)址比IP地址直觀而且好記,DNS就起到網(wǎng)址解析的作用。?1、域名 DNS為什么不叫“名字”而叫“域名”呢?這是因為這種命名系統(tǒng)中使用了許多的“域(domain)”,因此就出現(xiàn)了“域名”這個名詞。IP地址是由32位的二進制數(shù)字組成的。用戶與網(wǎng)上某臺主機通信時,很難記住長達32位的二進制主機地址,大家愿意使用比較容易記憶的主機名字。但是電腦在處理IP數(shù)據(jù)報時,不使用域名而是使用IP地址,因為IP地址長度固定,而域名的長度不固定,機器處理起來比較困難。網(wǎng)絡太大了,只使用一個域名服務器是不可行的,1983開始采用層次樹狀結構的命名方法,并使用分布式的域名系統(tǒng)DNS,采用客戶服務器方式,DNS使大多數(shù)名字都在本地解析(resolve),僅有少量解析需要在網(wǎng)上通信,由于DNS是分布式系統(tǒng),即使單點故障,也不會妨礙整個DNS系統(tǒng)的正常運行,所以效率很高。 域名到IP地址的解析是由分布在網(wǎng)絡的許多域名服務器共同完成的,人們把運行域名服務器程序的電腦稱為域名服務器,域名到IP地址的解析過程的過程如下:當某個應用需要把主機名解析為IP地址時,該應用進程就調(diào)用解析程序,并稱為DNS的一個客戶,把待解析的域名放在DNS請求報文中,以UDP用戶數(shù)據(jù)報方式發(fā)給本地域名服務器。本地域名服務器在查找域名后,把對應的IP地址放在回答報文中返回。應用程序獲得目的主機的IP地址后即可進行通信,若本地域名服務器不能回答該請求,則此域名服務器就暫時稱為DNS的另一個客戶,并向其他域名服務器發(fā)出查詢請求。這種過程直至找到能夠回答該請求的域名服務器為止。?2、域名結構 因網(wǎng)絡的用戶數(shù)量較多,命名時采用的是層次樹狀結構的命名方法。任何一個連接在網(wǎng)絡的主機或路由器,都有一個唯一的層次結構的名字,即域名(domain name)?!坝颉?domain)是名字空間中一個可被管理的劃分,DNS規(guī)定域名中的標號都有英文和數(shù)字組成,每一個標號不超過63個字符(為了記憶方便,一般不會超過12個字符),也不區(qū)分大小寫字母。標號中除連字符(-)外不能使用其他的標點符號。級別最低的域名寫在最左邊,而級別最高的字符寫在最右邊。由多個標號組成的完整域名總共不超過255個字符。DNS既不規(guī)定一個域名需要包含多少個下級域名,也不規(guī)定每一級域名代表什么意思。各級域名由其上一級的域名管理機構管理,而最高的頂級域名則由ICANN進行管理。用這種方法可使每一個域名在整個互聯(lián)網(wǎng)范圍內(nèi)是唯一的,并且也容易設計出一種查找域名的機制。域名只是邏輯概念,并不代表計算機所在的物理地點?,F(xiàn)在頂級域名TLD(Top Level Domain)已有265個,分為三大類: (1)國家頂級域名:cn代表中國,us代表美國,uk代表英國等等。國家域名又常記為ccTLD(cc表示國家代碼contry-code)。 (2)通用頂級域名:最常見的通用頂級域名有7個,即com(公司企業(yè)),net(網(wǎng)絡服務機構),org(非營利組織),int(國際組織),gov(美國的政府部門),mil(美國的軍事部門)。 (3)基礎結構域名:這種頂級域名只有一個,即arpa用于反向域名解析,因此稱為反向域名。 ?3、域名服務器 DNS采用的是樹狀結構,每一個節(jié)點都采用一個域名服務器,這樣會使得域名服務器的數(shù)量太多,使域名服務器系統(tǒng)的運行效率降低,所以在DNS中采用劃分區(qū)的方法來解決,一個服務器所負責管轄(或有權限)的范圍叫做區(qū)(zone)。各單位根據(jù)具體情況來劃分自己管轄范圍的區(qū),在一個區(qū)中的所有節(jié)點必須是能夠連通的,每一個區(qū)設置相應的權限域名服務器,用來保存該區(qū)中的所有主機到域名IP地址的映射。DNS服務器的管轄范圍不是以“域”為單位,而是以“區(qū)”為單位。區(qū)是DNS服務器實際管理單位。當某個DNS服務器不能進行域名到IP地址的轉換時,它就會設法找網(wǎng)上別的域名服務器進行解析,網(wǎng)上的DNS服務器也是按照層次安排的,每一個域名服務器只對域名體系中的一部分進行管轄,根據(jù)域名服務器所起的作用,可以把域名服務器劃分為下面四種不同的類型: 3.1、根域名服務器:最高層次的域名服務器,也是最重要的域名服務器。所有的根域名服務器都知道所有的頂級域名服務器的域名和IP地址。不管是哪一個本地域名服務器,要對網(wǎng)上任何一個域名進行解析,只要自己無法解析,就首先求助根域名服務器。所以根域名服務器是最重要的域名服務器。假定所有的根域名服務器都癱瘓了,那么整個DNS系統(tǒng)就無法工作。在很多情況下,根域名服務器并不直接把待查詢的域名直接解析出IP地址,而是告訴本地域名服務器下一步應當找哪一個頂級域名服務器進行查詢。 3.2、頂級域名服務器:負責管理在該頂級域名服務器注冊的二級域名。 3.3、權限域名服務器:負責一個“區(qū)”的域名服務器。 3.4、本地域名服務器:本地服務器不屬于域名服務器的層次結構,但是它對域名系統(tǒng)非常重要。當一個主機發(fā)出DNS查詢請求時,這個查詢請求報文就發(fā)送給本地域名服務器。 ?4、域名的解析過程 4.1、主機向本地域名服務器的查詢一般都是采用遞歸查詢。遞歸查詢就是如果主機所詢問的本地域名服務器不知道被查詢的域名的IP地址,那么本地域名服務器就以DNS客戶的身份,向其它根域名服務器繼續(xù)發(fā)出查詢請求報文(即替主機繼續(xù)查詢),而不是讓主機自己進行下一步查詢。因此遞歸查詢返回的查詢結果或者是所要查詢的IP地址,或者是報錯,表示無法查詢到所需的IP地址。 4.2、本地域名服務器向根域名服務器的查詢的迭代查詢。迭代查詢就是當根域名服務器收到本地域名服務器發(fā)出的迭代查詢請求報文時,要么給出所要查詢的IP地址,要么告訴本地服務器你下一步應當向哪一個域名服務器進行查詢。然后讓本地服務器進行后續(xù)的查詢。根域名服務器通常是把自己知道的頂級域名服務器的IP地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求后,要么給出所要查詢的IP地址,要么告訴本地服務器下一步應當向哪一個權限域名服務器進行查詢。最后,知道了所要解析的IP地址或報錯,然后把這個結果返回給發(fā)起查詢的主機。 舉例說明:域名a主機打算發(fā)送郵件給b,需要哪幾步呢! 1、主機a先向本地服務器進行遞歸查詢。 2、本地服務器采用迭代查詢,它先向一個根域名服務器查詢。 3、根域名服務器告訴本地服務器,下一次應查詢的頂級域名服務器的IP地址。 4、本地域名服務器向頂級域名服務器進行查詢。 5、頂級域名服務器告訴本地域名服務器,下一步應查詢的權限服務器的IP地址。 6、本地域名服務器向權限域名服務器進行查詢。 7、權限域名服務器告訴本地域名服務器,所查詢的主機的IP地址。 8、本地域名服務器最后把查詢結果告訴a。 整個查詢過程共用到了8個UDP報文,為了提高DNS查詢效率,并減輕服務器的負荷和減少網(wǎng)上的DNS查詢報文數(shù)量,在域名服務器中廣泛使用了高速緩存,用來存放最近查詢過的域名以及從何處獲得域名映射信息的記錄。 如在上面的查詢過程中,如果在a主機上不久前已經(jīng)有用戶查詢過b的IP地址,那么本地域名服務器就不必向根域名服務器重新查詢b的IP地址,而是直接把告訴緩存中存放的上次查詢結果告訴用戶。 由于名字到地址的綁定并不經(jīng)常改變,為保持告訴緩存中的內(nèi)容正確,域名服務器應為每項內(nèi)容設置計時器并處理超過合理時間的項(例如每個項目兩天)。當域名服務器已從緩存中刪去某項信息后又被請求查詢該項信息,就必須重新到授權管理該項的域名服務器綁定信息。當權限服務器回答一個查詢請求時,在響應中都指明綁定有效存在的時間值。增加此時間值可減少網(wǎng)絡開銷,而減少此時間值可提高域名解析的正確性。 不僅在本地域名服務器中需要高速緩存,在主機中也需要。許多主機在啟動時從本地服務器下載名字和地址的全部數(shù)據(jù)庫,維護存放自己最近使用的域名的高速緩存,并且只在從緩存中找不到名字時才使用域名服務器。維護本地域名服務器數(shù)據(jù)庫的主機應當定期地檢查域名服務器以獲取新的映射信息,而且主機必須從緩存中刪除無效的項。由于域名改動并不頻繁,不需要花費什么精力就能確保數(shù)據(jù)的一致性。? |
|