域名系統(tǒng)(英語:Domain Name System,縮寫:DNS)是互聯(lián)網(wǎng)的一項服務(wù)。它作為將域名和IP地址相互映射的一個分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng)。DNS使用TCP和UDP端口53[1]。當前,對于每一級域名長度的限制是63個字符,域名總長度則不能超過253個字符。
歷史DNS最早于1983年由保羅·莫卡派喬斯(Paul Mockapetris)發(fā)明;原始的技術(shù)規(guī)范在882號因特網(wǎng)標準草案(RFC 882)中發(fā)布。1987年發(fā)布的第1034和1035號草案修正了DNS技術(shù)規(guī)范,并廢除了之前的第882和883號草案。在此之后對因特網(wǎng)標準草案的修改基本上沒有涉及到DNS技術(shù)規(guī)范部分的改動。
早期的域名必須以英文句號.結(jié)尾。例如,當用戶訪問www.wikipedia.org的HTTP服務(wù)時必須在地址欄中輸入:http://www.wikipedia.org.,這樣DNS才能夠進行域名解析。如今DNS服務(wù)器已經(jīng)可以自動補上結(jié)尾的句號。
記錄類型主條目:域名服務(wù)器記錄類型列表
DNS系統(tǒng)中,常見的資源記錄類型有:
主機記錄(A記錄):RFC 1035定義,A記錄是用于名稱解析的重要記錄,它將特定的主機名映射到對應(yīng)主機的IP地址上。
別名記錄(CNAME記錄): RFC 1035定義,CNAME記錄用于將某個別名指向到某個A記錄上,這樣就不需要再為某個新名字另外創(chuàng)建一條新的A記錄。
IPv6主機記錄(AAAA記錄): RFC 3596定義,與A記錄對應(yīng),用于將特定的主機名映射到一個主機的IPv6地址。
服務(wù)位置記錄(SRV記錄): RFC 2782定義,用于定義提供特定服務(wù)的服務(wù)器的位置,如主機(hostname),端口(port number)等。
NAPTR記錄:RFC 3403定義,它提供了正則表達式方式去映射一個域名。NAPTR記錄非常著名的一個應(yīng)用是用于ENUM查詢。
技術(shù)實現(xiàn)概述DNS通過允許一個名稱服務(wù)器把他的一部分名稱服務(wù)(眾所周知的zone)“委托”給子服務(wù)器而實現(xiàn)了一種層次結(jié)構(gòu)的名稱空間。此外,DNS還提供了一些額外的信息,例如系統(tǒng)別名、聯(lián)系信息以及哪一個主機正在充當系統(tǒng)組或域的郵件樞紐。
任何一個使用IP的計算機網(wǎng)絡(luò)可以使用DNS來實現(xiàn)他自己的私有名稱系統(tǒng)。盡管如此,當提到在公共的InternetDNS系統(tǒng)上實現(xiàn)的域名時,術(shù)語“域名”是最常使用的。
這是基于984個全球范圍的“根域名服務(wù)器”(分成13組,分別編號為A至M)。從這984個根服務(wù)器開始,余下的Internet DNS名字空間被委托給其他的DNS服務(wù)器,這些服務(wù)器提供DNS名稱空間中的特定部分。
軟件DNS系統(tǒng)是由各式各樣的DNS軟件所驅(qū)動的,例如:
BIND(Berkeley Internet Name Domain),使用最廣的DNS軟件
DJBDNS(Dan J Bernstein's DNS implementation)
MaraDNS
Name Server Daemon(Name Server Daemon)
PowerDNS
Dnsmasq
國際化域名主條目:Punycode
Punycode是一個根據(jù)RFC 3492標準而制定的編碼系統(tǒng),主要用于把域名從地方語言所采用的Unicode編碼轉(zhuǎn)換成為可用于DNS系統(tǒng)的編碼。而該編碼是根據(jù)域名相異字表(由IANA制定),Punycode可以防止所謂的IDN欺騙。
域名解析舉一個例子,zh.wikipedia.org作為一個域名就和IP地址198.35.26.96相對應(yīng)。DNS就像是一個自動的電話號碼簿,我們可以直接撥打198.35.26.96的名字zh.wikipedia.org來代替電話號碼(IP地址)。DNS在我們直接調(diào)用網(wǎng)站的名字以后就會將像zh.wikipedia.org一樣便于人類使用的名字轉(zhuǎn)化成像198.35.26.96一樣便于機器識別的IP地址。
DNS查詢有兩種方式:遞歸和迭代。DNS客戶端設(shè)置使用的DNS服務(wù)器一般都是遞歸服務(wù)器,它負責全權(quán)處理客戶端的DNS查詢請求,直到返回最終結(jié)果。而DNS服務(wù)器之間一般采用迭代查詢方式。
以查詢 zh.wikipedia.org 為例:
客戶端發(fā)送查詢報文"query zh.wikipedia.org"至DNS服務(wù)器,DNS服務(wù)器首先檢查自身緩存,如果存在記錄則直接返回結(jié)果。
如果記錄老化或不存在,則:
DNS服務(wù)器向根域名服務(wù)器發(fā)送查詢報文"query zh.wikipedia.org",根域名服務(wù)器返回頂級域.org 的權(quán)威域名服務(wù)器地址。
DNS服務(wù)器向 .org 域的權(quán)威域名服務(wù)器發(fā)送查詢報文"query zh.wikipedia.org",得到二級域.wikipedia.org 的權(quán)威域名服務(wù)器地址。
DNS服務(wù)器向 .wikipedia.org 域的權(quán)威域名服務(wù)器發(fā)送查詢報文"query zh.wikipedia.org",得到主機 zh 的A記錄,存入自身緩存并返回給客戶端。
WHOIS(域名數(shù)據(jù)庫查詢)一個域名的所有者可以通過查詢WHOIS數(shù)據(jù)庫而被找到;對于大多數(shù)根域名服務(wù)器,基本的WHOIS由ICANN維護,而WHOIS的細節(jié)則由控制那個域的域注冊機構(gòu)維護。
對于240多個國家代碼頂級域名(ccTLDs),通常由該域名權(quán)威注冊機構(gòu)負責維護WHOIS。例如中國互聯(lián)網(wǎng)絡(luò)信息中心(China Internet Network Information Center)負責.CN域名的WHOIS維護,香港互聯(lián)網(wǎng)注冊管理有限公司(Hong Kong Internet Registration Corporation Limited)負責.HK域名的WHOIS維護,臺灣網(wǎng)絡(luò)信息中心(Taiwan Network Information Center)負責.TW域名的WHOIS維護1。
本詞條內(nèi)容貢獻者為:
閆曉東 - 副教授 - 中央民族大學信息工程學院