新手必了解DNS服務(wù)基本原理

      我們知道,既可以使用主機(jī)名標(biāo)識(shí)一臺(tái)主機(jī),也可以使用IP地址標(biāo)識(shí)。人們更愿意使用便于記憶的主機(jī)名標(biāo)識(shí)符,而路由器則只愿使用長(zhǎng)度固定并有層次結(jié)構(gòu)的IP地址。
 
  我們可以通過(guò)多種方法來(lái)識(shí)別一個(gè)人。例如,通過(guò)出生證明上的姓名,還可以通過(guò)社會(huì)安全編號(hào)、通過(guò)駕駛執(zhí)照編號(hào)。盡管這些標(biāo)識(shí)都可以用來(lái)識(shí)別人,但是在某種背景下會(huì)有一種標(biāo)識(shí)比其他的標(biāo)識(shí)更加恰當(dāng)。例如,IRS(美國(guó)的一個(gè)稅收機(jī)構(gòu))中的計(jì)算機(jī)喜歡使用固定長(zhǎng)度的社會(huì)安全編號(hào)而不是出生證上的姓名來(lái)標(biāo)注。另——方面,日常生活中人們喜歡用更好記的出生證上的姓名而不是社會(huì)安全編號(hào)〔確實(shí),你能想象出如果一個(gè)人說(shuō)“嗨,我的名字是132—67—9875,請(qǐng)找一下我丈夫,178—87—1146”會(huì)是何等滑稽的場(chǎng)景)。
 
  因特網(wǎng)中的主機(jī)就像人一樣能以多種力式標(biāo)識(shí)。標(biāo)識(shí)方法之一是使用主機(jī)名(hostname)。主機(jī)名(例如cnn.com,www.yahoo.com)是助記性的,人們更愿意使用。然而主機(jī)名幾乎沒(méi)有提供關(guān)于主機(jī)在因特網(wǎng)中的位置信息(主機(jī)名為sina.com.cn的主機(jī)也許是在中國(guó)境內(nèi),此外不再有別的位置信息了)。另外,主機(jī)名是由可變長(zhǎng)度的字母數(shù)字字符構(gòu)成的,路由器處理起來(lái)有困難。
 
  因此因特網(wǎng)中的主機(jī)也使用所謂的IP地址標(biāo)識(shí)。我們將在以后深入討論IP地址,這里只簡(jiǎn)單地說(shuō)明一下。IP地址由4個(gè)字節(jié)構(gòu)成,具有嚴(yán)格的層次結(jié)構(gòu)。IP地址一般以點(diǎn)分十進(jìn)制數(shù)格式表示,也就是說(shuō)所有4個(gè)字節(jié)都以0—255之間的十進(jìn)制數(shù)表示,各個(gè)字節(jié)之間以點(diǎn)號(hào)分隔,例如121.7.106.83.IP地址具有層次結(jié)構(gòu),當(dāng)從左到右掃描某個(gè)地址時(shí),我們得到關(guān)于其主機(jī)在因特網(wǎng)中所在位置的越來(lái)越明確的信息。這就像從下到上掃描某個(gè)郵政地址時(shí),我們得到關(guān)于住宅所在位置的越來(lái)越明確的信息一樣。
 
  DNS提供的服務(wù)我們已經(jīng)知道,既可以使用主機(jī)名標(biāo)識(shí)一臺(tái)主帆,也可以使用IP地址標(biāo)識(shí)。人們更愿意使用便于記憶的主機(jī)名標(biāo)識(shí)符,而路由器則只愿使用長(zhǎng)度固定民有層次結(jié)構(gòu)的IP地址。為調(diào)解這兩種不同的偏好,我們需要一個(gè)把主機(jī)名轉(zhuǎn)換成IP地址的目錄服務(wù)。這就是因特網(wǎng)的域名系統(tǒng)(Domain Name System,DNS)的主要任務(wù)。DNS既是一個(gè)在由名稱服務(wù)器主機(jī)構(gòu)成的層次結(jié)構(gòu)中實(shí)現(xiàn)的分布式數(shù)據(jù)庫(kù),又是一個(gè)允許客戶主機(jī)和名稱服務(wù)器主機(jī)通信以使用域名轉(zhuǎn)換服務(wù)的應(yīng)用層協(xié)議。名稱服務(wù)器主機(jī)通常是運(yùn)行Berkeley Internet Name Domain(簡(jiǎn)稱BIND)軟件的UNIX主機(jī)。DNS協(xié)議運(yùn)行在UDP之上,使用端口號(hào)53.其他應(yīng)用層協(xié)議(例如HTTP,SMTP,F(xiàn)TP)普遍使用DNS把由用戶提供的主機(jī)名轉(zhuǎn)換成IP地址。作為例子,我們考慮某個(gè)用戶使用運(yùn)行在本地主機(jī)上的一個(gè)瀏覽器(也就是HTTP客戶)請(qǐng)求http://www.yesky.com時(shí)會(huì)發(fā)生什么。為了把HTTP請(qǐng)求消息發(fā)送到名為www.yesky.com的web服務(wù)器主機(jī),瀏覽器必須獲悉這臺(tái)主機(jī)的IP地址。我們知道,差不多每臺(tái)主機(jī)都運(yùn)行著DNS應(yīng)用的客戶端。瀏覽器從URL中抽取出主機(jī)名后把它傳遞給本地主機(jī)上的DNS應(yīng)用客戶端。DNS客戶于是向某個(gè)DNS服務(wù)器發(fā)出一個(gè)包含該主機(jī)名的DNS查詢消息。DNS客戶最終收到一個(gè)包含與該主機(jī)名對(duì)應(yīng)的IP地址的應(yīng)答消息。瀏覽器接著打開一個(gè)到位于該IP地址的HTTP服務(wù)器的TCP連接。從這個(gè)例子中可以看出,DNS給使用它的因特網(wǎng)應(yīng)用引入了額外延遲(有時(shí)還相當(dāng)大)。所幸的是,正如我們即將討論的那樣。預(yù)期的主機(jī)名—IP地址對(duì)應(yīng)關(guān)系往往高速緩存在就近的DNS名稱服務(wù)器主機(jī)中,從而幫助降低了DNS訪問(wèn)延遲和DNS網(wǎng)絡(luò)流量。
 
  除了從主機(jī)名到IP地址的轉(zhuǎn)換,DNS還提供其他一些重要的服務(wù):
