Common Internet File System (CIFS) to protokół, który umożliwia współdzielenie zasobów, takich jak pliki, drukarki i porty szeregowe, pomiędzy różnymi komputerami w obrębie sieci.
Dzięki temu mechanizmowi użytkownicy mają możliwość otwierania, przeglądania oraz modyfikowania udostępnionych dokumentów, a zmiany te są automatycznie zapisywane na ich lokalnych komputerach.
Oprócz tego, protokół CIFS daje dostęp do usług komunikacji międzyprocesowej oraz kolejek zadań drukowania.
Protokół CIFS został opracowany na początku lat 80. przez firmę IBM.
Zasada działania protokołu CIFS
CIFS funkcjonuje w oparciu o architekturę klient-serwer. W interakcji uczestniczą trzy główne elementy: klient, aplikacja i serwer.
- Klient jest odpowiedzialny za implementację protokołu i generowanie większości komunikatów.
- Serwer realizuje protokół i udostępnia główne funkcje, czyli świadczy usługi.
- Aplikacja to program, który wykonuje zadania takie jak obsługa graficznego interfejsu użytkownika, zarządzanie plikami lub przetwarzanie tekstu.
Proces działania protokołu CIFS wygląda następująco:
- Pomiędzy klientem a serwerem ustanawiana jest sesja NetBIOS, umożliwiająca dostęp do współdzielonych zasobów.
- Następuje etap negocjacji, podczas którego klient i serwer uzgadniają, który dialekt protokołu będzie używany.
- Klient przesyła dane uwierzytelniające, zazwyczaj nazwę użytkownika i hasło, do serwera wraz z unikalnym identyfikatorem.
- Za proces uwierzytelniania odpowiada głównie usługa Active Directory, chociaż CIFS sam w sobie bezpośrednio go nie realizuje.
- W przypadku pomyślnego uwierzytelnienia serwer generuje i przesyła unikalny identyfikator.
- Serwer weryfikuje uprawnienia klienta oraz poprawność nazwy udziału. Jeśli wszystkie te warunki zostaną spełnione, klient otrzymuje dostęp do udostępnionych zasobów, takich jak pliki i katalogi.
Charakterystyka protokołu CIFS
Niezależność od transportu
Protokół CIFS nie określa konkretnych wymagań dotyczących protokołu transportowego, który jest wykorzystywany do przesyłania komunikatów SMB między serwerem a klientem. CIFS jest zazwyczaj przesyłany za pomocą protokołu zorientowanego na połączenie.
Dostęp do plików
Klient/użytkownik ma możliwość otwierania, odczytywania, edytowania i zamykania wielu plików znajdujących się na serwerze. Zadaniem serwera jest udostępnianie plików, co pozwala na jednoczesny dostęp wielu klientów do tego samego pliku z różnych urządzeń.
Atrybuty plików, katalogów i woluminów
Protokół CIFS umożliwia zarówno wysyłanie zapytań, jak i, w ograniczonym zakresie, ustawianie atrybutów katalogu, pliku i woluminu. Dodatkowo, obsługuje listy kontroli dostępu (ACL).
Rozszerzone podprotokoły
CIFS współpracuje z różnymi podprotokołami, które zapewniają bezpośredni dostęp do rozszerzonych funkcji serwera.
Obsługa komunikacji międzyprocesowej za pomocą nazwanych potoków
Klient ma możliwość otwierania, zapisywania, odczytywania i zamykania nazwanych potoków na konkretnym serwerze. Nazwane potoki stanowią ścieżkę komunikacyjną pomiędzy usługami serwera i klienta.
Elastyczność połączeń
Pojedynczy klient może nawiązywać połączenia z wieloma serwerami, a także tworzyć jedno lub więcej połączeń z tym samym serwerem.
Obsługa negocjacji funkcji
Zestaw obsługiwanych funkcji oraz dialekt protokołu są negocjowane indywidualnie dla każdego połączenia.
Blokowanie plików i rekordów oraz bezpieczne buforowanie
CIFS umożliwia zapis i blokowanie plików. Protokół ten obsługuje również oportunistyczne blokowanie plików, dając klientom możliwość buforowania danych w celu zwiększenia wydajności.
Powiadomienia o zmianach w plikach i katalogach
Klienci korzystający z protokołu CIFS mogą zgłaszać zapotrzebowanie na powiadomienia o wszelkich zmianach w danym zasobie, takim jak plik w katalogu lub sam katalog na konkretnym serwerze.
Obsługa rozproszonego systemu plików (DFS)
DFS umożliwia stworzenie globalnej przestrzeni nazw, która agreguje zasoby z różnych serwerów.
Obsługa wielu kontekstów bezpieczeństwa
Klient ma możliwość wykorzystania oraz tworzenia jednego lub wielu kontekstów bezpieczeństwa w ramach konkretnego połączenia.
Warunki konieczne do korzystania z CIFS
CIFS wymaga podstawowej warstwy transportowej o charakterze sieciowym, która jest zazwyczaj zorientowana na połączenie. W niektórych sytuacjach, komunikaty CIFS mogą być przesyłane przez transport bezpołączeniowy po wprowadzeniu niewielkich zmian.
Przed rozpoczęciem wymiany komunikatów CIFS za pośrednictwem transportu zorientowanego na połączenie, konieczne jest nawiązanie połączenia.
W przypadku wymiany komunikatów w ramach takiej sieci, CIFS zakłada dostępność jednego lub więcej z następujących zasobów:
- Lokalna kolejka drukowania, która przekazuje zadania drukowania do drukarki, umożliwiając tym samym realizację usług drukowania.
- Lokalny system plików lub baza danych, które są prezentowane jako system plików, umożliwiając udostępnianie plików. W tym przypadku zasób jest nazywany składnicą obiektów.
- W celu realizacji komunikacji międzyprocesowej z wykorzystaniem abstrakcji nazwanych potoków, konieczna jest odpowiednia emulacja zaimplementowana w serwerze CIFS lub w systemie plików obsługującym nazwane potoki.
Serwer powinien także dysponować dostępem do bazy danych haseł, która jest niezbędna do procesu uwierzytelniania.
Baza danych haseł przechowuje skróty haseł NT LAN Manager (NTLM) oraz LAN Manager (LM), które są wykorzystywane w procesie uwierzytelniania opartego na wyzwaniu i odpowiedzi.
Konfiguracja protokołu CIFS w systemie Windows
Większość użytkowników nie korzysta na co dzień z protokołu CIFS, co wyjaśnia, dlaczego ta funkcja jest domyślnie wyłączona w systemach Windows 10 i 11.
Aby ją aktywować, należy wykonać poniższe kroki:
- Otwórz Panel sterowania i przejdź do opcji „Programy i funkcje”. W lewej części okna kliknij „Włącz lub wyłącz funkcje systemu Windows”.
- Przewiń listę w dół, aż znajdziesz pozycję „Obsługa udostępniania plików SMB 1.0/CIFS” i zaznacz to pole. Kliknij ikonę „+”, aby wyświetlić wszystkie dostępne opcje.
Powyższe czynności włączą obsługę CIFS. Jednakże, konieczne jest jeszcze skonfigurowanie sieci, do której jesteś podłączony, dla protokołu CIFS. Proces ten wygląda następująco:
2. Kliknij „Centrum sieci i udostępniania”. Następnie w lewym panelu kliknij „Zmień zaawansowane ustawienia udostępniania”.
3. W sekcji „Zmień zaawansowane ustawienia udostępniania” możesz aktywować wykrywanie sieci oraz udostępnianie plików i drukarek. Po dokonaniu zmian, kliknij „Zapisz zmiany”.
Konfiguracja CIFS dla folderu
W celu demonstracji procesu utworzymy na dysku E folder o nazwie „Przykładowy folder”.
2. Kliknij przycisk „Udostępnij”.
Należy pamiętać, że lista użytkowników widocznych w ustawieniach udostępniania odnosi się jedynie do użytkowników skonfigurowanych na danym komputerze z systemem Windows.
Odbiorcy udostępnionych materiałów również muszą odpowiednio skonfigurować swoje systemy, aby uzyskać dostęp do udostępnionych plików.
CIFS a SMB: porównanie i różnice
Przed omówieniem różnic, warto zrozumieć, czym jest protokół Server Message Block (SMB).
Protokół SMB został zaprojektowany z myślą o umożliwieniu klientom odczytywania, zapisywania i edytowania plików na serwerze. W tym kontekście serwerem jest najczęściej sieć lokalna (LAN).
Ewolucja protokołu SMB na przestrzeni lat
- SMB 1.0. Pierwsza wersja SMB, która jest często utożsamiana z protokołem CIFS. Została stworzona dla systemu Windows NT 4.0, a komunikacja odbywała się za pośrednictwem interfejsu NetBIOS.
- SMB 2.0. Wprowadzona przez Microsoft w 2006 roku wraz z systemem operacyjnym Windows Vista. Wprowadziła takie usprawnienia, jak lepsza skalowalność, obsługa dowiązań symbolicznych oraz ulepszone podpisywanie wiadomości.
- SMB 2.1. Wprowadzona w tym samym okresie co system Windows 7 w 2007 roku. Wersja 2.1 oferowała dalsze optymalizacje wydajności oraz nowe mechanizmy blokowania.
- SMB 3.0. Wprowadzona wraz z systemem Windows 8 w 2012 roku. SMB 3.0 początkowo nosiła nazwę SMB 2.2, ale później została przemianowana. Ta wersja wprowadziła możliwość zdalnego dostępu do pamięci poprzez Remote Direct Memory Access (RDMA).
- SMB 3.1.1. Najnowsza wersja w momencie tworzenia tego tekstu. SMB 3.1.1 została stworzona dla systemu Windows 10 w 2015 roku i wprowadziła kontrolę integralności przed uwierzytelnieniem. Dodatkowo wykorzystuje szyfrowanie w trybie Galois/Counter (GCM).
Często dochodzi do pomyłek pomiędzy CIFS i SMB. Warto podkreślić, że protokół SMB powstał wcześniej niż CIFS.
Microsoft ulepszył SMB, tworząc CIFS w latach 90., przez co CIFS stał się dialektem SMB. Microsoft kontynuował rozwój SMB, a aktualna wersja to SMB 3.1.1.
Poniżej przedstawiono główne różnice między CIFS a SMB 3.1.1:
SMB 3.1.1CIFSRok powstaniaStworzony przez IBM na początku lat 80.Stworzony przez Microsoft jako ulepszenie SMB na początku lat 90.WydajnośćSMB 3.1.1 został zaprojektowany w celu wyeliminowania większości problemów związanych z CIFS i wcześniejszymi wersjami SMB. Posiada mechanizmy kontroli wstępnego uwierzytelnienia, które pomagają w zabezpieczaniu plików na serwerze.W momencie powstania CIFS istniały problemy z transmisją plików, bezpieczeństwem itp.UwierzytelnianieSMB 3.1.1 wykorzystuje uwierzytelnianie AES w celu zwiększenia bezpieczeństwa plików udostępnianych na serwerze. Użytkownik musi podać nazwę użytkownika i hasło, aby uzyskać dostęp do plikuCIFS nie posiada wbudowanych mechanizmów uwierzytelniania. W związku z tym pliki nie są odpowiednio zabezpieczone w sieci.Przechowywanie danychSMB 3.1.1 wykorzystuje 32- lub 64-bitowe pola przechowywania danych, co pozwala na obsługę dużych plików. Wykorzystuje protokoły IP/TCP, podobne do protokołów HTTP i FTP.DziałanieProtokół komunikacyjny klient-serwer, który umożliwia współdzielenie dostępu do zasobów w sieci.Klient/użytkownik żąda dostępu do pliku na serwerze, który znajduje się w innym systemie komputerowym w tej samej sieci.
Jakie są ograniczenia protokołu CIFS?
- Brak mechanizmów uwierzytelniania. Jednym z głównych mankamentów CIFS jest brak wbudowanych mechanizmów uwierzytelniania, w przeciwieństwie do nowszych wersji protokołu SMB.
- Ograniczona obsługa dużych plików. CIFS może nie być optymalny w przypadku bardzo dużych plików, co może powodować opóźnienia lub nawet uszkodzenia podczas transferu.
Podsumowanie
Chociaż usługi udostępniania i dostępu do plików w chmurze zyskują coraz większą popularność, tradycyjne protokoły takie jak CIFS nadal pełnią ważną rolę. Obsługa bezpośrednich połączeń poprzez port TCP 445 była jedną z kluczowych zalet CIFS. Pomimo tego, że Microsoft koncentruje się teraz na rozwijaniu SMB, nie można zapominać o CIFS, gdyż stanowi on jeden z dialektów protokołu SMB.
Możesz również sprawdzić, jak uruchomić sprawdzanie plików systemowych w systemie Windows 11/10.
newsblog.pl