DNS域名的概念與機(jī)制
域名的概念與機(jī)制(RFC1034 前面部分的中文版)1. 介紹本文主要介紹域名(DNS )的一些機(jī)制及實(shí)現(xiàn)方法,下面我們就具體看一下它的情況。1.1. 域名的歷史產(chǎn)生域名的的根本動(dòng)機(jī)在于管理方便,原來
域名的概念與機(jī)制(RFC1034 前面部分的中文版)
1. 介紹
本文主要介紹域名(DNS )的一些機(jī)制及實(shí)現(xiàn)方法,下面我們就具體看一下它的情況。
1.1. 域名的歷史
產(chǎn)生域名的的根本動(dòng)機(jī)在于管理方便,原來的主機(jī)名與IP 地址映射是保存在NIC 的hosts.txt 文件中的,當(dāng)時(shí)因?yàn)橹鳈C(jī)數(shù)量少,這個(gè)文件也不經(jīng)常變化,因此其它主機(jī)幾天一次從NIC 的主機(jī)上下載這個(gè)文件進(jìn)行主機(jī)名和IP 地址映射就可以了。但隨著網(wǎng)絡(luò)的發(fā)展,這種方法變得無法使用,因?yàn)榻?jīng)常會(huì)有主機(jī)要求下載,對(duì)NIC 的主機(jī)造成巨大的壓力,而且也不能保證服務(wù)的質(zhì)量。許多局域網(wǎng)用戶希望自己管理自己的主機(jī)名,而不希望等NIC 許多天把自己的主機(jī)名加在hosts.txt 文件中,有些組織也希望有自己的名字空間配置。是需要一個(gè)能夠簡單管理的方法了。最后決定使用層次式的名字空間組織方案,以. 為分隔標(biāo)準(zhǔn)不同的層次。整個(gè)名字空間以分布式數(shù)據(jù)庫管理。請(qǐng)看閱讀前不要把平常的域名和這里的域名系統(tǒng)混在一起。最好的方法就是把原來的觀念忘記了,看現(xiàn)在的新東西。
1.2. DNS設(shè)計(jì)目標(biāo)
DNS 的設(shè)置目標(biāo)影響了它的結(jié)構(gòu),主要目標(biāo)是對(duì)資源有一個(gè)一致的名字空間,為了避免不同編碼帶來的問題,需要包括網(wǎng)絡(luò)標(biāo)記,地址,路由或其它信息作為名字的一部分。出于對(duì)實(shí)驗(yàn)數(shù)據(jù)的分析,看來分布式的存儲(chǔ)條件是必須的。要在獲取數(shù)據(jù)的代價(jià)和數(shù)據(jù)準(zhǔn)確性之間有一個(gè)平衡。需要對(duì)名字所代表的資源類型有一個(gè)標(biāo)記。要支持多協(xié)議訪問。名字服務(wù)器操作獨(dú)立于通信系統(tǒng)。應(yīng)該能夠使用不同的機(jī)器都能夠使用這一系統(tǒng),使用的方法可能不同,但是都要能夠使用。
1.3. 基于使用的一些假設(shè)
設(shè)計(jì)系統(tǒng)時(shí)是基于下面假設(shè)進(jìn)行的:數(shù)據(jù)庫的初始大小和使用系統(tǒng)的主機(jī)成正比,但最后數(shù)據(jù)庫的大小會(huì)和用戶的數(shù)目成正比,這一過程會(huì)發(fā)生在一些資源(如郵箱和其它一些要加入到域名系統(tǒng)中的信息)進(jìn)入系統(tǒng)開始;大部分的數(shù)據(jù)改變比較慢,但系統(tǒng)能夠?qū)Ω淖冇幸恍┛焖俚倪m應(yīng)。由相應(yīng)的組織負(fù)責(zé)分布式數(shù)據(jù)庫的維護(hù)。域名系統(tǒng)的用戶可以選擇自己喜歡的主機(jī)。因?yàn)槠渲械臄?shù)據(jù)十分敏感而且重要,因此一定要保證正確性,如果因?yàn)橹鳈C(jī)或網(wǎng)絡(luò)失敗而造成無法為用戶服務(wù),用戶要以原來的數(shù)據(jù)為準(zhǔn),不要自己胡亂想一個(gè)數(shù)據(jù)就用。在查詢的時(shí)候要避免循環(huán)查詢,一種方法是將未找到這一信息返回給用戶,讓用戶再找新的主機(jī)尋找相應(yīng)的地址,一種是由主機(jī)找別的主機(jī)尋找相應(yīng)的地址,找到后由相應(yīng)的主機(jī)返回地址給用戶,這兩個(gè)方法各有好處。域名系統(tǒng)假設(shè)所有的數(shù)據(jù)是在一個(gè)主文件中保存,這個(gè)主文件的內(nèi)容分布存儲(chǔ)于系統(tǒng)中的各臺(tái)主機(jī)上。用戶通過標(biāo)準(zhǔn)的查詢程序resolover 查詢。主文件的標(biāo)準(zhǔn)形式使得它可以在不同主機(jī)間進(jìn)行傳輸(利用FTP ,電子郵件等方式)。本地可以使用文本編輯器進(jìn)行管理,然后將這個(gè)文件傳輸?shù)矫址?wù)器那里,然后通知名字服務(wù)器的管理員加載這個(gè)文件就是了。對(duì)于resolver 來說,配置好的名字服務(wù)器是地址信息的主要來源。域名系統(tǒng)定義了訪問數(shù)據(jù)的過程和訪問其它名字服務(wù)器的方法,它還定義了緩沖的大小和更新緩沖的時(shí)間等配置信息。
,系統(tǒng)管理員需要提供:
區(qū)域(zone )邊界定義
主文件數(shù)據(jù)
主文件的更新
更新策略描述
域名系統(tǒng)需要提供:
源數(shù)據(jù)的標(biāo)準(zhǔn)格式
查詢數(shù)據(jù)庫的標(biāo)準(zhǔn)方法
多其它名字服務(wù)器上更新數(shù)據(jù)的標(biāo)準(zhǔn)方法
1.4. DNS組成
DNS 由下面三個(gè)部分組成:
域名空間和資源記錄,域名空間是一個(gè)樹狀結(jié)構(gòu),資源記錄是與名字相關(guān)的一些數(shù)據(jù)。從概念上說,每個(gè)結(jié)點(diǎn)和域名空間樹的葉子結(jié)點(diǎn)都有一定的信息,而查詢是要查詢出一些與之相關(guān)的特定信息。
名字服務(wù)器是服務(wù)器程序,它保留域名樹結(jié)構(gòu)和相應(yīng)的信息,它可以緩沖各種數(shù)據(jù),保存域名樹中的任何部分,但是通常它保存域名空間的一個(gè)子集,如果需要查詢其它信息可以通過指向其它名字服務(wù)器的地址尋找。這個(gè)名字服務(wù)器是這一部分的認(rèn)證權(quán)威,所有的認(rèn)證信息組成一個(gè)單元稱為區(qū),這些區(qū)可以分布于不同的服務(wù)器上以保證數(shù)據(jù)的冗余。
resolver 是向名字服務(wù)器提出查詢請(qǐng)求并將結(jié)果返回給客戶的程序,它必須可以訪問至少一個(gè)名字服務(wù)器,并將結(jié)果直接返回給用戶或向別的名字服務(wù)器查詢。它通常是用戶可以訪問的系統(tǒng)方法,在resolver 和用戶程序之間不需要協(xié)議。
下面我們通過三個(gè)不同的角度來看看它們的相互關(guān)系:
從用戶的角度,域名系統(tǒng)可以通過簡單的過程或操作系統(tǒng)調(diào)用來調(diào)用本地resolver 進(jìn)行查詢。域名空間包括一個(gè)單獨(dú)的樹,用戶可以從樹中的任何一個(gè)部分查詢信息。
從resolver 的角度,域名系統(tǒng)由一些名字服務(wù)器組成,每個(gè)服務(wù)器有域樹的整個(gè)或部分?jǐn)?shù)據(jù),resolver 將這些數(shù)據(jù)庫視為基本是靜態(tài)的。
從名字服務(wù)器的角度,域名系統(tǒng)由稱為區(qū)(zone )的本地?cái)?shù)據(jù)集組成,名字服務(wù)器必須定期從
,主備份上更新自己區(qū)內(nèi)的數(shù)據(jù),它還必須處理從resovler 傳送來的查詢請(qǐng)求。
2. 域名空間和資源記錄
2.1. 定義和名詞
域名空間是樹狀結(jié)構(gòu),每個(gè)結(jié)點(diǎn)和資源集相對(duì)應(yīng)(這個(gè)資源集可能為空),域名系統(tǒng)不區(qū)別樹內(nèi)結(jié)點(diǎn)和葉子結(jié)點(diǎn),統(tǒng)稱為結(jié)點(diǎn)。每個(gè)結(jié)點(diǎn)有一個(gè)標(biāo)記,這個(gè)標(biāo)記的長度為0到63個(gè)字節(jié)。不同的結(jié)點(diǎn)可以使用相同的標(biāo)記。0長度的標(biāo)記(空標(biāo)記)為根記錄保留。結(jié)點(diǎn)的域名是從結(jié)點(diǎn)到根的標(biāo)記組成的。這些標(biāo)記對(duì)大小寫不敏感,這就是說,A 和a 對(duì)域名是等效的。但是你在收到域名時(shí)最好保留它的大小寫狀態(tài)以便以后的服務(wù)擴(kuò)展便于使用。
用戶需要輸入域名時(shí),每個(gè)節(jié)點(diǎn)的標(biāo)記長度不管多長,總要以點(diǎn)分隔。絕對(duì)域名的最后總以點(diǎn)結(jié)束,例如"poneria.ISI.EDU." ,而相對(duì)域名則不這樣,它由本地域指明位置即可。相對(duì)域名相對(duì)于一個(gè)公認(rèn)的域名或相對(duì)于用作搜索列的一串域名。相對(duì)名通常在用戶接口出現(xiàn),在用戶接口,表示方法因?qū)崿F(xiàn)不同而不同,相對(duì)域名也出現(xiàn)在主文件中,主文件相對(duì)于一個(gè)源域名而設(shè)立。為了簡化實(shí)現(xiàn),整個(gè)域名的長度不得大于255個(gè)字節(jié)。域由域名標(biāo)記,它由其下的域組成。如果一個(gè)域包括在另一域中,則稱它為這個(gè)域的子域。我們可能通過表示很直觀的看出。如
A.B.C.D 是B.C.D ,C.D ,D 和" "的子域。
2.2. 管理規(guī)范
作為策略,DNS 技術(shù)說明未說明一個(gè)特定的樹結(jié)構(gòu)或什么規(guī)則來選擇標(biāo)記,此說明希望達(dá)到的目的是越簡單越好。應(yīng)用程序的開發(fā)可以不管名字空間的邊界和名字服務(wù)器的存在。這不是說沒有規(guī)矩地亂來,而是把規(guī)則制定得開放以便于處理問題,樹的不同部分可以有不同的規(guī)則。例如IN-ADDR.ARPA 分布在網(wǎng)絡(luò)各處,用于將網(wǎng)絡(luò)或主機(jī)號(hào)轉(zhuǎn)換為主機(jī)名,而NetBIOS 域是平面式的,原因很簡單,這樣便于應(yīng)用。但是,對(duì)于名字空間的通常部分,我們還是有規(guī)定的,目的是為了應(yīng)用起來比較方便。低層域名最終被分為多個(gè)區(qū),這樣的域應(yīng)該在頂層域上提供一個(gè)標(biāo)記使最終的解析可能不必重名字就可以完成。在管理的時(shí)候,老的軟件可能不支持結(jié)點(diǎn)標(biāo)記中的數(shù)字,特殊字符。
2.3. 技術(shù)規(guī)范
在DNS 能夠被用來為某些種類的結(jié)點(diǎn)保存名字信息前,必須滿足下面兩個(gè)條件:
要有在對(duì)象名和域之間映射的規(guī)則,這個(gè)規(guī)則描述了關(guān)于對(duì)象的信息如何被訪問
需要有描述對(duì)象的RR 類型和數(shù)據(jù)格式
這些規(guī)則可煩可簡,規(guī)則者要考慮到對(duì)現(xiàn)在格式和以后格式的兼容問題。多映射或映射分層是必須的。對(duì)于主機(jī),映射取決于主機(jī)名的現(xiàn)有格式,它是通常文本表示域名的子集,加上描述主機(jī)地址的RR 格式。因?yàn)槲覀冃枰獜牡刂返街鳈C(jī)的可靠映射,所以定義了將地址映射到
IN-ADDR.ARPA 域的方法。
,對(duì)了郵箱,映射會(huì)復(fù)雜一些。通常的郵件地址
2.4. 例子
下圖是現(xiàn)在域名系統(tǒng)的一個(gè)部分,它在本文中還會(huì)經(jīng)常被用到。請(qǐng)注意,這個(gè)樹只是實(shí)際樹的一個(gè)小小的子樹。
|
--------------------- ------------------
| | |
MIL EDU ARPA
| | |
----- ----- | ------ ----- -----
| | | | | | |
BRL NOSC DARPA | IN-ADDR SRI-NIC ACC
|
-------- ------------------ --------------- --------
| | | | |
UCI MIT | UDEL YALE
| ISI
| |
--- --- |
| | |
LCS ACHILLES -- ----- ----- --------
| | | | | |
XX A C VAXA VENERA Mockapetris
在此例中,根域有三個(gè)子域:MIL ,EDU 和ARPA ,而LCS.MIT.EDU 域有一個(gè)子域XX.LCS.MIT.EDU ,其它的節(jié)點(diǎn)也是域。
2.5. 命名規(guī)則
DNS 的命名規(guī)則是為了使對(duì)域名的命名比較統(tǒng)一。也就是要將任何現(xiàn)存的對(duì)象都可以在最小改動(dòng)的情況下變?yōu)橛蛎?。?jǐn)慎的使用者會(huì)選擇域名適合域名系統(tǒng)和應(yīng)用程序。例如在命名郵件域名時(shí),使用者會(huì)同時(shí)遵守相應(yīng)的郵件協(xié)議。這就使對(duì)老軟件的兼容性提高了。下面的規(guī)則是一個(gè)較少引起問題的規(guī)則:
請(qǐng)注意:域名內(nèi)不分大小寫。標(biāo)記必須遵守ARPANET 主機(jī)名規(guī)則,它要求主機(jī)名必須以字母開始,以字母或數(shù)字結(jié)束,中間的可以是數(shù)字字母或連字符,長度沒有限制。但標(biāo)記必須少于63個(gè)字符。下面的字符串就表示了APARNET 中的主機(jī):
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
2.6. 資源記錄
域名標(biāo)記結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)都有資源信息集,些集可以為空。資源信息集和由分離資源集(RR )的特殊名字相關(guān)聯(lián)。在集中的RR 順序沒有關(guān)系,標(biāo)記有這東西就是了,它不用由名字服務(wù)器,resovler 或DNS 的其它部分保存,只在這兒有。特定的RR 我們認(rèn)為有以下幾個(gè):
RR 我們認(rèn)為有以下幾個(gè):
--Owner RR 能夠被找到的域名
--Type 它是一個(gè)16位值,指定RR 內(nèi)的資源類型,它指一個(gè)抽象資源,具體的
標(biāo)記有以下幾個(gè)
A 主機(jī)地址
CNAME 一個(gè)別名的統(tǒng)一命名
HINFO 標(biāo)記由主機(jī)使用的CPU 和OS
MX 標(biāo)記用于域的郵件交換資源
NS 此域的權(quán)威認(rèn)證名字服務(wù)器
PTR 指向其它域名空間的指針
SOA 標(biāo)記區(qū)認(rèn)證權(quán)威的開始
--class 它是一個(gè)16位值,標(biāo)記協(xié)議族或某一個(gè)協(xié)議實(shí)例,本文中使用IN 代表
internet系統(tǒng),CH 代表Chaos 系統(tǒng)
--TTL 它是RR 的生存時(shí)間,它是32位整數(shù),單位是秒,它主要用于resolver 緩存RR 多長時(shí)間
--RDATA 它是一種類型,有時(shí)是依賴于數(shù)據(jù)的類,它描述了以下資源:
,A 對(duì)于IN 類,它是一個(gè)32位IP 地址,對(duì)于CH ,它是后面 跟一個(gè)16位八進(jìn)制Chaos 地址的域名
CNAME 域名
MX 作為一個(gè)域的郵件服務(wù)資源的主機(jī)名,主機(jī)名后有一個(gè)16位的配
置值
NS 主機(jī)名
PTR 域名
SOA 一些域
擁有資源的名字通常是隱式的,不構(gòu)成RR 的一部分。TTL 時(shí)間只影響緩沖內(nèi)的數(shù)據(jù),不影響區(qū)內(nèi)的已經(jīng)保存的認(rèn)證數(shù)據(jù)。TTL 通常由管理員設(shè)置,TTL=0表示禁止緩沖。RDATA 內(nèi)的數(shù)據(jù)是二進(jìn)制串和域名的混合。域名通常使用指針指向DNS 內(nèi)的其它數(shù)據(jù)。
2.6.1. RR的文本表示
RR 在DNS 中是以二進(jìn)制形式表示的,而在名字服務(wù)器或resolver 中保存的時(shí)是經(jīng)過壓縮編碼處理的。本文中我們采用相同于主文件中表示的表示方法,也就是不壓縮的方法,以便顯示RR 的內(nèi)容。剛開始時(shí)給出誰擁有RR ,如果這一位置空出,就表示本行RR 的擁有者和上面RR 的擁有者是一個(gè)。其后是TTL ,type 和RR 的class 。RR 的RDA TA 部分是在當(dāng)前數(shù)據(jù)的表示類型的基礎(chǔ)上得到的。下面是一些RR 的例子:
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 V AXA.ISI.EDU.
VENERA.ISI.EDU. A 128.9.0.32
A 10.1.0.52
V AXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
其中我們注意到MX 那一部分,它的RDATA 部分有是一個(gè)16位數(shù)后面跟一個(gè)域名組成。其它的也就不說了。本例子顯示了6個(gè)RR ,第三個(gè)域名有兩個(gè)RR 。下面是一個(gè)例子,它顯示在不同的class 下如何表示:
XX.LCS.MIT.EDU. IN A 10.0.0.44
CH A MIT.EDU. 2420
2.6.2. 別名和統(tǒng)一命名
現(xiàn)存的系統(tǒng)中有時(shí)會(huì)對(duì)相同的資源有不同的命名,不但主機(jī)是這樣,郵箱也是這樣,不同的名字指向的是同一個(gè)位置。大部分系統(tǒng)都能夠?qū)Χ鄠€(gè)名字指定一個(gè)是統(tǒng)一命名的結(jié)果,另外的是別名。域名系統(tǒng)提供使用統(tǒng)一命名的機(jī)制(CNAME RR),CNAME RR標(biāo)記它的owner 名為別名,并指出在RDA TA 部分的相應(yīng)統(tǒng)一命名。如果一個(gè)結(jié)點(diǎn)存在CNAME RR ,不應(yīng)該有其它的數(shù)據(jù),這保證了統(tǒng)一命名和它的別名不能不同。這也使得緩沖的CNAME 可以
,不用檢索認(rèn)證權(quán)威服務(wù)器就可以提供服務(wù)。在有CNAME RR時(shí),DNS 軟件如果查詢不到與域名相關(guān)的資源,它會(huì)檢查資源集中是不是有一個(gè)有匹配class 的CNAME ,如果有,名字服務(wù)器返回的應(yīng)答中包括這個(gè)CNAME 記錄,并根據(jù)在CNAME 中指定的數(shù)據(jù)開始新的查詢。下面我們看一個(gè)例子,假設(shè)名字服務(wù)器處理對(duì)USC-ISIC.ARPA 的查詢,它要求查詢A 信息,下面是RR 的內(nèi)容:
USC-ISIC.ARPA IN CNAME C.ISI.EDU
C.ISI.EDU IN A 10.0.0.52
這兩個(gè)RR 都作為響應(yīng)返回,而只查詢CNAME 的*查詢則只返回CNAME 。
RR 中指向其它名字的域名應(yīng)該指向主名而不是別名,這就避免了查詢中過多的轉(zhuǎn)向查詢。例如,對(duì)于上面的RR ,它的IN-ADDR.ARPA 記錄應(yīng)該是:
52.0.0.10.IN-ADDR.ARPA IN PTR C.ISI.EDU
最后指向的是C.ISI.EDU ,而不是USC-ISIC.ARPA ,當(dāng)然一個(gè)健壯的域名軟件不會(huì)因?yàn)樘峁┝搜h(huán)的CNAME 而失敗。
2.7. 查詢
查詢就是發(fā)向名字服務(wù)器要求響應(yīng)的一個(gè)請(qǐng)求。在Internet 上,這種請(qǐng)求以UDP 或TCP 傳輸,名字服務(wù)器的響應(yīng)可以是查詢結(jié)果,或是另一個(gè)名字名字器地址,要么就是一個(gè)錯(cuò)誤信息。通常用戶并不直接發(fā)送請(qǐng)求,而是向resolver 發(fā)送請(qǐng)求,由resolver 依次將一個(gè)或多個(gè)請(qǐng)求發(fā)向名字服務(wù)器,并負(fù)責(zé)處理錯(cuò)誤情況。請(qǐng)求和響應(yīng)有標(biāo)準(zhǔn)格式,它們包括一個(gè)頭和數(shù)個(gè)固定的域,然后是包括查詢參數(shù)和RR 的四個(gè)部分。頭中最重要的域是稱為操作符的東西,它指出要進(jìn)行什么操作。在所有可能的16個(gè)值中,標(biāo)準(zhǔn)查詢是必須的,反向查詢和狀態(tài)查詢是可選的,有一個(gè)完全查詢已經(jīng)過時(shí),其它的還未指定。而上面的提到的四個(gè)部分如下:
Question
包括查詢名和其它參數(shù)
Answer
包括查詢結(jié)果的RR
Authority
包括一個(gè)RR ,但這個(gè)RR 包括的是另一個(gè)名字服務(wù)器
Additional
包括了一個(gè)些在其它部分中使用RR 時(shí)會(huì)有用的信息
請(qǐng)注意:因頭中操作符(碼)的不同,這些部分的內(nèi)容可能不同,但格式可是一樣的。
,2.7.1. 標(biāo)準(zhǔn)查詢
標(biāo)準(zhǔn)查詢指定一個(gè)目標(biāo)域名(QNAME ),查詢類型(QTYPE )和查詢類(QCLASS ),然后尋找相應(yīng)的RR ,這類的查詢占了DNS 查詢的絕大部分,如果未有特殊說明,一般都指這種查詢。
QTYPE 和QCLASS 域?yàn)?6位,是定義的type 和class 的超集。QTYPE 域可以包括:
AXFR :由QTYPE 指定的特定區(qū)
MAILB :和RR 相關(guān)的所有郵箱
*:所有RR 類型
QCLASS 域可以包括:
*:所有的RR 類
使用查詢域名,QTYPE 和QCLASS ,名字服務(wù)器就會(huì)檢查相應(yīng)的RR ,服務(wù)器可以返回一個(gè)可能包括相應(yīng)RR 的服務(wù)器名。例如:希望向Mockapetris@ISI.EDU發(fā)郵件,應(yīng)用程序會(huì)向resolver 要求了解關(guān)于ISI.EDU 的信息,會(huì)產(chǎn)生下面的查詢:QNAME=ISI.EDU,QTYPE=MX,QCLASS=IN,可能產(chǎn)生響應(yīng)的區(qū)可能是:
ISI.EDU. MX 10 VENERA.ISI.EDU.
MX 10 V AXA.ISI.EDU.
隨此以外還有:
V AXA.ISI.EDU. A 10.2.0.27
A 128.9.0.33
VENERA.ISI.EDU. A 10.1.0.52
A 128.9.0.32
服務(wù)器假設(shè)如果請(qǐng)求者希望得到郵件交換(exchange )信息,它會(huì)馬上請(qǐng)求交換服務(wù)器的地址,所以找到兩個(gè)。這里需要注意QCLASS=*類型的查詢,因?yàn)榉?wù)器不可能知道了解域名系統(tǒng)中所有類的可用信息,它也不是所有類的認(rèn)證權(quán)威,因此這類查詢不能得到認(rèn)證。
2.7.2. 反向查詢(可選)
名字服務(wù)器可以反映資源和域名之間的映射關(guān)系。標(biāo)準(zhǔn)查詢可以對(duì)將域名映射到SOA RR,
,相應(yīng)的反向查詢則映射SOA RR到域名。
對(duì)于名字服務(wù)器來說這種實(shí)現(xiàn)是可選的,但是所有的名字服務(wù)器必須至少能夠理解反向查詢消息,不能說發(fā)來的消息當(dāng)不知道。域名系統(tǒng)不保證反向查詢的完全和唯一性,因?yàn)橄到y(tǒng)是按照域名而非主機(jī)地址或其它資源類型安排的。反向查詢主要用于調(diào)試,以及和數(shù)據(jù)庫支持相關(guān)的活動(dòng)中。反向查詢可以不返回正確的TTL ,也不標(biāo)明RR 是某個(gè)集合中的一員,我們不知道它是不是唯一的,因此反向查詢的結(jié)果不緩沖。反向查詢對(duì)于映射主機(jī)地址到主機(jī)名是不合適的,此時(shí)要用IN-ADDR.ARPA 域。
2.8. 狀態(tài)查詢(實(shí)驗(yàn)中)
沒有定義
2.9. 完整查詢(過時(shí)的)
這里就不說了,以后可能會(huì)支持重設(shè)計(jì)(redegsign )服務(wù)。
3. 名字服務(wù)器
3.1. 介紹
名字服務(wù)器保存了許多信息,這些信息組成了域數(shù)據(jù)庫。數(shù)據(jù)庫被分為區(qū),這些區(qū)在不同的服務(wù)器上保存。服務(wù)器可以有不同的可選函數(shù)和數(shù)據(jù)源,它最基本的工作是響應(yīng)查詢,它的響應(yīng)是是一種簡單的形式進(jìn)行的,響應(yīng)可以僅根據(jù)本地?cái)?shù)據(jù)作出,也可以根據(jù)其它相關(guān)服務(wù)器而做出。一個(gè)給定的區(qū)可以根據(jù)不同的服務(wù)器來保證其有效性,通過管理命令,用戶可以查詢由至少兩臺(tái)服務(wù)器保存的一個(gè)區(qū)上的數(shù)據(jù),多臺(tái)服務(wù)器保存信息保證了適當(dāng)?shù)娜哂唷?/p>
給定的名字服務(wù)器通常支持一個(gè)或多個(gè)區(qū),但只充當(dāng)域樹一小部分的認(rèn)證權(quán)威。它有一些緩沖的非認(rèn)證信息,這些信息是域樹其它部分的,在響應(yīng)查詢時(shí)名字服務(wù)器會(huì)給出什么時(shí)它認(rèn)證的,什么是它緩沖的。
3.2. 數(shù)據(jù)庫如何被劃分為區(qū)
劃分?jǐn)?shù)據(jù)庫有兩種方法,一種是根據(jù)class ,另一種是在名字空間的結(jié)點(diǎn)間進(jìn)行分隔,而產(chǎn)生,我們稱這種分隔為cut 。class (以下我們稱為類)分隔比較簡單,在傳統(tǒng)上,名字空間和所有類是一回事,分隔的類可被認(rèn)為是一系列平行的名字空間樹。創(chuàng)建新類的通常理由是要為已有的類型創(chuàng)建新的數(shù)據(jù)格式,或是為了對(duì)已有的名字空間進(jìn)行分隔管理。在一個(gè)類中可在兩個(gè)相鄰的結(jié)點(diǎn)進(jìn)行cut (以下我們稱為切分),在所有的切分完成后,相連空間的每個(gè)組就是一個(gè)獨(dú)立的區(qū)。此區(qū)是在相連區(qū)域內(nèi)所有數(shù)據(jù)的認(rèn)證權(quán)威。
這種方法意味著所有的區(qū)至少有一個(gè)結(jié)點(diǎn),域名和所有特定區(qū)內(nèi)的結(jié)點(diǎn)是相連的。給定的樹型結(jié)構(gòu)一定有一個(gè)點(diǎn)更加靠近根,我們用這個(gè)點(diǎn)標(biāo)記這個(gè)區(qū)。雖然可能沒什么用,也可以將每個(gè)域名分在不同的區(qū)中,也可以讓所有的結(jié)點(diǎn)在一個(gè)區(qū)中。另外,數(shù)據(jù)庫也可根據(jù)不同企業(yè)對(duì)名字的控制進(jìn)行劃分,有些企業(yè)可能希望自己管理某一部分域名子樹,這時(shí)這個(gè)企業(yè)就
,可以對(duì)域名進(jìn)行相應(yīng)的增加或刪除操作,可以自己加入自己的下一級(jí)域名。當(dāng)然,這個(gè)企業(yè)也可以對(duì)自己管理的名字空間進(jìn)行進(jìn)一步劃分。
3.2.1. 技術(shù)問題
描述一個(gè)區(qū)的數(shù)據(jù)有四部分:
區(qū)中所有結(jié)點(diǎn)的認(rèn)證數(shù)據(jù)
定義區(qū)內(nèi)頂結(jié)點(diǎn)的數(shù)據(jù)(此數(shù)據(jù)可被認(rèn)為是認(rèn)證數(shù)據(jù)的一部分)
描述代表子區(qū)的數(shù)據(jù)
訪問服務(wù)器子區(qū)的數(shù)據(jù)(我們也稱為?#30456;關(guān)?#65288;glue)數(shù)據(jù))
所有這些數(shù)據(jù)以RR 的形式表示,所有區(qū)可以被RR 集的形式描述。通過傳輸RR ,可以傳輸整個(gè)區(qū),具體的方法可以是通過FTP 傳輸相應(yīng)的文本文件,或是通過網(wǎng)絡(luò)消息的形式傳輸。一個(gè)區(qū)的認(rèn)證數(shù)據(jù)是所有的RR ,這些RR 和樹中所有的結(jié)點(diǎn)是關(guān)聯(lián)的,要么就是切分后的結(jié)點(diǎn)關(guān)聯(lián)。描述頂結(jié)點(diǎn)的RR 對(duì)于區(qū)的管理特別重要,這些RR 有兩種類型,名字服務(wù)器RR ,它描述了區(qū)中的服務(wù)器列表;另一種是SOA RR,它描述的區(qū)的管理參數(shù)。
描述切分的RR 是NS RR,因?yàn)榍蟹质窃诮Y(jié)點(diǎn)間進(jìn)行的,所有RR 不是區(qū)認(rèn)證數(shù)據(jù)的一部分,它應(yīng)該和相應(yīng)的在子區(qū)內(nèi)的頂結(jié)點(diǎn)一致。因?yàn)槊址?wù)器通常和區(qū)邊界相關(guān),NS RR 只在一些區(qū)的頂結(jié)點(diǎn)上有。在組成一個(gè)區(qū)的數(shù)據(jù)中,NS RR 在頂層結(jié)點(diǎn)和在邊界底的切分處出現(xiàn),不在其它地方。
區(qū)結(jié)構(gòu)所要實(shí)現(xiàn)的一個(gè)目標(biāo)是任何區(qū)都有足夠的數(shù)據(jù)可以和任何子區(qū)建立通信。也就是說,父區(qū)有足夠的信息可以訪問子區(qū)中的任何一臺(tái)名字服務(wù)器。NS RR 命名了子區(qū)服務(wù)器,它不足以完成上面的要求,因此有了名字但仍然不知道地址。特別地,如果名字服務(wù)器的名字在子區(qū)內(nèi)是它自己,我們就無法知道通過它的任何信息了。為了解決這一問題,區(qū)中包括了一個(gè)關(guān)聯(lián)RR ,它不是認(rèn)證權(quán)威數(shù)據(jù)的一部分,但它表示了服務(wù)器的地址。如果名字服務(wù)器名在切分下,就需要這些RR 了。
3.2.2. 管理問題
當(dāng)有些組織希望掌握自己的域時(shí),第一步是標(biāo)記合適的父區(qū),然后取得父區(qū)中管理結(jié)點(diǎn)的許可來管理。管理的時(shí)候沒有什么具體的技術(shù)問題,可是還是有一些規(guī)則的,對(duì)中型的區(qū)可以沒有這些規(guī)定,但是小型的就不行了。本文不具體討論這一問題了,有興趣可參閱相關(guān)的資料。
一旦選擇了子區(qū)的名字,此區(qū)的新管理結(jié)點(diǎn)要冗余的名字服務(wù)器來支持。注意:沒有要求一個(gè)區(qū)的服務(wù)器必須在此域中有名字的主機(jī)上。在許多種情況下,一個(gè)區(qū)要想被更容易地訪問到最好把內(nèi)容放得分散一點(diǎn),不要集中在一起?,F(xiàn)在許多國家的名字服務(wù)器是放置在別國的,這樣在取得名字解析的時(shí)候不用把請(qǐng)求千里迢迢送到遠(yuǎn)程主機(jī)上去了。作為配置的最后一