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