文章編號: 150800 - 上次校閱: 2004年9月22日 - 版次: 2.2

以 TCP/IP 與 LMHOSTS 檔進行網域瀏覽

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
本文曾發行於 CHT150800

在此頁中

全部展開 | 全部摺疊

結論

在 TCP/IP 網路中包含路由器與多重區段,一般我們會建議您實作 WINS 來進行名稱解析與瀏覽支援。然而,只是在所有電腦上使用 LMHOSTS 檔,就有可能得到完整的網域瀏覽結果,雖然有一些限制,但可作為 WINS 的替代方案,本文將告訴您這些限制。

不論是哪一種情況,有一點必須要注意,只有當用戶端是使用相當於網域名稱的工作群組名稱時 (工作群組名稱 = 網域名稱),此用戶端才會參與網域瀏覽作業。Windows NT 電腦也可以「加入」網域以取得此功能,而不作為工作群組的一員。

這種 LMHOSTS 式的網域瀏覽 (透過路由器) 功能尚未經過 Microsoft 的正式記載或測試,在未來的用戶端與伺服器作業系統版本中也可能不會有此功能。請斟酌您的需求來使用此資訊。

其他相關資訊

「瀏覽」在 Microsoft 網路中應該被當成由一或多部電腦所提供的分散式服務。每一部電腦都可能擔任數種瀏覽器角色;然而,本文要將重點放在最重要的兩個角色:

  • 區段主瀏覽器 (SegMB):任何 Windows NT 伺服器、工作站或網域控制站都可能是區段主瀏覽器。它也可以是 Windows 95 或 Windows for Workgroups 3.11 電腦。區段主瀏覽器負責維護其本機區段上的電腦瀏覽清單,將該清單轉送給網域主瀏覽器,並向網域主瀏覽器要求網域瀏覽清單。SegMB 會合併網域清單與它的本機清單,並提供該合併清單給任何要求此清單的區域用戶端。
  • 網域主瀏覽器 (DomMB):這是 Windows NT 網域主控制站 (PDC)。它負責維護其本機區段上的瀏覽清單 (例如 SegMB),以及收集來自其他 (遠端) 具有相同網域名稱 (或工作群組名稱 = 網域名稱) 之區段主瀏覽器的瀏覽清單。DomMB 會合併它所收集的清單與其本機清單,然後將此合併的清單轉散佈回所有的遠端 SegMB。因此它是維護網域層次之瀏覽清單的集中地。
注意 :Windows for Workgroups 瀏覽器需要使用更新的檔案。

