通过DNS和hosts文件解析:DNS服务器和本地hosts文件中存放的数据是用于标准TCP/IP
协议中名字和IP之间转换使用的方式,但使用其他方式查找不出对应的节点地址时,Microsft Window s中通常也能通过标准的TCP/IP名字解析方式,进行名字和IP的转换。同样这也不是NetBIOS的标准,而是Micorsoft
的扩展。
从这五种NetBIOS识别方式,以及其中的不同的名字注册方式出发,进行不同的组合方式,就构成不同的名字识别策略。在NetBIOS标准中,将使用不同名字识别策略的模式称为不同的NetBIOS节点类型。
B-node:通过广播方式来进行注册和进行识别NetBIOS名字。对于IP协议上的Net
BIOS,就需要基于UDP进行广播,在小网络上这种方式工作得很好,但当网络增大时,就会被使用路由器将大网络分割为几个小网。在一般情况下路由器不转发广播数据,广播包仅发送到本地网络。虽然可以配置路由器进行b-node广播转发,但是这将使UDP广播产生大量的无用网络数据,且名字注册和解析的难度也增加了。因此对于较大的网络,这种方式不可取。
P-node(peer-to-peer):对等方式能为识别名字提供非常有效的方法,它使用
NetBIOS名字服务器进行名字的注册登记和名字识别。因此对于每个NetBIOS计算机,必须指定同样的NBNS 服务器的IP地址。这样在NBNS服务器停机或更改了设置(如IP地址等情况)的情况下,名字解析不能完成,就不能进行NetBIOS通信。当然NetBIOS计算机可以配置为使用多个NBNS服务器,以便在其中一个出现问题时使用备份的服务器。
M-node(Mixed):为了正确解析NetBIOS名字,最好综合使用广播和名字服务器的方式,这样的名字识别是一个复合的过程。M-node首先通过B-node广播方式进行名字识别过程,当广播方式失败之后,再使用P-node方式进行查询。
H-Node(Hybrid):H-node模式也是一种复合模式,它与M-node不同的地方是查找的顺序不同。H-node先查找NBNS名字服务器,然后再使用广播方式进行查询。
Windows中实际使用的名字识别方式是对标准H-node方式的扩展,Windows系列的计算机将首先检查缓存中的内容,然后再查看WINS服务器,之后进行广播,然后将查找lmhosts文件,以及通过hosts和DNS
进行查找。实际进行NetBIOS识别是一个复杂的过程,主要就是由于NetBIOS是一个动态的名字解析方式,每一台计算机都必须注册自身。
与DNS不同,NetBIOS名字使用动态方式进行管理。DNS数据是静态的,增加和删除DNS名字需要管理员手工更改配置文件。但NetBIOS要求计算机在网络上自动注册其名字,计算机停机之后占用的名字会被释放,这个过程不需要管理员干预。因为它需要额外的网络数据以完成名字登记等过程,使得它不适合象Internet这样的大型网络。NetBIOS名字识别需要三个步骤:
名字注册:在NetBIOS启动时,计算机向整个网络声明占用了一个NetBIOS名字,如果已经有其他计算机占用了这个名字,这个计算机就会收到错误信息。注册是通过向网络广播声明信息或向NetBIOS名字服务器登记的方式来实现的。
名字解析:通过广播或查询NetBIOS名字服务器来解析一个NetBIOS名字。此外还可以通过lmhosts
文件和DNS辅助解析名字。
名字删除:在系统关机或提供的工作站服务结束时,会删除其占用的NetBIOS名。
通过NetBIOS名字和共享的目录名,就能够定位Windows计算机上的资源。Microsoft使用U
NC的形式来确定一个网络资源的位置,一个UNC以双反斜线开始,接下来是提供资源计算机的NetBIOS名字,然后是该台计算机上提供资源的共享名,接下来就是下面的目录和文件名。如:\\ntserver\share\files
,因此使用一个资源的命令为:
C:\> net use f: \\ntserver\share
C:\> f:
F:\>
|
上面的net use命令将ntserver上的share资源映射为F:盘。
由于b-node广播会在网络上产生大量的信息流,尤其是在网络是由多个子网构成的时候,而使用路由器本来就是要隔离广播信息,可是为了进行名字解析,就不得不转发b-node广播信息包,这就达不到缩减无用网络流量的目的。
使用名字服务器进行解析就能避免这个问题,客户通过对名字服务器进行查询而非广播,信息流就不必传播到各个子网上,就能减少广播数据,减轻网络的负担节省带宽,并且能有效的提高名字解析的速度及准确性。
实际存在的Windows网络甚至很少利用名字服务器进行名字解析,这就使得这些网络名字解析存在很大问题,常常会出现不同计算机的网络邻居列表不同,根本原因就是广播方式是没有保证的,必须转向名字服务器方式才能解决名字解析问题。
普通NetBIOS计算机和NBNS服务器进行通信有四个不同的通信过程:
名字注册:每台NetBIOS计算机启动时,都在名字服务器上注册。这样就保持了数据库的自动更新,并具备动态更新的特性。名字服务器将返回确认信息,以及这个名字的生存期TTL。如果客户要求的名字已经被占用了,服务器就查询占用这个名字的客户是否还在网络上,以判断这个名字是否可以再次被使用。这种情况主要发生在Windows计算机死机后重新登记的过程中,因为此时在计算机死机之前,它在名字服务器中登记的名字还存在,如果名字服务器简单的拒绝提供名字,那么这个计算机就无法再次获得自己的名字。只有在真正发生冲突的情况下,客户的名字注册才会失败。
名字更新:由于每个名字都存在一个生存期TTL,那么当经历了这个TTL一半的时间,客户会向服务器进行更新请求,刷新服务器上的TTL设置。
名字释放:客户停机时会与服务器通信释放其占用的NetBIOS名字,其名字TTL超时也会使得服务器释放这个名字。
名字识别:客户可以向NBNS服务器发送查询名字的请求,进行名字解析。
有些情况下,客户没有设置支持名字服务器,或者使用的客户软件还不支持名字服务器进行解析,可以通过设置一个
WINS代理,由它来在广播数据和查询名字服务器之间进行转换,它可以帮助客户注册并回应客户的广播查询。