簡述Windows系統名稱解析過程(轉載)

簡述Windows系統名稱解析過程

 
版權聲明:原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://alligator.blog.51cto.com/36993/52352
在Windows系統中,名稱解析有兩種類型
一種是基於主機名稱的名稱解析,另一種是基於NetBios名稱的名稱解析。
這兩種類型的名稱解析順序是不一樣的,在具體說明兩種類型的名稱解析順序之前,先要理清主機名稱和NetBios名稱的概念。 那麼,主機名稱和NetBios名稱分別是什麼概念,兩者之間又有什麼異同!下面就這個問題做出解釋:
  我們知道,在Windows系統中,有兩種名稱解析服務,分別是DNS和WINS名稱解析服務,其中DNS中使用的是主機名稱,WINS中使用的是NetBios名稱。兩種名稱最直觀的區別是:NetBios名稱沒有層次結構,是一種平坦名稱(flat Name),NetBios名稱最大長度爲16個字符,可以包含空格,但不能包括以下字符:/\[]":;|<>+=,?*,不包含".",形如:Alligator,而主機名稱是具有層次結構的名稱,最大長度爲255個字符,形如:Alligator.51Cto.com。
默認情況下,Windows系統中用Hosts文件來保存由IP地址和主機名稱組成的靜態查詢表,用Lmhosts文件來保存由IP地址和NetBios名稱組成的靜態查詢表。兩個文件均保存在%SystemRoot%\System32\drivers\etc目錄下,分別用於DNS和Wins名稱解析。
   明確了主機名稱和NetBios名稱後,接下來一個問題是,在一次名稱解析過程中,計算機是如何選擇以哪一種方式進行解析呢?
   答案是依據應用程序所使用的網絡協議。如果應用層使用是基於微軟內部使用的SMB協議,那麼就會對要解析的名稱進行分析。如果要解析的名稱是平坦名稱,就使用NetBios名稱解析,如果名稱中包括".",或者長度超過16個字符,就會使用DNS名稱解析。一句話,就是先分析名稱,然後再決定按哪種方式解析。而對於通用的基於Windows Socket的應用程序,會並行發起基於DNS的名稱解析和基於NetBios的名稱解析,但以DNS名稱解析爲主。
   同時,對於DNS名稱解析和Wins名稱解析,兩者的解析順序也是不同的。
DNS名稱解析過程是:
    步驟1:用戶輸入一個名稱地址
    步驟2:PC首先查詢這個名稱是不是就是本機
    步驟3:讀本機的Hosts文件
    步驟4:查找DNS服務器
    步驟5:查找NetBios名稱緩存
    步驟6:查找Wins服務器
    步驟7:廣播
    步驟8:查找LMHosts文件

NetBios名稱解析過程:
    步驟1:用戶輸入一個名稱地址
    步驟2:查找NetBios名稱緩存
    步驟3:查找Wins服務器
    步驟4:三次廣播 
    步驟5:查找LMHosts文件 
    步驟6:讀本機的Hosts文件
    步驟7:查找DNS服務器
    注意:對於上述步驟,如果中間某一步查詢成功,解析過程立即結束,否則進入下一步。
           另外,對於NetBios名稱解析過程的最後一步,平坦名稱是不能直接提交給DNS服務器。在提交給DNS服務器之前,要將平坦名稱轉換爲DNS結構的名稱。
    具體動作如下:
           如果名稱中沒有一個包含“.",且名稱長度少於16個字符,客戶端會將計算機的DNS後綴附加到名稱上,再將其發送給DNS服務器解析。
  
對於域用戶來說,具體附加的DNS後綴是可以在”我的電腦“屬性中看到,如圖一所示
 
 
 
對於工作組用戶來說,可以手動在”網絡連接“TCP/IP屬性的高級DNS設置中添加要附加的DNS後綴,如圖二所示:
 
 
如果名稱中包含“.",但沒有最未尾的".",解析器會追加未尾的”.",並將其發送給DNS服務器,如果查詢失敗,解析器會追加完整的域名後綴,再將發送給DNS服務器。如果第一個DNS後綴無法獲得主機記錄,解析器會依次將事先配置好的所有備用的DNS後綴追加後發送給DNS服務器進行查詢。
          如果所有的備用後綴查詢都失敗,解析器就會停止查詢,返回提示信息!

本文出自 “我兒子真帥!” 博客,請務必保留此出處http://alligator.blog.51cto.com/36993/52352

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章