王朝百科
分享
 
 
 

lmhosts

王朝百科·作者佚名  2010-02-21  
宽屏版  字体: |||超大  

认识 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"appnamex14"#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 文件,一旦某个控制器“牺牲”,可立即用别的域控制器来替代。

xnn——这里的 xnn 命令是用来在 LMHOSTS 文件中指定包含非打印字符(Non-Printable)的 NetBIOS 名字,它们必须用引号括起来。正如前面的《关于 WINS(二)》所讲,这些非打印字符只用于特殊的设备名称,并且只能放在计算机名称后面第16个字符的位置(我的计算机名称没有15个字符那么长啊——按空格键嘛),如示例中的102.54.94.102"appnamex14"

关于 Preload 的特别说明:

1、一个 LMHOSTS 文件中最多只允许 Preload 100 个 IP 地址和计算机名称(我偏要输入 101 个怎么着!——怎么着?多的一个忽略不计!);

2、#INCLUDE 命令所指向的文件中的所有项都必须加上 #PRE 命令(我偏不加又怎么着!——怎么着?忽略不计);

3、修改注册表增加预载数目:主键 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetbtParameters,新建字符串值 MaxPreLoads,输入自己想要的数目。

LMHOSTS 的应用安装过 Windows NT 4.0 Server 的网友很清楚,就是如果安装了 TCP/IP 协议,则我们依次选取“开始”/“设置”/“控制面板”/“网络”/“协议”/“TCP/IP 通信协议”/“属性”/“WINS 属性”,则可以在当前页框里看见,系统默认的是“启用 LMHOSTS 查询”,同时还可以启用的是“启用 DNS ”。按照我们前面讲到的,如果想要使用保存在其他目录中甚或其他计算机中的 LMHOSTS 文件,则可以单击旁边的“导入 LMHOSTS”按钮来获取。

由我们前面的《关于 WINS 》及《关于 NetBIOS》等专辑大家已经知道,LMHOSTS 文件的应用场合是没有 WINS 服务器的网络环境,引入 LMHOSTS 文件的目的是用来解决广播方式无法跨越路由器的局限的,LMHOSTS 文件与广播方式相辅相行实现网段内外的全通信。这里我们再来看一下它们的的工作进程:

1、系统启动时将 LMHOSTS 文件中被设为#PRE的地址和机器名预载到内存中;

2、客户端发出查询请求时,先在 Cache 中检查是否已存在目的 IP 地址;

3、找到了自不用说,如果在 Cache 中没有找到,系统改用广播方式再次查找;

4、这次找到了也自不用说,如果广播查询还是没有找到,就得用到 LMHOSTS 文件了;

5、找到啦,好!把它也添加到 Cache 中保存起来(看你下次还往哪跑^_^);还是没有找到?!对不起,俺只得报错了,你就在客户端去等着看错误信息吧。

那么 LMHOSTS 文件的跨域操作又是如何实现的呢?还记得三天前的第一讲吗?我们说到了一个 #DOM:Domain_Name 命令。假定我们这里有两个域:Lanhome01和Lanhome02,其 IP 地址分别为 192.168.0.1 和 192.168.1.10,计算机名分别为 Heatch01 和 Heatch02,现在有一台域 Lanhome01 的工作站 cxy01 想要登录到域 Lanhome02,但我们在网络上没有运行 WINS 服务。如果仅通过广播方式,cxy01无法被 Lanhome02 域控制器审核并验证身份。这里只需在 LMHOSTS 文件添加如下一行即可:

192.168.1.10 Heatch02#PRE #DOM:Lanhome02

LMHOSTS 的管理这里提到的 LMHOSTS 文件的管理实际也是上一讲内容的强化,即跟上面的 #DOM 命令一样,我们这一节着重的是 #INCLUDE 命令。因为 LMHOSTS 文件是独立存放在每台机器上的,如果整个网络发生了数据变动,则必须为每台机器的 LMHOSTS 文件进行修改,虽然它们都存放于 C:WinNTSystem32DriversEtc目录中很好定位,但动起手来还是很麻烦。如果通过 #INCLUDE 命令就可以一劳永逸。我们这里将它再次拿出来讲,是提醒大家注意其文件路径的表示方法。

以上一讲中的例子再次说明如下:

#

# The following example illustrates all of these extensions:

#

# 102.54.94.97rhino#PRE #DOM:networking#net group's DC

# 102.54.94.102"appnamex14"#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 文件位于域名为 Lanhome01 的 Heatch01 的机器中,其路径为 C:WinNTSystem32DriversEtc,现在我们对这个 LMHOSTS 文件已经进行了多处修改,因为同属一个网络,所以我们还要对 Lanhome02 中 Heatch02 机器的 LMHOSTS 文件做相应修改,但我们不希望在今后仍要进行重复的工作,因此,我们可以做如下操作:

1、将 Heatch01 机器的 C:WinNTSystem32DriversEtc 目录共享为 Share;

2、对 Heatch02 机器的 LMHOSTS 文件做如下修改:

192.168.0.1Heatch01#PRE #DOM:Lanhome01

#INCLUDE\Heatch01ShareLMHOSTS

对于 LMHOSTS 本身的管理来说,就是尽可能的优化其结构,利用系统的搜索,比如减少注释、将常用的IP地址及其计算机名称都通过 #PRE 命令预载到 Cache 中并把它们放在文件的最后(为什么?——因为它们在系统启动时就已经加载到 Cache 中了,如果在广播失败后查询 LMHOSTS 文件又先从它们开始,岂不浪费时间?!)。

如果觉得有必要,可以使用 NBTSTAT -R 命令来清除 Cache 中的数据并重新从 LMHOSTS 文件中 Preload。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有