域名系統

本页使用了标题或全文手工转换,现处于澳门繁体模式
求聞百科,共筆求聞

網域名稱系統(英語:Domain Name System,縮寫:DNS)是互聯網的一項服務。它作為將域名IP位址相互對映的一個分散式數據庫,能夠使人更方便地存取互聯網。DNS使用TCPUDP53[1]。當前,對於每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。

開始時,域名的字元僅限於ASCII字元的一個子集。2008年,ICANN通過一項決議,允許使用其它語言作為互聯網頂級域名的字元。使用基於Punycode碼的IDNA系統,可以將Unicode字串對映為有效的DNS字元集。因此,諸如「×××.中國」的域名可以在地址列直接輸入並存取,而不需要安裝外掛程式。但是,由於英語的廣泛使用,使用其他語言字元作為域名會產生多種問題,例如難以輸入、難以在國際推廣等。

歷史

DNS最早於1983年由保羅·莫卡派喬斯(Paul Mockapetris)發明;原始的技術規範在882號互聯網標準草案(RFC 882)中發佈。1987年發佈的第1034和1035號草案修正了DNS技術規範,並廢除了之前的第882和883號草案。在此之後對互聯網標準草案的修改基本上沒有涉及到DNS技術規範部分的改動。

早期的域名必須以英文句號.結尾。例如,當用戶存取中華人民共和國國務院HTTP服務時,必須在地址列中輸入:http://www.gov.cn.,這樣DNS才能夠進行域名解析。如今,DNS伺服器已經可以自動補上結尾的句號。

記錄類型

DNS系統中,常見的資源記錄類型有:

  • 主機記錄(A記錄):RFC 1035定義,A記錄是用於名稱解析的重要記錄,它將特定的主機名對映到對應主機的IP位址上。
  • 別名記錄(CNAME記錄): RFC 1035定義,CNAME記錄用於將某個別名指向到某個A記錄上,這樣就不需要再為某個新名字另外建立一條新的A記錄。
  • IPv6主機記錄(AAAA記錄): RFC 3596定義,與A記錄對應,用於將特定的主機名對映到一個主機的IPv6地址。
  • 服務位置記錄(SRV記錄): RFC 2782定義,用於定義提供特定服務的伺服器的位置,如主機(hostname),埠(port number)等。
  • 域名伺服器記錄(NS記錄) :用來指定該域名由哪個DNS伺服器來進行解析。 您註冊域名時,總有預設的DNS伺服器,每個註冊的域名都是由一個DNS域名伺服器來進行解析的,DNS伺服器NS記錄地址一般以以下的形式出現: ns1.domain.com、ns2.domain.com等。 簡單的說,NS記錄是指定由哪個DNS伺服器解析你的域名。
  • NAPTR記錄:RFC 3403定義,它提供了正則表達式方式去對映一個域名。NAPTR記錄非常著名的一個應用是用於ENUM查詢。

技術實現

概述

DNS通過允許一個名稱伺服器把它的一部分名稱服務(眾所周知的zone)「委託」給子伺服器而實現了一種階層的名稱空間。此外,DNS還提供了一些額外的資訊,例如系統別名、聯絡資訊以及哪一個主機正在充當系統組或域的郵件樞紐。

任何一個使用IP的電腦網絡可以使用DNS來實現它自己的私有名稱系統。儘管如此,當提到在公共的Internet DNS系統上實現的域名時,術語「域名」是最常使用的。

這是基於984個全球範圍的「根域名伺服器」(分成13組,分別編號為A至M)[2]。從這984個根伺服器開始,餘下的Internet DNS命名空間被委託給其他的DNS伺服器,這些伺服器提供DNS名稱空間中的特定部分。

軟件

DNS系統是由各式各樣的DNS軟件所驅動的,例如:

國際化域名

Punycode是一個根據RFC 3492標準而製定的編碼系統,主要用於把域名從地方語言所採用的Unicode編碼轉換成為可用於DNS系統的編碼。而該編碼是根據域名相異字表 (由IANA制定),Punycode可以防止所謂的IDN欺騙

域名解析

舉一個例子,example.com作為一個域名就和IP位址1.2.3.4相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打1.2.3.4的名字example.com來代替電話號碼(IP位址)。DNS在我們直接呼叫網站的名字以後就會將像example.com一樣便於人類使用的名字轉化成像1.2.3.4一樣便於機器辨識的IP位址。

DNS查詢有兩種方式:遞歸迭代。DNS客戶端設置使用的DNS伺服器一般都是遞歸伺服器,它負責全權處理客戶端的DNS查詢請求,直到返回最終結果。而DNS伺服器之間一般採用迭代查詢方式。

以查詢www.example.com為例:

  • 客戶端傳送查詢報文"QUERY www.example.com"至DNS伺服器,DNS伺服器首先檢查自身快取,如果存在記錄則直接返回結果。
  • 如果記錄老化或不存在,則:
    1. DNS伺服器向根域名伺服器傳送查詢報文"QUERY www.example.com",根域名伺服器返回頂級域 .com 的頂級域名伺服器地址。
    2. DNS伺服器向 .com 域的頂級域名伺服器傳送查詢報文"query www.example.com",得到二級域 .example.com 的權威域名伺服器地址。
    3. DNS伺服器向 .example.com 域的權威域名伺服器傳送查詢報文"query www.example.com",得到主機 zh 的A記錄,存入自身快取並返回給客戶端。

WHOIS(域名數據庫查詢)

一個域名的所有者可以通過查詢WHOIS數據庫[3]而被找到;對於大多數根域名伺服器,基本的WHOIS由ICANN維護,而WHOIS的細節則由控制那個域的域序號產生器構維護。

對於240多個國家代碼頂級域名(ccTLDs),通常由該域名權威序號產生器構負責維護WHOIS。例如中國互聯網絡信息中心(China Internet Network Information Center)負責.CN域名的WHOIS維護,香港互聯網註冊管理有限公司(Hong Kong Internet Registration Corporation Limited)負責.HK域名的WHOIS維護,台灣網絡資訊中心(Taiwan Network Information Center)負責.TW域名的WHOIS維護。

其他

此外,一些黑客通過偽造DNS伺服器將用戶引向錯誤網站,以達到竊取用戶私隱資訊的目的。[4]

相關條目

參考文獻

  1. (英文)P. Mockapetris. RFC 1035 - DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION: Page 32. 1987-11 [2018-04-24]. The Internet supports name server access using TCP [RFC-793] on server port 53 (decimal) as well as datagram access using UDP [RFC-768] on UDP port 53 (decimal). 
  2. (英文)Root Server Technical Operations Assn. [2014年1月28日]. 
  3. 存档副本. [2018-08-05]. 
  4. JORDAN ROBERTSON. Use of Rogue DNS Servers on Rise. The Associated Press. 
  • RFC 882
  • RFC 883
  • RFC 1034
  • RFC 1035
  • RFC 1180 - TCP/IP tutorial

外部連結