Auswählen eines Protokolls für die Gerätekommunikation

Mit IoT Hub können Geräte die folgenden Protokolle für die geräteseitige Kommunikation verwenden:

Hinweis

IoT Hub verfügt über eingeschränkte Featureunterstützung für MQTT. Wenn Ihre Lösung MQTT v3.1.1 oder v5 Unterstützung benötigt, empfehlen wir MQTT Unterstützung in Azure Event Grid. Weitere Informationen finden Sie unter Vergleichen der MQTT-Unterstützung in IoT Hub und Event Grid.

Informationen dazu, wie diese Protokolle bestimmte IoT Hub-Features unterstützen, finden Sie im Leitfaden zur D2C-Kommunikation und im Leitfaden zur C2D-Kommunikation.

Die folgende Tabelle enthält allgemeine Ratschläge für Ihre Protokollauswahl:

Protocol Wann Sie dieses Protokoll auswählen sollten
MQTT
MQTT über WebSockets
Verwenden Sie dieses Protokoll auf allen Geräten, die sich nicht über dieselbe TLS-Verbindung mit mehreren Geräten verbinden müssen (wobei es für jedes Gerät eigene Anmeldeinformationen gibt).
AMQP
AMQP über WebSockets
Verwenden Sie es für Feld- und Cloudgateways, um die Vorteile geräteübergreifender Multiplexingverbindungen zu nutzen.
HTTPS Verwenden Sie dieses Protokoll für Geräte, die keine anderen Protokolle unterstützen können.

Beachten Sie bei der Auswahl des Protokolls für die geräteseitige Kommunikation folgende Punkte:

  • C2D-Muster. HTTPS bietet keine effiziente Methode zum Implementieren von Serverpushvorgängen. Daher fragen Geräte IoT Hub bei Verwendung von HTTPS nach Cloud-zu-Gerät (C2D)-Nachrichten ab. Dieser Ansatz ist für das Gerät und auch für IoT Hub sehr ineffizient. Gemäß den aktuellen HTTPS-Richtlinien muss jedes Gerät mindestens alle 25 Minuten eine Abfrage nach Nachrichten durchführen. Die Ausgabe von mehr HTTPS-Empfangsvorgängen führt dazu, dass die Anforderungen von IoT Hub gedrosselt werden. MQTT und AMQP unterstützen Serverpush beim Empfangen von C2D-Nachrichten. Sie ermöglichen sofortiges Nachrichtenpushen von IoT Hub zum Gerät. Wenn die Übermittlungslatenz eine wichtige Rolle spielt, sind MQTT oder AMQP die zu bevorzugenden Protokolle. Bei nur selten verbundenen Geräten funktioniert auch HTTPS.

  • Bereichsgateways. MQTT und HTTPS unterstützen nur eine einzelne Geräteidentität (Geräte-ID plus Anmeldeinformationen) pro TLS-Verbindung. Aus diesem Grund werden diese Protokolle bei Szenarien mit Bereichsgateways nicht unterstützt, die ein Multiplexing von Nachrichten unter Verwendung mehrerer Geräteidentitäten entweder über eine einzelne Verbindung oder über mehrere Upstreamverbindungen mit IoT Hub erfordern. Solche Gateways können für den Upstreamdatenverkehr ein Protokoll verwenden, das mehrere Geräteidentitäten pro Verbindung unterstützt, wie z. B. AMQP.

  • Geräte mit eingeschränkten Ressourcen. Die MQTT- und HTTPS-Bibliotheken haben weniger Speicherbedarf als die AMQP-Bibliotheken. Wenn also das Gerät limitierte Ressourcen hat (z. B. weniger als 1 MB RAM), sind möglicherweise nur diese Protokolle als Protokollimplementierung verfügbar.

  • Netzwerkausnahme. Das AMQP-Standardprotokoll verwendet Port 5671, und MQTT lauscht an Port 8883. Die Verwendung dieser Ports könnte Probleme in Netzwerken verursachen, die für Nicht-HTTPS-Protokolle geschlossen sind. Verwenden Sie MQTT über WebSockets, AMQP über WebSockets oder HTTPS in diesem Szenario.

  • Größe der Nutzlast. MQTT und AMQP sind binäre Protokolle und weisen daher kompaktere Nutzlasten als HTTPS auf.

Warnung

Bei Verwendung von HTTPS muss jedes Gerät maximal alle 25 Minuten eine Abfrage auf C2D-Nachrichten durchführen. Bei der Entwicklung kann jedes Gerät bei Bedarf häufiger Abfragen durchführen.

Wichtig

Die folgenden Funktionen für Geräte, die die Authentifizierung der X.509-Zertifizierungsstelle (Certificate Authority, CA) verwenden, sind noch nicht allgemein verfügbar, und der Vorschaumodus muss aktiviert werden:

  • HTTPS, MQTT über WebSockets und AMQP über WebSockets-Protokolle.
  • Dateiuploads (alle Protokolle).

Diese Features sind auf Geräten, die die X.509-Fingerabdruckauthentifizierung verwenden, allgemein verfügbar. Weitere Informationen zur X.509-Authentifizierung mit IoT Hub finden Sie unter Unterstützte X.509-Zertifikate.

Portnummern

Geräte können mit IoT Hub in Azure über verschiedene Protokolle kommunizieren. In der Regel richtet sich die Wahl des Protokolls nach den spezifischen Anforderungen der Lösung. Die folgende Tabelle enthält die ausgehenden Ports, die geöffnet sein müssen, damit ein Gerät ein bestimmtes Protokoll verwenden kann:

Protokoll Port
MQTT 8883
MQTT über WebSockets 443
AMQP 5671
AMQP über WebSockets 443
HTTPS 443

Die IP-Adresse eines IoT-Hubs kann ohne vorherige Ankündigung geändert werden. Wenn Sie erfahren möchten, wie Sie die Auswirkungen von IP-Adressänderungen bei IoT-Hubs auf Ihre IoT-Lösung und IoT-Geräte verringern können, lesen Sie unter IP-Adressen von IoT Hub den Abschnitt Bewährte Methoden.

Nächste Schritte

Weitere Informationen dazu, wie IoT Hub das MQTT-Protokoll implementiert, finden Sie unter Kommunikation mit Ihrem IoT Hub mithilfe des Protokolls MQTT.