DNS的基礎(chǔ)知識
DNS 的基礎(chǔ)知識什么是DNSDNS 全稱是Domain Name System ,域名系統(tǒng)。它的作用是將一個(gè)域名轉(zhuǎn)換成IP 地址。早期的時(shí)候大家使用IP 地址通信,那個(gè)時(shí)候Web 技術(shù)還沒有出現(xiàn),I
DNS 的基礎(chǔ)知識
什么是DNS
DNS 全稱是Domain Name System ,域名系統(tǒng)。它的作用是將一個(gè)域名轉(zhuǎn)換成IP 地址。
早期的時(shí)候大家使用IP 地址通信,那個(gè)時(shí)候Web 技術(shù)還沒有出現(xiàn),Internet 還只是一個(gè)小圈子里的玩意兒。在相互通信的時(shí)候使用IP 地址也沒有什么問題。不過IP 地址不方便記憶,人們還是使用了一種叫做主機(jī)名(HostName)的方式來代替IP 地址。這種機(jī)制很簡單,就是在本機(jī)存放一個(gè)Hosts 文件,該文件以文本方式存放IP 地址和主機(jī)名之間的對應(yīng)關(guān)系。當(dāng)一個(gè)TCP/IP命令使用了主機(jī)名作為參數(shù)的時(shí)候,系統(tǒng)會自動在Hosts 文件中查找相應(yīng)的記錄。如果找到則將對應(yīng)的IP 地址傳遞給實(shí)際通信的程序。在WindowsNT/2000的操作系統(tǒng)中這個(gè)文件存放在System32driversetc目錄下,而Windows9X 或Windows Me則存放在Windows 目錄下。大家可以打開這個(gè)文件看一下,默認(rèn)情況下該文件只有一項(xiàng):127.0.0.1 Localhost。所以大家訪問LocalHost 實(shí)際上就是訪問127.0.0.1,即本機(jī)。當(dāng)時(shí)為了方便Internet 上的用戶使用主機(jī)名訪問計(jì)算機(jī),每個(gè)網(wǎng)絡(luò)管理員每天必須將本地的Hosts 文件上傳給Internet 的網(wǎng)管(實(shí)際上當(dāng)時(shí)還沒有Internet 這個(gè)專有名詞,這里僅僅是為了方便描述,熟悉Internet 歷史的朋友不要死摳),然后Internet 網(wǎng)管將各地的Hosts 文件合并,排除名字沖突。然后將合并的Hosts 文件傳送給各地的網(wǎng)管,然后各地網(wǎng)關(guān)再將這些文件分發(fā)給本地的用戶,用戶更新自己的Hosts 文件。經(jīng)過這些復(fù)雜的過程后用戶才能夠使用主機(jī)名訪問Internet 上的其他主機(jī)。當(dāng)Internet 的主機(jī)數(shù)逐漸增加的時(shí)候Hosts 文件也不斷增加,后來的Hosts 文件足足有幾十兆,維護(hù)和管理都十分麻煩。 于是技術(shù)人員開發(fā)了DNS ,完全拋棄了落后的Hosts 文件方式,并且使得名字可以增加許多新的屬性。
新的名字解釋系統(tǒng)(DNS ),允許每個(gè)網(wǎng)絡(luò)的管理員自行決定如何為自己的計(jì)算機(jī)命名,并保證這些名名不會發(fā)生沖突,從而省去了繁瑣的Hosts 文件合并過程。通過一種服務(wù)器/客戶機(jī)的機(jī)制讓網(wǎng)絡(luò)上的服務(wù)器合作共同解釋所有的域名。其核心的設(shè)計(jì)思想就是將服務(wù)器的命名權(quán)集中到一個(gè)分層管理的體系中,每個(gè)管理層次只能有有自己的名字空間。這樣的同時(shí)也就將用戶為自己的計(jì)算機(jī)命名的權(quán)利剝奪了。實(shí)際上你的計(jì)算機(jī)在網(wǎng)絡(luò)上叫什么名字是由控制名字服務(wù)器的管理員決定的。域名管理員通過配置DNS 服務(wù)器的解釋文件決定了一個(gè)Ip 地址對應(yīng)的域名是什么,或者反過來決定了一個(gè)域名對應(yīng)的IP 地址是什么。當(dāng)你希望別人通過域名來訪問你的計(jì)算機(jī)的時(shí)候,你必須要求域名管理員為你的IP 地址分配一個(gè)名稱。當(dāng)然域名管理員只能為IP 分配自己授權(quán)域名根下的名稱。
現(xiàn)在讓我們來看一下整個(gè)DNS 的名字管理系統(tǒng)是怎么運(yùn)作的。
域名的解釋體制
我們現(xiàn)在看到的域名是一個(gè)一小數(shù)點(diǎn)份分段的一串字符,每個(gè)小數(shù)點(diǎn)分段代表名字管理層次。域名的根掌握在InternetNIC 手中,頂級域名
(.com 、.net 、.org 等) 則委托Networksolutions 以及一系列頂級域名注冊商維護(hù)。二級域名(如:Oray.net 、microsoft.com 等)則由每個(gè)域名注冊人自行
,維護(hù)。用戶如果希望獲得某個(gè)域名,則首先必須獲取對應(yīng)域名的管理授權(quán)。方法就是向頂上的一個(gè)層次注冊自己的名字服務(wù)器。比如:你想獲得一個(gè)叫www.myDomain.com 的域名。你就必須獲得myDomain.Com 的域名管理授權(quán),于是你必須向上一級域名管理機(jī)構(gòu)申請(注冊),即必須向.com 管理機(jī)構(gòu)注冊,就是Networksolutions 或其他頂級域名注冊商(如萬網(wǎng)、廈門精通等)。一旦你獲取了這個(gè)域名的授權(quán),你就可以在該域名前面加上任何名 稱了。當(dāng)然為了行使你的命名權(quán)利,你還必須擁有至少一臺(按標(biāo)準(zhǔn)是兩臺)名字服務(wù)器來管理你的域名,這些服務(wù)器必須24小時(shí)連接在Internet 上,不能中斷,必須擁有固定有效的Internet IP 地址。也就是說,你必須擁有至少一臺托管主機(jī)。這樣提第一個(gè)問題的朋友也許會覺得有些失望。別急,繼續(xù)看下去,我們有相應(yīng)的解決方法。
上面描述的僅僅是域名的管理體制,它保證了域名在Internet 上不會重復(fù),因?yàn)槊恳患壍墓芾韺哟味急WC自己底下的域名不會重復(fù)。所以整個(gè)Internet 的域名都不會重復(fù)。當(dāng)然這樣的代價(jià)就是你必須向上一級管理機(jī)構(gòu)交錢才能夠使用域名。以下我們介紹一下域名的解釋機(jī)制。
首先,每個(gè)域名服務(wù)器(DNS Domain Name Server )僅需要保存所管理的域名底下的名字解釋。比如Oray.net 的名字服務(wù)器只保存以O(shè)ray.net 結(jié)尾的所有名字解釋記錄,包括名字與IP 地址的對應(yīng)關(guān)系;郵件地址和郵件服務(wù)器的對應(yīng)關(guān)系;還有,很重要的,下一級域名和對應(yīng)的名字服務(wù)器的關(guān)系。這些名字解釋記錄在DNS 的術(shù)語中稱為資源記錄(Resourse Record ,縮寫為RR )。每一個(gè)名字服務(wù)器還存放了Internet 域名根服務(wù)器的地址。當(dāng)你向任何一臺Internet 名字服務(wù)器查詢www.oray.net 的名字的時(shí)候,其過程如下圖:

