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).
|