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

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

北大青鳥網(wǎng)上報名
北大青鳥招生簡章