DNS域名解析
時(shí)間:2023-02-09 04:48:01 | 來(lái)源:建站知識(shí)
時(shí)間:2023-02-09 04:48:01 來(lái)源:建站知識(shí)
一、域名系統(tǒng)
1.域名系統(tǒng)概述
域名系統(tǒng)DNS(Domain Name System)是因特網(wǎng)使用的命名系統(tǒng),用來(lái)把便于人們使用的機(jī)器名字轉(zhuǎn)換成為IP地址。域名系統(tǒng)其實(shí)就是名字系統(tǒng)。為什么不叫“名字”而叫“域名”呢?這是因?yàn)樵谶@種因特網(wǎng)的命名系統(tǒng)中使用了許多的“域(domain)”,因此就出現(xiàn)了“域名”這個(gè)名詞?!坝蛎到y(tǒng)”明確地指明這種系統(tǒng)是應(yīng)用在因特網(wǎng)中。
我們都知道,IP地址是由32位的二進(jìn)制數(shù)字組成的。用戶與因特網(wǎng)上某臺(tái)主機(jī)通信時(shí),顯然不愿意使用很難記憶的長(zhǎng)達(dá)32位的二進(jìn)制主機(jī)地址。即使是點(diǎn)分十進(jìn)制IP地址也并不太容易記憶。相反,大家愿意使用比較容易記憶的主機(jī)名字。
但是,機(jī)器在處理IP數(shù)據(jù)報(bào)時(shí),并不是使用域名而是使用IP地址。這是因?yàn)镮P地址長(zhǎng)度固定,而域名的長(zhǎng)度不固定,機(jī)器處理起來(lái)比較困難。
因?yàn)橐蛱鼐W(wǎng)規(guī)模很大,所以整個(gè)因特網(wǎng)只使用一個(gè)域名服務(wù)器是不可行的。因此,早在1983年因特網(wǎng)開(kāi)始采用層次樹(shù)狀結(jié)構(gòu)的命名方法,并使用分布式的域名系統(tǒng)DNS。并采用客戶服務(wù)器方式。DNS使大多數(shù)名字都在本地解析(resolve),僅有少量解析需要在因特網(wǎng)上通信,因此DNS系統(tǒng)的效率很高。由于DNS是分布式系統(tǒng),即使單個(gè)計(jì)算機(jī)除了故障,也不會(huì)妨礙整個(gè)DNS系統(tǒng)的正常運(yùn)行。
域名到IP地址的解析是由分布在因特網(wǎng)上的許多域名服務(wù)器程序共同完成的。域名服務(wù)器程序在專設(shè)的結(jié)點(diǎn)上運(yùn)行,而人們也常把運(yùn)行域名服務(wù)器程序的機(jī)器稱為域名服務(wù)器。
域名到IP地址的解析過(guò)程的要點(diǎn)如下:
- 當(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)求。
//用一個(gè)圖總結(jié)下就是:
這種過(guò)程直至找到能夠回答該請(qǐng)求的域名服務(wù)器為止。此過(guò)程在后面作進(jìn)一步討論。
2.因特網(wǎng)的域名結(jié)構(gòu)
由于因特網(wǎng)的用戶數(shù)量較多,所以因特網(wǎng)在命名時(shí)采用的是層次樹(shù)狀結(jié)構(gòu)的命名方法。任何一個(gè)連接在因特網(wǎng)上的主機(jī)或路由器,都有一個(gè)唯一的層次結(jié)構(gòu)的名字,即域名(domain name)。這里,“域”(domain)是名字空間中一個(gè)可被管理的劃分。
從語(yǔ)法上講,每一個(gè)域名都是有標(biāo)號(hào)(label)序列組成,而各標(biāo)號(hào)之間用點(diǎn)(小數(shù)點(diǎn))隔開(kāi)。
如下例子所示:
1.這是中央電視臺(tái)用于手法電子郵件的計(jì)算機(jī)的域名,它由三個(gè)標(biāo)號(hào)組成,其中標(biāo)號(hào)com是頂級(jí)域名,標(biāo)號(hào)cctv是二級(jí)域名,標(biāo)號(hào)mail是三級(jí)域名。
DNS規(guī)定,域名中的標(biāo)號(hào)都有英文和數(shù)字組成,
每一個(gè)標(biāo)號(hào)不超過(guò)63個(gè)字符(為了記憶方便,一般不會(huì)超過(guò)12個(gè)字符),也不區(qū)分大小寫(xiě)字母。
級(jí)別最低的域名寫(xiě)在最左邊,而級(jí)別最高的字符寫(xiě)在最右邊。由多個(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ī)制。
編號(hào)類型詳情(1)國(guó)家頂級(jí)域名nTLD采用ISO3166的規(guī)定。如:cn代表中國(guó),us代表美國(guó),uk代表英國(guó),等等。國(guó)家域名又常記為ccTLD(cc表示國(guó)家代碼contry-code)。(2)通用頂級(jí)域名gTLD最常見(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)域名(infrastructure domain)這種頂級(jí)域名只有一個(gè),即arpa,用于反向域名解析,因此稱為反向域名。(2)通用頂級(jí)域名gTLD:最常見(jiàn)的通用頂級(jí)域名有7個(gè),即:com(公司企業(yè)),net(網(wǎng)絡(luò)服務(wù)機(jī)構(gòu)),org(非營(yíng)利組織),int(國(guó)際組織),gov(美國(guó)的政府部門),mil(美國(guó)的軍事部門)。
來(lái)一個(gè)大概圖:
3、域名服務(wù)器
如果采用上述的樹(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í)際管轄的范圍。
區(qū) <= 域。下圖是區(qū)的不同劃分方法的舉例。假定abc公司有下屬部門x和y,部門x下面有分三個(gè)分布們u,v,w,而y下面還有下屬部門t。圖a表示abc公司只設(shè)一個(gè)區(qū)
http://abc.com。這是,區(qū)
http://abc.com和域
http://abc.com指的是同一件事。但圖b表示abc公司劃分為兩個(gè)區(qū):
http://abc.com和
http://y.abc.com。這兩個(gè)區(qū)都隸屬于域
http://abc.com,都各設(shè)置了相應(yīng)的權(quán)限域名服務(wù)器。不難看出,區(qū)是域的子集。
下圖是以上圖b中abc公司劃分的兩個(gè)區(qū)為例,給出了DNS域名服務(wù)器樹(shù)狀結(jié)構(gòu)圖。這種DNS域名服務(wù)器樹(shù)狀結(jié)構(gòu)圖可以更準(zhǔn)確地反映出DNS的分布式結(jié)構(gòu)。圖中的每一個(gè)域名服務(wù)器都能夠部分域名到IP地址的解析。當(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ù)器劃分為下面四種不同的類型。
根域名服務(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)行查詢。
頂級(jí)域名服務(wù)器:負(fù)責(zé)管理在該頂級(jí)域名服務(wù)器注冊(cè)的二級(jí)域名。
權(quán)限域名服務(wù)器:負(fù)責(zé)一個(gè)“區(qū)”的域名服務(wù)器。
本地域名服務(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ù)器。
- 從”根域名服務(wù)器”查到”頂級(jí)域名服務(wù)器”的NS記錄和A記錄(IP地址)
- 從”頂級(jí)域名服務(wù)器”查到”次級(jí)域名服務(wù)器”的NS記錄和A記錄(IP地址)
- 從”次級(jí)域名服務(wù)器”查出”主機(jī)名”的IP地址
4、域名的解析過(guò)程
注意:
一、主機(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地址。
二、本地域名服務(wù)器向根域名服務(wù)器的查詢的迭代查詢。
迭代查詢的特點(diǎn):當(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ī)。
下圖給出了這兩種查詢的差別
5.下面舉一個(gè)例子演示整個(gè)查詢過(guò)程:
假定域名為
http://m.xyz.com的主機(jī)想知道另一個(gè)主機(jī)
http://y.abc.com的IP地址。例如,主機(jī)
http://m.xyz.com打算發(fā)送郵件給
http://y.abc.com。這時(shí)就必須知道主機(jī)
http://y.abc.com的IP地址。下面是上圖a的幾個(gè)查詢步驟:
1、主機(jī)
http://m.abc.com先向本地服務(wù)器
http://dns.xyz.com進(jìn)行遞歸查詢。2、本地服務(wù)器采用迭代查詢。它先向一個(gè)根域名服務(wù)器查詢。3、根域名服務(wù)器告訴本地服務(wù)器,下一次應(yīng)查詢的頂級(jí)域名服務(wù)器
http://dns.com的IP地址。4、本地域名服務(wù)器向頂級(jí)域名服務(wù)器
http://dns.com進(jìn)行查詢。5、頂級(jí)域名服務(wù)器
http://dns.com告訴本地域名服務(wù)器,下一步應(yīng)查詢的權(quán)限服務(wù)器
http://dns.abc.com的IP地址。6、本地域名服務(wù)器向權(quán)限域名服務(wù)器
http://dns.abc.com進(jìn)行查詢。7、權(quán)限域名服務(wù)器
http://dns.abc.com告訴本地域名服務(wù)器,所查詢的主機(jī)的IP地址。8、本地域名服務(wù)器最后把查詢結(jié)果告訴
http://m.xyz.com。
下面用代碼看一下:
2.關(guān)于DNS解析的TTL參數(shù):
我們?cè)谂渲肈NS解析的時(shí)候,有一個(gè)參數(shù)常常容易忽略,就是DNS解析的TTL參數(shù),Time To Live。TTL這個(gè)參數(shù)告訴本地DNS服務(wù)器,域名緩存的最長(zhǎng)時(shí)間。用阿里云解析來(lái)舉例,阿里云解析默認(rèn)的TTL是10分鐘,10分鐘的含義是,本地DNS服務(wù)器對(duì)于域名的緩存時(shí)間是10分鐘,10分鐘之后,本地DNS服務(wù)器就會(huì)刪除這條記錄,刪除之后,如果有用戶訪問(wèn)這個(gè)域名,就要重復(fù)一遍上述復(fù)雜的流程。
其實(shí),如果網(wǎng)站已經(jīng)進(jìn)入穩(wěn)定發(fā)展的狀態(tài),不會(huì)輕易更換IP地址,我們完全可以將TTL設(shè)置到協(xié)議最大值,即24小時(shí)。帶來(lái)的好處是,讓域名解析記錄能夠更長(zhǎng)時(shí)間的存放在本地DNS服務(wù)器中,以加快所有用戶的訪問(wèn)。設(shè)置成24小時(shí),其實(shí),還解決了Googlebot在全球部署的服務(wù)器抓取網(wǎng)站可能帶來(lái)的問(wèn)題,這個(gè)問(wèn)題麥新杰專門有一篇博文,請(qǐng)參考:“Googlebot無(wú)法訪問(wèn)您的站點(diǎn)”問(wèn)題理解和處理方法
阿里云之所以只將TTL設(shè)置成10分鐘,是為了讓域名解析更快生效而已。因?yàn)橹暗慕馕鰰?huì)在最長(zhǎng)10分鐘之后失效(本地DNS服務(wù)器將對(duì)應(yīng)的解析條目刪除),然后新的解析生效。如果是24小時(shí),這個(gè)生效的時(shí)間最長(zhǎng)就是24小時(shí),甚至更長(zhǎng)(本地DNS服務(wù)器要有用戶請(qǐng)求,才會(huì)發(fā)起查詢)。
3.IP地址分類
最初設(shè)計(jì)互聯(lián)網(wǎng)絡(luò)時(shí),為了便于尋址以及層次化構(gòu)造網(wǎng)絡(luò),每個(gè)IP地址包括兩個(gè)標(biāo)識(shí)碼(ID),即網(wǎng)絡(luò)ID和主機(jī)ID。同一個(gè)物理網(wǎng)絡(luò)上的所有主機(jī)都使用同一個(gè)網(wǎng)絡(luò)ID,網(wǎng)絡(luò)上的一個(gè)主機(jī)(包括網(wǎng)絡(luò)上工作站,服務(wù)器和路由器等)有一個(gè)主機(jī)ID與其對(duì)應(yīng)。IP地址根據(jù)網(wǎng)絡(luò)ID的不同分為5種類型,A類地址、B類地址、C類地址、D類地址和E類地址。
序號(hào)類別解釋1A類IP地址一個(gè)A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”, 地址范圍從1.0.0.0 到126.0.0.0??捎玫腁類網(wǎng)絡(luò)有126個(gè),每個(gè)網(wǎng)絡(luò)能容納1億多個(gè)主機(jī)。2B類IP地址一個(gè)B類IP地址由2個(gè)字節(jié)的網(wǎng)絡(luò)地址和2個(gè)字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255??捎玫腂類網(wǎng)絡(luò)有16382個(gè),每個(gè)網(wǎng)絡(luò)能容納6萬(wàn)多個(gè)主機(jī) 。3C類IP地址一個(gè)C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“110”。范圍從192.0.0.0到223.255.255.255。C類網(wǎng)絡(luò)可達(dá)209萬(wàn)余個(gè),每個(gè)網(wǎng)絡(luò)能容納254個(gè)主機(jī)。4D類地址用于多點(diǎn)廣播(Multicast)。D類IP地址第一個(gè)字節(jié)以“l(fā)ll0”開(kāi)始,它是一個(gè)專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點(diǎn)廣播(Multicast)中。多點(diǎn)廣播地址用來(lái)一次尋址一組計(jì)算機(jī),它標(biāo)識(shí)共享同一協(xié)議的一組計(jì)算機(jī)。224.0.0.0到239.255.255.255用于多點(diǎn)廣播 。5E類E類IP地址 以“l(fā)lll0”開(kāi)始,為將來(lái)使用保留。240.0.0.0到255.255.255.254,255.255.255.255用于廣播地址。全零(“0.0.0.0”)地址對(duì)應(yīng)于當(dāng)前主機(jī)。全“1”的IP地址(“255.255.255.255”)是當(dāng)前子網(wǎng)的廣播地址。
在IP地址3種主要類型里,各保留了3個(gè)區(qū)域作為私有地址,其地址范圍如下:
- A類地址:10.0.0.0~10.255.255.255
- B類地址:172.16.0.0~172.31.255.255
- C類地址:192.168.0.0~192.168.255.255
A類地址的第一組數(shù)字為1~126。其中0代表任何地址,127為回環(huán)測(cè)試地址,注意,數(shù)字0和 127不作為A類地址,數(shù)字127保留給內(nèi)部回送函數(shù),而數(shù)字0則表示該地址是本地宿主機(jī),不能傳送。
B類地址的第一組數(shù)字為128~191。C類地址的第一組數(shù)字為192~223。
1. A類地址 A類地址的表示范圍為:0.0.0.0~126.255.255.255,默認(rèn)網(wǎng)絡(luò)掩碼為:255.0.0.0;A類地址分配給規(guī)模特別大的網(wǎng)絡(luò)使用。A類網(wǎng)絡(luò)用第一組數(shù)字表示網(wǎng)絡(luò)本身的地址,后面三組數(shù)字作為連接于網(wǎng)絡(luò)上的主機(jī)的地址。分配給具有大量主機(jī)(直接個(gè)人用戶)而局域網(wǎng)絡(luò)個(gè)數(shù)較少的大型網(wǎng)絡(luò)。例如IBM公司的網(wǎng)絡(luò)。
2. B類地址B類地址的表示范圍為:128.0.0.0~191.255.255.255,默認(rèn)網(wǎng)絡(luò)掩碼為:255.255.0.0;B類地址分配給一般的中型網(wǎng)絡(luò)。B類網(wǎng)絡(luò)用第一、二組數(shù)字表示網(wǎng)絡(luò)的地址,后面兩組數(shù)字代表網(wǎng)絡(luò)上的主機(jī)地址。
3. C類地址 C類地址的表示范圍為:192.0.0.0~223.255.255.255,默認(rèn)網(wǎng)絡(luò)掩碼為:255.255.255.0;C類地址分配給小型網(wǎng)絡(luò),如一般的局域網(wǎng)和校園網(wǎng),它可連接的主機(jī)數(shù)量是最少的,采用把所屬的用戶分為若干的網(wǎng)段進(jìn)行管理。C類網(wǎng)絡(luò)用前三組數(shù)字表示網(wǎng)絡(luò)的地址,最后一組數(shù)字作為網(wǎng)絡(luò)上的主機(jī)地址。
實(shí)際上,還存在著D類地址和E類地址。但這兩類地址用途比較特殊,在這里只是簡(jiǎn)單介紹一下:D類地址稱為廣播地址,
參考:
https://study.163.com/course/courseMain.htm?courseId=1210406206&share=2&shareId=480000002227524