Microsoft SMB-Protokollpaket-Exchange-Szenario
In diesem Thema finden Sie ein Beispiel für einen Microsoft SMB-Protokollpaketaustausch zwischen einem Client und einem Server. Die folgenden Schritte sind eine Übersicht über den Prozess:
- Der Client und der Server richten eine NetBIOS-Sitzung ein.
- Der Client und der Server verhandeln den Microsoft SMB-Protokoll-Dialekt.
- Der Client meldet sich beim Server an.
- Der Client stellt eine Verbindung mit einer Freigabe auf dem Server bereit.
- Der Client öffnet eine Datei auf der Freigabe.
- Der Client liest aus der Datei.
Zunächst wird vom Client mit dem Server eine Vollduplex-TCP-Verbindung 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 Meldung 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-Protokoll-Dialekt aushandelt. Eine Liste der 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, um den Microsoft SMB-Protokoll-Dialekt 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 Anmeldevorgangs zu authentifizieren. |
Paket 3: SMB_COM_SESSION_SETUP_ANDX Richtung: Client zu Server Beschreibung: Dieses Paket enthält Informationen zu Clientfunktionen, sodass dieses Paket gesendet werden muss, auch wenn der Server nur Sicherheit auf Freigabeebene implementiert hat. Paket 3: SMB_COM_SESSION_SETUP_ANDX Richtung: Server zu Client Beschreibung: Wenn die Abfrage/Antwort vom Server akzeptiert wird, wird eine gültige UID in das Paket eingeschlossen, das an den Client zurückgegeben wird. Wenn sie 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, eine Datei im Namen des Clients zu öffnen. 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 Auftrag 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 identifizieren, 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 unwahrscheinlich, da der Zugriff auf den Server, die Freigabe und die Datei gewährt wurde. Dies kann jedoch in manchen Situationen geschehen: Wenn beispielsweise der Zugriff auf eine Freigabe zwischen dem Öffnen der Datei und dem Zeitpunkt geändert wird, aus dem sie gelesen wird. |
Anmerkung
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 Vorheriges abwesend sein.