CoderTools

MQTT Кодек

Кодирование и декодирование пакетов протокола MQTT

🔒 100% Локальная обработкаВведенные вами данные обрабатываются полностью в браузере и не отправляются на сервер.

Вставьте данные пакетов MQTT, захваченные из Wireshark, сетевого анализатора или логов брокера

Примеры пакетов

Результат декодирования

Введите данные пакета и нажмите Декодировать для просмотра результатов

Справочник типов пакетов MQTT

Код Название Направление Описание
0x10CONNECTC→SЗапрос соединения от клиента
0x20CONNACKS→CПодтверждение соединения
0x30PUBLISHC↔SПубликация сообщения
0x40PUBACKC↔SПодтверждение публикации (QoS 1)
0x50PUBRECC↔SПубликация получена (QoS 2 часть 1)
0x60PUBRELC↔SПубликация освобождена (QoS 2 часть 2)
0x70PUBCOMPC↔SПубликация завершена (QoS 2 часть 3)
0x80SUBSCRIBEC→SЗапрос подписки
0x90SUBACKS→CПодтверждение подписки
0xA0UNSUBSCRIBEC→SЗапрос отмены подписки
0xB0UNSUBACKS→CПодтверждение отмены подписки
0xC0PINGREQC→SЗапрос пинга (keep-alive)
0xD0PINGRESPS→CОтвет на пинг
0xE0DISCONNECTC→SОтключение клиента

Руководство по протоколу MQTT

Понимание протокола MQTT

MQTT (Message Queuing Telemetry Transport) — это легковесный протокол обмена сообщениями, построенный поверх TCP/IP. Разработанный IBM в 1999 году для мониторинга спутниковых каналов, он стал де-факто стандартом для IoT коммуникаций. Протокол использует паттерн публикации-подписки, где клиенты общаются через центрального брокера, что идеально для нестабильных сетей и устройств с ограниченными ресурсами.

Бинарная структура пакета

Каждый пакет MQTT начинается с фиксированного заголовка (1-5 байт), за которым следует опциональный переменный заголовок и полезная нагрузка. Первый байт содержит тип пакета в битах 7-4 и специфичные для типа флаги в битах 3-0. Поле оставшейся длины использует кодировку переменной длины.

Диапазон битов Имя поля Описание
7-4Тип пакетаТип управляющего пакета (1-15)
3-0ФлагиСпецифичные для типа флаги (DUP, QoS, RETAIN для PUBLISH)

Кодирование переменной длины

MQTT использует компактную кодировку для поля оставшейся длины. Каждый байт использует 7 бит для данных и 1 бит как флаг продолжения. Значения 0-127 требуют 1 байт, 128-16383 требуют 2 байта, максимум до 4 байт для длин до 268 435 455.

Байты Мин. значение Макс. значение
10127
212816,383
316,3842,097,151
42,097,152268,435,455

Детали пакета CONNECT

Пакет CONNECT отправляется первым после установления TCP-соединения. Содержит версию протокола, интервал keep-alive, ID клиента и опциональные учетные данные. Флаги подключения управляют поведением сессии, включая Clean Session, настройку завещания и аутентификацию.

Механика пакета PUBLISH

Пакеты PUBLISH переносят прикладные сообщения. Флаги фиксированного заголовка указывают уровень QoS, поведение удержания и статус дублирования. QoS 0 — отправил и забыл, QoS 1 гарантирует доставку минимум один раз, QoS 2 гарантирует ровно одну доставку через четырёхэтапное рукопожатие.

Гарантии доставки QoS

QoS 0
Максимум один раз — доставка без подтверждения
QoS 1
Минимум один раз — гарантировано с возможными дубликатами
QoS 2
Ровно один раз — гарантированная однократная доставка

Практическое применение

  • Анализ захваченных пакетов из Wireshark или tcpdump для отладки
  • Построение тестовых пакетов для проверки реализаций MQTT брокеров или клиентов
  • Изучение внутренностей протокола MQTT через практическую инспекцию пакетов
  • Устранение проблем подключения и доставки сообщений IoT устройств
  • Генерация примеров пакетов для сценариев автоматизированного тестирования

Версии протокола

Три основные версии MQTT используются в настоящее время: MQTT 3.1 (уровень протокола 3), MQTT 3.1.1 (уровень протокола 4, ISO/IEC 20922:2016) и MQTT 5.0 (уровень протокола 5) с расширенными возможностями. Этот инструмент ориентирован в основном на MQTT 3.1.1 — наиболее широко развёрнутую версию.

Быстрое меню

Нет недавних инструментов