歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> 關於Unix >> 深入淺出典型協議分析:SMB/CIFS協議

深入淺出典型協議分析:SMB/CIFS協議

日期:2017/3/6 15:47:39   编辑:關於Unix
在NetBIOS出現之後,Microsoft就使用NetBIOS實現了一個網絡 文件/打印服務系統,這個系統基於NetBIOS設定了一套文件共享協議,Microsoft稱之為SMB(Server Message Block)協議。這個協議被Microsoft用於它們Lan Manager和 Windows NT 服務器 系統中,而Wind
  在NetBIOS出現之後,Microsoft就使用NetBIOS實現了一個網絡文件/打印服務系統,這個系統基於NetBIOS設定了一套文件共享協議,Microsoft稱之為SMB(Server Message Block)協議。這個協議被Microsoft用於它們Lan Manager和Windows NT服務器系統中,而Windows系統均包括這個協議的客戶軟件,因而這個協議在局域網系統中影響很大。
  
  隨著Internet的流行,Microsoft希望將這個協議擴展到Internet上去,成為Internet上計算機之間相互共享數據的一種標准。因此它將原有的幾乎沒有多少技術文檔的SMB協議進行整理,重新命名為CIFS(Common Internet File System),並打算將它與NetBIOS相脫離,試圖使它成為Internet上的一個標准協議。  
  
  因此,為了讓Windows和Unix計算機相集成,最好的辦法即是在Unix中安裝支持SMB/CIFS協議的軟件,這樣Windows客戶就不需要更改設置,就能如同使用Windows NT服務器一樣,使用Unix計算機上的資源了。  
  
  與其他標准的TCP/IP協議不同,SMB協議是一種復雜的協議,因為隨著Windows計算機的開發,越來越多的功能被加入到協議中去了,很難區分哪些概念和功能應該屬於Windows操作系統本身,哪些概念應該屬於SMB協議。其他網絡協議由於是先有協議,實現相關的軟件,因此結構上就清晰簡潔一些,而SMB協議一直是與Microsoft的操作系統混在一起進行開發的,因此協議中就包含了大量的Windows系統中的概念。
  
  浏覽在SMB協議中,計算機為了訪問網絡資源,就需要了解網絡上存在的資源列表(例如在Windows下使用網絡鄰居查看可以訪問的計算機),這個機制就被稱為浏覽(Browsing)。雖然SMB協議中經常使用廣播的方式,但如果每次都使用廣播的方式了解當前的網絡資源(包括提供服務的計算機和各個計算機上的服務資源),就需要消耗大量的網絡資源和浪費較長的查找時間,因此最好在網絡中維護一個網絡資源的列表,以方便查找網絡資源。只有必要的時候,才重新查找資源,例如使用Windows下的查找計算機功能。  
  
  但沒有必要每個計算機都維護整個資源列表,維護網絡中當前資源列表的任務由網絡上的幾個特殊計算機完成的,這些計算機被稱為Browser,這些Browser通過記錄廣播數據或查詢名字服務器來記錄網絡上的各種資源。  
  
  Browser並不是事先指定的計算機,而是在普通計算機之間通過自動進行的推舉產生的。不同的計算機可以按照其提供服務的能力,設置在推舉時具備的不同權重。為了保證一個Browser停機時網絡浏覽仍然正常,網絡中常常存在多個Browser,一個為主Browser(Master Browser),其他的為備份Browser。
  
  工作組和域這兩個概念在進行浏覽時具備同樣的用處,都是用於區分並維護同一組浏覽數據的多個計算機。事實上他們的不同在於認證方式上,工作組中每台計算機都基本上是獨立的,獨立對客戶訪問進行認證,而域中將存在一個(或幾個)域控制器,保存對整個域中都有效的認證信息,包括用戶的認證信息以及域內成員計算機的認證信息。浏覽數據的時候,並不需要認證信息,Microsoft將工作組擴展為域,只是為了形成一種分級的目錄結構,將原有的浏覽和目錄服務相結合,以擴大Mircrosoft網絡服務范圍的一種策略。  
  
  工作組和域都可以跨越多個子網,因此網絡中就存在兩種Browser,一種為Domain Master Browser,用於維護整個工作組或域內的浏覽數據,另一種為Local Master Browser,用於維護本子網內的浏覽數據,它和Domain Master Browser通信以獲得所有的可浏覽數據。劃分這兩種Browser主要是由於浏覽數據依賴於本地網廣播來獲得資源列表,不同子網之間只能通過浏覽器之間的交流能力,才能互相交換資源列表。  
  
  但是,為了浏覽多個子網的資源,必須使用NBNS名字服務器的解析方式,沒有NBNS的幫助,計算機將不能獲得子網外計算機的NetBIOS名字。Local Master Browser也需要查詢NetBIOS名字服務器以獲得Domain Master Browser的名字,以相互交換網絡資源信息。  
  
  由於域控制器在域內的特殊性,因此域控制器傾向於被用做Browser,主域控制器應該被用作Domain Master Browser,他們在推舉時設置的權重較大。認證方式  在Windows 9x系統中,習慣上使用共享級認證的方式互相共享資源,主要原因是在這些Windows系統上不能提供真正的多用戶能力。一個共享級認證的資源只有一個口令與其相聯系,而沒有用戶數據。這個想法是適合於一小組人員相互共享很少的文件資源的情況下,一旦需要共享的資源變多,需要進行的限制復雜化,那麼針對每個共享資源都設置一個口令的做法就不再合適了。  
  
  因此對於大型網絡來講,更適合的方式是用戶級的認證方式,區分並認證每個訪問的用戶,並通過對不同用戶分配權限的方式共享資源。對於工作組方式的計算機,認證用戶是通過本機完成的,而域中的計算機能通過域控制器進行認證。當Windows計算機通過域控制器的認證時,它可以根據設置執行域控制器上的相應用戶的登錄腳本並桌面環境描述文件。
  
  共享資源,每個SMB服務器能對外提供文件或打印服務,每個共享資源需要被給予一個共享名,這個名字將顯示在這個服務器的資源列表中。然而,如果一個資源的名字的最後一個字母為$,則這個名字就為隱藏名字,不能直接表現在浏覽列表中,而只能通過直接訪問這個名字來進行訪問。  
  
  在SMB協議中,為了獲得服務器提供的資源列表,必須使用一個隱藏的資源名字IPC$來訪問服務器,否則客戶無法獲得系統資源的列表。

Copyright © Linux教程網 All Rights Reserved