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
editovatProtokol 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
editovatProtokol 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
editovatZ 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- Klient zasílá serveru požadavek — dochází ke specifikaci parametru spojení a verzí protokolu mezi serverem a klientem.
- 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
editovatSID | 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 / SMB3
editovatMicrosoft 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
editovatSMB 2.1 byl zaveden s Windows 7 a Windows Server 2008 R2, přinesl drobné vylepšení výkonu.
SMB 3.0
editovatSMB 3.0 (předchozí název byl SMB 2.2)[1] byl zaveden s Windows 8 a Windows Server 2012.[1] 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,[2] zejména při použití ve virtualizovaných datových centrech.
SMB 3.0.2
editovatSMB 3.0.2 byl zaveden s Windows 8.1 a Windows Server 2012 R2. V těchto verzích bylo pro zvýšení bezpečnosti možné vypnou SMB verze 1.[3][4]
SMB 3.1.1
editovatSMB verze 3.1.1 byl uveden ve Windows 10 a Windows Server 2016.[5] Nově podporuje šifru AES-128 GCM jako doplněk k AES-128 CCM přidané ve verzi SMB3 a implementuje předautentizační kontrolu integrity pomocí SHA-512. SMB 3.1.1 vyžaduje bezpečné vyjednávání pokud se připojuje ke klientům, kteří jej v podporované SMB verzi umožňují.[6]
Odkazy
editovatLiteratura
editovat- Fedor Kállay, Peter Peniak: Počítačové sítě a jejich aplikace, GRADA Publishing, 2003; ISBN 80-247-0545-1
Reference
editovat- ↑ a b Jeffrey Snover. SMB 2.2 is now SMB 3.0 [online]. April 19, 2012 [cit. 2020-07-06]. Dostupné v archivu pořízeném z originálu dne July 8, 2020.
- ↑ Chelsio Communications. 40G SMB Direct [online]. 2 April 2013 [cit. 2013-06-18]. Dostupné v archivu pořízeném z originálu dne September 7, 2013.
- ↑ Eric Geier. WindowsNetworking.com: Improvements in the SMB 3.0 and 3.02 Protocol Updates [online]. December 5, 2013 [cit. 2015-04-06]. Dostupné v archivu pořízeném z originálu dne April 9, 2015.
- ↑ Jose Barreto. SMB3 Networking Links for Windows Server 2012 R2 [online]. Microsoft TechNet Server & Management Blogs, April 30, 2015 [cit. 2016-08-14]. Dostupné v archivu pořízeném z originálu dne August 26, 2016.
- ↑ Jose Barreto. What's new in SMB 3.1.1 in the Windows Server 2016 Technical Preview 2 [online]. Microsoft TechNet Server & Management Blogs, May 5, 2015 [cit. 2016-08-14]. Dostupné v archivu pořízeném z originálu dne October 8, 2016.
- ↑ SMB security enhancements [online]. Microsoft Learn [cit. 2023-04-10]. Dostupné v archivu pořízeném z originálu dne 2023-04-10.
Externí odkazy
editovat- Obrázky, zvuky či videa k tématu Server Message Block na Wikimedia Commons