找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4907|回复: 4

关于NetBIOS(一)

USER001  | 发表于 2004-10-27 14:01:33 | 显示全部楼层 |阅读模式 来自 中国辽宁营口

马上注册,结交更多好友,享用更多功能。

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

x
在《关于NetBEUI》一文中我们已经讲到 NetBEUI是 NetBIOS 的扩展用户接口。NetBIOS 最初是作为小型网络中的 MS-DOS 计算机的应用程序设计接口出现的,以便程序员开发客户机/服务器应用程序。
   NetBIOS 的全称:Network Basic Input/Output System,中文意思就是网络基本输入/输出系统。
<>   一、什么是 NetBIOS?</P>
<>   在 Windows NT 连接中,位于传输层之上会话层之下有一个接口叫做 TDI(Transport Device Interface??传输设备接口),除 Streams 协议(安装过 Windows NT Server 的网友可以在“网络”控制面板的“协议”页框中看到它)之外的所有协议都是使用的这种接口。与我们在《关于NDIS》中提到的“重定向器”一样,NetBIOS 也直接与 TDI 进行通讯。</P>
<>   从其功能上来讲,NetBIOS 可以看作是一组过程内通信服务(IPC),这些服务可以分为三类:</P>
<P>   名字服务。取得和发布源名字。 NetBIOS 有独立的计算机名、用户名和组名(工作组名和域名)。名字在它们的名字空间中以广播的方式传送,或者在 WINS 下通过点对点通信来传送,验证名字的有效性,以便能在任何可以到达的 IP 网络中寻址计算机。</P>
<P>   会话服务。通过会庆命令为一对 NetBIOS 应用建立双工、连续、可靠的连接。 NetBIOS 也支持多点连接,并通过名字验证双方的参与者。</P>
<P>   数据报服务。通过 对组名的广播或者直接投送到单个的、独立的名字以在两个参与者之间发送和接收消息。与会话服务不同,数据报服务是不连续的、不可靠的,也不是固定连接的。</P>
<P>   NetBIOS 支持广播名的解析,这种服务和 DNS 有密切的关系。 NetBIOS 是经常广播的,甚至在 TCP/IP 环境,但广播并不总是可行的。从网络结构上看,名字服务广播的范围是有限,而只能在单段网络有效。</P>
<P>   二、NetBIOS 与 NetBEUI</P>
<P>   NetBIOS 是应用程序访问符合 NetBIOS 规范的转输协议的接口, NetBEUI 是该接口的一个扩展版本(1985年由 IBM 开发成功)。两者的区别如下:</P>
<P>   NetBIOS 最多只能与其他节点建立 254 个通讯话路。NetBEUI 不再有此限制,它允许 Windows NT 机器上的每个进程都能够与多达 254 个节点进行通讯。</P>
<P>   NetBIOS 名称最多可有 15 个字符,通话层应用程序通过它来与远程计算机进行通讯。NetBEUI 则是通过 SMB 协议(Server Message Block??服务器消息块,最初应用于 3COM 公司的 LAN Manager)来实现在逻辑通道中的消息传送的。</P>
<P>   NetBEUI 总是包含在 NetBIOS 中,NetBIOS 可以运行在几种不同的传输协议上,包括 NetBEUI 、TCP/IP 和 IPX/SPX,后三者位于网络层驱动接口与传输层驱动接口之间。但运行在一种传输协议上的 NetBIOS 服务不能和运行另一种传输协议上的 NetBIOS 服务通信。</P>
<P>   NetBIOS 可以使用的四种类型的 SMB(赋予 Windows 计算机本地文件重定向功能以便进入远端文件系统) 命令:</P>
<P>   话路控制命令,用于建议或终止与远程计算机上某个资源的逻辑连接。
   文件命令:用于远程文件访问。
   打印机命令:用于传送数据给一个远程打印队列,同时也检查该打印队列中各项任务的执行状态。
   消息命令:用于实现计算机之间的消息传送。</P>
