DNS解析故障排除方法 |
DNS解析故障排除方法 |
在Windows系統(tǒng)中,名稱解析有兩種類型。一種是基于主機(jī)名稱的名稱解析,另一種是基于NetBios名稱的名稱解析。
這兩種類型的名稱解析順序是不一樣的,在具體說明兩種類型的名稱解析順序之前,先要理清主機(jī)名稱和NetBios名稱的概念。那么,主機(jī)名稱和NetBios名稱分別是什么概念,兩者之間又有什么異同?下面就這個(gè)問題做出解釋:
我們知道,Windows系統(tǒng)有兩種名稱解析服務(wù),分別是DNS和WINS名稱解析服務(wù),其中DNS中使用的是主機(jī)名稱,WINS中使用的是NetBios名稱。兩種名稱最直觀的區(qū)別是:NetBios名稱沒有層次結(jié)構(gòu),是一種平坦名稱(Flat Name),NetBios名稱最大長度為16個(gè)字符,可以包含空格,但不能包括以下字符:/\[]":;|<>+=,?*,不包含".",形如:Knight,而主機(jī)名稱是具有層次結(jié)構(gòu)的名稱,最大長度為255個(gè)字符,形如:Knight.21cn.com。
默認(rèn)情況下,Windows系統(tǒng)中用Hosts文件來保存由IP地址和主機(jī)名稱組成的靜態(tài)查詢表,用Lmhosts文件來保存由IP地址和NetBios名稱組成的靜態(tài)查詢表。兩個(gè)文件均保存在"%SystemRoot%\System32\drivers\etc"目錄下,分別用于DNS和Wins名稱解析。
明確了主機(jī)名稱和NetBios名稱后,接下來的問題是,在一次名稱解析過程中,計(jì)算機(jī)是如何選擇以哪一種方式進(jìn)行解析呢?
答案是依據(jù)應(yīng)用程序所使用的網(wǎng)絡(luò)協(xié)議。如果應(yīng)用層使用基于微軟內(nèi)部使用的SMB協(xié)議,那么就會(huì)對(duì)要解析的名稱進(jìn)行分析。如果要解析的名稱是平坦名稱,就使用NetBios名稱解析,如果名稱中包括".",或者長度超過16個(gè)字符,就會(huì)使用DNS名稱解析??傊痪湓?,就是先分析名稱,然后再?zèng)Q定按哪種方式解析。而對(duì)于通用的基于Windows Socket的應(yīng)用程序,會(huì)并行發(fā)起基于DNS的名稱解析和基于NetBios的名稱解析,但以DNS名稱解析為主。
同時(shí),對(duì)于DNS名稱解析和Wins名稱解析,兩者的解析順序有所不同。
DNS名稱解析過程是:
NetBios名稱解析過程:
注意:上述步驟中,如果中間某一步查詢成功,解析過程立即結(jié)束,否則進(jìn)入下一步。
對(duì)于NetBios名稱解析過程的最后一步,平坦名稱是不能直接提交給DNS服務(wù)器。在提交給DNS服務(wù)器之前,要將平坦名稱轉(zhuǎn)換為DNS結(jié)構(gòu)的名稱。
具體轉(zhuǎn)換如下:如果名稱中沒有一個(gè)包含".",且名稱長度少于16個(gè)字符,客戶端會(huì)將計(jì)算機(jī)的DNS后綴附加到名稱上,再將其發(fā)送給DNS服務(wù)器解析。
對(duì)于域用戶來說,具體附加的DNS后綴可以在"右擊我的電腦->屬性"中看到,對(duì)于工作組用戶來說,可以手動(dòng)在"網(wǎng)絡(luò)連接->本地連接->屬性->TCP/IP協(xié)議->屬性->高級(jí)->DNS設(shè)置"中添加要附加的DNS后綴。
如果名稱中包含".",但沒有最未尾的".",解析器會(huì)追加未尾的".",并將其發(fā)送給DNS服務(wù)器,如果查詢失敗,解析器會(huì)追加完整的域名后綴,再發(fā)送給DNS服務(wù)器。如果第一個(gè)DNS后綴無法獲得主機(jī)記錄,解析器會(huì)依次將事先配置好的所有備用的DNS后綴追加后發(fā)送給DNS服務(wù)器進(jìn)行查詢。
如果所有的備用后綴查詢都失敗,解析器就會(huì)停止查詢,返回提示信息!
一般來說像我們?cè)L問的"www.icbc.com.cn"、"www.163.com"這些地址都叫做域名,而網(wǎng)絡(luò)中的任何一個(gè)主機(jī)都是用IP地址來標(biāo)識(shí)的,也就是說只有知道了這個(gè)站點(diǎn)的IP地址才能夠成功實(shí)現(xiàn)訪問操作。
不過由于IP地址信息不太好記憶,所以網(wǎng)絡(luò)中出現(xiàn)了域名這個(gè)名字,在訪問時(shí)我們只要輸入這個(gè)好記憶的域名即可,網(wǎng)絡(luò)中會(huì)存在著自動(dòng)將相應(yīng)的域名解析成IP地址的服務(wù)器,這就是DNS服務(wù)器。能夠?qū)崿F(xiàn)DNS解析功能的機(jī)器可以是自己的計(jì)算機(jī)也可以是網(wǎng)絡(luò)中的一臺(tái)計(jì)算機(jī),不過當(dāng)DNS解析出現(xiàn)錯(cuò)誤,例如把一個(gè)域名解析成一個(gè)錯(cuò)誤的IP地址,或者根本不知道某個(gè)域名對(duì)應(yīng)的IP地址是什么時(shí),我們就無法通過域名訪問相應(yīng)的站點(diǎn)了,這就是DNS解析故障。
出現(xiàn)DNS解析故障最大的癥狀就是直接訪問站點(diǎn)對(duì)應(yīng)的IP地址時(shí)沒有問題,然而訪問他的域名就會(huì)出現(xiàn)錯(cuò)誤。
當(dāng)我們的計(jì)算機(jī)出現(xiàn)了DNS解析故障后不要著急,解決的方法也很簡單。
要想準(zhǔn)確判斷是否為DNS解析故障就需要通過系統(tǒng)自帶的NSLOOKUP來解決了。
小提示:如果DNS解析正常的話,會(huì)返回正確的IP地址,例如筆者用www.163.com這個(gè)地址進(jìn)行查詢解析,會(huì)得到"name:ciidnet.com,addresses:61.135.133.103,61.135.133.104"的信息。
這時(shí)候我們就要看看自己計(jì)算機(jī)使用的DNS地址是多少了,并且查詢他的運(yùn)行情況。
當(dāng)計(jì)算機(jī)對(duì)域名訪問時(shí)并不是每次訪問都需要向DNS服務(wù)器尋求幫助,一般來說當(dāng)解析工作完成一次后,該解析條目會(huì)保存在計(jì)算機(jī)的DNS緩存列表中,如果這時(shí)DNS解析發(fā)生變動(dòng)的話,由于DNS緩存列表信息沒有改變,在計(jì)算機(jī)對(duì)該域名訪問時(shí)仍然不會(huì)連接DNS服務(wù)器獲取最新解析信息,系統(tǒng)會(huì)根據(jù)自己計(jì)算機(jī)上保存的緩存對(duì)應(yīng)關(guān)系來解析,這樣就會(huì)出現(xiàn)DNS解析故障。這時(shí)我們應(yīng)該通過清除DNS緩存的命令來解決故障。
修改HOSTS就是把HOSTS文件中的DNS解析對(duì)應(yīng)關(guān)系進(jìn)行修改,從而實(shí)現(xiàn)正確解析的目的。因?yàn)樵诒镜赜?jì)算機(jī)訪問某域名時(shí)會(huì)首先查看本地系統(tǒng)中的HOSTS文件,HOSTS文件中的解析關(guān)系優(yōu)先級(jí)大于DNS服務(wù)器上的解析關(guān)系。
這樣當(dāng)我們希望把某個(gè)域名與某IP地址綁定的話,就可以通過在HOSTS文件中添加解析條目來實(shí)現(xiàn)。
通過上面介紹的幾個(gè)步驟,我們就可以解決大部分DNS解析問題了,這幾個(gè)方法中前三個(gè)是循序漸進(jìn)的一步步解決DNS解析故障,而最后一個(gè)修改HOSTS文件則是在實(shí)在沒有辦法的時(shí)候采取的權(quán)宜之計(jì)。當(dāng)然不管是通過哪種方法,我們都可以解決因?yàn)镈NS解析錯(cuò)誤帶來的網(wǎng)絡(luò)故障。
聯(lián)系客服