Message Queuing Telemetry Transport (MQTT) ist ein beliebtes und leichtes Publish-Subscribe-Messaging-Protokoll, das sich ideal für die Verbindung von Internet of Things (IoT)- oder Machine-to-Machine (M2M)-Geräten und -Anwendungen über das Internet eignet. MQTT ist für den effizienten Betrieb in Umgebungen mit geringer Bandbreite oder geringem Stromverbrauch konzipiert und ist daher die ideale Wahl für Anwendungen mit einer großen Anzahl Remote-Clients. Es wird in zahlreichen Branchen eingesetzt, unter anderem in der Unterhaltungselektronik, der Automobilindustrie, im Transportwesen, in der Fertigung und im Gesundheitswesen.

Wie funktioniert MQTT?

Als Clients werden Geräte oder Anwendungen bezeichnet, die über MQTT angebunden sind. Diese Clients veröffentlichen und/oder abonnieren Nachrichten zu einem bestimmten Thema oder zu mehreren Themen . Abonnierte Clients erhalten alle zu diesem Thema veröffentlichten Nachrichten und ermöglichen so einen effizienten und fehlertoleranten Datenaustausch zwischen vielen Geräten und Diensten.

Das Herzstück einer MQTT-Architektur ist ein Broker . Der Broker ist ein Server, der für die Verfolgung der Clients (und aller Themen, die sie abonniert haben), die Verarbeitung von Nachrichten und die Weiterleitung dieser Nachrichten an die entsprechenden Systeme verantwortlich ist.

MQTT-Protokollversionen

Mehrere wichtige Versionen des MQTT-Protokolls wurden als Standard übernommen. Die OASIS- Organisation verwaltet Revisionen des Protokolls und pflegt für jede Version eine vollständige Spezifikation . Jede Revision von MQTT hat den Funktionsumfang des Protokolls erweitert. Daher ist es wichtig zu wissen, welche Version von MQTT Ihre Geräte und Ihr Broker unterstützen.

MQTT-Nachrichtentypen und -Format

Es gibt mehrere Arten von MQTT-Nachrichten und jeder Nachrichtentyp enthält ein bestimmtes Format, das konforme Geräte und Anwendungen einhalten müssen. Die Revisionen des MQTT-Protokolls unterscheiden sich in Format und Nachrichtentypen. Eine vollständige Liste der Nachrichtentypen finden Sie in jeder Spezifikation des MQTT-Protokolls.

Die drei häufigsten Nachrichtentypen sind CONNECT, PUBLISH und SUBSCRIBE. Jede MQTT-Nachricht enthält einen Header, Nutzdaten und optionale Flags. Die Nutzlast kann je nach Nachrichtentyp unterschiedlich lang sein. Beispielsweise enthält die Nutzlast in einer PUBLISH-Nachricht die Daten, die an alle abonnierenden Geräte gesendet werden sollen, und die Länge des Datenfelds hat einen direkten Einfluss auf die Größe der Nachricht.  Standardmäßig stellen MQTT-Geräte eine ungesicherte Verbindung über Port 1883 oder über Port 8883 her, wenn die SSL/TLS-Verschlüsselung aktiviert wurde.

Was ist ein Beispiel für MQTT in Aktion?

Intelligente Autos sind ein großartiges Beispiel für MQTT in Aktion. Da die Automobilhersteller neue Funktionen hinzufügen, um alles von der Ferndiagnose und dem Flottenmanagement bis hin zu Tankzahlungen und Unterhaltung zu unterstützen, hat sich MQTT zu einem gängigen Standard für vernetzte Autos entwickelt. Im Gegensatz zum Hypertext Transfer Protocol (HTTP)-Protokoll kann MQTT eine dauerhafte Sitzung aufrechterhalten, selbst wenn ein Auto in Funklöcher hinein- und wieder herausfährt oder seine Verbindung den Mobilfunkmast wechselt. MQTT unterstützt auch bidirektionale Kommunikation, wodurch das Auto und die Cloud-Anwendung einfacher Daten senden und empfangen können, ohne auf die Antwort des anderen warten zu müssen.

Was ist der Unterschied zwischen HTTP und MQTT?

HTTP und MQTT sind beides Netzwerkprotokolle, die zur Datenübertragung über das Internet verwendet werden. Schauen wir uns die Unterschiede an.

HTTP

  • Anforderungs-Antwort-Protokoll, bei dem ein Client eine Anforderung an einen Server sendet und der Server mit den angeforderten Daten antwortet.
  • In erster Linie für die Übertragung von Webinhalten (wie HTML-Dokumenten, Bildern und Formulardaten) zwischen Webservern und Browsern konzipiert.
  • Beispiel: Ein Webbrowser (der Client) sendet eine Anfrage an einen Webserver und der Server antwortet mit Daten in Form einer Webseite.

