LMHOSTS

来自站长百科
跳转至: 导航、​ 搜索

LMHOSTS是用来进行NetBIOS名静态解析的,将NETBIOS名和IP地址对应起来,功能类似于DNS只不过DNS是将域名/主机名和IP对应,LMHOSTS是个纯文本文件,微软提供了一个示例程序LMHOSTS.SAM,位于C:\WinNT\System32\Drivers\Etc目录下,LMHOSTS 文件跟我们在前面已经接触过的Hosts文件的格式一样,当然其规则也一样,但是与Hosts不同的是,LMHOSTS文件中可以指定执行某种特殊功能的特定的命令。

LMHOSTS规则解释[ ]

  • #字符是用来注释的。
  • IP地址必须放在一行的第一栏,地址和主机名之间必须有空格,计算机名称最长为16个字符但是只能输入15个。
  • #PRE——这个命令放在IP地址和名称后面,表示当系统启动时先将这个地址预先载入(Preload)到 Cache(内存高速缓存)中,查询时系统先从Cache中开始,如果失败再利用广播,再失败,才到本LMHOSTS文件中顺序读取。
  • #DOM:domain_name——这个命令放在[[计算机]]NetBIOS名字之后,表明它是一个域控制器(Domain Controller),这里domain_name是域名表明该控制器属于哪一个域。
  • #INCLUDE <Filename>——这个命令表明将 filename 所指向的另一个LMHOSTS文件加入到本文件中,系统从该文件中读取IP地址和NetBIOS 名字,每个用户再利用#INCLUDE命令把它添加到自己的 LMHOSTS文件中。
  • #BEGIN_ALTERNATE和#END_ALTERNATE命令必须配套使用,它们的作用是可以在一个LMHOSTS文件中指定多个#INCLUDE命令,即是说如果我们有两个以上的域控制器,那么我们就可以INCLUDE其上的的 LMHOSTS 文件,一旦某个控制器“牺牲”,可立即用别的域控制器来替代。
  • \0xnn——这里的\0xnn命令是用来在LMHOSTS文件中指定包含非打印字符(Non-Printable)的NetBIOS名字,它们必须用引号括起来。

关于Preload的特别说明[ ]

  1. 一个LMHOSTS文件中最多只允许Preload 100个IP 地址和计算机名称。
  2. #INCLUDE 命令所指向的文件中的所有项都必须加上#PRE 命令。
  3. 修改注册表增加预载数目:主键HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netbt\Parameters,新建字符串值MaxPreLoads输入自己想要的数目。

LMHOSTS工作进程[ ]

LMHOSTS文件的应用场合是没有Windows服务器的网络环境,引入LMHOSTS 文件的目的是用来解决广播方式无法跨越路由器的局限的,LMHOSTS 文件与广播方式相辅相行实现网段内外的全通信,这里我们再来看一下它们的的工作进程:

  1. 系统启动时将LMHOSTS文件中被设为#PRE的地址和机器名预载到内存中。
  2. 客户端发出查询请求时,先在Cache中检查是否已存在目的IP地址。
  3. 找到了自不用说,如果在Cache中没有找到那么系统改用广播方式再次查找。
  4. 这次找到了也自不用说,如果广播查询还是没有找到就得用到LMHOSTS 文件了。
  5. 找到了以后就把它也添加到Cache中保存起来,还是没有找到那么只得报错了,你就在客户端去等着看错误信息吧。

LMHOSTS的运行原理[ ]

LMHOSTS文件最适合网络上没有WINS服务器的环境,因为此时只好使用广播的方式,但是由于大部分的路由器不会将广播信息发送到其他网络,因此利用广播方式可能无法与其他网段内的主机通信就可以利用LNHOSTS文件来解决问题。

  • 如果从NetBIOS名称缓存内找不到对方的IP地址,则改用广播的方式。
  • 如果广播的方式也失败的话,则改用LMHOSTS文件查询。
  • 如果在LMHOSTS文件内仍然找不到对方的IP地址则将看到警告信息。
  • 若从LMHOSTS文件中找到对方的IP地址,则此信息会被存储在NetBIOS名称缓存中一段时间。
  • 如果LMHOSTS文件内有项信息被设为#PE,则计算机启动时此项信息就会预先被加载到NetBIOS名称缓存内。
  • 当计算机要查询其他计算机的IP地址时,它会先检查NetBIOS名称缓存内是否已经存在此计算机的IP地址。

LMHOSTS管理方法[ ]

LMHOSTS 文件的管理实际也是跟上面的LMHOSTS文件管理#DOM命令一样,如果是如果共享的LMHOSTS文件位于域名为Lanhome01的Heatch01的机器中,其路径为C:\WinNT\System32\Drivers\Etc,我们可以做如下操作:

  • 将Heatch01机器的C:\WinNT\System32\Drivers\Etc目录共享为Share。
  • 对Heatch02机器的LMHOSTS 文件做如下修改:
  1. 192.168.0.1Heatch01#PRE #DOM:Lanhome01
  2. #INCLUDE\\Heatch01\Share\LMHOSTS

对于LMHOSTS本身的管理来说就是尽可能的优化其结构,利用系统的搜索比如减少注释、将常用的IP地址及其计算机名称都通过#PRE命令预载到Cache中并把它们放在文件的最后,如果在广播失败后查询 LMHOSTS 文件又先从它们开始,如果觉得有必要可以使用Netstat -R命令来清除Cache中的数据并重新从LMHOSTS文件中Preload。

相关条目[ ]

参考来源[ ]