玩轉「網路上的芳鄰」之WINS解析(一)

2021-08-22 06:23:01 字數 4555 閱讀 1422

大家都知道,為了便於使用者與網路中的其它使用者共享資源,微軟的windows系統在安裝、配置好基本的網絡卡、網路協議和服務後,都會在桌面上自動生成乙個「網路上的芳鄰」快捷方式。使用者如果要檢視網路上另一計算機的共享資源,只需在「網路上的芳鄰」上一步步進行簡單的雙擊操作,即可找到並開啟相應主機上的共享檔案。但就是這樣乙個看似非常簡單的過程,其中就涉及到許多服務程式或協議的複雜工作,其中就包括:名稱註冊、名稱解析、tcp/ip協議、netbios協議、wins和dns等。在整個微軟windows名稱解析過程中,windows 2000以前的版本與以後的版所採取的方式是不同的(早期版本主要是通過wins服務解析的,而windows 2000及以後版本主要是通過dns服務進行解析的),為了清楚地說明各種解析原理,所以把整個windows系統的名稱解析原理分兩篇來介紹。本篇僅介紹早期的windows 95/98系統所採取的wins名稱解析原理。下面我們對這樣乙個過程的工作原理進行介紹,首先要認識的是與「網路上的芳鄰」工作原理息息相關的netbios。

一、netbios基礎

netbios介面最先是由sytecinc.(目前的hughes lan systems)在2023年為國際商業機器公司(ibm)開發的,netbios在一開始就從來沒有考慮公升級到用於大型網路。

微軟公司80年代後期開始把netbios作為一種高階程式設計介面用於引入的將ibm pc聯網的ms-dos程式。為了基於為那些計算機提供的聯網硬體和軟體來建立lan,微軟公司和其他**商對使用netbios介面設計聯網系統元件和程式進行了標準化。該介面使用長度限制在16個字元的名稱來標識每個網路資源。

netbios命名空間是單層的,這意味著在乙個網路內只能使用一次該名稱。這些名稱是在計算機啟動、服務開始或使用者登入時動態註冊的。netbios名稱可以註冊為唯一名稱或組名。唯一名稱有乙個與名稱相關聯的位址。組名有多個對映到名稱上的位址。

在windows 2000之前,所有基於ms-dos和windows的作業系統都需要netbios命名介面來支援網路功能。在windows 2000發布之後,計算機的網路連線就不再需要對netbios命名介面的支援了。例如,使用windows 2000和其他不需要netbios名稱的作業系統(如某些版本的unix),可以建立並執行乙個由支援使用「網域名稱系統(dns)」的主機和程式組成的環境。但是,多數網路仍然需要將要求netbios網路名稱的老的作業系統與執行windows 2000的計算機整合在一起。由於這個原因, windows 2000繼續為netbios名稱提供預設支援,以方便與需要它們的老的作業系統的互動操作。這種支援主要是以兩種方式提供的:

·預設情況下,所有使用tcp/ip的windows 2000計算機,都預設對註冊和解析netbios名稱提供客戶端支援。這種支援是通過tcp/ip上的netbios(netbt)來提供的,而且需要時可以手動禁用。

·windows 2000 server通過windows網際名稱服務(wins)繼續提供伺服器端支援。wins可以用來有效地管理基於netbt的網路。

乙個netbios名稱包含16個位元組,每個名稱的前15個位元組是使用者指定的,它分別用於表示:

·標識與網路上單個使用者或計算機相關聯的某個資源的唯一名稱。

·標識與網路上的一組使用者或計算機相關聯的某個資源的組名。

在較早版本的windows nt中,所有網路服務都只使用netbios名稱註冊,而對於windows 2000,netlogon服務及其他可能的網路服務都將在dns中註冊。而且以前的網路命令列應用程式(如各種net命令)也使用netbios名稱來訪問這些服務。其他基於netbios的計算機(如windows for workgroups、lan manager和lan manager for unix主機)也使用netbios名稱。

netbios定義了兩個元件:

·會話層介面

·會話管理和資料傳輸協議

這裡使用的協議可以是用來執行netbios介面命令集的實際傳輸和通訊的任何網路連線協議及其相關軟體。tcp/ip和netbeui協議軟體就是兩個例子,大多數較早版本的windows作業系統都有這兩個協議。

要實現在「網路上的芳鄰」上進行正常計算機及檔案瀏覽,首先需要客戶機把自己的名字在網上註冊,然後通過特定的名稱解析方法把所註冊的名稱與對應的ip位址進行對應,有了這兩步,windows系統才可以通過瀏覽服務在網路上的芳鄰上進行瀏覽。本篇要介紹的是微軟的windows 2000以前版本(包括windows 95/98/nt 4.0/me等)的名稱註冊和名稱解析原理。首先來了解一下在這些系統中的名稱註冊方法。

二、名稱註冊

在windows 2000以前的windows系統版本中,名稱註冊就是客戶端計算機請求在網路上使用netbios名稱的過程。該請求可以是請求對乙個唯一(專有)名稱,也可以是請求乙個組(共享)名,netbios應用程式還可以註冊乙個或多個名稱。圖1所示是wins客戶(host-c)直接向它配置的wins伺服器wins-a傳送乙個「名稱註冊請求」過程圖。

圖1 通過向host-c傳送肯定或否定的名稱註冊答覆,wins-a可以接受或拒絕名稱註冊請求。wins-a的操作取決於以下幾個因素:

(1) wins-a上的伺服器資料庫中是否已經有該名稱

(2). 該請求是請求唯一名稱還是組名項

如果資料庫中不存在該名稱,那麼它就會作為乙個新註冊被接受,並進行以下兩步:

·使用新的版本id輸入host-c的名稱,並給乙個時間戳,標誌wins伺服器的所有者id。

