说到“网上邻居”,相信很多人都很熟悉。操作系统安装完毕后,桌面上仅有的几个图标中就包含了“网上邻居”。
但是,要说起“网上邻居”的工作机制,可能大家就不太清楚了。
要说“网上邻居”的工作机制,需要联系一下生活中的例子 : 比如我,要拜访一个远方的朋友—— A ,我要去他的家里,那么应该怎么样做?答案是先找到 A 的家,然后再确定看看 A 让不让我进他的家里。不要认为这是笑话,“网上邻居”的工作机制就是这样的。
在一个局域网中,只要双击桌面的“网上邻居”,就能看到所在网络中的所有用户,这一切似乎都顺理成章。可你有否想过 :Windows 怎么知道这些电脑叫什么名字、在什么地方?它是如何获得它们的位置的?
Windows 2000 开始,通过“网上邻居”进行的访问实际上是通过 browser service( 浏览服务 ) 来进行的,下面就浏览服务的几个关键地方向大家讲解一下。
一、 浏览列表
浏览列表是浏览服务的关键部分。通过这个列表,基于 Windows 的电脑才能发现处于网络上的电脑和服务资源,浏览列表像一个地址簿,它告诉你的电脑在哪里有资源。你的电脑通过这个列表中的信息将电脑名称解析成 IP 地址,提供给用户来进行访问。
那么,浏览列表是从哪里来的呢? 正确答案是――浏览列表是通过广播查询浏览服务器,由浏览服务器提供的。 <?XML:NAMESPACE PREFIX = O />

很多时候网络中的计算机并不能正确更新浏览列表。当一台计算机正常关机时,它会向网络发出广播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里仍会把该条目保持很长一段时间 , 这可能造成我们仍能在网络邻居里看到它而访问不了。大家可能会奇怪,我们的网络中哪来的浏览服务器?
二、 浏览服务器
浏览服务器是通过选举选出来的。选举的主要条件是操作系统,实验中发现 windows 2000 professional 的优先级是比 windows  xp 高的。当 XP 先启动时它自己是浏览服务器,但当 2000 也启动时, 2000 就会发出选举请求,并最终在选举中把浏览服务器的身份抢过来。其他的条件我们就不再作探究了,反正结果就是选出主浏览服务器和备份浏览服务器。一个工作组中主浏览服务器只有一个,备份浏览服务器可以有多个,担任主浏览服务器的计算机可以同时担任备份浏览服务器。

当一个台电脑启动的时候,如果它的打印和文件共享功能是打开的,它就会在网络中发出广播包登记它自己,主浏览服务器收到广播后会把相关信息加入浏览列表中,并每隔一段周期进行验证,于是我们就会看到这个新启动的电脑了。
初次进行时,这个周期是 1 分钟、 2 分钟、 4 分钟和 8 分钟,最后到 12 分钟,而之后每 12 分钟客户机都会发一个通知,通知主浏览服务器器说 我还在呢 。如果经过三个周期 (36 分钟 ) ,主浏览器都没有听到 我还在呢 的通知,那么它就会把这个客户机的名字从浏览列表中删除掉, 网上邻居 中就再也不会有这个用户了。
如果网络较大,所有的事情都让主浏览服务器干岂不是会较大影响这台计算机性能,所以我们查询的浏览列表并不是从主浏览服务器那里来的,而是从备份服务器那里来的。主浏览服务器会把定期把浏览列表发送到备份浏览服务器以让浏览列表得到更新。
总之,网上邻居访问方法的过程是:客户机先广播 (UDP) 查询备份浏览服务器列表,主浏览服务器告之,要注意告知的只是计算机名。客户机用广播 (UDP) 查询对计算机名的 IP 地址,对同一个计算机名广播三次然后等待回答,无回答再广播下一个备份浏览服务器的计算机名 ( 如果还有下一个的话 ) 。成功获得 IP 后,客户机将建立一条到备份浏览服务器 139 端口的 TCP 连接,然后获得这个工作组中的其他计算机的名字。当你打开某台计算机时,客户机会广播 (UDP) 查询这台计算机的 IP ,如果得不到回答,连接将是错误的;如果得到回答,那么就进入连接的建立阶段了。
上面的这些过程使用的是 netbios 协议。
三、 NETBIOS 协议
Netbois( 网络基本输入 / 输出系统 ) 最初由 IBM,Sytek 作为 API 开发,使用户软件能使用局域网的资源。自从诞生, Netbois 成为许多其他网络应用程序的基础。严格意义上, Netbios 是接入网络服务的接口标准。
NBT(netbios over TCP/IP) 就是建立在 TCP/IP 传送协议之上的 NETBIOS 接口,我们先将它与 Nbf 进行一番对比。 Nbf 指的是 NETBIOS 帧协议,以 NetBEUI 为基础,这可是真正的架构在链路层之上的协议,不过也因为它是在 LLC (逻辑链路控制层)层上,所以无法路由。只有借助一些可路由协议(如 IP IPX )才能实现跨广播域浏览。因为 TCP/IP 发展最为迅速,最为普及, NBT 也才受到大家如此的关注,现在所有的 windows 系统都使用 NBT NBT 提供的服务可以分成三类:名称服务( UDP 137 端口)、数据报服务( UDP 138 端口)和会话服务( TCP 139 端口)。现在所有的 windows 系统都是默认支持 NBT 协议,至于 NetBEUI 就没有什么用了 ( 好像 XP 系统默认已经不安装了 ) ,网上邻居访问不了也同它没有关系,不要再混为一谈。 NBT 才是网上邻居所用到的协议 ( 系统默认 )
1 、名称服务( UDP 137 端口)主要用于广播解决本子网的 NETBIOS 名和 IP 地址转换的关系。因为 NBT 是建立在 TCP/IP 之上,而建立 TCP/IP 通讯是必须知晓双方 IP 地址的。但因为使用的是 UDP 广播,所以名称服务无法跨越路由器。
2 、数据报服务( UDP 138 端口)提供了无连接 (UDP) 和面向广播的通信方式。它主要用于从主浏览服务器那里广播查询到备份浏览服务器列表。因为它使用了 UDP 广播,因而在跨越路由器时也会遇到与名称服务相同的问题。
3 、面向连接 TCP 协议的会话服务( TCP 139 端口)用于向备份浏览服务器查询得到一个工作组的计算机列表,也可建立 98 系统下面网上邻居的数据传送通道。
 

