?? dns協(xié)議.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0049)http://www.longen.org/A-D/detaila~d/DnsDetail.htm -->
<HTML><HEAD><TITLE>域名的概念與機制</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1400" name=GENERATOR></HEAD>
<BODY>
<DIV align=center>
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="100%"><FONT face=宋體 size=3>
<P align=center><STRONG>域名的概念與機制</STRONG></P>
<P align=justify>1. 介紹</P>
<P align=justify>本文主要介紹域名(DNS)的一些機制及實現(xiàn)方法,下面我們就具體看一下它的情況。</P>
<P align=justify>1.1. 域名的歷史</P>
<P
align=justify>產(chǎn)生域名的的根本動機在于管理方便,原來的主機名與IP地址映射是保存在NIC的hosts.txt文件中的,當(dāng)時因為主機數(shù)量少,這個文件也不經(jīng)常變化,因此其它主機幾天一次從NIC的主機上下載這個文件進行主機名和IP地址映射就可以了。但隨著網(wǎng)絡(luò)的發(fā)展,這種方法變得無法使用,因為經(jīng)常會有主機要求下載,對NIC的主機造成巨大的壓力,而且也不能保證服務(wù)的質(zhì)量。許多局域網(wǎng)用戶希望自己管理自己的主機名,而不希望等NIC許多天把自己的主機名加在hosts.txt文件中,有些組織也希望有自己的名字空間配置。是需要一個能夠簡單管理的方法了。最后決定使用層次式的名字空間組織方案,以.為分隔標(biāo)準(zhǔn)不同的層次。整個名字空間以分布式數(shù)據(jù)庫管理。請看閱讀前不要把平常的域名和這里的域名系統(tǒng)混在一起。最好的方法就是把原來的觀念忘記了,看現(xiàn)在的新東西。</P>
<P align=justify>1.2. DNS設(shè)計目標(biāo)</P>
<P
align=justify>DNS的設(shè)置目標(biāo)影響了它的結(jié)構(gòu),主要目標(biāo)是對資源有一個一致的名字空間,為了避免不同編碼帶來的問題,需要包括網(wǎng)絡(luò)標(biāo)記,地址,路由或其它信息作為名字的一部分。出于對實驗數(shù)據(jù)的分析,看來分布式的存儲條件是必須的。要在獲取數(shù)據(jù)的代價和數(shù)據(jù)準(zhǔn)確性之間有一個平衡。需要對名字所代表的資源類型有一個標(biāo)記。要支持多協(xié)議訪問。名字服務(wù)器操作獨立于通信系統(tǒng)。應(yīng)該能夠使用不同的機器都能夠使用這一系統(tǒng),使用的方法可能不同,但是都要能夠使用。</P>
<P align=justify>1.3. 基于使用的一些假設(shè)</P>
<P
align=justify>設(shè)計系統(tǒng)時是基于下面假設(shè)進行的:數(shù)據(jù)庫的初始大小和使用系統(tǒng)的主機成正比,但最后數(shù)據(jù)庫的大小會和用戶的數(shù)目成正比,這一過程會發(fā)生在一些資源(如郵箱和其它一些要加入到域名系統(tǒng)中的信息)進入系統(tǒng)開始;大部分的數(shù)據(jù)改變比較慢,但系統(tǒng)能夠?qū)Ω淖冇幸恍┛焖俚倪m應(yīng)。由相應(yīng)的組織負(fù)責(zé)分布式數(shù)據(jù)庫的維護。域名系統(tǒng)的用戶可以選擇自己喜歡的主機。因為其中的數(shù)據(jù)十分敏感而且重要,因此一定要保證正確性,如果因為主機或網(wǎng)絡(luò)失敗而造成無法為用戶服務(wù),用戶要以原來的數(shù)據(jù)為準(zhǔn),不要自己胡亂想一個數(shù)據(jù)就用。在查詢的時候要避免循環(huán)查詢,一種方法是將未找到這一信息返回給用戶,讓用戶再找新的主機尋找相應(yīng)的地址,一種是由主機找別的主機尋找相應(yīng)的地址,找到后由相應(yīng)的主機返回地址給用戶,這兩個方法各有好處。域名系統(tǒng)假設(shè)所有的數(shù)據(jù)是在一個主文件中保存,這個主文件的內(nèi)容分布存儲于系統(tǒng)中的各臺主機上。用戶通過標(biāo)準(zhǔn)的查詢程序resolover查詢。主文件的標(biāo)準(zhǔn)形式使得它可以在不同主機間進行傳輸(利用FTP,電子郵件等方式)。本地可以使用文本編輯器進行管理,然后將這個文件傳輸?shù)矫址?wù)器那里,然后通知名字服務(wù)器的管理員加載這個文件就是了。對于resolver來說,配置好的名字服務(wù)器是地址信息的主要來源。域名系統(tǒng)定義了訪問數(shù)據(jù)的過程和訪問其它名字服務(wù)器的方法,它還定義了緩沖的大小和更新緩沖的時間等配置信息。</P>
<P align=justify>系統(tǒng)管理員需要提供:</P>
<BLOCKQUOTE>
<BLOCKQUOTE>
<UL>
<LI>
<P align=justify>區(qū)域(zone)邊界定義</P>
<LI>
<P align=justify>主文件數(shù)據(jù)</P>
<LI>
<P align=justify>主文件的更新</P>
<LI>
<P align=justify>更新策略描述</P></LI></UL></BLOCKQUOTE></BLOCKQUOTE>
<P align=justify>域名系統(tǒng)需要提供:</P>
<BLOCKQUOTE>
<BLOCKQUOTE>
<UL>
<LI>
<P align=justify>源數(shù)據(jù)的標(biāo)準(zhǔn)格式</P>
<LI>
<P align=justify>查詢數(shù)據(jù)庫的標(biāo)準(zhǔn)方法</P>
<LI>
<P
align=justify>多其它名字服務(wù)器上更新數(shù)據(jù)的標(biāo)準(zhǔn)方法</P></LI></UL></BLOCKQUOTE></BLOCKQUOTE>
<P align=justify>1.4. DNS組成</P>
<P align=justify>DNS由下面三個部分組成:</P>
<OL>
<LI>
<P
align=justify>域名空間和資源記錄,域名空間是一個樹狀結(jié)構(gòu),資源記錄是與名字相關(guān)的一些數(shù)據(jù)。從概念上說,每個結(jié)點和域名空間樹的葉子結(jié)點都有一定的信息,而查詢是要查詢出一些與之相關(guān)的特定信息。</P>
<LI>
<P
align=justify>名字服務(wù)器是服務(wù)器程序,它保留域名樹結(jié)構(gòu)和相應(yīng)的信息,它可以緩沖各種數(shù)據(jù),保存域名樹中的任何部分,但是通常它保存域名空間的一個子集,如果需要查詢其它信息可以通過指向其它名字服務(wù)器的地址尋找。這個名字服務(wù)器是這一部分的認(rèn)證權(quán)威,所有的認(rèn)證信息組成一個單元稱為區(qū),這些區(qū)可以分布于不同的服務(wù)器上以保證數(shù)據(jù)的冗余。</P>
<LI>
<P
align=justify>resolver是向名字服務(wù)器提出查詢請求并將結(jié)果返回給客戶的程序,它必須可以訪問至少一個名字服務(wù)器,并將結(jié)果直接返回給用戶或向別的名字服務(wù)器查詢。它通常是用戶可以訪問的系統(tǒng)方法,在resolver和用戶程序之間不需要協(xié)議。</P></LI></OL>
<P align=justify>下面我們通過三個不同的角度來看看它們的相互關(guān)系:</P>
<OL>
<LI>
<P
align=justify>從用戶的角度,域名系統(tǒng)可以通過簡單的過程或操作系統(tǒng)調(diào)用來調(diào)用本地resolver進行查詢。域名空間包括一個單獨的樹,用戶可以從樹中的任何一個部分查詢信息。</P>
<LI>
<P
align=justify>從resolver的角度,域名系統(tǒng)由一些名字服務(wù)器組成,每個服務(wù)器有域樹的整個或部分?jǐn)?shù)據(jù),resolver將這些數(shù)據(jù)庫視為基本是靜態(tài)的。</P>
<LI>
<P
align=justify>從名字服務(wù)器的角度,域名系統(tǒng)由稱為區(qū)(zone)的本地數(shù)據(jù)集組成,名字服務(wù)器必須定期從主備份上更新自己區(qū)內(nèi)的數(shù)據(jù),它還必須處理從resovler傳送來的查詢請求。</P></LI></OL>
<P align=justify>2. 域名空間和資源記錄</P>
<P align=justify>2.1. 定義和名詞</P>
<P
align=justify>域名空間是樹狀結(jié)構(gòu),每個結(jié)點和資源集相對應(yīng)(這個資源集可能為空),域名系統(tǒng)不區(qū)別樹內(nèi)結(jié)點和葉子結(jié)點,統(tǒng)稱為結(jié)點。每個結(jié)點有一個標(biāo)記,這個標(biāo)記的長度為0到63個字節(jié)。不同的結(jié)點可以使用相同的標(biāo)記。0長度的標(biāo)記(空標(biāo)記)為根記錄保留。結(jié)點的域名是從結(jié)點到根的標(biāo)記組成的。這些標(biāo)記對大小寫不敏感,這就是說,A和a對域名是等效的。但是你在收到域名時最好保留它的大小寫狀態(tài)以便以后的服務(wù)擴展便于使用。</P>
<P
align=justify>用戶需要輸入域名時,每個節(jié)點的標(biāo)記長度不管多長,總要以點分隔。絕對域名的最后總以點結(jié)束,例如"poneria.ISI.EDU.",而相對域名則不這樣,它由本地域指明位置即可。相對域名相對于一個公認(rèn)的域名或相對于用作搜索列的一串域名。相對名通常在用戶接口出現(xiàn),在用戶接口,表示方法因?qū)崿F(xiàn)不同而不同,相對域名也出現(xiàn)在主文件中,主文件相對于一個源域名而設(shè)立。為了簡化實現(xiàn),整個域名的長度不得大于255個字節(jié)。域由域名標(biāo)記,它由其下的域組成。如果一個域包括在另一域中,則稱它為這個域的子域。我們可能通過表示很直觀的看出。如A.B.C.D是B.C.D,C.D,D和"
"的子域。</P>
<P align=justify>2.2. 管理規(guī)范</P>
<P
align=justify>作為策略,DNS技術(shù)說明未說明一個特定的樹結(jié)構(gòu)或什么規(guī)則來選擇標(biāo)記,此說明希望達到的目的是越簡單越好。應(yīng)用程序的開發(fā)可以不管名字空間的邊界和名字服務(wù)器的存在。這不是說沒有規(guī)矩地亂來,而是把規(guī)則制定得開放以便于處理問題,樹的不同部分可以有不同的規(guī)則。例如IN-ADDR.ARPA分布在網(wǎng)絡(luò)各處,用于將網(wǎng)絡(luò)或主機號轉(zhuǎn)換為主機名,而NetBIOS域是平面式的,原因很簡單,這樣便于應(yīng)用。但是,對于名字空間的通常部分,我們還是有規(guī)定的,目的是為了應(yīng)用起來比較方便。低層域名最終被分為多個區(qū),這樣的域應(yīng)該在頂層域上提供一個標(biāo)記使最終的解析可能不必重名字就可以完成。在管理的時候,老的軟件可能不支持結(jié)點標(biāo)記中的數(shù)字,特殊字符。</P>
<P align=justify>2.3. 技術(shù)規(guī)范</P>
<P align=justify>在DNS能夠被用來為某些種類的結(jié)點保存名字信息前,必須滿足下面兩個條件:</P>
<BLOCKQUOTE>
<UL>
<LI>
<P align=justify>要有在對象名和域之間映射的規(guī)則,這個規(guī)則描述了關(guān)于對象的信息如何被訪問</P>
<LI>
<P align=justify>需要有描述對象的RR類型和數(shù)據(jù)格式</P></LI></UL></BLOCKQUOTE>
<P
align=justify>這些規(guī)則可煩可簡,規(guī)則者要考慮到對現(xiàn)在格式和以后格式的兼容問題。多映射或映射分層是必須的。對于主機,映射取決于主機名的現(xiàn)有格式,它是通常文本表示域名的子集,加上描述主機地址的RR格式。因為我們需要從地址到主機的可靠映射,所以定義了將地址映射到IN-ADDR.ARPA域的方法。</P>
<P
align=justify>對了郵箱,映射會復(fù)雜一些。通常的郵件地址<local-part>@<mail-domain>,可以通過將<local-part>轉(zhuǎn)換為一個單獨的標(biāo)記,不要管里面的點,將<mail-domain>通過平常的域名解析方法進行解析,這兩部分組合形成一個域名。因此郵件地址HOSTMASTER@SRI-NIC.ARPA,會變?yōu)镠OSTMASTER.SRI-NIC.ARPA。通常的用戶不關(guān)心這些定義的規(guī)則,但用戶應(yīng)該理解它們使用的是一種的許多要求的綜合產(chǎn)物,有要求兼容老產(chǎn)品的,有要求添加新功能的。</P>
<P align=justify>2.4. 例子</P>
<P align=justify>下圖是現(xiàn)在域名系統(tǒng)的一個部分,它在本文中還會經(jīng)常被用到。請注意,這個樹只是實際樹的一個小小的子樹。</P><PRE> |
+---------------------+------------------+
| | |
MIL EDU ARPA
| | |
+-----+-----+ | +------+-----+-----+
| | | | | | |
BRL NOSC DARPA | IN-ADDR SRI-NIC ACC
|
+--------+------------------+---------------+--------+
| | | | |
UCI MIT | UDEL YALE
| ISI
| |
+---+---+ |
| | |
LCS ACHILLES +--+-----+-----+--------+
| | | | | |
XX A C VAXA VENERA Mockapetris</PRE>
<P
align=justify>在此例中,根域有三個子域:MIL,EDU和ARPA,而LCS.MIT.EDU域有一個子域XX.LCS.MIT.EDU,其它的節(jié)點也是域。</P>
<P align=justify>2.5. 命名規(guī)則</P>
<P
align=justify>DNS的命名規(guī)則是為了使對域名的命名比較統(tǒng)一。也就是要將任何現(xiàn)存的對象都可以在最小改動的情況下變?yōu)橛蛎V?jǐn)慎的使用者會選擇域名適合域名系統(tǒng)和應(yīng)用程序。例如在命名郵件域名時,使用者會同時遵守相應(yīng)的郵件協(xié)議。這就使對老軟件的兼容性提高了。下面的規(guī)則是一個較少引起問題的規(guī)則:</P>
<P align=justify><domain> ::= <subdomain> | "
"<BR><subdomain> ::= <label> | <subdomain> "."
<label><BR><label> ::= <letter> [ [ <ldh-str> ]
<let-dig> ]<BR><ldh-str> ::= <let-dig-hyp> |
<let-dig-hyp> <ldh-str><BR><let-dig-hyp> ::=
<let-dig> | "-"<BR><let-dig> ::= <letter> |
<digit><BR><letter> ::= 大小寫的A到Z,共52個<BR><digit> ::=
0到9</P>
<P
align=justify>請注意:域名內(nèi)不分大小寫。標(biāo)記必須遵守ARPANET主機名規(guī)則,它要求主機名必須以字母開始,以字母或數(shù)字結(jié)束,中間的可以是數(shù)字字母或連字符,長度沒有限制。但標(biāo)記必須少于63個字符。下面的字符串就表示了APARNET中的主機:</P>
<P align=justify>A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA</P>
<P align=justify>2.6. 資源記錄</P>
<P
align=justify>域名標(biāo)記結(jié)點,每個結(jié)點都有資源信息集,些集可以為空。資源信息集和由分離資源集(RR)的特殊名字相關(guān)聯(lián)。在集中的RR順序沒有關(guān)系,標(biāo)記有這東西就是了,它不用由名字服務(wù)器,resovler或DNS的其它部分保存,只在這兒有。特定的RR我們認(rèn)為有以下幾個:</P></FONT>
<TABLE cellSpacing=1 cellPadding=7 width="100%" border=1>
<TBODY>
<TR>
<TD vAlign=top width="10%"><FONT face=宋體 size=3>
<P align=justify>owner</FONT></P></TD>
<TD vAlign=top width="90%" colSpan=2><FONT face=宋體 size=3>
<P align=justify>RR能夠被找到的域名</FONT></P></TD></TR>
<TR>
<TD vAlign=top width="90%" colSpan=3 height=9><FONT face=宋體 size=3>
<P
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -