計算機網(wǎng)絡日常作業(yè)(二)
計算機網(wǎng)絡日常作業(yè)(二)一、概念1 IP地址分類以及子網(wǎng)劃分國際規(guī)定:把所有的IP 地址劃分為 A ,B ,C ,D ,EA 類地址:范圍從0-127,0是保留的并且表示所有IP 地址,而127也是保
計算機網(wǎng)絡日常作業(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)絡號碼,剩下的三段號碼為本地計算機的號碼。轉換為2進制來說,一個A 類IP 地址由1字節(jié)的網(wǎng)絡地址和3字節(jié)主機地址組成,網(wǎng)絡地址的最高位必須是“0”, 地址范圍從0.0.0.1 到126.0.0.0??捎玫腁 類網(wǎng)絡有126個,每個網(wǎng)絡能容納1億多個主機(2的24次方的主機數(shù)目) 。以子網(wǎng)掩碼來進行區(qū)別:255.0.0.0.
B 類地址:范圍從128-191,如172.168.1.1,第一和第二段號碼為網(wǎng)絡號碼,剩下的2段號碼為本地計算機的號碼。轉換為2進制來說,一個B 類IP 地址由2個字節(jié)的網(wǎng)絡地址和2個字節(jié)的主機地址組成,網(wǎng)絡地址的最高位必須是“10”,地址范圍從128.0.0.0到191.255.255.255??捎玫腂 類網(wǎng)絡有16382個,每個網(wǎng)絡能容納6萬多個主機 。以子網(wǎng)掩碼來進行區(qū)別:255.255.0.0
C 類地址:范圍從192-223,如192.168.1.1,第一,第二,第三段號碼為網(wǎng)絡號碼,剩下的最后一段號碼為本地計算機的號碼。轉換為2進制來說,一個C 類IP 地址由3字節(jié)的網(wǎng)絡地址和1字節(jié)的主機地址組成,網(wǎng)絡地址的最高位必須是“110”。范圍從192.0.0.0到223.255.255.255。C 類網(wǎng)絡可達209萬余個,每個網(wǎng)絡能容納254個主機。以子網(wǎng)掩碼來進行區(qū)別: 255.255.255.0
D 類地址:范圍從224-239,D 類IP 地址第一個字節(jié)以“1110”開始,它是一個專門保留的地址。它并不指向特定的網(wǎng)絡,目前這一類地址被用在多點廣播(Multicast)中。多點廣播地址用來一次尋址一組計算機,它標識共享同一協(xié)議的一組計算機。
E 類地址:范圍從240-254,以“11110”開始,為將來使用保留。 全零(“0.0.0.0”) 地址對應于當前主機。全“1”的IP 地址(“255.255.255.255”) 是當前子網(wǎng)的廣播地址。
2 TCP/IP和OSI 體系結構比較
OSI 和TCP/IP的相同點:二者均采用層次結構,而且都是按功
能分層。
OSI 和TCP/IP的不同點:
① OSI 分七層,而TCP/IP分四層,嚴格講,TCP/IP網(wǎng)間網(wǎng)協(xié)議只包括下三層,應用程序不算TCP/IP的一部分。
② OSI 層次間存在嚴格的調用關系,兩個(N )層實體的通信必須通過下一層(N-1)層實體,不能越級,而TCP/IP可以越過緊鄰的下一層直接使用更低層次所提供的服務(這種層次關系常被稱為“等級”關系),因而減少了一些不必要的開銷,提高了協(xié)議的效率。 ③ OSI 只考慮用一種標準的公用數(shù)據(jù)網(wǎng)將各種不同的系統(tǒng)互聯(lián)在一起,后來認識到互聯(lián)網(wǎng)協(xié)議的重要性,才在網(wǎng)絡層劃出一個子層來完成互聯(lián)作用。而TCP/IP一開始就考慮到多種異構網(wǎng)的互聯(lián)問題,并將互聯(lián)網(wǎng)協(xié)議IP 作為TCP/IP的重要組成部分。
④ OSI 開始偏重于面向連接的服務,后來才開始制定無連接的服務標準,而TCP/IP一開始就有面向連接和無連接服務,無連接服務的數(shù)據(jù)報對于互聯(lián)網(wǎng)中的數(shù)據(jù)傳送以及分組話音通信都是十分方便的。
⑤ OSI 與TCP/IP對可靠性的強調也不相同。對OSI 的面向連接服務,數(shù)據(jù)鏈路層、網(wǎng)絡
,層和傳輸層都要檢測和處理錯誤,尤其在數(shù)據(jù)鏈路層采用校驗、確認和超時重傳等措施提供可靠性,而且網(wǎng)絡和運輸層也有類似技術。而TCP/IP則不然,TCP/IP認為可靠性是端到端的問題,應由傳輸層來解決,因此它允許單個的鏈路或機器丟失數(shù)據(jù)或數(shù)據(jù)出錯,網(wǎng)絡本身不進行錯誤恢復,丟失或出錯數(shù)據(jù)的恢復在源主機和目的主機之間進行,由傳輸層完成。由于可靠性由主機完成,增加了主機的負擔。但是,當應用程序對可靠性要求不高時,甚至連主機也不必進行可靠性處理,在這種情況下,TCP/IP網(wǎng)的效率最高。
⑥ 在兩個體系結構中智能的位置也不相同。OSI 網(wǎng)絡層提供面向連接的服務,將尋徑、流控、順序控制、內部確認、可靠性帶有智能性的問題,都納入網(wǎng)絡服務,留給末端主機的事就不多了。相反,TCP/IP則要求主機參與幾乎所有網(wǎng)絡服務,所以對入網(wǎng)的主機要求很高。 ⑦ OSI 開始未考慮網(wǎng)絡管理問題,到后來才考慮這個問題,而TCP/IP有較好的網(wǎng)絡管理。 目前計算機網(wǎng)絡中已經(jīng)形成的網(wǎng)絡體系結構主要有兩個:OSI 參考模型和TCP/IP參考模型。 TCP/IP參考模型是因特網(wǎng)(Internet )的基礎。和OSI 的7層協(xié)議比較,TCP/IP參考模型中沒有會話層和表示層。通常說的TCP/IP是一組協(xié)議的總稱,TCP/IP實際上是一個協(xié)議族(或協(xié)議包),包括100多個相互關聯(lián)的協(xié)議,其中IP (Internet Protocol ,網(wǎng)際協(xié)議)是網(wǎng)絡層最主要的協(xié)議;TCP (Transmission Control Protocol,傳輸控制協(xié)議)和UDP (User Datagram Protocol ,用戶數(shù)據(jù)報協(xié)議)是傳輸層中最主要的協(xié)議。一般認為IP 、TCP 、UDP 是最根本的三種協(xié)議,是其它協(xié)議的基礎。 TCP/IP也是使用協(xié)議棧來工作,棧是所有用來在兩臺機器間完成一個傳輸?shù)乃袇f(xié)議的幾個集合。數(shù)據(jù)通過棧,從一臺機器到另一臺機器,在這過程中,一個復雜的查錯系統(tǒng)會在起始機器和目的機器中執(zhí)行。棧分成五個層,每一層都能從相鄰的層中接收或發(fā)送數(shù)據(jù),每一層都與許多協(xié)議相聯(lián)系。
3 域名的概念與機制
域名的概念
通俗的說,域名就相當于一個家庭的門牌號碼,別人通過這個號碼可以很容易的找到你。網(wǎng)絡是基于TCP/IP協(xié)議進行通信和連接的,每一臺主機都有一個唯一的標識固定的IP 地址,以區(qū)別在網(wǎng)絡上成千上萬個用戶和計算機。網(wǎng)絡在區(qū)分所有與之相連的網(wǎng)絡和主機時,均采用了一種唯一、通用的地址格式,即每一個與網(wǎng)絡相連接的計算機和服務器都被指派了一個獨一無二的地址。為了保證網(wǎng)絡上每臺計算機的IP 地址的唯一性,用戶必須向特定機構申請注冊,該機構根據(jù)用戶單位的網(wǎng)絡規(guī)模和近期發(fā)展計劃,分配IP 地址。網(wǎng)絡中的地址方案分為兩套:IP 地址系統(tǒng)和域名地址系統(tǒng)。這兩套地址系統(tǒng)其實是一一對應的關系。IP 地址用二進制數(shù)來表示,每個IP 地址長32比特,由4個小于256的數(shù)字組成,數(shù)字之間用點間隔,例如100.10.0.1表示一個IP 地址。由于IP 地址是數(shù)字標識,使用時難以記憶和書寫,因此在IP 地址的基礎上又發(fā)展出一種符號化的地址方案,來代替數(shù)字型的IP 地址。每一個符號化的地址都與特定的IP 地址對應,這樣網(wǎng)絡上的資源訪問起來就容易得多了。這個與網(wǎng)絡上的數(shù)字型IP 地址相對應的字符型地址,就被稱為域名。
可見域名就是上網(wǎng)單位的名稱,是一個通過計算機登上網(wǎng)絡的單位在該網(wǎng)中的地址。一個公司如果希望在網(wǎng)絡上建立自己的主頁,就必須取得一個域名,域名也是由若干部分組成,包括數(shù)字和字母。通過該地址,人們可以在網(wǎng)絡上找到所需的詳細資料。域名是上網(wǎng)單位和個人在網(wǎng)絡上的重要標識,起著識別作用 ,便于他人識別和檢索某一企業(yè) 、組織或個人的信息資源,從而更好地實現(xiàn)網(wǎng)絡上的資源共享。除了識別功能外,在虛擬環(huán)境下,域名還可以起到引導、宣傳、代表等作用。
域名的機制
,2.1. 定義和名詞
域名空間是樹狀結構,每個結點和資源集相對應(這個資源集可能為空),域名系統(tǒng)不區(qū)別樹內結點和葉子結點,統(tǒng)稱為結點。每個結點有一個標記,這個標記的長度為0到63個字節(jié)。不同的結點可以使用相同的標記。0長度的標記(空標記)為根記錄保留。結點的域名是從結點到根的標記組成的。這些標記對大小寫不敏感,這就是說,A 和a 對域名是等效的。但是你在收到域名時最好保留它的大小寫狀態(tài)以便以后的服務擴展便于使用。
用戶需要輸入域名時,每個節(jié)點的標記長度不管多長,總要以點分隔。絕對域名的最后總以點結束,例如"poneria.ISI.EDU." ,而相對域名則不這樣,它由本地域指明位置即可。相對域名相對于一個公認的域名或相對于用作搜索列的一串域名。相對名通常在用戶接口出現(xiàn),在用戶接口,表示方法因實現(xiàn)不同而不同,相對域名也出現(xiàn)在主文件中,主文件相對于一個源域名而設立。為了簡化實現(xiàn),整個域名的長度不得大于255個字節(jié)。域由域名標記,它由其下的域組成。如果一個域包括在另一域中,則稱它為這個域的子域。我們可能通過表示很直觀的看出。如A.B.C.D 是B.C.D ,C.D ,D 和" "的子域。
2.2. 管理規(guī)范
作為策略,DNS 技術說明未說明一個特定的樹結構或什么規(guī)則來選擇標記,此說明希望達到的目的是越簡單越好。應用程序的開發(fā)可以不管名字空間的邊界和名字服務器的存在。這不是說沒有規(guī)矩地亂來,而是把規(guī)則制定得開放以便于處理問題,樹的不同部分可以有不同的規(guī)則。例如IN-ADDR.ARPA 分布在網(wǎng)絡各處,用于將網(wǎng)絡或主機號轉換為主機名,而NetBIOS 域是平面式的,原因很簡單,這樣便于應用。但是,對于名字空間的通常部分,我們還是有規(guī)定的,目的是為了應用起來比較方便。低層域名最終被分為多個區(qū),這樣的域應該在頂層域上提供一個標記使最終的解析可能不必重名字就可以完成。在管理的時候,老的軟件可能不支持結點標記中的數(shù)字,特殊字符。
2.3. 技術規(guī)范
在DNS 能夠被用來為某些種類的結點保存名字信息前,必須滿足下面兩個條件:
? 要有在對象名和域之間映射的規(guī)則,這個規(guī)則描述了關于對象的信息如何被訪
問
? 需要有描述對象的RR 類型和數(shù)據(jù)格式
這些規(guī)則可煩可簡,規(guī)則者要考慮到對現(xiàn)在格式和以后格式的兼容問題。多映射或映射分層是必須的。對于主機,映射取決于主機名的現(xiàn)有格式,它是通常文本表示域名的子集,加上描述主機地址的RR 格式。因為我們需要從地址到主機的可靠映射,所以定義了將地址映射到IN-ADDR.ARPA 域的方法。
對了郵箱,映射會復雜一些。通常的郵件地址
HOSTMASTER@SRI-NIC.ARPA,會變?yōu)镠OSTMASTER.SRI-NIC.ARPA 。通常的用戶不關
,心這些定義的規(guī)則,但用戶應該理解它們使用的是一種的許多要求的綜合產(chǎn)物,有要求兼容老產(chǎn)品的,有要求添加新功能的。
2.5. 命名規(guī)則
DNS 的命名規(guī)則是為了使對域名的命名比較統(tǒng)一。也就是要將任何現(xiàn)存的對象都可以在最小改動的情況下變?yōu)橛蛎?。謹慎的使用者會選擇域名適合域名系統(tǒng)和應用程序。例如在命名郵件域名時,使用者會同時遵守相應的郵件協(xié)議。這就使對老軟件的兼容性提高了。下面的規(guī)則是一個較少引起問題的規(guī)則:
請注意:域名內不分大小寫。標記必須遵守ARPANET 主機名規(guī)則,它要求主機名必須以字母開始,以字母或數(shù)字結束,中間的可以是數(shù)字字母或連字符,長度沒有限制。但標記必須少于63個字符。下面的字符串就表示了APARNET 中的主機:
A.ISI.EDU XX.LCS.MIT.EDU SRI-NIC.ARPA
2.6. 資源記錄
域名標記結點,每個結點都有資源信息集,些集可以為空。資源信息集和由分離資源集(RR )的特殊名字相關聯(lián)。在集中的RR 順序沒有關系,標記有這東西就是了,它不用由名字服務器,resovler 或DNS 的其它部分保存,只在這兒有。特定的RR 我們認為有以下幾個:


