Unterschied zwischen TCP, WebSocket und MQTT

TCP-Protokoll

Das Transmission Control Protocol (TCP) ist ein verbindungsorientiertes Protokoll der Transportschicht. Es bietet eine zuverlässige, geordnete und fehlerfreie Übertragung von Daten zwischen Anwendungen.

Architektur von TCP

  • Verbindungsaufbau: Mittels Drei-Wege-Handshake wird eine stabile Verbindung zwischen Sender und Empfänger aufgebaut.
  • Datenübertragung: Daten werden in Segmente aufgeteilt und sequentiell übertragen.
  • Flusskontrolle: TCP passt die Datenrate an die Empfangskapazität des Empfängers an.
  • Fehlerkontrolle: Überprüfung der Datenintegrität durch Prüfsummen und erneutes Senden bei Fehlern.
  • Verbindungsabbau: Beendet die Verbindung kontrolliert über einen Vier-Wege-Handshake.

Datenrate und Paketgrößen bei TCP

  • Paketgrößen: TCP-Segmente haben einen Header von mindestens 20 Bytes. Die maximale Segmentgröße (MSS) variiert, ist jedoch typischerweise etwa 1.460 Bytes auf Ethernet-Netzwerken (basierend auf einer MTU von 1.500 Bytes abzüglich IP- und TCP-Header).
  • Geschwindigkeit: TCP ist darauf ausgelegt, die verfügbare Bandbreite effizient zu nutzen. Durch Fluss- und Überlastkontrolle passt es die Geschwindigkeit an Netzwerkkonditionen an.

Vorteile von TCP

  • Zuverlässigkeit: Sicherstellung der vollständigen und geordneten Datenübertragung.
  • Weit verbreitet: Grundlage für viele Internetanwendungen (HTTP, SMTP, FTP).
  • Fluss- und Fehlerkontrolle: Anpassung an Netzwerkkonditionen und Gewährleistung der Datenintegrität.

WebSocket-Protokoll

Das WebSocket-Protokoll ermöglicht eine bidirektionale Kommunikationsverbindung über einen einzigen TCP-Port. Es ist speziell für webbasierte Echtzeitanwendungen konzipiert.

Architektur von WebSocket

  • Handshake-Prozess: Initialer Verbindungsaufbau erfolgt über einen HTTP-Upgrade-Header.
  • Persistente Verbindung: Einmal etabliert, bleibt die Verbindung offen für kontinuierlichen Datenaustausch.
  • Bidirektionale Kommunikation: Sowohl Client als auch Server können jederzeit Daten senden.
  • Leichtgewichtiges Messaging: Minimiert den Overhead durch schlankes Protokolldesign.
  • Subprotokolle: Unterstützt zusätzliche Protokollebenen für spezialisierte Kommunikationsmuster.

Datenrate und Paketgrößen bei WebSocket

  • Paketgrößen: WebSocket-Frames haben einen minimalen Overhead von 2 Bytes für kurze Payloads (<126 Bytes). Bei größeren Nachrichten erhöht sich die Headergröße entsprechend. Zusätzlich wird beim Senden vom Client an den Server eine 4-Byte-Maskierung verwendet.
  • Geschwindigkeit: WebSocket nutzt TCP für die Datenübertragung und bietet daher ähnliche Geschwindigkeiten. Durch den reduzierten Overhead nach dem initialen Handshake ist es effizienter als wiederholte HTTP-Anfragen.

Vorteile von WebSocket

  • Echtzeitfähigkeit: Ideal für Anwendungen wie Chat, Spiele oder Aktienkurse, die sofortige Updates erfordern.
  • Effizienz: Reduzierter Netzwerkoverhead im Vergleich zu wiederholten HTTP-Anfragen.
  • Flexibilität: Unterstützt komplexe Kommunikationsmuster durch Subprotokolle.

MQTT-Protokoll

Das Message Queuing Telemetry Transport (MQTT) ist ein leichtgewichtiges Nachrichtenprotokoll nach dem Publish/Subscribe-Prinzip, optimiert für IoT- und M2M-Kommunikation.

