Fondamentaux MQTT

Glossaire MQTT : 60 termes que tout développeur IoT doit connaître

D'ACL à Will Delay Interval, ce glossaire MQTT définit simplement 60 termes du protocole, des brokers et de Sparkplug B, avec des exemples à tester sur broker.connectmq.com.

Illustration d'un glossaire MQTT présenté comme un ouvrage de référence ouvert avec des arbres de topics, des badges QoS et des icônes de broker
Essayez-le sur votre propre broker MQTTObtenez un broker MQTT privé et managé avec l’offre Free et partez d’exemples de code prêts à l’emploi.
Essayer gratuitement Exemples de code Aucune carte bancaire requise

Ce glossaire MQTT définit les 60 termes que vous rencontrerez dans les spécifications, la documentation des brokers et les API des bibliothèques clientes, d'ACL à Will Delay Interval. Chaque entrée propose une définition courte et claire, avec un renvoi vers un article plus approfondi lorsqu'il existe : vous pourrez ainsi décoder n'importe quelle discussion sur MQTT et savoir où en lire davantage.

Comment utiliser ce glossaire MQTT

Les termes sont classés par ordre alphabétique (selon leur nom anglais, tel qu'il apparaît dans les spécifications). Lorsqu'un terme ne s'applique qu'à MQTT 5.0, il est marqué « (MQTT 5) ». Les exemples utilisent le serveur MQTT public gratuit broker.connectmq.com, réservé aux tests et aux prototypes, et des topics placés sous un préfixe comme connectmq/demo/ab12/. Tout ce qui y est publié est lisible par tout le monde : gardez des données de test inoffensives. Si vous découvrez complètement le protocole, le tutoriel MQTT complet est un meilleur point de départ ; revenez ici quand un terme vous pose problème.

Glossaire MQTT : de A à C

ACL (Access Control List, liste de contrôle d'accès). Règles définies sur un broker qui déterminent quels clients peuvent publier ou s'abonner à quels topics. L'implémentation varie selon le broker.

Authentication (authentification). Le fait de prouver l'identité d'un client auprès du broker, généralement avec un nom d'utilisateur et un mot de passe dans le paquet CONNECT, un certificat client ou un jeton.

Authorization (autorisation). Le fait de décider ce qu'un client authentifié a le droit de faire. Distincte de l'authentification, même si les deux sont souvent confondues.

Paquet AUTH (MQTT 5). Un paquet de contrôle destiné aux échanges d'authentification étendue, comme les mécanismes de challenge/réponse.

Bridge (pont). Une liaison qui fait agir un broker comme client d'un autre, afin que des topics sélectionnés circulent entre eux. Voir le bridging MQTT.

Broker. Le serveur qui reçoit chaque message publié et l'achemine vers les abonnés correspondants. Notre article sur le rôle d'un broker MQTT va plus loin.

Clean Session (MQTT 3.1.1). Un drapeau du CONNECT. À true, le broker supprime tout état de session précédent pour le client ID ; à false, l'état est conservé.

Clean Start (MQTT 5). Le remplaçant de Clean Session dans MQTT 5. Il contrôle uniquement si une session existante est réutilisée ; la durée de vie d'une session est réglée séparément par le Session Expiry Interval.

Client. Tout programme ou appareil qui se connecte à un broker, qu'il publie, s'abonne ou fasse les deux.

Client ID. L'identifiant qu'un client envoie dans le CONNECT. Le broker s'en sert pour retrouver la session : il doit donc être unique par connexion. Sur les brokers privés ConnectMQ, les client IDs sont liés aux identifiants délivrés.

Control packet (paquet de contrôle). L'un des types de messages MQTT fixes, comme CONNECT, PUBLISH ou SUBSCRIBE.

Correlation Data (MQTT 5). Des octets qu'un demandeur attache à un message afin de pouvoir faire correspondre la réponse qui lui revient.

B comme Birth : les termes Sparkplug

Birth certificate (Sparkplug). Les messages NBIRTH et DBIRTH qui annoncent un nœud ou un appareil et la liste complète de ses métriques lorsqu'il se met en ligne.

Death certificate (Sparkplug). Les messages NDEATH et DDEATH qui signalent qu'un nœud ou un appareil est hors ligne ; NDEATH est généralement enregistré comme Will MQTT.

Edge of Network (EoN) node (Sparkplug). Une passerelle qui publie des données Sparkplug pour le compte des appareils situés derrière elle.

Host application (Sparkplug). Le consommateur principal, souvent un SCADA, qui suit l'état des nœuds et peut envoyer des commandes.

Sparkplug B. Une spécification Eclipse qui définit la structure des topics, des payloads Protobuf et la gestion d'état au-dessus de MQTT. Lisez Sparkplug B et Unified Namespace pour une vue d'ensemble.

Glossaire MQTT : de D à M

DUP flag (drapeau DUP). Positionné sur un PUBLISH renvoyé parce que l'acquittement initial n'a pas été reçu.

Fixed header (en-tête fixe). Les deux à cinq premiers octets de chaque paquet MQTT : type de paquet, drapeaux et longueur restante.

Inflight window (fenêtre de vol). Le nombre de messages QoS 1 et QoS 2 qu'un client ou un broker a envoyés sans en avoir encore reçu l'acquittement.

ISA-95. Une norme industrielle décrivant la hiérarchie entreprise/contrôle (entreprise, site, zone, ligne, cellule), souvent reproduite dans les arbres de topics MQTT.

Keep Alive. L'intervalle maximal, en secondes, entre deux paquets d'un client. Si rien d'autre n'est envoyé, le client émet un PINGREQ ; si le broker ne reçoit rien pendant une fois et demie cet intervalle, il ferme la connexion.

Last Will and Testament (LWT). Un message que le broker publie au nom du client si celui-ci se déconnecte de façon inattendue. Couramment utilisé pour l'état en ligne/hors ligne.

Maximum Packet Size (MQTT 5). Une limite que chaque côté peut annoncer pour le plus gros paquet qu'il acceptera.

Message Expiry Interval (MQTT 5). Une durée de vie, en secondes, au-delà de laquelle un message non livré est supprimé.

MQTT. Un protocole de messagerie publish/subscribe léger fonctionnant sur TCP, standardisé par OASIS dans les versions 3.1.1 et 5.0.

MQTT-SN. MQTT for Sensor Networks, une variante pour UDP et les réseaux de datagrammes non IP, qui nécessite une passerelle. Voir MQTT-SN expliqué.

mTLS (TLS mutuel). TLS dans lequel le client présente lui aussi un certificat, afin que le broker puisse l'authentifier.

De N à Q

Payload. Les données applicatives contenues dans un PUBLISH. MQTT les traite comme des octets opaques ; JSON, Protobuf et texte brut sont tous courants.

Payload Format Indicator (MQTT 5). Un drapeau qui indique si le payload est du texte UTF-8 ou des octets non spécifiés.

Persistent session (session persistante). L'état de session (abonnements, messages en file d'attente) conservé par le broker d'une déconnexion à l'autre.

PINGREQ / PINGRESP. Les paquets de battement de cœur du keep alive.

PUBACK. L'acquittement d'un PUBLISH en QoS 1.

PUBREC, PUBREL, PUBCOMP. Les trois paquets supplémentaires de la poignée de main en quatre étapes de la QoS 2.

PUBLISH. Le paquet qui transporte un message vers ou depuis le broker.

Publisher (éditeur). Un client qui envoie des messages sur un topic.

QoS (Quality of Service, qualité de service). La garantie de livraison par message : 0 au plus une fois, 1 au moins une fois, 2 exactement une fois. Détails dans les niveaux de QoS MQTT expliqués.

Quota. Une limite imposée par le broker, comme le nombre de connexions, le débit de messages ou la taille des messages. Les brokers MQTT 5 peuvent signaler un dépassement avec le reason code 0x97.

De R à S

Reason code (MQTT 5). Un statut d'un octet présent dans les acquittements et le DISCONNECT, qui explique le succès ou l'échec, par exemple 0x87 Not authorized.

Receive Maximum (MQTT 5). Le nombre de messages QoS 1/2 non acquittés qu'un côté accepte de traiter simultanément ; une forme de contrôle de flux.

Response Topic (MQTT 5). Un topic désigné dans une requête, sur lequel le répondant doit publier sa réponse.

Retained message. Un message que le broker stocke comme dernière valeur connue d'un topic et qu'il livre à chaque nouvel abonné. Essayez : mosquitto_pub -h broker.connectmq.com -i gl-ab12 -t connectmq/demo/ab12/state -m on -r.

Session. L'état que le broker conserve pour un client ID : abonnements, messages en vol et messages en file d'attente.

Session Expiry Interval (MQTT 5). Le nombre de secondes pendant lesquelles le broker conserve une session après la déconnexion. Le serveur MQTT public gratuit autorise jusqu'à 30 minutes.

Shared subscription (abonnement partagé, MQTT 5). Un abonnement de la forme $share/group/topic qui répartit la charge des messages entre les membres d'un groupe.

SUBACK. La réponse du broker au SUBSCRIBE, qui accorde une QoS ou renvoie une erreur pour chaque topic filter.

Subscriber (abonné). Un client qui reçoit les messages correspondant aux topic filters auxquels il s'est abonné.

SUBSCRIBE / UNSUBSCRIBE. Les paquets servant à ajouter ou à retirer des topic filters.

Subscription identifier (MQTT 5). Un nombre attaché à un abonnement et renvoyé avec les messages correspondants, pour que le client sache quel abonnement a déclenché la livraison.

Topics $SYS. Des topics réservés au broker, commençant généralement par $SYS/, qui exposent des informations d'état. Par exemple, ConnectMQ publie l'état des connexions sur $SYS/broker/connection/{clientId}/state.

De T à Z

TLS (Transport Layer Security). Le chiffrement de la connexion TCP, normalement sur le port 8883. Abordé dans les ports MQTT expliqués.

Topic. Une chaîne UTF-8 dont les niveaux sont séparés par /, comme plant1/line2/temp, utilisée pour acheminer les messages.

Topic alias (MQTT 5). Un petit entier qui remplace un long nom de topic dans les PUBLISH suivants sur la même connexion, afin d'économiser de la bande passante.

Topic filter. Le motif utilisé dans un abonnement, qui peut contenir des wildcards.

Topic level (niveau de topic). Un segment entre deux barres obliques. Le serveur MQTT public gratuit broker.connectmq.com autorise jusqu'à 8 niveaux.

Unified Namespace (UNS). Une architecture dans laquelle toutes les données industrielles sont publiées dans un arbre de topics hiérarchique unique, qui fait office de source unique de vérité.

User Properties (MQTT 5). Des paires clé/valeur personnalisées dans les en-têtes des paquets, comparables aux en-têtes HTTP.

Transport WebSocket. MQTT transporté dans des trames WebSocket pour permettre aux navigateurs de se connecter, généralement sur le port 8083 (ws) ou 8084 (wss) avec un chemin comme /mqtt.

Wildcard (caractère générique). + correspond à exactement un niveau de topic ; # correspond à tous les niveaux restants et doit figurer en dernier.

Will Delay Interval (MQTT 5). Le nombre de secondes que le broker attend avant de publier le Will, ce qui laisse au client une chance de se reconnecter d'abord.

Tableau de référence rapide

Vous entendez Cela signifie Version
QoS 1 Livraison au moins une fois avec PUBACK 3.1.1 et 5
Retained Dernière valeur stockée par topic 3.1.1 et 5
LWT Message envoyé lors d'une déconnexion inattendue 3.1.1 et 5
Clean Start Réutiliser ou supprimer la session à la connexion 5
Session expiry Durée de conservation de l'état par le broker 5
$share/ Préfixe d'abonnement partagé 5
0x97 Quota dépassé 5

Mettez ce vocabulaire en pratique

Les définitions s'ancrent dès que vous les voyez circuler sur le réseau. Connectez n'importe quel client à broker.connectmq.com sur le port 1883 avec un client ID unique, abonnez-vous à connectmq/demo/<your-id>/#, puis testez vous-même les retained messages, un Last Will et des publications en QoS 1. Lorsque vous serez prêt pour l'authentification, TLS et un espace de noms isolé, un broker MQTT managé comme ConnectMQ prend en charge MQTT 3.1.1 et 5.0, si bien que presque chaque terme ci-dessus correspond à une fonctionnalité que vous pouvez activer.

Démarrez avec ConnectMQ

Ouvrez app.connectmq.com, choisissez le plan Serverless gratuit (sans carte bancaire), créez un broker et copiez le nom d'utilisateur, le mot de passe et le client ID générés. Le client MQTT intégré au navigateur de ConnectMQ est le moyen le plus rapide de tester les retained messages, le LWT et l'expiration de session tout en apprenant.

Questions fréquentes

Quelle est la différence entre un topic et un topic filter ?

Un topic est le nom exact sur lequel un message est publié. Un topic filter est le motif utilisé par un abonné, qui peut contenir les wildcards + et #.

Clean Session et Clean Start, est-ce la même chose ?

Ils sont liés mais pas identiques. Dans MQTT 3.1.1, Clean Session contrôle à la fois la réutilisation et la durée de vie d'une session, tandis que MQTT 5 sépare ces deux aspects entre Clean Start et Session Expiry Interval.

Quels termes du glossaire n'existent que dans MQTT 5 ?

Les reason codes, les user properties, les topic aliases, les abonnements partagés, l'expiration des messages, l'expiration de session, le response topic, les correlation data et le paquet AUTH sont tous des ajouts de MQTT 5.

Les termes Sparkplug font-ils partie du standard MQTT ?

Non. Sparkplug B est une spécification Eclipse distincte qui définit des conventions au-dessus de MQTT ; n'importe quel broker conforme peut la transporter.

Articles liés

Qui a inventé MQTT ? L'histoire, des oléoducs à l'IoT

MQTT a été inventé en 1999 par Andy Stanford-Clark (IBM) et Arlen Nipper (Arcom) pour surveiller des oléoducs par satellite. Suivez son parcours vers l'open source, OASIS, l'ISO et les brokers MQTT managés d'aujourd'hui.

8 min de lecture

Pourquoi votre client MQTT se déconnecte sans cesse (et comment y remédier)

Les boucles de reconnexion sont l'un des problèmes MQTT les plus courants. Découvrez les cinq causes habituelles, des client ID en double aux timeouts de keep alive et aux paquets trop volumineux, et suivez une méthode de diagnostic qui identifie la vôtre.

9 min de lecture

Taille maximale d'un message MQTT : limites et stratégies pour les gros payloads

MQTT peut techniquement transporter un paquet de 256 Mo, mais les brokers, les bibliothèques clientes et les appareils imposent des limites bien plus basses. Découvrez où se trouvent les vraies limites, ce qui se passe quand on les dépasse et comment envoyer de gros payloads.

8 min de lecture

Tous les articles →

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.