DNS(Domain Name Service,域名服務)是Internet/Intranet中最基礎也是非常重要的一項服務,用來將域名地址轉化為IP地址的服務,通常由DNS服務器完成。它提供了網絡訪問中域名到IP地址的自動轉換。在客戶機上配置TCP/IP時通常要指明DNS服務器所在的IP地址。
在因特網中,網絡是與分層次組織的路由器連接的,如圖D-28所示。數據分組可能只需要通過某個中間路由器,或被發送到位于最高層的路由器,以便找到通向目的地的路徑。路徑中的每一個路由器都知道與之連接的網絡。如果某個路由器不知道路徑,它則將數據分組發送給層次結構中下一個最高的路由器。
圖D-28 Internet上的分層路由選擇結構
與該路由層次緊密相關的是“域名服務(DNS)”,它將名稱與IP地址聯系在一起。DNS提供主機和域名的一個Internet范圍內的數據庫。例如,DNS用于查找主機名寫作microsoft.com的IP地址。當您訪問因特網中的Web站點時,如果您知道該站點的IP地址并且記住了它,可以鍵入該地址。不過很少有人能夠做到這一點。相反,我們依靠分布在因特網上的DNS服務器來將我們能夠記住的眾所周知的名稱翻譯成IP地址,一般有兩種機制來完成,一種是有主機表來完成,另一種是采用域名服務的守護進程(named , 或 in.namd)來實現。這兩種方式都能實現域名與IP之間的互相映射。圖D-29描述了獲取IP地址的過程。 Internet上的主機成千上萬,并且還在隨時不斷增加,不可能由一個或幾個DNS服務器能夠實現這樣的解析過程,傳統主機表(hosts)方式更無法勝任,事實上DNS依靠一個分布式數據庫系統對網絡中主機域名進行解析,并及時地將新主機的信息傳播給網絡中的其它相關部分,因而給網絡維護及擴充帶來了極大的方便。
DNS服務器有規劃地位于因特網中。如圖D-29所示,通常某個系統可直接訪問某個服務器,或者是通過至少一個路由器跳躍訪問服務器,盡管可能要查詢若干個服務器。大多數因特網服務提供商都有DNS服務器。當用戶在Web瀏覽器中鍵入域名時,查詢將被發送到在用戶的Web瀏覽器配置對話框中定義的主DNS服務器(如果未指定服務器,則為默認DNS服務器)。
如果此過程發生錯誤,將會出現一條錯誤信息,表明無法找到此站點。通常,都是由于網絡和服務器繁忙而導致的臨時問題。再次嘗試訪問站點通常都會使DNS再次查找并且能夠成功連接。
圖D-29 從DNS服務器處獲得IP地址
命名系統是分層次的,如圖D-30所示。樹是倒置的,它的根級顯示在最上方。樹分為頂級域(TLD),這些域又被分成二級域(SLD),依此類推。頂級域名由Internet網絡協會負責網絡地址分配的委員會進行登記和管理,它還為Internet的每一臺主機分配唯一的IP地址。全世界現有3個大的網絡信息中心:INTER NIC負責美國及其它地區、RIPE-NIC負責歐洲地區和APNIC負責亞太地區。除了顯示的TLD(.Com、.net和.org),還有200多個國家級的TLD,它們由各自相應的政府或私有實體管理。
頂級域一般有兩種類型,一種是地理域,另一種是機構域,地理域是通過地理區域來劃分域名,例如中國的地理域名是CN,日本是JP,香港是HK,美國一般不使用地理域名;機構域是根據注冊的機構類型來分類。常用機構類的頂級域名為:
圖D-30 DNS命名級
1997年2月,除現有的這些.Com、.net和.org外,IAHC(國際特別委員會)宣布了七個新的gTLD(普通頂級域),可以在它們之下注冊因特網名。這些新的領域有:
DNS歷史和管理信息
1998和1999年,修改了整個管理結構。美國商務部發表了名為“因特網名稱和地址管理”的文章,概述了美國政府要“以一種能夠增強競爭并能夠促進對域名管理的國際參與的方式,使域名系統私有化”的計劃。
在因特網的初期,當只有幾百個用戶而不是幾百萬個用戶時,Jon Postel維護一個主機名和IP地址映射的列表。該列表存儲在其他人能夠訪問到的FTP服務器中。它包含兩欄信息:IP地址和主機名。此方案的問題是文件的更新并確保每個人都有最新的信息。更改和更新差不多是一件很可怕的事情。因此需要一種方法使此過程自動化并確保兩個主機不會有相同的名稱。
Paul Mockapetris最終出臺了他的所謂“域名方案”。它是分層次的并且是分布式的。如果某個DNS服務器不知道某個名稱,它還允許該服務器查詢其他服務器。早期的DNS文檔是RFC1034,“Domain Names-Concepts and Facilities,”(November1987)和RFC2035,“Domain Names-Implementation and Specification,”(November1987)。
在1991年到1992年之間,美國國家科學基金會(NSF)與Network Solutions, Inc.(NSI)簽定合同,使之管理域名注冊和其他業務。差不多在整個20世紀90年代,都是NSI基于先來先服務的原則處理普通頂級域(gTLD)的域名注冊。它還維護一個目錄,該目錄將域名和域名服務器的IP號進行鏈接,并維護因特網注冊的權威數據庫。在20世紀90年代因特網在商業方面的發展中,NSI在此領域內起了非常重要的作用。
到1999年,域名系統有了下列結構:
•IANA協調數字IP地址塊對于區域IP注冊機構(北美洲的是ARIN,歐洲的是PIPE,亞太地區的是APNIC)的分配。然后大型ISP向注冊機構申請注冊IP地址塊。這些ISP再將分配給他們的地址塊分配給更小的ISP或終端用戶。
•IANA維護網際協議族的技術參數,包括協議號、端口號、自治系統號、管理信息基礎對象標識符以及其他內容。
•DNS包含一個根服務器系統,該系統物理上包含一組文件服務器,數量為13個。這些服務器包含權威性數據庫,它列出所有的頂級域。NSI操作“A”根服務器,它維護權威性的根數據庫并且每天都將更改復制到其他根服務器。美國政府操作大約這些服務器的一半。權威性服務器提供有一個重要的功能:因特網中的通用名稱的一致性。
1999年,因特網賦名和編號公司( ICANN),一個新的非贏利公司,接管了對IP地址空間分配、協議參數分配、域名系統管理和根服務器系統管理功能的責任,以前這些都是根據美國政府的合同由IANA和其他實體執行的。
ICANN已經針對未來的Com、org和.net的注冊機構采取了鑒定合格的標準和申請程序。1999年4月,通過與美國政府達成協議,Network Solutions,Inc.對五家注冊機構開放了它用于.com、.org和.net的共享注冊系統試驗臺,并在1999年中期對所有鑒定合格的注冊機構開放。由于NSI失去了分配因特網域名的獨家合同,許多其他公司和組織已開始從事此項工作,其中包括AOL(美國在線)、AT&T、register.com、France Telecom不a幾個國際聯合會。最終,許多其他公司也將出售域名。NSI現在仍然從事這項業務,并仍然維護著權威的“A”根數據庫。
DNS操作
將它的內部網絡連接到因特網的組織都可以選擇安裝它自己的DNS服務器或使用外部DNS服務器,如位于它的ISP處的服務器。有些組織可能會選擇同時使用內部和外部DNS服務器。安裝內部DNS服務器涉及到適當地維護DNS服務器及其數據庫,以便系統能夠與外部DNS服務器相互操作。
因為DNS包含一個分布式數據庫,所以數據庫存在于多個服務器中,每個服務器都擁有整個數據庫的一部分。如果DNS是內部專用的,整個數據庫可能就在某一個服務器中,或分割到幾個服務器中,這取決于網絡的大小和某一時間內訪問數據庫的用戶的數量。
在因特網中,分布數據庫是一項基本要求。DNS層次結構中的服務器擁有與某一區域相關的DNS數據庫的一部分,而且該服務器被認為對這一區域是權威性的。一個區域可能包含一個或多個域,區域服務器只對這些域來說是權威性的。有了區域,DNS數據庫可以被分布并由各自的DNS服務器管理。
DNS服務器包含區域文件,而此文件又包括名稱到IP地址的映射。區域文件包含對于每個名稱到IP地址的映射的資源記錄。這些文件通常是使用DNS附帶的DNS管理程序編輯的。也可以手工編輯它們。
因特網中的DNS名稱服務器需要同時具有主名稱服務器和輔助名稱服務器,其中主名稱服務器包含原始的名稱到IP地址的映射,而輔助名稱服務器則包含這些映射的副本。這樣就提供了冗余和容錯能力以確保因特網用戶的連通性。
典型的DNS服務器包含下列文件:
•區域文件 包含對區域內每個主機的名稱到IP地址映射進行描述的資源記錄。在該區域內,該DNS服務器是權威性的。
•高速緩存文件 包含因特網根DNS服務器的名稱到IP地址的映射,并用于解析對域外部的計算機的名稱查詢。
•反向查找文件 該文件包含IP地址到名稱的映射(稱為PTR記錄)。當只知道IP地址時,使用此種映射可提供名稱。
設置DNS服務器涉及到安裝DNS服務器軟件、創建區域數據庫文件、指定主域以及添加子域。然后您可以開始添加主機系統。有些操作系統使用動態DNS技術自動完成最后一個過程,其中包括對主機定位并將它們的名稱/IP地址信息輸入到數據庫中。最后一步是確保配置網絡客戶機的TCP/IP軟件以表明主DNS服務器和輔助DNS服務器的IP地址。這樣就允許客戶機系統首先直接轉到最近的DNS服務器來解析名稱到IP地址的映射。
RFC2901,“Guide to Administrative Procedures of the Internet Infrastructure, ”(August 2000)描述了對試圖連接到全球因特網的網絡的管理規程。它包括地址空間分配和注冊、路由選擇數據庫注冊和域名注冊所必需的步驟和操作。
DNS的工作原理及過程分為下面幾個步驟:
第一步:客戶機提出域名解析請求,并將該請求發送給本地的域名服務器。
第二步:當本地的域名服務器收到請求后,就先查詢本地的緩存,如果有該紀錄項,則本地的域名服務器就直接把查詢的結果返回。
第三步:如果本地的緩存中沒有該紀錄,則本地域名服務器就直接把請求發給根域名服務器,然后根域名服務器再返回給本地域名服務器一個所查詢域(根的子域)的主域名服務器的地址。
第四步:本地服務器再向上一步返回的域名服務器發送請求,然后接受請求的服務器查詢自己的緩存,如果沒有該紀錄,則返回相關的下級的域名服務器的地址。
第五步:重復第四步,直到找到正確的紀錄。
第六步:本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時還將結果返回給客戶機。
Novell DNS/DHCP服務將DNS和DHCP(動態主機配置協議)集成到Novell目錄服務(NDS)中。DHCP是一種自動向客戶機系統分配IP地址的協議。DNS/DHCP服務也支持動態DNS ( DDNS),它使用新的IP地址動態地更新主機名稱數據庫。使用DNS/DHCP服務,管理員可以通過NDS集中監控和管理IP地址和主機名稱。
在Windows NT/Windows 2000環境中,DNS與WINS (Windows因特網命名服務)集成以提供動態形式的DNS. WINS是跟蹤傳統的Windows網絡中NetBIOS計算機名稱的系統。隨著Windows2000的發行,Microsoft正在從NetBIOS名稱轉移到DNS命名。
安全性是DNS的一個潛在問題。在服務器錯誤配置、防火墻錯誤配置以及未能安裝能修復己知的安全性隱患的最新修補程序等情況下,都會出現安全性缺口。IETF域名系統安全性(dnssec)工作組正在努力解決DNS安全性問題。
還有最后一件事。Berkeley因特網名稱域(BIND)是DNS最常見的實現,可在因特網軟件協會(ISC)那里找到,其網址是http://www.isc.org 。Novell NetWare和Windows NT/Windows 2000等操作系統都有它們自己特定的DNS實現,盡管您也可以自由運行其他實現。