曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5069|回复: 0
打印 上一主题 下一主题

[术语] NetBIOS 介绍

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2013-1-28 23:23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
NetBIOS 是 Network Basic Input Output System ,即“网络基本输入/输出系统”。最早由 Sytek Inc(现在的 Hughes LAN System)在 1983 年为 IBM 开发的。后来,微软和其他厂商对使用 NetBIOS 接口设计的网络系统组件和程序进行了标准化。在 NetBIOS 标准中,使用长度不超过 16 个字符的名称来惟一标识每个网络资源。在《计算机名与 NetBios 名 》里提到过,如果尝试修改超出 15个字符(NetBIOS 的长度最长为 16 个字节,实际上可见的命名字符不超过 15 个,第 16 个字节作为保留,用来标记服务类型),那么就会出现无法启动系统的错误。

在实际应用中,通过 Windows 操作系统中的“网上邻居”中看到的计算机名,工作组名或域名就是 NetBIOS 名称。比如使用 nbtstat -n 命令查看时可有:

也可以通过查看“系统属性”--->“计算机名”--->“更改”里看到:

需要注意的是,默认情况下,计算机名和 NetBIOS 名是一样的,但它们并不是同一个东西,NetBIOS 名可以通过修改注册表来更改其名,修改方法可参考:在《计算机名与 NetBios 名 》。

在网络中使用 NetBIOS 名称时,基本工作过程包括 NetBIOS 名称的注册释放查询

NetBIOS 名称的注册是在计算机启动,服务开始或用户登录时动态进行的。当计算机正常关闭,服务正常停止或用户正常退出时,将会进行 NetBIOS 名称的释放。如果一个计算机试图通过 NetBIOS 名称访问另一台计算机时,需要进行 NetBIOS 名称查询,以便能够正常通信。NetBIOS 名称的注册及释放实质上都是为名称查询服务的。

在 Windows Server 2008 中,可以基于 NetBEUI 和 TCP/IP 两种协议来实现 NetBIOS 名称的注册,释放和查询。

NetBEUI( NetBIOS Enhanced User Interface,NetBIOS 扩展用户接口 )协议在一开始就从来没有考虑升级到用于大型网络。它缺乏路由和网络层寻址功能,所有的通信只能通过广播消息的方式来完成,因此只能用于小型工作组和局域网。由于 NetBEUI 信息中只有数据链路层 MAC (Media Access Control, 介质访问控制)地址,因此不需要附加网络地址和网络层头尾,因此在其应用场合里效率快速而高效。

NetBEUI 协议在早期的 Windows 操作系统中使用非常普遍,但由于它所有通信均得通过广播,因此只能应用于范围较小的网络中。所以在当前的网络中,已经基本不再使用 NetBEUI 协议来支持 NetBIOS 了,在 Windows Server 2008 中默认也不再提供 NetBEUI 协议,取而代之的是 TCP/IP 协议。

基于 TCP/IP 协议支持的 NetBIOS 是通过 "TCP/IP 上的 NetBIOS“(即 NetBT)组件来实现的,该组件在 Windows Server 2008 中默认被启用。

如果你没有安装局域网 DNS,那么你也可以使用 NETBIOS 的名字服务对机器名进行解析,NetBT (TCP/IP 上的 NetBIOS)协议也可以将一台 NetBIOS 机器名解析为 IP 地址。

由于广播方式无法跨越子网,所以当 NetBIOS 要求解析跨子网的名称时,必须正确设置 WINS 服务器来进行跨网络的 NetBIOS 名称解析。

(除了基于 TCP/IP 的 NetBT 和 DNS,由于“网上邻居”也允许运行 NETBEUI 和 IPX/SPX 等其它协议上,因此对机器名的解析不一定非得局限为解析成 IP 地址。比如 NETBEUI 协议数据包仅包含二层链路层地址,因此不可路由也无法跨越子网,这在小型网络中使用 NETBEUI 协议不但可以提高效率,而且它的工作不受防火墙设置的影响,从而也免去了设置防火墙的麻烦。)

NetBIOS 名称解析标准方法包括

1. NetBIOS 名称缓存
可以运行 nbtstat -c 命令查看缓存里是否已经有对应的记录,如果有,那么就直接去访问对应的计算机。下面试一下:

由上图可以看到,提示没有任何名字在缓存中。那我们现在 ping 一下子网中的另一台机子的名字:

然后再运行一次 nbtstat -c 命令:

为什么这时候就有了呢?原因是该 ping 行为肯定是通过某种途径得到了 microsof-624504 这台主机的地址,比如通过 WINS 服务器。但是在得到该地址之后,缓存里确实保留了这一记录。当我们下次再次访问 microsof-624504 这台主机时(缓存记录有效时间内,如上图中的 [sec] 表示保留该缓存所剩余的秒数),就直接查看缓存里是否有记录,有的话那么访问就快了。

2. NetBIOS 名称服务器
WINS 服务器就是 NetBIOS 名称服务器,它处理来自 WINS 客户机的注册请求,响应 NetBIOS 名称查询。

3. 本地广播
本地广播是由一台计算机向本网段的其它所有设备发送的一种网络消息,通过本地广播也可以获取到 NetBIOS 名称所对应的地址,但本地广播不能穿越子网跨越路由。

4. lmhosts 文件
通过 lmhosts 文件同样也能达到该目的,该文件的示例文件位于 %Systemroot%\system32\drivers\etc 中,其名为 lmhosts.sam 。编辑完该文件后,要保存的文件名为 LMHOSTS ,注意没有任何后缀。一般新建一个文本文件,后缀名是隐藏的(可以设置为不隐藏),如果想保存的文件名没有后缀,那么在保存时用双引号将这个文件名括起来。

上面的 4 种方法概括起来如下图所示:


NetBIOS 节点类型(node-type)
正如上面说提到的好几种方法,那么计算机到底是采用哪一种名称解析方法来查找其它计算机的 IP 地址的呢?这就要根据计算机当前所采用的 NetBIOS 节点类型(node-type)来决定。这些节点类型有以下几种:
B 节点 ( B-node )
处于该节点(B 取 Broadcast),那么会利用广播方式来搜索 IP 地址。比如 PC-1 要与 PC-2 通信时,它就会将“搜索 PC-2 的 IP 地址”的消息广播出去,当 PC-2 收到消息后,就会将其 IP 地址发送给 PC-1 ,然后 PC-1 就可以和 PC-2 通信了。

广播消息会增加网络负担,且如果 PC-2 是位于另外一个网段的话,那么广播就会失败,因为路由器不会降广播消息传递到另一个网段。

P 节点(P-node)
处于该节点下,计算机采用点对点的方式(peer-to-peer) 直接向 WINS 服务器询问。例如 PC-1 要和 PC-2 通信时,PC-1 会直接向 WINS 服务器询问 PC-2 的 IP 地址。

M 节点(M-node)
这是 B 节点和 P 界定的混合方式(mixed,混合式),它会先利用广播的方式寻址,如果失败,那么再向 WINS 服务器查询。例如 PC-1 要和 PC-2 通信时,PC-1 会先利用广播的方式搜索 PC-2 的地址,如果 PC-2 没有响应(比如它位于另外一个网段内),然后 PC-1 就会转向 WINS 服务器查询。

H 节点(H-node)
这也是 P 节点和 B 节点的交互方式(hybrid,交互式),不过它是先向 WINS 服务器查询,如果失败了,那么才会改用广播方式。

实际上,Windows 系统的 B 节点类型具有额外扩展能力:当广播方式失败时,它还会尝试检查 LMHOSTS 文件内是否有对方计算机的 IP 地址。由于 LMHOSTS 文件可记载其他网段内的计算机的 IP 地址,因此可解决广播无法跨越路由器的问题。

Windows Server 2008, Windows 7, Windows Vista 等默认都是采用 H 节点的,可以用 ipconfig /all 命令来查看:

而 Windows2003, Windows XP 则默认采用的是 B 节点,如果它们是 WINS 客户端的话,则自动采用 H 节点:

上图中所标出的的 Primary WINS Server 一行表示已经使用 WINS 服务器。

采用 H 节点类型的 WINS 客户端,其 NetBIOS 名称解析的完整顺序为:

1. 检查所要查询的计算机是否就是自己的计算机名称。

2. 检查 NetBIOS 名称缓冲区。

3. 向 WINS 服务器查询。

4. 发出广播消息。

5. 检查 LMHOSTS 文件。

6. 检查 HOSTS 文件或向 DNS 服务器查询。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-19 18:16 , Processed in 0.077644 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表