浅谈计算机浏览服务——“网上邻居”揭秘 王敬宜 2000年 第7期   在WIN95/98和Windows NT操作系统中,我们经常使用网上邻居访问其它的计算机,存取网络上的共享文件和打印机。在使用过程中网上邻居也常常出现故障,无法访问网上的邻居。网上邻居究竟是如何工作的,其背后究竟隐藏着什么秘密?通过笔者一段时间的研究和试验,逐渐揭开了其中的一些奥秘。 #1 基本概念 #1 1.常用的协议比较   TCP/IP协议   TCP/IP协议广泛应用于Internet等大型网络环境中,也是UNIX操作系统使用的协议。它是可路由协议,可以跨越路由器到其它网段,也是进行远程通信时有效的网络协议。   NWLink IPX/SPX协议   这是微软为了与Novell的NetWare网络操作系统通信而开发的IPX/SPX协议栈的一种形式,NWLink是一种网络组件,用于NT的IPX,它与NetWare服务器互连,实现平台间的过渡。它也是可路由协议,可以跨越路由器到其它网段,易于设置。   NetBEUI协议   NetBEUI即NetBIOS(网络基本输入/输出系统)扩展用户接口,是微软在IBM的基础上更新的协议,它是不可路由协议,由于用广播的方式通信,无法跨越路由器到其它网段。NetBEUI协议适用于只有五、六台计算机的单服务器的小型局域网,并且该局域网中只有微软的工作站和服务器;其优点是易于配置,可自我调整,有很好的自我错误保护功能。 #1  2.寻址方式   我们要想通过网络使用网上的资源(如文件、打印机)时,必须通过某种途径找到网上资源所处的位置,即找到网上资源的地址,这就需要某个通信协议和网上资源的命名方式。当通过微软的网上邻居浏览网上的资源时,所使用的协议可以是TCP/IP、NWLink IPX/SPX或NetBEUI协议中的一种或几种;而网上邻居中所用的命名方式是NetBIOS命名体系,直观的看就是计算机图标旁边的名称——计算机名(Computer Name,不等同于主机名Host Name),NetBIOS命名体系实际上是微软在TCP/IP上独创的命名体系。   网络层NetBIOS命名是一个特殊的16位地址,以识别网络上的NetBIOS资源。该命名既可以是唯一命名,用于向计算机上的特定进程发信息,也可以是组(非排他的)命名,用于同时向多个计算机上发信息。我们可以用 nbtstat -n查计算机的NetBIOS命名,也可以通过:控制面板→网络→标识查看。一个NetBIOS命名进程的例子是NT计算机的服务器服务,计算机启动后,服务器服务注册一个基于计算机名的唯一NetBIOS命名。其它网络服务也用计算机名创建其NetBIOS命名,所以只有第16个字符用于区别每个特定的服务。而指明某一NetBIOS计算机名的网络路径时,用的是UNC路径,如下格式:\\计算机名\共享名。 #1 工作过程 我们是如何看到网上邻居中的内容的呢?这就是网络浏览和域的功能,它的作用是解决如何在网络上浏览NetBIOS资源这个问题。该功能需要NT计算机浏览器服务(Computer Browser Service)提供的查看网络资源的能力,请注意,这里的浏览器不是Internet中的浏览器。   微软Windows系统中的计算机浏览服务是一系列分布式的含有可用的网络资源的列表(List),这些列表分布在一些计算机上,这些计算机要运行浏览器服务,在这个系统中提出浏览请求的计算机充当浏览工作站,而提供浏览列表的计算机充当浏览服务器。   网络上的每台计算机都可以作为浏览服务器提供浏览列表,这样一来会造成浏览工作站提出查询请求时,产生过多的网络流量,降低了网络的性能,同时也会增加CPU的负担,因此要对浏览器定义各种角色,以便明确分工,各负其责,浏览器的角色分类如下:   主浏览器(Master Browser)   主浏览器收集它所在NT域、工作组或其它域的可用服务器上的主列表,并将该浏览列表送给备份浏览器。   备份浏览器(Backup Browser)   接收来自主浏览器的浏览列表的拷贝,再把浏览列表送给提出查询请求的浏览客户机(Browser Client)。   域主浏览器(Domain Master Browser)   在NT域的环境中,它除了作为本域的主浏览器外,还有一个作用,如果远程网上有其它服务于本域的多个主浏览器,那么域主浏览器可以同步更新本域内所有的主浏览器的浏览列表。 潜在浏览器(Potential Browser)   当主浏览器不能工作时,浏览服务进行浏览器选举过程,潜在浏览器可以成为一个候选对象。   只有作为主域控制器的NT Server才能作为域主浏览器,而其它NT Server、NT Workstation、WIN95、Windows for Workgroup计算机可作为主浏览器或备份浏览器。   下面我们来分析一下浏览器服务的工作过程。   浏览器服务主要有三个关键过程: #1  1.浏览信息的收集   由主浏览器在不断更新浏览列表的基础上收集网络资源的信息,存储到主浏览器的主浏览列表中,包括以下信息:   ·在本域或工作组内的所有服务器的列表;   ·其它域或工作组内的所有服务器的列表(域之间不必建立信任关系)。 #1  2.浏览信息的分配   将主浏览器收集到的浏览列表发送给提出浏览服务请求的客户机。   ①主浏览器发出通告   主浏览器定期以广播的形式发出一个主浏览器通告数据包,该数据包通知备份浏览器该主浏览器仍旧存在、可用。如果主浏览器不再按时发这个广播数据包,就启动一个选举进程来选出新的主浏览器。   ②从主浏览器到备份浏览器的浏览列表的拉操作   主浏览器定期与本域内备份浏览器联系,备份浏览器下载保存在主浏览器中的浏览列表。 当主浏览器建立起浏览列表并将它分配到备份浏览器后,就可以向客户机的浏览请求提供服务:   1.当一个客户机要通过资源管理器或网上邻居访问域或工作组时,客户机先联系与目的地相连的域或工作组的主浏览器。   2.主浏览器并不把含有网络资源的列表直接发给该客户机,而是给客户机发送三个备份浏览器的列表,即让客户机去找备份浏览器。客户机从这三个备份浏览器中挑选一个,到那个备份浏览器上取得网络资源的列表。   3.被选中的备份浏览器响应该客户机,给它一个域或工作组的服务器列表。   4.客户机再从该服务器列表中取得这个服务器上的可用资源的列表。 #1 影响因素及优化 #1  1.NetBIOS命名解析   由于浏览服务系统使用NetBIOS命名体系,而网络上无论用什么命名方式,最后都要归结为IP地址,再靠ARP(地址解析协议)将IP地址解析为网卡的硬件地址(MAC地址),就存在着如何将NetBIOS命名体系中的计算机名解析为IP地址的问题,下面按不同的网络环境分析。   ①只有一个网段的局域网   计算机浏览器用NetBIOS广播来找主浏览器的网络资源列表,只要浏览服务的客户机和服务器都使用相同的协议就可以通信。   ②含有多个网段的局域网   由于网段之间存在路由器,而路由器无法转发广播,此时需要其它的NetBIOS命名解析手段。   WINS服务器   在某网段内的一台NT Server计算机上安装WINS服务器,将各网段内的计算机均设置为WINS enabled工作站,则各工作站将NetBIOS命名的解析请求发给WINS服务器,由WINS服务器传回相应的IP地址。如果某些计算机不能作为WINS enabled工作站,可在该网段内的任一台NT Workstation计算机上安装WINS 代理服务(Proxy Service),由WINS 代理服务代替这个工作站去查询WINS 服务器。这种解决方案的优点是利用了WINS服务器的动态数据库功能,当网络中的计算机名称或IP地址发生变化时,计算机会自动向WINS服务器注册相应信息,以动态而不必用手工方式向WINS服务器上添加或更改NetBIOS计算机名与相应IP地址的映射,易于维护。   在WIN95/98计算机中设置WINS enabled工作站的方法是:控制面板→网络→TCP/IP协议→WINS配置→选择“启用WINS解析”→在“WINS服务器搜索顺序”中输入WINS服务器的IP地址。   Lmhosts文件   Lmhosts文件位于各个计算机本地,对于WIN95/98计算机,位于\windows子目录中,对于NT计算机,位于\winnt\system32\drivers\etc子目录中。Lmhosts是一个静态的纯文本文件,其中存放NetBIOS计算机名与相应IP地址的映射行,用于解析远程计算机名与相应IP地址的对应问题,由于是静态文件,其中的数据须要手工输入,一旦新增加或改变了网络上的计算机名与其IP地址,Lmhosts文件无法像WINS服务器那样动态自动地更新数据,只能手工更新,维护工作量较大。   ③远程广域网的浏览   广域网的连接大多通过Modem拨号实现,在这种慢速链路中不可能传送广播数据包,最好使用WINS服务器的方式,在服务器端设置好WINS服务,设远端客户机使用WINS解析。 #1  2.通信协议及相应服务(Service)的配置   ①工作站与服务器服务   当我们通过计算机A访问计算机B上的共享资源时,计算机A充当工作站,计算机B充当服务器,则必须在计算机A上运行工作站服务(Workstation Service),在计算机B上运行服务器服务(Server Service)。对于网络浏览服务的各方计算机也存在上述服务,所以如果无法通过网上邻居浏览网上资源时,可以检查这两个服务是否运行正常。   在WIN95/98计算机中的设置是:控制面板→网络→配置→安装“网络上的文件与打印共享”;在NT计算机中的设置是:控制面板→网络→服务→“网络服务”中要有“服务器”和“工作站”这两个服务,还要通过控制面板→“服务”窗口查看“Server”和“Workstation”两个服务的状态是“已启动”。   ②优化协议的配置   ·因地制宜使用最佳协议   基于前文对三种协议的比较,我们应根据特定的网络规模、网络操作系统、网段的划分合理地使用协议。   如果只有一个局域网,其中的计算机数量不超过10台,并且没有其它网段或远程客户机,完全可以只安装速度快的NetBEUI协议,而不安装TCP/IP协议。   如果存在多个网段或远程客户机,那么应尽量使用可路由的非广播协议,既保证了速度,又减少了广播风暴。如果一台计算机安装了多个网卡,并且还有Modem,此时应对这些网络接口部件绑定不同的协议,比如不要把NetBEUI协议和NWLink IPX/SPX协议绑定在Modem上。 ·注意协议的绑定顺序   通过前面的分析我们知道工作站服务与服务器服务必须使用相同的协议时才能正常工作,所以当某一服务上绑定了多个协议时,应把常用的协议安排在前面。比如,工作站服务上绑定了NWLink协议,服务器服务上绑定了TCP/IP和NWLink协议(注意,TCP/IP协议在前面),那么工作站用NWLink协议访问服务器,服务器先用TCP/IP协议予以响应,发现两个协议不符,服务器再试用协议NWLink,这样就耗费了一些时间。在NT计算机上的设置是:控制面板→网络→绑定→选择“所有的服务”→展开“服务器”→点“NWLink IPX/SPX兼容传输”→按“上移”按钮,就可以将NWLink协议移动到最前面。   又比如^07050401a^1,几台计算机上分别绑定了不同的协议,也会导致无法正常浏览网络资源。 #1  3.与异种网络操作系统的互连   我们以Novell的NetWare网络操作系统为例,分析如何通过网上邻居浏览NetWare服务器上的共享文件。   既然Windows和NetWare网络环境中都支持IPX/SPX协议,二者如何共享资源呢?请看^07050401c^:   可见NT与NetWare的低层协议都是NWLink和IPX/SPX协议,并符合802.3帧结构,但各自的高层协议不同,而高层协议用于共享文件的访问,NT使用SMB(Small Message Block),NetWare使用NCP(NetWare Core Protocol),它提供了对NetWare服务器上文件和打印服务的访问,二者都是文件共享协议,使系统可以透明地访问位于其它系统上的共享文件。要想从NT系统的计算机上查看NetWare服务器上的共享文件,必须在一台NT服务器上安装GSNW服务(Gateway Service for NetWare,NetWare网关服务),使NT服务器在NT与NetWare操作系统之间构筑一个网关,以解决两个操作系统高层协议不一致的问题,见^07050401b^2。   通过上述对网上邻居的分析,希望对大家的网络应用及维护有所帮助。