Codec MQTT
Codificar e decodificar pacotes do protocolo MQTT
Cole dados de pacotes MQTT capturados do Wireshark, analisador de rede ou logs do broker
Pacotes de exemplo
Resultado decodificado
Insira dados do pacote e clique em Decodificar para ver os resultados
Visualizador de bytes
Resultado codificado
Configure parâmetros e clique em Construir pacote para gerar
Visualizador de bytes
Pré-visualização da estrutura do pacote
Referência de tipos de pacotes MQTT
| Código | Nome | Direção | Descrição |
|---|---|---|---|
| 0x10 | CONNECT | C→S | Solicitação de conexão do cliente |
| 0x20 | CONNACK | S→C | Confirmação de conexão |
| 0x30 | PUBLISH | C↔S | Publicar mensagem |
| 0x40 | PUBACK | C↔S | Confirmação de publicação (QoS 1) |
| 0x50 | PUBREC | C↔S | Publicação recebida (QoS 2 parte 1) |
| 0x60 | PUBREL | C↔S | Publicação liberada (QoS 2 parte 2) |
| 0x70 | PUBCOMP | C↔S | Publicação completa (QoS 2 parte 3) |
| 0x80 | SUBSCRIBE | C→S | Solicitação de assinatura |
| 0x90 | SUBACK | S→C | Confirmação de assinatura |
| 0xA0 | UNSUBSCRIBE | C→S | Solicitação de cancelamento de assinatura |
| 0xB0 | UNSUBACK | S→C | Confirmação de cancelamento de assinatura |
| 0xC0 | PINGREQ | C→S | Solicitação de ping (keep-alive) |
| 0xD0 | PINGRESP | S→C | Resposta de ping |
| 0xE0 | DISCONNECT | C→S | Desconexão do cliente |
Guia do Protocolo MQTT
Entendendo o Protocolo MQTT
MQTT (Message Queuing Telemetry Transport) é um protocolo de mensagens leve construído sobre TCP/IP. Desenvolvido pela IBM em 1999 para monitoramento de links de satélite, tornou-se o padrão de facto para comunicação IoT. O protocolo usa um padrão publicar-assinar onde os clientes se comunicam através de um broker central, ideal para redes instáveis e dispositivos com recursos limitados.
Estrutura binária do pacote
Cada pacote MQTT começa com um cabeçalho fixo (1-5 bytes), seguido por um cabeçalho variável opcional e carga útil. O primeiro byte contém o tipo de pacote nos bits 7-4 e flags específicas do tipo nos bits 3-0. O campo de comprimento restante usa codificação de comprimento variável.
| Faixa de bits | Nome do campo | Descrição |
|---|---|---|
| 7-4 | Tipo de pacote | Tipo de pacote de controle (1-15) |
| 3-0 | Flags | Flags específicas do tipo (DUP, QoS, RETAIN para PUBLISH) |
Codificação de comprimento variável
MQTT usa uma codificação compacta para o campo de comprimento restante. Cada byte usa 7 bits para dados e 1 bit como flag de continuação. Valores 0-127 precisam de 1 byte, 128-16383 precisam de 2 bytes, até um máximo de 4 bytes para comprimentos até 268.435.455.
| Bytes | Valor mín | Valor máx |
|---|---|---|
| 1 | 0 | 127 |
| 2 | 128 | 16,383 |
| 3 | 16,384 | 2,097,151 |
| 4 | 2,097,152 | 268,435,455 |
Detalhes do pacote CONNECT
O pacote CONNECT é enviado primeiro após o estabelecimento da conexão TCP. Contém versão do protocolo, intervalo keep-alive, ID do cliente e credenciais opcionais. As flags de conexão controlam o comportamento da sessão incluindo Clean Session, configuração de mensagem de testamento e autenticação.
Mecânica do pacote PUBLISH
Pacotes PUBLISH carregam mensagens da aplicação. As flags do cabeçalho fixo indicam nível QoS, comportamento de retenção e status de duplicação. QoS 0 é fire-and-forget, QoS 1 garante entrega pelo menos uma vez, QoS 2 garante exatamente uma vez via handshake de quatro vias.
Garantias de entrega QoS
Aplicações práticas
- Analisar capturas de pacotes do Wireshark ou tcpdump para depuração
- Construir pacotes de teste para verificar implementações de broker ou cliente MQTT
- Aprender os internos do protocolo MQTT através de inspeção prática de pacotes
- Solucionar problemas de conectividade e entrega de mensagens de dispositivos IoT
- Gerar pacotes de exemplo para cenários de testes automatizados
Versões do protocolo
Três versões principais do MQTT estão em uso: MQTT 3.1 (nível de protocolo 3), MQTT 3.1.1 (nível de protocolo 4, ISO/IEC 20922:2016), e MQTT 5.0 (nível de protocolo 5) com recursos aprimorados. Esta ferramenta foca principalmente no MQTT 3.1.1, a versão mais amplamente implantada.
Ferramentas Relacionadas
Cliente MQTT WebSocket
Cliente MQTT baseado em navegador para conectar, publicar, assinar e depurar mensagens IoT via WebSocket
Testador de Tópicos MQTT
Teste e valide padrões de tópicos MQTT com curingas + e # para testes de assinatura
Analisador Modbus RTU/ASCII/TCP
Analise, codifique e depure quadros de protocolo Modbus RTU/ASCII/TCP com cálculo de CRC-16/LRC e depuração serial
Conversor de Base
Converter entre sistemas binário, octal, decimal e hexadecimal com suporte para bases personalizadas (2-36)