编者按:网络邻居、文件共享,对我们来说,简单而又熟知。但我们真的了解它么? “为什么别人的网上邻居可用,我的却不行?”“为什么有时候可以浏览,有时候却无法浏览网络?”这些难以解释的鬼影现象,我们应当如何应对?
上篇
守护你的网络邻居
序:网络邻居过五关,关关被卡?
一.针对无法访问:防火墙、端口到底如何对待?
二.无法访问:都是盗版惹的祸?
三.无序系统加固,造成无法访问?
下篇:
网络邻居中的“鬼影”事件
问题: 网络鬼影现象接二连三
乱鬼: 操作系统版本惹的祸?
见鬼: 网络邻居列表更新,你最少需要12分钟
捉鬼:从列表中消失,最少需要36分钟
降鬼:如何根除网络邻居鬼影现象?
网络中有一些称为“浏览器”角色的机器,当然它不是我们看得见、摸得着的服务器。当然更不是IE浏览器。它们维护这一张浏览列表,这张表里面包含工作组、域的声明信息和其中的计算机的列表。
浏览器(Compute Browser)服务主要被应用于打开网上邻居后可以看到的计算机列表,方便网络中计算机的相互查找与访问。这个浏览列表最大可以达到64K,大约可以存放3000台机器的信息,在一个大型网络中这个数字都是够用的。另外,网络邻居中出现的计算机列表也不需要我们进行维护,它是通过选举机制自动计算出来的。可以运行Services.msc ,看到这个服务,如图1所示。
图1 Compute Browser服务
在 Windows 2000 和 Windows XP 组网中,Microsoft Active Directory 服务取代了 Windows 早期版本中使用的计算机浏览器服务,以提供网络基本输入/输出系统 (NetBIOS) 名称解析。Windows 2000 中提供浏览器服务是为了向后兼容运行早期版本 Windows 的客户机。
在微软的各个版本的操作系统中都默认支持Compute Browser服务,并且热忱的使用着“浏览器服务”。下面我们就一起讨论一下这些列表是如何产生的,以及它们是如何自动维护的原理。
问题: 网络鬼影现象接二连三
这是发生在一个公司里1年多来的奇怪问题。网络组建初期,公司规模很小,所以也没有购买服务器,而每个人使用的系统也是五花八门。Win98/me,Win2000/xp,什么都有,而老板新找来的研发人员为了测试系统的稳定性,又在PC上安装了Windows 2003 Server、Windows XP Professional、Windows 2000 Server、Microsoft Windows NT 4.0 Server等许多版本。自从他来了以后,原本混乱的网络应用又添加了几分“鬼迹”?
鬼影一:这位老兄如果来的比较早,也就是他的那几个运行着Server系统的测试机器只要开着,大家的访问基本都正常,但在他未到公司的日子里天,灵异事件又开始发生了。
鬼影二:有的时候打开网络邻居后什么都没有,好像所有人都失踪了,但他们的计算机明明开着?
鬼影三:有的时候网络邻居里面显示对方计算机在线,但双击后却无法访问,转身看那台计算机早已经关机了?
乱鬼: 操作系统版本惹的祸?
1.浏览服务器角色
按照应用结构区分,那么就可以简单的将局域网中的所有计算机分为:浏览服务器和浏览客户机。如果再按照浏览服务器功能对象中以功能细化,可以分为下面的5种:
* Non-Browser:非浏览器,一般就是指浏览客户机,它不能包含浏览列表。
* Potential Browser:潜在浏览器,本身没有浏览列表副本,如果其它主浏览器或备份浏览器无法工作后,它可以提升为不同功能的浏览服务器,提供诸如net view等查询。
* Backup Browse server:备份浏览器,本身已经存在浏览列表,但是用户是无法从它更新浏览列表的,所有浏览列表的改变它都必须从主服务器获得。根据网络的规模会自动指派一个网络中备份浏览器的个数。
* Master Browse server: 主浏览器,每个网段中只存在一个。
* Domain Master Browse server:域主浏览器,负责维护跨越多个子网的使用,域主浏览器维护着大规模的列表信息,每个子网的主浏览器将自己的浏览列表和域主浏览器列表去交换。
2.浏览服务框架体系
根据不同的网络结构,或者不同的工作组工作在相同的网段和不同的网段当中,会有不同的结构维护着整个网络的列表信息。归纳起来可以分为下面几个不同的状态:
(1)同一网段:单一工作组或域
这是一个最容易理解的结构,在网络中只存在一台主浏览器。而备份浏览器的个数由机器数量决定。在 Windows 域结构中,总是会选择主域控制器(PDC)作为域主浏览器。只有 PDC 才可以是域主浏览器。如果没有 PDC,或者没有DNS和WINS服务器,则无域主浏览器可用,而且您不能从您所在工作组以外的其他工作组获得浏览列表。在指定网段上,只有一个主浏览器。除 PDC 之外的其他所有域控制器都会被指定为备份浏览器。另外,网络段上每 32 台计算机会被分配一个备份浏览器。
如果指定网段上如果没有域控制器,则会启动一个选择进程,按操作系统版本优先级顺序从网段上的计算机中选择主浏览器和备份浏览器:
↓Windows 2003 Server
↓Windows XP Professional
↓Windows 2000 Server
↓Windows 2000 Professional
↓Microsoft Windows NT 4.0 Server Enterprise Edition
↓Microsoft Windows NT 4.0 Server
↓Microsoft Windows NT 4.0 Workstation
↓Microsoft Windows 98
↓Microsoft Windows 95
(2)同一网段:几个工作组或域
同一个网段不同工作的网络非常常见,这家公司在不同的楼层中就包括了多个工作组,每个工作组一个主浏览服务器,备份浏览器若干。每个主浏览器向网络宣布自己工作组的存在,它会告诉其它的组或域,它来负责这个域的列表。这样,当A组里的机器想找B组了的机器时,A组里的主只会告诉他B由谁来负责,而不会直接告诉要找的机器是哪个。这个过程和DNS查询的原理非常相似。
(3)同一个域,不同的网段
这种情况下其实也是比较简单的,所有的网段的信息汇总到一台主域浏览器上来。这种情况下,大多由域中的“GC”,即全局活动编目服务器来负责维护整个列表。
答案:操作系统版本惹的祸
由于开发人员的测试系统上安装了windows 2003 等服务器版本的操作系统,所以优选为域主浏览器的情况就发生了。这也就为什么他在公司的时候,只要把测试系统打开后,大家使用网络邻居比较正常的原因。
这个公司根据业务性质设置了不同的工作组,例如,“财务销售”和“开发项目管理”两个工作组,而当一个工作组的主浏览服务器和备份浏览器都关闭的时候,另外一个工作组的用户就无法访问了,这也就是网络邻居列表不稳定的原因。
见鬼: 列表更新,你最少需要12分钟
1.本地更新时间
由于浏览器服务依赖于广播数据包,因此其通信是无连接的、不可靠的。服务器在启动时,会立即发送主机通告帧。此过程在 4 分钟时重复一次,然后在 8 分钟时再次重复。此后,此过程每隔 12 分钟重复一次。如果允许丢失几个数据报帧,那么,此网段的主浏览器在启动后 12 分钟内将给定计算机的名称添加到浏览列表中也就应该是合理的。
此时刻之后,浏览器服务会使用面向连接的通信量,而且序列的确定性会更高。在 12 分钟内,网段的主浏览器将连接到 PDC,以获取域范围的列表,同时,PDC 将连接到主浏览器并获悉新服务器。当浏览计算机客户端要访问网络中的共享资源的时候,比如打开网络邻居,它会向主控浏览服务器发送getbackuplist帧,询问最新的备份浏览服务器列表,然后主控浏览服务器把最新的三个备份浏览服务器列表(如果有)响应给该客户端,客户端先把这个列表存放在高速缓存中,再随机地从中选择一个备份浏览服务器,向其发送Netserverenum调用,要求最新的浏览列表。
2.远程更新时间
远程网段上的主浏览器也会每隔 12 分钟连接一次 PDC,并很快获悉新服务器。在远程主浏览器获悉新计算机的名称的 12 分钟内,所有的备份浏览器都会连接到它们的主浏览器。此时,远程网段上的所有浏览器都会获悉新服务器。在多网段环境中,域中的所有客户端获悉新计算机所需的最长时间应该是 48 分钟 (12 + 12 + 12 + 12)。如果网络效率较高,此周期的平均值应该约为一半的时间(24 分钟)。
答案:列表更新,你最少需要12分钟
由于服务器的浏览器角色是通过定期选择来动态定义的,所以要确定用于向特定客户机提供浏览列表的通信流程,可能会很困难。如果主浏览器是正常关闭的,它会在关闭过程中强制选出新的主浏览器。如果被选为主浏览器的备份浏览器已经在网络上存在很长时间,可以接收完整的浏览列表,它就会作为主浏览器启动,并带有已填满的浏览列表,而浏览功能在网段上会继续有效,不会中断。
如果曾用作主浏览器的服务器没有正常关机,或者,如果丢失了主浏览器的强制选择请求数据报,那么,能够在网段上使用浏览功能之前,可能会有延迟。如果客户机请求浏览列表,但无法找到主浏览器,则会导致选择新的主浏览器。备份浏览器发现不存在主浏览器的过程最长可能会需要 12 分钟,具体时间长短取决于网络的使用情况。
为何有些计算机开机后却无法在列表里找到?相信通过上面的分析,大家可以判断出来是由于延迟造成的问题了吧。如果能保证所有的计算机都稳定的运行12分钟,这家公司中的网络邻居列表就会正常了。
捉鬼:从列表中消失,最少需要36分钟
从浏览列表中删除计算机可能需要更长的时间。为了允许丢失数据报帧,主浏览器要在三个通告周期过去之后才会从其列表中删除服务器。如果这台主机没有正常关闭或者网络连接丢失,则这个台主机可以在主浏览器的列表中保留长达 36 分钟。在此时间之后,将会通知 PDC 删除服务器名称。然后会进行相同的通信流程,以删除这台主机的名称。在 12 分钟内,远程网段上的主浏览器会从 PDC 获得域范围的列表,而且,在 12 分钟内,每个备份浏览器都会连接到主浏览器。完成此过程需要的时间会长达 72 分钟 (36 + 12 + 12 + 12)。
如果服务器是正常关机的,浏览器就会发送一个“主机通告”帧,以标明它不再作为服务器。收到此数据报时,主浏览器会立即将该主机从其本地列表中删除。在运行状况较好的网络重,这个时间要低的多,此周期的平均值应该约为一半的时间(36 分钟)。
答案:从列表中消失,最少需要36分钟
通过前面两个鬼影现象的分析,理解“网络邻居里面显示对方计算机在线,但双击后却无法访问,转身看那台计算机早已经关机了?”这个最怪异的现象应该也是很容易的。即使办公室里面还有一个加班的同事没走,那么这个网络浏览列表就会维持36分钟。
降鬼:如何根除鬼影现象?
1.问题解决:注册表范例
为了更加有效的解决和排查问题,在这部分里我们一样给出一个范例。首先说更改注册表的例子。如果希望某台2K SERVER能够以较大的机率获得主控浏览服务器或备份浏览服务器的地位,那么可以修改:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser\Parameters中的IsDomainMaster,值为true,如图2所示。修改之后可以让机器在选举主浏览服务器的竞争中处于比较有利的地位,但并不意味着它准能获得主控或备份的地位。
除了上面的键值,你还可以用MaintainServerList键值,如图3所示,自定义浏览器的角色:No等于“非浏览器”;Yes等于“主/备份浏览器”;Auto等于“潜在浏览器”。
图2 IsDomainMaster键
图3 MaintainServerList键值
2.问题解决:工具范例
最后介绍一个Win2000下的工具软件Browstat.exe。该软件位于Win2000的安装光盘根目录下的SUPPORT\TOOLS下的压缩包support.cab中得到。
我们简单介绍一下这个工具的功能,比如:运行browstat dn可以显示当前浏览器绑定了几个协议;运行browstat gm 1 workgroup 来查看workgroup工作组中的主浏览器是哪台计算机。
browstat.exe不但可以完成查看工作,还能强迫工作组中主浏览器重新选举等。可以在命令提示符下直接输入 browstat 来查看帮助信息,或者通过下面的网址得到微软权威的解释信息:
http://support.microsoft.com/kb/188305/zh-cn
http://support.microsoft.com/kb/818092/zh-cn
3.问题解决:使用网络分析仪
尝试解决问题时,你可以采取的另一个步骤是:使用协议分析器(如 Microsoft 网络监视器工具,或者Sniffer工具包)捕获网络通信。要直接查看浏览器交换,可以停止然后重新启动浏览器服务。遗憾的是,无法保证在停止然后启动浏览器服务后,浏览器会担任它以前担任的同一角色。
不过,这种方法对于在以下情况下验证通信尤其有用:主浏览器从 PDC 请求域范围列表,紧接着 PDC 从主浏览器请求本地列表。当浏览器服务在主浏览器中启动后,应该在一到两分钟内发生完全交换。配置协议分析器的捕获缓冲区和帧大小设置,以允许进行此数量的通信。