网上邻居的机制虽然简单,但是3言2语说的清清楚楚也不是很容易的事情.
为什么明明有的机子已经关机,却还停留在“网上邻居”里?它什么时候能消失?为什么有的计算机名更改了,但旧名字还留在网上?
要解答这些问题,就得先从微软的浏览服务思想说起。在NT域环境下或工作组环境下,浏览服务维护着一个浏览列表,它包含所有可使用的域、工作组和计算机名等,是共享资源的目录。当我们使用“网上邻居”时,就在使用这个浏览服务。
浏览服务系统包含了主浏览器、备份浏览器和浏览器客户等角色。作为主浏览器的计算机起到了维护浏览列表的作用并且周期性地把拷贝发送到作为备份浏览器的计算机上。当浏览器客户需要知道网上有哪些可利用的资源时,向作为备份浏览器的计算机发出API呼叫以得到当前的列表。
主域控制器(PDC)有主浏览器的优先权,这样它就承担了维护它所在的这个工作组的浏览列表的工作。但是它也有关机或重启的时候,这时便产生了主浏览器的竞选过程。也就是说,竞选发生在当一个计算机不能定位主浏览器时,或具备更优先条件的计算机上线时,或NT主域控制器启动时。按照各自的选举条件,当作为主浏览器的计算机推举出来后,网络浏览才能正常。竞选是通过发广播来实现的,如果哪个计算机的竞选条件比它收到的报文要好,则它将广播自己的竞选条件,收到别人的竞选条件后每个计算机根据自己在域中的角色延迟不等的时间后再做反应,这样能减少竞选条件较差的计算机发送选举报文。当一个计算机选举成为主浏览器并且它的浏览列表是空时,它将广播一个请求通知的报文,强迫所有的计算机必须在30秒内给予答复,这个30秒的时间是为了防止服务器过载或报文丢失。
除了承担主浏览器和备份浏览器任务的计算机外,其他机子将向主浏览器周期性地发布通知,告知自己是可利用的资源。这个时间开始是1分钟、2分钟、4分钟、8分钟,以后就是每12分钟一次了。如果这个机子关机了,主浏览器连续3个周期也就是36分钟没有收到它的消息,将认定它不可用,并从浏览列表中删掉它。但是它还留在备份浏览器的机子里,备份浏览器每隔15分钟呼叫主浏览器一次以获得更新的网络资源列表,也就是说不可用的资源最多要等到36+15=51分钟后才会从网上彻底消失。这就是为什么有的计算机改了名,但旧名字依旧留在网上一段时间的原因。
在一个工作组里有一个主浏览器,那么在多个工作组、多个域甚至多个子网里昵?这就需要一个域主浏览器,每个工作组或域的主浏览器要周期性地向这个域主浏览器发送自已所管辖的列表,这个周期开始是1分钟,5次后是15分钟。如果3个周期内没有收到这个报文,域主浏览器也将它从自己的列表中去除。也就是说,当一个工作组失效后,它还将在主列表中保留45分钟。域主浏览器默认为主域控制器,Windows XP Professional版本的计算机不能担此重任。
当收到浏览列表后,计算机必须能解析里面的NetBIOS名,这就要求网络的WINS服务或DNS服务必须正常,浏览才能正常,因为浏览的竞选过程是通过UDP广播实现的。
作为网络管理员,当网上邻居出现问题时,要一步步分析,看是暂时的还是竞选过程出了问题。目前没有办法证明浏览列表是否完整,但有办法发现某可用资源是否在列表里,甚至可以强迫开始一次竞选。一般是沿着通信链的路径从第一个应该具有该资源的主浏览器查起,看它是否收到某计算机的通知报文。
浏览服务使用的是CIFS/E(Common Internet File System)协议组里的计算机浏览协议,在Windows 2000的计算机环境里使用活动目录来代替它,但为了向下兼容,Windows 2000也支持这个浏览服务。