一、网上邻居的工作原理
网上邻居用的是NetBIOS协议,在Win98第二版系统中可以不单独装NetBIOS协议,只要安装TCP/IP协议就可以了,因为已经默认打开了“通过TCP/IP启用NetBIOS”了。 Netbois(网络基本输入/输出系统)最初由IBM,Sytek作为API开发,使用户软件能使用局域网的资源。自从诞生,Netbois成为许多其他网络应用程序的基础。严格意义上,Netbios是接入网络服务的接口标准。
Netbios原来是作为THE网络控制器为IBM局域网设计的,是通过特定硬件用来和网络操作系统连接的软件层。Netbios经扩展,允许程序使用Netbios接口来操作IBM令牌环结构。Netbios已被公认为工业标准,通常参照Netbios-compatible LANs.
它提供给网络程序一套方法,相互通讯及传输数据。基本上,Netbios允许程序和网络会话。它的目的是把程序和任何类型的硬件属性分开。它也使软件开发员可以免除以下负担:开发网络错误修复,低层信息寻址和路由。使用Netbios接口,可以为软件开发员做许多工作。 Netbios使程序和局域网操作能力之间的接口标准化。有它们,可以将程序细化到为osi模型的哪一层所写,使程序能移植到其他网络上。在Netbios局域网环境下,计算机通过名字被系统知道。网络中每台计算机都有通过不同方法编的永久性名称。这些名称将在下面做进一步讨论。
通过使用Netbios的数据报或广播方式,在Netbios局域网上的pc机建立会话彼此联络。会话允许更多的信息被传送,探测错误,和纠正。通信是在一对一的基础上的。数据报或广播方式允许一台计算机和多台其他的计算机同时通信,但信息大小受限。使用数据报或广播方式没有探测错误和纠正。然而,数据报通信可以不必建立一个会话。
在这种环境下所有的通信以一种称为“网络控制块“的格式提交给NetBIOS。内存中这些块的分配依赖于用户程序。这些“网络控制块“分配到域中,分别为输入/输出保留。 在当今的环境中,NetBIOS是使用很普遍的协议。以太网,令牌环,IBM PC网都支持NetBIOS。在它原始版本中,它仅作为程序和网络适配器的接口。从那以后,传输类功能加入NetBIOS,使它功能日益增多。
在NetBIOS里,面向连接(tcp)和无连接(udp)通信均支持。它支持广播和复播,支持三个分开的服务:命名,会话,数据报。
NetBIOS 名称 NetBIOS名称用来在网络上鉴别资源。程序用这些名称开始和结束会话。你能用多个程序配置一台单独的机器,每个程序都有独特的NetBIOS名称。每台支持应用的pc机也有用户定义或通过内部方法获得的NetBIOS站名。 NetBIOS能包含至多16个阿尔法数字字母。在整个资源路由网络里,字母的组合必须独特。在一台使用NetBIOS的pc机在网络上能完全工作起来之前,pc必须先登记NetBIOS名称。 以下看仔细啦,一台机器开机啦~~他在干嘛?? 当客户端A活跃时,客户端A广播它的名称。当它成功广播自己,并没有其他人和它重名,客户端就登记成功。登记过程如下: 1.在登陆上,客户端A在所有地方广播它自己和它的NetBIOS信息6到10次(靠,这种办法Who想出来个,馊的。。。。),确保其他网络成员收到信息。(如果有机器没有收到,那该机的网上邻居里这个客户端A就隐身了) 2.如果有另一客户端已用此名,另一客户端B发布它自己的广播,包括它正在使用的名字。请求登陆的客户端A停止所有登记的企图。 3.如无其他客户端反对登记,请求登陆的客户端A完成登记过程。如果有可用的名称服务器,那么名称服务器会在它的数据库里记上一笔,某机的名称是A,IP地址是XXX.XXX.XXX.XXX 4、当A机正常关机时,重新广播释放刚才注册的这个名字,同一网段上的计算机收到后把这个名字在网上邻居里就麻油了。(靠,晕倒死正常关机。。。。。不正常呢?别急呀)如果网上有Wins服务器的话,客户机非正常关机一定时间以后,Wins也会注销这个名字。如果麻油wins服务的话,您就对着网上邻居里的图标撞大运吧~~,当心噢,这时候查询名字肯定是广播~~,如果你网上有个几十台机器,广播个N篇,再等回答。问题真的解决了吗?要知道广播包是很容易出问题的,尤其在机器数量较多的网络里,这就是网上邻居常常找不到人的原因之一,并且广播不能穿过路由,所以不同子网的机器在网上邻居里是看不见地。(如果有wins服务器存在而且节点类型不是B,那还....稍好一点,不广播了。具体方式可参阅wins结点类型的相关资料)。其实即使有些机器没有收到注册请求,也就是网上邻居里看不看见没什么大关系,只要A不恰好和B同名,如果有WINS服务那就更好了,你和他同名也没关系,WINS会更新纪录或拒绝A登记这个名字。当你试图和A机进行基于NetBios的通讯,比如传只文件什么的,那首先会查询NetBios名字,如果找到就开始通讯。 在NetBIOS环境中有两类名称:独特的和集合的。独特的名称必须在网络中独特。集合的名称不必在网络中独特,所有同名过程属于同一集合。每个NetBIOS节点包含一张该节点当前使用名称的表。 NetBIOS命名允许16个字母用在NetBIOS名称中。而微软只允许15个字母用在NetBIOS名称中,第十六个为NetBIOS后缀。NetBIOS后缀用在Microsoft networking 软件中,区别安装的功能,登记的设备和服务。 [注意:smb 和nbt(在tcp/ip上的NetBIOS)紧密的工作在一起,且都使用137,138,139端口。137端口是NetBIOS名称UDP,138端口是NetBIOS数据报UDP,139端口是NetBIOS会话tcp]嘿嘿,知道点安全常识的这个端口号不会没听说过吧,要网上邻居还是要安全自已考虑清楚噢~~
1.浏览列表 当你浏览网上邻居时,应该可以看到本机所在的工作组中的机器列表,也可在命令提示符下输入net view 命令来得到本机所在工作组的列表,工作组其实就是共享浏览列表的一组计算机,同一个网段中的计算机,其默认都是属于同一工作组Workgroup。 浏览列表(Browsing List):在微软网络中,用户可以在浏览列表里看到整个网络(何指?子网还是广播域?大家可以考虑考虑)上所有的计算机。当你通过网上邻居窗口打开整个网络时,你将看到一个工作组列表,再打开某个工作组,你将看到里面的计算机列表(也可在 DOS方式下用net view /domain:workgroupname命令得到),这就是我们所说的 Browsing List。工作组从本质上说就是共享一个浏览列表的一组计算机,所有的工作组之间都是对等的,没有规定不可以让所有的计算机同处于一个工作组中。 浏览列表是通过广播查询浏览主控服务器,由浏览主控服务器提供的。 浏览主控服务器是工作组中的一台最为重要的计算机,它负责维护本工作组中的浏览列表及指定其他工作组的主控服务器列表,为本工作组的其他计算机和其他来访本工作组的计算机提供浏览服务,每个工作组都为会每个传输协议选择一个浏览主控服务器,而我们经常遇到的无法浏览网络的错误大多是因为你所处的工作组没有浏览主控服务器而造成的。你可以在一个工作组中用NBTSTAT -a computername 命令找出使用NBT协议的浏览主控服务器,它的标识是含有\\_MSBROWSE_名字段。 缺省情况下,win98工作组中的浏览主控服务器是该工作组中第一台启用文件及打印机共享功能的计算机,也允许手工将一台win98计算机配置为浏览主控服务器(方法会在后面讲述网络配置时具体介绍,但由于浏览主控服务器需要维护动态浏览列表,性能会受影响),如果一个工作组中有多台计算机配置了这个选项,或是当前的浏览主控服务器关闭了系统,又没有其他计算机启用主控设置时,就要进行主控浏览器的选举。 关于浏览器的选举报文,过程很简单,首先由一台计算机发送一个选举临界报文,该报文包含了来自发送计算机的信息(操作系统,版本及NETBIOS名等),选举报文向网络中广播,工作组中的每一台计算机都会用自身信息与选举报文进行优先级比较,主要是操作系统起主要作用,记得好像是NT Server>NT Workstation>Win98>WFWG,反正到最后是那个自身条件最好的成为新的浏览主控服务器.
2.主浏览器 浏览列表其实是从工作组中的某一台计算机中得来(这台计算机一般就叫主浏览器),在一个工作组中只有一台计算机充当主浏览器的角色,有一到两台计算机充当备份浏览器的角色。 如果不指定,主浏览器、备份浏览器身份都是由网络中的计算机随机得到,如果网络中的机器都是Win98系统,则由第一台打开并启用文件及打印共享的计算机充当主浏览器,如果主浏览器关机,那么就要选举主浏览器了。当一台计算机进入网络时它会通过网络广播宣告自己的存在(需要在相关协议上绑定文件及打印共享),主浏览器收到广播后就将该计算机的信息保存到自己已有的列表中。主浏览器除了保存所在工作组的计算机列表之外,还保存了同一个网段中其他工作组的主浏览器列表,以便本工作组的计算机浏览其他工作组的计算机列表。
3.浏览服务 为了帮助用户找到网络资源,微软使用了叫做"浏览服务"的机制完成网络资源查找和定位。 当我们在一个对等网中,当主机的数量多于一定的数量的时候,有时我们打开"网上邻居"的时候,速度会很慢很慢,(尤其在一个2000和98的混合环境中更为严重)他不是故障,"网上邻居"的工作机理就决定了这个事实,当我们的机器启动的时候,首先会寻找网络中的一台机器——主浏览器,然后报告他自己存在于这个网络中,主浏览器通过维护一个"浏览表"来实现这个功能。 主浏览表中维护一个可用的基于NETBLOS的资源列表,他其中会有NETBLOS名称到IP地址的映射,也就包含有我们所有的机器的信息。普通客户机在主浏览器的主浏览表中加入自己,告诉他:"我来到了这个网络"我的NETBILOS名字是COMPUTER1,IP是192.168.0.1,当你打开网上邻居的时候,首先通过广播来查找到"主浏览器"。 如果没有"主浏览器"或者主浏览器关机,则在网络中就会通过"选举"来推选出一个"主浏览器",选举考虑的原则包括:1 操作系统 2 操作系统版本 3 计算机角色 (注意:这个过程可能会很慢!!尤其在一个2000 98 混合环境中)找到主浏览器后,在从主浏览器中得到一个备份浏览器的列表,然后再从备份浏览器得到所有的列表(备份浏览器时主浏览器的备份,存储有浏览表的副本),这时,网上邻居中就出现了所有的计算机! 客户的浏览过程如下: 1。通过向主浏览器发布公告将服务器增加到浏览列表。 2。主浏览器与备份浏览器共享服务器(域)列表。 3。客户机从主浏览器检索备份浏览器的计算机列表。4。客户机和备份浏览器联系以检索服务器列表。 5。客户机和服务器联系以检索服务器上的共享资源列表。 而在网络上,为了有效地定位网络资源,Microsoft Windows网络的浏览服务必须有特定的"浏览服务器"参与并提供。 浏览服务器的角色分为"(域)主浏览服务器","备份浏览服务器","潜在浏览服务器"几种。 浏览服务器一般由最先启动的计算机担任,然后可以通过选举来自动变更或者交接。 每隔15分钟,每个子网的主浏览器向本子网上的其他主浏览器宣示自己。每隔12分钟,每个域主浏览器与WINS联系以取得所有domainname<1B>域的列表。 每隔12分钟,每个主浏览器(子网)与域主浏览器联系以更新浏览表。 每隔12分钟,每个备份浏览器和它的局部主浏览器联系以检索和更新浏览表。 所有有服务器组件(也就是说,具有共享网络资源的能力)的计算机向它们局部域中的主浏览器宣示自己。 当本地子网找不到主浏览器或初始化域控制器时都会发生浏览器选举。选举按照操作系统版本号和身份来决定胜负。 而且此过程中的大部分流量都是广播流量。这就是为什么在多子网环境下需要Wins才能正常使用"网络邻居"。也是为什么竭力建议在企业网络里面尽量少的使用"网络邻居"。它的工作过程决定了在比较大和动态变化的网络里面,注定是不可靠和存在众多问题,并带来混乱的。整个网络浏览的过程:当一台win98进入网络时,如果它带有服务器服务(启用了文件及打印机共享)会向网络广播宣告自己的存在,而浏览主控服务器会取得这个宣告并将它放入自己维护的浏览列表中;而没有在相应协议上绑定文件及打印机共享的计算机则不会宣告,因而也就不会出现在网络邻居里了。当客户计算机想获得需要的网络资源列表时,首先会广播发出浏览请求,浏览主控服务器收到请求后,如果请求的是本组的浏览列表,则直接将客户所需的资源列表发回;如果请求的是其它工作组的浏览列表,浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览器返回给用户,用户可从那里得到它想要的浏览列表。
4.网上邻居依赖服务之间的关系: 首先说明一下网上邻居在Windows 系统中结构: Computer Browser 服务 Server 服务 Workstation服务 Microsoft 网络的文件和打印机共享 协议 Microsoft 网络客户端 这些服务和协议就组成了我们用户能够接触到的有关网上邻居背后的Microsoft Browser服务,也就是说要保证网上邻居能够正常工作,系统方面首先上面提到的这些必须正常工作。 在点一下这几个服务的要点: Computer Browser服务是这个体系的首脑, Server服务就是Computer Browser服务的右手,主要负责提文件和打印机共享的支持, Microsoft网络的文件和打印机共享 就是Server服务在网卡上面的反映。 Workstation服务,就是Computer Browser服务的左手,主要负责接收浏览列表, Microsoft网络客户端 就是Workstation服务在网卡上面的反映。