Wybieranie protokołu komunikacyjnego urządzenia

Usługa IoT Hub zezwala na używanie następujących protokołów na potrzeby komunikacji po stronie urządzenia:

Uwaga

Usługa IoT Hub ma ograniczoną obsługę funkcji MQTT. Jeśli twoje rozwiązanie wymaga obsługi protokołu MQTT w wersji 3.1.1 lub 5, zalecamy obsługę protokołu MQTT w usłudze Azure Event Grid. Aby uzyskać więcej informacji, zobacz Porównanie obsługi MQTT w usłudze IoT Hub i usłudze Event Grid.

Aby uzyskać informacje o tym, jak te protokoły obsługują określone funkcje usługi IoT Hub, zobacz Wskazówki dotyczące komunikacji urządzenie-chmura i Wskazówki dotyczące komunikacji chmury z urządzeniami.

W poniższej tabeli przedstawiono ogólne zalecenia dotyczące wybranego protokołu:

Protokół Kiedy należy wybrać ten protokół
MQTT
MQTT za pośrednictwem obiektów WebSocket
Użyj na wszystkich urządzeniach, które nie wymagają połączenia z wieloma urządzeniami, z których każde ma własne poświadczenia dla poszczególnych urządzeń, za pośrednictwem tego samego połączenia TLS.
AMQP
AMQP za pośrednictwem obiektów WebSocket
Użyj bram w terenie i w chmurze, aby korzystać z multipleksowania połączeń między urządzeniami.
HTTPS Służy do obsługi urządzeń, które nie obsługują innych protokołów.

Podczas wybierania protokołu do komunikacji po stronie urządzenia należy wziąć pod uwagę następujące kwestie:

  • Wzorzec chmury do urządzenia. Protokół HTTPS nie ma wydajnego sposobu implementowania wypychania serwera. W związku z tym w przypadku korzystania z protokołu HTTPS urządzenia sondować usługę IoT Hub pod kątem komunikatów z chmury do urządzenia. Takie podejście jest nieefektywne zarówno dla urządzenia, jak i usługi IoT Hub. Zgodnie z bieżącymi wytycznymi protokołu HTTPS każde urządzenie powinno sondować komunikaty co 25 minut lub więcej. Wystawianie większej liczby żądań https odbiera wyniki w usłudze IoT Hub. MQTT i AMQP obsługują wypychanie serwera podczas odbierania komunikatów z chmury do urządzenia. Umożliwiają natychmiastowe wypychanie komunikatów z usługi IoT Hub do urządzenia. Jeśli opóźnienie dostarczania jest problemem, MQTT lub AMQP to najlepsze protokoły do użycia. W przypadku rzadko połączonych urządzeń protokół HTTPS również działa.

  • Bramy pól. Protokół MQTT i HTTPS obsługują tylko jedną tożsamość urządzenia (identyfikator urządzenia i poświadczenia) na połączenie TLS. Z tego powodu te protokoły nie są obsługiwane w scenariuszach bramy pól, które wymagają multipleksowania komunikatów przy użyciu wielu tożsamości urządzeń w ramach jednego połączenia lub puli połączeń nadrzędnych z usługą IoT Hub. Takie bramy mogą używać protokołu obsługującego wiele tożsamości urządzeń na połączenie, takie jak AMQP, dla ruchu nadrzędnego.

  • Urządzenia z niskimi zasobami. Biblioteki MQTT i HTTPS mają mniejszy rozmiar niż biblioteki AMQP. W związku z tym, jeśli urządzenie ma ograniczone zasoby (na przykład mniej niż 1 MB pamięci RAM), te protokoły mogą być jedyną dostępną implementacją protokołu.

  • Przechodzenie przez sieć. Standardowy protokół AMQP używa portu 5671, a protokół MQTT nasłuchuje na porcie 8883. Użycie tych portów może powodować problemy w sieciach zamkniętych dla protokołów innych niż HTTPS. Użyj protokołu MQTT za pośrednictwem obiektów WebSocket, AMQP za pośrednictwem obiektów WebSocket lub HTTPS w tym scenariuszu.

  • Rozmiar ładunku. MQTT i AMQP to protokoły binarne, które powodują bardziej kompaktowe ładunki niż HTTPS.

Ostrzeżenie

W przypadku korzystania z protokołu HTTPS każde urządzenie powinno sondować komunikaty z chmury do urządzenia nie więcej niż raz na 25 minut. W przypadku programowania każde urządzenie może sondować częściej, jeśli jest to konieczne.

Ważne

Następujące funkcje dla urządzeń korzystających z uwierzytelniania urzędu certyfikacji X.509 nie są jeszcze ogólnie dostępne, a tryb podglądu musi być włączony:

  • HTTPS, MQTT przez protokoły WebSockets i AMQP za pośrednictwem protokołów WebSocket.
  • Przekazywanie plików (wszystkie protokoły).

Te funkcje są ogólnie dostępne na urządzeniach korzystających z uwierzytelniania odcisku palca X.509. Aby dowiedzieć się więcej na temat uwierzytelniania X.509 w usłudze IoT Hub, zobacz Obsługiwane certyfikaty X.509.

Numery portów

Urządzenia mogą komunikować się z usługą IoT Hub na platformie Azure przy użyciu różnych protokołów. Zazwyczaj wybór protokołu jest oparty na określonych wymaganiach rozwiązania. W poniższej tabeli wymieniono porty wychodzące, które muszą być otwarte, aby urządzenie mogło korzystać z określonego protokołu:

Protokół Port
MQTT 8883
MQTT za pośrednictwem obiektów WebSocket 443
AMQP 5671
AMQP za pośrednictwem obiektów WebSocket 443
HTTPS 443

Adres IP centrum IoT może ulec zmianie bez powiadomienia. Aby dowiedzieć się, jak ograniczyć skutki zmian adresów IP centrum IoT w rozwiązaniu IoT i urządzeniach, zobacz sekcję Najlepsze rozwiązania dotyczące adresów IP usługi IoT Hub.

Następne kroki

Aby uzyskać więcej informacji na temat implementowania protokołu MQTT w usłudze IoT Hub, zobacz Komunikacja z centrum IoT przy użyciu protokołu MQTT.