引言:網(wǎng)上鄰居正常運(yùn)行有三種配置方案DNS、WINS、NETBIOS名稱廣播,其中NETBIOS名稱廣播是一種自動(dòng)的運(yùn)行方式,計(jì)算機(jī)只要配置基本的網(wǎng)絡(luò)參數(shù)即可。以下主要針對這種方式,以真空網(wǎng)絡(luò)環(huán)境為案例,通過數(shù)據(jù)包的截取還原真實(shí)的網(wǎng)上鄰居運(yùn)行軌跡。
只 有NETBIOS名稱廣播是一種自動(dòng)的運(yùn)行方式,計(jì)算機(jī)只要配置基本的網(wǎng)絡(luò)參數(shù)即可。當(dāng)然這種方式的弊端也顯而易見,因?yàn)闆]有專門的名稱服務(wù)器,都是自由選擇,出現(xiàn)了問題也不好排查,以下主要針對這種方式,以真空網(wǎng)絡(luò)環(huán)境為案例,通過數(shù)據(jù)包的截取還原真實(shí)的網(wǎng)上鄰居運(yùn)行軌跡(以下分析采用《科來網(wǎng)絡(luò)分析系統(tǒng)9技術(shù)交流版》)。
在 Windows 操作系統(tǒng)中,有兩種名稱,分別為:主機(jī)名稱 和 NetBIOS 名稱。

圖1 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)

圖2 本地NETBIOS名稱表
從狹義上來說,主機(jī)名稱正如它的字面意思一樣就是一臺主機(jī)的名字。從廣義來說,它又不僅僅包含計(jì)算機(jī)的名字,也包含互聯(lián)網(wǎng)中的行通信,通信過程是建立在NetBIOS 協(xié)議之上的。在安裝完Windows系統(tǒng)后,系統(tǒng)會(huì)默認(rèn)使用計(jì)算機(jī)的名字做為當(dāng)前主機(jī)的NetBIOS名稱。它的最大長度為16個(gè)字符,其中最后一位是不可配置的,用于指定 NetBIOS的服務(wù)類型。如果計(jì)算機(jī)名稱不足15位則使用空格補(bǔ)全到15位,反之如果計(jì)算機(jī)名稱超過15位則會(huì)截取前15位。域名。
在Windows系統(tǒng)中的另外一種名稱就是NetBIOS名稱,準(zhǔn)確地說NetBIOS名稱并非是一種名字系統(tǒng),而是Windows操作系統(tǒng)網(wǎng)絡(luò)的一個(gè)編程接口,允許主機(jī)之間使用NetBIOS名稱進(jìn)
如圖1所示,以上三臺主機(jī)在同一局域網(wǎng),主機(jī)LSB最先開機(jī),自然充當(dāng)了主瀏覽器角色。如圖2所示,在本機(jī)上通過NBTSTAT-N命令可以列出本地NETBIOS名稱,具體參數(shù)詳解如下:
LSB <00> 唯一代表工作站服務(wù),每一臺上網(wǎng)的計(jì)算機(jī)必須首先注冊的唯一標(biāo)識符,這也是進(jìn)行網(wǎng)絡(luò)鄰居瀏覽的唯一必要條件。在同一子網(wǎng)上的其他機(jī)子可以用PING LSB得到我的IP,注意這跟DNS沒有關(guān)系,這是通過廣播查詢LSB <00>得到的,因?yàn)門CP/IP和NETBIOS有綁定。這與下面圖3的Microsoft網(wǎng)絡(luò)客戶端是相對應(yīng)的,如果取消該選項(xiàng),就不會(huì)出現(xiàn)上面注冊的LSB <00>唯一標(biāo)識符。
LSB <20> 唯一與LSB <00>相 對照,LSB <20>代表服務(wù)器服務(wù),凡是提供文件及打印機(jī)共享服務(wù)的機(jī)子就叫做SERVER,它會(huì)在入網(wǎng)時(shí)進(jìn)行瀏覽器宣告,這也是一臺機(jī)子可通過網(wǎng)上鄰居“被”訪問的唯一必要條件。這與圖4所示的Microsoft網(wǎng)絡(luò)的文件和打印機(jī)共享是相對應(yīng)的,如果取消該選項(xiàng),就不會(huì)出現(xiàn)上面注冊的LSB<20>唯一標(biāo)識符。
WORKGROUP<00> 組

