CoderTools

Codec MQTT

Codificar e decodificar pacotes do protocolo MQTT

🔒 100% Processamento localOs dados inseridos são processados inteiramente em seu navegador. Nenhum dado é enviado para qualquer servidor.

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

Referência de tipos de pacotes MQTT

Código Nome Direção Descrição
0x10CONNECTC→SSolicitação de conexão do cliente
0x20CONNACKS→CConfirmação de conexão
0x30PUBLISHC↔SPublicar mensagem
0x40PUBACKC↔SConfirmação de publicação (QoS 1)
0x50PUBRECC↔SPublicação recebida (QoS 2 parte 1)
0x60PUBRELC↔SPublicação liberada (QoS 2 parte 2)
0x70PUBCOMPC↔SPublicação completa (QoS 2 parte 3)
0x80SUBSCRIBEC→SSolicitação de assinatura
0x90SUBACKS→CConfirmação de assinatura
0xA0UNSUBSCRIBEC→SSolicitação de cancelamento de assinatura
0xB0UNSUBACKS→CConfirmação de cancelamento de assinatura
0xC0PINGREQC→SSolicitação de ping (keep-alive)
0xD0PINGRESPS→CResposta de ping
0xE0DISCONNECTC→SDesconexã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-4Tipo de pacoteTipo de pacote de controle (1-15)
3-0FlagsFlags 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
10127
212816,383
316,3842,097,151
42,097,152268,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

QoS 0
No máximo uma vez - entrega fire and forget
QoS 1
Pelo menos uma vez - garantido com possíveis duplicatas
QoS 2
Exatamente uma vez - entrega única garantida

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.

Menu Rápido

Nenhuma ferramenta recente