分布的信息 解決方案就是采用DNS服務器系統。與主機表不一樣,DNS服務器不依賴一個大型映射文件,DNS服務器只包含有限的信息,因為他們知道到哪裡能找到他們想知道的域的細節。當DNS服務器得到對某個主機的請求,而該請求的主機又並不在其緩沖內,那麼DNS服務器只是知道了這件事然後去詢問知道答案的“某計算機”。這台計算機是一種授權服務器,負責維護DNS信息。如果某台服務器在被詢問到其域內的某個地址時它可以確定地指出該地址存在,那麼這台服務器就是所謂的授權服務器。 如果接觸的服務器並不包含有關的域名信息,該服務器就會將請求傳遞給接觸鏈路上更高級別的授權服務器,這樣就形成了一系列查詢直到最後找到需要的信息。實際上,這意味著請求可以被任意數量的服務器處理,在Internet上這種來來回回的行為每時每刻都在發生。最早發出請求的服務器將緩沖信息以滿足未來的需求而無須向授權服務器再發請求。DNS服務器的管理員為這些信息設置了超時限制以避免緩沖中充滿了名字請求的舊數據。 DNS轉換不會花費太多的時間,但它確實增加了你的請求到達遠端計算機的時間。你可以自己做個快速測試(雖然很簡單):首先用域名,比如www.microsoft.com來訪問對應的Web站點,然後用IP地址198.105.232.4再實驗一下。如果你要這麼做,則請務必關閉你的浏覽器然後再重新打開以初始化新的會話;否則你不過是載入了頁面的緩沖版本(記住裝載頁面的延遲原因可能來自許多因素,所以對結果要有所保留)。 DNS服務的最常用軟件是Berkeley Internet Name Domain,也就是BIND,它源自U.C. Berkeley但現在則由Internet Software Consortium.負責。其最新版本4.9.3包含了標准的 Unix版本和附加的Windows NT 端口。BIND提供了解析器和名字服務器軟件,解析器做實際的查詢工作而名字服務器則提供響應。BIND將名字服務器分成三個部分:主服務器包含了有關一個域的全部數據;次服務器則有效地從主服務器拷貝DNS數據庫;唯緩沖服務器通過緩沖查詢來建立例外的DNS數據庫。只有主服務器和次服務器才被當作涉及特定域的授權服務器。 要理解 DNS 服務器怎麼操作就有必要理解域名層次本身。在這一層次的頂部是根域。這一域上的信息駐留在從整個Internet中所選的一些根服務器上。在根域下面是頂級域,也就是國家代碼或機構代碼。國家代碼的例子有SG (新加坡)和CA (加拿大)等。而機構代碼則包括眾所周知的COM(商業機構)、EDU(教育機關)、GOV(政府機構)和NET(網絡機構)等(注意在美國以外的頂級域通常是國家編碼,但是基於美國的地點通常省略國家編碼)。在頂級域下面是次級域(whitehouse.gov、microsoft.com、inforamp.net 等諸如此類),然後是第 3級域,等等等等向下以此類推。 如果你想在美國建立域名,那麼你必須聯系網絡信息中心NIC。在它同意你的請求以前,你首先要保證你想要的名字還沒被使用,其次要保證目前至少有 2台服務器可以提供新域名的服務。當 NIC 最後同意請求時,它將承認你的次級域,並將指向該名字的指針放到頂級域所在的服務器內。例如,如果你請求域名mybiz.com,那麼你必須首先讓Internet上的2 台名字服務器提供信息服務(你的 ISP的服務器能做到這一點),然後NIC 將把 mybiz 放到COM 域服務器系統內,其指針將指向那2台特定服務器。 一旦設置了適當的主域,你就可以增加所希望的任何數量的子域。你可能想要命名你的計算機為sales.mybiz.com,而另一台則被叫做techsupport.mybiz.com等等。這些工作可就不需要 NIC 的同意了,而且,事實上NIC也不管這事。但是,如果你想要任何人都能實際地訪問你的子域,那麼你最好將有關子域的信息盡快地放到上級域內。在特定的情況下,關於sales.mybiz.com 和 techsupport.mybiz.com 的IP信息必須放在mybiz.com服務器上。這一層次中的每台服務器都包含了一個DNS數據庫,其入口被稱作NS記錄,每條這樣的記錄包含了域或子域的名字,此外還加上作為域或者子域服務器的主機的名字。在我們的例子中,我們將告訴根服務器它能在我們的 DNS 服務器上找到mybiz.com及其全部子域的信息,而這些信息則位於details.mybiz.com這台計算機上。 現在我們來看看這一切是如何運作的。某所大學的某人在指向你的最新子域的網頁上看見了一個鏈接 techsupport.mybiz.com。然後她點擊該鏈接,於是她的本地DNS 服務器(很可能位於這所大學的某台計算機上)開始工作。首先,服務器搜索它自己的 DNS數據庫以轉換信息,但是,因為它以前從來沒遇見過 techsupport.mybiz.com,所以服務器沒有該域存在的記錄而且不能解析IP地址。不過,它的 DNS 數據庫包含了一個根服務器的地址(所有的 DNS 服務器必須設置該索引)。於是本地 DNS 服務器就到Internet上查詢該根服務器。根服務器在其DNS 數據庫裡查找COM 頂級域,然後它用NS 記錄回復該大學的 DNS 服務器,告訴它可以從details.mybiz.com 處查詢到mybiz.com 的信息。大學的服務器就這樣做了,而且從 details.mybiz.com那裡知道了techsupport.mybiz.com 的對應IP 地址。在這一過程中最根本的階段是,大學的DNS 服務器緩沖了該 NS 記錄,結果下次該大學的任何人在需要涉及到mybiz.com、details.mybiz.com 、ortechsupport.mybiz.com等對應的IP地址轉換時,相關信息在本地即可獲得。 正如其他的Internet協議一樣,DNS由幾個Internet的RFC(請求評論)規范(最初是RFC 882、883和973)。不過要理解DNS 服務器的工作原理最好的標准還是RFC 1035。你可以在Internet上的好幾個地方找到RFC 1035,比如在http://www.crynwr.com/crynwr/rfc1035/ 就有一個不錯的Html 版本。正如你可能想到的那樣,RFC具有相當的技術性,你不大可能會對超出DNS 服務器一般操作的細節感興趣。但是如果你想做個服務器管理員,那麼就記住 RFC吧。