Server Message Block

Server Message Block (SMB) známý také jakoCommon Internet File System (CIFS) je síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborůmtiská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 rodinyWindows.

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 díky firmě Microsoft je rozšířený v oblasti komunikace souborových serverů a klientů sítí LAN. Protokol SMB využívají souborové a tiskové serverysíťových operačních systémů IBM (např. LAN ServerOS/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é 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í k 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

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