linux下DNS詳解及應用一

2021-06-02 14:31:27 字數 4418 閱讀 7012

一 dns的應用範圍

使用主機名標識一台主機,也可以使用ip位址標識。人們更願意使用便於記憶的主機名識別符號,而路由器則只願使用長度固定民有層次結構的ip位址。為調解這兩種不同的偏好,我們需要乙個把主機名轉換成ip位址的目錄服務。這就是網際網路的網域名稱系統(domain name system,dns)的主要任務。dns既是乙個在由名稱伺服器主機構成的層次結構中實現的分布式資料庫,又是乙個允許客戶主機和名稱伺服器主機通訊以使用網域名稱轉換服務的應用層協議。名稱伺服器主機通常是執行berkeley internet name domain(簡稱bind)軟體的unix主機。dns協議執行在udp之上,使用埠號53。

其他應用層協議(例如http,smtp,ftp)普遍使用dns把由使用者提供的主機名轉換成ip位址。作為例子,我們考慮某個使用者使用執行在本地主機上的乙個瀏覽器(也就是http客戶)請求時會發生什麼。為了把http請求訊息傳送到名為www.yesky.com的web伺服器主機,瀏覽器必須獲悉這台主機的ip位址。我們知道,差不多每台主機都執行著dns應用的客戶端。瀏覽器從url中抽取出主機名後把它傳遞給本地主機上的dns應用客戶端。dns客戶於是向某個dns伺服器發出乙個包含該主機名的dns查詢訊息。dns客戶最終收到乙個包含與該主機名對應的ip位址的應答訊息。瀏覽器接著開啟乙個到位於該ip位址的http伺服器的tcp連線。從這個例子中可以看出,dns給使用它的網際網路應用引入了額外延遲(有時還相當大)。所幸的是,正如我們即將討論的那樣.預期的主機名—ip位址對應關係往往快取記憶體在就近的dns名稱伺服器主機中,從而幫助降低了dns訪問延遲和dns網路流量。

除了從主機名到ip位址的轉換,dns還提供其他一些重要的服務:●主機別名(hody aliasing)。具有複雜主機名的主機還可以有乙個或多個別名。例如,

主機名為relay1.west-coast.enterprise.com的主機有兩個別名:enterprise.com和www.enterprise.com。這種情況下,主機名relay1.west-coast.enterprise.com特稱為正規主機名(canonical hostname),另外兩個主機名則是別名主機名(alias hostname)。

別名主機名往往比正規主機名更便於記憶。應用可以呼叫dns獲取所給定別名主機名的正規主機名和ip位址。

●郵件伺服器別名(mall server aliasing)。電子郵件位址顯然要求便於記憶。例如,如果bob有乙個hotmail賬號,那麼他的電子郵件位址可能是簡單的[email protected]。然而hotmail郵件伺服器的主機名要比hotmail.com複雜且不易記住。電子郵件應用可以呼叫dns獲取所給定別名主機名的正規主機名和ip位址。事實上,dns允許乙個公司的郵件伺服器和web伺服器使用相同的別名主機名。例如,某個公司的web伺服器和郵件伺服器可以都稱為enterprise.com。

●負載分擔(load distribution)。dns還越來越多地用於執行在多個複製成的伺服器(例如複製成的web伺服器)之間的負載分擔。像cnn.com那樣的繁忙站點往往把web伺服器複製成多個,每個伺服器執行在不向的端系統上,具有不同的ip位址。對於複製成的多個web伺服器,與其單個正規主機名相關聯的是一組ip位址。dns資料庫中儲存著這組ip位址。客戶發出針對對映到一組ip位址的某個主機名的dns查詢後,伺服器響應以整組ip位址,不過每次響應的位址順序是輪轉的。既然訪問web站點時,瀏覽器一般把http請求訊息傳送給內dns客戶否詢到的一組ip位址中的第乙個,dns輪轉於是把web站點的訪問負載分擔在所有複製成的伺服器上。電子郵件應用也可以使用dns輪轉,這樣多個郵件伺服器可以有相同的別名。近來,有些公司已經以更為複雜的方式使用dns提供web內容分發服務。