圖3 網(wǎng)絡(luò)客戶端

圖4 網(wǎng)絡(luò)的文件和打印機(jī)共享
只要把工作組名設(shè)成WORKGROUP的機(jī)子都會(huì)注冊這一項(xiàng),從而同一子網(wǎng)上的某些機(jī)子間建立一種特定的邏輯關(guān)聯(lián),使對于WORKGROUP <00>進(jìn)行的通訊只被這些機(jī)子接收,這里大家可以考慮不在WORKGROUP的機(jī)子對這些報(bào)文的處理過程。
雖說這一項(xiàng)是名字表里最不重要的一項(xiàng),但大多數(shù)無法瀏覽網(wǎng)上鄰居的故障卻都和它有關(guān)哦!還有大家可以想想,要是你的工作組名和別人的機(jī)器名起的一樣會(huì)出現(xiàn)什么事情呢?
WORKGROUP<1E> 組
這與瀏覽器選舉有關(guān),把<1E>標(biāo)志稱為候選者,這樣當(dāng)WORKGROUP組里的當(dāng)前瀏覽主控服務(wù)器當(dāng)機(jī)后,所有擁有<1E>標(biāo)志的機(jī)子都有資格參加競選。
WORKGROUP<1D> 唯一
這個(gè)是瀏覽主控服務(wù)器的標(biāo)志,這里表明主機(jī)LSB是WORKGROUP里的瀏覽主控服務(wù)器了。
..__MSBROWSE__.<01> 組
見過這個(gè)怪東西的人肯定不少,但真正知道它用途的恐怕不多。這是一個(gè)組名,由整個(gè)子網(wǎng)上的所有瀏覽主控服務(wù)器構(gòu)成,這樣當(dāng)WORKGROUP里的機(jī)子想要瀏覽其他組的資源時(shí),LSB就憑借這個(gè)標(biāo)識為大家查找那個(gè)組的瀏覽主控服務(wù)器,從而使我們能獲得該組的瀏覽列表。
另外兩臺主機(jī)隨后開機(jī),都注冊到該主瀏覽器中。以LSH-PC計(jì)算機(jī)為例,啟動(dòng)時(shí)要通過137、138兩個(gè)端口發(fā)送不同類別的數(shù)據(jù)包注冊到主瀏覽器中。通過在其它主機(jī)上抓包可以獲取如圖5所示的信息。
通過137端口向本組所有用戶宣告,如圖6所示:
1.我 的 計(jì) 算 機(jī)名 是LSH-PC,IP是162.168.1.115,可以作為網(wǎng)上鄰居鄰居訪問的客戶端
LSH-PC <00>唯一
2.我的計(jì)算機(jī)名是LSH-PC,IP是162.168.1.115,可 以對本組計(jì)算機(jī)提供服務(wù),讓其它計(jì)算機(jī)通過網(wǎng)上鄰居找到我。
LSH-PC <20>唯一
3.我的計(jì)算機(jī)名IP是162.168.1.115,已經(jīng)注冊到WORKGROUP這個(gè)工作組了。
WORKGROUP<00> 組
4.我的計(jì)算機(jī)名IP是162.168.1.115,可以作為WORKGROUP工作組的備用瀏覽服務(wù)器。
WORKGROUP<1E> 組
以上每個(gè)數(shù)據(jù)包都重復(fù)四次,以確保本組所有用戶收到信息。
通過138端口向本組所有用戶宣告:

圖5 在主機(jī)上抓包所獲信息

圖6 通過137端口顯示

圖7 發(fā)送2個(gè)數(shù)據(jù)包