由于Internet 上只有Oray.net 的名字服務(wù)器才存放著www.oray.net 的資源記錄。所有除非你剛好使用我們的名字服務(wù)器作為你的名字解釋服務(wù)器,否則當(dāng)你向他們查詢的時(shí)候這些服務(wù)器都不能直接回答這個(gè)問題。但是大家都 有根服務(wù)器的資料,所以,當(dāng)不能解釋的時(shí)候都會將這個(gè)查詢轉(zhuǎn)發(fā)給根服務(wù)器。當(dāng)然,根服務(wù)器也沒有相應(yīng)的名字解釋。不過,根服務(wù)器會根據(jù)查詢的名字給出一個(gè)能夠接近這個(gè)答案的名字服務(wù)器地址,接下來的操作也是這樣,直到最后找到我們的名字服務(wù)器,由我們的名字服務(wù)器做出授權(quán)解釋。
從上面的過程我們可以看到,實(shí)際上我們只要知道了Internet 上任意一臺DNS 服務(wù)器的地址就可以讓他為我們解釋所有的域名了。雖然這臺服務(wù)器不一定保存了我們申請解釋的域名的數(shù)據(jù),它也可以通過根服務(wù)器,一級一級地找到保存這個(gè)域名解釋記錄的服務(wù)器,最后給出答案。看上去這個(gè)過程非常麻煩,但是實(shí)際域名解釋的速度是非??斓?,因?yàn)楦址?wù)器和頂級域名服務(wù)器(.net,.com 等)都在Internet 的高速主干上。一個(gè)二級域名的查詢一般在2-3秒鐘之內(nèi)就可以解決。另外為了加快查詢速度,所有的DNS 服務(wù)器都會將查詢到的結(jié)果和中間的結(jié)果緩存下來。比如在上面的過程中,負(fù)責(zé)處理客戶請求的DNS 服務(wù)器會保存了.net 名字服務(wù)器的地址、oray.net 的服務(wù)器地址和wwww.oray.net 的結(jié)果。如果下次要查的是ftp.oray.net ,那么這臺DNS 服務(wù)器就會直接找oray.net 的服務(wù)器解決,不再重復(fù)步驟2-5的過程。這樣就省去了兩個(gè)查詢過程。不過緩存是一把雙刃劍,它加快了域名查詢的速度,但是會導(dǎo)致域名信息變化需要花一定的時(shí)間才能生效。這點(diǎn)我在后面會詳細(xì)介紹。