Server Message Block

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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[editovat | editovat zdroj]

  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[editovat | editovat zdroj]

SID S C RC AH RC RS NID PID UID MID P PCd BL B
1B 3B 1B 1B 1B 2B 15B 2B 2B 2B 2B 1B 2B 2B 1B
Označení Význam
SID identifikace protokolu SMB
S identifikace dialektu serveru SMB
C funkční kód volané služby
R třída návratového kódu funkce SMB
AH výsledek operace v registru AH procesoru
RC návratový kód operace
RS rezerva pro budoucí rozšíření
NID identifikátor přiřazený sdílenému prostředku
PID identifikátor procesu klienta
UID identifikátor uživatele
MID multiplexní identifikátor procesu klienta
Prmct počet volitelných parametrů k volané funkci
Pc kód parametru volané funkce
Bl délka datové části SMB bloku
B první slabika datové části bloku SMB

SMB2[editovat | editovat zdroj]

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á 16 bitovou 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[editovat | editovat zdroj]

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

SMB 3.0[editovat | editovat zdroj]

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[editovat | editovat zdroj]

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

Reference[editovat | editovat zdroj]

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