Architektur von MQTT

  • Broker-gestützt: Zentraler MQTT-Broker vermittelt Nachrichten zwischen Clients.
  • Publish/Subscribe-Modell: Clients veröffentlichen Nachrichten zu bestimmten Topics; Abonnenten erhalten relevante Nachrichten.
  • Leichtgewichtig: Minimale Protokollheader reduzieren den Bandbreitenbedarf.
  • Qualitätsstufen: Drei Stufen zur Nachrichtenübermittlung (QoS 0, 1, 2) für unterschiedliche Zuverlässigkeitsanforderungen.
  • Session-Persistenz: Option zur Speicherung des Client-Status für intermittierend verbundene Geräte.

Datenrate und Paketgrößen bei MQTT

  • Paketgrößen: MQTT-Nachrichten haben einen minimalen festen Header von 2 Bytes. Die Größe kann durch variable Header und Payload erhöht werden, bleibt jedoch insgesamt sehr gering, um Bandbreite zu sparen.
  • Geschwindigkeit: MQTT ist für geringe Bandbreiten optimiert und ermöglicht effiziente Kommunikation selbst über langsame oder instabile Netzwerke.

Vorteile von MQTT

  • Geringer Ressourcenbedarf: Perfekt für Geräte mit begrenzter Rechenleistung und Speicher.
  • Robustheit: Zuverlässige Kommunikation auch über instabile Netzwerke.
  • Skalierbarkeit: Effiziente Handhabung einer großen Anzahl von Clients und Nachrichten.

Vergleich und Unterschiede

Kommunikationsmodell

  • TCP: Punkt-zu-Punkt, verbindungsorientiert.
  • WebSocket: Bidirektional, persistent über TCP.
  • MQTT: Publish/Subscribe, vermittelte Kommunikation über Broker.

Protokoll-Overhead und Paketgrößen

  • TCP: Moderater Overhead durch Verbindungsmanagement und Fehlerkontrolle; Header mindestens 20 Bytes.
  • WebSocket: Geringerer Overhead nach initialem Handshake; Frames mit minimalem Header von 2 Bytes.
  • MQTT: Sehr geringer Overhead; Nachrichten mit minimalem Header von 2 Bytes.

Datenrate und Geschwindigkeit

  • TCP: Anpassung der Datenrate an verfügbare Bandbreite; effizient bei großen Datenmengen.
  • WebSocket: Hohe Geschwindigkeit durch persistente Verbindung und reduzierten Overhead; geeignet für Echtzeitanwendungen.
  • MQTT: Optimiert für niedrige Datenraten; effizient bei geringer Bandbreite und hoher Latenz.

Anwendungsbereiche

  • TCP: Allgemeine Datenübertragung, wo Zuverlässigkeit und Reihenfolge entscheidend sind.
  • WebSocket: Webanwendungen mit Echtzeitkommunikation und Interaktivität.
  • MQTT: IoT-Geräte, Sensorennetzwerke und mobile Anwendungen mit Bedarf an effizienter Datenübermittlung.

Zuverlässigkeit und Qualität der Dienstleistung

  • TCP: Garantiert ordnungsgemäße und vollständige Datenlieferung.
  • WebSocket: Nutzt TCP für Zuverlässigkeit, jedoch ohne eigene QoS-Mechanismen.
  • MQTT: Bietet konfigurierbare QoS-Stufen für unterschiedliche Zuverlässigkeitsanforderungen.

Zusammenfassung der Unterschiede

MerkmalTCPWebSocketMQTT
SchichtTransportAnwendung (über TCP)Anwendung (über TCP/IP)
KommunikationVerbindungsorientiertBidirektional, persistentPublish/Subscribe über Broker
OverheadModeratNiedrig nach HandshakeSehr niedrig
PaketgrößenHeader min. 20 BytesFrame-Header ab 2 BytesHeader ab 2 Bytes
DatenrateAnpassung an BandbreiteHoch durch persistenten KanalOptimiert für niedrige Bandbreiten
ZuverlässigkeitHochHoch (über TCP)Konfigurierbar (QoS 0, 1, 2)
AnwendungsgebietAllgemeine DatenübertragungEchtzeit-WebanwendungenIoT, M2M-Kommunikation
SkalierbarkeitBegrenzt durch VerbindungenGut für WebclientsHoch durch zentrales Brokering

TCPWebSocketMQTTProtokolleNetzwerkarchitekturIoTEchtzeitkommunikationPublishSubscribeDatenratePaketgrößen

Networking-Overview