<P>   三、NetBIOS 与 NBT</P>
<P>   还记得我们在《关于WINS(二)》中讲的 NBTSTAT命令吗?现在我们就来说一下。</P>
<P>   NetBIOS 接口可以应用于 TCP/IP 协议以注册和解析网络名称,而 IP 地址与 NetBIOS 名称之间的翻译则是由 NetBT 进行的。</P>
<P>   NetBT 是 TCP/UDP 传输协议下的 NetBIOS 服务。它的功能就是将 NetBIOS 名称翻译成 IP 地址名称解析。</P>
<P>   对于直接连接请求,NetBT使用的端口如下:</P>
<P>   NetBT名字服务使用 UDP 端口 137;
   NetBT会话服务使用 TCP 端口 138;
   NetBT数据报服务使用 UDP 端口 139。</P>
<P>   什么时候需要用到直接连接请求呢?</P>
<P>   还记得我们在前面曾提到过多重地址服务器吗?这里就要用到直接请求连接,因为 NetBIOS 虽然可以多地址工作,但是并不能很可靠地运行,因此建议只用于文件或打印服务器,或者用于路由器;而关键的一点是多地址服务器不能对每个接响应广播。
</P>
USER001 发表于 2004-10-27 14:02:16 | 显示全部楼层 来自 中国辽宁营口
四、 NetBIOS的作用域
   在《关于 WINS》(二)中配置 Windows 计算机使用 WINS 时,我们是在“网络 控制面板”的“TCP/IP 属性”中进行“WINS 配置”的,当时提到了“NetBIOS 作用域”,简单地说了两名。这里,较详细地对作用域作出解释。<>   1、NetBIOS 作用域的作用</P><>   NetBIOS 作用域标识符的作用是用来对网络的通信进行分段的。NetBIOS 作用域(NetBIOS Scope)的作用域使得采用同样NetBIOS 作用域标识符的 NetBIOS 主机之间可以进行互操作。在发送包含 NetBIOS 名的分组之前,先在 NetBIOS 名上添加 NetBIOS 作用域标识符,执行名字查询、名字登记和会话请求的分组都需要进行这种操作。在接收端,分组中的 NetBIOS 作用域标识符必须和本地设置的 NetBIOS 作用域标识符相匹配,否则,该分组不予处理。因此,只有作用域标识符相同的计算机才可以在 NetBIOS 环境下互相通信。另外要注意,作用域标识符是区分大、小写的,在域标符设置为 lanhome 的计算机是不能和作用域标识符设置为 LANHOME 的计算机在 TCP/IP 上的 NetBIOS 环境下通信的。</P><>   因此,如果 NetBIOS 作用域标识符设置错误,用户就可能无法与其他计算机连接,反倒不如不设。</P><P>   2、配置 NetBIOS 作用域</P><P>   这一点我们已经在《关于WINS》(二)中讲过了,这里就简单的作一下补充。</P><P>   在 Windows 9x 中通过网络控制面板进行 TCP/IP 属性的设置时,在“WINS 配置”页框中启用“ WINS 名字解析”,然后才能设置 NetBIOS 作用域标识符。但必须输入至少一个 WINS 服务器的 IP 地址,即使网络中没有 WINS 服务器而输入一个不存在的地址。</P><P>   3、修改注册表配置 NetBT 作用域标识符</P><P>   1、在 HEEY_LOCAL_MACHINE 树中找到以下主键:</P><P>   System\CurrentControl\Service\VXD\MSTCP</P><P>   2、新增 NetBIOS 作用域标识符:单击“编辑”菜单选取“字符串值”,输入“Scope ID”,回车。双击刚输入的字符串值,在编辑字符串窗口中输入 NetBIOS 作用域标识符的值。
