Я бы использовал заголовок, содержащий два целых числа (4 байта каждое).Первый из них будет указывать версию протокола, а второй - длину сообщения.Хорошая вещь с использованием длины заголовка вместо разделителя состоит в том, что вы можете выделить буфер для всего сообщения, прежде чем приступить к его синтаксическому анализу.
Использование целочисленного значения версии в качестве первого заголовка позволит вам изменить остальныезаголовки и тело в любой новой версии протокола.
Обновление в ответ на комментарий
Существует разница между номером версии в заголовке иодин в реальном сообщении.Версия сообщения предназначена для документа, а версия заголовка - для самого протокола.Используя версию протокола, вы можете переключить транспорт сообщений с XML на Protobuf или что-то еще для сообщения.Вы также можете добавить заголовок, идентифицирующий цель фактического сообщения.