1. Korrektur: SMB baut NICHT für jede Datei eine neue Verbindung auf
Hier liegt der größte technische Irrtum in der Aussage:
- Realität: SMB baut eine TCP-Sitzung zum Server auf (Standardport 445). Über diese eine Verbindung werden alle Befehle und Daten "gemultiplext". Es wäre für das Betriebssystem extrem ineffizient, für jede Datei einen neuen TCP-Handshake (SYN, SYN-ACK, ACK) durchzuführen.
- Warum es sich so anfühlt: SMB ist ein Request-Response-Protokoll. Bei älteren SMB-Versionen oder schlechten Implementierungen wartet der Client oft auf eine Bestätigung ("Datei A erhalten"), bevor er den Befehl für "Datei B" schickt. Das erzeugt Pausen, die wie Verbindungsneuaufbaue wirken.
2. Der wahre Kern: "Stream" vs. "Chattiness"
Deine Aussage trifft den Nagel auf den Kopf, wenn es um die
Art der Kommunikation geht:
- rsync (Der Streamer): rsync ist darauf optimiert, die Leitung wie einen Wasserschlauch zu nutzen. Sobald der TCP-Algorithmus (Congestion Control) das "Window" vergrößert hat, schiebt rsync die Daten am Stück durch. TCP CC kann hier perfekt arbeiten, weil der Datenstrom nicht abreißt.
- SMB (Der Diskutierer): SMB muss für jede Datei Metadaten abfragen (Rechte, Zeitstempel, Größe). Bei vielen kleinen Dateien entstehen tausende winzige Pausen. Jedes Mal, wenn der Datenstrom kurz stockt, kann TCP CC nicht in den "High-Speed-Modus" schalten oder fällt sogar in den Slow Start zurück.
3. Wo die TCP Congestion Control SMB wirklich ausbremst
Die Aussage hat recht, wenn man
Latenz (Ping) mit einbezieht:
- In einem Netzwerk mit hoher Latenz (z. B. VPN oder WAN) dauert jede Bestätigung bei SMB lange.
- TCP CC "denkt" bei Verzögerungen oder minimalem Paketverlust oft, die Leitung sei verstopft, und drosselt die Rate.
- Da SMB so viele kleine Bestätigungen braucht, "erholt" sich die TCP-Rate bei SMB viel langsamer als bei dem kontinuierlichen rsync-Stream.
4. Die moderne Lösung: SMB-Pipelining und Multichannel
Um genau dieses Problem zu beheben, hat Microsoft SMB modernisiert:
- SMB Pipelining: Erlaubt es, viele Anfragen zu schicken, ohne auf die Antwort der vorherigen zu warten.
- SMB Multichannel: Hier werden (wie wir vorhin besprochen haben) tatsächlich mehrere TCP-Verbindungen gleichzeitig aufgebaut, um die TCP CC zu überlisten und die Bandbreite zu maximieren.
Fazit
Die Aussage ist
funktional richtig, aber technisch falsch begründet.
- Falsch: SMB baut keine neuen Verbindungen pro Datei auf.
- Richtig: Das Protokoll-Design von SMB (viele Metadaten-Stopps) verhindert, dass TCP Congestion Control die Leitung so effizient "fluten" kann wie rsync. rsync verhält sich gegenüber TCP einfach "kooperativer"."