Server Message Block

Server Message Block (SMB), známý také jako Common Internet File System (CIFS), je síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům a další komunikaci mezi uzly na síti. Poskytuje také autentizovaný mechanismus pro meziprocesovou komunikaci. Je využíván hlavně na počítačích s operačními systémy rodiny Windows.

Historie

Protokol SMB vyvinul Barry Feigenbaum ve firmě IBM s cílem změnit DOSové "přerušení 33" (21h) pro přístup k lokálním souborům na síťový systém souborů. Microsoft provedl významné změny a protokol včlenil do produktu LAN Manager, který vyvíjel spolu s firmou 3Com (kolem roku 1990). Microsoft protokol dále rozvíjel ve Windows for Workgroups (1992) i dalších verzích Microsoft Windows.

Projekt Samba přinesl svobodnou implementaci SMB protokolu vyvinutou pomocí reverzního inženýrství.

Ve Windows Vista (vydané v roce 2007) byla představena 2. verze protokolu (Server Message Block verze 2.0).

Implementace

Protokol je díky firmě Microsoft rozšířený v oblasti souborových serverů a klientů sítí LAN. Protokol SMB využívají souborové a tiskové servery síťových operačních systémů IBM (např. LAN Server, OS/2) a Microsoft (např. LAN Manager, Windows NT). Protokol pracuje na principu klient–server. Server umožňuje klientům sítě přistupovat k tzv. sdíleným prostředkům, např. sdíleným diskům, adresářům, tiskovým frontám nebo pojmenovaným kanálům. Sdílené prostředky jsou rozpoznávány pomocí síťové adresy UNC (\\jméno_serveru\jméno_zdroje). Klientská část má za úkol definovat požadavky na sdílené prostředky serveru. Server vykonává rozbor požadavků odeslaných klientem ve tvaru bloku (paketu) SMB, porovnává přístupová práva a na podkladě přístupových práv zahajuje požadovanou operaci (vytvoření adresáře, spuštění souboru atd.). Výsledek je s odpovědí poslán klientu identickým blokem SMB.

Přístup ke sdíleným prostředkům

Z pohledu serveru SMB k přístupu ke sdíleným prostředkům máme dva pohledy:

  • řízení přístupu z pohledu na úroveň sdíleného prostředku (share level),
  • řízení přístupu z pohledu na uživatelskou úroveň (user level).

V prvním případě server povoluje přístup ke sdíleným prostředkům na základě správného hesla, které je přiřazeno k jednotlivému sdílenému prostředku. Po zadání správného hesla klientem je klientu přidělen identifikátor prostředku NID (Network ID), pomocí něhož přistupuje k prostředku.

V druhém případě se klient přihlašuje na server hned pomocí jména a hesla a v případě správnosti server přiřadí klientu uživatelský identifikátor UID (User ID), pomocí něhož server odvozuje přístupová práva při manipulaci se sdíleným prostředkem.

Princip komunikace

  1. Klient zasílá serveru požadavek — dochází ke specifikaci parametru spojení a verzí protokolu mezi serverem a klientem.
  2. Klient odešle požadavek, ve kterém je uvedeno jméno a heslo uživatele. Pokud je server v režimu user-level, přidělí uživateli UID.

Formát paketu SMB

SIDSCRCAHRCRSNIDPIDUIDMIDPPCdBLB
1B3B1B1B1B2B15B2B2B2B2B1B2B2B1B
OznačeníVýznam
SIDidentifikace protokolu SMB
Sidentifikace dialektu serveru SMB
Cfunkční kód volané služby
Rtřída návratového kódu funkce SMB
AHvýsledek operace v registru AH procesoru
RCnávratový kód operace
RSrezerva pro budoucí rozšíření
NIDidentifikátor přiřazený sdílenému prostředku
PIDidentifikátor procesu klienta
UIDidentifikátor uživatele
MIDmultiplexní identifikátor procesu klienta
Prmctpočet volitelných parametrů k volané funkci
Pckód parametru volané funkce
Bldélka datové části SMB bloku
Bprvní slabika datové části bloku SMB

SMB2 / SMB3

Microsoft představil novou verzi Server Message Block (SMB) protokolu (SMB 2.0 nebo SMB2) s Windows Vista v roce 2006. Ačkoli je protokol proprietární, specifikace byly publikovány a ostatním systémům byla umožněna spolupráce s operačními systémy společnosti Microsoft, které používají nový protokol.

SMB2 redukuje velikost protokolu SMB1.0 tím, že snižuje počet příkazů a podpříkazů ze stovek na pouhých devatenáct. Má pipelining (řetězení), to znamená odeslání dalších požadavků dříve než přijde odpověď na předchozí požadavek, čímž dochází ke zvýšení výkonu. To dodává schopnost sloučit více akcí do jednoho požadavku, který významně redukuje počet kruhových cest, výsledkem toho je zlepšení výkonu. SMB1 má také slučovací mechanismus, známý jako AndX, k sloučení více akcí, ale klienti Microsoftu používají AndX jen zřídka kdy. To také zavádí pojem „Odolný přenos souborů“, což umožňuje připojení přežít krátké výpadky sítě, které jsou typické v bezdrátové síti, aniž by bylo nutné se opětovně připojovat.

SMB2 má podporu pro symbolické adresy. Mezi další vylepšení patří kešování vlastností souborů, zlepšení podepisování zpráv pomocí hašovacího algoritmu HMAC SHA-256 a lepší škálovatelnost zvýšením počtu uživatelů, sdílených a otevřených souborů. Protokol SMB1 používá 16bitovou velikost dat, což omezuje maximální velikost bloku na 64 KiB. SMB2 využívá pro offset v souboru 32 bitů nebo 64 a 128 bitů, čímž se odstraňuje předchozí omezení na velikost bloku, což zlepšuje výkon a přenos velkých souborů přes rychlé sítě.

Windows Vista/Server 2008 a starší operační systémy používají SMB2, když komunikují s dalšími stroji, které jsou také schopny používat SMB2. Protokol SMB1 je nadále používán při komunikaci se staršími verzemi Windows, Sambou či NAS. Samba 3.5 obsahuje experimentální podporu SMB2. Samba 3.6 již SMB2 plně podporuje, s výjimkou změny uživatelských kvót s využitím nástrojů systému Windows pro řízení kvót.

Když byl SMB2 představen, přinesl mnoho výhod. SMB1, původně vyvinut IBM, se později stal součástí nejrůznějších operačních systému, kromě Windows například Xenix, OS/2 a VMS.

SMB 2.1

SMB 2.1 byl zaveden s Windows 7 a Windows Server 2008 R2, přinesl drobné vylepšení výkonu.

SMB 3.0

SMB 3.0 (předchozí název byl SMB 2.2) byl zaveden s Windows 8 a Windows Server 2012. Přinesl několik významných změn, například SMB Direct Protocol a SMB Multichannel, které přinášejí nové funkce a zlepšují výkon SMB2, zejména při použití ve virtualizovaných datových centrech.

SMB 3.02

SMB 3.02 byl zaveden s Windows 8.1 a Windows Server 2012 R2.

Literatura

  • Fedor Kállay, Peter Peniak: Počítačové sítě a jejich aplikace, GRADA Publishing, 2003; ISBN 80-247-0545-1

Externí odkazy