域名系統(英文:Domain Name System,縮寫:DNS)是網際網路的一項服務。它作為將域名和IP位址相互映射的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS使用TCP和UDP連線埠53[1]。當前,對於每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。
開始時,域名的字元僅限於ASCII字元的一個子集。2008年,ICANN通過一項決議,允許使用其它語言作為網際網路頂級域名的字元。使用基於Punycode碼的IDNA系統,可以將Unicode字元串映射為有效的DNS字元集。因此,諸如“XXX.中國”、“XXX.美國”的域名可以在地址欄直接輸入並訪問,而不需要安裝外掛程式。但是,由於英語的廣泛使用,使用其他語言字元作為域名會產生多種問題,例如難以輸入,難以在國際推廣等。
基本介紹
- 中文名:域名系統
- 外文名:Domain Name System
- 使用協定:UDP,TCP(當請求大於512位元組時)
- 使用連線埠:53
簡介,歷史,記錄類型,技術實現,概述,軟體,國際化域名,域名解析,WHOIS(域名資料庫查詢),其他,相關條目,
簡介
域名系統(英文:DomainNameSystem,縮寫:DNS)是網際網路的一項服務。它作為將域名和IP位址相互映射的一個分散式資料庫,能夠使人更方便地訪問網際網路。DNS使用TCP和UDP連線埠53。當前,對於每一級域名長度的限制是63個字元,域名總長度則不能超過253個字元。
開始時,域名的字元僅限於ASCII字元的一個子集。2008年,ICANN通過一項決議,允許使用其它語言作為網際網路頂級域名的字元。使用基於Punycode碼的IDNA系統,可以將Unicode字元串映射為有效的DNS字元集。因此,諸如“XXX.中國”、“XXX.台灣”的域名可以在地址欄直接輸入並訪問,而不需要安裝外掛程式。但是,由於英語的廣泛使用,使用其他語言字元作為域名會產生多種問題,例如難以輸入,難以在國際推廣等。
歷史
DNS最早於1983年由保羅·莫卡派喬斯(Paul Mockapetris)發明;原始的技術規範在882號網際網路標準草案(RFC 882)中發布。1987年發布的第1034和1035號草案修正了DNS技術規範,並廢除了之前的第882和883號草案。在此之後對網際網路標準草案的修改基本上沒有涉及到DNS技術規範部分的改動。
早期的域名必須以英文句號“.”結尾,例如,當用戶訪問 www.wikipedia.org 的HTTP服務時必須在地址欄中輸入:http://www.wikipedia.org.,這樣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)等。
技術實現
概述
DNS通過允許一個名稱伺服器把他的一部分名稱服務(眾所周知的zone)“委託”給子伺服器而實現了一種層次結構的名稱空間。此外,DNS還提供了一些額外的信息,例如系統別名、聯繫信息以及哪一個主機正在充當系統組或域的郵件樞紐。
這是基於504個全球範圍的“根域名伺服器”(分成13組,分別編號為A至M)。從這504個根伺服器開始,餘下的Internet DNS名字空間被委託給其他的DNS伺服器,這些伺服器提供DNS名稱空間中的特定部分。
軟體
DNS系統是由各式各樣的DNS軟體所驅動的,例如:
- BIND(Berkeley Internet Name Domain),使用最廣的DNS軟體
- DJBDNS(Dan J Bernstein's DNS implementation)
- MaraDNS
- Name Server Daemon(Name Server Daemon)
國際化域名
主條目:Punycode
Punycode是一個根據RFC 3492標準而制定的編碼系統,主要用於把域名從地方語言所採用的Unicode編碼轉換成為可用於DNS系統的編碼。而該編碼是根據域名相異字表(由IANA制定),Punycode可以防止所謂的IDN欺騙。
域名解析
舉一個例子,zh.wikipedia.org作為一個域名就和IP位址198.35.26.96相對應。DNS就像是一個自動的電話號碼簿,我們可以直接撥打198.35.26.96的名字zh.wikipedia.org來代替電話號碼(IP位址)。DNS在我們直接調用網站的名字以後就會將像zh.wikipedia.org一樣便於人類使用的名字轉化成像198.35.26.96一樣便於機器識別的IP位址。
DNS查詢有兩種方式:遞歸和疊代。DNS客戶端設定使用的DNS伺服器一般都是遞歸伺服器,它負責全權處理客戶端的DNS查詢請求,直到返回最終結果。而DNS伺服器之間一般採用疊代查詢方式。
以查詢 zh.wikipedia.org 為例:
- 客戶端傳送查詢報文"query zh.wikipedia.org"至DNS伺服器,DNS伺服器首先檢查自身快取,如果存在記錄則直接返回結果。
- 如果記錄老化或不存在,則:
- DNS伺服器向 .org 域的權威域名伺服器傳送查詢報文"query zh.wikipedia.org",得到二級域.wikipedia.org 的權威域名伺服器地址。
- DNS伺服器向 .wikipedia.org 域的權威域名伺服器傳送查詢報文"query zh.wikipedia.org",得到主機 zh 的A記錄,存入自身快取並返回給客戶端。
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伺服器將用戶引向錯誤網站,以達到竊取用戶隱私信息的目的。這種DNS伺服器大約有68000台。
相關條目
- 網際網路主題
- 域名伺服器記錄類型列表