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ů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 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 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é 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 |