有關網上鄰居的問題
問的人一直比較多
在理解上存在的誤區也普遍較為嚴重
鑒於Microsoft的NETBIOS文檔不是很細致
我四處收集了一些相關資料加上自己的實踐經驗寫了這個系列
希望能對大家有所幫助
本來想為了增加可讀性
把這個系列寫成問答的形式
不過一時之間腦袋裡也編不出這麼多的問題
還是按部就班先感性的對微軟的浏覽服務作一大致介紹
然後再深入剖析NETBIOS的具體工作機理
大家要是有什麼問題
可以提出來我們一起討論
***微軟網絡浏覽過程簡介*** 在
Windows NT系統管理技術內幕
一書中
講到了一個非常具有代表性的問題
我把它摘抄了下來
問
什麼情況下會導致在網絡鄰居中計算機能看見卻無法訪問或可以訪問卻看不見?請選擇最佳答案
A
你的網絡存在物理問題
比如網線
B
作為域主浏覽器的Windows NTserver的浏覽服務壞了
C
Windows NTserver網卡有問題
D
你的網絡沒有問題
用戶描述的是正常的微軟浏覽現象
正確答案
書上的解釋:D
微軟的網絡浏覽可能在使用中出現
中斷
而實際上它們並沒有中斷
這種誤解是由於用戶對微軟網絡浏覽的處理過程不熟悉造成的
就象同學們經常在抱怨的
為什麼別人的網上鄰居可以用
我的卻不行?
為什麼有時候可以浏覽
有時候卻無法浏覽網絡?
解鈴還須系鈴人
讓我們一起去看看微軟的網絡浏覽到底是如何實現的
鑒於大家可能對NT的
域
概念還不甚了解
出現浏覽故障的也多為
的機子
我將以
的
工作組模式
為大家講解
什麼是浏覽列表(Browsing List) 在微軟網絡中
用戶可以在浏覽列表裡看到整個網絡(何指?子網還是廣播域?大家可以考慮考慮)上所有的計算機
當你通過網上鄰居窗口打開整個網絡時
你將看到一個工作組列表
再打開某個工作組
你將看到裡面的計算機列表(也可在 DOS方式下用net view /domain:workgroupname命令得到)
這就是我們所說的 Browsing List
工作組從本質上說就是共享一個浏覽列表的一組計算機
所有的工作組之間都是對等的
沒有規定不可以讓所有的計算機同處於一個工作組中
浏覽列表在哪裡 有人說
網上鄰居裡的計算機列表是廣播查詢得來的
可有人舉反例說
我的同學都關機了
可我還是能在網上鄰居裡看到它
應該是從HUB或交換機之類較為固定的設備的緩存中取得的
其實他們都只說對了一個方面
把他們二人的說法結合起來就是正確答案了
浏覽列表是通過廣播查詢浏覽主控服務器
由浏覽主控服務器提供的
浏覽主控服務器又是什麼 浏覽主控服務器是工作組中的一台最為重要的計算機
它負責維護本工作組中的浏覽列表及指定其他工作組的主控服務器列表
為本工作組的其他計算機和其他來訪本工作組的計算機提供浏覽服務
每個工作組都為會每個傳輸協議選擇一個浏覽主控服務器
而我們經常遇到的無法浏覽網絡的錯誤大多是因為你所處的工作組沒有浏覽主控服務器而造成的
你可以在一個工作組中用NBTSTAT
a computername 命令找出使用NBT協議的浏覽主控服務器
它的標識是含有\\_MSBROWSE_ 名字段
浏覽主控服務器是如何指定的 缺省情況下
win
工作組中的浏覽主控服務器是該工作組中第一台啟用文件及打印機共享功能的計算機
也允許手工將一台win計算機配置為浏覽主控服務器(方法會在後面講述網絡配置時具體介紹
但由於浏覽主控服務器需要維護動態浏覽列表
性能會受影響)
如果一個工作組中有多台計算機配置了這個選項
或是當前的浏覽主控服務器關閉了系統
又沒有其他計算機啟用主控設置時
就要進行主控浏覽器的選舉
如何通過浏覽器選舉產生浏覽主控服務器 關於浏覽器的選舉報文
不太好抓包
我就只好按書上的東西來講述了
其實過程很簡單
首先由一台計算機發送一個選舉臨界報文
該報文包含了來自發送計算機的信息(操作系統
版本及NET名等)
選舉報文向網絡中廣播
工作組中的每一台計算機都會用自身信息與選舉報文進行優先級比較
主要是操作系統起主要作用
記得好像是NT Server>NT Workstation>Win
>WFWG
反正到最後是那個自身條件最好的成為新的浏覽主控服務器
整個網絡浏覽的過程是怎樣的 當一台win
進入網絡時
如果它帶有服務器服務(啟用了文件及打印機共享)會向網絡廣播宣告自己的存在
而浏覽主控服務器會取得這個宣告並將它放入自己維護的浏覽列表中
而沒有在相應協議上綁定文件及打印機共享的計算機則不會宣告
因而也就不會出現在網絡鄰居裡了
當客戶計算機想獲得需要的網絡資源列表時
首先會廣播發出浏覽請求
浏覽主控服務器收到請求後
如果請求的是本組的浏覽列表
則直接將客戶所需的資源列表發回
如果請求的是其它工作組的浏覽列表
浏覽主控服務器會根據本身Browsing List中的記錄找到相應工作組的主控浏覽器返回給用戶
用戶可從那裡得到它想要的浏覽列表
至於如何去和另一台計算機共享交換資源
就不是我們這裡要討論的問題了
明白了網絡浏覽的原理
下面我給大家講一個有用的應用
現在很多同學出於安全的考慮都不太歡迎陌生人通過網上鄰居訪問自己的機子
可有時下部電影又需要給認識的同學共享出來
因而還不能刪除文件及打印機共享服務
怎麼辦?有些人給共享名加個$
以達到隱藏的效果
可這用DOS下的net share是可被看到的
有些人給共享加上密碼
可聽說這也是有辦法破解的
而且很容易激起
黑客同志
的好奇心
有沒有辦法將自己的機器在網絡鄰居裡隱藏起來呢?而對於認識的同學可以讓他用\\IP 來訪問
想對了
關鍵就是要阻止自己的機器向網絡中去宣告自己
而且我知道我們其中的一些
人已經將此變成了現實
至於方法嘛
就不要來問我了
注
因為有關win
浏覽服務的資料很少
涉及的書籍也多為以NT的
域
模型進行介紹
因而我只能根據自己的理解結合netxray的實踐來測試
細節部分難 免有錯
歡迎大家指正
在我的網上鄰居裡為什麼有些機子訪問不了 如果微軟的網上鄰居真能做到所見即所得
相信抱怨它的人不會象現在這麼多
可通過前面對浏覽服務的介紹
大家已經知道這是不可能的
因為浏覽列表的獲得不是通過訪問其中每一台機子得到的
很多時候網絡中的計算機並不能正確更新浏覽列表
當一台計算機正常關機時
它會向網絡發出廣播宣告
使浏覽主控服務器及時將它從浏覽列表中刪除
而非正常關機後
浏覽列表裡仍會把該條目保持很長一段時間(NT下是
分鐘)
這就是我們仍能在網絡鄰居裡看到它的原因
而
的穩定性是眾所周知的
在還沒來得及關機前就已經崩潰了^
^
SMB(Server Message Block)協議在NT/
中用來作文件共享
在NT中
SMB運行於NBT(NetBIOS over TCP/IP)上
使用
(UDP)
(TCP)端口
在
中
SMB可以直接運行在tcp/ip上
而沒有額外的NBT層
使用TCP
端口
因此在
上應該比NT稍微變化多一些
可以在
網絡連接/屬性/TCPIP協議/屬性/高級/WINS中設置啟用或者禁用NBT(NetBIOS over TCP/IP)
當
使用網絡共享的時候
就面臨著選擇
或者
端口了
下面的情況確定會話使用的端口
如果客戶端啟用了NBT
那麼連接的時候將同時訪問
和
端口
如果從
端口得到回應
那麼客戶端將發送RST到
端口
終止這個端口的連接
接著就從
端口進行SMB的會話了
如果沒有從
端口而是從
得到回應
那麼就從
端口進行會話
如果沒有得到任何回應
那麼SMB會話失敗
如果客戶端禁用了NBT
他就將只從
端口進行連接
當然如果服務器(開共享端)沒有
端口進行SMB會話的話
那麼就會訪問失敗了
所以禁用
端口後
對訪問NT機器的共享會失敗
如果服務器端啟用NBT
那麼就同時監聽UDP
端口和TCP
如果禁用NBT
那麼就只監聽
端口了
所以對於
來說
共享問題就不僅僅是
端口
端口同樣能夠完成
The NULL session關於空會話 NULL會話(空會話)使用端口也同樣遵循上面的規則
NULL會話是同服務器建立的無信任支持的會話
一個會話包含用戶的認證信息
而NULL會話是沒有用戶的認證信息
也就好比是一個匿名的一樣
沒有認證就不可能為系統建立安全通道
而建立安全通道也是雙重的
第一
就是建立身份標志
第二就是建立一個臨時會話密匙
雙方才能用這個會話進行加密數據交換(比如RPC和COM的認證等級是PKT_PRIVACY)
不管是經過NTLM還是經過Kerberos認證的票據
終究是為會話創建一個包含用戶信息的令牌
(這段來自Joe Finamore)
根據WIN
的訪問控制模型
對於空會話同樣需要提供一個令牌
但是空會話由於是沒有經過認證的會話
所以令牌中不包含用戶信息
因此
建立會話雙方沒有密匙的交換
這也不能讓系統間發送加密信息
這並不表示空會話的令牌中不包含SID
對於一個空會話
LSA提供的令牌的SID是S
這就是空會話建立的SID
用戶名是ANONYMOUS LOGON
這個用戶名是可以在用戶列表中看到的
但是是不能在SAM數據庫中找到
屬於系統內置的帳號
(關於這部分對NULL SESSION的分析
可以參照
《NULL Sessions InNT/
》)
NULL會話幾乎成為了微軟自己安置的後門
但是微軟為什麼要來設置這樣一個
後門
呢?我也一直在想這個問題
如果NULL會話沒有什麼重要的用途
那麼微軟也應該不會來設置這樣一個東西
好不容易才在微軟上找到這個
當在多域環境中
要在多域中建立信任關系
首先需要找到域中的PDC
From:http://tw.wingwit.com/Article/Network/201311/29872.html