域名系統DNS
域名系統DNS——從域名解析出IP地址
文章目錄
- 域名系統DNS
- 概述
- 域名到IP地址的解析
- 互聯網的域名結構
- 命名標準
- 域名服務器
- 域名的解析過程
概述
域名系統DNS(Domain Name System)是互聯網使用的命名系統,用來把便于人們使用的機器名字轉換為IP地址。
互聯網的域名系統DNS被設計為一個聯機分布式數據庫系統,并采用客戶服務器方式。DNS使大多數名字都在本地進行解析,僅少量解析需要在互聯網上通信,因此DNS系統的效率很高。由于DNS是分布式系統,即使單個計算機出了故障了,也不會妨礙整個DNS系統的正常運行。
域名到IP地址的解析
域名到IP地址的解析是由分布在互連網上的許多域名服務器程序(可簡稱為域名服務器)共同完成的。域名服務器程序在專設的節點上運行,而人們也常把運行域名服務器程序的機器稱為域名服務器
解析要點如下:
- 當某一個應用進程需要把主機名解析為IP地址時,該應用進程就調用解析程序,并成為DNS的一個客戶。
- 該進程把待解析的域名放在DNS請求報文中,以UDP用戶數據報方式發給本地域名服務器(使用UDP是為了減少開銷)。
- 本地域名服務器在查找域名后,把對應的IP地址放在回答報文中返回。應用進程獲得目的主機的IP地址后即可進行通信
。若本地域名服務器不能回答該請求,則此域名服務器就暫時成為DNS中的另一個客戶,并向其他域名服務器發出查詢請求。這種過程直至找到能夠回答該請求的域名服務器為止。
互聯網的域名結構
互聯網采用層次樹狀結構的命名方法,采用這種命名方法,任何一個連接在互聯網上的主機或路由器都有一個唯一的層次結構的名字,即域名(domain name)。這里,域是名字空間中一個可被管理的劃分。
域還可以劃分為子域,而子域還可繼續劃分為子域的子域,這樣就形成了頂級域、二級域、三級域,等等。
從語法上講,每一個域名都由標號(label)序列組成,而各標號之間用點隔開(請注意,這里所說的“點”是英語中的句號“.“)
其中com是頂級域名,cctv是二級域名,標號mail是三級域名。
命名標準
- 域名中的標號都由英文字母和數字組成,每一個標號不超過63個字符(為了記憶方便,最好不要超過12個字符)
- 不區分大小寫字母
- 標號中除連字符(-)外不能使用其他的標點符號。
- 級別最低的域名寫在最左邊,而級別最高的頂級域名則寫在最右邊。
- 有多個標號組成的完整域名總共不超過255個字符。
DNS既不規定一個域名需要包含多少個下級域名,也不規定每一級的域名代表什么意思。各級域名由其上一級的域名管理機構管理,而最高的頂級域名則由ICANN進行管理。用這種方法可使每一個域名在整個互聯網范圍是唯一的,并且也容易設計出一種查找域名的機制。
需要注意的是,域名只是個邏輯概念,并不代表計算機所在的物理地點。
在頂級域名中則分為:國家頂級域名,通用頂級域名,反向域名
國家頂級域名 | 中國:cn, 美國:us,英國uk… |
---|---|
通用頂級域名 | com公司企業,edu教育機構,gov政府部門,int國際組織,mil軍事部門 ,net網絡,org非盈利組織… |
反向域名 | arpa,用于PTR查詢(IP地址轉換為域名) |
用域名樹來表示互連網的域名系統是最清楚的,如圖
在最上面的是根,但沒有對應的名字。根下面一級的節點就是最高一級的頂級域名。頂級域名往下可劃分子域(依次向下劃分)。域名樹的樹葉就是單臺計算機的名字,它不能再繼續往下劃分子域了。
域名服務器
具體實現域名系統則是使用分布在各地的域名服務器。
一個服務器所負責管轄的(或有權限的)范圍叫做區(zone)。各單位根據具體情況來劃分自己管轄范圍的區。但在一個區中的所有節點必須是能夠連通的。每一個區設置相應的權限域名服務器,用來保存該區中的所有主機的域名到IP地址的映射。
區是DNS服務器實際管轄的范圍。區可能等于或小于域,但一定不能大于域。(區是域的子集)
如圖中每一個域名服務器都能夠進行部分域名到IP地址的解析。當某個DNS服務器不能進行域名到IP地址的轉換時,他就設法找互聯網上別的域名服務器進行解析。同時不難看出,互聯網上的DNS域名服務器也是按照層次安排的。每一個域名服務器都只對域名體系中的一部分進行管轄。根據域名服務器所起的作用,可以把域名服務器劃分為以下四種不同的類型:
- 根域名服務器:根域名服務器是最高層次的域名服務器,也是最重要的域名服務器。
- 頂級域名服務器:這些域名服務器負責管理在該頂級域名服務器注冊的所有二級域名。
- 權限域名服務器:負責一個區的域名服務器。
- 本地域名服務器:本地域名服務器并不屬于如上圖所示的域名服務器層次結構,但它對域名系統非常重要。
注:一個域名服務器所負責的范圍,或者說有管理權限的范圍,就稱為 區域 (Zone)
關于分層, 需要注意的是:
- 每個層的域名上都有自己的域名服務器,最頂層的是根域名服務器
- 每一級域名服務器都知道下級域名服務器的IP地址
- 為了容災, 每一級至少設置兩個或以上的域名服務器
域名的解析過程
- 客戶端發起請求:當用戶在瀏覽器中輸入域名時,客戶端(如電腦、手機等)會向本地 DNS 服務器發送查詢請求,請求解析該域名對應的 IP 地址。
- 本地 DNS 緩存查詢:本地 DNS 服務器首先會檢查自身的緩存,看是否已經有該域名的緩存記錄。如果有,直接返回對應的 IP 地址,解析過程結束。
- 本地 DNS 服務器查詢:如果本地 DNS 服務器緩存中沒有該域名的記錄,它會向根 DNS 服務器發送查詢請求。
- 根 DNS 服務器響應:根 DNS 服務器收到請求后,會告知本地 DNS 服務器負責該域名頂級域名(如.com、.org 等)的權威 DNS 服務器的地址。
- 查詢頂級域名服務器:本地 DNS 服務器根據根 DNS 服務器提供的地址,向對應的頂級域名服務器發送查詢請求。
- 頂級域名服務器響應:頂級域名服務器會告知本地 DNS 服務器負責該域名二級域名(如 example.com 中的 example)的權威 DNS 服務器的地址。
- 查詢權威 DNS 服務器:本地 DNS 服務器繼續向二級域名的權威 DNS 服務器發送查詢請求。
- 權威 DNS 服務器響應:權威 DNS 服務器查詢到該域名對應的 IP 地址后,將其返回給本地 DNS 服務器。
- 本地 DNS 服務器緩存并響應:本地 DNS 服務器將查詢到的 IP 地址緩存起來,并返回給客戶端。
- 客戶端與目標服務器通信:客戶端獲得 IP 地址后,就可以使用該 IP 地址與目標服務器進行通信。