</P>
USER001  | 发表于 2004-10-27 14:02:45 | 显示全部楼层 来自 中国辽宁营口
五、 NetBIOS的名字解析
   在“你问我答”中我们多次提到,要在局域网的“网上邻居”中看到网络中的其它计算机,就必须安装 NetBEUI 协议。这实际就是 Windows 系统的浏览服务,通过这一服务,系统可以创建 NetBIOS 计算机名列表,这些计算机名再以组名为条件排序,用户就可以利用“网上邻居”或 NET View 命令来显示结果了。<>   NetBIOS 名包含的内容:</P><>   NetBIOS 名??即计算机名称,用来标识独立的用户或计算机。独立的 NetBIOS 名是工作组的成员,它们属于一个默认的工作组或由用户自定义可以加入一个自选的工作组。</P><>   工作组名??用来标识某个工作组的成员。</P><P>   域名??同工作组名一样,域名也是一种 NetBIOS 组名,它是通过域控制器来标识、证实其成员的。但在域名服务中这两者被认为是一样的,这也就是在“网络 控制面板”的属性的“标识”页框中只有计算机名、工作组、计算机说明等项目而没有“域名”的原因。</P><P>   NetBIOS 名的登记:</P><P>   NetBIOS 在小型网络中登记名字的方法是广播。NetBIOS 名字服务提供的功能有:自动登记名字、查询名字、响应名字查询、在关机时释放名字等,但它并不需要专门的名字服务器,甚至可以通过直接通信来进行名字登记。</P><P>   NetBIOS 名字的解析方法(绑定协议为TCP/IP)</P><P>   1、NetBIOS 名字缓存??本地的名字缓存通过预先加载或地址解析而将地址在存放在客户机的内存中。其优点是从缓存中查询名字的速度特别快,缺点是缓存中每条记录的生存周期只有10分钟,需要不停的刷新。</P><P>   2、广播查询??如果名字在缓存中不能被查询到,同时系统没有配置 WINS 服务器,系统就使用 UDP 端口137和138的 NetBIOS Datagram Distribution Service(NDDS,中文意思就是 NetBIOS 数据报分布服务)来进行查询。本地网上的计算机在网络中搜索它们的名字列表,如果目标主机在同一网络中,就发出一个响应。缺点是 NDDS 服务不能通过路由器,只能在单段网络上使用广播查询。</P><P>   3、WINS??这个我们已经做了专门的介绍,客户机通过配置使用 WINS 服务器来登记和撤消自己的名字。其优点是可以指引 UDP 端口137和138的消息通过路由器,使得可以查询本地网以外的主机。</P><P>   4、LMHOSTS??这与我们讲到的名字缓存有关了。LMHOSTS 是一种在存储在本地机器上的纯文本的主机文件,采用的是 LAN Manager格式。其一般是在广播查询失败后才用到,其方法是通过标记 #PRE 将 LMHOSTS 名预先加载到本地的 NetBIOS 名字缓存,以避免使用广播查询用到的主机名。</P><P>  这里我们同时看看 Windows 系统中用到的另外两种名字解析方法:</P><P>   1、HOSTS??HOSTS 也是一种在存储在客户本地机器上的纯文本主机文件,但采用的是 UNIX格式。同样是在广播查询失败及 LMHOSTS 查询失败后才用到。其优点是可以存储别名和全域名,其缺点是不支持 Tag 操作。</P><P>   2、DNS??这一点我们也已经做了专门讲述了。如果客户机允许“启动 DNS”来进行 Windows 名字解析,客户机在上面的所有查询操作都失败后将查询 DNS 服务器。</P><P>  我们可以看出这两种解析方式是一种域名查询方式,一般说来它们用于 IP 主机名的解析。</P><P>  接下来,我们来看一下 HOSTS 文件,对于 LMHOSTS 我们准备作为一个专题独立出来集中讲述。</P><P>  HOSTS 文件的示范文件可以在 C:\WINNT\SYSTEM32\DRIVERS\ETC 目录中得到,其文件名是:HOSTS.SAM。SAM 即 SAMPLE,是Microsoft 提供给用户的一个如何配置 HOSTS 的例子,其中带有说明性的文字。在用户需要进行 HOSTS 配置的时候,可以直接将其改名复制为 HOSTS 并做相应修改即可。</P><P>  HOSTS 文件包含了 IP 地址及主机名称等信息。下面就是该文件的内容:</P><P># Copyright (c) 1993-1995 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows NT.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com    # x client host
