在一个局域网中,只要双击桌面的“网上邻居”,就能看到所在网络中的所有用户,这一切似乎都顺理成章。可你有否想过:Windows怎么知道这些电脑叫什么名字、在什么地方?它是如何获得它们的位置的?

  在阐述这个问题之前,先来举一个例子:新生入学时,所有学生来到教室,坐在自己的位置上,这时每个同学之间互不相识,怎样才能互相熟悉呢?大家一定会想到自我介绍,没错,如果所有人都在座位上,依次自我介绍就可以了。

  但如果现在有人缺席,或今后有人转学,过几天又有新生入学怎么办?所以,需要班长来做一件工作——建立花名册,登记所有同学的名字,并及时修改,用于其他同学查询。
  这样还不够,如果所有人都找班长问问题,班长一定会忙不过来,所以其他班干部也要复印一份花名册,分担班长的工作压力。

  Windows中“网上邻居”的工作机制和这个例子十分相似,我们一起来看看下面这部大片吧。

  【片 名】 “网上邻居”在行动
  【出品公司】 Microsoft
  【出品年代】 Windows 95流行时期
  【适合观众】 电脑爱好者
  【导  演】 比尔·盖茨
  【主  演】 主浏览器—班长

  备份浏览器—班干部
  浏览列表—花名册
  客户机—班级成员

  从Windows 2000开始,通过“网上邻居”进行的访问实际上是通过browser service(浏览服务)来进行的,下面就浏览服务的几个关键地方向大家讲解一下。

   1.花名册——浏览列表(browser list)

  浏览列表就像是班级的花名册,是浏览服务的关键部分。通过这个列表,基于Windows的电脑才能发现处于网络上面的电脑和服务资源,浏览列表像一个地址簿,它告诉你的电脑在哪里有资源。你的电脑通过这个列表中的信息将电脑名称解析成IP地址,提供给用户来进行访问。

   2.班长与副班长——不同类型的浏览器

  Windows的浏览服务体系由一个主浏览器(master browser)、多个备份浏览器(backup browsers)和浏览客户端(browser clients)组成,这有点像上面例子中的班长、副班长和班级成员。主浏览器负责维护当前网络中的浏览列表,并将这个浏览列表发送到备份浏览器,而浏览服务的客户机通过查询备份浏览器来获得当前环境中的浏览列表。

   3.班级成员——客户机

  使用“网上邻居”进行浏览的客户机,就好像班级的普通成员,他们需要通过班长或是副班长来获得花名册,从而得知其他同学的位置和名字。
   “民主”的查询过程

  下面我们来描述一下完整的浏览查询过程。

   1.一个客户机的查询过程

  当一台电脑需要浏览网络时,它需要知道网络中的资源列表(也就是浏览列表),那么它需要发送数据报u到备份浏览器(Backup Browser)那里去查询。这就好像新来的同学不知谁是副班长一样,首次浏览网络的电脑并不知道谁是备份浏览器。这时,它会执行一个“广播”操作。

  这个操作和真正广播有点类似,它的作用像是对全班大声宣布:“谁是班长?我是UU,我来了!”这个声音只有班长(主浏览器)会听到。主流浏览器取得这个通告后,将它放入自己维护的花名册(浏览列表)中,用来给其他人查询。

   小提示

   为什么有的电脑在“网上邻居”中看不到?

  大家都知道,要在“网上邻居”中看到自己和别人,必须在TCP/IP协议上选中“文件及打印机共享”这个选项。这是为什么呢?原因是这样的:如果没有选定这个选项,该计算机即使连入局域网,也不会发出通告,“班长”不知道,其他电脑自然也就不会在“网上邻居”里看到它了。

  客户机向当前网络中的主浏览器(Master Browser)发送一个叫“GetBackupList”的数据报,当主浏览器收到这个数据报之后,它就会提供当前网络中的可用备份浏览器的列表(也就是“副班长”的名单和位置),客户机从这个列表中选择三个备份浏览器的信息,并缓存起来。从此以后,浏览服务就从这三个信息中选择一个进行查询工作。


   u 数据报
  一种独立的数据实体,它包含从源电脑传送到目标电脑的完整信息,而源电脑和目标电脑及传输网络之间先前无需进行数据交换。 简而言之,数据报是TCP/IP在通过网络传送文件之前,将其预先打包划分的形式。

   小提示

  如果一个客户机三次无法联络到主浏览器(这就是网络中可能存在的丢包情况),那么它就会发起一个新的主浏览器的选举(关于选举,将在下文中阐述),并且向调用浏览服务的应用软件发一个叫“ERROR_BAD_NETPATH”的通知,“网上邻居”就会报告“无法找到网络路径”之类的错误信息。

  实例:把我的电脑在“网上邻居”上隐藏

  要完成这个目的,可以通过一个命令来实现:

  在“运行”窗口输入NET CONFIG SERVER /HIDDEN:YES
  回车后,别人会发现你从“网上邻居”中消失了。
  注意这个/HIDDEN参数,YES代表隐藏,NO代表不隐藏。

   2.主浏览器也要“民主”产生

  主浏览器是工作组中的一台最为重要的电脑,它负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其他计算机和来访本工作组的计算机提供浏览服务。

  每个工作组都会为每个传输协议选择一个主浏览器,而我们经常遇到的无法浏览网络的错误大多是因为所处的工作组没有主浏览器造成的。

  有时,我们会碰到如图1所示的情况,点击“启动”按钮也无法启动Computer Browser服务。

  主浏览器是怎么产生的呢?缺省情况下,工作组中的主浏览器是该工作组中第一台启用文件及打印机共享功能的电脑,也允许手工将一台电脑配置为主浏览器。如果一个工作组中有多台电脑配置了这个选项,或是当前的主浏览器关闭了系统,又没有其他电脑启用主控设置时,就要进行主控浏览器的选举。
   实例1:选举主浏览器过程

  如果网络中没有了主浏览器,要怎样选举呢?首先,由一台电脑发送一个数据报,该数据报包含了来自发送电脑的信息(操作系统、版本及计算机名等),数据报向网络中广播,工作组中的每一台电脑都会用自身信息与它进行优先级比较,操作系统的版本起主要作用。最后,自身条件最好的电脑成为新的主浏览器。

  系统将按照以下优先级顺序从电脑中选择主浏览器和备份浏览器:

  Windows Server 2003
  Windows XP
  Windows 2000 Advanced Server
  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
  Microsoft Windows for Workgroups 3.11

  另外,如果一台电脑的运行时间相对较长,在同等条件下它会赢得选举。如果最后所有因素都相同,那么选举会采用字符标准(包含数字和符号),就是说如果一台电脑名字为“A”,和名字为“X”的电脑比较,那么“A”就会赢得选举。

   实例2:指定某台电脑为主浏览器

  难道主浏览器就必须选举产生,不能指定吗?其实也不是,作为管理员,只要在希望成为主浏览器的机器(一般配置较高)上打开注册表编辑器,在[HKEY_LOCAL_MACHINE
  \SYSTEM\CurrentControlSet\Services\Browser\Parameters]一项中,将注册表键“IsDomainMaster”的值改为“True”即可。这样,这台电脑就会成为一个主浏览器。

  这台电脑启动时,如果网络中已经有了主浏览器,那么它就会发起一个新的选举,而在选举中它常常会赢得选举(难道是贿选?)。当然,如果其他电脑也配置了这个选项,那么它们之间的竞争就要看选举的规则了。

   Just Do it

   让某台机器永远不成为浏览器

  如果为了降低某台机器的负载,希望它永远不成为浏览器,可以在[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Browser
  \Parameters]一项中修改“MaintainServerList”的值为“No”就可以了,代表这台电脑将不会成为浏览提供者,同时Computer Browser服务也将无法启动,强行启动就会出现图1中的故障。