圖8 發(fā)送4個(gè)數(shù)據(jù)包
1.我 的I P是162.168.1.115,以LSHPC作為響應(yīng)名稱, 請求在WORKGROUP組注冊,發(fā)送2個(gè)數(shù)據(jù)包間隔2分鐘,如圖7所示。
2. 我 的 I P是162.168.1.115,以LSHPC作為服務(wù)器名,可以在WORKGROUP組作為候選瀏覽器提供服務(wù),發(fā)送4個(gè)數(shù)據(jù)包間隔2分鐘,如圖8所示。
計(jì)算機(jī)LSHPC: 我 的IP是162.168.1.115,以LSH-PC作 為 服務(wù)器名,現(xiàn)在還在WORKGROUP組。通過138端口向本組所有用戶宣告:每隔12分鐘廣播一次自己資源的存在,如圖9所示。
計(jì)算機(jī)LSB:我的 IP 是 162.168.1.112,以LSB作為服務(wù)器名,在WORKGROUP組作為主瀏覽器提供服務(wù);現(xiàn)在還在WORKGROUP組中擔(dān)任主瀏覽器工作。
計(jì)算機(jī)LSB周期性地向這個(gè)域主瀏覽器發(fā)送自已所管轄的列表,這個(gè)周期開始是1分鐘、5分鐘、10分鐘,最后是15分鐘。如果3個(gè)周期內(nèi)沒有收到這個(gè)報(bào)文,域主瀏覽器也將它從自己的列表中去除。(通過138端口向本組所有用戶宣告:每隔15分鐘廣播一次自己資源的存在,如圖10所示。
我 的I P是162.168.1.112,以 LSB作為服務(wù)器名,現(xiàn)在還在WORKGROUP組作為主瀏覽器提供服務(wù)。通過138端口向本組所有用戶宣告:每隔12分鐘廣播一次自己資源的存在,如圖11所示。
注意:這個(gè)與普通客端發(fā)出的宣告數(shù)據(jù)包還是有區(qū)別的,一個(gè)是主機(jī)公告,一個(gè)是當(dāng)?shù)刂饕ǜ媪撩髁怂闹鳛g覽器身份。
當(dāng)作為主瀏覽器的主機(jī)LSB關(guān)機(jī)后,剩下的兩臺主機(jī)要進(jìn)行主瀏覽器的競選,主要是通過向組內(nèi)發(fā)送廣播數(shù)據(jù)包,由于ZJ-YH操作系統(tǒng)是WINDOWS10高于WINDOWS7,所以取得優(yōu)先權(quán),擔(dān)起主瀏覽器的角色,從發(fā)送的數(shù)據(jù)包即可看出來,如圖12所示。

圖9 廣播資源存在

圖10 廣播資源存在

圖11 廣播資源存在

圖12 主瀏覽器發(fā)送的數(shù)據(jù)包

