Szenario mit Microsoft SMB-Protokollpaketaustausch

Dieses Thema enthält ein Beispiel für einen Microsoft SMB-Protokoll-Paketaustausch zwischen einem Client und einem Server. Die folgenden Schritte enthalten eine Übersicht über den Prozess:

  1. Client und Server richten eine NetBIOS-Sitzung ein.
  2. Client und Server handeln den Microsoft SMB-Protokolldialekt aus.
  3. Der Client meldet sich beim Server an.
  4. Der Client stellt eine Verbindung mit einer Freigabe auf dem Server her.
  5. Der Client öffnet eine Datei auf der Freigabe.
  6. Der Client liest aus der Datei.

Zunächst wird eine Vollduplex-TCP-Verbindung vom Client mit dem Server hergestellt. Anschließend erstellt und sendet der Client ein NetBIOS-Sitzungsanforderungspaket über die TCP-Verbindung. Wenn das Paket ordnungsgemäß formatiert wurde, gibt der Server ein Paket zurück, das eine Nachricht enthält, die bestätigt, dass die Sitzung eingerichtet wurde. Danach sendet der Client die ersten Microsoft SMB-Protokollpakete an den Server.

Paket 1: SMB_COM_NEGOTIATE
Richtung: Client zu Server
Beschreibung: Der Client fordert an, dass der Server den Microsoft SMB-Protokolldialekt aushandelt. Eine Liste von Zeichenfolgen, die die Dialekte identifizieren, mit denen der Client arbeiten kann, ist im Paket enthalten.
Paket 2: SMB_COM_NEGOTIATE
Richtung: Server zu Client
Beschreibung: Der Server antwortet auf die Anforderung des Clients, den Microsoft SMB-Protokolldialekt zu identifizieren, der in der Sitzung verwendet werden soll. Das zurückgegebene Paket enthält auch eine zufällige 8-Byte-Zeichenfolge, die im nächsten Schritt verwendet wird, um den Client während des Anmeldeprozesses zu authentifizieren.
Paket 3: SMB_COM_SESSION_SETUP_ANDX
Richtung: Client zu Server
Beschreibung: Dieses Paket enthält Informationen zu Clientfunktionen, sodass dieses Paket auch dann gesendet werden muss, wenn der Server nur Sicherheit auf Freigabeebene implementiert hat.
Paket 3: SMB_COM_SESSION_SETUP_ANDX
Richtung: Server zu Client
Beschreibung: Wenn die Anforderung/Antwort vom Server akzeptiert wird, ist eine gültige UID im Paket enthalten, das an den Client zurückgegeben wird. Wenn dies nicht akzeptiert wird, gibt der Server einen Fehlercode in diesem Paket zurück und verweigert den Zugriff.
Paket 4: SMB_COM_TREE_CONNECT_ANDX
Richtung: Client zu Server
Beschreibung: Der Client fordert Zugriff auf die Freigabe an. Das Paket enthält den vollständig angegebenen Pfad der Freigabe im UNC-Format.
Paket 5: SMB_COM_TREE_CONNECT_ANDX
Richtung: Server zu Client
Beschreibung: Wenn der Zugriff auf die Freigabe gewährt wird, gibt der Server die 16-Bit-Struktur-ID (TID) zurück, die der Freigabe in diesem Paket entspricht. Wenn die Freigabe nicht vorhanden ist oder der Benutzer über unzureichende Anmeldeinformationen für den Zugriff auf die Freigabe verfügt, gibt der Server einen Fehlercode in diesem Paket zurück und verweigert den Zugriff auf die Freigabe.
Paket 6: SMB_COM_OPEN_ANDX
Richtung: Client zu Server
Beschreibung: Der Client fordert den Server auf, im Namen des Clients eine Datei auf der freigabe zu öffnen, auf die zugegriffen wird. Dieses Paket enthält den Namen der zu öffnenden Datei.
Paket 7: SMB_COM_OPEN_ANDX
Richtung: Server zu Client
Beschreibung: Wenn der Zugriff auf die Datei gewährt wird, gibt der Server die Datei-ID der angeforderten Datei zurück. Wenn die Datei nicht vorhanden ist oder der Benutzer über unzureichende Anmeldeinformationen für den Zugriff auf die Datei verfügt, gibt der Server einen Fehlercode in diesem Paket zurück und verweigert den Zugriff auf die Datei.
Paket 8: SMB_COM_READ_ANDX
Richtung: Client zu Server
Beschreibung: Der Client fordert den Server auf, Daten aus der geöffneten Datei im Namen des Clients zu lesen und diese Daten an den Client zurückzugeben. Die Datei-ID, die vom Client beim Öffnen der Datei abgerufen wird, ist in diesem Paket enthalten, um zu ermitteln, aus welcher geöffneten Datei der Server Daten lesen soll.
Paket 9: SMB_COM_READ_ANDX
Richtung: Server zu Client
Beschreibung: Der Server gibt die angeforderten Dateidaten in diesem Paket zurück. Ein Fehler ist hier unwahrscheinlich, da der Zugriff auf den Server, die Freigabe und die Datei gewährt wurde. Dies kann jedoch in einigen Situationen vorkommen, z. B. wenn der Zugriff auf eine Freigabe zwischen dem Öffnen der Datei und dem Zeitpunkt des Lesens geändert wird.

Hinweis

Wenn Sie ein CIFS implementieren, das keine Änderungsbenachrichtigungen unterstützt, kann Windows kein ausstehendes Handle für das Dateisystem beibehalten, und die SMB-Verbindung kann ohne vorherige Ankündigung getrennt werden.