Windows 名字解析順序

文章轉自Live空間(http://delxu.spaces.live.com/blog/cns!D04F87F9ED029F69!2583.entry)和51cto技術博客(http://delxu.blog.51cto.com)首發。轉發時務必表明出處,順便給博主做個廣告,文章寫的真的很好,深入淺出,期待看到更好的博文,再次表示對博主的感謝!!!
Windows 名字解析順序

(注:本文涉及的都是多年前的Windows產品。僅做培訓教材之用)

Windows中名字解析的順序是怎樣的?很多中文的技術文章或者前後矛盾,或者語焉不詳,是他們錯了麼?不是,只是沒有把特定的條件說清楚了罷了。

比如這個常見的說明名字解析順序的圖片:
post-44-1139253229
但是這個順序一定正確嗎?回答應該是,在特定的場合下,是正確的。這個特定場合指的是1)OS是Windows 2000或更新版本,2)採用了H-Mode的節點模式。但是這些,很多引用了這張圖片的文檔都沒有解釋。
決定名字解析順序的2個重要的因素:第一,OS版本,第二,節點模式
OS版本決定了名字解析優先DNS還是優先查詢NetBIOS。節點模式決定了先查WINS還是先廣播。
Windows 2000以後(包括2000、XP、Vista、Win7、2003、2008)都先查DNS,後查NetBIOS。
Windows 9x/NT以前的,都先查NetBIOS,後查DNS。
節點模式見後文解釋。

接下去我們用問答的方式來解釋一些常見問題。

Q: DNS名的查詢順序:
DNS cache --> HOSTS 文件 --> DNS Server

Q: NetBIOS名的查詢順序:
如果是H-mode的話: NetBIOS cache --> WINS Server --> 廣播 --> LMHOSTS 文件
如果是其他模式,WINS和廣播的順序會有不同,見下文。

Q: HOSTS 和LMHOSTS文件的位置
%SystemRoot%\System32\drivers\etc
%SystemRoot%通常都是C:\Windows,NT下是C:\WINNT
(查看SystemRoot的路徑,可以在cmd下輸入set命令)
缺省情況下, lmhosts 文件並不存在,系統有一個 lmhosts 樣本文件 lmhosts.sam ,您可以仿照 lmhosts.sam 文件來編寫您的 lmhosts
Q: 如何看當前節點模式?
ipconfig /all
Snap1
Q: 有那些mode?
有四種mode:b,p,m,h
Q: 每種mode的具體含義?
B-mode:Broadcast Mode,只廣播
P-mode: Point-to-point mode,只查WINS
M-mode: Mixed mode,先廣播,後WINS
H-mode: Hybrid mode,先WINS,後廣播
Q: 默認mode是什麼?
設置了WINS時,默認mode是H-mode,沒設置WINS默認mode是B-mode
Q: 各個mode的Reg鍵值
B-mode:0x1
P-mode: 0x2
M-mode: 0x4
H-mode: 0x8
Q: mode的動態設定
通過DHCP分配地址的時候,可以配置NodeType,在註冊表中
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters
DHCPNodeType的值說明了從DHCP獲得的Node Type
Q: 如何改mode?
通常情況下,不需要改Mode!使用默認的H-mode即可!

在註冊表中添加或者修改NodeType鍵值。
默認情況下,不存在NodeType鍵值,可以手工創建。
NodeType鍵值覆蓋(優先級高於)DHCPNodeType的鍵值。
NodeType的位置在:

Windows 2000 and Windows NT

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netbt\Parameters
Key: NodeType
Value Type: REG_DWORD - Number
Valid Range: 1,2,4,8 (b-node, p-node, m-node, h-node)

Windows 9x
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP
Key: NodeType
Value type: DWORD
Valid range: 1, 2, 4, or 8

Q: 如何顯示DNS Cache
ipconfig /displaydns
Q: 如何手工清空DNS Cache
ipconfig /flushdns
Q: DNS Cache有效期多少時間?
10分鐘。
Q:如何停用DNS Cache?
在Windows服務中的DNS Client服務(短名dnscache)負責DNS Cache任務,只要停用這個服務,就可以停用DNS Cache。
注意,即使關掉DNS Client服務,計算機仍然可以通過DNS服務器來解析DNS名。
關掉DNS Client服務的辦法,可以輸入命令:
  net stop dnscache
  或
 
sc servername stop dnscache
或者在圖形界面,services.msc控制檯中關閉該服務。
Q:如何查看NetBIOS Cache?
 nbtstat –c
Q: 如何清空NetBIOS Cache?
 nbtstat -R
注意R必須大寫

總結
最後總結一下,一臺加入AD的Windows XP電腦的名字解析順序默認應該是:
DNS cache --> HOSTS 文件 --> DNS Server –> NetBIOS cache --> WINS Server --> 廣播 --> LMHOSTS 文件
如果是一臺Win95的工作組電腦,並且沒有WINS,(還記得嗎?沒有配WINS,默認用B模式)則是:
NetBIOS cache --> 廣播 --> LMHOSTS 文件 --> DNS cache --> HOSTS 文件 --> DNS Server


參考文檔和相關閱讀

1) 理解Windows網絡中的名字解析
http://www.winsvr.org/info/info.php?sessid=&infoid=1&page=1
2) Windows操作系統上的一些名字解析
http://read.newbooks.com.cn/info/132528.html
3) How to Disable Client-Side DNS Caching in Windows XP and Windows Server 2003
http://support.microsoft.com/kb/318803
4) NetBIOS over TCP/IP Name Resolution and WINS
http://support.microsoft.com/kb/119493
5) NetBIOS Name Resolution Using DNS and the HOSTS File
http://support.microsoft.com/kb/142309
6) Default Node Type for Microsoft Clients
http://support.microsoft.com/kb/160177
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章