Бинарные протоколы передачи данных в сети работают следующим образом:
- Заголовки сообщений. 1 Обычно они начинаются с константной части, которая позволяет с определённой вероятностью обнаружить начало сообщения в непрерывном байтовом потоке. 1 За константой следует номер версии протокола, который даёт понять, в каком формате должно происходить дальнейшее считывание. 1
- Информация о содержимом контейнера. 1 Указывается тип содержимого, его длина и контрольная сумма. 1 Имея эту информацию, можно без проблем и опасений считать содержимое и приступить к его разбору. 1
- Контрольная сумма заголовка. 1 Она должна заключать заголовок (исключая из расчёта саму контрольную сумму) — только так можно быть уверенным в том, что считывается валидный заголовок, за которым следуют предназначенные данные. 1 Если контрольная сумма не совпала, придётся искать следующее начало нового заголовка дальше по потоку. 1
Например, в бинарном формате работает протокол HTTP2, который отправляет фреймы с одинаковой структурой: тип, длина, флаги, идентификатор потока и полезная нагрузка фрейма. 4