百科解釋
目錄·歷史·實施·其它實施和版本 SMB(Server Message Block,又稱Common Internet File System(CIFS))是由微軟開發(fā)的一種軟件程序級的網(wǎng)絡(luò)傳輸協(xié)議,主要用來使得一個網(wǎng)絡(luò)上的機器共享計算機文件、打印機、串行端口和通訊等資源。它也提供認(rèn)證的行程間通訊機能。它主要用在裝有Microsoft Windows的機器上,在這樣的機器上被稱為Microsoft Windows Network。 經(jīng)過Unix服務(wù)器廠商重新開發(fā)后,它可以用于連接Unix服務(wù)器和Windows客戶機,執(zhí)行打印和文件共享等任務(wù)。 CIFS 的消息格式不同與NFS的固定長度格式, 大多數(shù)消息體都包含可變長的數(shù)據(jù),這帶來一定的協(xié)議復(fù)雜性。CIFS 消息一般在netbios或Tcp協(xié)議層上,分別使用不同的端口 139 或445, 目前傾向于使用445端口。CIFS的消息包括一個消息頭(32字節(jié))和消息體(1個或多個,可變長)。 歷史 SMB最初是IBM的貝瑞·費根鮑姆(Barry Feigenbaum)研制的,其目的是將DOS操作系統(tǒng)中的當(dāng)?shù)匚募佑|接口“中斷13”改造為網(wǎng)絡(luò)文件系統(tǒng)。后來微軟對這個發(fā)展進行了重大更改,這個更改后的版本也是最常見的版本。微軟將SMB協(xié)議與它和3Com一起發(fā)展的網(wǎng)絡(luò)管理程序結(jié)合在一起,并在Windows for Workgroups和后來的Windows版本中不斷加入新的功能。 SMB一開始的設(shè)計是在NetBIOS協(xié)議上運行的(而NetBIOS本身則運行在NetBEUI、IPX/SPX或{{lang|en|TCP/IP協(xié)議上),Windows 2000引入了SMB直接在TCP/IP上運行的功能。在這里我們必須區(qū)分SMB協(xié)議和運行在這個協(xié)議上的SMB業(yè)務(wù),以及NetBIOS和使用SMB作為認(rèn)證隧道的DCE/RPC業(yè)務(wù)。此外我們還要區(qū)分主要(但不僅僅)直接使用NetBIOS數(shù)據(jù)報的“網(wǎng)絡(luò)鄰居”協(xié)議。 1996年,約于升陽推出WebNFS的同時,微軟提出將SMB改稱為Common Internet File System[2]。此外微軟還加入了許多新的功能,比如符號鏈接、硬鏈接、提高文件的大小。微軟還試圖支持直接聯(lián)系,不依靠NetBIOS,不過這個試圖依然處于嘗試階段,并需要繼續(xù)完善。微軟向互聯(lián)網(wǎng)工程工作小組提出了部分定義作為互聯(lián)網(wǎng)草案[3]。不過這些提案現(xiàn)在均已過期。 由于SMB協(xié)議對于與占主要地位的Microsoft Windows平臺通訊時的重要性,而目前該平臺使用的Template:SMB協(xié)議與初始的版本相比有巨大的改變,因此Samba項目就是被創(chuàng)立來逆向工程來提供一個與SMB軟件兼容的自由軟件,使得非微軟操作系統(tǒng)也能夠使用它。 在Windows Vista中微軟又推出了Server Message Block 2.0。 實施 客戶端-服務(wù)器端結(jié)構(gòu) SMB使用點對點的通訊方式,一個客戶端向一個服務(wù)器提出質(zhì)詢,服務(wù)器相應(yīng)地回答。SMB協(xié)議中的一部分專門用來接觸文件,使得客戶端可以接觸一個文件服務(wù)器。SMB也有行程間通訊的部分。SMB協(xié)議尤其適用于局部子網(wǎng),但是也可以被用來通過萬維網(wǎng)來鏈接不同的子網(wǎng)。Microsoft Windows的文件和打印機分享主要使用這個功能。 SMB服務(wù)器向網(wǎng)絡(luò)上的客戶端提供文件系統(tǒng)和其它資源?蛻舳穗娔X也可能有其自己的、不共享的硬盤,但是可能也想使用服務(wù)器上分享的文件系統(tǒng)和打印機。這是SMB為什么這么出名和廣泛地被使用的原因。SMB普及的另一個原因是它使用適合NT網(wǎng)域的協(xié)議,至少提供基于NT網(wǎng)域式的認(rèn)證。NT網(wǎng)域協(xié)議是一個微軟遠(yuǎn)程過程調(diào)用服務(wù),幾乎只能被SMB行程間通訊有名管道使用。幾乎所有SMB服務(wù)器的實施使用NT網(wǎng)域來認(rèn)證用戶是否可以解除一個資源。 速度問題 一般認(rèn)為SMB協(xié)議使用很多網(wǎng)絡(luò)帶寬,因為每個客戶端均在整個子網(wǎng)內(nèi)廣播其存在。但是SMB本身并不使用廣播。SMB造成的廣播問題實際上是NetBIOS服務(wù)中的定位協(xié)議造成的。一般來說Microsoft Windows服務(wù)器使用NetBIOS來協(xié)議和定位服務(wù)。而NetBIOS則定時向一個特定的服務(wù)器廣播一個服務(wù)的存在。對于一個少于20個服務(wù)器的網(wǎng)絡(luò)來說這個方式是可行的。但是隨服務(wù)器數(shù)目的增加廣播造成的交通會導(dǎo)致問題。通過適當(dāng)?shù)貙嵤¦indows Internet名字服務(wù)(WINS)定位協(xié)議這個問題可以被緩和。WINS使用更高級的系統(tǒng)來確定和中央化服務(wù)需求,但是造成自己的設(shè)計和保管網(wǎng)絡(luò)的問題。動態(tài)DNS是另一個解決方法。微軟本身推薦在微軟的活動目錄環(huán)境下使用動態(tài)DNS。網(wǎng)絡(luò)延遲對SMB協(xié)議的速度有非常大的沖擊。在服務(wù)器之間網(wǎng)絡(luò)延遲大的情況下通過SMB來更換檔案夾非常明顯地反映了這個問題。比如在通過萬維網(wǎng)使用虛擬私人網(wǎng)絡(luò)時網(wǎng)絡(luò)延遲就會比較大,這時使用SMB就很惱人。 微軟的更改 微軟在實施其SMB時添加許多功能,比如微軟引入了NTLM版本2,因為原來的版本1使用的DES有錯。此外NT 4.0在美國以外使用40位加密,對于今天的標(biāo)準(zhǔn)來說不可靠。 特點 SMB的行程間通訊機構(gòu)值得一提。通過這個系統(tǒng)它提供有名管道。這個機構(gòu)是最早的、程序員可以使用的少數(shù)行程間通訊之一,它繼承客戶端聯(lián)系SMB服務(wù)器時的認(rèn)證來提供服務(wù)。有名管道繼承認(rèn)證是一個獨特和透明的機構(gòu),因此使用Windows API的程序員和Windows的用戶均將它看作是自然的。 奇怪的是有些服務(wù)使用有名管道,比如使用通過SMB的微軟遠(yuǎn)程過程調(diào)用的程序,也允許微軟遠(yuǎn)程過程調(diào)用客戶端程序進行自己的認(rèn)證,并且由此掩蓋SMB服務(wù)器的認(rèn)證。但是這個掩蓋只在客戶端程序的認(rèn)證成功的情況下才生效。 另一個特點是SMB對文件使用一種特殊的、被稱為伺機鎖定的鎖定機構(gòu)來提高速度。 微軟的分布式文件系統(tǒng)實施是基于SMB上的。 其它實施和版本 以下列出的包括SMB客戶端、服務(wù)器以及不同的擴展SMB的協(xié)議。 Samba是對SMB和微軟的擴展的重新實施,它是自由軟件,包括服務(wù)器和命令行客戶端。 Samba-TNG是一款Samba的衍生版本。 Linux內(nèi)核包括兩個SMB客戶端實施,它們使用虛擬文件系統(tǒng)通過標(biāo)準(zhǔn)文件系統(tǒng)應(yīng)用程序接口提供接觸SMB服務(wù)器上的文件。 ONStor公司實施了其自己的SMB,這個實施也支持NFS協(xié)議。 Novell NetWare版本6以上提供CIFS服務(wù)器實施,使得Microsoft Network客戶端可以解除NetWare的文件。 FreeBSD、NetBSD和Mac OS X均包含使用它們自己的虛擬文件系統(tǒng)的SMB客戶端。 FreeNAS是一個小型的網(wǎng)絡(luò)儲存設(shè)備服務(wù),其目的在于使得用戶可以重新使用老電腦作為文件服務(wù)器。它支持CIFS/Samba協(xié)議。 維爾軟件公司實施過一個SMB。 Network Appliance有一個SMB服務(wù)器的實施。
移動通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團隊博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助