浏览服务<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
为了帮助用户找到网络资源,微软使用了叫做“浏览服务”的机制完成网络资源查找和定位。当我们的机器启动的时候,首先会寻找网络中的一台机器——主浏览器,然后报告他自己存在于这个网络中,主浏览器通过维护一个“浏览列表”来实现这个功能。主浏览列表中维护一个可用的基于NetBIOS的资源列表。
1. 什么是NetBIOS
Network basic input/output system
它提供给网络程序一套方法,相互通讯及传输数据,使用户软件能使用局域网的资源。
2. NetBIOS名称
NETBIOS表是有网络中的“主浏览器”进行维护的。
NetBIOS名称用来在网络上鉴别资源。程序用这些名称开始和结束会话。
NetBIOS能包含至多16个阿尔法数字字母。在整个资源路由网络里,字母的组合必须独特。
3. 什么是浏览列表(Browsing List)?
在微软网络中,用户可以在浏览列表里看到整个网络(何指?子网还是广播域?大家可以考虑考虑)上所有的计算机。当你通过网上邻居窗口打开整个网络时,你将看到一个工作组列表,再打开某个工作组,你将看到里面的计算机列表(也可在 DOS方式下用net view /domain:workgroupname命令得到),这就是我们所说的 Browsing List。工作组从本质上说就是共享一个浏览列表的一组计算机,所有的工作组之间都是对等的,没有规定不可以让所有的计算机同处于一个工作组中。
4. 浏览列表在哪里?
浏览列表是通过广播查询浏览主控服务器,由浏览主控服务器提供的。
5. 浏览主控服务器(Master Browser)是什么?
浏览主控服务器是工作组中的一台最为重要的计算机,它负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其他计算机和其他来访本工作组的计算机提供浏览服务,每个工作组都为会每个传输协议选择一个浏览主控服务器,而我们经常遇到的无法浏览网络的错误大多是因为你所处的工作组没有浏览主控服务器而造成的。
6. 浏览主控服务器是如何指定的?
(1)当网络中第一台电脑开机时,向网络中广播选举报文6-10次,查询有没有Master Browser,如果没有则自己成为Master Browser
(2)如果有的话则会比较操作系统的版本,采用WinNT/2000/XP作为操作系统比Win9X/ME的电脑成为Browser的优先级高;如果操作系统相同,则比较系统的版本,新版本优先权高;如果系统和版本相同,则先开机的优先,成为Master Browser
(3)当一台非Master Browser关机时,它会主动通知Master Browser,然后由Master Browser将它从网络清单中清除
(4)但是如果客户机非正常关机,则Master Browser不会将它从网络清单中清除,最长要经过48分钟后才会将它清除掉。
8. 整个网络浏览的过程是怎样的?
当一台客户端进入网络时,如果它带有服务器服务(启用了文件及打印机共享)会向网络广播宣告自己的存在,而浏览主控服务器会取得这个宣告并将它放入自己维护的浏览列表中;而没有在相应协议上绑定文件及打印机共享的计算机则不会宣告,因而也就不会出现在网络邻居里了。
(1)当客户计算机想获得需要的网络资源列表时,首先会广播发出浏览请求。
(2)浏览主控服务器收到请求后,如果请求的是本组的浏览列表,则直接将客户所需的资源列表发回
(3)如果请求的是其它工作组的浏览列表,浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览器返回给用户,用户可从那里得到它想要的浏览列表。
至于如何去和另一台计算机共享交换资源,就不是我们这里要讨论的问题了。
此过程中的大部分流量都是广播流量。它的工作过程决定了在比较大和动态变化的网络里面,网络邻居注定是不可靠和存在众多问题,并带来混乱的。
常见问题
1.在网上邻居里为什么有些机子访问不了?
原因:
是浏览表中的内容没有更新 。如果一台电脑非法关机,它的名字可能会在网络上保留40多分钟,所以你现在点击的可能是一台非法关机的电脑。因为浏览列表的获得不是通过访问其中每一台机子得到的,很多时候网络中的计算机并不能正确更新浏览列表。当一台计算机正常关机时,它会向网络发出广播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里仍会把该条目保持很长一段时间(NT下是48分钟),这就是我们仍能在网络邻居里看到它的原因。另外有时候,明明计算机已经关了,但网上邻居上却仍然存在 ----这个是网上邻居的正常现象,也是浏览表没有更新的原因。主浏览器的列表更新需要每隔一段时间进行,这样客户机得到的浏览列表就不是实时更新的。比如客户机非法关机后,在主浏览器的浏览列表里还会保存很长一段时间,而实际上该计算机已经无法访问了。
解决方案:
如果要访问的计算机不在网上邻居的列表里或在列表里却无法通过NetBIOS名称访问,可以在地址栏里输入“\\IP地址”来访问。
2.所有的网上邻居中的机器不可访问
原因:主浏览器死机,还没有选举出新的浏览器。
3.无法访问Win2000或WinXP
原因:可能是win2000或xp系统上的 guest 帐号被禁用或者Win2000采用了NTFS分区格式,设置了权限控制。
解决方案:启用Win2000里的guest 用户 ,如果没有启用guest用户那么访问Win2000时会要求输入IPC$密码。同时查看要访问的分区或文件夹是否设置了过高的访问权限。
4.“网上邻居”非常慢
原因:
(1)网上邻居提速两原则:
I.使用单一网络通信协议 windows允许是用多种通信协议,如NetBEUI和 IPX/spx等,虽然方便,但也制造了更多的网络广播垃圾,同时也减缓了存取网络资源的速度,只用一种通信协议当然最理想不过,因此若没有必要,将多余的协议删掉。
II.使用WINS服务器配合使用TCP IP ,WinNT/2000 server提供WINS服务器功能,在局域网中安装一台WINS服务器,则网络上所有电脑都成为WiNS客户端,这样客户端只需要向WINS服务器发出请求而不必进行广播查询,对于中大型网络是个不错的选择。
(2)Master Browser是关键。
有的Master Browser系统资源差不多要耗尽(需要重起),也有的Master Browser被使用了防火墙的用户霸占,这时我们就需要先找到它,然后再采取相应方式解决。如果访问一个工作组时被告知该工作组列表拒绝访问,这种情况一般都是该工作组的Master Browser采用了防火墙,找到该机器,关闭防火墙就可以解决问题。
5.为什么2000访问网上邻居非常慢?
原因:
通过网上邻居浏览其它计算机的时候,2000会先搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务,所以导致速度慢。
解决方案:
启动注册表编辑器regedit 找到 HKEY_LOCAL_MACHINE/sofeware/Microsoft/Windows/Current Version/Explore/RemoteComputer/NameSpace 删除(打印机)删除(计划任务)再次打开的时候就会发现速度比以前提高很多了。
6.可以访问别人的电脑,别人看不到自己的电脑?
原因:这种情况应该是你只安装了网卡驱动,网络协议和Microsoft网络用户,所以你可以访问别人的电脑,但是没有安装“文件与打印机共享服务”,也就是没有作为服务器的功能,所以别人看不到你的电脑。
7. 网上邻居使用的端口
SMB(Server Message Block)协议在NT/2000中用来作文件共享,在NT中,SMB运行于NBT(NetBIOS over TCP/IP)上,使用137,138(UDP),139(TCP)端口。
在2000中,SMB可以直接运行在tcp/ip上,而没有额外的NBT层,使用TCP 445端口。因此在2000上应该比NT稍微变化多一些。可以在“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)。
当2000使用网络共享的时候,就面临着选择139或者445端口了。下面的情况确定会话使用的端口:
1、如果客户端启用了NBT,那么连接的时候将同时访问139和445端口,如果从445端口得到回应,那么客户端将发送RST到139端口,终止这个端口的连接,接着就从445端口进行SMB的会话了;如果没有从445端口而是从139得到回应,那么就从139端口进行会话;如果没有得到任何回应,那么SMB会话失败。
2、如果客户端禁用了NBT,他就将只从445端口进行连接。当然如果服务器(开共享端)没有445端口进行SMB会话的话,那么就会访问失败了,所以禁用445端口后,对访问NT机器的共享会失败。
3、如果服务器端启用NBT,那么就同时监听UDP 137、138端口和TCP139,445。如果禁用NBT,那么就只监听445端口了。
所以对于2000来说,共享问题就不仅仅是139端口,445端口同样能够完成。
故障排除
如果你的网上邻居有问题,请参看以下步骤(同样适用于打印机的共享):
1.网线
检查网线。
2.IP协议
WIN98及以后的机器在安装时会默认安装TCP/IP协议,WIN95需要另外安装。在网上邻居->属性->本地连接->属性(WIN2K/XP)里可以查看是否安装了TCP/IP协议。
3.IP地址。
Ping吧。
4.NetBIOS over TCP/IP。
网上邻居的浏览和通讯要使用NetBIOS协议,该协议是无法被路由器转发的,因此WIN2K及以后的操作系统均提供将NetBIOS协议封装在TCP/IP中的功能。在Win9X/Me系统中,打开网上邻居->属性可以参看是否安装了NetBIOS协议,在Win2K/XP中,打开TCP/IP属性->高级->WINS->NetBIOS设置,选择“启用TCP/IP上的NetBIOS”。 验证NetBIOS名称解析:使用ping XXXX(对方机器名),如果返回正常信息,说明NetBIOS协议解析正常。
5.HOST文件。如果在1.4中无法正确解析机器名,可以修改host文件,在WINDOWS目录中搜索HOST关键字,找到后,使用记事本打开host(有的系统为host.sam),在末尾加入如下内容: x.x.x.x(对方的IP地址)使用Tab键跳到下一制表列XXXX(对方的机器名),存盘退出,注意,如果原文件带有.sam扩展名,要去掉扩展名,才能生效。使用与1.4.同样的方法验证。
6.启用打印与文件共享。在网上邻居和本地连接属性里可以看到是否安装了打印机与文件共享。验证:如果在网上邻居中看不到自己的机器,说明你没有安装打印机与文件共享。
7.启用GUEST用户。
WIN2K/XP在工作组模式下要使用Guest用户来允许网络访问,因此要启用Guest用户。打开控制面板->用户帐户或者在管理工具->计算机管理->本地用户和组中打开Guest帐户,如果使用域管理模式,可以忽略这一步。
8.启用计算机浏览服务。
WIN2K/XP要确保计算机浏览服务正常启动。打开计算机管理->服务和应用程序->服务,确保“Computer Browser”没有被停止或禁用。
9.防火墙:确保WINXP自带的防火墙没有开启,打开本地连接属性->高级,关掉Internet连接防火墙。如果使用了第三方的防火墙产品,参考其使用手册,确保防火墙没有禁止以下端口的通讯:UDP-137、UDP-138、TCP-139、TCP-445(仅WIN2K及以后的操作系统)。
10.设置共享文件夹和打印机。 经过以上步骤,你的网上邻居应该可以正常工作了。
转载于:https://blog.51cto.com/protocol/77133