Разработка собственного протокола - дело не простое. Однако его создание поверх TCP / IP облегчает задачу. Вы указали, что RFC - это правила протокола, и вы правы. Тем не менее, как правило, это и есть протокол: набор правил и соглашений о том, как что-то сделать. Прелесть здесь в том, что вы можете указать свои собственные правила. Некоторые из вещей, которые вы должны учитывать, это тип (ы) данных, которые будут отправлены, длина каждого куска и состояние (если есть). HTTP, например, это протокол без сохранения состояния с заголовком, который определяет запрос или результат, и полезной нагрузкой, определяющей отправляемые данные, которые могут быть публикацией формы или страницей html.
Таким образом, вам нужно будет определить данные для отправки или получения, длину данных в байтах, которые могут быть определены типом данных или объемом ожидаемых данных. Если в вашем протоколе есть состояние - то есть что-то должно быть сначала отправлено и получено, прежде чем что-то еще - тогда вам нужно определить это состояние. Кроме того, это простое сетевое программирование (отправка и получение данных в вашем приложении).
Например, простой протокол мог бы иметь это:
Command 1 Byte
Length 4 Bytes
Data Length Bytes
Первые два определяют ваш заголовок, который содержит метаданные о данных, а другой конец должен уметь читать все. Последний будет фактическими данными. Команда, хотя и не обязательная, служит для того, чтобы показать, что другая сторона может выполнить определенное действие с данными в зависимости от полученного байта. Длина данных важна, потому что другой конец должен знать, когда он прочитает все данные, прежде чем сможет работать с ними.
Этот ответ действительно помогает закрепить то, что я говорю. Надеюсь, это поможет!
https://stackoverflow.com/a/11658296/2498017