我們?cè)?a target="_blank">理解Windows網(wǎng)絡(luò)中的名字解析一文中已經(jīng)介紹過了,在Windows系統(tǒng)中具有Netbios和DNS這兩種名字解析方式。在那篇文章中,我們提到Netbios協(xié)議是基于本地局域網(wǎng)的UDP廣播,具有速度快、無需額外配置的好處,而帶來的缺點(diǎn)就是廣播不能跨越網(wǎng)段和增加了網(wǎng)絡(luò)流量,因此微軟推出了WINS(Windows Internet Name Service)服務(wù)器。當(dāng)客戶計(jì)算機(jī)配置為使用WINS服務(wù)器時(shí),它直接和WINS服務(wù)器進(jìn)行單播通訊,這樣可以避開NetBIOS協(xié)議使用廣播時(shí)的這兩大缺陷。
可能大家覺得,既然是已經(jīng)被淘汰的技術(shù)了,為什么還需要講解呢?Netbios名字解析方式雖然已經(jīng)不在作為主要的名字解析方式了,但是在非活動(dòng)目錄環(huán)境中,仍然在廣泛的使用。Netbios名字解析所帶來的廣播網(wǎng)絡(luò)流量是非常大的,而WINS服務(wù)器最大的作用就是可以消除Netbios名字解析方式所帶來的大量廣播流量,并且它部署簡單方便,是我最喜歡的服務(wù)器之一。
WINS服務(wù)器工作方式
WINS協(xié)議采用UDP/TCP 42端口進(jìn)行通訊:WINS服務(wù)器偵聽UDP/TCP 42端口,客戶端計(jì)算機(jī)連接WINS服務(wù)器的這兩個(gè)端口進(jìn)行名字服務(wù)通訊。其中UDP 42端口用于答復(fù)客戶端計(jì)算機(jī)的名字解析請(qǐng)求,而TCP 42端口用于WINS數(shù)據(jù)庫復(fù)制。
對(duì)于WINS服務(wù)器而言,它的主要功能有名字注冊(cè)、名字刷新、名字注銷和名字解析這四方面,它們的工作方式分別為:
名字注冊(cè)
和DNS服務(wù)器一樣,你需要配置客戶端計(jì)算機(jī)使用此WINS服務(wù)器(你同樣需要配置WINS服務(wù)器使用自己的WINS服務(wù))。當(dāng)WINS客戶端計(jì)算機(jī)啟動(dòng)時(shí),會(huì)在配置使用的WINS服務(wù)器中注冊(cè)自己的Netbios名字和對(duì)應(yīng)的IP地址、服務(wù)類型。如果WINS服務(wù)器正常運(yùn)行并且此Netbios名字沒有被其他WINS客戶端注冊(cè),則WINS服務(wù)器向WINS客戶端計(jì)算機(jī)返回一個(gè)成功注冊(cè)的消息,其中包括此名字注冊(cè)的生存時(shí)間(TTL)。
如果在WINS服務(wù)器上此Netbios名字已被其他WINS客戶端注冊(cè),則WINS服務(wù)器向注冊(cè)此名字的現(xiàn)有WINS客戶端按照500毫秒的間隔發(fā)起三次名字解析請(qǐng)求,如果現(xiàn)有WINS客戶端向WINS服務(wù)器成功進(jìn)行回復(fù),則WINS服務(wù)器向請(qǐng)求注冊(cè)此名字的WINS客戶端回復(fù)拒絕注冊(cè)消息;如果現(xiàn)有WINS客戶端沒有向WINS服務(wù)器進(jìn)行回復(fù),則WINS服務(wù)器向請(qǐng)求注冊(cè)此名字的WINS客戶端回復(fù)成功注冊(cè)消息。
如果WINS服務(wù)器不在線,則WINS客戶端向配置的主WINS服務(wù)器和備份WINS服務(wù)器各發(fā)起三次名字注冊(cè)請(qǐng)求,如果均未收到WINS服務(wù)器的回復(fù),則WINS客戶端發(fā)送本地廣播來注冊(cè)自己的Netbios名字。
名字刷新
WINS客戶端必須在WINS服務(wù)器定義的生存時(shí)間前對(duì)自己的名字進(jìn)行刷新,生存時(shí)間定義了WINS服務(wù)器將此Netbios名字作為活動(dòng)記錄存儲(chǔ)在WINS數(shù)據(jù)庫中的時(shí)間。名字刷新消息中包含了客戶端請(qǐng)求進(jìn)行刷新的IP地址和Netbios名字,WINS服務(wù)器以包含新生存時(shí)間的名字刷新響應(yīng)消息進(jìn)行回復(fù)。當(dāng)WINS客戶端刷新它的名字時(shí),執(zhí)行以下步驟:
1、當(dāng)生存時(shí)間已經(jīng)過了一半時(shí),WINS客戶端向自己的主WINS服務(wù)器發(fā)送名字刷新請(qǐng)求;
2、如果主WINS服務(wù)器沒有進(jìn)行響應(yīng),則WINS客戶端將在1小時(shí)內(nèi)每隔10分鐘向主WINS服務(wù)器發(fā)送名字刷新請(qǐng)求;如果主WINS服務(wù)器仍然沒有進(jìn)行響應(yīng),則WINS客戶端向備份WINS服務(wù)器發(fā)起名字刷新請(qǐng)求;
3、如果備份WINS服務(wù)器沒有進(jìn)行響應(yīng),則WINS客戶端將在1小時(shí)內(nèi)每隔10分鐘向備份WINS服務(wù)器發(fā)送名字刷新請(qǐng)求;如果備份WINS服務(wù)器仍然沒有進(jìn)行響應(yīng),則WINS客戶端向又向主WINS服務(wù)器發(fā)起名字刷新請(qǐng)求。WINS客戶端重復(fù)這種行為直到生存時(shí)間結(jié)束;
4、如果WINS客戶端成功刷新它的名字,則復(fù)位WINS服務(wù)器上的更新間隔;
5、如果WINS客戶端不能在主WINS服務(wù)器或者備份WINS服務(wù)器上刷新名字,則名字被釋放。
名字釋放
如果WINS客戶端正常關(guān)機(jī),它將向WINS服務(wù)器對(duì)自己注冊(cè)的每個(gè)Netbios名字發(fā)送名字釋放請(qǐng)求,其中包含自己的IP地址和需要釋放的Netbios名字。當(dāng)收到名字釋放請(qǐng)求后,WINS服務(wù)器檢查自己的數(shù)據(jù)庫是否具有匹配的名字注冊(cè),如果WINS服務(wù)器遇到數(shù)據(jù)庫錯(cuò)誤或者此Netbios名字注冊(cè)到不同的IP地址上,則向WINS客戶端發(fā)起拒絕名字釋放消息,否則向WINS客戶端發(fā)起接受名字釋放消息,在數(shù)據(jù)庫中將指定的Netbios名字標(biāo)記為不活動(dòng)的。
如果WINS客戶端非正常關(guān)閉,則不會(huì)向WINS服務(wù)器發(fā)送名字釋放請(qǐng)求,WINS服務(wù)器會(huì)保留此名字直到名字注冊(cè)的生存時(shí)間過期。
名字解析
對(duì)于NetBIOS名字的解析,默認(rèn)過程如下:
檢查本地的NetBIOS名字緩存;
(由節(jié)點(diǎn)類型決定)查詢WINS服務(wù)器; 如果主WINS服務(wù)器不可用,則WINS客戶端在向主WINS服務(wù)器發(fā)送三次解析請(qǐng)求后,切換到備份WINS服務(wù)器;
(由節(jié)點(diǎn)類型決定)NetBIOS廣播查詢本地網(wǎng)絡(luò);
查詢Lmhosts文件,如果配置為這樣做,此文件位于%systemroot%System32DriversEtc目錄下。
是否查詢WINS服務(wù)器和執(zhí)行Netbios廣播查詢以及它們之間的優(yōu)先級(jí),會(huì)根據(jù)Windows網(wǎng)絡(luò)客戶的節(jié)點(diǎn)類型的不同而不同。對(duì)于每個(gè)Windows網(wǎng)絡(luò)客戶,它的節(jié)點(diǎn)類型決定了它處理Netbios名字解析時(shí)的方式,你可以運(yùn)行ipconfig/all來觀看自己的節(jié)點(diǎn)類型,如下圖所示中的Node Type:
節(jié)點(diǎn)類型具有以下四種:
0x1 Broadcast(B節(jié)點(diǎn)) : 只使用NetBIOS廣播查詢本地網(wǎng)絡(luò),不查詢WINS服務(wù)器;
0x2 Peer-Peer (P節(jié)點(diǎn)):只向WINS服務(wù)器發(fā)起查詢請(qǐng)求,不使用Netbios廣播;
0x4 Mixed (M節(jié)點(diǎn)):先使用Netbios廣播,解析失敗后再向WINS服務(wù)器發(fā)起查詢;
0x8 Hybird (H節(jié)點(diǎn)):先向WINS服務(wù)器發(fā)起查詢,解析失敗后再發(fā)起Netbios廣播解析;
默認(rèn)情況下客戶端計(jì)算機(jī)配置為B節(jié)點(diǎn),在配置WINS服務(wù)器后,會(huì)將節(jié)點(diǎn)類型修改為H節(jié)點(diǎn)。你可以手動(dòng)修改節(jié)點(diǎn)類型:
對(duì)于自動(dòng)獲取IP地址的客戶端計(jì)算機(jī),你可以通過修改DHCP服務(wù)器中的046項(xiàng) WINS/NBT節(jié)點(diǎn)類型來進(jìn)行修改;
而對(duì)于具有靜態(tài)IP地址的客戶端計(jì)算機(jī),你可以通過在注冊(cè)表中修改
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetBTParametersDhcpNodeType
DWORD鍵值的值來進(jìn)行。
數(shù)據(jù)庫復(fù)制
單個(gè)WINS服務(wù)器可以為10000個(gè)客戶端計(jì)算機(jī)提供Netbios名字服務(wù),不過從負(fù)載均衡和容錯(cuò)的角度,微軟建議你將WINS服務(wù)器成對(duì)使用。此時(shí),你需要配置WINS服務(wù)器之間的復(fù)制。
WINS服務(wù)器具有兩種復(fù)制伙伴模式:推和拉。當(dāng)WINS服務(wù)器配置為推模式時(shí),當(dāng)WINS數(shù)據(jù)庫產(chǎn)生更新時(shí),會(huì)通知自己的配置為拉伙伴模式的WINS服務(wù)器;而當(dāng)WINS服務(wù)器配置為拉模式時(shí),會(huì)定期聯(lián)系配置為推伙伴模式的WINS服務(wù)器,比較WINS數(shù)據(jù)庫版本號(hào)從而決定是否需要進(jìn)行復(fù)制。
推模式和拉模式的區(qū)別在于:推伙伴模式下的WINS服務(wù)器會(huì)在數(shù)據(jù)庫修改時(shí)通知自己的復(fù)制伙伴,而拉伙伴模式下的WINS服務(wù)器會(huì)在計(jì)劃的時(shí)間周期聯(lián)系自己的復(fù)制伙伴。所以,當(dāng)兩臺(tái)WINS服務(wù)器之間具有較為快速的鏈路連接時(shí),應(yīng)使用推模式;反之則使用拉模式。
聯(lián)系客服