時間戳的計算依據是將wins伺服器上設定的「更新間隔」值(預設為6天)加到伺服器的當前日期和時間上。

·將給host-c發回乙個肯定的註冊響應,其中包含的有效時間(ttl)值等於wins-a上記錄該名稱的時間戳。

名稱註冊又分「相同ip位址的名稱」和「不同ip位址的註冊名稱」兩類,下面分別予以介紹。

1. 相同ip位址的註冊名稱

如果名稱host-c已經輸入到資料庫中,而且名稱ip位址與請求的相同,則所採取的操作取決於現有名稱的狀態和所有權。

·如果該項標誌為「活動」,並且該項為伺服器wins-a所有,那麼該伺服器就會更新該記錄的時間戳,並給客戶返回乙個肯定的響應。

·如果該項標記為「已釋放」或「已邏輯刪除」,或者該項為另一台wins伺服器所有,則該註冊將被作為新的註冊對待。時間戳、版本id和所有權都將被更新,並返回乙個肯定的響應。

2. 不同ip位址的註冊名稱

如果wins資料庫中已經有該名稱,但ip位址不同,則wins伺服器會避免重複的名稱。如果該資料庫項處於被釋放或邏輯刪除狀態,則wins伺服器可以分配該名稱。

但是,如果該項處於活動狀態,具有該名稱的節點就會被質詢,以確定它是否仍在網路中。這種情況下,wins伺服器(wins-a)可以執行乙個名稱質詢,並採取以下步驟:

·wins-a向請求客戶(host-c)傳送乙個等待認可(wack)響應,指定ttl域中的某個時間,在該時間內客戶應該等待響應。

·然後,wins-a將向當前在伺服器資料庫中註冊該名稱的節點傳送乙個名稱查詢請求。

·如果該節點仍然存在,將給wins-a返回乙個肯定的響應。

·接下來,wins-a會向請求客戶(host-c)傳送乙個否定的名稱註冊響應,拒絕該名稱註冊。

·如果wins-a傳送的第乙個質詢沒有收到肯定的響應,則隨後會進行兩次名稱查詢。

如果三次嘗試都沒有響應,則質詢過程完成,並向請求客戶(host-c)返回乙個肯定的註冊響應,而且伺服器中更新的名稱將用於新的客戶註冊

【注意】:

·與啟用wins的客戶不同,非wins客戶(如netbtb節點客戶)不能直接與wins伺服器聯絡,非wins客戶必須先註冊,然後通過傳送和答覆本地網內的廣播名稱查詢,不斷地保護其註冊名稱。

·netbios名稱是通過「windows網際名稱服務(wins)」來註冊的,並且在計算機正常關機時通常要釋放該名稱。如果計算機不是正常關機,或者計算機在關機時不能與wins伺服器聯絡,則可以使用nbtstat命令在wins中重新整理該計算機的本地名稱。這對於在網路中不同位置之間移動的可移動或可攜式計算機很有用。

3. 更新名稱

wins客戶需要通過wins伺服器定期更新其netbios名稱註冊。wins伺服器處理名稱更新請求與新名稱註冊類似。當客戶第一次通過wins伺服器註冊時,wins伺服器將返回帶有「生存時間(ttl)」值的訊息,該訊息表明客戶註冊何時到期或需要更新。如果到時還不更新,則名稱註冊將在wins伺服器上到期,最終,系統會將名稱項從wins資料庫中刪除。然而,靜態wins名稱項不會到期,因此,不需要在wins伺服器資料庫中更新。

wins資料庫中項的預設「更新間隔」為六天。因為在過了50%的ttl時間值時,wins客戶將嘗試更新註冊,所以大多數wins客戶每隔三天更新一次。在此時間間隔結束之前必須重新整理名稱,否則系統會將其釋放。wins客戶通過將名稱重新整理請求傳送到wins伺服器來重新整理其名稱,如圖2所示。

圖2 客戶(host-c)負責在「更新間隔」到期之前重新整理自己的名稱。如果wins伺服器(wins-a)沒有響應重新整理請求,客戶(host-c)可以增加名稱重新整理頻率。

【要點】:

·在大多數情況下,預設值就是相應的「更新間隔」。無論何時使用多個wins伺服器,都應該為所有伺服器複製夥伴設定相同的「更新間隔」。

·調整 「

更新間隔

」 不當會影響系統和網路的效能。

未完,待續

玩轉「網路上的芳鄰」之DNS解析(二)

接上篇 四 dns名稱更新 在預設情況下,執行windows 2000而且靜態配置tcp ip的計算機嘗試為由其安裝的網路連線所配置和使用的ip位址動態註冊主機 a 和指標 ptr 資源記錄 rr 在預設情況下,所有計算機都在其 完整計算機名 的基礎上註冊記錄。下列任何原因或事件都可導致傳送動態更新...

玩轉「網路上的芳鄰」之DNS解析(二)

接上篇 四 dns名稱更新 在預設情況下,執行 windows 2000 而且靜態配置 tcp ip 的計算機嘗試為由其安裝的網路連線所配置和使用的 ip位址動態註冊主機 a 和指標 ptr 資源記錄 rr 在預設情況下,所有計算機都在其 完整計算機名 的基礎上註冊記錄。下列任何原因或事件都可導致傳...

玩轉「網路上的芳鄰」之網路配置 一

在前面的兩篇中,我們分析了與 windows 系統 網路上的芳鄰 相關的 名稱註冊 和 名稱解析 工作原理,相信各位對微軟不同時期的 windows 網路上的芳鄰工作原理已有了比較深的了解。本篇要繼續向大家介紹,在各種網路環境中,各 windows 系統該如何配置,才能使網路中的所有 windows...