127.0.0.1 localhost</P><P>  这里的示例是将 rhino.acme.com 映射到地址 102.54.94.97。注意地址和主机名之间必须有空格。另外,一个地址可以使用多个名称,方法就是添加别名(跟在主机名后面,用空格隔开)。这在 UNIX 系统中可以将大、小写的所有名称都添加进去(因为 UNIX 区分大小写),如果希望将多个不同的名称解析到同一地址也可使用这一方法。示例中的#就是是我们上面的说到的由微软提供的说明性文字。
</P>
USER001  | 发表于 2004-10-27 14:05:07 | 显示全部楼层 来自 中国辽宁营口
五、 对 WINS 数据库的一点补充 <>   大家一定还记得我们在《关于WINS》(一)时,提到 WINS 是NetBIOS 名字服务器而非域名服务器,接下来在《关于WINS》(二)中我们由“WINS 管理器”得到了一个 WINS 数据库。当时,我们针对数据库介绍的就是 NetBIOS 的名称,现在,我们对其进行一点补充说明,如图所示,在下半部中??</P><>   第一列,映射:NetBIOS计算机名和资源代码及其相应的 IP 地址。</P><>   第二列,A:记录的登记方式,即该名字如何登记到本数据库中的。带有“√”标识的记录,则表明它是自动(Automatic)登记或动态登记的,也就是在系统启动时通过已经配置给它的 WINS 服务器登记的。</P><P>   第三列,S:记录的登记方式,如果某记录在“S”一项有“√”标识,则表明它是静态登记或人工登记的,这只能由系统管理员在 WINS 管理器中进行操作。</P><P>   第四列,截止日期??即记录登记到期的日期。图中的日期显示的是00-2-4,我们在服务器上添加“WINS 服务”并制作该图是在1月28日,这与我们在《关于WINS》(二)中讲的到 WINS 默认 144小时(6天)的更新间隔刚好一致。</P><P>   第五列,版本标识号??表明该记录的复制版本,是系统进行更新的依据。</P><P>   有网友来信询问上面提到的数据库中[1Ch]、[00h]等资源代码的具体意义,因为我们在《关于WINS》(二)中只讲到了登记的域名、计算机名、用户名等记录类型,对资源类型则没有提及。下面,我们就来解答这一问题。
  跟 DNS 一样,尽管 WINS 是一种 NetBIOS 名字服务,但它仍然是通过 IP 地址来进行解析查询的。这就要求 NetBIOS 能够提供一个功能,就是根据 IP 地址来得到某种服务的名字,客户机再根据服务的名字来请求 WINS 服务器提供这些服务。这一机制体现在 WINS 数据库中就是在计算机名、域名、用户名或注册的其它 NetBIOS 名字后面加上一个资源代码。详细列表如下:</P><P>NetBIOS名字服务的资源类型一览表</P><P>资源代码资源类型服务名称[00h]计算机名或域名“Workstation”服务:登记NetBIOS计算机名或域的成员[01h]_MASBROWSE_“Computer Browser”服务:登记本地主浏览器的IP,用以发布到其它浏览器[03h]用户名或计算机名“Messagenger”服务:登记的消息目标,是一个 NetBIOS 用户名或计算机名[06h]计算机名“远程访问服务”:登记运行RAS的计算机名[1Bh]域名域主浏览器服务:登记域主浏览器[1Ch]域名主域控制器或辅域控制器:登记域组名[1Dh]域名“Computer Browser”服务:登记本地主浏览器以发布浏览列表供辅浏览器查询[1Eh]域名“Computer Browser”服务:登记广播指向的正规组名,以选择本地主浏览器[1Fh]计算机名“Network DDE(网络动态数据交换)”服务:登记进行DDE的 NetBIOS 计算机名[20h]计算机名或组名“Server”服务:登记 NetBIOS 计算机名专门的管理组名[21h]计算机名RAS客户机:登记 NetBIOS 计算机名[BEh]计算机名网络监视代理:登记 NetBIOS 计算机名[BFh]计算机名网络监视应用程序:登记 NetBIOS 计算机名</P><P>上表中的服务可由“控制面板”/“服务”来查看其状态,因此,我们这里提供的服务也就基本按它来的。</P>