擁有資源的名字通常是隱式的,不構成RR 的一部分。TTL 時間只影響緩沖內的數(shù)據(jù),不影響區(qū)內的已經(jīng)保存的認證數(shù)據(jù)。TTL 通常由管理員設置,TTL=0表示禁止緩沖。RDATA 內的數(shù)據(jù)是二進制串和域名的混合。域名通常使用指針指向DNS 內的其它數(shù)據(jù)。
2.6.1. RR的文本表示
RR 在DNS 中是以二進制形式表示的,而在名字服務器或resolver 中保存的時是經(jīng)過壓縮編碼處理的。本文中我們采用相同于主文件中表示的表示方法,也就是不壓縮的方法,以便顯示RR 的內容。行開始時給出誰擁有RR ,如果這一位置空出,就表示本行RR 的擁有者和上面RR 的擁有者是一個。其后是TTL ,type 和RR 的class 。RR 的RDATA 部分是在當前數(shù)據(jù)的表示類型的基礎上得到的。
2.6.2. 別名和統(tǒng)一命名
現(xiàn)存的系統(tǒng)中有時會對相同的資源有不同的命名,不但主機是這樣,郵箱也是這樣,不同的名字指向的是同一個位置。大部分系統(tǒng)都能夠對多個名字指定一個是統(tǒng)一命名的結果,另外的是別名。域名系統(tǒng)提供使用統(tǒng)一命名的機制(CNAME RR ),CNAME RR標記它的owner 名為別名,并指出在RDATA 部分的相應統(tǒng)一命名。如果一個結點存在CNAME RR,不應該有其它的數(shù)據(jù),這保證了統(tǒng)一命名和它的別名不能不同。這也使得緩沖的CNAME 可以不用檢索認證權威服務器就可以提供服務。在有CNAME RR時,DNS 軟件如果查詢不到與域名相關的資源,它會檢查資
,源集中是不是有一個有匹配class 的CNAME ,如果有,名字服務器返回的應答中包括這個CNAME 記錄,并根據(jù)在CNAME 中指定的數(shù)據(jù)開始新的查詢。
2.7. 查詢
查詢就是發(fā)向名字服務器要求響應的一個請求。在Internet 上,這種請求以UDP 或TCP 傳輸,名字服務器的響應可以是查詢結果,或是另一個名字名字器地址,要么就是一個錯誤信息。通常用戶并不直接發(fā)送請求,而是向resolver 發(fā)送請求,由resolver 依次將一個或多個請求發(fā)向名字服務器,并負責處理錯誤情況。請求和響應有標準格式,它們包括一個頭和數(shù)個固定的域,然后是包括查詢參數(shù)和RR 的四個部分。頭中最重要的域是稱為操作符的東西,它指出要進行什么操作。在所有可能的16個值中,標準查詢是必須的,反向查詢和狀態(tài)查詢是可選的,有一個完全查詢已經(jīng)過時,其它的還未指定。而上面的提到的四個部分如下:

請注意:因頭中操作符(碼)的不同,這些部分的內容可能不同,但格式可是一樣的。
2.7.1. 標準查詢
標準查詢指定一個目標域名(QNAME ),查詢類型(QTYPE )和查詢類(QCLASS ),然后尋找相應的RR ,這類的查詢占了DNS 查詢的絕大部分,如果未有特殊說明,一般都指這種查詢。
2.7.2. 反向查詢(可選)
名字服務器可以反映資源和域名之間的映射關系。標準查詢可以對將域名映射到SOA RR,相應的反向查詢則映射SOA RR到域名。
對于名字服務器來說這種實現(xiàn)是可選的,但是所有的名字服務器必須至少能夠理解反向查詢消息,不能說發(fā)來的消息當不知道。域名系統(tǒng)不保證反向查詢的完全和唯一性,因為系統(tǒng)是按照域名而非主機地址或其它資源類型安排的。反向查詢主要用于調試,以及和數(shù)據(jù)庫支持相關的活動中。反向查詢可以不返回正確的TTL ,也不標明RR 是某個集合中的一員,我們不知道它是不是唯一的,因此反向查詢的結果不緩沖。反向查詢對于映射主機地址到主機名是不合適的,此時要用IN-ADDR.ARPA 域。
3.1. 介紹
,名字服務器保存了許多信息,這些信息組成了域數(shù)據(jù)庫。數(shù)據(jù)庫被分為區(qū),這些區(qū)在不同的服務器上保存。服務器可以有不同的可選函數(shù)和數(shù)據(jù)源,它最基本的工作是響應查詢,它的響應是是一種簡單的形式進行的,響應可以僅根據(jù)本地數(shù)據(jù)作出,也可以根據(jù)其它相關服務器而做出。一個給定的區(qū)可以根據(jù)不同的服務器來保證其有效性,通過管理命令,用戶可以查詢由至少兩臺服務器保存的一個區(qū)上的數(shù)據(jù),多臺服務器保存信息保證了適當?shù)娜哂唷?/p>
給定的名字服務器通常支持一個或多個區(qū),但只充當域樹一小部分的認證權威。它有一些緩沖的非認證信息,這些信息是域樹其它部分的,在響應查詢時名字服務器會給出什么時它認證的,什么是它緩沖的。
3.2. 數(shù)據(jù)庫如何被劃分為區(qū)
劃分數(shù)據(jù)庫有兩種方法,一種是根據(jù)class ,另一種是在名字空間的結點間進行分隔,而產(chǎn)生,我們稱這種分隔為cut 。class (以下我們稱為類)分隔比較簡單,在傳統(tǒng)上,名字空間和所有類是一回事,分隔的類可被認為是一系列平行的名字空間樹。創(chuàng)建新類的通常理由是要為已有的類型創(chuàng)建新的數(shù)據(jù)格式,或是為了對已有的名字空間進行分隔管理。在一個類中可在兩個相鄰的結點進行cut (以下我們稱為切分),在所有的切分完成后,相連空間的每個組就是一個獨立的區(qū)。此區(qū)是在相連區(qū)域內所有數(shù)據(jù)的認證權威。
這種方法意味著所有的區(qū)至少有一個結點,域名和所有特定區(qū)內的結點是相連的。給定的樹型結構一定有一個點更加靠近根,我們用這個點標記這個區(qū)。雖然可能沒什么用,也可以將每個域名分在不同的區(qū)中,也可以讓所有的結點在一個區(qū)中。另外,數(shù)據(jù)庫也可根據(jù)不同企業(yè)對名字的控制進行劃分,有些企業(yè)可能希望自己管理某一部分域名子樹,這時這個企業(yè)就可以對域名進行相應的增加或刪除操作,可以自己加入自己的下一級域名。當然,這個企業(yè)也可以對自己管理的名字空間進行進一步劃分。
3.2.1. 技術問題
描述一個區(qū)的數(shù)據(jù)有四部分:
1. 區(qū)中所有結點的認證數(shù)據(jù)
2. 定義區(qū)內頂結點的數(shù)據(jù)(此數(shù)據(jù)可被認為是認證數(shù)據(jù)的一部分)
3. 描述代表子區(qū)的數(shù)據(jù)
4. 訪問服務器子區(qū)的數(shù)據(jù)(我們也稱為“相關”(glue )數(shù)據(jù))
所有這些數(shù)據(jù)以RR 的形式表示,所有區(qū)可以被RR 集的形式描述。通過傳輸RR ,可以傳輸整個區(qū),具體的方法可以是通過FTP 傳輸相應的文本文件,或是通過網(wǎng)絡消息的形式傳輸。一個區(qū)的認證數(shù)據(jù)是所有的RR ,這些RR 和樹中所有的結點是關聯(lián)的,要么就是切分后的結點關聯(lián)。描述頂結點的RR 對于區(qū)的管理特別重要,這些RR 有兩種類型,名字服務器RR ,它描述了區(qū)中的服務器列表;另一種是SOA RR,它描述的區(qū)的管理參數(shù)。
,描述切分的RR 是NS RR ,因為切分是在結點間進行的,所有RR 不是區(qū)認證數(shù)據(jù)的一部分,它應該和相應的在子區(qū)內的頂結點一致。因為名字服務器通常和區(qū)邊界相關,NS RR只在一些區(qū)的頂結點上有。在組成一個區(qū)的數(shù)據(jù)中,NS RR在頂層結點和在邊界底的切分處出現(xiàn),不在其它地方。
區(qū)結構所要實現(xiàn)的一個目標是任何區(qū)都有足夠的數(shù)據(jù)可以和任何子區(qū)建立通信。也就是說,父區(qū)有足夠的信息可以訪問子區(qū)中的任何一臺名字服務器。NS RR 命名了子區(qū)服務器,它不足以完成上面的要求,因此有了名字但仍然不知道地址。特別地,如果名字服務器的名字在子區(qū)內是它自己,我們就無法知道通過它的任何信息了。為了解決這一問題,區(qū)中包括了一個關聯(lián)RR ,它不是認證權威數(shù)據(jù)的一部分,但它表示了服務器的地址。如果名字服務器名在切分下,就需要這些RR 了。
3.2.2. 管理問題
當有些組織希望掌握自己的域時,第一步是標記合適的父區(qū),然后取得父區(qū)中管理結點的許可來管理。管理的時候沒有什么具體的技術問題,可是還是有一些規(guī)則的,對中型的區(qū)可以沒有這些規(guī)定,但是小型的就不行了。本文不具體討論這一問題了,有興趣可參閱相關的資料。
一旦選擇了子區(qū)的名字,此區(qū)的新管理結點要冗余的名字服務器來支持。注意:沒有要求一個區(qū)的服務器必須在此域中有名字的主機上。在許多種情況下,一個區(qū)要想被更容易地訪問到最好把內容放得分散一點,不要集中在一起?,F(xiàn)在許多國家的名字服務器是放置在別國的,這樣在取得名字解析的時候不用把請求千里迢迢送到遠程主機上去了。作為配置的最后一步,就是要選擇NS RR 和關聯(lián)RR 。
3.3. 深入名字服務器
3.3.1. 查詢和響應
名字服務器的主要內容就是響應標準查詢。查詢和響應有專用的格式,查詢包括QTYPE ,QCLASS 和QNAME ,它描述了需要數(shù)據(jù)的類型,類(class )和名字。服務器的響應取決于它支持不支持循環(huán)查詢:
最簡單的是不支持循環(huán)查詢,它返回的要么是本地信息,要么是一個錯誤碼,告訴用戶你要的信息這里沒有,然后再返回一個鄰近服務器的地址,讓用戶到那里去查一查。
? 如果支持循環(huán)查詢,那名字服務器如果未能在本地找到相應的信息,就代替用戶向其它服務器進行查詢,這時它是代替用戶扮演了resolver 的角色,直到最后把結果找到(也可能根本沒有結果,那就返回錯誤),并返回給用戶為止。 ?
使用循環(huán)查詢要客戶和服務器雙方都支持才行。這個信息通過查詢和響應中的兩位來交換:
,如果允許循環(huán)查詢則設置RA 位,服務器方可以不管客戶是否進行請求而直接設置此位
? 查詢中如果請求循環(huán)查詢則設置RD 位,客戶只有在知道服務器方支持循環(huán)查詢后才能夠進行循環(huán)查詢請求 ?
客戶可以在響應中同時設置RA 和RD 位來確認是否支持循環(huán)查詢請求。請注意:服務器在客戶未指明RD 位時不會自己進行循環(huán)查詢。
如果請求了循環(huán)查詢,同時也支持循環(huán)查詢,對查詢的響應會是以下之一:
? 查詢指定的CNAME RR有多個別名
? 指定的名字服務器不存在
? 臨時錯誤
如果未請求循環(huán)查詢或不支持循環(huán)查詢,則響應可以可能是:
- 認證權威服務器指出名字不存在
- 臨時錯誤
另外還會提供一些信息,指出所查詢的RR 是否從一個區(qū)來,或者是不是被緩存;另一種信息指明名字服務器指出還有一個服務器擁有相同的記錄,這個服務器更靠近要查詢的名字的祖先。
3.3.2. 算法
名字服務器使用的算法和本地操作系統(tǒng)和數(shù)據(jù)結構相關,下面的算法假設RR 以幾個樹型結構組織,一個樹就是區(qū),有一個樹是用于緩沖的:
1. 是不是支持循環(huán)查詢要看服務器,如果支持,而且需要循環(huán)查詢,
轉到第5步;
2. 查詢最靠近QNAME 祖先的結點所在的區(qū),如果未找到這個區(qū),轉第
4步;
3. 開始在區(qū)內從上到下進行匹配,匹配過程的結束條件有以下幾個:
如果整個QNAME 匹配了,我們就找到了。如果數(shù)據(jù)所在結果
是CNAME ,QTYPE 不匹配CNAME ,復制CNAME RR 到響應的應
答區(qū),將QNAME 改變?yōu)镃NAME RR中的標準形式后返回第1
步;否則復制所有匹配QTYPE 的RR 到響應的應答區(qū),然后
轉第6步;
? 如果匹配的結果使我們離開了認證權威,我們就獲得一個參
照(referral ),我們這時會碰到一個帶有NS RR的結點,
復制NS RR 到響應的認證區(qū)內,在其它區(qū)域隨便放上什么地
址,如果從認證數(shù)據(jù)或緩沖內沒有獲得地址,可以使用關聯(lián)
RR 。然后轉到第4步; ?
,如果在一些標記上不可能有匹配,看看是不是有"*"標記存
在,如果"*"標記不存在,檢查我們要查找的名字是不是
QNAME ,如果名字就是原來的QNAME ,在響應中設置錯誤,
否則退出。如果"*"存在,以RR 和QTYPE 匹配,如果匹配成
功,將它們復制到響應中,但設置RR 的擁有者(owner )為
QNAME ,不是帶有"*"的結點,然后轉到第6步;
4. 在緩沖中進行匹配,如果在緩沖中找到QNAME ,將所有和它關聯(lián)的
而且匹配QTYPE 的RR 復制到響應區(qū),如果沒有從認證權威來的授
權,可以在緩沖中尋找最好的一個,將它放在認證區(qū)內,然后轉到
第6步;
5. 使用本地resolver 響應請求。保存包括中間CNAME 在內的結果到
應答中。
6. 僅使用本地數(shù)據(jù),試著加入其它有用的RR 到查詢的附加部分。然
后退出。
3.3.5. 區(qū)的維護與傳輸
區(qū)管理員的部分工作是維護所有服務器上的區(qū)數(shù)據(jù)。當必須要進行修改時,修改必須讓所有的名字服務器知道。這一過程可以通過FTP 或其它什么過程完成,而推薦的方法是DNS 協(xié)議的區(qū)傳輸部分所指出的方法。通常的自動更新模式是一個服務器是區(qū)的主服務器,管理員對區(qū)內的域名文件(master file)進行修改,修改后管理員通知主服務器裝載新的數(shù)據(jù),其它的非主服務器定期和主服務器進行同步。
為了知道是否發(fā)生了修改,非主服務器必須檢查SOA 的SERIAL 域,只要有改變,SERIAL 域就會改變,這種改變可能是加一,也可能是其它的什么算法,反正變了就行。因為我們改變的域大小是有范圍的,因此理論上必須有一個修改的時間間隔,基本上,老的復本必須在序列號(就是那個域)用完其空間一半時消失。實際上只要保證比較操作的正確性就可以了。
非主服務器的定期同步由區(qū)內SOA RR的參數(shù)REFRESH ,RETRY 和EXPIRE 決定。當非主服務器裝入新區(qū)時,它會在REFRESH 秒后向主服務器查詢新序列號,如果查詢未能完成,它會每隔RETRY 秒重新進行一次。如果查詢得到的序列號和原來的序列號一樣,則不需要進行改變。在REFRESH 時間間隔后重新開始。如果非主服務器在EXPIRE 間隔后不能進行查詢,它必須拋棄現(xiàn)有的區(qū)數(shù)據(jù)。
當查詢后知道區(qū)內的數(shù)據(jù)已經(jīng)改變,非主服務器必須通過AXFR 請求請求主服務器傳送區(qū)數(shù)據(jù)。AXFR 可能會被拒絕而產(chǎn)生錯誤,但是通常情況下會得到一系列響應信息。第一個和最后一個信息必須包括區(qū)內頂認證結點的數(shù)據(jù)。中間的信息包括區(qū)內其它RR 的信息,包括認證的和非認證的。這些數(shù)據(jù)使非主服務器得到區(qū)數(shù)據(jù)的復本,因為必須保證數(shù)據(jù)的準確,我們必須使用基于連接的協(xié)議。以上的查詢操作不但可以在主服務器非主服務器之間進行,而且可以在非主服務器之間進行。這可以提高整體的運行效率。