Der Server Message Block

Netzwerkprotokolle SMB 3 und SMB 2 im Detail

15.02.2013 von Thomas Hümmler
SMB regelt die grundlegende Kommunikation der Datei- und Druckdienste im Netzwerk. In den aktuellen Windows-Betriebssystemen 8 und Server 2012 ist die neue Version 3 des SMB-Protokolls enthalten. Wie sich diese von Dialekten der SMB-Version 2 und früheren unterscheidet, erläutert dieser Beitrag.

SMB steht für Server Message Block. Dabei handelt es sich um ein Protokoll, in dem die Kommunikation für Datei- und Druckdienste definiert ist. Ursprünglich wurde SMB von IBM entwickelt; 1983 kam die erste Version heraus. Seither stammen die meisten Erweiterungen zum Protokoll von Microsoft. Der Betriebssystemhersteller nutzt SMB heute in allen Windows-Versionen:

Das SMB-Protokoll kann jedoch auch über Betriebssystemgrenzen hinweg gelesen werden. Das GNU-Projekt Samba macht's möglich - seit 1992. Mit dieser Software werden Windows-Dienste wie Active Directory sowohl für Unix- als auch für Linux-Server und -Clients geöffnet. War es in den ersten 15 Jahren vergleichsweise schwierig, das Protokoll zu durchschauen, ist das seit 2007 dank der Europäischen Union keine große Herausforderung mehr: Microsoft hat auf Druck der EU den proprietären Code des SMB-Protokolls veröffentlicht.

Voraussetzungen für die Kommunikation via SMB

Damit über SMB kommuniziert werden kann, müssen drei Voraussetzungen gegeben sein: Erstens muss ein Transportprotokoll vorhanden sein. Das kann entweder TCP oder NetBIOS over TCP sein. Die SMB-3.0-Version unterstützt optional auch Remote Direct Memory Access. RDMA wird ab Windows Server 2012 supportet. Damit ist der direkte Zugriff auf den Speicher eines anderen Rechners möglich; das Betriebssystem bleibt dabei außen vor. RDMA wird übrigens nicht nur von Windows unterstützt. Auch Red Hat und Oracle besitzen die erforderlichen Schnittstellen.

Die zweite Voraussetzung für SMB ist eine zugrunde liegende lokale Ressource. Das kann zum Beispiel ein Dateisystem auf dem Server sein, das Dateien oder Druckerobjekte bereitstellt.

Drittens müssen sowohl der Server als auch die Clients einfache und geschützte GSS-API-Übertragung beherrschen. Die genauen Spezifikationen haben Mitarbeiter von Microsoft und Sun Microsystems bereits 2005 im RFC 4178 umrissen Microsoft selbst hat den Mechanismus außerdem im Microsoft Software Developer Network beschrieben. Die GSS-API greift dabei zumeist auf Kerberos oder das Authentifikationsprotokoll von NT-LAN-Manager zurück.

Vorteile von SMB 3 und SMB 2 gegenüber älteren Versionen

Die Version 2 des SMB-Protokolls hat gegenüber den älteren Versionen, die bis Windows XP eingesetzt wurden, einige Vorteile. So können mit aktuellen SMB-Versionen von einem Client-Rechner mehr Dateien gleichzeitig geöffnet werden. Ebenso sind auf einem Server mehr Shares und Sessions möglich. Darüber hinaus kann SMB ab Version 2 mit symbolischen Links umgehen. Die Datenintegrität wird mit dem starken HMAC-SHA256-Algorithmus gewährleistet. So sollte bei der Übertragung nichts schiefgehen; denn selbst gegen kleinere Unterbrechungen der Netzwerkverbindung ist SMB 2 resistenter - genügend Gründe also, sich endlich von Windows XP zu verabschieden.

Beim Einsatz von Windows 8 und Windows Server 2012 kommt mit SMB 3.0 zusätzlich noch ein weiterer Vorteil zum Tragen: Die Übertragung von Daten und Druckaufträgen zwischen Server und Client findet verschlüsselt statt.

SMB 3/2 und andere Protokolle

Sobald Client und Server einen SMB-2-Dialekt verwenden, läuft die gesamte Verbindung über SMB 2 - entweder über TCP oder über NetBIOS over TCP oder RDMA (mit SMB 3 auf Windows Server 2012). Um Namen aufzulösen, kann SMB 2 das DFS-Referral-Protokoll nutzen. Über dieses Protokoll im Distributed File System kommunizieren DFS-Clients und -Server mittels SMB-2-I/O-Control-Befehlen; SMB dient dabei als Transportschicht. Die Kommunikation zwischen SMB-2- und DFS-Server findet dabei lokal auf dem Server statt.

