SMB

3. SMB/CIFS

SMB (Server Message Block), zwany również CIFS (Common Internet File System) jest protokołem służącym do realizacji współdzielenia plików w ramach LAN. Został stworzony na początku lat 80 przez Microsoft i Intela.

W skrócie, sposób działania CIFS jest następujący: klient wysyła żądanie do serwera. Żądanie to może dotyczyć np. otwarcia, czy czytania z pliku. Serwer otrzymuje pakiet, sprawdza czy żądanie jest poprawnie sformułowane, sprawdza uprawnienia klienta do plików, wykonuje żądanie i odsyła odpowiedź do klienta. Klient czyta odpowiedź i sprawdza, czy jest to to czego chciał.

Tak jak wspominałem, CIFS używa w większości przypadków netBIOSu aby realizować samą komunikację przez sieć. Może jednak być to zupełnie inny protokół - byleby zapewnił to co CIFSowi jest potrzebne do działania.

Czasami dokonuje się rozróżnienia pomiędzy CIFS i SMB w ten sposób, że SMB zapewnia podstawową funkcjonalność operowania na plikach, a CIFS to oprócz tego cały pakiet dodatkowych usług takich jak drukowanie sieciowe, czy przeglądanie otoczenia sieciowego przy użyciu tzw. Browse Servers.

Oto lista usług zapewnianych przez CIFS:

  • Dostęp do plików - open/close/read/write/seek.
  • · Lockowanie plików i rekordów - klient może zapenić sobie wyłączność dostępu do pliku.
  • · Caching, read-ahead, write-behind - o ile nikt nie pisze do pliku, możliwe jest korzystanie z niego lokalnie bez potrzeby odwoływania sie do serwera.
  • · Informowanie o zmianie pliku/katalogu - klient rejestruje zainteresowanie tymi informacjami.
  • · Negocjowanie wersji protokołu - jest ich sporo i trzeba wybrać ten któego mają używać uczestnicy komunikacji.
  • · Rozszerzone atrybuty - CIFS zapewnia dodatkowe atrybuty plików, oprócz tych które normalnie zapewnia lokalny FS.
  • · Distributed Replicated Virtual Volumes - można tworzyć drzewa katalogowe rozciągające się na wiele serwerów, w ten sposób, że klientowi jawią się jako jeden serwer. Dzięki temu możliwe są też replikacje zapewniające load balancing (czyli automatyczne przekierowywanie klientów do mniej obciążonego serwera - z tymi samymi danymi), oraz transparentne bezpieczeństwo (czyli jeden serwer pada, ale drugi wciąż działa, a klient dalej pracuje).
  • · Niezależność od usługi nazewnictwa - można na przykład użyć DNS.
  • · Batched requests - żeby poprawić wydajność, niektóre żądania można wrzucić w jedną wiadomość.
  • Część wymienionych cech jest dostępnych wyłącznie w najnowszej wersji protokołu (w szczególności Distributed Replicated Virtual Volumes).
     
  •  

     

     

    by Krzysztof Pietrzak 2004

    [7.Warstwa aplikacji] [SMB] [DHCP] [BOOTP] [NCP] [TCP/IP] [NFS] [SNMP]