域名服務(wù)器工作原理
1. 引言 2. 域名 3. 分布式系統(tǒng) 4. 創(chuàng)建新域名
只要您在互聯(lián)網(wǎng)上發(fā)送電子郵件或瀏覽Web,您就會用到域名服務(wù)器,而您自己可能都不知道您在使用它們。域名服務(wù)器(即DNS)是互聯(lián)網(wǎng)的相當(dāng)重要且完全隱藏的部分,并且很神奇。域名服務(wù)器系統(tǒng)在全球范圍內(nèi)構(gòu)建了一個最大最活躍的分布式數(shù)據(jù)庫。如果沒有域名服務(wù)器,互聯(lián)網(wǎng)就會迅速停止運轉(zhuǎn)。
在本文中,我們將看一下域名服務(wù)器系統(tǒng),讓您了解這個系統(tǒng)的工作原理并領(lǐng)會其神奇的功能。
您瀏覽網(wǎng)頁或發(fā)送電子郵件時都要用到域名。例如,URL“http://www.howstuffworks.com”中包含域名howstuffworks.com。電子郵件地址ikonw@howstuffworks.com中也包含此域名。
有實際意義的名稱(如“howstuffworks.com”)方便記憶,可是對計算機卻非如此。所有計算機都使用稱為IP地址的名稱來相互引用。例如,我們稱作“www.howstuffworks.com”的計算機有一個IP地址216.183.103.150。每當(dāng)您使用域名時,都會使用互聯(lián)網(wǎng)的域名服務(wù)器(DNS)將對我們而言有實際意義的域名轉(zhuǎn)換為計算機可讀的IP地址。在一天的瀏覽網(wǎng)頁和發(fā)送電子郵件工作中,您可能已訪問了數(shù)百次域名服務(wù)器!
域名服務(wù)器就是要將域名轉(zhuǎn)換為IP地址。這聽起來好像是一個簡單的任務(wù),但實際上有五大難點:
- 目前正在使用的IP地址達(dá)數(shù)十億個,并且大多數(shù)計算機也有實義名稱。
- 每天會發(fā)出數(shù)十億個域名服務(wù)器請求。每個人每天就可以輕松發(fā)出一百個或更多的域名服務(wù)器請求,同時每天都會有幾億用戶和計算機在使用互聯(lián)網(wǎng)。
- 域名和IP地址每天都在發(fā)生變化。
- 每天都會創(chuàng)建新的域名。
- 每天都會有數(shù)百萬用戶更改和添加域名和IP地址。
域名服務(wù)器系統(tǒng)是一個數(shù)據(jù)庫,世界上的任何其他數(shù)據(jù)庫都無法獲取如此多的請求。世界上的任何其他數(shù)據(jù)庫每天也不會有數(shù)百萬用戶對其進(jìn)行更改。這就是導(dǎo)致域名服務(wù)器系統(tǒng)如此獨特的原因。
IP地址
若要使互聯(lián)網(wǎng)上的所有計算機井然有序,則應(yīng)為每個計算機分配稱為IP地址的唯一地址。IP的全稱是Internet Protocol,即互聯(lián)網(wǎng)協(xié)議,并且這些地址都是由32位數(shù)字組成,通常采用“點分十進(jìn)制數(shù)”的四個“八進(jìn)制數(shù)”表示。典型的IP地址如下所示:
216.183.103.150
IP地址中的四個數(shù)字稱作八進(jìn)制數(shù),因為這四個數(shù)字可以具有0-256之間的值(每個八進(jìn)制數(shù)具有28種可能)。
互聯(lián)網(wǎng)中的每臺計算機都具有自己的IP地址。由于服務(wù)器具有靜態(tài)IP地址,因此不會經(jīng)常變化。通過調(diào)制解調(diào)器進(jìn)行撥號的家用計算機通常具有的IP地址是在您撥號時由ISP(互聯(lián)網(wǎng)服務(wù)提供商)分配的。對于此次會話來說,此IP地址是唯一的,但是在您下次撥號時會發(fā)生改變。這樣,ISP僅需要為其所支持的每個調(diào)制解調(diào)器而每個客戶提供一個IP地址。
如果您使用的是安裝Windows操作系統(tǒng)的計算機,則可以使用命令WINIPCFG.EXE(對于Windows 2000/XP,為IPCONFIG.EXE)查看當(dāng)前的IP地址。在UNIX計算機上,將nslookup連同計算機名稱一起鍵入(如“nslookup www.howstuffworks.com”)就可以顯示計算機的IP地址(使用命令hostname可獲知計算機的名稱)。
有關(guān)IP地址的更多信息,請參見IANA。
就互聯(lián)網(wǎng)上的計算機而言,您只需將相應(yīng)的IP地址告知服務(wù)器即可。例如,您可以在瀏覽器中鍵入http://216.183.103.150,然后您就會到達(dá)包含用于howstuffworks的Web服務(wù)器的計算機。域名的確是為人們提供了方便。
域名
如果我們必須記住每天訪問的所有網(wǎng)站的IP地址,那么我們肯定會瘋掉。我們不擅長記住一長串的數(shù)字,但卻擅長記住單詞(域名就是由單詞構(gòu)成的)。您的腦海中可能已存儲了數(shù)百個域名。例如:
- howstuffworks.com——典型名稱
- www.yahoo.com ——世界上最知名的名稱之一
- www.mit.edu ——麻省理工學(xué)院的域名
- encarta.msn.com ——不是以www開始的Web服務(wù)器
- www.bbc.co.uk ——包含四個部分而非三個部分的名稱
- ftp.microsoft.com ——FTP服務(wù)器而非Web服務(wù)器
這些域名的COM、EDU和UK部分被稱作頂級域名或一級域名。存在幾百個頂級域名(包括COM、EDU、GOV、MIL、NET、ORG和INT)以及具有唯一性的代表每個國家/地區(qū)的雙字母組合。
每個頂級域內(nèi)都包含一個二級域名的大型列表。例如,在COM一級域名中,您可以獲得:
- howstuffworks
- yahoo
- msn
- microsoft
- 以及幾百萬個其他的域名...
COM頂級域中的每一個名稱都必須是唯一的,但是在不同的域中可以重復(fù)。例如,howstuffworks.com和howstuffworks.org就代表完全不同的計算機。
對于bbc.co.uk來說,它是一個三級域名。盡管最多可以有127級域名,但超過四級的域名很少見。
最左邊的詞語(如www或encarta)代表主機名。它指明了域中的一臺具體機器(有特定的IP地址)的名稱。給定的域可以包含數(shù)百萬個主機名,只要這些主機名在該域中都是唯一的。
由于給定域中的所有名稱都必須是唯一的,因此,就需要一個實體來管理列表并確保名稱不會重復(fù)。例如,COM域不得包含任何重復(fù)的名稱,這樣就需要一個名為Network Solutions的公司負(fù)責(zé)維護此列表。當(dāng)您注冊域名時,該域名需要通過在Network Solutions公司工作的注冊人員的審查,才能添加到列表中。而Network Solutions會保留一個名為whois數(shù)據(jù)庫的中央數(shù)據(jù)庫,該數(shù)據(jù)庫包含了有關(guān)每個域的所有者和名稱服務(wù)器的信息。如果您轉(zhuǎn)到whois表單,則可以找到有關(guān)當(dāng)前存在的任何域的信息。
雖然讓一個中央授權(quán)機構(gòu)來跟蹤COM(和其他)頂級域中的名稱的數(shù)據(jù)庫很重要,但您不會想將COM域中的所有信息集中在一個數(shù)據(jù)庫中。例如,微軟擁有數(shù)十萬個IP地址和主機名。微軟希望維護其自身的用于microsoft.com域名的域名服務(wù)器。同樣,英國可能希望管理uk頂級域名,而澳大利亞可能希望管理au域名,依此類推。因此,域名服務(wù)器系統(tǒng)是一個分布式數(shù)據(jù)庫。微軟全權(quán)負(fù)責(zé)處理用于microsoft.com的名稱服務(wù)器——它維護實施它的域名服務(wù)器系統(tǒng)部分的計算機,并且微軟可以在任何時間更改其域的數(shù)據(jù)庫,因為它擁有自己的域名服務(wù)器。
每個域名都具有用于處理其請求的域名服務(wù)器,并有專人來維護此域名服務(wù)器中的記錄。域名服務(wù)器系統(tǒng)的一個最令人驚奇的方面是——它是通過由數(shù)百萬人管理的數(shù)百萬臺計算機完全分發(fā)到全世界的,然而其行為表現(xiàn)則類似于一個簡單的集成式數(shù)據(jù)庫!
分布式系統(tǒng)
名稱服務(wù)器整天都在做兩件事情:
- 接受來自程序的有關(guān)將域名轉(zhuǎn)換為IP地址的請求。
- 接受來自其他名稱服務(wù)器的有關(guān)將域名轉(zhuǎn)換為IP地址的請求。
收到請求后,名稱服務(wù)器可以對其執(zhí)行下列四種操作之一:
- 使用一個IP地址回答請求,因為它已知道域的IP地址。
- 聯(lián)系另一個名稱服務(wù)器并嘗試找到請求的名稱對應(yīng)的IP地址。它可能需要多次執(zhí)行此操作。
- 回答:“我不知道您請求的域的IP地址,以下是我知道的名稱服務(wù)器的IP地址?!?
- 返回一條錯誤消息,因為被請求的域名是無效或不存在的。
當(dāng)您在瀏覽器中鍵入URL時,瀏覽器首先會將域名和主機名轉(zhuǎn)換為一個IP地址,以便它能夠從該IP地址上的計算機中請求網(wǎng)頁(有關(guān)整個過程的詳細(xì)信息,請參見Web服務(wù)器工作原理)。若要執(zhí)行此轉(zhuǎn)換,瀏覽器必須與名稱服務(wù)器進(jìn)行對話。
當(dāng)您在互聯(lián)網(wǎng)上設(shè)置計算機時,您(或您所安裝的用于連接到ISP的軟件)必須告知計算機它在將域名轉(zhuǎn)換為IP地址時應(yīng)使用的名稱服務(wù)器。在一些系統(tǒng)上,當(dāng)您連接到ISP時,將為計算機動態(tài)提供域名服務(wù)器;而在其他一些計算機上,域名服務(wù)器是硬連接的。如果您使用的是安裝了Windows 95/98/ME的計算機,則可以使用命令WINIPCFG.EXE(對于Windows 2000/XP,使用IPCONFIG)來查看當(dāng)前的名稱服務(wù)器。在UNIX計算機上,則將nslookup連同計算機名稱一起鍵入進(jìn)行查看。計算機上需要與名稱服務(wù)器進(jìn)行通信以解析域名的任何程序,都知道應(yīng)與之通信的名稱服務(wù)器,因為它可以從操作系統(tǒng)中獲取計算機的名稱服務(wù)器的IP地址。
因此,瀏覽器會聯(lián)系其名稱服務(wù)器并表示,“我需要您為我將域名轉(zhuǎn)換為IP地址?!崩?,如果在瀏覽器中鍵入“www.howstuffworks.com”,則瀏覽器需要將該URL轉(zhuǎn)換為一個IP地址。于是瀏覽器會將“www.howstuffworks.com”交給其默認(rèn)名稱服務(wù)器并請求它進(jìn)行轉(zhuǎn)換。
名稱服務(wù)器可能已知道www.howstuffworks.com的IP地址。如果最近收到過解析www.howstuffworks.com的其他請求(名稱服務(wù)器會對IP地址進(jìn)行緩存以加快處理速度),就可能存在這種情況。在這種情況下,名稱服務(wù)器可以立即返回相應(yīng)的IP地址。不過,讓我們假定名稱服務(wù)器必須從頭開始。
名稱服務(wù)器通過聯(lián)系一個根名稱服務(wù)器開始搜索IP地址。根服務(wù)器知道處理頂級域的所有名稱服務(wù)器的IP地址。您的名稱服務(wù)器將會向根服務(wù)器請求www.howstuffworks.com的IP地址,根服務(wù)器會表示(假定沒有緩存),“我不知道www.howstuffworks.com的IP地址,但存在COM名稱服務(wù)器的IP地址?!憋@而易見,對于整個過程而言,這些根服務(wù)器非常重要,因此:
- 有許多根服務(wù)器散布在全球的各個角落。
- 每一個名稱服務(wù)器都具有一個包含所有已知根服務(wù)器的列表。名稱服務(wù)器將與列表中的第一個根服務(wù)器聯(lián)系,如果這樣做不起作用,那么它會與列表中的下一個根服務(wù)器聯(lián)系,依此類推。
下面是典型的名稱服務(wù)器所擁有的根服務(wù)器的典型列表:
; This file holds the information on root name servers
; needed to initialize cache of Internet domain name
; servers (e.g. reference this file in the
; "cache . andlt;fileandgt;" configuration file of BIND domain
: name servers).
;
; This file is made available by InterNIC registration
; services under anonymous FTP as
; file /domain/named.root
; on server FTP.RS.INTERNIC.NET
; -OR- under Gopher at RS.INTERNIC.NET
; under menu InterNIC Registration Services (NSI)
; submenu InterNIC Registration Archives
; file named.root
;
; last update:Aug 22, 1997
; related version of root zone:1997082200
;
;
; formerly NS.INTERNIC.NET
;
. 3600000 IN NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.3600000 A 198.41.0.4
;
; formerly NS1.ISI.EDU
;
. 3600000 NS B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.3600000 A 128.9.0.107
;
; formerly C.PSI.NET
;
. 3600000 NS C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.3600000 A 192.33.4.12
;
; formerly TERP.UMD.EDU
;
. 3600000 NS D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.3600000 A 128.8.10.90
;
; formerly NS.NASA.GOV
;
. 3600000 NS E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.3600000 A 192.203.230.10
;
; formerly NS.ISC.ORG
;
. 3600000 NS F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.3600000 A 192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
. 3600000 NS G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.3600000 A 192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
. 3600000 NS H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.3600000 A 128.63.2.53
;
; formerly NIC.NORDU.NET
;
. 3600000 NS I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.3600000 A 192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
. 3600000 NS J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.3600000 A 198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
. 3600000 NS K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.3600000 A 193.0.14.129
;
; temporarily housed at ISI (IANA)
;
. 3600000 NS L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.3600000 A 198.32.64.12
;
; housed in Japan, operated by WIDE
;
. 3600000 NS M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.3600000 A 202.12.27.33
; End of File
雖然格式有點奇怪,但是它基本上顯示了包含13個不同的根服務(wù)器的實際IP地址的列表。
根服務(wù)器知道可處理幾百個頂級域的名稱服務(wù)器的IP地址。它可以為您的名稱服務(wù)器返回COM域名的名稱服務(wù)器的IP地址。然后您的名稱服務(wù)器會詢問COM名稱服務(wù)器是否知道www.howstuffworks.com的IP地址。由于COM域名的名稱服務(wù)器知道處理howstuffworks.com域名的名稱服務(wù)器的IP地址,于是它會返回這些IP地址。您的名稱服務(wù)器然后又會與howstuffworks.com的名稱服務(wù)器聯(lián)系,并詢問它是否知道www.howstuffworks.com的IP地址。如果它知道,它則會將相應(yīng)的IP地址返回給您的名稱服務(wù)器,接著您的名稱服務(wù)器會將該IP地址返回給瀏覽器,然后瀏覽器會與www.howstuffworks.com的服務(wù)器聯(lián)系以獲取網(wǎng)頁。
完成此工作的一個關(guān)鍵點是冗余。由于在每一級別上都會有多個名稱服務(wù)器,因此如果一個名稱服務(wù)器失敗,那還有其他的名稱服務(wù)器可以處理請求。例如,有三個不同的計算機用于運行HOWSTUFFWORKS.COM請求的名稱服務(wù)器。而只有在所有三個計算機都無法工作的情況下才會出現(xiàn)問題。
另一個關(guān)鍵點是緩存。在名稱服務(wù)器解析某個請求之后,它會對接收到的所有 IP地址進(jìn)行緩存。在該名稱服務(wù)器為任何COM域請求過根服務(wù)器之后,它就會知道處理COM域的名稱服務(wù)器的IP地址,因此它無需再次為此信息而煩擾根服務(wù)器。名稱服務(wù)器可以為每個請求執(zhí)行此操作,并且此緩存有助于防止操作中斷。
不過,名稱服務(wù)器并不是永久進(jìn)行緩存。緩存有一個名為生存時間(TTL)的組件,用于控制服務(wù)器緩存某條信息的時間。當(dāng)服務(wù)器接收到一個IP地址時,會隨之接收到TTL。名稱服務(wù)器會將IP地址緩存一段時間(范圍是幾分鐘到幾天),然后丟棄它。TTL允許對名稱服務(wù)器中的更改進(jìn)行傳播。不過,并非所有名稱服務(wù)器都會遵守它們接收到的TTL。在howstuffworks將其計算機移動到新的服務(wù)器時,花費了三個星期的時間才將轉(zhuǎn)換傳播到整個Web。我們在主頁的左上角放置了一個名為“新服務(wù)器”的小標(biāo)記,因此在轉(zhuǎn)換期間,用戶可以分辨看到的是新服務(wù)器還是舊服務(wù)器。
創(chuàng)建新域名
某人想要創(chuàng)建新的域名必須做兩件事:
- 找到用來存放域名的名稱服務(wù)器。
- 注冊域名。
從技術(shù)上說,域中不一定需要計算機,而只需要一臺能夠處理域名請求的名稱服務(wù)器就可以了。
可以通過兩種方式可以讓您獲取域的名稱服務(wù)器:
- 您可以自行創(chuàng)建并管理名稱服務(wù)器。
- 您可以付費請ISP或主機服務(wù)公司為您處理名稱服務(wù)器。
大多數(shù)大型公司都具有自己的域名服務(wù)器。而大多數(shù)小型公司則是付費使用一些域名服務(wù)器。
HowStuffWorks的歷史就是一個典型的例子。當(dāng)howstuffworks.com剛創(chuàng)建時,開始只是一個寄放域。此域寄放在名為www.webhosting.com的公司中。Webhosting.com負(fù)責(zé)維護名稱服務(wù)器,并維護為該域創(chuàng)建單個“正在構(gòu)建”網(wǎng)頁的計算機。
若要創(chuàng)建域,則需要填寫提供域名注冊服務(wù)的公司(例如:register.com、verio.com和networksolutions.com)規(guī)定的表單。這些公司創(chuàng)建“正在構(gòu)建”網(wǎng)頁,并在其名稱服務(wù)器中創(chuàng)建一個條目,然后將表單數(shù)據(jù)提交到whois數(shù)據(jù)庫中。COM、ORG和NET等名稱服務(wù)器會使用最新的IP地址信息進(jìn)行更新,更新頻率為一天兩次。這時,就會存在一個域,并且任何人都可以訪問相應(yīng)的“正在構(gòu)建”網(wǎng)頁。
然后HowStuffWorks就開始在www.howstuffworks.com這個域下發(fā)布內(nèi)容。我們通過Tabne(現(xiàn)在是Verio, Inc. 的一部分)設(shè)立了主機帳戶,Tabnet運行HowStuffWorks的域名服務(wù)器和承載HowStuffWorks網(wǎng)頁的計算機。此類計算機稱作虛擬Web主機,可同時承載多個域。大約有五百個不同的域共享同一個處理器。
由于HowStuffWorks日益受到歡迎,因此虛擬主機已無法滿足需求,從而HowStuffWorks需要擁有自己的服務(wù)器。此時,HowStuffWorks開始維護自己的專用計算機,并開始管理自己的域名服務(wù)器。HowStuffWorks擁有主服務(wù)器和輔助服務(wù)器:
- AUTH-NS1.HOWSTUFFWORKS.COM 209.116.69.78
- AUTH-NS2.HOWSTUFFWORKS.COM 209.116.69.79
HowStuffWorks的主域名服務(wù)器是auth-ns1.howstuffworks.com。而我們對主服務(wù)器所做的任何更改都會自動傳送給輔助服務(wù)器,后者也是由我們的ISP維護的。
所有這些計算機都將運行名為BIND的名稱服務(wù)器軟件。BIND通過主服務(wù)器上如下所示的文本文件,可以了解HowStuffWorks域中的所有計算機:
@ NS auth-ns1.howstuffworks.com.
@ NS auth-ns2.howstuffworks.com.
@ MX 10 mail
mail A 209.170.137.42
vip1 A 216.183.103.150
www CNAME vip1
從文件的開頭進(jìn)行解碼,便可以看到:
- 前兩行指出主名稱服務(wù)器和輔助名稱服務(wù)器。
- 下一行稱為MX記錄。當(dāng)您向HowStuffWorks上的任何人發(fā)送電子郵件時,發(fā)送電子郵件的軟件會與名稱服務(wù)器聯(lián)系以獲取MX記錄,于是它就會知道HowStuffWorks的SMTP服務(wù)器的位置。許多大型系統(tǒng)都具有多個處理傳入電子郵件的計算機,因此就會產(chǎn)生多個MX記錄。
- 下一行指出用于處理對mail.howstuffworks.com的請求的計算機。
- 下一行指出用于處理對oak.howstuffworks.com的請求的IP地址。
- 下一行指出用于處理對howstuffworks.com(無主機名)的請求的IP地址。
從這個文件中我們可以看到,HowStuffWorks服務(wù)器基礎(chǔ)結(jié)構(gòu)是由具有單獨的IP地址的若干物理計算機構(gòu)成的。這些主機具有類似mail和www的別名。任何內(nèi)容都可以具有別名。例如,此文件中可以包含一個用于scoobydoo.howstuffworks.com的條目,并且該條目可以指向名為walnut的物理計算機。也可以對yahoo.howstuffworks.com使用別名,并且該別名可以指向yahoo。實際上,對別名沒有什么限制。我們也可以創(chuàng)建多個名稱服務(wù)器并對我們的域分段。
通過上面的說明您會發(fā)現(xiàn),域名服務(wù)器是一種令人稱奇的分布式數(shù)據(jù)庫。域名服務(wù)器每天通過由數(shù)百萬個用戶管理的數(shù)百萬個名稱服務(wù)器所構(gòu)成的網(wǎng)絡(luò)來處理針對數(shù)十億個名稱的數(shù)十億個請求。每當(dāng)您發(fā)送電子郵件或查看URL時,您就會向散布在全球范圍內(nèi)的多個名稱服務(wù)器發(fā)出請求。令人驚奇的是,此過程通常是完全不可見而且非??煽康?!
評論
查看更多