Beziehungssache: SMB 2 und SMB 3 nutzen verschiedene Protokolle zur Kommunikation im Netzwerk.

Wie bereits erwähnt, nutzt SMB ab Version 2 zur Authentifikation der Nutzer die GSS-API. Außerdem ist es möglich, Remote Procedure Calls über SMB oder SMB 2 auf dem Server abzusetzen. Diese können über sogenannte "benannte Pipes" im SMB-2-Protokoll übertragen werden. Welches SMB-Protokoll dazu gewählt wird, bestimmt allerdings der Client.

Um Bandbreitenprobleme zu vermeiden, gibt es den sogenannten BrancheCash. Der sorgt in Wide Area Networks (WAN) dafür, dass Clients zunächst auf lokal gelegene Peer-Clients oder sogar auf dedizierte Caching-Server zugreifen. Erst wenn die angeforderten Inhalte dort nicht vorhanden sind, ist der Remote-Server dran. Windows Vista und die Erstausgabe von Windows Server 2008 eignen sich dafür aber nicht. Das BrancheCashing wird erst ab SMB 2.1 und 3.0 unterstützt. Auf Client-Seite ist zumindest Windows 7 Voraussetzung; als Caching-Server kann frühestens Windows Server 2008 R2 dienen.

Das Server Service Remote Protocol nutzt SMB 2 für die File-Server-Verwaltung. Umgekehrt fordert SMB 2 über dieses Protokoll Informationen an, etwa zur Synchronisierung auf Shares und in Sitzungen. Der Synchronisierungsmechanismus hängt vom SMB-2-Server ab.

Unterschiede zwischen SMB 3 und SMB 2

Microsoft spricht in seiner technischen Dokumentation zum SMB-Protokoll größtenteils nur vom SMB-2-Protokoll. Damit sind die beiden neuen Versionen 2 und 3 gemeint. Diese unterscheiden sich in vielen Details vom früheren SMB-Protokoll. So ist beispielsweise das Paketformat neu. Dem Benutzer fällt das zunächst nicht auf. Denn aus Kompatibilitätsgründen kann das originale SMB auch mit SMB 2 kommunizieren. Dementsprechend unterstützt SMB 2 wie der Vorgänger folgende Funktionen:

Nützliche Erweiterung: Seit der Version 2.1 hat SMB Server-Multiprotokoll-Anfragen im Repertoire.

Über diese Funktionen hinaus beherrscht SMB 2 noch weitere. So kann das Öffnen einer Datei nach einer kurzen Trennung der Netzwerkverbindung fortgesetzt werden. Außerdem bietet der Server Skalierbarkeit in Bezug auf die Zahl der Shares, der Benutzer und simultan geöffneter Dateien. Des Weiteren kann der Server die Zahl der gleichzeitigen Operationen eines Clients abgleichen und unterstützt - wie bereits erwähnt - symbolische Links sowie einen stärkeren Authentifizierungs-Algorithmus.

In die SMB-Version 2.1 sind einige kleine Korrekturen und neue Funktionen eingeflossen. So kann ein Client zum Beispiel eine Multiprotokollanfrage starten und gleich mitteilen, welche SMB-2-Dialekte er versteht. Ein Client kann außerdem die Hash-Werte einer Datei anfordern, die dann über das BrancheCaching geöffnet wird.

Neu mit SMB 3.0: Clients im Netzwerk können innerhalb einer Sitzung vielfache Verbindungen zu einem Server herstellen.

Mit SMB 3.0 sind noch weitere neue Funktionen hinzugekommen. So kann der Client hier sogar Hashes für bestimmte Teile einer Datei anfordern oder ein Verzeichnis leasen. Die Verschlüsselung des Datenverkehrs zwischen Client und Server kann auf Share-Basis erfolgen, und mit der entsprechenden Hardware ist der Einsatz von Remote Direct Memory Access (RDMA) möglich. Neben erhöhter Ausfallsicherheit kann ein Client für eine Sitzung auch vielfache Serververbindungen herstellen. Eine Anfrage kann dann über jeden der Sitzung zugeordneten Kanal gesendet werden. Die Antwort darauf erfolgt über denselben Kanal wie bei der Anfrage. (hal)