Udostępnij za pośrednictwem


Scenariusz wymiany pakietów protokołu SMB firmy Microsoft

W tym temacie przedstawiono przykład wymiany pakietów protokołu SMB firmy Microsoft między klientem a serwerem. Poniżej przedstawiono omówienie procesu:

  1. Klient i serwer ustanowią sesję NetBIOS.
  2. Klient i serwer negocjują dialekt protokołu SMB firmy Microsoft.
  3. Klient loguje się na serwerze.
  4. Klient nawiązuje połączenie z udziałem na serwerze.
  5. Klient otwiera plik w udziale.
  6. Klient odczytuje z pliku.

Po pierwsze, połączenie TCP w trybie pełnodupleksowym jest ustanawiane przez klienta z serwerem. Następnie klient kompiluje i wysyła pakiet żądania sesji NetBIOS za pośrednictwem połączenia TCP. Jeśli pakiet został poprawnie sformatowany, serwer zwraca pakiet zawierający komunikat z potwierdzeniem ustanowienia sesji. Następnie klient wysyła do serwera pierwsze pakiety protokołu SMB firmy Microsoft.

pakiet 1: SMB_COM_NEGOTIATE
kierunek : klient na serwer
Opis: Klient żąda, aby serwer negocjował dialekt Protokołu SMB firmy Microsoft. Lista ciągów identyfikujących dialekty, z którymi klient może pracować, znajduje się w pakiecie.
pakiet 2: SMB_COM_NEGOTIATE
kierunek : serwer do klienta
Opis: Serwer odpowiada na żądanie klienta w celu zidentyfikowania dialektu protokołu SMB firmy Microsoft, który będzie używany w sesji. Zwrócony pakiet zawiera również 8-bajtowy ciąg losowy, który będzie używany w następnym kroku do uwierzytelniania klienta podczas procesu logowania.
pakiet 3: SMB_COM_SESSION_SETUP_ANDX
kierunek : klient na serwer
Opis: Ten pakiet zawiera informacje o możliwościach klienta, więc ten pakiet musi być wysyłany nawet wtedy, gdy serwer zaimplementował tylko zabezpieczenia na poziomie udziału.
pakiet 3: SMB_COM_SESSION_SETUP_ANDX
kierunek : serwer do klienta
Opis: Jeśli żądanie/odpowiedź zostanie zaakceptowane przez serwer, prawidłowy identyfikator UID jest uwzględniony w pakiecie zwróconym klientowi. Jeśli nie zostanie zaakceptowana, serwer zwróci kod błędu w tym pakiecie i odmówi dostępu.
pakiet 4: SMB_COM_TREE_CONNECT_ANDX
kierunek : klient na serwer
Opis: Klient żąda dostępu do udziału. Pakiet zawiera w pełni określoną ścieżkę udziału w formacie UNC.
pakiet 5: SMB_COM_TREE_CONNECT_ANDX
kierunek : serwer do klienta
Opis: Jeśli udzielono dostępu do udziału, serwer zwraca 16-bitowy identyfikator drzewa (TID), który odpowiada udziałowi w tym pakiecie. Jeśli udział nie istnieje lub użytkownik nie ma wystarczających poświadczeń dostępu do udziału, serwer zwróci kod błędu w tym pakiecie i odmówi dostępu do udziału.
pakiet 6: SMB_COM_OPEN_ANDX
kierunek : klient na serwer
Opis: Klient żąda, aby serwer otworzył plik w udostępnionym udziale w imieniu klienta. Ten pakiet zawiera nazwę pliku, który ma zostać otwarty.
pakiet 7: SMB_COM_OPEN_ANDX
kierunek : serwer do klienta
Opis: Jeśli udzielono dostępu do pliku, serwer zwraca identyfikator pliku żądanego pliku. Jeśli plik nie istnieje lub użytkownik ma niewystarczające poświadczenia dostępu do pliku, serwer zwróci kod błędu w tym pakiecie i odmówi dostępu do pliku.
pakiet 8: SMB_COM_READ_ANDX
kierunek : klient na serwer
Opis: Klient żąda od serwera odczytu danych z otwartego pliku w imieniu klienta i zwraca te dane do klienta. Identyfikator pliku uzyskany przez klienta podczas otwierania pliku jest uwzględniony w tym pakiecie w celu zidentyfikowania, z którego otwartego pliku serwer powinien odczytywać dane.
pakiet 9: SMB_COM_READ_ANDX
kierunek : serwer do klienta
Opis: Serwer zwraca żądane dane pliku w tym pakiecie. Błąd w tym miejscu jest mało prawdopodobny, ponieważ udzielono dostępu do serwera, udziału i pliku. Może się to zdarzyć w niektórych sytuacjach: na przykład jeśli dostęp do udziału zostanie zmieniony między czasem otwarcia pliku a czasem jego odczytu.

Nuta

W przypadku zaimplementowania systemu CIFS, który nie obsługuje powiadomień o zmianach, system Windows nie może zachować zaległego dojścia do systemu plików, a połączenie SMB może odejść bez powiadomienia.