Message Queuing Telemetry Transport (MQTT) est un protocole de messagerie de publication-abonnement populaire et léger, idéal pour connecter des appareils et des applications de l'Internet des objets (IoT) ou de machine à machine (M2M) sur Internet. MQTT est conçu pour fonctionner efficacement dans des environnements à faible bande passante ou à faible consommation, ce qui en fait un choix idéal pour les applications avec un grand nombre de clients distants. Il est utilisé dans de nombreux secteurs, notamment l’électronique grand public, l’automobile, les transports, la fabrication et les soins de santé.

Comment fonctionne MQTT ?

Les appareils ou applications connectés via MQTT sont appelés clients . Ces clients publient et/ou s'abonnent à des messages sur un sujet spécifique ou sur plusieurs sujets . Les clients abonnés reçoivent tous les messages publiés sur cette rubrique, permettant un échange de données efficace et tolérant aux pannes entre de nombreux appareils et services.

Au cœur d’une architecture MQTT se trouve un courtier . Le courtier est un serveur chargé de suivre les clients (et tous les sujets auxquels ils sont abonnés), de traiter les messages et de les acheminer vers les systèmes appropriés.

Versions du protocole MQTT

Plusieurs versions clés du protocole MQTT ont été adoptées comme norme. L'organisation OASIS gère les révisions du protocole et maintient une spécification complète pour chaque version . Chaque révision de MQTT a étendu l'ensemble des fonctionnalités du protocole, il est donc important de savoir à quelle version de MQTT vos appareils et votre courtier adhèrent.

Types et formats de messages MQTT

Il existe plusieurs types de messages MQTT, et chaque type de message contient un format spécifique que les appareils et applications conformes doivent suivre. Les révisions du protocole MQTT varient en termes de format et de types de messages. Une liste complète des types de messages peut être trouvée dans chaque spécification du protocole MQTT.

Les trois types de messages les plus courants sont CONNECT, PUBLISH et SUBSCRIBE. Chaque message MQTT contient un en-tête, une charge utile et des indicateurs facultatifs. Selon le type de message, la charge utile peut avoir une longueur variable. Par exemple, dans un message PUBLISH, la charge utile contient les données à envoyer à tous les appareils abonnés et la longueur du champ de données a une incidence directe sur la taille du message.  Par défaut, les appareils MQTT se connectent sur le port 1883 de manière non sécurisée ou sur le port 8883 lorsque le cryptage SSL/TLS a été activé.

Quel est un exemple de MQTT en action ?

Les voitures intelligentes sont un excellent exemple du MQTT en action. Alors que les constructeurs automobiles ajoutent de nouvelles fonctionnalités pour prendre en charge tout, du diagnostic à distance et de la gestion de flotte aux paiements de carburant et au divertissement, MQTT est devenu une norme courante pour les voitures connectées. Contrairement au protocole HTTP (Hypertext Transfer Protocol), MQTT peut maintenir une session persistante même lorsqu'une voiture entre et sort de zones mortes ou si sa connexion change de tour de téléphonie cellulaire. MQTT prend également en charge les communications bidirectionnelles, ce qui permet à la voiture et à l'application cloud d'envoyer et de recevoir plus facilement des données sans attendre la réponse de l'autre.

Quelle est la différence entre HTTP et MQTT ?

HTTP et MQTT sont tous deux des protocoles réseau utilisés pour transmettre des données sur Internet. Regardons leurs différences.

HTTP

  • Protocole de requête-réponse où un client envoie une requête à un serveur et le serveur répond avec les données demandées.
  • Conçu principalement pour transmettre du contenu Web (tel que des documents HTML, des images et des données de formulaire) entre les serveurs Web et les navigateurs.
  • Exemple: Un navigateur Web (le client) envoie une requête à un serveur Web, et le serveur répond avec des données sous la forme d'une page Web.

MQTT

  • Protocole de messagerie léger de publication-abonnement où les clients s'abonnent à des sujets et reçoivent des messages publiés sur ces sujets par d'autres clients.
  • Conçu pour les topologies de réseau et les appareils où la faible bande passante, la stabilité de la connexion et la consommation d'énergie sont des considérations importantes.
  • Exemple: Le scénario de la voiture intelligente ci-dessus.
Pourquoi utiliser MQTT dans l'Internet des objets (IoT) ?

De nombreuses fonctionnalités de MQTT en font le protocole idéal pour la messagerie entre les appareils IoT (les « objets » dans l’IoT) et les systèmes back-end. Ici, nous nous concentrons sur quatre fonctionnalités :

  • Léger – MQTT a une petite empreinte de code qui fonctionne bien dans les appareils avec une puissance de traitement et une mémoire limitées, tels que les capteurs.
  • Fiable – De nombreux appareils IoT se connectent via des réseaux cellulaires. MQTT est un protocole adapté aux réseaux à faible bande passante qui nécessitent des messages compacts utilisant moins de données. Cela rend MQTT plus fiable, même lorsque la bande passante du réseau est limitée ou instable.
  • Évolutif – Le modèle de publication-abonnement est facile à faire évoluer grâce à l’ajout d’appareils et de systèmes back-end. Un exemple d’appareil unique publiant sur deux réseaux back-end distincts (abonnés) est un compteur intelligent résidentiel qui envoie des données d’utilisation des services publics à la fois aux systèmes des services publics à des fins de facturation et à une application destinée aux clients à laquelle le propriétaire peut accéder pour garder un œil sur la consommation d’énergie de sa résidence.
  • Sécurisé – Les messages MQTT peuvent être chiffrés avec la norme TLS (Transport Layer Security) et prennent en charge les informations d'identification pouvant être utilisées pour l'authentification. Cela fait de MQTT un protocole de messagerie sécurisé dans les applications IoT qui peut gérer des informations sensibles telles que les relevés de surveillance de santé de divers appareils médicaux.
Quel protocole de transport MQTT utilise-t-il ?

MQTT prend en charge le protocole de contrôle de transmission/protocole Internet (TCP/IP) comme protocole de transport sous-jacent. Ce protocole réseau largement utilisé garantit que les messages sont envoyés de manière fiable entre les clients et les courtiers.

Il existe plusieurs raisons pour lesquelles TCP/IP est considéré comme fiable et efficace :

  • Détection et correction des erreurs – Diverses techniques vérifient l’intégrité des paquets de données et des mécanismes de retransmission pour récupérer les paquets perdus.
  • Contrôle de flux – Les données sont transmises à des débits optimaux pour un réseau donné, évitant les retards de transmission et favorisant une communication efficace.
  • Multiplexage – Plusieurs flux de données peuvent être envoyés via une seule connexion, de sorte que plusieurs applications peuvent utiliser la même connexion en même temps.
  • Compatibilité – Fonctionne avec une grande variété d’appareils et de systèmes d’exploitation.
  • Évolutivité – Conçu pour fonctionner dans des réseaux vastes et complexes sans compromettre les performances, même lors de la gestion de grandes quantités de trafic.

Bien qu’il soit le plus courant, TCP/IP n’est pas le seul choix pour le transport des messages MQTT. Le protocole MQTT fonctionne également sur le protocole User Datagram Protocol (UDP) et les WebSockets.

Ressources supplémentaires

Nous sommes fiers d'offrir les ressources gratuites suivantes pour vous aider à continuer à rechercher comment NGINX peut sécuriser, équilibrer la charge et fournir une haute disponibilité pour les systèmes IoT basés sur MQTT.

Blog

Documents