认识 LMHOSTSlmhosts是用来进行NETBIOS名静态解析的。将NETBIOS名和IP地址对应起来,功能类似于DNS,只不过DNS是将域名/主机名和IP对应。LMHOSTS 文件是个纯文本文件,微软提供了一个示例程序 LMHOSTS.SAM,位于 C:WinNTSystem32DriversEtc 目录下(跟以前的示例说明一样,我们这里的路径是“蓝网实验室”所采用的,朋友们可自行参照自己的实际安装情况而灵活改变)。如果我们需要启用 LMHOSTS 文件查询(至于什么时候会用到这种解析方式,我们在下面会讲到),则应该将其改名为 LMHOSTS,当然推荐的方法是制作副本(即另存为 LMHOSTS),这样可免除将原文件失手改错而不得不从安装光盘里解压还原出来的麻烦。下面是“蓝网实验室”NT服务器中 LMHOSTS 文件的部分内容:
#
# The following example illustrates all of these extensions:
#
# 102.54.94.97rhino#PRE #DOM:networking#net group's DC
# 102.54.94.102"appname x14"#special app server
# 102.54.94.123popular #PRE#source server
# 102.54.94.117localsrv#PRE#needed for the include
#
# #BEGIN_ALTERNATE
# #INCLUDE \localsrvpubliclmhosts
# #INCLUDE \rhinopubliclmhosts
# #END_ALTERNATE
#
# end of this file.
由上面的示例我们可以看出,LMHOSTS 文件跟我们在前面已经接触过的 HOSTS 文件的格式一样,当然其规则也一样,比如:
#字符是用来注释的;
IP 地址必须放在一行的第一栏,地址和主机名之间必须有空格;
计算机名称最长为 16 个字符,但是只能输入 15 个(为什么?回去看看《关于 WINS(二)》吧^_^)。
但是与 HOSTS 不同的是,LMHOSTS 文件中可以指定执行某种特殊功能的特定的命令。它们也是用 # 标记的,但如果看到有下面的特殊字符串,则表明其为命令字:
#PRE——这个命令放在 IP 地址和名称后面,表示当系统启动时,先将这个地址预先载入(Preload)到 Cache(内存高速缓存)中。查询时,系统先从 Cache 中开始,如果失败,再利用广播,再失败,才到本 LMHOSTS 文件中顺序读取。
#DOM:domain_name——这个命令放在计算机 NetBIOS 名字之后,表明它是一个域控制器(Domain Controller),这里 domani_name 是域名,表明该控制器属于哪一个域。
#INCLUDE <Filename>——这个命令表明将 filename 所指向的另一个 LMHOSTS 文件加入到本文件中,系统从该文件中读取 IP 地址和 NetBIOS 名字。Heatch 记得当年应付等级考试啃 C 时就遇到过相同的格式,当然在两年前风行一时的 config.sys 多重启动配置时也有相似的例子[Include],即使现在我们用 DreamWaver 做网页不是也还是有 Server-Side Include 吗,说这么多只是想证明它的好处——集中管理 LMHOSTS 文件,即可以将所有用户共享的 LMHOSTS 文件放到服务器上,每个用户再利用 #INCLUDE 命令把它添加到自己的 LMHOSTS 文件中。
#BEGIN_ALTERNATE 和 #END_ALTERNATE 命令必须配套使用,它们的作用是可以在一个 LMHOSTS 文件中指定多个 #INCLUDE 命令,即是说,如果我们有两个以上的域控制器,那么我们就可以 INCLUDE 其上的的 LMHOSTS 文件,一旦某个控制器“牺牲”,可立即用别的域控制器来替代。