我们一定知道hosts这个文件,他的功能就像DNS,只不过优先级相对要高,但同一个文件夹里,还有一个lmhosts.sam文件,实际上这两个文件都是做静态解析的,但是有什么区别呢?
lmhost和host是静态解析名字的文件,dns和wins是动态解析名字的服务。lmhost基于nebios,netbios支持最长16和字符,不能带点(".");host基于hostname,最长支持255各字符,可以带点。 在95、98里面是用lmhost的,2k及其以后的系统里面,这两个文件都有。
解析过程如下:
host解析:local host name --->hosts file--->dns server--->netbios name cache--->wins server--->broadcast--->lmhost file
即:计算机在把名字解析为ip时,先找本地计算机名称,如果不是,找host文件,找不到,找dns server,如果找不到,找netbios缓存,找不到,找wins server解析,还找不到,发广播,还找不到,才找lmhost,还找不到........,那就找不到了。
netbios解析:netbios name cache-->wins server-->broadcast-->lmhost file-->host file--->dns server
虽然NetBIOS已经在9X系统后不怎么用了,但是基于Windows的应用时,有时候还是要用到它。例如,我今天做的性能测试。如下图。
这是VSTS的LoadTest组件数据图,其中橙色的性能计数器数据就是用NetBios协议传输的。恰巧你的Controller和Server under test这两台机器不在一个网段,那只能添加NetBiOS的解析了。
方法:
打开C:\Windows\System32\drivers\etc目录,备份一份lmhosts.sam文件,然后删除此文件的后缀(这样才能启用NetBios解析)。用记事本打开文件可见说明。实际添加和losts文件相同
比如 有台机器 192.168.5.10 机器名是testpc。那么就添加为
192.168.5.10 testpc #PRE
这样就做了解析并且每次开机都自动添加(相关说明见lmhost文件)
打开命令行,使用nbtstat –R 重新加载缓存后如图
输入nbtstat –c 可以看下目前的NetBios缓存。可以看到testpc已经被强制加入缓存,且无限期保留。
此时ping一下testpc即可发现IP是192.168.5.10
附一个参考文章
《NetBIOS名称的解析》
http://enticea.blog.51cto.com/13034/195025
NetBIOS是Windows 为了支持Windows 2000以前的系统和应用程序,所采用的一种名称解析的服务;
NetBIOS:Network Basic Input Output System
网络中的计算机之间相互通信,必须是知道对方的IP地址以后,才能进行的,为了方便记忆,计算机除了有IP地址以外,还可以设置一个NetBIOS计算机名,来方便人们来记忆该计算机。
通常在我的电脑中右键属性,或者在命令控制台输入Nbtstat -n 可以查看本机的NetBIOS等信息;
如图:
00代表工作站服务(WorkStation Service)
20代表服务器服务(Server Service)
NetBIOS名称解释方法:
1.检查NetBIOS名称缓存(NetBIOS Name Cache)
如果计算机与其它计算机已经通讯过,则对方的计算机名与IP地址会被保存到本机的NetBIOS缓存中,通过缓存可以快速找到对方IP地址,每一条缓存的有效期是10分钟,我们可以通过命令:Nbtstat -c 来查看NetBIOS名称缓存中的数据。
2.广播(Local Broadcast)
计算机利用发送广播消息的方式来查找对方的IP地址,拥有此计算机名的计算机收到广播消息后,就会将它的IP地址告诉发送广播消息的计算机。
3.直接向WINS(Windows Internet Name Server)服务器查询;
WINS客户端会将其计算机名与IP地址注册到WINS服务器,因此WINS客户端可以过能WINS服务器来得知其它WINS客户端的IP地址。