а вы не спрашивали. протоколы не для того рожают, чтобы просто
бумажками пошелестеть. начинается с порядка байт в данных и
упакованности данных в рамках протокола. часто люди с опытом
программирования на 8-и-битниках путают структуру данных в
протоколе и структуру хранения/использования в программе. а ещё
часто пытаются подгонять порядок полей и прочая под протокол, или
наоборот, если у них есть такая возможность. когда же начинается
портирование кода ...нажитого непосильным трудом(С):) на МК большей разрядности, начинаются другие индейцы, а ещё и выравнивание данных в этих самых структурах (причём может зависеть от момента компиляции). начинается борьба борьбическая с упаковкой в месте хранения и прочее гуано - всё в попытках применить memcpy для передачи данных - лишь бы не устаканить протокол. обмен бинарными данными отлаживается часто дольше, особенно в таких гетерогенных системах, как вариации с MQTT. часто такое используют для реализации идеи <i>собрать</i> "где-то" данные. всё ломает развитие идеи - добавляется хотелка отдать команду от "где-то" клиентам (аналог RPC, но клиентов с эволюцией становится больше и они со временем становятся различными по функционалу - их становится нужно различать). далее появляются идеи о том, что из-за проблем со связью какие-то регулярные данные требуется докачать... при этом при всём загруженность сервера часто более может проваливать от количества соединений, чем от объёма пересылаемых данных. в рамках всего этого грустного, которое вас, вероятно, не сильно касается, я предпочитаю экономить не там, где заказчик ещё не определился с объёмом будущих затрат.