Open Source im professionellen Einsatz
Linux-Magazin 02/2003

Das SMB-Protokoll von innen

Blöcke und Nachrichten

Das SMB-Protokoll (Server Messages Block) legt fest, wie Windows-Computer im Netzwerk kommunizieren. SMB ermöglicht den Zugriff auf Dateien, Drucker, serielle Schnittstellen und Kommunikationskanäle wie benannte Pipes und Mail-Slots. Samba ist eine freie SMB-Implementierung.

550

SMB ist ein Client-Server-Protokoll, das nach dem Anfrage-Antwort-Prinzip arbeitet. Der Client sendet eine Anfrage an einen Server und der schickt eine Antwort an den Client zurück. Dass der Server sich ohne vorherige Anfrage beim Client meldet, geschieht nur in ganz bestimmten Fällen. In der SMB-Welt sind Clients Systeme, die Freigaben verwenden, und Server stellen die Freigaben zur Verfügung. Die meisten SMB-fähigen Computer lassen sich sowohl als Client als auch als Server einsetzen (Peer-to-Peer-Netzwerk).

Microsoft bezeichnet das SMB-Protokoll seit einiger Zeit auch als CIFS (Common Internet File System), was etwas moderner klingt. Die von Microsoft zur Verfügung gestellte Dokumentation ist alllerdings mager und unvollständig - es gibt keinen offiziellen Standard. Die Samba-Entwickler mussten ihre Protokollkenntnisse teilweise durch Analysen der Kommunikation erwerben.

Das Format der SMB-Nachrichten ist einfach. Eine SMB-Nachricht (auch SMB-Paket genannt) besteht aus einem Vorspann (Header) und dem eigentlichen Inhalt. Der Vorspann beginnt immer mit der Protokollidentifikation »0xFF«, gefolgt von einem 1 Byte langen Kommando-Code. Die weiteren Vorspannfelder sind die Fehlerklasse, der Fehlercode, der Tree Identifier (TID) sowie die jeweilige ID des aufrufenden Prozesses, eine Benutzerkennung und ein Multiplex Identifier.

Einfaches Nachrichten-format

Zwischen einigen dieser Felder befinden sich noch leere, die für eine zukünftige Verwendung reserviert sind. Der Inhalt der SMB-Nachricht besteht aus einem Kommando oder einer Antwort auf einen Befehl. Die Länge des Befehls beziehungsweise der Antwort ist variabel. Jedes Kommando besitzt eigene Parameter und Daten, die jeweils mitgeschickt werden. Das erste Feld des Befehls ist 1 Byte groß und gibt die Länge des Befehls an. Anschließend kommen noch Parameter-Wörter sowie eine Angabe für die Anzahl der Parameter und schließlich die Parameter selbst.

Es empfiehlt sich, zunächst einen Blick auf eine einfache Verbindung zu werfen, um das Protokoll besser zu verstehen. Wenn der Benutzer auf ein Netzwerkverzeichnis oder einen Drucker zugreifen will, kommt die Software-Schnittstelle NetBIOS ins Spiel, die die Sitzungsebene repräsentiert und somit der alleinige Ansprechpartner für Anwendungen ist. Der Client schickt ein Anfragepaket (Session Request) an den Server, das die NetBIOS-Namen des Servers und des Clients enthält. Der Server antwortet mit »Session Granted« - die Verbindung ist hergestellt.

Verbindungsaufnahme

Daraufhin beginnen Client und Server damit, die Protokollvariante auszuhandeln, wozu der Client dem Server ein weiteres Kommando schickt, nämlich »SMBnegprot«. Dieses Paket enthält eine Liste sämtlicher SMB-Protokollvarianten, die der Client beherrscht. Der Server antwortet mit einem Zeiger auf die von ihm gewünschte Protokollvariante, wobei »0« auf den ersten Protokolldialekt in der Liste zeigt, den der Client gesendet hat. Die Antwort »0xFF« bedeutet, dass der Server kein kompatibles Protokoll spricht und eine weitere Kommunikation ausgeschlossen ist.

Im nächsten Schritt übermittelt der Client dem Server einen Benutzernamen mit dem zugehörigen Kennwort, den Namen der Arbeitsgruppe und die maximale Größe der übertragbaren Daten. Dazu kommt eine Angabe über die maximale Größe der Client-Warteschlange. Im selben Paket sendet der Client den nächsten Befehl, nämlich eine Verbindungsanforderung (Tree Connect). Der Server schickt dem Client einen Tree Identifier (TID), womit der Client nun Dateien öffnen, lesen, schreiben und schließen kann.

Außerdem schickt der Server dem Client noch die Dienstkennung »A«, die für eine Verzeichnisfreigabe steht. Weitere mögliche Dienstkennungen sind »PT1« für Druckerwarteschlangen, »COMM« für serielle Anschlüsse und »IPCQ« für Named Pipes.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Wins-Wins-Situation

    Windows-Server verteilen mit dem Wins-Dienst die Einträge in ihren Datenbanken untereinander. Das ist meist der Grund, in manchen Netzen überhaupt noch Windows-Server mitlaufen zu lassen. Mit Samba4Wins als Bestandteil des kommenden Samba 4 wird das jetzt überflüssig.

  • Mit fremden Fenstern schmücken

    In heterogener Umgebung ist SMB das Protokoll der Wahl. Gegenüber NFS authentifiziert es seine Benutzer auf dem Server. Intern ist SMB aber reichlich verworren - Samba-Experten vermuten, dass selbst Microsofts eigene Dokumentation riesige Löcher hat.

  • Tooltipps
  • Tanzquartett

    Von Samba 4 existiert seit Ende Januar nur eine erste Technical Preview. Doch lässt der Quellcode der Neuimplementation schon ahnen, dass es keine Trippelschrittchen sind, die die Entwicklung macht.

  • Eier legende Wollmilchsau

    Die Heft-CD enthält die neueste Version von Open School Server, einer SLES-basierten All-in-one-Lösung für Schulen, kleine Unternehmen und alle, die schnell einen Mail- oder Groupware-Server aufsetzen möchten. Dieser Artikel erklärt das Wie und Warum.

comments powered by Disqus

Ausgabe 11/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.