zoukankan      html  css  js  c++  java
  • 深入了解"网上邻居"原理

    说到网上邻居,相信很多人都很熟悉。但是说起网上邻居的工作机制,可能大家就不太清楚了。

    要说网上邻居的工作机制,不妨联系一下生活中的例子:比如我(A),要拜访一个远方的朋友(B),我要去他的家里,那么应该怎么样做?首先要找到B的家,然后确定B让不让我进他的家里。不要认为这是笑话,网上邻居的工作机制就是这样的。

    网上邻居也是浏览器?

    在一个局域网中,只要双击桌面的网上邻居,就能看到所在网络中的所有用户,可你有否想过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)那里去查询。这就好像新来的同学不知谁是副班长一样,首次浏览网络的电脑并不知道谁是备份浏览器。这时,它会执行一个广播操作。

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

    小提示

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

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

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

    u 数据报

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

    小提示

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

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

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

    运行窗口输入NET CONFIG SERVER /HIDDENYES

    回车后,别人会发现你从网上邻居中消失了。

    注意这个/HIDDEN参数,YES代表隐藏,NO代表不隐藏。

    2.主浏览器要选举产生

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

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

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

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

     

    实例1:选举主浏览器过程

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

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

    Windows Server 2003  >  Windows XP  >  Windows 2000 Advanced Server  >  Windows 2000 Server  >  Windows 2000 Professional

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

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

    那么主浏览器能否指定呢?可以!在希望成为主浏览器的机器上打开注册表编辑器,在[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesBrowserParameters]一项中,将注册表键“IsDomainMaster”的值改为“True”即可。这样,这台电脑就会成为一个主浏览器。

    这台电脑启动时,如果网络中已经有了主浏览器,那么它就会发起一个新的选举,默认它赢得选举。如果其他电脑也配置了这个选项,那么它们之间的竞争就要看选举规则。

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

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

    3.一个客户机的通知过程

    通知,作为维护浏览列表的主要手段,其种类很多,这里只介绍一个客户机的通知。一个新来的客户机,要告诉主浏览器“我来了”,一台新联入网络的电脑会发送一个直接的数据报给主浏览器告知这台计算机的存在,而主浏览器,会将这个信息加入Browser List,并每隔一段周期进行验证。

    初次进行时,这个周期是1分钟、2分钟、4分钟和8分钟,最后到12分钟,而之后每12分钟客户机都会发一个通知,通知主浏览器“我还在呢”。如果经过三个周期(36分钟),主浏览器都没有听到“我还在呢”的通知,那么它就会把这个客户机的名字从Browser List中删除掉,“网上邻居”中就再也不会有这个用户了。

    实例:解读“机去楼不空”的常见现象

    问题:一台连入网络的电脑非正常关机,比如死机了断电了,为什么在“网上邻居”中还可以看到它呢?

     

    原因:因为主浏览器会在三个周期之后才会把它从Browser List中删除(每周期36分钟),而备份浏览器从主浏览器那里同步数据还要12分钟,一个客户机会缓存三个备份浏览器的信息,所以这个删除操作在整个网络中通知到常常要花费72分钟的时间,也就是说要72分钟整个网络中的电脑才会知道某某电脑没有了。

    解决方法1:静静地等待一段时间,如果只是简单网络,往往一台电脑既是主浏览器又是备份浏览器,所以等待一段时间,最长36分钟之后,这个问题就会解决。

    解决方法2:修改通知周期。如果修改通知周期,那么这个36分钟的累计时间就会减少,修改方法:

    在注册表中修改[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserverparameters]项,新建一个“Announce”的键值,类型为REG_DWORD,数值默认为720,对应12分钟。

    小提示

    修改通知周期,要在所有的联入网络的计算机上修改才会有效,增加通知周期会减少网络中数据报的数量,但是会花费更长的时间来维护浏览列表;如果减少通知周期,浏览列表会更快地完成更新,但网络中的数据报流量会增加。所以,是否修改,要根据自己网络的实际情况具体决定。

    “网上邻居”强力技巧 + 故障解决

    1.强力技巧

    (1)让“网上邻居”实现多点下载和断点续传

    很多人喜欢直接通过访问“网上邻居”来共享文件,但使用“网上邻居”则有诸多不便:既不能多点下载,又无法断点续传。其实只要在本地机器架设FTP服务器,就可以让“网上邻居”实现多点下载和断点续传。具体做法如下。

    在本地电脑上利用SERV-U架设FTP服务器,然后设置站点和用户权限,在这里按照默认选项设置就行了。有关SERV-U架设的基本操作不再赘述。

    在SERV-U中添加虚拟目录。在第一步“Physical path”的地方直接填入共享名,如\192.168.0.1xxx之类。后续步骤与添加本地目录方法相同。

    通过Flashget的站点资源探索器进入ftp://192.168.0.1(也就是下载文件所在计算机的IP地址)。进入相应目录后,在右边窗口文件列表中选择要下载的文件或目录,单击右键,选择“下载”。

    由于利用了Flashget的多点下载属性,在局域网条件下可以极大提高速度,网络状况良好情况下是原速度的若干倍,同时可以完美支持断点续传。

    (2)不将最新打开的共享文档添加到“网上邻居”中

    Windows会在“网上邻居”中自动记忆下最近打开过的共享文档,如果不喜欢这项设置,可以在[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPolicies

    Explorer]下新建一个名为“NoRecentDocsNetHood”的DWORD,然后将它赋值为1即可。

    (3)让“邻居”更容易找到自己

    一般情况下,一块网卡只能配置一个IP地址,但实际上可以为它添加更多IP地址。这样,你的电脑将会更频繁地向网络发送广播信息,对于新安装的操作系统,此方法可以帮助别人尽快找到你。在本地网卡上依次点击“属性→TCP/IP属性→高级”,然后按下“添加”按钮即可输入新的IP地址和子网掩码。

    小提示

    虽然一块网卡可以配置多个IP地址,但在网络邻居中连接的IP地址只有一个—网卡所配置的第一个IP地址。

    (4)删除“网上邻居”保存的密码

    访问网上邻居时提示输入密码,我为了方便,点了保存密码,但现在不想要这台电脑保存这个密码了,该如何清除呢?Windows XP的方法是依次进入“设置→控制面板→用户帐户”,然后点击你的账号,再点击左上角的“管理我的网络密码”。

    如果是Windows 9x用户,只要删除该用户的PWL文件即可。

    (5)加速“网上邻居”的启动速度

    进入Windows XP的“网上邻居”后,它会搜索自己的共享目录、共享打印机以及和网络相关的计划任务,然后才显示出来,这样速度会慢很多。这些功能对我们没多大用的话,可以将其删除。在注册表编辑器中找到[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrent VersionExploreRemoteComputerNameSpace],删除其下的{2227A280-3AEA-1069-A2DE08002B30309D}(打印机)和{D6277990-4C6A-11CF87- 00AA0060F5BF}(计划任务),重启即可。

    2.故障解决方案

    故障现象1:一个小型网络,电脑之间物理连接没有任何问题,每台电脑都没有安装任何防火墙软件,但其中一台电脑出现“网上邻居”没有任何信息,输入“NET VIEW”命令结果是“清单是空的”,但是,网络中的其他电脑“网上邻居”中却有这台电脑的信息,并能正常访问。

    原因:由于“Microsoft 网络客户端”协议没有绑定,或Workstation服务不正常造成的(见图3)。

     

    解决方法:将“Microsoft网络客户端”协议勾选,这一点对于Windows 98系统同样重要,只是设置的位置有所区别。

    你知道吗?

    细心的读者可能已经发现了,上面的例子是在没有防火墙的条件下进行的,为什么要强调这一点呢?因为Browser服务是通过网络广播方式进行,很多防火墙会对广播的几个端口进行封堵(因为微软的NetBIOS协议有漏洞,会随机泄漏内存中的数据)。同样,Windows XP中的ICF(Internet连接防火墙)也会有这种作用。

    故障现象2:初次通过“网上邻居”连接一台基于Windows XP的电脑时,我们都会遇到这个现象(见图4)。

     

    这时,不管在对话框中输入任何密码,都没有作用,而此时也不能修改登录使用的账户。

    原因:默认情况下,处于工作组状态的Windows XP Professional版本和Windows XP home版本电脑都会使用GUEST账户作为网络访问的默认账户。而在默认情况下WindowsXP中的GUEST账户为禁用状态,所以会出现这个现象。

    解决方法:启用GUEST账户,然后参照本刊2004年第9期《Windows XP和平共享之终极报告》介绍的方法处理即可。

    小提示

    Windows XP中有一个很有意思的小“BUG”,就是在“用户账户”中的来宾GUEST账户的启用和停用状态和实际的情况可能不一致。

    但是,通过本地用户和组进行设置时,始终和实际情况保持相同状态。

    故障现象3:有些电脑连入网络后,发现“网上邻居”无法看到其他用户,而设置和物理连接都没有异常。

    原因:在“我的电脑”上选择“属性→计算机名”,检查“计算机描述”内容,看看是否过长。

    解决方法:在“运行”窗口输入“net config server /srvcomment:"text"”(不包括外侧引号),回车后即可把“计算机描述”改为“text”。重启电脑,检查“网上邻居”是否恢复正常。

    故障现象4:“网上邻居”中“邻近的计算机”图标丢失。

    原因:误删除造成。

    解决方法:在Windows 2000中,如果不小心删除了“网上邻居”中的这个图标,可以通过修改注册表的方法找回来,其实有一个更加简单的方法:就是在“我的电脑→属性→网络标识→属性”菜单中,将当前计算机加入另外一个工作组,这样,“邻近的计算机”图标就会重建,再把工作组改回来就可以了。

  • 相关阅读:
    【数论】【快速幂】【扩展欧几里得】【BSGS算法】bzoj2242 [SDOI2011]计算器
    【数论】【ex-BSGS】poj3243 Clever Y
    【数论】【扩展欧几里得】hdu3579 Hello Kiki
    【CCpp程序设计2017】推箱子游戏
    【Miller-Rabin算法】
    【数论】nefu119 组合素数
    【数论】nefu118 n!后面有多少个0
    【树形dp】vijos P1180 选课
    【树形dp】Codeforces Round #405 (rated, Div. 1, based on VK Cup 2017 Round 1) B. Bear and Tree Jumps
    【树形dp】VK Cup 2012 Round 1 D. Distance in Tree
  • 原文地址:https://www.cnblogs.com/mahocon/p/9299679.html
Copyright © 2011-2022 走看看