Codec MQTT
Encoder et décoder les paquets du protocole MQTT
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
Visualiseur d'octets
Résultat encodé
Configurez les paramètres et cliquez sur Construire le paquet pour générer
Visualiseur d'octets
Aperçu de la structure du paquet
Référence des types de paquets MQTT
| Code | Nom | Direction | Description |
|---|---|---|---|
| 0x10 | CONNECT | C→S | Demande de connexion client |
| 0x20 | CONNACK | S→C | Accusé de réception de connexion |
| 0x30 | PUBLISH | C↔S | Publication de message |
| 0x40 | PUBACK | C↔S | Accusé de publication (QoS 1) |
| 0x50 | PUBREC | C↔S | Publication reçue (QoS 2 partie 1) |
| 0x60 | PUBREL | C↔S | Publication libérée (QoS 2 partie 2) |
| 0x70 | PUBCOMP | C↔S | Publication complète (QoS 2 partie 3) |
| 0x80 | SUBSCRIBE | C→S | Demande d'abonnement |
| 0x90 | SUBACK | S→C | Accusé d'abonnement |
| 0xA0 | UNSUBSCRIBE | C→S | Demande de désabonnement |
| 0xB0 | UNSUBACK | S→C | Accusé de désabonnement |
| 0xC0 | PINGREQ | C→S | Requête ping (keep-alive) |
| 0xD0 | PINGRESP | S→C | Réponse ping |
| 0xE0 | DISCONNECT | C→S | Dé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-4 | Type de paquet | Type de paquet de contrôle (1-15) |
| 3-0 | Drapeaux | Drapeaux 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 |
|---|---|---|
| 1 | 0 | 127 |
| 2 | 128 | 16,383 |
| 3 | 16,384 | 2,097,151 |
| 4 | 2,097,152 | 268,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
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.
Outils Connexes
Client MQTT WebSocket
Client MQTT basé sur navigateur pour connecter, publier, s'abonner et déboguer les messages IoT via WebSocket
Testeur de Topics MQTT
Tester et valider les motifs de topics MQTT avec les wildcards + et # pour les tests d'abonnement
Parseur Modbus RTU/ASCII/TCP
Analyser, encoder et déboguer les trames du protocole Modbus RTU/ASCII/TCP avec calcul CRC-16/LRC et débogage série
Convertisseur de Base
Convertir entre les systèmes binaire, octal, décimal et hexadécimal avec support de bases personnalisées (2-36)