CoderTools

Codec MQTT

Encoder et décoder les paquets du protocole MQTT

🔒 100% Traitement localLes données que vous saisissez sont traitées entièrement dans votre navigateur et ne sont envoyées à aucun serveur.

Collez les données de paquet MQTT capturées depuis Wireshark, un analyseur réseau ou les journaux du broker

Paquets exemples

Résultat décodé

Entrez les données du paquet et cliquez sur Décoder pour voir les résultats

Référence des types de paquets MQTT

Code Nom Direction Description
0x10CONNECTC→SDemande de connexion client
0x20CONNACKS→CAccusé de réception de connexion
0x30PUBLISHC↔SPublication de message
0x40PUBACKC↔SAccusé de publication (QoS 1)
0x50PUBRECC↔SPublication reçue (QoS 2 partie 1)
0x60PUBRELC↔SPublication libérée (QoS 2 partie 2)
0x70PUBCOMPC↔SPublication complète (QoS 2 partie 3)
0x80SUBSCRIBEC→SDemande d'abonnement
0x90SUBACKS→CAccusé d'abonnement
0xA0UNSUBSCRIBEC→SDemande de désabonnement
0xB0UNSUBACKS→CAccusé de désabonnement
0xC0PINGREQC→SRequête ping (keep-alive)
0xD0PINGRESPS→CRéponse ping
0xE0DISCONNECTC→SDéconnexion client

Guide du protocole MQTT

Comprendre le protocole MQTT

MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger construit sur TCP/IP. Développé par IBM en 1999 pour la surveillance de liens satellites, il est devenu la norme de facto pour la communication IoT. Le protocole utilise un modèle publication-abonnement où les clients communiquent via un broker central, idéal pour les réseaux instables et les appareils à ressources limitées.

Structure binaire des paquets

Chaque paquet MQTT commence par un en-tête fixe (1-5 octets), suivi d'un en-tête variable optionnel et d'une charge utile. Le premier octet contient le type de paquet dans les bits 7-4 et les drapeaux spécifiques au type dans les bits 3-0. Le champ de longueur restante utilise un encodage à longueur variable.

Plage de bits Nom du champ Description
7-4Type de paquetType de paquet de contrôle (1-15)
3-0DrapeauxDrapeaux spécifiques au type (DUP, QoS, RETAIN pour PUBLISH)

Encodage à longueur variable

MQTT utilise un encodage compact pour le champ de longueur restante. Chaque octet utilise 7 bits pour les données et 1 bit comme drapeau de continuation. Les valeurs 0-127 nécessitent 1 octet, 128-16383 nécessitent 2 octets, jusqu'à un maximum de 4 octets pour des longueurs jusqu'à 268 435 455.

Octets Valeur min Valeur max
10127
212816,383
316,3842,097,151
42,097,152268,435,455

Détails du paquet CONNECT

Le paquet CONNECT est envoyé en premier après l'établissement de la connexion TCP. Il contient la version du protocole, l'intervalle keep-alive, l'ID client et les identifiants optionnels. Les drapeaux de connexion contrôlent le comportement de session incluant Clean Session, la configuration du message de testament et l'authentification.

Mécanisme du paquet PUBLISH

Les paquets PUBLISH transportent les messages applicatifs. Les drapeaux de l'en-tête fixe indiquent le niveau QoS, le comportement de rétention et le statut de duplication. QoS 0 est « fire-and-forget », QoS 1 garantit une livraison au moins une fois, QoS 2 assure une livraison exactement une fois via une poignée de main à quatre voies.

Garanties de livraison QoS

QoS 0
Au plus une fois - livraison fire and forget
QoS 1
Au moins une fois - garanti avec doublons possibles
QoS 2
Exactement une fois - livraison unique garantie

Applications pratiques

  • Analyser les captures de paquets de Wireshark ou tcpdump pour le débogage
  • Construire des paquets de test pour vérifier les implémentations broker ou client MQTT
  • Apprendre les internals du protocole MQTT par l'inspection pratique de paquets
  • Dépanner les problèmes de connectivité et de livraison de messages des appareils IoT
  • Générer des paquets exemples pour les scénarios de test automatisés

Versions du protocole

Trois versions majeures de MQTT sont utilisées : MQTT 3.1 (niveau protocole 3), MQTT 3.1.1 (niveau protocole 4, ISO/IEC 20922:2016), et MQTT 5.0 (niveau protocole 5) avec des fonctionnalités améliorées. Cet outil cible principalement MQTT 3.1.1, la version la plus largement déployée.

Menu Rapide

Aucun outil récent