USER001  | 发表于 2004-10-27 14:05:45 | 显示全部楼层 来自 中国辽宁营口
六、 NetBIOS 的节点类型 <>   这里有一个术语叫 node designation,中文意思我认为就是节点指定,它主要用来表明某计算机节点解析计算机名称及地址的方法。每个 NetBIOS 计算机都有一种节点类型,共有四种节点类型对应于四种解析方法:</P><>   B节点??只使用广播方法。该类型的节点在本地子网上使用广播消息来发现位于同一子网中的计算机。</P><>   P节点??只和名字服务器使用点对点通信。该类型的节点使用服务(如WINS服务器)来进行查询以获取要解析的地址。</P><P>   M节点??先使用广播,再点对点通信。该类型的节点在LAN上发送广播消息来查找另一台电脑,如果没有回应或查找失败,就转为使用P点节方式继续查询。它向名称解析服务器注册自己的名称时也是用的广播消息。</P><P>   H节点??先使用点对点通信,然后使用广播。该类型的节点使用 NetBIOS 名称解析服务来进行注册或解析,如果无法连接到名称解析服务器(如WINS服务器)则再转为使用B节点方式继续查询。</P><P>   七、配置及检查节点类型</P><P>   被配置为使用 WINS 服务的 Windows NT 计算机,在默认状态下就是一个 H 节点。对于客户机,如果要配置为 H 节点,则在“控制面板”/“网络”/“TCP/IP属性”中必须输入 WINS 服务器地址,如果要配置为 B 节点,则将 WINS 地址保留为空白即可。
  如何查看客户机的节点类型呢?
  在 Windows 9x 客户机的“开始”/“运行”框中输入 Winipcfg/all 并确定,我们可以得到图一的画面。结点类型(注意,在 Windows 98 中微软把它叫结点)是交叉,同时我们还可以得到该客户机的一些其它信息,由此我们可以知道,该计算机配置的网络适配器地址、由 DHCP 服务器得到的 IP 自动配置地址及获得 IP 地址租用权的时间。接下来,我们在“控制面板”/“网络”的“TCP/IP 属性”中将“WINS 配置”页框中选取“禁用 WINS 解析”,重新启动计算机。(稍等会儿,机器要重启了??我是边写边操作,所以,现在又不能敲了嘛)再运行 Winipcfg/all,我们可以得到图二的画面,比较一下,结点类型是不是变为了“广播”,同时,由于我们刚才将“自动获取 IP 地址”屏蔽而指定了 IP 地址,所以,IP地址和子网掩码都不同了。现在,我们再在服务器的 MS-DOS 方式下运行 Ipconfig /all 命令,则可以得到如下提示信息。可以看到,在 Windows NT 中节点类型(Node Type)为 Hybrid。</P>Windows NT IP Configuration