dns在rfc 1034和rfc 1035中有詳細說明,並在另外若干個rfc中作了更新。dns是乙個複雜的系統,我們只在這兒討論其操作的關鍵方面。感興趣朗讀者可以參見協議文件。

二 dns工作機理概述

我們就dns工作機理的討論將集中在從主機名到ip位址的轉換服務上。從客戶看來,dns是乙個黑盒子。客戶把乙個dns查詢訊息傳送給這個黑盒於,其中指明需要轉換成ip位址的主機名。在許多基於unix的主機上,應用程式通過呼叫庫函式gethostbyname()發出查詢訊息。過了從數毫秒到數十秒的一段延遲時間之後,客戶收到乙個給出所需對映關係的dns響應訊息。因此從客戶看來,dns是乙個簡單而直接了當的轉換服務。然而實現這個服務的黑盒子事實上相當複雜,涉及散布全球的許多臺名稱伺服器主機,以及說明名稱伺服器和dns客屍如何通訊的乙個應用層協議。

dns可以簡單地設計成讓單個網際網路名稱伺服器包含所有對映關係。在這種集中式的設計中,客戶簡單地把所有諮詢訊息傳送給這個惟一的名稱伺服器,該名稱伺服器則把響應訊息返回給查詢的客戶。這種設汁儘管具有誘人的簡單性,但對於今今的網際網路來說卻完全不合適,因為其中的主機數非常巨大,而且仍在增長。集中式設計的問題在於:

●單點故障 要是惟一的名稱伺服器崩潰了,整個網際網路也完了。

