微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 局域网经典故障解决(精华帖)

局域网经典故障解决(精华帖)

时间:11-07 来源:互联网 点击:

络中的计算机并不能正确更新浏览列表。当一台计算机正常关机时,它会向网络发出广播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里仍会把该条目保持很长一段时间(NT下是45分钟),这就是我们仍能在网络邻居里看到它的原因.而98的稳定性是众所周知的 ----在还没来得及关机前就已经崩溃了^-^

这第一部分就先写到这里,不知大家的感觉如何,想来都觉得是看得挺过瘾,却解决不了什么问题,比如浏览网络的必要条件是什么,NetBEUI?TCP/IP?文件及打印机共享还是NETBIOS API?用\IP浏览远程主机的原理是什么?查找计算机可以跨路由器查找吗?喜欢动手的同学完全可以自己用Netxray去搞清楚,懒惰一点的嘛就做好准备等着看下一部分--深入NETBIOS剖析了。

深入NETBIOS剖析

在这部分里,我首先将对NETBIOS作一些基础性的介绍,然后主要针对LANA编号, NETBIOS名字表,NBT这三方面对NETBIOS的特性进行讲解,使大家对NETBIOS接口通讯的原理有所了解,并掌握使用NETBIOS名字表来识别网上邻居浏览故障及其排除的方法。其中可能要借助一些网络命令,如net,nbtstat等,若有不会使用的同学请自行查阅windows帮助文档(最好看NT下的,98的有点渣渣),这里就不作解释了。

熟悉网络编程的同学都知道,在Windows下有两套重要的网络API,WINSOCK和 NETBIOS。平时我们用IE浏览网页,用FOXMAIL收发邮件以及用OICQ聊天用的都是 WINSOCK API,但还有一部分网络应用需要用到传统网络接口NETBIOS,浏览网上邻居和共享文件就是其中的典型。虽然微软已经在其最新的WINSOCK API里加入了对AF_NETBIOS地址族的访问,并打算从它的win2000中使对NETBIOS API的支持变成可选项,但NETBIOS的真正消亡还有待时日。这里我不想翻开NETBIOS厚重的历史去评判它的优劣来浪费大家的时间。存在即是真理,我们切入正题好了。 NETBIOS API的最大优点就是使得编程接口“与协议无关”---应用程序可通过TCP/IP,NetBEUI以及IPX/SPX来运行。

举个例子来说,如果你在网络属性里同时添加了这三种协议,那当你通过网上邻居浏览某台机子的资源时能确定用的是哪种协议在和它进行通信吗?不过由于这种“与协议无关”性是通过对传输协议本身进行改造,在相应协议上添加NETBIOS接口实现的,所以也就产生了一些局限性:

一是并非所有的协议都支持NETBIOS,我们知道的就只有上面提到的那三种协议实施了NETBIOS接口(也许在它们前面加个Microsoft标识更恰当些);

二就是我在前面提过的LANA编号的问题了,LANA号的提法在多宿主机环境下可能更准确些,对于我们一般只安装有一块网卡的机子来说大家就把它简单理解成一种通讯协议的对称性就可以了。

举个例子,A只安装了TCP/IP,B只安装了NetBEUI,虽然他们都在协议上绑定了NETBIOS接口,但彼此在网络邻居里是看不到的。这也提醒我们要想在网络邻居里看到最多的机子,就要把三个协议全部安装。为了后文叙述的方便,我们把启用了NETBIOS的三种协议分别用一个名字来表示:NetBT/NBT(TCP/IP)、Nbf(NetBEUI)、NwlnkNb(IPX/SPX),它们各对应一个 LANA号,只有相同的LANA号之间才能建立通信连接。

接下来要说的就是最为关键的NETBIOS名字的问题了。对于BSD系统,每台机器都有一个主机名,从而也引出了DNS的概念,这也可以说是UNIX和TCP/IP紧密结合的产物。而Windows可没有跟某种协议有近亲关系,在它眼里只有机器名(即NETBIOS名)才是最关键的。

在win32环境中,针对每个可用的LANA编号,每个进程都会为其维持一张NETBIOS名字表。我们可以用nbtstat -n命令获得本机与NBT相关的名字表(你要是连TCP/IP都没安,可别来问我为什么不能用)。NETBIOS 名字分两种类型:唯一名(UNIQUE)和组名(GROUP)。唯一名很好理解,就是说在同一子网上要独一为二(注意我这里没有用广播域,这在我的第三部分里我会结合以前的一些讨论详作说明);而组名的作用是可以实现多播数据通讯。结构上也由两部分组成:字符串和Scope ID。这里的字符串就是我们给自己的计算机、工作组起的名字,而且对所能使用的字符及其长度都有限制,大家自己去查书,我就不在这里浪费时间了,需要说明的是一些同学为了“隐藏”自己,把自己的机器名起的象个IP一样,如0.0.0.0(真不知是那位高人教大家的,呵呵)其实字符“.是不允许做机器名的,从这个角度讲win98真是太渣渣了(误导群众,怪不得老死机,该!)而NT在这方面做的就好多了。我主要讲解的是Scope ID域,它占用NETBIOS名的最

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top