計算機(jī)網(wǎng)絡(luò)日常作業(yè)(二)
計算機(jī)網(wǎng)絡(luò)日常作業(yè)(二)一、概念1 IP地址分類以及子網(wǎng)劃分國際規(guī)定:把所有的IP 地址劃分為 A ,B ,C ,D ,EA 類地址:范圍從0-127,0是保留的并且表示所有IP 地址,而127也是保
計算機(jī)網(wǎng)絡(luò)日常作業(yè)(二)
一、概念
1 IP地址分類以及子網(wǎng)劃分
國際規(guī)定:把所有的IP 地址劃分為 A ,B ,C ,D ,E
A 類地址:范圍從0-127,0是保留的并且表示所有IP 地址,而127也是保留的地址,并且是用于測試環(huán)回用的。因此A 類地址的范圍其實是從1-126之間。
如:10.0.0.1,第一段號碼為網(wǎng)絡(luò)號碼,剩下的三段號碼為本地計算機(jī)的號碼。轉(zhuǎn)換為2進(jìn)制來說,一個A 類IP 地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“0”, 地址范圍從0.0.0.1 到126.0.0.0??捎玫腁 類網(wǎng)絡(luò)有126個,每個網(wǎng)絡(luò)能容納1億多個主機(jī)(2的24次方的主機(jī)數(shù)目) 。以子網(wǎng)掩碼來進(jìn)行區(qū)別:255.0.0.0.
B 類地址:范圍從128-191,如172.168.1.1,第一和第二段號碼為網(wǎng)絡(luò)號碼,剩下的2段號碼為本地計算機(jī)的號碼。轉(zhuǎn)換為2進(jìn)制來說,一個B 類IP 地址由2個字節(jié)的網(wǎng)絡(luò)地址和2個字節(jié)的主機(jī)地址組成,網(wǎng)絡(luò)地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255??捎玫腂 類網(wǎng)絡(luò)有16382個,每個網(wǎng)絡(luò)能容納6萬多個主機(jī) 。以子網(wǎng)掩碼來進(jìn)行區(qū)別:255.255.0.0
C 類地址:范圍從192-223,如192.168.1.1,第一,第二,第三段號碼為網(wǎng)絡(luò)號碼,剩下的最后一段號碼為本地計算機(jī)的號碼。轉(zhuǎn)換為2進(jìn)制來說,一個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ǎng)絡(luò)能容納254個主機(jī)。以子網(wǎng)掩碼來進(jìn)行區(qū)別: 255.255.255.0
D 類地址:范圍從224-239,D 類IP 地址第一個字節(jié)以“1110”開始,它是一個專門保留的地址。它并不指向特定的網(wǎng)絡(luò),目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機(jī),它標(biāo)識共享同一協(xié)議的一組計算機(jī)。
E 類地址:范圍從240-254,以“11110”開始,為將來使用保留。 全零(“0.0.0.0”) 地址對應(yīng)于當(dāng)前主機(jī)。全“1”的IP 地址(“255.255.255.255”) 是當(dāng)前子網(wǎng)的廣播地址。
2 TCP/IP和OSI 體系結(jié)構(gòu)比較
OSI 和TCP/IP的相同點:二者均采用層次結(jié)構(gòu),而且都是按功
能分層。
OSI 和TCP/IP的不同點:
① OSI 分七層,而TCP/IP分四層,嚴(yán)格講,TCP/IP網(wǎng)間網(wǎng)協(xié)議只包括下三層,應(yīng)用程序不算TCP/IP的一部分。
② OSI 層次間存在嚴(yán)格的調(diào)用關(guān)系,兩個(N )層實體的通信必須通過下一層(N-1)層實體,不能越級,而TCP/IP可以越過緊鄰的下一層直接使用更低層次所提供的服務(wù)(這種層次關(guān)系常被稱為“等級”關(guān)系),因而減少了一些不必要的開銷,提高了協(xié)議的效率。 ③ OSI 只考慮用一種標(biāo)準(zhǔn)的公用數(shù)據(jù)網(wǎng)將各種不同的系統(tǒng)互聯(lián)在一起,后來認(rèn)識到互聯(lián)網(wǎng)協(xié)議的重要性,才在網(wǎng)絡(luò)層劃出一個子層來完成互聯(lián)作用。而TCP/IP一開始就考慮到多種異構(gòu)網(wǎng)的互聯(lián)問題,并將互聯(lián)網(wǎng)協(xié)議IP 作為TCP/IP的重要組成部分。
④ OSI 開始偏重于面向連接的服務(wù),后來才開始制定無連接的服務(wù)標(biāo)準(zhǔn),而TCP/IP一開始就有面向連接和無連接服務(wù),無連接服務(wù)的數(shù)據(jù)報對于互聯(lián)網(wǎng)中的數(shù)據(jù)傳送以及分組話音通信都是十分方便的。
⑤ OSI 與TCP/IP對可靠性的強(qiáng)調(diào)也不相同。對OSI 的面向連接服務(wù),數(shù)據(jù)鏈路層、網(wǎng)絡(luò)
,層和傳輸層都要檢測和處理錯誤,尤其在數(shù)據(jù)鏈路層采用校驗、確認(rèn)和超時重傳等措施提供可靠性,而且網(wǎng)絡(luò)和運(yùn)輸層也有類似技術(shù)。而TCP/IP則不然,TCP/IP認(rèn)為可靠性是端到端的問題,應(yīng)由傳輸層來解決,因此它允許單個的鏈路或機(jī)器丟失數(shù)據(jù)或數(shù)據(jù)出錯,網(wǎng)絡(luò)本身不進(jìn)行錯誤恢復(fù),丟失或出錯數(shù)據(jù)的恢復(fù)在源主機(jī)和目的主機(jī)之間進(jìn)行,由傳輸層完成。由于可靠性由主機(jī)完成,增加了主機(jī)的負(fù)擔(dān)。但是,當(dāng)應(yīng)用程序?qū)煽啃砸蟛桓邥r,甚至連主機(jī)也不必進(jìn)行可靠性處理,在這種情況下,TCP/IP網(wǎng)的效率最高。
⑥ 在兩個體系結(jié)構(gòu)中智能的位置也不相同。OSI 網(wǎng)絡(luò)層提供面向連接的服務(wù),將尋徑、流控、順序控制、內(nèi)部確認(rèn)、可靠性帶有智能性的問題,都納入網(wǎng)絡(luò)服務(wù),留給末端主機(jī)的事就不多了。相反,TCP/IP則要求主機(jī)參與幾乎所有網(wǎng)絡(luò)服務(wù),所以對入網(wǎng)的主機(jī)要求很高。 ⑦ OSI 開始未考慮網(wǎng)絡(luò)管理問題,到后來才考慮這個問題,而TCP/IP有較好的網(wǎng)絡(luò)管理。 目前計算機(jī)網(wǎng)絡(luò)中已經(jīng)形成的網(wǎng)絡(luò)體系結(jié)構(gòu)主要有兩個:OSI 參考模型和TCP/IP參考模型。 TCP/IP參考模型是因特網(wǎng)(Internet )的基礎(chǔ)。和OSI 的7層協(xié)議比較,TCP/IP參考模型中沒有會話層和表示層。通常說的TCP/IP是一組協(xié)議的總稱,TCP/IP實際上是一個協(xié)議族(或協(xié)議包),包括100多個相互關(guān)聯(lián)的協(xié)議,其中IP (Internet Protocol ,網(wǎng)際協(xié)議)是網(wǎng)絡(luò)層最主要的協(xié)議;TCP (Transmission Control Protocol,傳輸控制協(xié)議)和UDP (User Datagram Protocol ,用戶數(shù)據(jù)報協(xié)議)是傳輸層中最主要的協(xié)議。一般認(rèn)為IP 、TCP 、UDP 是最根本的三種協(xié)議,是其它協(xié)議的基礎(chǔ)。 TCP/IP也是使用協(xié)議棧來工作,棧是所有用來在兩臺機(jī)器間完成一個傳輸?shù)乃袇f(xié)議的幾個集合。數(shù)據(jù)通過棧,從一臺機(jī)器到另一臺機(jī)器,在這過程中,一個復(fù)雜的查錯系統(tǒng)會在起始機(jī)器和目的機(jī)器中執(zhí)行。棧分成五個層,每一層都能從相鄰的層中接收或發(fā)送數(shù)據(jù),每一層都與許多協(xié)議相聯(lián)系。
3 域名的概念與機(jī)制
域名的概念
通俗的說,域名就相當(dāng)于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。網(wǎng)絡(luò)是基于TCP/IP協(xié)議進(jìn)行通信和連接的,每一臺主機(jī)都有一個唯一的標(biāo)識固定的IP 地址,以區(qū)別在網(wǎng)絡(luò)上成千上萬個用戶和計算機(jī)。網(wǎng)絡(luò)在區(qū)分所有與之相連的網(wǎng)絡(luò)和主機(jī)時,均采用了一種唯一、通用的地址格式,即每一個與網(wǎng)絡(luò)相連接的計算機(jī)和服務(wù)器都被指派了一個獨一無二的地址。為了保證網(wǎng)絡(luò)上每臺計算機(jī)的IP 地址的唯一性,用戶必須向特定機(jī)構(gòu)申請注冊,該機(jī)構(gòu)根據(jù)用戶單位的網(wǎng)絡(luò)規(guī)模和近期發(fā)展計劃,分配IP 地址。網(wǎng)絡(luò)中的地址方案分為兩套:IP 地址系統(tǒng)和域名地址系統(tǒng)。這兩套地址系統(tǒng)其實是一一對應(yīng)的關(guān)系。IP 地址用二進(jìn)制數(shù)來表示,每個IP 地址長32比特,由4個小于256的數(shù)字組成,數(shù)字之間用點間隔,例如100.10.0.1表示一個IP 地址。由于IP 地址是數(shù)字標(biāo)識,使用時難以記憶和書寫,因此在IP 地址的基礎(chǔ)上又發(fā)展出一種符號化的地址方案,來代替數(shù)字型的IP 地址。每一個符號化的地址都與特定的IP 地址對應(yīng),這樣網(wǎng)絡(luò)上的資源訪問起來就容易得多了。這個與網(wǎng)絡(luò)上的數(shù)字型IP 地址相對應(yīng)的字符型地址,就被稱為域名。
可見域名就是上網(wǎng)單位的名稱,是一個通過計算機(jī)登上網(wǎng)絡(luò)的單位在該網(wǎng)中的地址。一個公司如果希望在網(wǎng)絡(luò)上建立自己的主頁,就必須取得一個域名,域名也是由若干部分組成,包括數(shù)字和字母。通過該地址,人們可以在網(wǎng)絡(luò)上找到所需的詳細(xì)資料。域名是上網(wǎng)單位和個人在網(wǎng)絡(luò)上的重要標(biāo)識,起著識別作用 ,便于他人識別和檢索某一企業(yè) 、組織或個人的信息資源,從而更好地實現(xiàn)網(wǎng)絡(luò)上的資源共享。除了識別功能外,在虛擬環(huán)境下,域名還可以起到引導(dǎo)、宣傳、代表等作用。
域名的機(jī)制
,2.1. 定義和名詞
域名空間是樹狀結(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ù)擴(kuò)展便于使用。
用戶需要輸入域名時,每個節(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 和" "的子域。
2.2. 管理規(guī)范
作為策略,DNS 技術(shù)說明未說明一個特定的樹結(jié)構(gòu)或什么規(guī)則來選擇標(biāo)記,此說明希望達(dá)到的目的是越簡單越好。應(yīng)用程序的開發(fā)可以不管名字空間的邊界和名字服務(wù)器的存在。這不是說沒有規(guī)矩地亂來,而是把規(guī)則制定得開放以便于處理問題,樹的不同部分可以有不同的規(guī)則。例如IN-ADDR.ARPA 分布在網(wǎng)絡(luò)各處,用于將網(wǎng)絡(luò)或主機(jī)號轉(zhuǎn)換為主機(jī)名,而NetBIOS 域是平面式的,原因很簡單,這樣便于應(yīng)用。但是,對于名字空間的通常部分,我們還是有規(guī)定的,目的是為了應(yīng)用起來比較方便。低層域名最終被分為多個區(qū),這樣的域應(yīng)該在頂層域上提供一個標(biāo)記使最終的解析可能不必重名字就可以完成。在管理的時候,老的軟件可能不支持結(jié)點標(biāo)記中的數(shù)字,特殊字符。
2.3. 技術(shù)規(guī)范
在DNS 能夠被用來為某些種類的結(jié)點保存名字信息前,必須滿足下面兩個條件:
? 要有在對象名和域之間映射的規(guī)則,這個規(guī)則描述了關(guān)于對象的信息如何被訪
問
? 需要有描述對象的RR 類型和數(shù)據(jù)格式
這些規(guī)則可煩可簡,規(guī)則者要考慮到對現(xiàn)在格式和以后格式的兼容問題。多映射或映射分層是必須的。對于主機(jī),映射取決于主機(jī)名的現(xiàn)有格式,它是通常文本表示域名的子集,加上描述主機(jī)地址的RR 格式。因為我們需要從地址到主機(jī)的可靠映射,所以定義了將地址映射到IN-ADDR.ARPA 域的方法。
對了郵箱,映射會復(fù)雜一些。通常的郵件地址
HOSTMASTER@SRI-NIC.ARPA,會變?yōu)镠OSTMASTER.SRI-NIC.ARPA 。通常的用戶不關(guān)
,心這些定義的規(guī)則,但用戶應(yīng)該理解它們使用的是一種的許多要求的綜合產(chǎn)物,有要求兼容老產(chǎn)品的,有要求添加新功能的。
2.5. 命名規(guī)則
DNS 的命名規(guī)則是為了使對域名的命名比較統(tǒng)一。也就是要將任何現(xiàn)存的對象都可以在最小改動的情況下變?yōu)橛蛎?。?jǐn)慎的使用者會選擇域名適合域名系統(tǒng)和應(yīng)用程序。例如在命名郵件域名時,使用者會同時遵守相應(yīng)的郵件協(xié)議。這就使對老軟件的兼容性提高了。下面的規(guī)則是一個較少引起問題的規(guī)則:
請注意:域名內(nèi)不分大小寫。標(biāo)記必須遵守ARPANET 主機(jī)名規(guī)則,它要求主機(jī)名必須以字母開始,以字母或數(shù)字結(jié)束,中間的可以是數(shù)字字母或連字符,長度沒有限制。但標(biāo)記必須少于63個字符。下面的字符串就表示了APARNET 中的主機(jī):
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
2.6. 資源記錄
域名標(biāo)記結(jié)點,每個結(jié)點都有資源信息集,些集可以為空。資源信息集和由分離資源集(RR )的特殊名字相關(guān)聯(lián)。在集中的RR 順序沒有關(guān)系,標(biāo)記有這東西就是了,它不用由名字服務(wù)器,resovler 或DNS 的其它部分保存,只在這兒有。特定的RR 我們認(rèn)為有以下幾個:
擁有資源的名字通常是隱式的,不構(gòu)成RR 的一部分。TTL 時間只影響緩沖內(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 中保存的時是經(jīng)過壓縮編碼處理的。本文中我們采用相同于主文件中表示的表示方法,也就是不壓縮的方法,以便顯示RR 的內(nèi)容。行開始時給出誰擁有RR ,如果這一位置空出,就表示本行RR 的擁有者和上面RR 的擁有者是一個。其后是TTL ,type 和RR 的class 。RR 的RDATA 部分是在當(dāng)前數(shù)據(jù)的表示類型的基礎(chǔ)上得到的。
2.6.2. 別名和統(tǒng)一命名
現(xiàn)存的系統(tǒng)中有時會對相同的資源有不同的命名,不但主機(jī)是這樣,郵箱也是這樣,不同的名字指向的是同一個位置。大部分系統(tǒng)都能夠?qū)Χ鄠€名字指定一個是統(tǒng)一命名的結(jié)果,另外的是別名。域名系統(tǒng)提供使用統(tǒng)一命名的機(jī)制(CNAME RR ),CNAME RR標(biāo)記它的owner 名為別名,并指出在RDATA 部分的相應(yīng)統(tǒng)一命名。如果一個結(jié)點存在CNAME RR,不應(yīng)該有其它的數(shù)據(jù),這保證了統(tǒng)一命名和它的別名不能不同。這也使得緩沖的CNAME 可以不用檢索認(rèn)證權(quán)威服務(wù)器就可以提供服務(wù)。在有CNAME RR時,DNS 軟件如果查詢不到與域名相關(guān)的資源,它會檢查資
,源集中是不是有一個有匹配class 的CNAME ,如果有,名字服務(wù)器返回的應(yīng)答中包括這個CNAME 記錄,并根據(jù)在CNAME 中指定的數(shù)據(jù)開始新的查詢。
2.7. 查詢
查詢就是發(fā)向名字服務(wù)器要求響應(yīng)的一個請求。在Internet 上,這種請求以UDP 或TCP 傳輸,名字服務(wù)器的響應(yīng)可以是查詢結(jié)果,或是另一個名字名字器地址,要么就是一個錯誤信息。通常用戶并不直接發(fā)送請求,而是向resolver 發(fā)送請求,由resolver 依次將一個或多個請求發(fā)向名字服務(wù)器,并負(fù)責(zé)處理錯誤情況。請求和響應(yīng)有標(biāo)準(zhǔn)格式,它們包括一個頭和數(shù)個固定的域,然后是包括查詢參數(shù)和RR 的四個部分。頭中最重要的域是稱為操作符的東西,它指出要進(jìn)行什么操作。在所有可能的16個值中,標(biāo)準(zhǔn)查詢是必須的,反向查詢和狀態(tài)查詢是可選的,有一個完全查詢已經(jīng)過時,其它的還未指定。而上面的提到的四個部分如下:
請注意:因頭中操作符(碼)的不同,這些部分的內(nèi)容可能不同,但格式可是一樣的。
2.7.1. 標(biāo)準(zhǔn)查詢
標(biāo)準(zhǔn)查詢指定一個目標(biāo)域名(QNAME ),查詢類型(QTYPE )和查詢類(QCLASS ),然后尋找相應(yīng)的RR ,這類的查詢占了DNS 查詢的絕大部分,如果未有特殊說明,一般都指這種查詢。
2.7.2. 反向查詢(可選)
名字服務(wù)器可以反映資源和域名之間的映射關(guān)系。標(biāo)準(zhǔn)查詢可以對將域名映射到SOA RR,相應(yīng)的反向查詢則映射SOA RR到域名。
對于名字服務(wù)器來說這種實現(xiàn)是可選的,但是所有的名字服務(wù)器必須至少能夠理解反向查詢消息,不能說發(fā)來的消息當(dāng)不知道。域名系統(tǒng)不保證反向查詢的完全和唯一性,因為系統(tǒng)是按照域名而非主機(jī)地址或其它資源類型安排的。反向查詢主要用于調(diào)試,以及和數(shù)據(jù)庫支持相關(guān)的活動中。反向查詢可以不返回正確的TTL ,也不標(biāo)明RR 是某個集合中的一員,我們不知道它是不是唯一的,因此反向查詢的結(jié)果不緩沖。反向查詢對于映射主機(jī)地址到主機(jī)名是不合適的,此時要用IN-ADDR.ARPA 域。
3.1. 介紹
,名字服務(wù)器保存了許多信息,這些信息組成了域數(shù)據(jù)庫。數(shù)據(jù)庫被分為區(qū),這些區(qū)在不同的服務(wù)器上保存。服務(wù)器可以有不同的可選函數(shù)和數(shù)據(jù)源,它最基本的工作是響應(yīng)查詢,它的響應(yīng)是是一種簡單的形式進(jìn)行的,響應(yīng)可以僅根據(jù)本地數(shù)據(jù)作出,也可以根據(jù)其它相關(guān)服務(wù)器而做出。一個給定的區(qū)可以根據(jù)不同的服務(wù)器來保證其有效性,通過管理命令,用戶可以查詢由至少兩臺服務(wù)器保存的一個區(qū)上的數(shù)據(jù),多臺服務(wù)器保存信息保證了適當(dāng)?shù)娜哂唷?/p>
給定的名字服務(wù)器通常支持一個或多個區(qū),但只充當(dāng)域樹一小部分的認(rèn)證權(quán)威。它有一些緩沖的非認(rèn)證信息,這些信息是域樹其它部分的,在響應(yīng)查詢時名字服務(wù)器會給出什么時它認(rèn)證的,什么是它緩沖的。
3.2. 數(shù)據(jù)庫如何被劃分為區(qū)
劃分?jǐn)?shù)據(jù)庫有兩種方法,一種是根據(jù)class ,另一種是在名字空間的結(jié)點間進(jìn)行分隔,而產(chǎn)生,我們稱這種分隔為cut 。class (以下我們稱為類)分隔比較簡單,在傳統(tǒng)上,名字空間和所有類是一回事,分隔的類可被認(rèn)為是一系列平行的名字空間樹。創(chuàng)建新類的通常理由是要為已有的類型創(chuàng)建新的數(shù)據(jù)格式,或是為了對已有的名字空間進(jìn)行分隔管理。在一個類中可在兩個相鄰的結(jié)點進(jìn)行cut (以下我們稱為切分),在所有的切分完成后,相連空間的每個組就是一個獨立的區(qū)。此區(qū)是在相連區(qū)域內(nèi)所有數(shù)據(jù)的認(rèn)證權(quán)威。
這種方法意味著所有的區(qū)至少有一個結(jié)點,域名和所有特定區(qū)內(nèi)的結(jié)點是相連的。給定的樹型結(jié)構(gòu)一定有一個點更加靠近根,我們用這個點標(biāo)記這個區(qū)。雖然可能沒什么用,也可以將每個域名分在不同的區(qū)中,也可以讓所有的結(jié)點在一個區(qū)中。另外,數(shù)據(jù)庫也可根據(jù)不同企業(yè)對名字的控制進(jìn)行劃分,有些企業(yè)可能希望自己管理某一部分域名子樹,這時這個企業(yè)就可以對域名進(jìn)行相應(yīng)的增加或刪除操作,可以自己加入自己的下一級域名。當(dāng)然,這個企業(yè)也可以對自己管理的名字空間進(jìn)行進(jìn)一步劃分。
3.2.1. 技術(shù)問題
描述一個區(qū)的數(shù)據(jù)有四部分:
1. 區(qū)中所有結(jié)點的認(rèn)證數(shù)據(jù)
2. 定義區(qū)內(nèi)頂結(jié)點的數(shù)據(jù)(此數(shù)據(jù)可被認(rèn)為是認(rèn)證數(shù)據(jù)的一部分)
3. 描述代表子區(qū)的數(shù)據(jù)
4. 訪問服務(wù)器子區(qū)的數(shù)據(jù)(我們也稱為“相關(guān)”(glue )數(shù)據(jù))
所有這些數(shù)據(jù)以RR 的形式表示,所有區(qū)可以被RR 集的形式描述。通過傳輸RR ,可以傳輸整個區(qū),具體的方法可以是通過FTP 傳輸相應(yīng)的文本文件,或是通過網(wǎng)絡(luò)消息的形式傳輸。一個區(qū)的認(rèn)證數(shù)據(jù)是所有的RR ,這些RR 和樹中所有的結(jié)點是關(guān)聯(lián)的,要么就是切分后的結(jié)點關(guān)聯(lián)。描述頂結(jié)點的RR 對于區(qū)的管理特別重要,這些RR 有兩種類型,名字服務(wù)器RR ,它描述了區(qū)中的服務(wù)器列表;另一種是SOA RR,它描述的區(qū)的管理參數(shù)。
,描述切分的RR 是NS RR ,因為切分是在結(jié)點間進(jìn)行的,所有RR 不是區(qū)認(rèn)證數(shù)據(jù)的一部分,它應(yīng)該和相應(yīng)的在子區(qū)內(nèi)的頂結(jié)點一致。因為名字服務(wù)器通常和區(qū)邊界相關(guān),NS RR只在一些區(qū)的頂結(jié)點上有。在組成一個區(qū)的數(shù)據(jù)中,NS RR在頂層結(jié)點和在邊界底的切分處出現(xiàn),不在其它地方。
區(qū)結(jié)構(gòu)所要實現(xiàn)的一個目標(biāo)是任何區(qū)都有足夠的數(shù)據(jù)可以和任何子區(qū)建立通信。也就是說,父區(qū)有足夠的信息可以訪問子區(qū)中的任何一臺名字服務(wù)器。NS RR 命名了子區(qū)服務(wù)器,它不足以完成上面的要求,因此有了名字但仍然不知道地址。特別地,如果名字服務(wù)器的名字在子區(qū)內(nèi)是它自己,我們就無法知道通過它的任何信息了。為了解決這一問題,區(qū)中包括了一個關(guān)聯(lián)RR ,它不是認(rèn)證權(quán)威數(shù)據(jù)的一部分,但它表示了服務(wù)器的地址。如果名字服務(wù)器名在切分下,就需要這些RR 了。
3.2.2. 管理問題
當(dāng)有些組織希望掌握自己的域時,第一步是標(biāo)記合適的父區(qū),然后取得父區(qū)中管理結(jié)點的許可來管理。管理的時候沒有什么具體的技術(shù)問題,可是還是有一些規(guī)則的,對中型的區(qū)可以沒有這些規(guī)定,但是小型的就不行了。本文不具體討論這一問題了,有興趣可參閱相關(guān)的資料。
一旦選擇了子區(qū)的名字,此區(qū)的新管理結(jié)點要冗余的名字服務(wù)器來支持。注意:沒有要求一個區(qū)的服務(wù)器必須在此域中有名字的主機(jī)上。在許多種情況下,一個區(qū)要想被更容易地訪問到最好把內(nèi)容放得分散一點,不要集中在一起?,F(xiàn)在許多國家的名字服務(wù)器是放置在別國的,這樣在取得名字解析的時候不用把請求千里迢迢送到遠(yuǎn)程主機(jī)上去了。作為配置的最后一步,就是要選擇NS RR 和關(guān)聯(lián)RR 。
3.3. 深入名字服務(wù)器
3.3.1. 查詢和響應(yīng)
名字服務(wù)器的主要內(nèi)容就是響應(yīng)標(biāo)準(zhǔn)查詢。查詢和響應(yīng)有專用的格式,查詢包括QTYPE ,QCLASS 和QNAME ,它描述了需要數(shù)據(jù)的類型,類(class )和名字。服務(wù)器的響應(yīng)取決于它支持不支持循環(huán)查詢:
最簡單的是不支持循環(huán)查詢,它返回的要么是本地信息,要么是一個錯誤碼,告訴用戶你要的信息這里沒有,然后再返回一個鄰近服務(wù)器的地址,讓用戶到那里去查一查。
? 如果支持循環(huán)查詢,那名字服務(wù)器如果未能在本地找到相應(yīng)的信息,就代替用戶向其它服務(wù)器進(jìn)行查詢,這時它是代替用戶扮演了resolver 的角色,直到最后把結(jié)果找到(也可能根本沒有結(jié)果,那就返回錯誤),并返回給用戶為止。 ?
使用循環(huán)查詢要客戶和服務(wù)器雙方都支持才行。這個信息通過查詢和響應(yīng)中的兩位來交換:
,如果允許循環(huán)查詢則設(shè)置RA 位,服務(wù)器方可以不管客戶是否進(jìn)行請求而直接設(shè)置此位
? 查詢中如果請求循環(huán)查詢則設(shè)置RD 位,客戶只有在知道服務(wù)器方支持循環(huán)查詢后才能夠進(jìn)行循環(huán)查詢請求 ?
客戶可以在響應(yīng)中同時設(shè)置RA 和RD 位來確認(rèn)是否支持循環(huán)查詢請求。請注意:服務(wù)器在客戶未指明RD 位時不會自己進(jìn)行循環(huán)查詢。
如果請求了循環(huán)查詢,同時也支持循環(huán)查詢,對查詢的響應(yīng)會是以下之一:
? 查詢指定的CNAME RR有多個別名
? 指定的名字服務(wù)器不存在
? 臨時錯誤
如果未請求循環(huán)查詢或不支持循環(huán)查詢,則響應(yīng)可以可能是:
- 認(rèn)證權(quán)威服務(wù)器指出名字不存在
- 臨時錯誤
另外還會提供一些信息,指出所查詢的RR 是否從一個區(qū)來,或者是不是被緩存;另一種信息指明名字服務(wù)器指出還有一個服務(wù)器擁有相同的記錄,這個服務(wù)器更靠近要查詢的名字的祖先。
3.3.2. 算法
名字服務(wù)器使用的算法和本地操作系統(tǒng)和數(shù)據(jù)結(jié)構(gòu)相關(guān),下面的算法假設(shè)RR 以幾個樹型結(jié)構(gòu)組織,一個樹就是區(qū),有一個樹是用于緩沖的:
1. 是不是支持循環(huán)查詢要看服務(wù)器,如果支持,而且需要循環(huán)查詢,
轉(zhuǎn)到第5步;
2. 查詢最靠近QNAME 祖先的結(jié)點所在的區(qū),如果未找到這個區(qū),轉(zhuǎn)第
4步;
3. 開始在區(qū)內(nèi)從上到下進(jìn)行匹配,匹配過程的結(jié)束條件有以下幾個:
如果整個QNAME 匹配了,我們就找到了。如果數(shù)據(jù)所在結(jié)果
是CNAME ,QTYPE 不匹配CNAME ,復(fù)制CNAME RR 到響應(yīng)的應(yīng)
答區(qū),將QNAME 改變?yōu)镃NAME RR中的標(biāo)準(zhǔn)形式后返回第1
步;否則復(fù)制所有匹配QTYPE 的RR 到響應(yīng)的應(yīng)答區(qū),然后
轉(zhuǎn)第6步;
? 如果匹配的結(jié)果使我們離開了認(rèn)證權(quán)威,我們就獲得一個參
照(referral ),我們這時會碰到一個帶有NS RR的結(jié)點,
復(fù)制NS RR 到響應(yīng)的認(rèn)證區(qū)內(nèi),在其它區(qū)域隨便放上什么地
址,如果從認(rèn)證數(shù)據(jù)或緩沖內(nèi)沒有獲得地址,可以使用關(guān)聯(lián)
RR 。然后轉(zhuǎn)到第4步; ?
,如果在一些標(biāo)記上不可能有匹配,看看是不是有"*"標(biāo)記存
在,如果"*"標(biāo)記不存在,檢查我們要查找的名字是不是
QNAME ,如果名字就是原來的QNAME ,在響應(yīng)中設(shè)置錯誤,
否則退出。如果"*"存在,以RR 和QTYPE 匹配,如果匹配成
功,將它們復(fù)制到響應(yīng)中,但設(shè)置RR 的擁有者(owner )為
QNAME ,不是帶有"*"的結(jié)點,然后轉(zhuǎn)到第6步;
4. 在緩沖中進(jìn)行匹配,如果在緩沖中找到QNAME ,將所有和它關(guān)聯(lián)的
而且匹配QTYPE 的RR 復(fù)制到響應(yīng)區(qū),如果沒有從認(rèn)證權(quán)威來的授
權(quán),可以在緩沖中尋找最好的一個,將它放在認(rèn)證區(qū)內(nèi),然后轉(zhuǎn)到
第6步;
5. 使用本地resolver 響應(yīng)請求。保存包括中間CNAME 在內(nèi)的結(jié)果到
應(yīng)答中。
6. 僅使用本地數(shù)據(jù),試著加入其它有用的RR 到查詢的附加部分。然
后退出。
3.3.5. 區(qū)的維護(hù)與傳輸
區(qū)管理員的部分工作是維護(hù)所有服務(wù)器上的區(qū)數(shù)據(jù)。當(dāng)必須要進(jìn)行修改時,修改必須讓所有的名字服務(wù)器知道。這一過程可以通過FTP 或其它什么過程完成,而推薦的方法是DNS 協(xié)議的區(qū)傳輸部分所指出的方法。通常的自動更新模式是一個服務(wù)器是區(qū)的主服務(wù)器,管理員對區(qū)內(nèi)的域名文件(master file)進(jìn)行修改,修改后管理員通知主服務(wù)器裝載新的數(shù)據(jù),其它的非主服務(wù)器定期和主服務(wù)器進(jìn)行同步。
為了知道是否發(fā)生了修改,非主服務(wù)器必須檢查SOA 的SERIAL 域,只要有改變,SERIAL 域就會改變,這種改變可能是加一,也可能是其它的什么算法,反正變了就行。因為我們改變的域大小是有范圍的,因此理論上必須有一個修改的時間間隔,基本上,老的復(fù)本必須在序列號(就是那個域)用完其空間一半時消失。實際上只要保證比較操作的正確性就可以了。
非主服務(wù)器的定期同步由區(qū)內(nèi)SOA RR的參數(shù)REFRESH ,RETRY 和EXPIRE 決定。當(dāng)非主服務(wù)器裝入新區(qū)時,它會在REFRESH 秒后向主服務(wù)器查詢新序列號,如果查詢未能完成,它會每隔RETRY 秒重新進(jìn)行一次。如果查詢得到的序列號和原來的序列號一樣,則不需要進(jìn)行改變。在REFRESH 時間間隔后重新開始。如果非主服務(wù)器在EXPIRE 間隔后不能進(jìn)行查詢,它必須拋棄現(xiàn)有的區(qū)數(shù)據(jù)。
當(dāng)查詢后知道區(qū)內(nèi)的數(shù)據(jù)已經(jīng)改變,非主服務(wù)器必須通過AXFR 請求請求主服務(wù)器傳送區(qū)數(shù)據(jù)。AXFR 可能會被拒絕而產(chǎn)生錯誤,但是通常情況下會得到一系列響應(yīng)信息。第一個和最后一個信息必須包括區(qū)內(nèi)頂認(rèn)證結(jié)點的數(shù)據(jù)。中間的信息包括區(qū)內(nèi)其它RR 的信息,包括認(rèn)證的和非認(rèn)證的。這些數(shù)據(jù)使非主服務(wù)器得到區(qū)數(shù)據(jù)的復(fù)本,因為必須保證數(shù)據(jù)的準(zhǔn)確,我們必須使用基于連接的協(xié)議。以上的查詢操作不但可以在主服務(wù)器非主服務(wù)器之間進(jìn)行,而且可以在非主服務(wù)器之間進(jìn)行。這可以提高整體的運(yùn)行效率。