圖13 遠(yuǎn)程N(yùn)ETBIOS名稱表
通 過NBTSTAT -a ZJ-YH命令可以列出遠(yuǎn)程N(yùn)ETBIOS名稱表,發(fā)現(xiàn)已經(jīng)多了兩項(xiàng)顯示主瀏覽的注冊選項(xiàng),如圖13所示。
以上是整個(gè)網(wǎng)絡(luò)鄰居從計(jì)算機(jī)的進(jìn)入到退出的整個(gè)運(yùn)行機(jī)制,弄清這些工作原理就不難解一些奇怪的現(xiàn)象:
1.為什么明明有的機(jī)子已經(jīng)關(guān)機(jī),卻還停留在“網(wǎng)上鄰居”里?它什么時(shí)候能消失?
分析:是瀏覽表中的內(nèi)容沒有更新 。如果一臺電腦非法關(guān)機(jī),它的名字可能會(huì)在網(wǎng)絡(luò)上保留40多分鐘,所以你現(xiàn)在點(diǎn)擊的可能是一臺非法關(guān)機(jī)的電腦。因?yàn)闉g覽列表的獲得不是通過訪問其中每一臺機(jī)子得到的,很多時(shí)候網(wǎng)絡(luò)中的計(jì)算機(jī)并不能正確更新瀏覽列表。
當(dāng)一臺計(jì)算機(jī)正常關(guān)機(jī)時(shí),它會(huì)向網(wǎng)絡(luò)發(fā)出廣播宣告,使瀏覽主控服務(wù)器及時(shí)將它從瀏覽列表中刪除;而非正常關(guān)機(jī)后,瀏覽列表里仍會(huì)把該條目保持很長一段時(shí)間,這就是我們?nèi)阅茉诰W(wǎng)絡(luò)鄰居里看到它的原因。
另外有時(shí)候,明明計(jì)算機(jī)已經(jīng)關(guān)了,但網(wǎng)上鄰居上卻仍然存在。這個(gè)是網(wǎng)上鄰居的正常現(xiàn)象,也是瀏覽表沒有更新的原因。主瀏覽器的列表更新需要每隔一段時(shí)間進(jìn)行,這樣客戶機(jī)得到的瀏覽列表就不是實(shí)時(shí)更新的。比如客戶機(jī)非法關(guān)機(jī)后,在主瀏覽器的瀏覽列表里還會(huì)保存很長一段時(shí)間,而實(shí)際上該計(jì)算機(jī)已經(jīng)無法訪問了。
解決方案:如果要訪問的計(jì)算機(jī)不在網(wǎng)上鄰居的列表里或在列表里卻無法通過NetBIOS名稱訪問,可以在地址欄里輸入“\IP地址”來訪問。
2.為什么有的計(jì)算機(jī)名更改了,但舊名字還留在網(wǎng)上?
分析:除了承擔(dān)主瀏覽器和備份瀏覽器任務(wù)的計(jì)算機(jī)外,其他機(jī)子將向主瀏覽器周期性地發(fā)布通知,告知自己是可利用的資源。這個(gè)時(shí)間開始是1分鐘、2分鐘、4分鐘、8分鐘,以后就是每12分鐘一次了。
如果這個(gè)機(jī)子關(guān)機(jī)了,主瀏覽器連續(xù)3個(gè)周期也就是36分鐘沒有收到它的消息,將認(rèn)定它不可用,并從瀏覽列表中刪掉它。但是它還留在備份瀏覽器的機(jī)子里,備份瀏覽器每隔15分鐘呼叫主瀏覽器一次以獲得更新的網(wǎng)絡(luò)資源列表,也就是說不可用的資源最多要等到36+15=51分鐘后才會(huì)從網(wǎng)上徹底消失。這就是為什么有的計(jì)算機(jī)改了名,但舊名字依舊留在網(wǎng)上一段時(shí)間的原因。
3.在多個(gè)工作組的網(wǎng)上鄰居中是如何工作?
分析:在一個(gè)工作組里有一個(gè)主瀏覽器,那么在多個(gè)工作組、多個(gè)域甚至多個(gè)子網(wǎng)里昵?這就需要一個(gè)域主瀏覽器,每個(gè)工作組或域的主瀏覽器要周期性地向這個(gè)域主瀏覽器發(fā)送自已所管轄的列表,這個(gè)周期開始是1分鐘,5次后是15分鐘。如果3個(gè)周期內(nèi)沒有收到這個(gè)報(bào)文,域主瀏覽器也將它從自己的列表中去除。
也就是說,當(dāng)一個(gè)工作組失效后,它還將在主列表中保留45分鐘。域主瀏覽器默認(rèn)為主域控制器,Windows XP Professional版本的計(jì)算機(jī)不能擔(dān)此重任。
作為網(wǎng)絡(luò)管理員,當(dāng)網(wǎng)上鄰居出現(xiàn)問題時(shí),要一步步分析,看是暫時(shí)的還是競選過程出了問題。目前沒有辦法證明瀏覽列表是否完整,但有辦法發(fā)現(xiàn)某可用資源是否在列表里,甚至可以強(qiáng)迫開始一次競選。一般是沿著通信鏈的路徑從第一個(gè)應(yīng)該具有該資源的主瀏覽器查起,看它是否收到某計(jì)算機(jī)的通知報(bào)文。
4.瀏覽主控服務(wù)器是如何指定的?
第一,當(dāng)網(wǎng)絡(luò)中第一臺電腦開機(jī)時(shí),向網(wǎng)絡(luò)中廣播選舉報(bào)文6-10次,查詢有沒 有 Master Browser,如果沒有則自己成為Master Browser。
第二,如果有的話則會(huì)比較操作系統(tǒng)的版本,采用Windows NT/2000/XP作為操作系統(tǒng)比Windows 9X/ME的電腦成為Browser的優(yōu)先級高;如果操作系統(tǒng)相同,則比較系統(tǒng)的版本,新版本優(yōu)先權(quán)高;如果系統(tǒng)和版本相同,則先開機(jī)的優(yōu)先,成為Master Browser。
第三,當(dāng)一臺非Master Browser關(guān)機(jī)時(shí),它會(huì)主動(dòng)通知Master Browser,然后由Master Browser將它從網(wǎng)絡(luò)清單中清除。
第四,但是如果客戶機(jī)非正常關(guān)機(jī),則Master Browser不會(huì)將它從網(wǎng)絡(luò)清單中清除,最長要經(jīng)過48分鐘后才會(huì)將它清除掉。
5.整個(gè)網(wǎng)絡(luò)瀏覽的過程是怎樣的?
當(dāng)一臺客戶端進(jìn)入網(wǎng)絡(luò)時(shí),如果它帶有服務(wù)器服務(wù)(啟用了文件及打印機(jī)共享)會(huì)向網(wǎng)絡(luò)廣播宣告自己的存在,而瀏覽主控服務(wù)器會(huì)取得這個(gè)宣告并將它放入自己維護(hù)的瀏覽列表中;而沒有在相應(yīng)協(xié)議上綁定文件及打印機(jī)共享的計(jì)算機(jī)則不會(huì)宣告,因而也就不會(huì)出現(xiàn)在網(wǎng)絡(luò)鄰居里了。
當(dāng)客戶計(jì)算機(jī)想獲得需要的網(wǎng)絡(luò)資源列表時(shí),首先會(huì)廣播發(fā)出瀏覽請求。瀏覽主控服務(wù)器收到請求后,如果請求的是本組的瀏覽列表,則直接將客戶所需的資源列表發(fā)回如果請求的是其它工作組的瀏覽列表,瀏覽主控服務(wù)器會(huì)根據(jù)本身Browsing List中的記錄找到相應(yīng)工作組的主控瀏覽器返回給用戶,用戶可從那里得到它想要的瀏覽列表。
LLMNR工作過程編輯:主機(jī)在自己的內(nèi)部名稱緩存中查詢名稱。如果在緩存中沒有找到了名稱,那么主機(jī)就會(huì)向自己配置的主DNS服務(wù)器發(fā)送查詢請求。
如果主機(jī)沒有收到回應(yīng)或收到了錯(cuò)誤信息,主機(jī)還會(huì)嘗試搜索配置的備用DNS服務(wù)器。如果主機(jī)沒有配置DNS服務(wù)器,或者如果在連接DNS服務(wù)器的時(shí)候沒有遇到錯(cuò)誤但失敗了,那么名稱解析會(huì)失敗,并轉(zhuǎn)為使用LLMNR。
主機(jī)通過用戶數(shù)據(jù)報(bào)協(xié)議(UDP)發(fā)送多播查詢,查詢主機(jī)名對應(yīng)的IP地址,這個(gè)查詢會(huì)被限制在本地子網(wǎng)(也就是所謂的鏈路局部)內(nèi)。
鏈路局部范圍內(nèi)每臺支持LLMNR,并且被配置為響應(yīng)傳入查詢的主機(jī)在收到這個(gè)查詢請求后,會(huì)將被查詢的名稱和自己的主機(jī)名進(jìn)行比較。
如果沒有找到匹配的主機(jī)名,那么計(jì)算機(jī)就會(huì)丟棄這個(gè)查詢。如果找到了匹配的主機(jī)名,這臺計(jì)算機(jī)會(huì)傳輸一條包含了自己IP地址的單播信息給請求該查詢的主機(jī)。