域名系統(tǒng)
第11章域名系統(tǒng)在TCP/IP互聯(lián)網(wǎng)中,可以使用IP 地址的32位整數(shù)識(shí)別主機(jī)。雖然這種地址能方便、緊湊地表示傳遞分組的源地址和目的地址,但是對(duì)一般用戶(hù)而言,IP 地址還是太抽象了,最直觀(guān)的表達(dá)方式也
第11章域名系統(tǒng)
在TCP/IP互聯(lián)網(wǎng)中,可以使用IP 地址的32位整數(shù)識(shí)別主機(jī)。雖然這種地址能方便、緊湊地表示傳遞分組的源地址和目的地址,但是對(duì)一般用戶(hù)而言,IP 地址還是太抽象了,最直觀(guān)的表達(dá)方式也不外乎將它分為4個(gè)十進(jìn)制整數(shù)。為了使用戶(hù)能夠利用好讀、易記的字符串為主機(jī)指派名字,IP 互聯(lián)網(wǎng)采用了域名系統(tǒng)(domain name system)。
實(shí)質(zhì)上,主機(jī)名是一種比IP 更高級(jí)的地址形式,主機(jī)名的管理、主機(jī)名-IP 地址映射等就是域名系統(tǒng)要解決的重要問(wèn)題。
11.1互聯(lián)網(wǎng)的命名機(jī)制
互聯(lián)網(wǎng)提供主機(jī)名的主要目的是為了讓用戶(hù)更方便地使用互聯(lián)網(wǎng)。一種優(yōu)秀的命名機(jī)制應(yīng)能很好地解決以下3個(gè)問(wèn)題:
1)全局唯一性:一個(gè)特定的主機(jī)名在整個(gè)互聯(lián)網(wǎng)上是唯一的,它能在整個(gè)互聯(lián)網(wǎng)中通用。不管用戶(hù)在哪里,只要指定這個(gè)名字,就可以唯一地找到這臺(tái)主機(jī)。
2)便于名字管理:優(yōu)秀的命名機(jī)制應(yīng)能方便地分配名字、確認(rèn)名字以及回收名字。
3)高效地進(jìn)行映射:用戶(hù)級(jí)的名字不能為使用IP 地址的協(xié)議軟件所接受,而IP 地址也不能為一般用戶(hù)所理解,因此,二者之間存在映射需求。優(yōu)秀的命名機(jī)制可以使域名系統(tǒng)高效地進(jìn)行映射。
,11.1.1層次型命名機(jī)制
命名機(jī)制可以分成兩類(lèi),一類(lèi)是無(wú)層次型命名(flat naming) 機(jī)制,另一種是層次型命名(hierarchy naming)機(jī)制。
在無(wú)層次命名機(jī)制中,主機(jī)的名字簡(jiǎn)單地由一個(gè)字符串組成,該字符串沒(méi)有進(jìn)一步的結(jié)構(gòu)。從理論上說(shuō),無(wú)層次名字的管理與映射很簡(jiǎn)單。其名字的分配、確認(rèn)以及回收等工作可以由一個(gè)部門(mén)集中管理。名字-地址之間的映射也可以通過(guò)一個(gè)一對(duì)一的表格實(shí)現(xiàn)。但是,隨著無(wú)層次命名機(jī)制中名字?jǐn)?shù)量的增加,不但名字沖突的可能性增大,單一管理機(jī)構(gòu)的工作負(fù)擔(dān)變重,而且名字的解析效率會(huì)變得越來(lái)越低。因此,無(wú)層次型命名機(jī)制只能適用于主機(jī)不經(jīng)常變化的小型互聯(lián)網(wǎng)。對(duì)于主機(jī)經(jīng)常變化、數(shù)量不斷增加的大型互聯(lián)網(wǎng),無(wú)層次命名機(jī)制無(wú)能為力。事實(shí)上,無(wú)層次命名機(jī)制已被TCP/IP互聯(lián)網(wǎng)淘汰,取而代之的是一種層次型命名機(jī)制。
所謂的層次型命名機(jī)制就是在名字中加入結(jié)構(gòu),而這種結(jié)構(gòu)是層次型的。具體地說(shuō),在層次型命名機(jī)制中,主機(jī)的名字被劃分成幾個(gè)部分,而每一部分之間都存在層次關(guān)系。實(shí)際上,在現(xiàn)實(shí)生活中經(jīng)常應(yīng)用層次型命名,例如,人們郵寄信件時(shí)采用的郵件人、發(fā)件人地址(如:中華人民共和國(guó)河北省石家莊市解放路)就具有一定結(jié)構(gòu)和層次。
層次型命名機(jī)制將名字空間劃分成一個(gè)樹(shù)狀結(jié)構(gòu)(如圖11-1所示),樹(shù)中每一結(jié)點(diǎn)都有一個(gè)相應(yīng)的標(biāo)識(shí)符,主機(jī)的名字就是從樹(shù)葉到樹(shù)根(或從樹(shù)根到樹(shù)葉)路徑上各結(jié)點(diǎn)標(biāo)識(shí)符的有序序列。例如, www→ nankai→edu →cn 就是一臺(tái)主機(jī)的完整名字。
,圖 11-1層次型名字的樹(shù)狀結(jié)構(gòu) 1
顯然,只要同一子樹(shù)下每層結(jié)點(diǎn)的標(biāo)識(shí)符不沖突,完整的主機(jī)名絕對(duì)不會(huì)沖突。在圖11-1所示的名字樹(shù)中,盡管相同的edu 出現(xiàn)了兩次,但由于它們出現(xiàn)在不同的結(jié)點(diǎn)之下(一個(gè)在根結(jié)點(diǎn)下,一個(gè)在cn 結(jié)點(diǎn)下),完整的主機(jī)名不會(huì)因此而產(chǎn)生沖突。
層次性命名機(jī)制的這種特性,對(duì)名字的管理非常有利。一棵名字樹(shù)可以劃分成幾個(gè)子樹(shù),每個(gè)子樹(shù)分配一個(gè)管理機(jī)構(gòu)。只要這個(gè)管理機(jī)構(gòu)能夠保證自己分配的結(jié)點(diǎn)名字不重復(fù),完整的主機(jī)名就不會(huì)重復(fù)和沖突。實(shí)際上,每個(gè)管理機(jī)構(gòu)可以將自己管理的子樹(shù)再次劃分成若干部分,并將每一部分指定一個(gè)子部門(mén)負(fù)責(zé)管理。這樣,對(duì)整個(gè)互聯(lián)網(wǎng)名字的管理也形成了一個(gè)樹(shù)狀的層次化結(jié)構(gòu)。
在圖11-2顯示的層次化樹(shù)型管理機(jī)構(gòu)中,中央管理機(jī)構(gòu)將其管轄下的結(jié)點(diǎn)標(biāo)識(shí)為com 、edu 、cn 、us 等。與此同時(shí),中央管理機(jī)構(gòu)還將其com 、edu 、cn. us的下一級(jí)標(biāo)識(shí)符的管理分別授權(quán)給com 管理機(jī)構(gòu)、edu 管理機(jī)構(gòu)、cn 管理機(jī)構(gòu)和us 管理機(jī)構(gòu)。同樣,cn 管理機(jī)構(gòu)又將com 、 edu、 bj、tj 等標(biāo)識(shí)符分配給它的下述結(jié)點(diǎn),并分別交由com 管理機(jī)構(gòu)、edu
管
,理機(jī)構(gòu)、bj 管理機(jī)構(gòu)和tj 管理機(jī)構(gòu)進(jìn)行管理。只要圖中的每個(gè)管理機(jī)構(gòu)能夠保證其管轄的下一層結(jié)點(diǎn)標(biāo)識(shí)符不發(fā)生重復(fù)和沖突,從樹(shù)葉到樹(shù)根(或從樹(shù)根到樹(shù)葉)路徑上各結(jié)點(diǎn)標(biāo)識(shí)符的有序序列就不會(huì)重復(fù)和沖突,由此而產(chǎn)生的互聯(lián)網(wǎng)中的主機(jī)名就是全局唯一的。
圖11-2 名字管理機(jī)構(gòu)的層次化
11.1.2 TCP/IP互聯(lián)網(wǎng)域名
在TCP/IP互聯(lián)網(wǎng)中實(shí)現(xiàn)的層次型名字管理機(jī)制叫做域名系統(tǒng)(Domain Name System,DNS)。TCP/IP互聯(lián)網(wǎng)中的域名系統(tǒng)一方面規(guī)定了名字語(yǔ)法以及名字管理特權(quán)的分派規(guī)則,另一方面則描述了關(guān)于高效的名字-地址映射分布式計(jì)算機(jī)系統(tǒng)的實(shí)現(xiàn)方法。
域名系統(tǒng)的命名機(jī)制叫做域名(domain name)。完整的域名由名字樹(shù)中的一個(gè)結(jié)點(diǎn)到根結(jié)點(diǎn)路徑上結(jié)點(diǎn)標(biāo)識(shí)符的有序序
,列組成,其中結(jié)點(diǎn)標(biāo)識(shí)符之間以“. ”隔開(kāi),如圖11-1所示。域名“cs.nankai.ed u.cn”由cs 、nankai 、edu 和cn 4個(gè)結(jié)點(diǎn)標(biāo)識(shí)符組成(根結(jié)點(diǎn)標(biāo)識(shí)符為空,省略不寫(xiě)),這些結(jié)點(diǎn)標(biāo)識(shí)符通常被稱(chēng)為標(biāo)號(hào)(label), 而每一標(biāo)號(hào)后面的各標(biāo)號(hào)叫做域(domain) 。 在“cs.nankai.edu.cn”中,最低級(jí)的域?yàn)椤癱s. nankai. edu. cn”,代表計(jì)算機(jī)系;第3級(jí)域?yàn)椤皀ankai. edu. cn",代表南開(kāi)大學(xué);第2級(jí)域?yàn)?/p>
“edu.cn”,代表教育機(jī)構(gòu);頂級(jí)域?yàn)?cn", 代表中國(guó)。 11.1.3 Internet 域名
TCP/IP域名語(yǔ)法只是一種抽象的標(biāo)準(zhǔn),其中各標(biāo)號(hào)的值可任意填寫(xiě),只要原則上符合層次型命名規(guī)則的要求即可。因此,任何組織均可根據(jù)域名語(yǔ)法構(gòu)造本組織內(nèi)部的域名,但這些域名的使用當(dāng)然也僅限于組織內(nèi)部。
作為國(guó)際性的大型互聯(lián)網(wǎng),Internet 規(guī)定了一組正式的通用標(biāo)準(zhǔn)標(biāo)號(hào),形成了國(guó)際通用頂級(jí)域名,如表11-1所示。頂級(jí)域的劃分采用了兩種劃分模式,即組織模式和地理模式。前7個(gè)域?qū)?yīng)于組織模式,其余的域?qū)?yīng)于地理模式。地理模式的頂級(jí)域是按國(guó)家進(jìn)行劃分的,每個(gè)申請(qǐng)加入Internet 的國(guó)家都可以作為一個(gè)頂級(jí)域,并向Internet 域名管理機(jī)構(gòu)NIC 注冊(cè)一個(gè)頂級(jí)域名,如cn 代表中國(guó)、us 代表美國(guó)、uk 代表英國(guó)、jp 代表日本等。
其次,將頂級(jí)域的管理權(quán)分派給指定的子管理機(jī)構(gòu),各子管理機(jī)構(gòu)對(duì)其管理的域進(jìn)行繼續(xù)劃分,即劃分成二級(jí)域,并將各二級(jí)域的管理權(quán)授予給其下屬的管理機(jī)構(gòu),如此下去,便形成了層次型域名結(jié)構(gòu)。由于管理機(jī)構(gòu)是逐級(jí)授權(quán)的,所以最終的域名都得到NIC 承認(rèn),成為Internet 中的正式名字。
圖11-3 Internet域名結(jié)構(gòu)
圖11-3列舉出了 Internet域名結(jié)構(gòu)中的一部分,如頂級(jí)域名cn 由中國(guó)互聯(lián)網(wǎng)中心CNNIC 管理,它將cn 域劃分成多個(gè)子域,包括ac 、com 、edu 、 gov、net 、org 、bj 和tj 等,并將二級(jí)域名edu 的管理權(quán)授予CERNET 網(wǎng)絡(luò)中心。CERNET 網(wǎng)絡(luò)中心又將edu 域劃分成多個(gè)子域,即三級(jí)域,各大學(xué)和教育機(jī)構(gòu)均可以在edu 下向CERNET 網(wǎng)絡(luò)中心注冊(cè)三級(jí)域名,如edu 下的tsinghua 代表清華大學(xué)、nankai 代表南開(kāi)大學(xué),并將這兩個(gè)域名的管理權(quán)分別授予清華大學(xué)和南開(kāi)大學(xué)。南開(kāi)大學(xué)可以繼續(xù)對(duì)三級(jí)域nankai 進(jìn)行劃分,將四級(jí)域名分配給下屬部門(mén)或主機(jī),如nankai 下的cs 代表南開(kāi)大學(xué)計(jì)算機(jī)系,而www 和ftp 代表兩臺(tái)主機(jī)等。
表11-2列出了我國(guó)二級(jí)域名的分配情況。
表11-2 我國(guó)二級(jí)域名分配
11.2 域名解析
域名系統(tǒng)的提出為T(mén)CP/IP互聯(lián)網(wǎng)用戶(hù)提供了極大的方便。通常構(gòu)成域名的各個(gè)部分(各級(jí)域名)都具有一定含義,相對(duì)于主機(jī)的IP 地址來(lái)說(shuō)更容易記憶。但域名只是為用戶(hù)提供了一種方便記憶的手段,主機(jī)之間不能直接使用域名進(jìn)行通信,仍然要使用IP 地址來(lái)完成數(shù)據(jù)的傳輸。所以當(dāng)應(yīng)用程序接收到用戶(hù)輸入的域名時(shí),域名系統(tǒng)必須提供一種機(jī)制,該機(jī)制負(fù)責(zé)將域名映射為對(duì)應(yīng)的IP 地址,然后利用該IP 地址將數(shù)據(jù)送往目的主機(jī)。
11.2.1 TCP/IP域名服務(wù)器與解析算法
那么到哪里去尋找一個(gè)域名所對(duì)應(yīng)的IP 地址呢?這就要借助于一組既獨(dú)立又協(xié)作的域名服務(wù)器完成。這組域名服務(wù)器是解析系統(tǒng)的核心。
所謂的域名服務(wù)器實(shí)際上是一個(gè)服務(wù)器軟件,運(yùn)行在指定的主機(jī)上,完成域名-IP 地址映射。有時(shí)候,我們也把運(yùn)行域
名服務(wù)軟件的主機(jī)叫做域名服務(wù)器,該服務(wù)器通常保存著它所
,管轄區(qū)域內(nèi)的域名與IP 地址的對(duì)照表。相應(yīng)地,請(qǐng)求域名解析服務(wù)的軟件叫域名解析器。
在TCP/IP 互聯(lián)網(wǎng)中,對(duì)應(yīng)于域名的層次結(jié)構(gòu)。域名服務(wù)器也構(gòu)成一定的層次結(jié)構(gòu),如圖11-4所示。這個(gè)樹(shù)型域名服務(wù)器的邏輯結(jié)構(gòu)是域
名解析說(shuō)法賴(lài)以實(shí)現(xiàn)
的基礎(chǔ)。總的來(lái)說(shuō),
域名解析采用自頂向
下的算法,從根服務(wù)
器開(kāi)始直到葉服務(wù)
器,在其間的某個(gè)結(jié)
點(diǎn)上一定能找到所需
的名字-地址映射。當(dāng)
然,由于父子結(jié)點(diǎn)的
上下管轄關(guān)系。域名圖 11-4 名字服務(wù)器層次結(jié)構(gòu)示意圖 1 解析的過(guò)程只需走過(guò)
條從樹(shù)根結(jié)點(diǎn)開(kāi)始到另一結(jié)點(diǎn)的一條自頂向下的單向路徑,無(wú)需回溯,更不用遍歷整個(gè)服務(wù)器樹(shù)。
但是,如果每一個(gè)解析請(qǐng)求都從根服務(wù)器開(kāi)始,那么,到達(dá)根服務(wù)器的信息流量將隨互聯(lián)網(wǎng)規(guī)模的增大而加大。在大型互聯(lián)網(wǎng)中,根服務(wù)器有可能因負(fù)荷太重而超栽。因此,每一個(gè)解析請(qǐng)求都從跟服務(wù)器開(kāi)始并不是一個(gè)很好地的解決方案。 實(shí)際上,在域名解析過(guò)程中,只要域名解析器軟件知道如何訪(fǎng)問(wèn)任意一個(gè)域名服務(wù)器,而每一域名服務(wù)器都知道根服務(wù)器的IP 地址(或父結(jié)點(diǎn)服務(wù)器的IP 地址),域名解析就可以順利地進(jìn)行。
域名解析有兩種方式,一種叫遞歸解析(recursive
resolution ),另一種叫反復(fù)解析(iterative resolution)。使用遞歸解析方式的解析器希望其請(qǐng)求的域名服務(wù)器能夠給出域名與IP 地址對(duì)應(yīng)關(guān)系的最終答案,一次性完成全部名字-
地
,址變換過(guò)程,如圖ll-5a 所示。如果解析器請(qǐng)求的域名服務(wù)器
保存著求域名與IP 地址
的對(duì)應(yīng)關(guān)系,那么這臺(tái)服
務(wù)器直接應(yīng)答解析器;否
則,該域名服務(wù)器請(qǐng)求其
他域名服務(wù)器幫助解析該
域名并將結(jié)果傳給自己。
在獲得最終域名與IP 地
址對(duì)應(yīng)關(guān)系后,服務(wù)器將
結(jié)果傳遞給解析器。例如圖 11-5 域名解析的兩種方式 1
在圖11 -5a中,當(dāng)客戶(hù)機(jī)需要解析域名www.nankai.edu.cn 時(shí), 解析器首先向本地域名服務(wù)器A (tsinghua.edu.cn)提出請(qǐng)求。由于域名服務(wù)器在本地沒(méi)有找到www. nankai. edu. cn與其IP 地址的映射關(guān)系,因此服務(wù)器A 請(qǐng)求服務(wù)器B
(edu.cn)幫助解析該域名。與此類(lèi)似,服務(wù)器B 會(huì)請(qǐng)求服務(wù)器
C (nankai. edu. cn)幫助解析該域名。由于www. nankai. edu. cn域名由服務(wù)器C 管理,因此服務(wù)器C 會(huì)將該域名與其IP 地址的映射關(guān)系回送給服務(wù)器B 。之后,服務(wù)器B 將得到的結(jié)果傳遞給服務(wù)器A, 由服務(wù)器A 將說(shuō)終結(jié)果通知客戶(hù)機(jī)。
與遞歸解析方式不同,采用反復(fù)解析方式的解析器每次請(qǐng)求一個(gè)域名服務(wù)器,如果該域名服務(wù)給不出最終的答案,那么解析器再向其他的域名服務(wù)器發(fā)出請(qǐng)求,如圖11 -5b所示。盡管解析器每次請(qǐng)求的域名服務(wù)器對(duì)能給不出最終的域名與IP 地址的對(duì)應(yīng)關(guān)系,但是域名服務(wù)器應(yīng)該給出下次解析器請(qǐng)求時(shí)可以使用的域名服務(wù)器的IP 地址(例如根域名服務(wù)器的IP 地址)。解析器經(jīng)過(guò)多次反復(fù)請(qǐng)求,最終就可以得到請(qǐng)求域名與IP 地址的對(duì)應(yīng)關(guān)系。在圖ll-5b 顯示的例子中,當(dāng)客戶(hù)機(jī)的解析器請(qǐng)求本地域名服務(wù)器A (tsinghua. edu. cn)解析www.nankai.edu.cn 時(shí),由于服務(wù)器A
沒(méi)有在本地找到該域
,名與IP 地址的對(duì)應(yīng)關(guān)
系,因此它返回了一
個(gè)可能知道該映射關(guān)
系的域名服務(wù)器地址
(服務(wù)器B 的地
址)。于是,解析器
向服務(wù)器B (edu.cn)
再次發(fā)出請(qǐng)求。當(dāng)服
務(wù)器B 返回域名服務(wù)
器C
(nankai.edu.cn)可圖 11-5 域名解析的兩種方式 2
能存有www. nankai. edu. cn與其IP 地址的對(duì)應(yīng)關(guān)系后,解析器向域名服務(wù)器C 發(fā)出請(qǐng)求。由于www. nankai. edu. cn域名由服務(wù)器C 管理,因此服務(wù)器C 直接將結(jié)果傳送給客戶(hù)機(jī)的解析器。
圖11-6描述了一個(gè)簡(jiǎn)單的域名解析過(guò)程。其中,構(gòu)造的域名請(qǐng)求報(bào)文包含有需要解析的域名及希望使用何種方式解析域名。