# Server Message Block

SMB über NetBIOS: :
| Anwendung | SMB | SMB | SMB | SMB | SMB |
| Transport | NetBIOS | NetBIOS | NetBIOS | NetBIOS | NetBIOS |
| Vermittlung | NetBEUI | NetBEUI | NetBEUI | NetBEUI | NetBEUI |
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
SMB auf NetBIOS über TCP/IP: :
| Anwendung | SMB | SMB | SMB | SMB | SMB |
| Adapter | NetBIOS (NBT) | NetBIOS (NBT) | NetBIOS (NBT) | NetBIOS (NBT) | NetBIOS (NBT) |
| Transport | UDP | UDP | TCP | TCP | TCP |
| Internet | IP | IP | IP | IP | IP |
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
SMB im TCP/IP-Protokollstapel: :
| Anwendung | SMB | SMB | SMB | SMB | SMB |
| Transport | UDP | UDP | TCP | TCP | TCP |
| Internet | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) |
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
Server Message Block (SMB), in einer Ur-Version auch als Common Internet File System (CIFS) bezeichnet, ist ein Netzprotokoll für Datei-, Druck- und andere Serverdienste in Rechnernetzen. Es ist ein zentraler Teil der Netzdienste der Windows-Produktfamilie und erlaubt den Zugriff auf Dateien und Verzeichnisse, die sich auf einem anderen Computer befinden. Es wird auch vom frei verfügbaren Softwareprojekt Samba verwendet, um Windows-Systemen den Zugriff auf Ressourcen von Unix-basierten Systemen zu ermöglichen und umgekehrt. Damit kommt es auch auf vielen NAS-Systemen zum Einsatz.
SMB implementiert ein Netzwerkdateisystem ähnlich wie NFS und ist damit vom zugrundeliegenden Dateisystem des Servers größtenteils unabhängig. Höhere Protokolle wie DFS setzen wiederum auf SMB auf.
In TCP/IP-Netzen wurde SMB ursprünglich in NetBIOS over TCP/IP (NBT) über die TCP/UDP-Ports 137–139 gekapselt, die Namensauflösung erfolgte häufig mittels WINS bzw. Broadcasts. Heutige Windows-Versionen nutzen SMB direkt auf dem TCP-Port 445 und lösen Namen per DNS und in kleinen Netzwerken per LLMNR auf.

## Geschichte

SMB wurde zuerst 1983 von Barry Feigenbaum bei IBM vorgestellt. 1987 wurde es als Protokoll der OS/2-Netzwerk-Erweiterung namens LAN Manager und dem verwandten Produkt LAN Server erstmals breiter verfügbar. Auch durch den Einsatz in frühen Windows-Versionen wie Windows for Workgroups über die Windows-9x-Reihe bis hin zur Windows-NT-Produktfamilie wurde es in lokalen Netzwerken immer populärer.
Im Laufe der Zeit wurde das Protokoll von verschiedenen Firmen und Gruppen, darunter Microsoft, 3Com, SCO, Thursby, IBM und den Samba-Entwicklern, erweitert. Microsoft steuerte die meisten Erweiterungen bei, veröffentlichte zunächst jedoch keine Spezifikationen. Erst nach einem Urteil im Kartellstreit durch die Europäische Union im Jahr 2004 wurde SMB als Teil des Workgroup Server Protocols Program im Jahr 2007 Entwicklern zugänglich gemacht.

### CIFS

Der Begriff wurde immer wieder in verschiedener Bedeutung verwendet. Microsoft verwendete ihn 1996 ursprünglich, um SMB auf Basis der Windows-NT-4.0-Implementierung als Standardprotokoll für den Dateizugriff in TCP/IP-Netzwerken zu etablieren (siehe Übersicht), auch als Reaktion auf ähnliche Bestrebungen seitens des NFS-Entwicklers Sun Microsystems (WebNFS) in Zeiten des aufkommenden Internets. Parallel dazu wurde CIFS auch immer öfter als Synonym für das SMB-Protokoll generell oder sogar dessen ganze Protokollfamilie verwendet. Heute bezeichnet Microsoft SMB 1.0 als CIFS, auch als Abgrenzung zur komplett überarbeiteten Folgeversion.

### SMB 1.0

Mit Windows 2000 entfiel die Notwendigkeit der zusätzlichen NetBIOS-Schicht, SMB konnte direkt über TCP/IP und damit etwas effizienter betrieben werden.

### SMB 2.0

Diese erste große Überarbeitung des SMB-Protokolls verbesserte die Leistung durch eine Reduzierung auf weniger Kommandos und eine optionale Verkettung dieser, was vor allem in Weitverkehrsnetzen (WANs) die Geschwindigkeit erhöht. Version 1 blieb aus Kompatibilitätsgründen parallel weiter in Windows enthalten.

### SMB 3.0

Mit der Version 3 wurde SMB um das SMB Direct Protocol (SMB über RDMA), Failover-Mechanismen und Multichannel-SMB (mehrere Verbindungen pro Sitzung) erweitert. Außerdem wurde Ende-zu-Ende-Verschlüsselung eingeführt. Damit wird SMB auch als Basis von Virtualisierungs-Plattformen einsetzbar.

### Übersicht

Die folgende Tabelle gibt einen Überblick über die SMB-Versionen und deren Einführung bzw. Unterstützung sowie enthaltene Neuerungen.
| SMB-Version | Unterstützt seit | Neue Features |
| CIFS | Windows NT 4.0 | Standardisierungsvorschlag von Microsoft an die IETF |
| 1.0 | Windows 2000 | SMB direkt über TCP/IP |
| 2.0 | Windows Vista / Windows Server 2008 / Samba 3.5 | höhere Leistung durch kompaktere Kommunikation und weniger Kommandos |
| 2.1 | Windows 7 / Windows Server 2008 R2 | weitere kleinere Optimierungen und neue Locking-Mechanismen |
| 3.0 | Windows 8 / Windows Server 2012 / Samba 4.0 | Erweiterungen für Betrieb als Virtualisierungs-Basis, Verschlüsselung |
| 3.0.2 | Windows 8.1 / Windows Server 2012 R2 |
| 3.1.1 | Windows 10 / Windows Server 2016 / Samba 4.3 | weitere Erhöhung der Protokollsicherheit (Verschlüsselung, Integritätsprüfung) |

## Sicherheit

Die auch in aktuellen Versionen von Windows noch enthaltene Implementierung des SMB-Protokolls in Version 1.0 ist anfällig für kritische Sicherheitslücken. Diese Protokollversion wird auch inhaltlich aufgrund ihrer 30 Jahre alten Architektur als Risikofaktor eingestuft. Beispielsweise basierte der Cyber-Angriff mit der Ransomware WannaCry im Mai 2017 auf einer solchen Sicherheitslücke.
Mit dem im Oktober 2017 veröffentlichten Fall Creators Update (Version 1709) für Windows 10 entschied sich Microsoft deshalb dafür, SMB in der Version 1.0 standardmäßig nicht mehr zu installieren, beziehungsweise bei Nichtnutzung automatisch zu deinstallieren. Außerdem lässt sich die alte SMB-Version in allen Windows-Versionen gezielt deaktivieren, um die Sicherheit zu erhöhen.
Auch Apple deaktivierte SMB 1.0 standardmäßig mit der Einführung von macOS Catalina im Oktober 2019.