Protocole MQTT
Protocole MQTT
Protocole MQTT
1/6
Pourquoi le protocole MQTT est-il important ?
Le protocole MQTT est devenu une norme pour la transmission de données IoT,
car il offre les avantages suivants :
Léger et efficace
L'implémentation de MQTT sur l'appareil IoT nécessite des ressources
minimales, de sorte qu'il peut même être utilisé sur de petits microcontrôleurs.
Par exemple, un message de contrôle MQTT minimal peut ne contenir que deux
octets de données. Les en-têtes des messages MQTT sont également de petite
taille afin que vous puissiez optimiser la bande passante du réseau.
Évolutif
L'implémentation de MQTT nécessite une quantité minimale de code qui
consomme très peu d'énergie en fonctionnement. Le protocole possède
également des fonctionnalités intégrées pour prendre en charge la
communication avec un grand nombre d'appareils IoT. Vous pouvez donc
implémenter le protocole MQTT pour vous connecter à des millions de ces
appareils.
Fiable
De nombreux appareils IoT se connectent sur des réseaux cellulaires peu
fiables, avec une faible bande passante et une forte latence. MQTT possède des
fonctionnalités intégrées qui réduisent le temps que le dispositif IoT prend pour
se reconnecter au cloud. Il définit également trois niveaux de qualité de service
différents pour garantir la fiabilité des cas d'utilisation IoT : au plus une fois
(0), au moins une fois (1) et exactement une fois (2).
Sécurisé
MQTT permet aux développeurs de chiffrer facilement les messages et
d'authentifier les appareils et les utilisateurs à l'aide de protocoles
d'authentification modernes, tels que OAuth, TLS1.3, Customer Managed
Certificates, etc.
2/6
Quelle est l'histoire du protocole MQTT ?
Le protocole MQTT a été inventé en 1999 pour être utilisé dans l'industrie
pétrolière et gazière. Les ingénieurs avaient besoin d'un protocole offrant une
bande passante et une consommation batterie minimales pour surveiller les
oléoducs par satellite. Au départ, le protocole était connu sous le nom de
Message Queuing Telemetry Transport, en raison du produit MQ Series d'IBM
qui a pris en charge sa phase initiale. En 2010, IBM a publié MQTT 3.1 en tant
que protocole libre et ouvert que tout le monde peut implémenter, qui a
ensuite été soumis, en 2013, à l'organisme de spécification OASIS
(Organization for the Advancement of Structured Information Standards) pour
être maintenu. En 2019, une version 5 améliorée de MQTT a été publiée par
OASIS. Désormais, MQTT n'est plus un acronyme, mais est considéré comme
le nom officiel du protocole.
Découplage spatial
L'éditeur et l'abonné ne connaissent pas l'emplacement du réseau de l'autre et
n'échangent pas d'informations telles que les adresses IP ou les numéros de
port.
Découplage temporel
L'éditeur et l'abonné ne fonctionnent pas ou n'ont pas de connectivité réseau
au même moment.
Découplage de la synchronisation
Les éditeurs et les abonnés peuvent envoyer ou recevoir des messages sans
s'interrompre mutuellement. Par exemple, l'abonné ne doit pas attendre que
l'éditeur envoie un message.
3/6
Que sont les composants MQTT ?
MQTT implémente le modèle de publication/abonnement en définissant les
clients et les agents comme ci-dessous.
Client MQTT
Un client MQTT est tout appareil, du serveur au microcontrôleur, qui exécute
une bibliothèque MQTT. Si le client envoie des messages, il agit comme un
éditeur, et s'il reçoit des messages, il agit comme un récepteur.
Fondamentalement, tout appareil qui communique à l'aide de MQTT sur un
réseau peut être appelé un appareil client MQTT.
Agent MQTT
L'agent MQTT est le système dorsal qui coordonne les messages entre les
différents clients. Les responsabilités de l'agent comprennent la réception et le
filtrage des messages, l'identification des clients abonnés à chaque message et
l'envoi des messages à ces derniers. Il est également responsable d'autres
tâches telles que :
• Autoriser et authentifier les clients MQTT
• Transmettre des messages à d'autres systèmes pour une analyse plus
approfondie
• Traiter les messages et les sessions clients manqués
Connexion MQTT
Les clients et les agents commencent à communiquer en utilisant une
connexion MQTT. Les clients initient la connexion en envoyant un message
CONNECT à l'agent MQTT. L'agent confirme qu'une connexion a été établie en
répondant par un message CONNACK. Le client MQTT et l'agent ont tous deux
besoin d'une pile TCP/IP pour communiquer. Les clients ne se connectent
jamais entre eux, uniquement avec l'agent.
4/6
Rubrique MQTT
Le terme « rubrique » (topic) fait référence aux mots-clés que l'agent MQTT
utilise pour filtrer les messages destinés aux clients MQTT. Les rubriques sont
organisées de manière hiérarchique, à l'instar d'un répertoire de fichiers ou de
dossiers. Par exemple, considérons un système de maison intelligente
fonctionnant dans une maison à plusieurs niveaux qui possède différents
appareils intelligents à chaque étage. Dans ce cas, l'agent MQTT peut organiser
les rubriques comme suit :
notremaison/rez-de-chaussée/salon/lumière
notremaison/premierétage/cuisine/température
Publication MQTT
Les clients MQTT publient des messages qui contiennent la rubrique et les
données au format octet. Le client détermine le format des données, comme
les données textuelles, les données binaires, les fichiers XML ou JSON. Par
exemple, une lampe dans le système de maison intelligente peut publier un
message allumer pour la rubrique salon/lumière.
Abonnement MQTT
Les clients MQTT envoient un message SUBSCRIBE (S'ABONNER) à l'agent
MQTT, pour recevoir des messages sur les rubriques qui les intéressent. Ce
message contient un identifiant unique et une liste d'abonnements. Par
exemple, l'application de maison intelligente sur votre téléphone veut afficher
le nombre de lumières allumées dans votre maison. Il s'abonnera à la rubrique
lumière et augmentera le compteur pour tous les messages allumer.
5/6
MQTT est-il sécurisé ?
La communication MQTT utilise le protocole SSL pour protéger les données
sensibles transmises par les appareils IoT. Vous pouvez implémenter l'identité,
l'authentification et l'autorisation entre les clients et l'agent en utilisant des
certificats SSL et/ou des mots de passe. L'agent MQTT authentifie
généralement les clients à l'aide de leurs mots de passe ainsi que des
identifiants client uniques qu'il attribue à chaque client. Dans la plupart des
implémentations, le client authentifie le serveur à l'aide de certificats ou de
consultations DNS (DNS lookups). Vous pouvez également implémenter des
protocoles de chiffrement avec MQTT.
6/6