Loading AI tools
應用層網絡協議; 提供對文件,打印機和串行端口的共享訪問以及網絡上節點之間的各種通信 来自维基百科,自由的百科全书
伺服器訊息區塊(Server Message Block,縮寫為SMB),又稱網路文件共享系統(Common Internet File System,縮寫為CIFS, /ˈsɪfs/),一種應用層網絡傳輸協議,由微軟開發,主要功能是使網絡上的機器能夠共享計算機文件、打印機、串行端口和通訊等資源。它也提供經認證的行程間通訊機能。它主要用在裝有Microsoft Windows的機器上,在這樣的機器上被稱為Microsoft Windows Network。
此條目需要更新。 (2017年5月14日) |
經過Unix服務器廠商重新開發後,它可以用於連接Unix服務器和Windows客戶機,執行打印和文件共享等任務。
與功能類似的網絡文件系統(NFS)相比,NFS的消息格式是固定長度,而CIFS的消息格式大多數是可變長度,這增加了協議的複雜性。CIFS消息一般使用NetBIOS或TCP協議傳送,分別使用不同的端口139或445,目前傾向於使用445端口。CIFS的消息包括一個信頭(32字節)和消息體(1個或多個,可變長)。
SMB可以以不同方式運行在會話層或者更低的網絡層之上:
SMB的 "進程間通信" (IPC) 系統提供 命名管道s 機制,它使得程序員可以方便的實現繼承認證(客戶端第一次連接SMB服務獲取認證信息後)。
一些服務的操作基於命名管道機制, 例如那些 Microsoft 內部實現的基於SMB的 DCE/RPC, 被稱為基於SMB的 MSRPC, 同時允許 MSRPC 客戶端程序 處理認證過程(藉助SMB服務提供的認證服務實現), 但是只在MSRPC客戶端程序上下文中有效。
SMB 簽名: Windows NT 4.0 Service Pack 3 及後續版本提供了基於數字簽名的SMB連接機制。常用的官方術語叫做「SMB 簽名」。其他被同時被使用的官方術語有
Server Message Block version 2 (SMB2) 旨在通過將SMB signals合併為一個數據包來減輕這個性能限制[來源請求]。
SMB 支持 機會鎖 — 一種特殊的鎖機制 — 來提升性能。
SMB 服務是 Microsoft's Distributed File System 實現的基礎.
SMB最初是IBM的貝瑞·費根鮑姆(Barry Feigenbaum)研製的,其目的是將DOS操作系統中的本地文件接口「中斷13」改造為網絡文件系統。後來微軟對這個發展進行了重大更改,這個更改後的版本也是最常見的版本。微軟將SMB協議與它和3Com一起發展的網絡管理程序結合在一起,並在Windows for Workgroups和後來的Windows版本中不斷加入新的功能。
SMB一開始的設計是在NetBIOS協議上運行的(而NetBIOS本身則運行在NetBEUI、IPX/SPX或TCP/IP協議上),Windows 2000引入了SMB直接在TCP/IP上運行的功能。在這裡我們必須區分SMB協議和運行在這個協議上的SMB業務,以及NetBIOS和使用SMB作為認證隧道的DCE/RPC業務。此外我們還要區分主要(但不僅僅)直接使用NetBIOS數據報的「網絡鄰居」協議。
1996年,約於昇陽推出WebNFS的同時[7],微軟提出將SMB改稱為Common Internet File System[8]。此外微軟還加入了許多新的功能,比如符號鏈接、硬鏈接、提高文件的大小。微軟還試圖支持直接聯繫,不依靠NetBIOS,不過這個試圖依然處於嘗試階段,並需要繼續完善。微軟向互聯網工程工作小組提出了部分定義作為互聯網草案[9]。不過這些提案現在均已過期。
由於SMB協議對於與占主要地位的Microsoft Windows平台通訊時的重要性,而目前該平台使用的SMB協議與初始的版本相比有巨大的改變,因此Samba項目就是被創立來逆向工程來提供一個與SMB軟件兼容的自由軟件,使得非微軟操作系統也能夠使用它。
在Windows Vista中微軟又推出了Server Message Block 2.0,後又在Windows 7中做了改進,截至2012年依次發布的主版本有 2.1 和 3.0。
2006年,Microsoft 隨着 Windows Vista 的發布 引入了新的SMB版本 (SMB 2.0 or SMB2) [10] ...
SMB 2.1, 隨 Windows 7 和 Server 2008 R2 引入, 主要是通過引入新的機會鎖機制來提升性能。[11]
SMB 3.0 (前稱 SMB 2.2)[12]在Windows 8[12] 和 Windows Server 2012[12]中引入。它帶來幾項重大改變,例如 the SMB Direct Protocol (SMB over RDMA) 和 SMB Multichannel(每SMB工作階段有多重連結),[13][14] ...
SMB使用點對點的通訊方式,一個客戶端向一個服務器提出請求,服務器相應地回答。SMB協議中的一部分專門用來處理對文件系統的訪問,使得客戶端可以訪問一個文件服務器。SMB也有行程間通訊的部分。SMB協議尤其適用於局部子網,但是也可以被用來通過萬維網來鏈接不同的子網。Microsoft Windows的文件和打印機分享主要使用這個功能。
SMB服務器向網絡上的客戶端提供文件系統和其它資源。客戶端電腦也可能有其自己的、不共享的硬盤,但是可能也想使用服務器上分享的文件系統和打印機。這是SMB為什麼這麼出名和廣泛地被使用的原因。SMB普及的另一個原因是它使用適合NT網域的協議,至少提供基於NT網域式的認證。NT網域協議是一個微軟遠程過程調用服務,幾乎只能被SMB行程間通訊的具名管道使用。幾乎所有SMB服務器的實現使用NT網域來認證用戶是否可以訪問一個資源。
一般認為SMB協議會占用很多網絡帶寬,因為每個客戶端均在整個子網內廣播其存在。但是SMB本身並不使用廣播。SMB造成的廣播問題實際上是NetBIOS的服務定位協議造成的。一般來說Microsoft Windows服務器使用NetBIOS來協議和定位服務。而NetBIOS則定時向一個特定的服務器廣播一個服務的存在。對於一個少於20個服務器的網絡來說這個方式是可行的。但是隨服務器數目的增加廣播造成的交通會導致問題。通過適當地實現WINS定位協議這個問題可以被緩和。WINS使用更高級的系統來確定和中央化服務需求,但是造成自己的設計和保管網絡的問題。動態DNS是另一個解決方法。微軟本身推薦在微軟的活動目錄環境下使用動態DNS。網絡延遲對SMB協議的速度有非常大的衝擊。在服務器之間網絡延遲大的情況下通過SMB來更換檔案夾非常明顯地反映了這個問題。比如在通過萬維網使用虛擬私人網路時網絡延遲就會比較大,這時使用SMB就很惱人。
微軟在實現其SMB時添加了許多功能,比如微軟引入了NTLMv2,因為原來的第1版使用的DES容易被破解。此外因早年美國政府對於高等加密軟體限制出口,NT 4.0在美國以外僅使用40比特位加密,以今天的標準來說容易被解密。
SMB的行程間通訊機制值得一提。通過這個系統,它提供具名管道。這個機制是最早的、程序員可以使用的少數行程間通訊之一,它繼承客戶端聯繫SMB服務器時的認證來提供服務。具名管道繼承認證是一個獨特和透明的機制,因此使用Windows API的程序員和Windows的用戶均將它看作是自然的。
有些服務使用具名管道,比如使用通過SMB的微軟遠程過程調用的程序,也允許微軟遠程過程調用客戶端程序進行自己的認證,並且由此掩蓋SMB服務器的認證。但是這個掩蓋只在客戶端程序的認證成功的情況下才生效。
另一個特點是SMB對文件使用一種特殊的、被稱為伺機鎖定的鎖定機構來提高速度。
微軟的分布式文件系統實現就基於SMB。
以下列出的包括SMB客戶端、服務器以及不同的擴展SMB的協議。
多年以來,微軟實現的其直接依賴的協議與組件都存在着許多安全漏洞。[15][16]其他供應商的安全漏洞主要在於缺乏對較新的身份驗證協議(例如NTLMv2和Kerberos贊成如NTLMv1、LanMan或純文本密碼)的支持。實時攻擊跟蹤[17]表明SMB是入侵企圖的主要攻擊媒介之一[18],例如2014年索尼影業遭黑客攻擊事件[19],以及2017年的WannaCry勒索軟體攻擊。[20]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.