◆主機(jī)別名(hody aliasing)。具有復(fù)雜主機(jī)名的主機(jī)還可以有一個(gè)或多個(gè)別名。例如,主機(jī)名為relay1.west-coast.enterprise.com的主機(jī)有兩個(gè)別名:enterprise.com和www.enterprise.com.這種情況下,主機(jī)名relay1.west-coast.enterprise.com特稱為正規(guī)主機(jī)名(canonical hostname),另外兩個(gè)主機(jī)名則是別名主機(jī)名(alias hostname)。
 
  別名主機(jī)名往往比正規(guī)主機(jī)名更便于記憶。應(yīng)用可以調(diào)用DNS獲取所給定別名主機(jī)名的正規(guī)主機(jī)名和IP地址。
 
  ◆郵件服務(wù)器別名(mall server aliasing)。電子郵件地址顯然要求便于記憶。例如,如果Bob有一個(gè)hotmail賬號(hào),那么他的電子郵件地址可能是簡(jiǎn)單的bob@hotmail.com.然而hotmail郵件服務(wù)器的主機(jī)名要比hotmail.com復(fù)雜且不易記住。電子郵件應(yīng)用可以調(diào)用DNS獲取所給定別名主機(jī)名的正規(guī)主機(jī)名和IP地址。事實(shí)上,DNS允許一個(gè)公司的郵件服務(wù)器和Web服務(wù)器使用相同的別名主機(jī)名。例如,某個(gè)公司的web服務(wù)器和郵件服務(wù)器可以都稱為enterprise.com.◆負(fù)載分擔(dān)(load distribution)。DNS還越來(lái)越多地用于執(zhí)行在多個(gè)復(fù)制成的服務(wù)器(例如復(fù)制成的Web服務(wù)器)之間的負(fù)載分擔(dān)。像cnn.com那樣的繁忙站點(diǎn)往往把Web服務(wù)器復(fù)制成多個(gè),每個(gè)服務(wù)器運(yùn)行在不向的端系統(tǒng)上,具有不同的IP地址。對(duì)于復(fù)制成的多個(gè)Web服務(wù)器,與其單個(gè)正規(guī)主機(jī)名相關(guān)聯(lián)的是一組IP地址。DNS數(shù)據(jù)庫(kù)中保存著這組IP地址。
 
  客戶發(fā)出針對(duì)映射到一組IP地址的某個(gè)主機(jī)名的DNS查詢后,服務(wù)器響應(yīng)以整組IP地址,不過(guò)每次響應(yīng)的地址順序是輪轉(zhuǎn)的。既然訪問(wèn)web站點(diǎn)時(shí),瀏覽器一般把HTTP請(qǐng)求消息發(fā)送給內(nèi)DNS客戶否詢到的一組IP地址中的第一個(gè),DNS輪轉(zhuǎn)于是把web站點(diǎn)的訪問(wèn)負(fù)載分擔(dān)在所有復(fù)制成的服務(wù)器上。電子郵件應(yīng)用也可以使用DNS輪轉(zhuǎn),這樣多個(gè)郵件服務(wù)器可以有相同的別名。近來(lái),有些公司已經(jīng)以更為復(fù)雜的方式使用DNS提供web內(nèi)容分發(fā)服務(wù)。
 
  DNS在RFC 1034和RFC 1035中有詳細(xì)說(shuō)明,并在另外若干個(gè)RFC中作了更新。DNS是一個(gè)復(fù)雜的系統(tǒng),我們只在這兒討論其操作的關(guān)鍵方面。感興趣朗讀者可以參見協(xié)議文檔。

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章