Nevermind. Хотя я часами смотрел на эту проблему, только после того, как я опубликовал вопрос, меня осенило. Протокол не имеет проблемы: я неправильно прочитал данные.
Это двоичный протокол, поэтому я должен прочитать блоки в соответствии с полем длины в заголовке. Я сделал это неправильно, поэтому данные, которые я предположил, были правильными, данные заголовка фактически не были правильно выровнены.
Извините, что беспокою вас: D
Микаэла