Октет это просто набор из 8 бит так просто другое название для байта
Так сообщение состоит из заголовка, состоящего из 2-х или 4 байта и тела сообщения.
Заголовок подразделяется на 1 ИЛИ 3 байта для длины и 1 байт для типа. Если первый байт равен 0x01, то следующие 2 байта - это длина, иначе значение первого байта будет длиной.
Следующий байт представляет собой тип, таблицу допустимых типов сообщений можно найти в разделах 5.2.2 в spec
теле на сообщения зависит в зависимости от типа.
Но опубликовать сообщение с полезной нагрузкой HelloWorld
по теме ID АБ (0x41, 0x42) будет выглядеть примерно так:
0x0F - length (15 bytes total, including length)
0x0C - msg type (publish)
0x02 - flags (QOS 0, topic name)
0x41 - topic ID 1
0x42 - topic ID 2
0x00 - MsgID (00 for QOS 0)
0x48 - H
0x65 - e
0x6C - l
0x6C - l
0x6F - o
0x57 - W
0x6F - o
0x72 - r
0x6C - l
0x64 - d
Если тема идентификатор вывода из сообщения темы регистра (раздел 6.5 в спецификации)