• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 談談NETBIOS與網上鄰居的瀏覽

    發表于:2007-07-02來源:作者:點擊數: 標簽:
    有關網上鄰居的問題,問的人一直比較多,在理解上存在的誤區也普遍較為嚴重。鑒于Microsoft的NETBIOS文檔不是很細致,我四處收集了一些相關資料加上自己的實踐經驗寫了這個系列,希望能對大家有所幫助. 本來想為了增加可讀性,把這個系列寫成問答的形式,不
    有關網上鄰居的問題,問的人一直比較多,在理解上存在的誤區也普遍較為嚴重。鑒于Microsoft的NETBIOS文檔不是很細致,我四處收集了一些相關資料加上自己的實踐經驗寫了這個系列,希望能對大家有所幫助.

      本來想為了增加可讀性,把這個系列寫成問答的形式,不過一時之間腦袋里也編不出這么多的問題,還是按部就班先感性的對微軟的瀏覽服務作一大致介紹,然后再深入剖析NETBIOS的具體工作機理,大家要是有什么問題,可以提出來我們一起討論.

      計劃分三部分來講,微軟網絡瀏覽過程,深入NETBIOS剖析,以及網絡設置詳述。

    ***微軟網絡瀏覽過程簡介***

      在“Windows NT系統管理技術內幕”一書中,講到了一個非常具有代表性的問題,我把它摘抄了下來:

      問:什么情況下會導致在網絡鄰居中計算機能看見卻無法訪問或可以訪問卻看不見?請選擇最佳答案: A.你的網絡存在物理問題,比如網線 B.作為域主瀏覽器的Windows NTserver的瀏覽服務壞了 C.Windows NTserver網卡有問題 D.你的網絡沒有問題,用戶描述的是正常的微軟瀏覽現象

      正確答案:D

      書上的解釋:微軟的網絡瀏覽可能在使用中出現"中斷",而實際上它們并沒有中斷, 這種誤解是由于用戶對微軟網絡瀏覽的處理過程不熟悉造成的。

      就象同學們經常在抱怨的“為什么別人的網上鄰居可以用,我的卻不行?”“為什么有時候可以瀏覽,有時候卻無法瀏覽網絡?”解鈴還須系鈴人,讓我們一起去看看微軟的網絡瀏覽到底是如何實現的。鑒于大家可能對NT的“域”概念還不甚了解,出現瀏覽故障的也多為98的機子,我將以98的“工作組模式”為大家講解。

      1.什么是瀏覽列表(Browsing List)

       在微軟網絡中,用戶可以在瀏覽列表里看到整個網絡(何指?子網還是廣播域?大家可以考慮考慮)上所有的計算機。當你通過網上鄰居窗口打開整個網絡時,你將看到一個工作組列表,再打開某個工作組,你將看到里面的計算機列表(也可在 DOS方式下用net view /domain:workgroupname命令得到),這就是我們所說的 Browsing List。工作組從本質上說就是共享一個瀏覽列表的一組計算機,所有的工作組之間都是對等的,沒有規定不可以讓所有的計算機同處于一個工作組中。

      2.瀏覽列表在哪里

       曾在木棉上看到過一場爭論,有人說:網上鄰居里的計算機列表是廣播查詢得來的??捎腥伺e反例說:我的同學都關機了,可我還是能在網上鄰居里看到它,應該是從HUB或交換機之類較為固定的設備的緩存中取得的。 其實他們都只說對了一個方面,把他們二人的說法結合起來就是正確答案了--- 瀏覽列表是通過廣播查詢瀏覽主控服務器,由瀏覽主控服務器提供的。

    3.瀏覽主控服務器又是什么

       瀏覽主控服務器是工作組中的一臺最為重要的計算機,它負責維護本工作組中的瀏覽列表及指定其他工作組的主控服務器列表,為本工作組的其他計算機和其他來訪本工作組的計算機提供瀏覽服務,每個工作組都為會每個傳輸協議選擇一個瀏覽主控服務器,而我們經常遇到的無法瀏覽網絡的錯誤大多是因為你所處的工作組沒有瀏覽主控服務器而造成的。你可以在一個工作組中用NBTSTAT -a computername 命令找出使用NBT協議的瀏覽主控服務器,它的標識是含有\\_MSBROWSE_名字段。

    4.瀏覽主控服務器是如何指定的

       缺省情況下,win98工作組中的瀏覽主控服務器是該工作組中第一臺啟用文件及打印機共享功能的計算機,也允許手工將一臺win98計算機配置為瀏覽主控服務器(方法會在后面講述網絡配置時具體介紹,但由于瀏覽主控服務器需要維護動態瀏覽列表,性能會受影響),如果一個工作組中有多臺計算機配置了這個選項,或是當前的瀏覽主控服務器關閉了系統,又沒有其他計算機啟用主控設置時,就要進行主控瀏覽器的選舉。

    5.如何通過瀏覽器選舉產生瀏覽主控服務器

       關于瀏覽器的選舉報文,不太好抓包,我就只好按書上的東西來講述了.其實過程很簡單,首先由一臺計算機發送一個選舉臨界報文,該報文包含了來自發送計算機的信息(操作系統,版本及NETBIOS名等),選舉報文向網絡中廣播,工作組中的每一臺計算機都會用自身信息與選舉報文進行優先級比較,主要是操作系統起主要作用,記得好像是NT Server>NT Workstation>Win98>WFWG,反正到最后是那個自身條件最好的成為新的瀏覽主控服務器.

    6.整個網絡瀏覽的過程是怎樣的

       當一臺win98進入網絡時,如果它帶有服務器服務(啟用了文件及打印機共享)會向網絡廣播宣告自己的存在,而瀏覽主控服務器會取得這個宣告并將它放入自己維護的瀏覽列表中;而沒有在相應協議上綁定文件及打印機共享的計算機則不會宣告,因而也就不會出現在網絡鄰居里了。當客戶計算機想獲得需要的網絡資源列表時,首先會廣播發出瀏覽請求,瀏覽主控服務器收到請求后,如果請求的是本組的瀏覽列表,則直接將客戶所需的資源列表發回;如果請求的是其它工作組的瀏覽列表,瀏覽主控服務器會根據本身Browsing List中的記錄找到相應工作組的主控瀏覽器返回給用戶,用戶可從那里得到它想要的瀏覽列表。至于如何去和另一臺計算機共享交換資源,就不是我們這里要討論的問題了。

      明白了網絡瀏覽的原理,下面我給大家講一個有用的應用,現在很多同學出于安全的考慮都不太歡迎陌生人通過網上鄰居訪問自己的機子,可有時下部電影又需要給認識的同學共享出來,因而還不能刪除文件及打印機共享服務。怎么辦?有些人給共享名加個$,以達到隱藏的效果,可這用DOS下的net share是可被看到的;有些人給共享加上密碼,可聽說這也是有辦法破解的,而且很容易激起“黑客同志”的好奇心。有沒有辦法將自己的機器在網絡鄰居里隱藏起來呢?而對于認識的同學可以讓他用\\IP 來訪問。想對了,關鍵就是要阻止自己的機器向網絡中去宣告自己,而且我知道我們其中的一些人已經將此變成了現實,至于方法嘛,就不要來問我了。

      注:因為有關win98瀏覽服務的資料很少,涉及的書籍也多為以NT的“域”模型進 行介紹,因而我只能根據自己的理解結合netxray的實踐來測試,細節部分難 免有錯,歡迎大家指正。

    7.在我的網上鄰居里為什么有些機子訪問不了

       如果微軟的網上鄰居真能做到所見即所得,相信抱怨它的人不會象現在這么多,可通過前面對瀏覽服務的介紹,大家已經知道這是不可能的,因為瀏覽列表的獲得不是通過訪問其中每一臺機子得到的,很多時候網絡中的計算機并不能正確更新瀏覽列表。當一臺計算機正常關機時,它會向網絡發出廣播宣告,使瀏覽主控服務器及時將它從瀏覽列表中刪除;而非正常關機后,瀏覽列表里仍會把該條目保持很長一段時間(NT下是45分鐘),這就是我們仍能在網絡鄰居里看到它的原因.而98的穩定性是眾所周知的 ----在還沒來得及關機前就已經崩潰了^-^

      這第一部分就先寫到這里,不知大家的感覺如何,想來都覺得是看得挺過癮,卻解決不了什么問題,比如瀏覽網絡的必要條件是什么,NetBEUI?TCP/IP?文件及打印機共享還是NETBIOS API?用\\IP瀏覽遠程主機的原理是什么?查找計算機可以跨路由器查找嗎?喜歡動手的同學完全可以自己用Netxray去搞清楚,懶惰一點的嘛就做好準備等著看下一部分--深入NETBIOS剖析了。


    *******深入NETBIOS剖析********

      在這部分里,我首先將對NETBIOS作一些基礎性的介紹,然后主要針對LANA編號, NETBIOS名字表,NBT這三方面對NETBIOS的特性進行講解,使大家對NETBIOS接口通訊的原理有所了解,并掌握使用NETBIOS名字表來識別網上鄰居瀏覽故障及其排除的方法。其中可能要借助一些網絡命令,如net,nbtstat等,若有不會使用的同學請自行查閱windows幫助文檔(最好看NT下的,98的有點渣渣),這里就不作解釋了。

      熟悉網絡編程的同學都知道,在Windows下有兩套重要的網絡API,WINSOCK和 NETBIOS。平時我們用IE瀏覽網頁,用FOXMAIL收發郵件以及用OICQ聊天用的都是 WINSOCK API,但還有一部分網絡應用需要用到傳統網絡接口NETBIOS,瀏覽網上鄰居和共享文件就是其中的典型。雖然微軟已經在其最新的WINSOCK API里加入了對AF_NETBIOS地址族的訪問,并打算從它的win2000中使對NETBIOS API的支持變成可選項,但NETBIOS的真正消亡還有待時日。這里我不想翻開NETBIOS厚重的歷史去評判它的優劣來浪費大家的時間。存在即是真理,我們切入正題好了。 NETBIOS API的最大優點就是使得編程接口“與協議無關”---應用程序可通過TCP/IP,NetBEUI以及IPX/SPX來運行。

      舉個例子來說,如果你在網絡屬性里同時添加了這三種協議,那當你通過網上鄰居瀏覽某臺機子的資源時能確定用的是哪種協議在和它進行通信嗎?不過由于這種“與協議無關”性是通過對傳輸協議本身進行改造,在相應協議上添加NETBIOS接口實現的,所以也就產生了一些局限性:

      一是并非所有的協議都支持NETBIOS,我們知道的就只有上面提到的那三種協議實施了NETBIOS接口(也許在它們前面加個Microsoft標識更恰當些);

      二就是我在前面提過的LANA編號的問題了,LANA號的提法在多宿主機環境下可能更準確些,對于我們一般只安裝有一塊網卡的機子來說大家就把它簡單理解成一種通訊協議的對稱性就可以了。

      舉個例子,A只安裝了TCP/IP,B只安裝了NetBEUI,雖然他們都在協議上綁定了NETBIOS接口,但彼此在網絡鄰居里是看不到的。這也提醒我們要想在網絡鄰居里看到最多的機子,就要把三個協議全部安裝。為了后文敘述的方便,我們把啟用了NETBIOS的三種協議分別用一個名字來表示:NetBT/NBT(TCP/IP)、Nbf(NetBEUI)、NwlnkNb(IPX/SPX),它們各對應一個 LANA號,只有相同的LANA號之間才能建立通信連接。

      接下來要說的就是最為關鍵的NETBIOS名字的問題了。對于BSD系統,每臺機器都有一個主機名,從而也引出了DNS的概念,這也可以說是UNIX和TCP/IP緊密結合的產物。而Windows可沒有跟某種協議有近親關系,在它眼里只有機器名(即NETBIOS名)才是最關鍵的。

      在win32環境中,針對每個可用的LANA編號,每個進程都會為其維持一張NETBIOS名字表。我們可以用nbtstat -n命令獲得本機與NBT相關的名字表(你要是連TCP/IP都沒安,可別來問我為什么不能用)。NETBIOS 名字分兩種類型:唯一名(UNIQUE)和組名(GROUP)。唯一名很好理解,就是說在同一子網上要獨一為二(注意我這里沒有用廣播域,這在我的第三部分里我會結合以前的一些討論詳作說明);而組名的作用是可以實現多播數據通訊。結構上也由兩部分組成:字符串和Scope ID。這里的字符串就是我們給自己的計算機、工作組起的名字,而且對所能使用的字符及其長度都有限制,大家自己去查書,我就不在這里浪費時間了,需要說明的是一些同學為了“隱藏”自己,把自己的機器名起的象個IP一樣,如0.0.0.0(真不知是那位高人教大家的,呵呵)其實字符“."是不允許做機器名的,從這個角度講win98真是太渣渣了(誤導群眾,怪不得老死機,該?。┒鳱T在這方面做的就好多了。我主要講解的是Scope ID域,它占用NETBIOS名的最后一個字節,最大的作用莫過于可以標識不同的Microsoft 網絡服務了,因為它是NETBIOS名的一部分,因此UNIQUE name允許兩臺computername 相同,但scope ID不同的計算機在同一子網上存在。

      我不打算摘抄大段的NETBIOS 標識符給大家,這里就以我機子上的一個NETBIOS名字表為例給大家講解一下常用的NETBIOS標識符類型:

      C:\>nbtstat -n NetBIOS Remote Machine Name Table Name Type Status --------------------------
      CJT <00> UNIQUE Registered

      CJT<00>

      代表工作站服務,每一臺上網的計算機必須首先注冊的唯一標識符,這也是進行網絡鄰居瀏覽的唯一必要條件。在同一子網上的其它機子可以用ping CJT得到我的IP,注意這可跟DNS沒有關系,是通過廣播查詢CJT<00>得到的,因為TCP/IP和NETBIOS有綁定。

      MINEGROUP <00> GROUP Registered

      這條沒什么可說的,但凡把工作組名設成MINEGROUP的機子都會注冊這一項,從而同一子網上的某些機子間建立一種特定的邏輯關聯,使對于MINEGROUP<00>進行的通訊只被這些機子接收,這里大家可以考慮不在MINEGROUP的機子對這些報文的處理過程。雖說這一項是名字表里最不重要的一項,但大多數同學無法瀏覽網上鄰居的故障卻都和它有關哦!等會兒我會說明。還有大家可以想想,要是你的工作組名和別人的機器名起的一樣會出現什么事情呢?

      CJT <03> UNIQUE Registered CJT<03>

      代表消息服務,就是那個在win2000下突然彈出個窗口來說“某某某侵犯版權” 的東東。其實這是個挺好的服務,可以讓我們用win9X下的WINPOPUP和winNT下的NET SEND 進行簡單的消息傳送。不過在NT下,CJT<03>只代表消息的接收端,要發送消息,還需注冊一個CJT<01>,這也是NT第一次用net send發消息要等很久的原因,因為CJT<01>只在你用到net send時才會去注冊;而9X下只用一個CJT<03>就把收發全搞定了。不過那個 WINPOPUP好象不能給自己發消息耶,真不知微軟在搞啥子。

      CJT <20> UNIQUE Registered

       與CJT<00>相對照,CJT<20>代表服務器服務,我前面已經說過,凡是提供文件及打印機共享服務的機子就叫做SERVER,它會在入網時進行瀏覽器宣告,這也是一臺機子可通過網上鄰居“被”訪問的唯一必要條件。

      MINEGROUP <1E> GROUP Registered

      還記得我前面說過的那個瀏覽器選舉嗎?我把<1E>標志稱為候選者,這樣當MINEGROUP組里的當前瀏覽主控服務器當機后,所有擁有<1E>標志的機子都有資格參加競選。至于這個標志是怎么來的,記住一句話:SERVER完全同意作為默認的候選瀏覽主控服務器。關于這句話的理解,我后面將有一道題幫助大家認識它。

      XIXI <03> UNIQUE Registered

      咦?又一個<03>,這個XIXI是啥子東西?其實XIXI就是CJT的用戶名了,就是那個登錄提示框里的東西。使我們除了通過對方的機器名以外還可以通過他的用戶名給對方發消息。不過要是和別人的名字發生了重復怎么辦?會報沖突嗎?不會。因為這個XIXI<03>是我們在按了回車車鍵以后才進行注冊的。寫到這里,不禁對以前那個ESC鍵的問題有所領悟,原來所謂的登錄網絡就是干了這么一件事,那如果...如果...,企不是...呵呵,搞個測試先。

      MINEGROUP <1D> UNIQUE Registered

      這個<1D>想來大家都已經猜到了,就是表明CJT是MINEGROUP里的瀏覽主控服務器了,當 “領導”的感覺總是這么爽。嘻嘻

      ..__MSBROWSE__.<01> GROUP Registered

      見過這個怪東西的人肯定不少,但真正知道它用途的恐怕不多。這是一個組名,由整個子網上的所有瀏覽主控服務器構成,這樣當MINEGROUP里的機子想要瀏覽其他組的資源時,CJT就憑借這個標識為大家查找那個組的瀏覽主控服務器,從而使我們能獲得該組的瀏覽列表。 基本的一些標識符類型就介紹完了,只要掌握了這些,解決常見的瀏覽器故障已是綽綽有余了,通過后面的一道習題大家可以實踐掌握這種方法。對于還想進一步了解更多標識符類型的同學可以使用net start命令獲知其它的微軟服務,大多數服務都有一種標識符與其相對應。

    MAC Address = 00-88-CC-23-15-54

      前面POPO曾說過,使用nbtstat -A IP可以獲知遠程主機的MAC,至于原理,就是我們在這里最后要說的NBT了?,F在大家已經知道,NBT就是建立在TCP/IP傳送協議之上的NETBIOS接口,我們先將它與Nbf進行一番對比。Nbf指的是NETBIOS幀協議,以NetBEUI為基礎,這可是真正的架構在鏈路層之上的協議哦,不過也因為它是在LLC上面,所以無法路由。只有借助一些可路由協議(如IP或IPX)才能實現跨廣播域瀏覽因為TCP/IP發展最為迅速,最為普及,NBT也才受到大家如此的關注。

      NBT提供的服務可以分成三類:名稱服務(UDP137)、數據報服務(UDP138)和會話服務(TCP139)。

      1)名稱服務:
      主要用于廣播解決本子網的NETBIOS名和IP地址轉換的關系,比如我前面那個 ping CJT的例子。因為NBT是建立在TCP/IP之上,而建立TCP/IP通訊是必須知曉雙方 IP 地址的,這跟Nbf直接用MAC地址通訊很不一樣。但也因為使用的是UDP廣播,所以名稱 服務無法跨越路由器。(這里我們只針對b-節點,不對WINS加以介紹)

       2)數據報服務提供了無連接和面向廣播的通信方式。它主要用于瀏覽列表通知,我前面也說過我們桌面上的那個網上鄰居就是它構建的,此外我們用NET SEND *命令給計算機組發消息時也是靠它的UDP廣播(多播)能力。但也正因為它使用了UDP傳輸層協議,因而在跨越路由器時也會遇到與名稱服務相同的問題。

       3)使用面向連接TCP協議的會話服務才是我們的救星,因為它可以跨越路由器。網絡中產 生的NETBIOS通信主要也是因為會話服務的使用,而文件和打印機共享服務則構成了會話 服務通信的主體。

      說到這里就不得不提SMB(Server Message Block),不過要講清楚 SMB,可能要從NCB的由來說起,那可就又是一個長篇了。這里我就教給那些還不太明白它們之間關系的同學一個簡單的辦法,雖不太準確,但挺實用,希望清楚的同學別給我戴上誤導群眾的高帽哦:-)首先SMB是一種協議,一種“應用層”的協議,一種基于SERVER/CLIENT架構的應用層協議,大家完全可以把它看成是一種HTTP,FTP或是TEL NET 而添加了文件及打印機共享服務的機子就是SERVER端,可以被其它工作站和服務器訪問 如果沒有添加文件及打印機共享服務,則不能被其他機子訪問。當然,SMB除了提供文件 及打印機服務以外,還可以進行會話控制和交換消息,如用net send命令可直接把使用 消息類型的SMB包發給特定計算機。而且因為會話服務是建立在TCP上的,只要你能獲知 遠程主機IP,就可以跨越路由器。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>