MQTT

  • Publizieren-Subscribe, leichtes Messaging-Protokoll, bei dem Clients Themen abonnieren und Nachrichten empfangen, die von anderen Clients zu diesen Themen veröffentlicht werden.
  • Entwickelt für Netzwerktopologien und Geräte, bei denen geringe Bandbreite, Verbindungsstabilität und Stromverbrauch wichtige Überlegungen sind.
  • Beispiel: Das Smart-Car-Szenario oben.
Warum MQTT im Internet der Dinge (IoT) verwenden?

Viele Funktionen von MQTT machen es zum idealen Protokoll für die Nachrichtenübermittlung zwischen IoT-Geräten (den „Dingen“ im IoT) und Backend-Systemen. Dabei konzentrieren wir uns auf vier Merkmale:

  • Leichtgewichtig – MQTT hat einen kleinen Code-Footprint und funktioniert gut auf Geräten mit begrenzter Verarbeitungsleistung und Speicher, wie etwa Sensoren.
  • Zuverlässig – Viele IoT-Geräte stellen eine Verbindung über Mobilfunknetze her. MQTT ist ein Protokoll, das für Netzwerke mit geringer Bandbreite geeignet ist, die kompakte Nachrichten mit weniger Daten erfordern. Dadurch wird MQTT zuverlässiger, selbst wenn die Netzwerkbandbreite begrenzt oder instabil ist.
  • Skalierbar – Das Publish-Subscribe-Modell lässt sich durch Hinzufügen weiterer Geräte und Backend-Systeme leicht skalieren. Ein Beispiel für ein einzelnes Gerät, das Daten an zwei separate Backend-Netzwerke (Abonnenten) sendet, ist ein intelligenter Zähler für Privathaushalte, der Daten zum Stromverbrauch sowohl an die Systeme des Versorgungsunternehmens zur Abrechnung als auch an eine kundenorientierte Anwendung sendet, auf die der Hausbesitzer zugreifen kann, um den Energieverbrauch seines Zuhauses im Auge zu behalten.
  • Sicher – MQTT-Nachrichten können mit standardmäßiger Transport Layer Security (TLS) verschlüsselt werden und unterstützen Anmeldeinformationen, die zur Authentifizierung verwendet werden können. Dies macht MQTT zu einem sicheren Nachrichtenprotokoll in IoT-Anwendungen, das vertrauliche Informationen wie Gesundheitsmonitorwerte von verschiedenen medizinischen Geräten verarbeiten kann.
Welches Transportprotokoll verwendet MQTT?

MQTT unterstützt Transmission Control Protocol/Internet Protocol (TCP/IP) als zugrunde liegendes Transportprotokoll. Dieses weit verbreitete Netzwerkprotokoll gewährleistet einen zuverlässigen Nachrichtenversand zwischen Clients und Brokern.

Es gibt mehrere Gründe, warum TCP/IP als zuverlässig und effizient gilt:

  • Fehlererkennung und -korrektur – Verschiedene Techniken überprüfen die Integrität von Datenpaketen und verwenden Neuübertragungsmechanismen, um verlorene Pakete wiederherzustellen.
  • Flusskontrolle – Daten werden mit der für das jeweilige Netzwerk optimalen Geschwindigkeit übertragen. Dadurch werden Übertragungsverzögerungen vermieden und eine effiziente Kommunikation gefördert.
  • Multiplexing – Über eine einzige Verbindung können mehrere Datenströme gesendet werden, sodass mehrere Anwendungen gleichzeitig die gleiche Verbindung nutzen können.
  • Kompatibilität: Funktioniert mit einer Vielzahl von Geräten und Betriebssystemen.
  • Skalierbarkeit – Entwickelt für den Einsatz in großen, komplexen Netzwerken ohne Leistungseinbußen, selbst bei der Verarbeitung großer Datenmengen.

TCP/IP ist zwar die gebräuchlichste Methode, aber nicht die einzige Wahl für den Transport von MQTT-Nachrichten. Das MQTT-Protokoll funktioniert auch über User Datagram Protocol (UDP) und WebSockets.

Weitere Ressourcen

Wir sind stolz, Ihnen die folgenden kostenlosen Ressourcen anbieten zu können, damit Sie weiter erforschen können, wie NGINX MQTT-basierte IoT-Systeme sichern, die Last ausgleichen und für hohe Verfügbarkeit sorgen kann.

Blog

Dokumentation