Server Message Block

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Disambig.svg Na tę stronę wskazuje przekierowanie z „SMB”. Zobacz też: Super Mario Bros..

Server Message Block (SMB) – protokół służący udostępnianiu zasobów komputerowych, m.in. drukarek czy plików. Znany również jako CIFS (Common Internet File System).

Protokół[edytuj | edytuj kod]

SMB jest protokołem typu klient-serwer, a więc opiera się na systemie zapytań generowanych przez klienta i odpowiedzi od serwera. Wyjątkiem od tej zasady jest mechanizm tzw. oplocków (opportunistic lock), w którym to serwer może wygenerować "nieproszony" przez klienta sygnał informujący o zerwaniu wcześniej założonego oplocka (blokady).

Niemniej jednak, chociaż sam protokół ma charakter klient-serwer, to z racji tego, że najczęściej maszyny klienckie dysponują także funkcjami serwerowymi (udostępnianie plików) to sieci SMB nabierają charakteru sieci peer-to-peer.

Historia[edytuj | edytuj kod]

Początki protokołu sięgają połowy lat 80., kiedy to w firmie IBM opracowano jego wczesną wersję (IBM PC Network SMB Protocol). W kolejnych latach protokół był nadal rozwijany, głównie przez firmę Microsoft. W późniejszych latach SMB stał się podstawą Otoczenia sieciowego w systemach Windows.

SMB a inne protokoły[edytuj | edytuj kod]

Protokół SMB wykorzystuje do działania dwa protokoły niższych rzędów - protokół warstwy sesji NetBIOS (który sam wykorzystuje jako warstwę transportu TCP/IP albo DECnet albo IPX/SPX) lub protokół nierutowalny NetBEUI będący protokołem warstw sieci, transportu i sesji. Systemy Windows potrafią korzystać z SMB, a co za tym idzie z NetBIOS, zarówno poprzez TCP/IP (obecnie najpopularniejsza metoda), jak i poprzez IPX/SPX/NetBEUI (stosowany tylko w małych sieciach). Samba instalowana na systemach Unix korzysta tylko z SMB poprzez TCP/IP. (Patrz: model OSI)

Identyfikacja w sieci[edytuj | edytuj kod]

Identyfikacja komputerów w sieciach SMB odbywa się za pomocą ich nazw NetBIOS (nazwą jest ciąg znaków, nie dłuższy niż 15 znaków) lub za pomocą mechanizmów protokołów "podległych" SMB, np. poprzez adresy IP czy nazwy DNS, gdy SMB wykorzystuje protokół TCP do transportu danych.

Wersje[edytuj | edytuj kod]

Pierwotna wersja protokołu - Core Protocol - użyta w pierwszej implementacji PC NETWORK PROGRAM 1.0 umożliwiała podstawowe operacje takie jak:

  • otwieranie i zamykanie plików,
  • otwieranie i zamykanie drukarek,
  • odczyt i zapis z/do plików,
  • tworzenie i kasowanie plików/katalogów,
  • przeszukiwanie katalogów,
  • ustawianie i odczytywanie atrybutów plików,
  • blokowanie i udostępnianie wybranych fragmentów plików.

Z czasem powstawały kolejne: Core Plus Protocol, Lan Manager 1.0 (LANMAN 1.0), LANMAN 2.0, LANMAN 2.1 (Windows for Workgroups), CIFS 1.0/ NT Lan Manager 1.0.

Implementacje[edytuj | edytuj kod]

Najczęściej z implementacją protokołu SMB spotykamy się przy okazji styczności z systemem Windows. Każda wersja począwszy od Windows 3.11 for Workgroups zawiera implementację SMB.

Jednak nie są to jedyne implementacje. Wśród innych należy wymienić także: Samba (dla systemów Unix, open source) oraz produkty komercyjne dla systemów SCO UNIXware, SCO OpenServer, Solaris, HP-UX, OS/2, z/OS (dwie implementacje: DFS/SMB i open-source'owa Samba) i innych.

Bezpieczeństwo[edytuj | edytuj kod]

SMB oferuje dwa modele bezpieczeństwa:

  • share level - polegający na zabezpieczeniu zasobu i znajdujących się w nim plików hasłem. Znajomość samego hasła wystarcza do uzyskania dostępu. Jedyny model np. w Windows for Workgroups, Windows 95/98/Me oraz jako jedna z możliwości w Sambie.
  • user level - oparty na zabezpieczaniu konkretnych plików poprzez prawa dostępu przyporządkowane konkretnym użytkownikom. Znajomość użytkownika i hasła jest warunkiem do uzyskania dostępu do zasobu. Model ten pojawił się w LANMAN-ie 1.0. Jedyny model np. w Windows z linii NT czyli Windows NT 3.51/4.0/2000/XP/2003 oraz jako jedna z możliwości w Sambie.

Inną kwestią dotyczącą bezpieczeństwa jest podział na grupy robocze oraz domeny.

  • Grupa robocza to zespół komputerów, w którym każdy komputer trzyma "u siebie" swoje poufne dane, zaś proces identyfikacji, uwierzytelnienia i autoryzacji przebiega lokalnie. Rozwiązanie preferowane w sieciach domowych i w małych sieciach firmowych.
  • Domena natomiast prezentuje podejście scentralizowane do kwestii przechowywania poufnych danych - w każdej domenie funkcjonuje kontroler domeny (jeden główny oraz ewentualnie kilka zapasowych), który je przechowuje. Procesy identyfikacji, uwierzytelniania i autoryzacji przeprowadzane są więc centralnie. Rozwiązanie preferowane w większych sieciach firmowych i korporacyjnych.

Porty[edytuj | edytuj kod]

Wykorzystywane porty sieciowe:

  • 137/UDP, 138/UDP, 139/TCP
  • opcjonalnie 445/TCP

Linki zewnętrzne[edytuj | edytuj kod]