在周星馳的電影《唐伯虎點(diǎn)秋香》中困肩,周星馳飾演的主角一進(jìn)入華府邓厕,就被強(qiáng)制增加了一個(gè)代號(hào)9527。從此洽糟,華府的人開始稱呼主角為9527,而不是他的姓名堕战。
域名(domain name)是IP地址的代號(hào)坤溃。域名通常是由字符構(gòu)成的。對(duì)于人類來說嘱丢,字符構(gòu)成的域名薪介,比如www.yahoo.com,要比純粹數(shù)字構(gòu)成的IP地址(106.10.170.118)容易記憶越驻。域名解析系統(tǒng)(DNS, domain name system)就負(fù)責(zé)將域名翻譯為對(duì)應(yīng)的IP地址汁政。在DNS的幫助下道偷,我們可以在瀏覽器的地址欄輸入域名,而不是IP地址记劈。這大大減輕了互聯(lián)網(wǎng)用戶的記憶負(fù)擔(dān)勺鸦。另一方面,處于維護(hù)和運(yùn)營(yíng)的原因目木,一些網(wǎng)站可能會(huì)變更IP地址换途。這些網(wǎng)站可以更改DNS中的對(duì)應(yīng)關(guān)系,從而保持域名不變刽射,而IP地址更新军拟。由于大部分用戶記錄的都是域名,這樣就可以降低IP變更帶來的影響誓禁。
從機(jī)器和技術(shù)的角度上來說懈息,域名并不是必須的。但I(xiàn)nternet是由機(jī)器和用戶共同構(gòu)成的摹恰。鑒于DNS對(duì)用戶的巨大幫助辫继,DNS已經(jīng)被當(dāng)作TCP/IP套裝不可或缺的一個(gè)組成部分。
DNS服務(wù)器
域名和IP地址的對(duì)應(yīng)關(guān)系存儲(chǔ)在DNS服務(wù)器(DNS server)中戒祠。所謂的DNS服務(wù)器骇两,是指在網(wǎng)絡(luò)中進(jìn)行域名解析的一些服務(wù)器(計(jì)算機(jī))。這些服務(wù)器都有自己的IP地址姜盈,并使用DNS協(xié)議(DNS protocol)進(jìn)行通信低千。DNS協(xié)議主要基于UDP,是應(yīng)用層協(xié)議(這也是我們見到的第一個(gè)應(yīng)用層協(xié)議)馏颂。
DNS服務(wù)器構(gòu)成一個(gè)分級(jí)(hierarchical)的樹狀體系示血。上圖中,每個(gè)節(jié)點(diǎn)(node)為一個(gè)DNS服務(wù)器救拉,每個(gè)節(jié)點(diǎn)都有自己的IP地址难审。樹的頂端為用戶電腦出口處的DNS服務(wù)器。在Linux下亿絮,可以使用cat /etc/resolv.conf告喊,在Windows下,可以使用ipconfig /all派昧,來查詢出口DNS服務(wù)器黔姜。樹的末端是真正的域名/IP對(duì)應(yīng)關(guān)系記錄。一次DNS查詢就是從樹的頂端節(jié)點(diǎn)出發(fā)蒂萎,最終找到相應(yīng)末端記錄的過程秆吵。
中間節(jié)點(diǎn)根據(jù)域名的構(gòu)成,將DNS查詢引導(dǎo)向下一級(jí)的服務(wù)器五慈。比如說一個(gè)域名cs.berkeley.edu纳寂,DNS解析會(huì)將域名分割為cs, berkeley, edu主穗,然后按照相反的順序查詢(edu, berkeley, cs)。出口DNS首先根據(jù)edu毙芜,將查詢指向下一層的edu節(jié)點(diǎn)忽媒。然后edu節(jié)點(diǎn)根據(jù)berkeley,將查詢指向下一層的berkeley節(jié)點(diǎn)爷肝。這臺(tái)berkeley服務(wù)器上存儲(chǔ)有cs.berkeley.edu的IP地址猾浦。所以,中間節(jié)點(diǎn)不斷重新定向灯抛,并將我們引導(dǎo)到正確的記錄金赦。
在整個(gè)DNS查詢過程中,無論是重新定向還是最終取得對(duì)應(yīng)關(guān)系对嚼,都是用戶計(jì)算機(jī)和DNS服務(wù)器使用DNS協(xié)議通信夹抗。用戶計(jì)算機(jī)根據(jù)DNS服務(wù)器的反饋,依次與下一層的DNS服務(wù)器建立通信纵竖。用戶計(jì)算機(jī)經(jīng)過遞歸查詢漠烧,最終和末端節(jié)點(diǎn)通信,并獲得IP地址靡砌。
緩存
用戶計(jì)算機(jī)的操作系統(tǒng)中的域名解析模塊(DNS Resolver)負(fù)責(zé)域名解析的相關(guān)工作已脓。任何一個(gè)應(yīng)用程序(郵件盯桦,瀏覽器)都可以通過調(diào)用該模塊來進(jìn)行域名解析异袄。
并不是每次域名解析都要完整的經(jīng)歷解析過程。DNS Resolver通常有DNS緩存(cache)宙攻,用來記錄最近使用和查詢的域名/IP關(guān)系画舌。在進(jìn)行DNS查詢之前堕担,計(jì)算機(jī)會(huì)先查詢cache中是否有相關(guān)記錄。這樣曲聂,重復(fù)使用的域名就不用總要經(jīng)過整個(gè)遞歸查詢過程霹购。
反向DNS
上面的DNS查詢均為正向DNS查詢:已經(jīng)知道域名,想要查詢對(duì)應(yīng)IP朋腋。而反向DNS(reverse DNS)是已經(jīng)知道IP的前提下齐疙,想要查詢域名。反向DNS也是采用分層查詢方式旭咽,對(duì)于一個(gè)IP地址(比如106.10.170.118)贞奋,依次查詢in-addr.arpa節(jié)點(diǎn)(如果是IPv6,則為ip6.arpa節(jié)點(diǎn))轻专,106節(jié)點(diǎn),10節(jié)點(diǎn)察蹲,170節(jié)點(diǎn)请垛,并在該節(jié)點(diǎn)獲得106.10.170.118對(duì)應(yīng)的域名催训。
實(shí)例
下面的視頻來生動(dòng)的解釋了DNS的工作過程。
地址:http://v.youku.com/v_show/id_XNTAwNDY2NjYw.html
很棒的視頻宗收,靜靜享受吧漫拭。
【TCP/IP詳解】系列教程
TCP-IP協(xié)議詳解(1)網(wǎng)絡(luò)協(xié)議概觀
TCP-IP協(xié)議詳解(2) 以太網(wǎng)與WiFi協(xié)議
TCP-IP協(xié)議詳解(3) IP/ARP/RIP/BGP協(xié)議
TCP-IP協(xié)議詳解(6) ICMP協(xié)議
TCP-IP協(xié)議詳解(8) TCP協(xié)議與流通信
TCP-IP協(xié)議詳解(13) DNS協(xié)議