NetBios的跨网段解析

时间:2024-02-20 17:30:51

    我们一定知道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

NetBIOSWindows 为了支持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地址。