Dialekt SMB

Jeśli dwa komputery połączą się ze sobą za pośrednictwem SMB w jednym celu, połączenie to może zostać wykorzystane przez wszystkie inne protokoły SMB. Tak więc z natury połączeniowy protokół SMB trzeba traktować jak bezpołączeniowy, gdzie każdy pakiet stanowi oddzielną transakcję, która musi być oddzielnie oceniona pod kątem bezpieczeństwa.

Jeśli na przykład klient połączy się z serwerem, aby uzyskać dostęp do systemu plików, tym samym zainicjuje sesję SMB. Jeśli klient zechce później wydrukować coś na drukarce serwera albo uruchomić program oparty na SMB (na przykład User Manager albo Event Viewer) w tym serwerze, wykorzysta w tym celu istniejące połączenie.

W najczęściej spotykanych zastosowaniach SMB klient nawiązuje połączenie sesyj ne NetBT z serwerem, a potem inicjuje sesję SMB. Na początku sesji SMB serwer i klient negocjują dialekt SMB. Po wynegocjowaniu dialektu klient uwierzytelnia się, jeśli ustalony dialekt obsługuje uwierzytelnianie, a następnie żąda udostępnienia zasobu serwera za pomocą operacji nazywanej podłączeniem do drzewa (tree connect). Kiedy klient nawiąże wstępne połączenie SMB i uwierzytelni się, otrzyma identyfikator użytkownika, czyli UID (user ID). Jeśli klient zechce uzyskać dostęp do innego zasobu, wykorzysta istniejące połączenie i po prostu zażąda kolejnego podłączenia do drzewa. Serwer ustali, czy klient jest upoważniony do tej operacji, sprawdzając przywileje nadane identyfikatorowi UID. Można jednocześnie używać wielu połączeń z zasobami, które są rozróżniane za pomocą identyfikatorów drzewa, czyli TID (tree ID).

Nie wszystkie polecenia SMB wymagają podania ważnych identyfikatorów UID i TID. Oczywiście, nie wymagają ich polecenia służące do nawiązywania połączeń, ale także inne, w tym: polecenia do przesyłania komunikatów, polecenie echa oraz niektóre polecenia zwracające informacje o serwerze. Mogą być używane przez wszystkich bez uwierzytelniania.

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>