Host Name . . . . . . . . . : heatch.com
DNS Servers . . . . . . . . : 199.168.1.1
Node Type . . . . . . . . . : Hybrid
NetBIOS Scope ID. . . . . . :
IP Routing Enabled. . . . . :
No WINS Proxy Enabled. . . . . :
No NetBIOS Resolution Uses DNS : No
Ethernet adapter NE20001:
Description . . . . . . . . : Novell 2000 Adapter.
Physical Address. . . . . . : 00-00-B4-70-9F-9D DHCP Enabled. . . . . . . . :
No IP Address. . . . . . . . . : 199.168.1.11
Subnet Mask . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . : 199.168.1.10
Subnet Mask . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . : 199.168.1.1
Subnet Mask . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . :图一图二<P>(一)B节点</P><P>  广播节点(B节点)只通过广播数据报来解析LAN子网中计算机名和地址,即它的有效范围只是它所在的子网。其工作方式是:客户机发送一条广播消息到其所在的局域子网上,这条消息包含有要查找的计算机的IP地址和其本身的MAC地址。由于使用广播方式,则该网上的所有计算机都会接收到,如果该数据报中所要求的地址的计算机存在,则它就会根据包含在此数据报中的发出该消息的计算机的MAC地址作出回应。这样,计算机就会把经常用到的MAC地址缓存起来,通过这些地址实现与远程计算机的直接通信。
  采用B节点方式的缺点:1、增大网络上不必要的通信流量,形成大量的广播消息泛滥。2、大多数路由器不会转发这些广播,阻止了B节点解析路由器另一边的计算机,即B节点不能查找到其所在子网以外的计算机地址。
  解决的办法:1、采用 WINS 服务器可以减少通信流量。2、采用一个 LMHOSTS 或 HOSTS 文件将路由器另一边的计算机的地址存入本地 NetBIOS 名字缓存,避免通过广播查找。
  因此,一个完整的 NetBIOS B节点解析方式可作如下描述:
  1、通过 NetBIOS 名字缓存进行查询,如果成功,返回一个IP地址,完成解析;如果不成功,转向下一步:
  2、通过广播进行查询,如果成功,返回一个IP地址,完成解析;如果不成功,转向下一步:
  3、通过本地 LMHOSTS 和 HOSTS 文件进行查询,无论成功与否都结束解析。</P><P>(二)P节点</P><P>  P节点不是用广播来解析名称的,它通过点对点通信由UDP的数据报和TCP对话登记到一个 NetBIOS 名字服务器(WINS),因此,它会直接向这台服务器查询以进行地址翻译,然后再直接将信息发送到目的计算机。因此,P节点的好处就是减少了本地广播的数量,同时可以跨过路由器与位于其它子网中的 WINS 服务器进行通信。
  采用P节点方式的缺点:1、客户机在配置时为P节点时必须知道 WINS 服务器的IP地址。2、配置P节点还要使用到 DHCP 服务器。3、如果 WINS 服务器停止服务,P节点也就失去解析名称和翻译地址的能力。</P><P>(三)M节点</P><P>  M节点先使用广播,在解析失败后就直接和 WINS 服务器通信,因此,它是前面讲的两种方式的组合。在实际应用中很少配置计算机为这种节点类型,这样的唯一好处是在一个远程没有 WINS 服务器的广域网节点所需的大多数服务都在一个子网,即通信都发生在同一子网中,它可以减少路由器的信息传送量。同时,即使 WINS 服务器停止服务,它还可以使用广播方式来查询本地子网中的计算机。</P><P>(四)H节点</P><P>  H节点如我们上面的测试中所示,在 Windows 9x 中它被称为交叉节点,而在实际应用中,它也被称为混合节点。它与M节点恰好相反,它先使用P节点方式请求 WINS 服务器解析计算机名,如果这种方式失败,它再使用广播方式来解析。
  因此,H节点与B节点的不同是,H节点可以通过路由器解析在同一个 WINS 服务器上登记的所有计算机。
  H节点与M节点的不同是,如果其配置的 WINS 服务器没有在线,H节点在解析过程中也继续与其联系,即是说,只要该 WINS 服务器重新开始服务,H节点就会立即改为使用 WINS 服务器来解析计算机名称,即使此时它正以广播方式与目的计算机进行通信。
  一个完整的 NetBIOS H节点解析方式可作如下描述:
  1、通过 NetBIOS 名字缓存进行查询,如果成功,返回一个IP地址,完成解析;如果不成功,转向下一步:
  2、通过 WINS 服务器进行查询,如果成功,返回一个IP地址,完成解析;如果不成功,转向下一步:
  3、通过广播进行查询,如果成功,返回一个IP地址,完成解析;如果不成功,转向下一步:
  4、通过本地 LMHOSTS 和 HOSTS 文件进行查询,无论成功与否都结束解析。</P><P>  最后要说的是,我们这里对P节点和M节点讲得较为简略,一则它实际应用较少,二则它需要用到 DHCP 服务器配置,我们会在后面的《关于DHCP》中再次接触到它们。另外,对于本节的学习,大家可以参照一下我们前面的《关于中继器、网桥、路由器》和《关于WINS》等专辑。</P>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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