DNS原理和解析過程
DNS 原理和解析過程DNS 服務(wù)器所提供的服務(wù)是完成將主機(jī)名和域名轉(zhuǎn)換為IP 地址的工作。為什么需要將主機(jī)名和域名轉(zhuǎn)換為IP 地址的工作呢? 這是因為,當(dāng)網(wǎng)絡(luò)上的 一臺客戶機(jī)訪問某一服務(wù)器上的資源時
DNS 原理和解析過程
DNS 服務(wù)器所提供的服務(wù)是完成將主機(jī)名和域名轉(zhuǎn)換為IP 地址的工作。為什么需要將主機(jī)名和域名轉(zhuǎn)換為IP 地址的工作呢? 這是因為,當(dāng)網(wǎng)絡(luò)上的 一臺客戶機(jī)訪問某一服務(wù)器上的資源時,用戶在瀏覽器地址欄中輸入的是便于識記的主機(jī)名和域名。而網(wǎng)絡(luò)上的計算機(jī)之間實現(xiàn)連接卻是通過每臺計算機(jī)在網(wǎng)絡(luò)中擁 有的惟一的IP 地址來完成的,這樣就需要在用戶容易記憶的地址和計算機(jī)能夠識別的地址之間有一個解析,DNS 服務(wù)器便充當(dāng)了地址解析的重要角色。接下來我 就帶您走入DNS 的世界,詳細(xì)了解DNS 服務(wù)器的工作原理及其過程,希望能夠給各位朋友帶來一些幫助。
了解DNS 服務(wù)
DNS 是域名系統(tǒng)(Domain Name System)的縮寫,是一種組織域?qū)哟谓Y(jié)構(gòu)的計算機(jī)和網(wǎng)絡(luò)服務(wù)命名系統(tǒng)。當(dāng)用戶在應(yīng)用程序中輸入DNS 名稱時,DNS 服務(wù)可以將此名稱解析為與此名稱相關(guān)的IP 地址信息。
用戶在使用網(wǎng)絡(luò)服務(wù)時喜歡在瀏覽器的地址欄中輸入使用主機(jī)名和域名組成的名稱,如computer.bookshop.com ,因為,這樣的名 稱更容易被用戶記住。但是,計算機(jī)在網(wǎng)絡(luò)上是使用IP 地址來通信的。為了能夠?qū)崿F(xiàn)網(wǎng)絡(luò)計算機(jī)之間通信,DNS 服務(wù)器所提供的服務(wù)就是將用戶所使用的計算機(jī) 或服務(wù)名稱映射為IP 地址。
DNS 服務(wù)的工作過程
當(dāng) DNS 客戶機(jī)需要查詢程序中使用的名稱時,它會查詢 DNS 服務(wù)器來解析該名稱??蛻魴C(jī)發(fā)送的每條查詢消息都包括3條信息,以指定服務(wù)器應(yīng)回答的問題。
● 指定的 DNS 域名,表示為完全合格的域名 (FQDN) 。
● 指定的查詢類型,它可根據(jù)類型指定資源記錄,或作為查詢操作的專門類型。
● DNS域名的指定類別。
對于DNS 服務(wù)器,它始終應(yīng)指定為 Internet 類別。例如,指定的名稱可以是計算機(jī)的完全合格的域名,如hosta.hello.company.com ,并且指定的查詢類型用于通過該名稱搜索地址資 源記錄。系統(tǒng)將把DNS 查詢當(dāng)作客戶機(jī)向服務(wù)器提出的兩部分問題,如“對于名為 hostname.hello.company.com 的計算機(jī),你有沒有地址資源記錄?”當(dāng)客戶機(jī)從服務(wù)器接收應(yīng)答時,它讀取并解釋應(yīng)答的地址資源記錄,以了解它通過名稱提問的計算機(jī)的 IP 地址。
DNS 查詢以各種不同的方式進(jìn)行解析。客戶機(jī)有時也可通過使用從以前查詢獲得的緩存信息就地應(yīng)答查詢。DNS 服務(wù)器可使用其自身的資源記錄信息緩存來應(yīng)答查詢,也可代表請求客戶機(jī)來查詢或聯(lián)系其他 DNS 服務(wù)器,以完全解析該名稱,并隨后將應(yīng)答返回至客戶機(jī)。這個過程稱為遞歸。
另外,客戶機(jī)自己也可嘗試聯(lián)系其他的 DNS 服務(wù)器來解析名稱。如果客戶機(jī)這么做,它會使用基于服務(wù)器應(yīng)答的獨(dú)立和附加的查詢,該過程稱作迭代。
1
,總之,DNS 的查詢過程按兩部分進(jìn)行:首選,名稱查詢從客戶機(jī)開始并傳送至解析程序(DNS客戶服務(wù)) 進(jìn)行解析; 其次,不能就地解析查詢時,可根據(jù)需要查詢DNS 服務(wù)器來解析名稱。DNS 查詢的過程如下圖所示。

圖 DNS的查詢過程
如查詢過程的初始步驟所示,DNS 域名由本機(jī)的程序使用。該請求隨后傳送至 DNS 客戶服務(wù),以通過使用就地緩存的信息進(jìn)行解析。如果可以解析查詢的名稱,則查詢將被應(yīng)答,并且此過程完成。其中,本地
解析程序的緩存可從以下2個可能的來源獲取名稱信息:
● 如果主機(jī)文件就地配置,則來自該文件的任何主機(jī)名稱到地址的映射都將在DNS 客戶服務(wù)啟動時預(yù)先加載到緩存中。
● 從以前DNS 查詢應(yīng)答的響應(yīng)中獲取的資源記錄將被添加至緩存并保留一段時間。
如果此查詢不匹配緩存中的項目,則解析過程繼續(xù)進(jìn)行,客戶機(jī)查詢 DNS 服務(wù)器來解析名稱。
接下來查詢 DNS 服務(wù)器,當(dāng)本地的DNS 不能就地解析查詢時,可根據(jù)需要查詢 DNS 服務(wù)器來解析名稱。如圖4-1所示,客戶機(jī)將查詢首選 DNS 服務(wù)器。在此過程中使用的實際服務(wù)器是從全局列表中選擇的。當(dāng) DNS 服務(wù)器接收到查詢時,首先檢查它能否根據(jù)在服務(wù)器的就地配置區(qū)域中獲取的資源記錄信息作出權(quán)威性的應(yīng)答。如果查詢的名稱與本地區(qū)域信息中的相應(yīng)資源記錄匹 配,則服務(wù)器作出權(quán)威性的應(yīng)答,并且使用該信息來解析查詢的名稱。
如果查詢的名稱沒有區(qū)域信息,則服務(wù)器檢查它能否通過本地緩存的先前查詢信息來解析名稱。如果從中發(fā)現(xiàn)匹配的信息,則服務(wù)器使用它應(yīng)答查詢。接著,如果首選服務(wù)器可使用來自其緩存的肯定匹配響應(yīng)來應(yīng)答發(fā)出請求的客戶機(jī),則此次查詢完成。
如果查詢名稱在首選服務(wù)器中未發(fā)現(xiàn)來自緩存或區(qū)域信息的匹配應(yīng)答,則查詢過程可繼續(xù)進(jìn)行,使用遞歸來完全解析名稱,包括來自其他 DNS 服務(wù)器的支持,以幫助解析名稱。在默認(rèn)情況下,DNS 客戶服務(wù)要求服務(wù)器在返回應(yīng)答前使 2
,用遞歸過程來代表客戶機(jī)完全解析名稱。在大多數(shù)情況下,DNS 服務(wù)器的默認(rèn)配置支持遞歸過程,如下圖所示。

圖4-2 遞歸解析過程
為了使 DNS 服務(wù)器正確執(zhí)行,首先需要在DNS 域名空間內(nèi)存放其他DNS 服務(wù)器的一些有用的聯(lián)系信息。該信息以根線索的形式提供,它是記錄初步資源的一個列表,可用來定位一些 DNS 服務(wù)器,這些服務(wù)器對 DNS 域名空間樹的根具有絕對控制權(quán)。根服務(wù)器對 DNS 域名空間樹中的根域和頂級域具有絕對控制權(quán)。DNS 服務(wù)器可通過使用根線索搜索根服務(wù)器來完成遞歸過程。
例如,當(dāng)客戶機(jī)查詢單個DNS 服務(wù)器時,考慮使用遞歸過程來定位名稱 host.example.microsoft.com 。此過程在 DNS 服務(wù)器和客戶機(jī)首次啟動,并且沒有可幫助解析名稱查詢的當(dāng)?shù)鼐彺嫘畔r進(jìn)行。
首先,首選服務(wù)器分析全名并確定對于頂級域com 具有絕對控制權(quán)的服務(wù)器的位置。隨后,對com DNS 服務(wù)器使用迭代查詢,以獲取microsoft.com 服務(wù)器的參考信息。然后參考性應(yīng)答從microsoft.com 服務(wù)器傳送到 example.microsoft.com 的 DNS 服務(wù)器。最后,與服務(wù)器 example.microsoft.com 聯(lián)系上。因為該服務(wù)器包括作為其配置區(qū)域一部分的查詢名稱,所以,它向啟動遞歸的源服務(wù)器作出權(quán)威性的應(yīng)答。當(dāng)源服務(wù)器接收到表明已獲得對請求查詢的權(quán)威 性應(yīng)答的響應(yīng)時,它將此應(yīng)答轉(zhuǎn)發(fā)給發(fā)出請求的客戶機(jī),這樣,遞歸查詢過程就完成了。
在實際應(yīng)用過程中可能會遇到DNS 解析錯誤的問題,就是說當(dāng)我們訪問一個域名時無法完成將其解析到IP 地址的工作,而直接輸入網(wǎng)站IP 卻可以正常訪問,這就是因為DNS 解析出現(xiàn)故障造成的。這個現(xiàn)象發(fā)生的機(jī)率比較大,所以本文將從零起步教給各位讀者一些基本的排除DNS 解析故障的方法。
一、什么是DNS 解析故障?
一般來說像我們訪問的絡(luò)中的任何一個主機(jī)都是IP 地址來標(biāo)識的,也就是說只有知道了這個站點(diǎn)的IP 地址才能夠成功實現(xiàn)訪問操作。
3
,不過由于IP 地址信息不太好記憶,所以網(wǎng)絡(luò)中出現(xiàn)了域名這個名字,在訪問時我們這需要輸入這個好記憶的域名即可,網(wǎng)絡(luò)中會存在著自動將相應(yīng)的域名解析成IP 地址的服務(wù)器,這就是DNS 服務(wù)器。能夠?qū)崿F(xiàn)DNS 解析功能的機(jī)器可以是自己的計算機(jī)也可以是網(wǎng)絡(luò)中的一臺計算機(jī),不過當(dāng)DNS 解析出現(xiàn)錯誤,例如把一個域名解析成一個錯誤的IP 地址,或者根本不知道某個域名對應(yīng)的IP 地址是什么時,我們就無法通過域名訪問相應(yīng)的站點(diǎn)了,這就是DNS 解析故障。
出現(xiàn)DNS 解析故障最大的癥狀就是訪問站點(diǎn)對應(yīng)的IP 地址沒有問題,然而訪問他的域名就會出現(xiàn)錯誤。
二、如何解決DNS 解析故障:
當(dāng)我們的計算機(jī)出現(xiàn)了DNS 解析故障后不要著急,解決的方法也很簡單。
(1)用nslookup 來判斷是否真的是DNS 解析故障:
要想百分之百判斷是否為DNS 解析故障就需要通過系統(tǒng)自帶的NSLOOKUP 來解決了。
第一步:確認(rèn)自己的系統(tǒng)是windows 2000和windows xp以上操作系統(tǒng),然后通過“開始->運(yùn)行->輸入CMD”后回車進(jìn)入命令行模式。
第二步:輸入nslookup 命令后回車,將進(jìn)入DNS 解析查詢界面。
第三步:命令行窗口中會顯示出當(dāng)前系統(tǒng)所使用的DNS 服務(wù)器地址,例如筆者的DNS 服務(wù)器IP 為202.106.0.20。
第四步:接下來輸入你無法訪問的站點(diǎn)對應(yīng)的域名。例如筆者輸入DNS 解析應(yīng)該是不能夠正常進(jìn)行的。我們會收到DNS request timed out,timeout was 2 seconds的提示信息。這說明我們的計算機(jī)確實出現(xiàn)了DNS 解析故障。
小提示:如果DNS 解析正常的話,會反饋回正確的IP 地址,例如筆者用這個地址進(jìn)行查詢解析,會得到name:sohu.com,addresses :61.135.133.103,61.135.133.104的信息。
2)查詢DNS 服務(wù)器工作是否正常:
這時候我們就要看看自己計算機(jī)使用的DNS 地址是多少了,并且查詢他的運(yùn)行情況。
第一步:確認(rèn)自己的系統(tǒng)是windows 2000和windows xp以上操作系統(tǒng),然后通過“開始->運(yùn)行->輸入CMD”后回車進(jìn)入命令行模式。
4
,第二步:輸入ipconfig /all命令來查詢網(wǎng)絡(luò)參數(shù)。
第三步:在ipconfig /all顯示信息中我們能夠看到一個地方寫著DNS SERVERS,這個就是我們的DNS 服務(wù)器地址。例如筆者的是202.106.0.20和202.106.46.151。從這個地址可以看出是個外網(wǎng)地址,如果使用外網(wǎng)DNS 出現(xiàn)解析錯誤時,我們可以更換一個其他的DNS 服務(wù)器地址即可解決問題。
第四步:如果在DNS 服務(wù)器處顯示的是自己公司的內(nèi)部網(wǎng)絡(luò)地址,那么說明你們公司的DNS 解析工作是交給公司內(nèi)部的DNS 服務(wù)器來完成的,這時我們需要檢查這個DNS 服務(wù)器,在DNS 服務(wù)器上進(jìn)行nslookup 操作看是否可以正常解析。解決DNS 服務(wù)器上的DNS 服務(wù)故障,一般來說問題也能夠解決。
(3)清除DNS 緩存信息法:
當(dāng)計算機(jī)對域名訪問時并不是每次訪問都需要向DNS 服務(wù)器尋求幫助的,一般來說當(dāng)解析工作完成一次后,該解析條目會保存在計算機(jī)的DNS 緩存列表中,如果這時DNS 解析出現(xiàn)更改變動的話,由于DNS 緩存列表信息沒有改變,在計算機(jī)對該域名訪問時仍然不會連接DNS 服務(wù)器獲取最新解析信息,會根據(jù)自己計算機(jī)上保存的緩存對應(yīng)關(guān)系來解析,這樣就會出現(xiàn)DNS 解析故障。這時我們應(yīng)該通過清除DNS 緩存的命令來解決故障。
第一步:通過“開始->運(yùn)行->輸入CMD”進(jìn)入命令行模式。
第二步:在命令行模式中我們可以看到在ipconfig /?中有一個名為/flushdns的參數(shù),這個就是清除DNS 緩存信息的命令。
第三步:執(zhí)行ipconfig /flushdns命令,當(dāng)出現(xiàn)“successfully flushed the dns resolver cache”的提示時就說明當(dāng)前計算機(jī)的緩存信息已經(jīng)被成功清除。
第四步:接下來我們再訪問域名時,就會到DNS 服務(wù)器上獲取最新解析地址,再也不會出現(xiàn)因為以前的緩存造成解析錯誤故障了。
(4)修改HOSTS 文件法:
修改HOSTS 法就是把HOSTS 文件中的DNS 解析對應(yīng)關(guān)系進(jìn)行修改,從而實現(xiàn)正確解析的目的。因為在本地計算機(jī)訪問某域名時會首先查看本地系統(tǒng)中的HOSTS 文件,HOSTS 文件中的解析關(guān)系優(yōu)先級大于DNS 服務(wù)器上的解析關(guān)系。
這樣當(dāng)我們希望把某個域名與某IP 地址綁定的話,就可以通過在HOSTS 文件中添加解析條目來實現(xiàn)。
第一步:通過“開始->搜索”,然后查找名叫hosts 的文件。
第二步:當(dāng)然對于已經(jīng)知道他的路徑的讀者可以直接進(jìn)入 5
,c:windowssystem32driversetc目錄中找到HOSTS 文件。如果你的系統(tǒng)是windows 2000,那么應(yīng)該到c:winntsystem32driversetc目錄中尋找。
第三步:雙擊HOSTS 文件,然后選擇用“記事本”程序?qū)⑵浯蜷_。
第四步:之后我們就會看到HOSTS 文件的所有內(nèi)容了,默認(rèn)情況下只有一行內(nèi)容“127.0.0.1 localhost”。(其他前面帶有#的行都不是真正的內(nèi)容,只是幫助信息而已)
第五步:將你希望進(jìn)行DNS 解析的條目添加到HOSTS 文件中,具體格式是先寫該域名對應(yīng)的IP 地址,然后空格接域名信息。例如筆者添加了“211.153.80.1 ”與“10.82.0.1 ”兩個條目。
第六步:設(shè)置完畢后我們訪問www.ftedu.gov.cn 時就會自動根據(jù)是在內(nèi)網(wǎng)還是外網(wǎng)來解析了。
三、總結(jié):
通過上面介紹的四個步驟,我們就可以解決大部分DNS 解析問題了,這幾個方法中前三個是循序漸進(jìn)的一步步解決DNS 解析故障,而最后一個修改HOSTS 文件則是在實在沒有辦法的時候,一種權(quán)宜之計。當(dāng)然不管是通過哪種方法,我們都可以解決因為DNS 解析錯誤帶來的網(wǎng)絡(luò)故障。
6