DNS服務(wù)的基本工作原理解析?
我們知道,主機(jī)標(biāo)識既可以使用主機(jī)名,也可以使用IP地址。實(shí)際上人們往往更愿意使用便于記憶的主機(jī)名做標(biāo)識符,而路由器則只愿使用長度固定并有層次結(jié)構(gòu)的IP地址。
因特網(wǎng)中的主機(jī)就像人一樣能以多種方式標(biāo)識。標(biāo)識方法之一是使用主機(jī)名。主機(jī)名(例如znzncn.com, www.yahoo.com)是助記性的,人們更愿意使用。然而主機(jī)名幾乎沒有提供關(guān)于主機(jī)在因特網(wǎng)中的位置信息.另外,主機(jī)名是由可變長度的字母數(shù)字字符構(gòu)成的,路由器處理起來有困難。因此因特網(wǎng)中的主機(jī)也使用所謂的IP地址做標(biāo)識的。IP地址由4個(gè)字節(jié)構(gòu)成,具有嚴(yán)格的層次結(jié)構(gòu)。IP地址一般以點(diǎn)分十進(jìn)制數(shù)格式表示,也就是說所有4個(gè)字節(jié)都以0—255之間的十進(jìn)制數(shù)表示,各個(gè)字節(jié)之間以點(diǎn)號分隔,例如121.7.106.83。IP地址具有層次結(jié)構(gòu)性,當(dāng)從左到右掃描某個(gè)地址時(shí),我們得到關(guān)于其主機(jī)在因特網(wǎng)中所在位置的越來越明確的信息。這就像從下到上掃描某個(gè)郵政地址時(shí),我們得到關(guān)于住宅所在位置的越來越明確的信息一樣。 DNS服務(wù) 我們已經(jīng)知道,既可以使用主機(jī)名標(biāo)識一臺主帆,也可以使用IP地址標(biāo)識。人們更愿意使用便于記憶的主機(jī)名標(biāo)識符,而路由器則只愿使用長度固定民有層次結(jié)構(gòu)的IP地址。為調(diào)解這兩種不同的偏好,我們需要一個(gè)把主機(jī)名轉(zhuǎn)換成IP地址的目錄服務(wù)。這就是因特網(wǎng)的域名系統(tǒng)的主要任務(wù)。DNS既是一個(gè)在由名稱服務(wù)器主機(jī)構(gòu)成的層次結(jié)構(gòu)中實(shí)現(xiàn)的分布式數(shù)據(jù)庫,又是一個(gè)允許客戶主機(jī)和名稱服務(wù)器主機(jī)通信以使用域名轉(zhuǎn)換服務(wù)的應(yīng)用層協(xié)議。名稱服務(wù)器主機(jī)通常是運(yùn)行Berkeley Internet Name Domain(簡稱BIND)軟件的UNIX主機(jī)。DNS服務(wù)協(xié)議運(yùn)行在UDP之上,使用端口號53。 其他應(yīng)用層協(xié)議(例如HTTP,SMTP,FTP)普遍使用DNS服務(wù)把由用戶提供的主機(jī)名轉(zhuǎn)換成IP地址。作為例子,我們考慮某個(gè)用戶使用運(yùn)行在本地主機(jī)上的一個(gè)瀏覽器(也就是HTTP客戶)請求http://www.znzncn.com時(shí)會發(fā)生什么。為了把HTTP請求消息發(fā)送到名為 www.znzncn.com的web服務(wù)器主機(jī),瀏覽器必須獲悉這臺主機(jī)的IP地址。我們知道,差不多每臺主機(jī)都運(yùn)行著DNS應(yīng)用的客戶端。瀏覽器從 URL中抽取出主機(jī)名后把它傳遞給本地主機(jī)上的DNS應(yīng)用客戶端。DNS客戶于是向某個(gè)DNS服務(wù)器發(fā)出一個(gè)包含該主機(jī)名的DNS服務(wù)查詢消息。DNS客戶最終收到一個(gè)包含與該主機(jī)名對應(yīng)的IP地址的應(yīng)答消息。瀏覽器接著打開一個(gè)到位于該IP地址的HTTP服務(wù)器的TCP連接。從這個(gè)例子中可以看出,DNS服務(wù)給使用它的因特網(wǎng)應(yīng)用引入了額外延遲(有時(shí)還相當(dāng)大)。所幸的是,正如我們即將討論的那樣.預(yù)期的主機(jī)名—IP地址對應(yīng)關(guān)系往往高速緩存在就近的DNS服務(wù)器主機(jī)中,從而幫助降低了DNS訪問延遲和DNS服務(wù)網(wǎng)絡(luò)流量。 除了從主機(jī)名到IP地址的轉(zhuǎn)換,DNS服務(wù)還提供其他一些重要的服務(wù): ●主機(jī)別名。具有復(fù)雜主機(jī)名的主機(jī)還可以有一個(gè)或多個(gè)別名。例如,主機(jī)名為relay1.znzncn.znzncn1.com的主機(jī)有兩個(gè)別名:znzncn1.com和 www.znzncn1.com。這種情況下,主機(jī)名relay1.znzncn.znzncn1.com特稱為正規(guī)主機(jī)名 (canonical hostname),另外兩個(gè)主機(jī)名則是別名主機(jī)名(alias hostname)。 別名主機(jī)名往往比正規(guī)主機(jī)名更便于記憶。應(yīng)用可以調(diào)用DNS服務(wù)獲取所給定別名主機(jī)名的正規(guī)主機(jī)名和IP地址。 ●郵件服務(wù)器別名(mall server aliasing)。電子郵件地址顯然要求便于記憶。例如,如果znzncn有一個(gè)hotmail賬號,那么他的電子郵件地址可能是簡單的[email protected]。然而hotmail郵件服務(wù)器的主機(jī)名要比hotmail.com復(fù)雜且不易記住。電子郵件應(yīng)用可以調(diào)用DNS服務(wù)獲取所給定別名主機(jī)名的正規(guī)主機(jī)名和IP地址。事實(shí)上,DNS服務(wù)允許一個(gè)公司的郵件服務(wù)器和Web服務(wù)器使用相同的別名主機(jī)名。例如,某個(gè)公司的web服務(wù)器和郵件服務(wù)器可以都稱為znncn1.com。 ●負(fù)載分擔(dān)(load distribution)。DNS服務(wù)還越來越多地用于執(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地址。對于復(fù)制成的多個(gè)Web服務(wù)器,與其單個(gè)正規(guī)主機(jī)名相關(guān)聯(lián)的是一組IP地址。DNS服務(wù)數(shù)據(jù)庫中保存著這組IP地址??蛻舭l(fā)出針對映射到一組IP地址的某個(gè)主機(jī)名的DNS查詢后,服務(wù)器響應(yīng)以整組IP地址,不過每次響應(yīng)的地址順序是輪轉(zhuǎn)的。既然訪問web站點(diǎn)時(shí),瀏覽器一般把HTTP請求消息發(fā)送給內(nèi)DNS服務(wù)客戶查詢到的一組IP地址中的第一個(gè),DNS服務(wù)輪轉(zhuǎn)于是把web站點(diǎn)的訪問負(fù)載分擔(dān)在所有復(fù)制成的服務(wù)器上。電子郵件應(yīng)用也可以使用DNS服務(wù)輪轉(zhuǎn),這樣多個(gè)郵件服務(wù)器可以有相同的別名。