说完了原理,下面来说下常见的问题以及解决方法:
Windows 网上邻居互访的基本条件:
1) 双方计算机打开,且设置了网络共享资源;
2) 双方的计算机添加了 "Microsoft 网络文件和打印共享 " 服务;
3) 双方都正确设置了网内 IP 地址,且必须在同一个网段中;
4) 双方的计算机中都关闭了防火墙,或者防火墙策略中没有阻止网上邻居访问的策略。
如果您的网上邻居有问题,请参看以下步骤:
1 、网线。双机互连不使用 HUB 或交换机,用交叉线连接两机;如果使用 HUB 或者交换机,均用直连线连接至 HUB 或交换机,保证交换机、网卡状态灯正常。
2 IP 协议。 WIN98 及以后的机器在安装时会默认安装 TCP/IP 协议, WIN95 需要另外安装。在网上邻居- > 属性 WIN9X/Me )或者网上邻居- > 属性- > 本地连接- > 属性( WIN2K/XP )里可以查看是否安装了 TCP/IP 协议。
3 IP 地址。在 TCP/IP 属性里设置 IP 地址、子网掩码和网关,如果有需要可以设置 DNS WINS 服务器地址。 IP 地址推荐设置: 192.168.X.X ,子网掩码: 255.255.255.0 。如果你的局域网中有 DHCP 服务器,选择自动获取地址即可。
验证方法:在 DOS 提示符下使用 ping x.x.x.x (对方 IP 地址),如返回如下信息,说明 IP 设置成功:
Reply from x.x.x.x (对方 IP 地址) :bytes=32 time<1ms TTL=128
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 (对方机器名),如果返回如 1.3 中的信息,说明 NetBIOS 协议解析正常。
5 HOST 文件。如果在 4 中无法正确解析机器名,可以修改 host 文件,在 WINDOWS 目录中搜索 HOST 关键字,找到后,使用记事本打开 host (有的系统为 host.sam ),在末尾加入如下内容:
x.x.x.x (对方的 IP 地址)使用 Tab 键跳到下一制表列 XXXX (对方的机器名)存盘退出,注意,如果原文件带有 .sam 扩展名,要去掉扩展名,才能生效。使用与 4 中同样的方法验证。
6 . 启用打印与文件共享。在网上邻居和本地连接属性里可以看到是否安装了打印机与文件共享。
验证:如果在网上邻居中看不到自己的机器,说明你没有安装打印机与文件共享。
7 、启用 GUEST 用户: WIN2K/XP 在工作组模式下要使用 Guest 用户来允许网络访问,因此要启用 Guest 用户。打开控制 面板- > 用户帐户或者在管理工具- > 计算机管理- > 本地用户和组中打开 Guest 帐户,如果使用域管理模式,可以忽略这一步。
8 、启用计算机浏览服务。 WIN2K/XP 要确保计算机浏览服务正常启动。打开计算机管理- > 服务和应用程序- > 服务,确保 “Computer Browser” 没有被停止或禁用。
9 、防火墙:确保 WIN XP 自带的防火墙没有开启,打开本地连接属性- > 高级,关掉 Internet 连接防火墙。如果使用了第 三方的防火墙产品,参考其使用手册,确保防火墙没有禁止以下端口的通讯: UDP 137 UDP 138 TCP 139 TCP 445 (仅 WIN2K 及以后的操作系统)。
10、设置共享文件夹和打印机。