(注:本文涉及的都是多年前的Windows产品。仅做培训教材之用)
Windows中名字解析的顺序是怎样的?很多中文的技术文章或者前后矛盾,或者语焉不详,是他们错了么?不是,只是没有把特定的条件说清楚了罢了。
比如这个常见的说明名字解析顺序的图片:
但是这个顺序一定正确吗?回答应该是,在特定的场合下,是正确的。这个特定场合指的是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