Это зависит от характеристик QoS (качества обслуживания) базового транспортного уровня.
Если базовый канал является надежным, то CRC, вероятно, является избыточным (при условии, что некоторая форма проверки целостности выполняется на нижнем уровне протокола).
Если вы спрашиваете от как до отделить вашу полезную нагрузку от потока байтов, то есть несколько возможностей, одна из которых может быть просто BASE64 кодировать / декодировать ваш поток. Опять же, в зависимости от ваших требований, BASE64 может привести к слишком большим накладным расходам.
Конечно, вы всегда можете использовать HEADER (уникальная последовательность + длина полезной нагрузки + CRC) с низкой вероятностью появления в вашей полезной нагрузке, но затем вам нужно применить скремблер к своей полезной нагрузке, чтобы минимизировать вероятность дублирования вашего заголовка и т. Д.
Если вы хотите создать протокол для ненадежного ориентированного на поток байтов прокотола, то зачем изобретать велосипед? Почему бы не использовать что-то вроде PPP?