如需詳細資訊,請參閱下面的「Microsoft 知識庫」文件:
102878? (http://support.microsoft.com/kb/102878/ZH-TW/ ) 瀏覽器作業資訊
為了讓此分散式瀏覽服務能運作,SegMB 需要一個判斷到底誰是 DomMB 的方法。SegMB 可以找出 NetBIOS 名稱是註冊為「Domain<1b>」的電腦以作為判斷方法,因為只有 PDC (如上所述,這也就是 DomMB) 才會註冊此名稱。

如需詳細資訊,請參閱下面的 Microsoft 知識庫文件:
119495? (http://support.microsoft.com/kb/119495/ZH-TW/ ) 登錄於 WINS 服務的名稱清單

以 WINS 進行網域瀏覽

在 WINS 的環境中,SegMB 會查詢 WINS 來判斷註冊 Domain<1b> 的電腦是哪一個。在此情況下,WINS 是作為此資訊的便利中央資源。使用 WINS 來協助瀏覽作業還有另一個優點:多重網域的瀏覽。

以 WINS 進行多重網域瀏覽

設定定期查詢 WINS 的 PDC 會要求取得在資料庫中有註冊之所有網域的清單 (您可以經由資料庫中的「Domain<1b>」註冊項目以及註冊此網域之 PDC 的關聯 IP 位址來辨識網域)。PDC 會將此清單和它自己的網域瀏覽清單結合在一起,因而得到其網域中的完整電腦清單,而且是一份包含 WAN 中所有其他網域的清單。然後 PDC 會和它的 SegMB 互動,將此完整的清單提供給這些 SegMB。當您使用 [檔案管理員] 或 [網路上的芳鄰] 來瀏覽網路時就可以看見這個效果。

注意 :這是 WINS 涉入瀏覽作業的極限了。WINS 不會涉入瀏覽器選舉程序,也不會協助用戶端判斷哪一個是它的本機區段主瀏覽器,也不會協助 DomMB 判斷哪些是 SegMB;這是在 SegMB 第一次連絡 DomMB 的過程中完成的。

在某些網路中使用 WINS 可能不是很好的方法;您只能隨案例的不同來做判斷。您也可以使用 LMHOSTS 或 DNS 來解析電腦名稱;然而,進行網域瀏覽以及其他網域管理問題時 (例如資料庫複寫與網域安全通道) 都需要使用 LMHOSTS。

以 LMHOSTS 進行網域瀏覽

如果不使用 WINS,您就需要有特殊的 LMHOSTS 項目,這些項目會指出所有網域控制站是哪些。記錄這種項目的協定語法如下:
199.199.199.1  ComputerName   #PRE  #DOM:DomainName
當電腦開機時,它會讀取這些項目並將這些項目永久儲存在 NetBIOS 名稱快取中直到電腦關機為止 (因此,如果隨後要有效的進行 LMHOSTS 剖析,這些項目最好是保存在 LMHOSTS 檔中)。網域中的所有電腦都需要有這些項目的其中一個代表每個網域控制站的項目 (在本機網域中),以及一個代表 PDC 的項目。請注意,#PRE #DOM 的順序不可變動,而且必須是大寫字。其他名稱沒有大小寫之分。

Windows NT 區段主瀏覽器

擁有上述項目對 Windows NT 電腦而言已經足夠:在變成區段主瀏覽器時,Windows NT 電腦會將查詢 (使用 NetGetDcName API) 傳送至所有具有 #DOM:<localdomain> 名稱的 LMHOSTS 項目,以判斷哪一個是 PDC。只有 PDC 會回應。接著 Windows NT 電腦會連絡 PDC,向 PDC 表明它是主瀏覽器,然後繼續進行取得網域瀏覽清單的程序。PDC 接著會連絡 Windows NT 電腦以取得其本機區段的瀏覽清單。這個程序每隔 12 至 15 分鐘就會重複執行。

Windows 95 與 Windows for Workgroups 區段主瀏覽器

這類區段主瀏覽器不會執行 NetGetDcName API,所以它們需要使用 LMHOSTS 檔中指出哪一個是 PDC 的項目。假設上述範例是網域中的 PDC,會有兩個項目供 Windows 95 或 Windows for Workgroups 用戶端使用:
199.199.199.1  controller1   #PRE  #DOM:domainname<BR/>
199.199.199.1  "domainname,,,,,\0x1b"  #PRE
第一個項目可讓 PDC 作為用戶端的登入網域控制站,第二個項目可讓用戶端瀏覽器服務能明確的找到 PDC。請記得,您可能會有多個類似第一個項目的項目 (代表多個網域控制站),但只會有一個包含 \0x1b 指示詞的項目 (以指定 PDC)。請注意,網域名稱必須加上引號,並在 \0x1b 指示詞的前面填上空格以補滿 15 個字元 (上述範例是以看得見的逗號來代表空格,然而在實際的 LMHOSTS 檔中這些逗號都必須以空格來取代)。同時請注意,將 PDC 角色移至另一部 Windows NT 伺服器 (經由升級作業) 會造成 \0x1b 項目失效。修正此問題的選用方法如下:

  • 交換控制站的 IP 位址,有效地讓 PDC 永遠使用同一個位址。您不需要在 LMHOSTS 檔中變更任何項目。
  • 變更所有用戶端上 LMHOSTS 檔中的 \0x1b IP 位址,或是變更集中散發的 LMHOSTS 檔 (如果您有設置這樣的檔案)。

NetBIOS 名稱的注意事項

每一個 NetBIOS 名稱的長度都要是 16 個字元;前面的 15 個字元可讓使用者自行定義 (或是補上空格),而第 16 個字元是保留作為辨識用途,以辨識註冊此名稱的網路服務。最常見的 NetBIOS 名稱範例是任何 Microsoft 網路用戶端的電腦名稱。當用戶端開機時,各種用戶端網路服務就會以電腦名稱加上獨特的延伸名稱來進行註冊,例如 ComputerName<00> (工作站服務) 與 ComputerName<20> (伺服器服務)。在此情況下,這兩個名稱的唯一差別就是第 16 個字元 - 此字元讓人可以個別辨識這兩個名稱。用戶端可以依據用戶端節點類型,經由廣播以及經由將資料包導向 WINS 來註冊它的所有名稱。其他公司也可能會註冊 Microsoft 沒有保留的 NetBIOS 延伸名稱。

如需詳細資訊,請參閱下列的「Microsoft 知識庫」文件:
119493? (http://support.microsoft.com/kb/119493/EN-US/ ) NetBIOS over TCP/IP Name Resolution and WINS
119495? (http://support.microsoft.com/kb/119495/ZH-TW/ ) 登錄於 WINS 服務的名稱清單

LMHOSTS 範例

假設網域名稱是「Globe」,PDC 的 NetBIOS 名稱是「Mongo」,而且還有其他各種備份網域控制站。那麼 LMHOSTS 檔看起來可能會像這樣:
199.199.199.1   "globe       \0x1b"  #PRE<BR/>
199.199.199.1   mongo      #PRE  #DOM:globe<BR/>
199.199.199.2   otherdc1   #PRE  #DOM:globe<BR/>
199.199.199.3   otherdc2   #PRE  #DOM:globe
如果要檢查您輸入的項目是否正確,請開啟指令視窗 (DOS 命令提示字元) 然後查看 NetBIOS 快取:
c:\> nbtstat -c
 NetBIOS 遠端快取名稱表

     名稱              類型       主機位址       存留期 [秒]
 ------------------------------------------------------------
 globe          <1B>  UNIQUE      199.199.199.1       -1
 MONGO          <03>  UNIQUE      199.199.199.1       -1
 MONGO          <00>  UNIQUE      199.199.199.1       -1
 MONGO          <20>  UNIQUE      199.199.199.1       -1
 OTHERDC1       <03>  UNIQUE      199.199.199.2       -1
 OTHERDC1       <00>  UNIQUE      199.199.199.2       -1
 OTHERDC1       <20>  UNIQUE      199.199.199.2       -1
 OTHERDC2       <03>  UNIQUE      199.199.199.3       -1
 OTHERDC2       <00>  UNIQUE      199.199.199.3       -1
 OTHERDC2       <20>  UNIQUE      199.199.199.3       -1
提示:如果名稱並非確實有 15 個字元,或如果沒有使用引號,或如果您是輸入正斜線「/0x1b」(相對於「\0x1b」),那麼 <1B> 項目就不會出現。

以 LMHOSTS 進行多重網域瀏覽

有一點很重要的事要注意,就是使用 LMHOSTS 瀏覽的主要缺點是無法提供自動的多重網域瀏覽功能。如先前所述,PDC 會查詢 WINS 以取得遠端網域清單並將該資訊納入其瀏覽清單中。然而,PDC 不會剖析 LMHOSTS 檔以取得相同資訊,也不會納入其他具有 #PRE (快取) 指示詞的 \0x1b 項目。事實上,如果 PDC 不查詢 WINS,您就無法經由 [檔案管理員] 或 [網路上的芳鄰] 來查看其他網域。然而,您還是可以手動瀏覽其他網域 (如果您知道網域名稱並且在 LMHOSTS 檔中有記錄特殊項目),而且您仍然有機會依靠廣播來瀏覽遠端網域。

手動方法:這是經由加入您想要瀏覽之任何遠端網域的 PDC 的 \0x1b 項目來達成。此技術適用於 Windows NT、Windows 95 與 Windows for Workgroups。這個方法會生效是因為隨後會發生下列進行遠端網域瀏覽所需的事件:

  1. 用戶端會經由 domain<1b> 名稱來判斷遠端網域的 PDC 是哪一個 (LMHOSTS 的作法是透過 \0x1b 項目;而 WINS 則是經由查詢得知)。
  2. 用戶端將 GetBackupList API 要求傳送至遠端 PDC
  3. 遠端 PDC 會以多達三個主瀏覽器的清單來回應,有可能包含它本身。
  4. 用戶端將 NetServerEnum API 要求傳送至這些主瀏覽器的其中一個
  5. 該主瀏覽器會以它的網域層次的瀏覽清單來回應。
取得此瀏覽清單的「手動方法」是經由指令視窗來進行:
如果是 WinNT 電腦: c:\net view /domain:<domainname>
如果是 Win95 與 WFW: c:\net view /workgroup:<domainname>
廣播方法:如果是具有多重網域成員身份的任何網路區段就可以使用此方法。在「共有的」區段上會有屬於每一個網域的 SegMB,而每一個 SegMB 都會經由廣播至一個特別的 NetBIOS 名稱 <01><02>_MSBROWSE_<02><01> 來宣告它的網域。此廣播封包會包含網域名稱以及宣告此網域之 SegMB 的電腦名稱。

其他網域的 SegMB (位於此共有區段上) 會傾聽此資訊,並將此資訊加入其本機瀏覽清單中。此區段上的某個 SegMB 現在會「發現」其他網域的存在,並將此發現的資訊傳送至其網域的 DomMB,以及傳送至要求取得瀏覽清單的區域用戶端 (在它的網域中)。

用戶端會要求本機網域瀏覽清單 (向本機 SegMB 要求) 並在 [檔案管理員] 或 [網路上的芳鄰] 中看見發現的網域。當用戶端選取發現的網域時,實際上是直接向那個在 <01><02>_MSBROWSE_<02><01> 封包中進行宣告的 SegMB 要求瀏覽清單。此外,因為此資訊也會傳送至用戶端的 DomMB,所以此資訊會傳播到屬於此網域的其他區段上的 SegMB。

遠端區段上的用戶端現在也可以使用此資訊,即使在這些區段上沒有遠端網域的成員,它們還是可以瀏覽遠端網域。然而,使用 LMHOSTS 檔讓此程序變得很不穩定,因為「發現的遠端 SegMB」必須仍在作用中您才能取得資訊。在 WINS 環境中,此遠端瀏覽功能就穩定多了,因為 WINS 會向您的 PDC 提供有關遠端網域的資訊。

注意事項:

  1. 如果要讓網域登入與網域瀏覽經由 LMHOSTS 來運作,所有電腦都要有 LMHOSTS 檔,而 LMHOSTS 檔要包含所有網域控制站的項目以及適當的 \0x1b 項目,此外,PDC 需要有每一個遠端區段主瀏覽器的項目 (如果尚未列出)。
  2. 最好是列出 WAN 中的每一部電腦。最有效的方法是持有一個共同的 LMHOSTS 檔,然後將此共同檔案散發給所有用戶端與伺服器;然而,您必須隨時以所有適當的 IP 位址變更更新此檔,而這將會成為系統管理上的負擔。
  3. 在瀏覽清單中看見某部電腦並不代表您可以連線至此電腦。如果此電腦是位於本機區段上,您可以經由廣播來連線;如果它是位於遠端區段上,您就需要有此部電腦的 LMHOSTS 項目。

?考

本文件是根據 Microsoft Knowledge Base 文件編號 Q150800 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q150/8/00.asp (http://support.microsoft.com/kb/150800/en-us?ln=en-us&sd=gn&fr=0)

這篇文章中的資訊適用於:
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 Developer Edition
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows 95
  • Microsoft Windows for Workgroups 3.11
  • Microsoft TCP/IP-32 for Windows for Workgroups 1.0
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Server
關鍵字:?
kbhowto kbsdkplatform kbapi kbnetbios kbnetwork 3.51 kbnetapi kbgrpdsnet 3.11 3.50 KB150800
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。