●巨大訪問量 單個名稱伺服器將不得不處理所有dns查詢訊息(因為所有的hitp請求和電子郵件訊息都是由數百萬台的主機生成的。

●遠距離集中式資料庫 單台名稱伺服器主機不可能在所有請求查詢的客戶主機附近。例如,假設名稱伺服器在紐約,而所有的查詢都來自於地球另一邊的

澳大利亞,可能要經過緩慢且擁塞的鏈路。這樣造成的遠距離訪問將導致相當大的延遲。

●維護 單台名稱伺服器將儲存所有網際網路主機的記錄。這個集中式資料庫不僅會相當巨大,而且不得不為每台新增的主機頻繁更新。允許任何使用者在集中式資料庫中註冊主機還存在身份認證與授權問題。

總之,存放在單台名稱伺服器主機中的集中式資料庫是不可擴充套件的。可見dns必須設計成分布式資料庫。實際上,dns是乙個如何在網際網路中實現分布式資料庫的範例。

為了應對擴充套件問題,dns使用以某種層次結構組織的散布全世界各地的大量名稱伺服器主機。其中沒有乙個名稱伺服器擁有網際網路中所有主機的主機名—ip位址對映關係。相反,這些對映關係足散布在各個名稱伺服器上的。近似地說,共有三種型別的名稱伺服器:區域性名稱伺服器、根名稱伺服器和權威名稱伺服器。再近似地說,這些名稱伺服器本身之間相互作用,並且還和查詢主機之間相互作用,如下:

●區域性名稱伺服器

每個isp一如大學、乙個學院中的部門、乙個雇員的公司或者乙個居民區的isp———都有乙個區域性名稱伺服器(也稱為預設名稱伺服器)。當一台主機發布了dns查詢訊息,該訊息首先被傳送到主機的區域性名稱伺服器上。區域性名稱伺服器上的ip位址通常是在主機中手動設定的(在一台wlndows機器上可以用你的pc機通過如下過程找到:首先開啟控制面板,然後選擇「網路」,然後選擇己安裝的tcp/1p元件,檢視它的屬性)。區域性名稱伺服器通常是在客戶端「附近」的。在乙個教育公共機構的isp情況下,它可能會和客戶端主機位於同乙個區域網中;對於乙個住宅區的isp來說,名稱伺服器通常是和客戶端主機僅通過少量路由器分隔開來的。如果乙個主機為另一屬於同乙個isp的主機請求解析,那麼區域性名稱伺服器將能夠立即提供所請求的ip位址。例如,當主機surf.yesky.com求baie yesky.com的ip位址時,yesky.com的區域性名稱伺服器將不用和任何其他名稱伺服器聯絡就能夠提供所請求的ip位址。

●根名稱伺服器

網際網路中有十幾個左右的根名稱伺服器,它們目前大多數都位於北美。當乙個區域性名稱伺服器無法立即滿足乙個從主機到來的查詢的時候(因為它沒有被請求的主機名稱記錄),區域性名稱伺服器就會作為乙個dns客戶端並向根名稱伺服器查詢。如果根名稱伺服器有該主機的記錄,它就會給區域性名稱伺服器傳送乙個dns應答訊息,並且區域性名稱伺服器給發出查詢的主機做以應答。但是根名稱伺服器可能也沒有該主機的記錄。相反,根名稱伺服器知道乙個有詳細的主機名稱對映的「權威名稱伺服器」的ip位址。

●權威名稱伺服器

每個主機都被記錄在乙個權威名稱伺服器上。通常,乙個主機的權威名稱伺服器是該主機的區域性isp中的名稱伺服器(事實上,要求每個主機都至少有兩個權威名稱伺服器,以防它們出現故障)。由定義可知,如果它總是存在著將主機名稱解析為ip位址的dns記錄,那麼該名稱伺服器對於主機來說就是權威性的。當乙個權威名稱伺服器被乙個根伺服器查詢的時候,權威名稱伺服器就會用包含著請求對映的dns應答來響應。然後根伺服器將對映傳送到區域性名稱伺服器上,然後區域性名稱伺服器將對映**到發出請求的主機上。很多名稱伺服器都是同時作為區域性和權威名稱伺服器使用的。

讓我們看乙個簡單的例子。假設主機surf.eurecom.cn想要得到gain.cs.umass.edu的ip位址。並且假設eurecom的區域性名稱伺服器稱為dns.eurecom.cn,而gain.cs.umass.edu的權威名稱伺服器稱為dns.umass.edu。如圖1所示,主機surf.eurecom.cn首先給它的區域性名稱伺服器dns.eurecom.cn傳送乙個dns請求訊息。該請求訊息包含著要被解析的主機名稱,也就是gain.cs.umass.edu。區域性名稱伺服器將查詢訊息傳送到乙個根名稱伺服器。根名稱伺服器將該查詢訊息傳送到umass.edu域中所有主機的權威名稱伺服器上,例如,傳送到dns.umass.edu。然後權威名稱伺服器將所要的對映通過根名稱伺服器和區域性名稱伺服器傳送到發出查詢的主機上。注意,在這個例子中,為了得到乙個主機名稱的對映,傳送了6個dns訊息:3個查詢訊息和3個應答訊息。

圖1 獲得網域名稱對映所進行的遞迴查詢

linux下DNS詳解及應用二

一 linux 下主要dns配置檔案 linux 下主要dns配置檔案見表 一 二 三 表 1 dns主要配置檔案 檔名稱 中文名稱 作用 etc hosts 主機的乙個列表檔案 包含 本地網路中 已知主機的乙個列表。如果系統的 ip 不是動態生成,就可以使用它。對於簡單的主機名解析 點分表示法 在...

linux下dd命令詳解及應用例項

名稱 dd 使用許可權 任何使用者dd 這個指令在 manual 裡的定義是 convert and copy a file 使用方式 dd option 檢視幫助說明 dd help 或是info dd 檢視版本 dd version 輸入或輸出 dd if stdin of stdout 強迫輸...

linux下dd命令詳解及應用例項

名稱 dd 使用許可權 任何使用者dd 這個指令在 manual 裡的定義是 convert and copy a file 使用方式 dd option 檢視幫助說明 dd help 或是info dd 檢視版本 dd version 輸入或輸出 dd if stdin of stdout 強迫輸...