网上邻居运行机制解析
2017-11-22
引言:网上邻居正常运行有三种配置方案DNS、WINS、NETBIOS名称广播,其中NETBIOS名称广播是一种自动的运行方式,计算机只要配置基本的网络参数即可。以下主要针对这种方式,以真空网络环境为案例,通过数据包的截取还原真实的网上邻居运行轨迹。
只 有NETBIOS名称广播是一种自动的运行方式,计算机只要配置基本的网络参数即可。当然这种方式的弊端也显而易见,因为没有专门的名称服务器,都是自由选择,出现了问题也不好排查,以下主要针对这种方式,以真空网络环境为案例,通过数据包的截取还原真实的网上邻居运行轨迹(以下分析采用《科来网络分析系统9技术交流版》)。
Windows 中的名称类型
在 Windows 操作系统中,有两种名称,分别为:主机名称 和 NetBIOS 名称。
1.主机名称
图1 网络拓扑结构
图2 本地NETBIOS名称表
从狭义上来说,主机名称正如它的字面意思一样就是一台主机的名字。从广义来说,它又不仅仅包含计算机的名字,也包含互联网中的行通信,通信过程是建立在NetBIOS 协议之上的。在安装完Windows系统后,系统会默认使用计算机的名字做为当前主机的NetBIOS名称。它的最大长度为16个字符,其中最后一位是不可配置的,用于指定 NetBIOS的服务类型。如果计算机名称不足15位则使用空格补全到15位,反之如果计算机名称超过15位则会截取前15位。域名。
2.NetBIOS 名称
在Windows系统中的另外一种名称就是NetBIOS名称,准确地说NetBIOS名称并非是一种名字系统,而是Windows操作系统网络的一个编程接口,允许主机之间使用NetBIOS名称进
网络环境配置
如图1所示,以上三台主机在同一局域网,主机LSB最先开机,自然充当了主浏览器角色。如图2所示,在本机上通过NBTSTAT-N命令可以列出本地NETBIOS名称,具体参数详解如下:
LSB <00> 唯一代表工作站服务,每一台上网的计算机必须首先注册的唯一标识符,这也是进行网络邻居浏览的唯一必要条件。在同一子网上的其他机子可以用PING LSB得到我的IP,注意这跟DNS没有关系,这是通过广播查询LSB <00>得到的,因为TCP/IP和NETBIOS有绑定。这与下面图3的Microsoft网络客户端是相对应的,如果取消该选项,就不会出现上面注册的LSB <00>唯一标识符。
LSB <20> 唯一与LSB <00>相 对照,LSB <20>代表服务器服务,凡是提供文件及打印机共享服务的机子就叫做SERVER,它会在入网时进行浏览器宣告,这也是一台机子可通过网上邻居“被”访问的唯一必要条件。这与图4所示的Microsoft网络的文件和打印机共享是相对应的,如果取消该选项,就不会出现上面注册的LSB<20>唯一标识符。
WORKGROUP<00> 组
图3 网络客户端
图4 网络的文件和打印机共享
只要把工作组名设成WORKGROUP的机子都会注册这一项,从而同一子网上的某些机子间建立一种特定的逻辑关联,使对于WORKGROUP <00>进行的通讯只被这些机子接收,这里大家可以考虑不在WORKGROUP的机子对这些报文的处理过程。
虽说这一项是名字表里最不重要的一项,但大多数无法浏览网上邻居的故障却都和它有关哦!还有大家可以想想,要是你的工作组名和别人的机器名起的一样会出现什么事情呢?
WORKGROUP<1E> 组
这与浏览器选举有关,把<1E>标志称为候选者,这样当WORKGROUP组里的当前浏览主控服务器当机后,所有拥有<1E>标志的机子都有资格参加竞选。
WORKGROUP<1D> 唯一
这个是浏览主控服务器的标志,这里表明主机LSB是WORKGROUP里的浏览主控服务器了。
..__MSBROWSE__.<01> 组
见过这个怪东西的人肯定不少,但真正知道它用途的恐怕不多。这是一个组名,由整个子网上的所有浏览主控服务器构成,这样当WORKGROUP里的机子想要浏览其他组的资源时,LSB就凭借这个标识为大家查找那个组的浏览主控服务器,从而使我们能获得该组的浏览列表。
其他计算机启动时
另外两台主机随后开机,都注册到该主浏览器中。以LSH-PC计算机为例,启动时要通过137、138两个端口发送不同类别的数据包注册到主浏览器中。通过在其它主机上抓包可以获取如图5所示的信息。
通过137端口向本组所有用户宣告,如图6所示:
1.我 的 计 算 机名 是LSH-PC,IP是162.168.1.115,可以作为网上邻居邻居访问的客户端
LSH-PC <00>唯一
2.我的计算机名是LSH-PC,IP是162.168.1.115,可 以对本组计算机提供服务,让其它计算机通过网上邻居找到我。
LSH-PC <20>唯一
3.我的计算机名IP是162.168.1.115,已经注册到WORKGROUP这个工作组了。
WORKGROUP<00> 组
4.我的计算机名IP是162.168.1.115,可以作为WORKGROUP工作组的备用浏览服务器。
WORKGROUP<1E> 组
以上每个数据包都重复四次,以确保本组所有用户收到信息。
通过138端口向本组所有用户宣告:
图5 在主机上抓包所获信息
图6 通过137端口显示
图7 发送2个数据包
图8 发送4个数据包
1.我 的I P是162.168.1.115,以LSHPC作为响应名称, 请求在WORKGROUP组注册,发送2个数据包间隔2分钟,如图7所示。
2. 我 的 I P是162.168.1.115,以LSHPC作为服务器名,可以在WORKGROUP组作为候选浏览器提供服务,发送4个数据包间隔2分钟,如图8所示。
启动后要维护工作组的正常运行
1.普通客户计算机
计算机LSHPC: 我 的IP是162.168.1.115,以LSH-PC作 为 服务器名,现在还在WORKGROUP组。通过138端口向本组所有用户宣告:每隔12分钟广播一次自己资源的存在,如图9所示。
2.担任主浏览器的计算机
计算机LSB:我的 IP 是 162.168.1.112,以LSB作为服务器名,在WORKGROUP组作为主浏览器提供服务;现在还在WORKGROUP组中担任主浏览器工作。
计算机LSB周期性地向这个域主浏览器发送自已所管辖的列表,这个周期开始是1分钟、5分钟、10分钟,最后是15分钟。如果3个周期内没有收到这个报文,域主浏览器也将它从自己的列表中去除。(通过138端口向本组所有用户宣告:每隔15分钟广播一次自己资源的存在,如图10所示。
我 的I P是162.168.1.112,以 LSB作为服务器名,现在还在WORKGROUP组作为主浏览器提供服务。通过138端口向本组所有用户宣告:每隔12分钟广播一次自己资源的存在,如图11所示。
注意:这个与普通客端发出的宣告数据包还是有区别的,一个是主机公告,一个是当地主要通告亮明了它的主浏览器身份。
计算机关闭退出网络
当作为主浏览器的主机LSB关机后,剩下的两台主机要进行主浏览器的竞选,主要是通过向组内发送广播数据包,由于ZJ-YH操作系统是WINDOWS10高于WINDOWS7,所以取得优先权,担起主浏览器的角色,从发送的数据包即可看出来,如图12所示。
图9 广播资源存在
图10 广播资源存在
图11 广播资源存在
图12 主浏览器发送的数据包
图13 远程NETBIOS名称表
通 过NBTSTAT -a ZJ-YH命令可以列出远程NETBIOS名称表,发现已经多了两项显示主浏览的注册选项,如图13所示。
常见问题探讨
以上是整个网络邻居从计算机的进入到退出的整个运行机制,弄清这些工作原理就不难解一些奇怪的现象:
1.为什么明明有的机子已经关机,却还停留在“网上邻居”里?它什么时候能消失?
分析:是浏览表中的内容没有更新 。如果一台电脑非法关机,它的名字可能会在网络上保留40多分钟,所以你现在点击的可能是一台非法关机的电脑。因为浏览列表的获得不是通过访问其中每一台机子得到的,很多时候网络中的计算机并不能正确更新浏览列表。
当一台计算机正常关机时,它会向网络发出广播宣告,使浏览主控服务器及时将它从浏览列表中删除;而非正常关机后,浏览列表里仍会把该条目保持很长一段时间,这就是我们仍能在网络邻居里看到它的原因。
另外有时候,明明计算机已经关了,但网上邻居上却仍然存在。这个是网上邻居的正常现象,也是浏览表没有更新的原因。主浏览器的列表更新需要每隔一段时间进行,这样客户机得到的浏览列表就不是实时更新的。比如客户机非法关机后,在主浏览器的浏览列表里还会保存很长一段时间,而实际上该计算机已经无法访问了。
解决方案:如果要访问的计算机不在网上邻居的列表里或在列表里却无法通过NetBIOS名称访问,可以在地址栏里输入“\IP地址”来访问。
2.为什么有的计算机名更改了,但旧名字还留在网上?
分析:除了承担主浏览器和备份浏览器任务的计算机外,其他机子将向主浏览器周期性地发布通知,告知自己是可利用的资源。这个时间开始是1分钟、2分钟、4分钟、8分钟,以后就是每12分钟一次了。
如果这个机子关机了,主浏览器连续3个周期也就是36分钟没有收到它的消息,将认定它不可用,并从浏览列表中删掉它。但是它还留在备份浏览器的机子里,备份浏览器每隔15分钟呼叫主浏览器一次以获得更新的网络资源列表,也就是说不可用的资源最多要等到36+15=51分钟后才会从网上彻底消失。这就是为什么有的计算机改了名,但旧名字依旧留在网上一段时间的原因。
3.在多个工作组的网上邻居中是如何工作?
分析:在一个工作组里有一个主浏览器,那么在多个工作组、多个域甚至多个子网里昵?这就需要一个域主浏览器,每个工作组或域的主浏览器要周期性地向这个域主浏览器发送自已所管辖的列表,这个周期开始是1分钟,5次后是15分钟。如果3个周期内没有收到这个报文,域主浏览器也将它从自己的列表中去除。
也就是说,当一个工作组失效后,它还将在主列表中保留45分钟。域主浏览器默认为主域控制器,Windows XP Professional版本的计算机不能担此重任。
作为网络管理员,当网上邻居出现问题时,要一步步分析,看是暂时的还是竞选过程出了问题。目前没有办法证明浏览列表是否完整,但有办法发现某可用资源是否在列表里,甚至可以强迫开始一次竞选。一般是沿着通信链的路径从第一个应该具有该资源的主浏览器查起,看它是否收到某计算机的通知报文。
4.浏览主控服务器是如何指定的?
第一,当网络中第一台电脑开机时,向网络中广播选举报文6-10次,查询有没 有 Master Browser,如果没有则自己成为Master Browser。
第二,如果有的话则会比较操作系统的版本,采用Windows NT/2000/XP作为操作系统比Windows 9X/ME的电脑成为Browser的优先级高;如果操作系统相同,则比较系统的版本,新版本优先权高;如果系统和版本相同,则先开机的优先,成为Master Browser。
第三,当一台非Master Browser关机时,它会主动通知Master Browser,然后由Master Browser将它从网络清单中清除。
第四,但是如果客户机非正常关机,则Master Browser不会将它从网络清单中清除,最长要经过48分钟后才会将它清除掉。
5.整个网络浏览的过程是怎样的?
当一台客户端进入网络时,如果它带有服务器服务(启用了文件及打印机共享)会向网络广播宣告自己的存在,而浏览主控服务器会取得这个宣告并将它放入自己维护的浏览列表中;而没有在相应协议上绑定文件及打印机共享的计算机则不会宣告,因而也就不会出现在网络邻居里了。
当客户计算机想获得需要的网络资源列表时,首先会广播发出浏览请求。浏览主控服务器收到请求后,如果请求的是本组的浏览列表,则直接将客户所需的资源列表发回如果请求的是其它工作组的浏览列表,浏览主控服务器会根据本身Browsing List中的记录找到相应工作组的主控浏览器返回给用户,用户可从那里得到它想要的浏览列表。
Windows7系统及之后系统引入新的工作机制
LLMNR工作过程编辑:主机在自己的内部名称缓存中查询名称。如果在缓存中没有找到了名称,那么主机就会向自己配置的主DNS服务器发送查询请求。
如果主机没有收到回应或收到了错误信息,主机还会尝试搜索配置的备用DNS服务器。如果主机没有配置DNS服务器,或者如果在连接DNS服务器的时候没有遇到错误但失败了,那么名称解析会失败,并转为使用LLMNR。
主机通过用户数据报协议(UDP)发送多播查询,查询主机名对应的IP地址,这个查询会被限制在本地子网(也就是所谓的链路局部)内。
链路局部范围内每台支持LLMNR,并且被配置为响应传入查询的主机在收到这个查询请求后,会将被查询的名称和自己的主机名进行比较。
如果没有找到匹配的主机名,那么计算机就会丢弃这个查询。如果找到了匹配的主机名,这台计算机会传输一条包含了自己IP地址的单播信息给请求该查询的主机。