Неиспользуемое значение поля в протоколе передачи - PullRequest
0 голосов
/ 28 апреля 2009

Я пишу техническую документацию для небольшого протокола, используемого внутри сети GSM. Этот протокол использует шаблон [id1] + [byte [] data1], [id2] + [byte [] data2] и т. Д. В непрерывном потоке байтов.

Дело в том, что по разным причинам (возможность расширения в будущем и обратная совместимость) некоторые поля не используются. Значения этих полей являются выбором того, кто реализует протокол (и на данный момент значение по умолчанию берется из языка / среды, используемой для реализации протокола, то есть значения по умолчанию для элементов байтового массива).

Теперь вопрос. Каким-то образом полезно устанавливать значение по умолчанию для неиспользуемых полей?

Ответы [ 3 ]

0 голосов
/ 28 апреля 2009

В общем, я скажу "да" . Указав значения по умолчанию и значения заполнения, вы сможете вносить изменения в протокол в будущем на основе существующих значений заполнения. Если вы не можете зависеть от того, какие байты находятся в сети сейчас, то нет хорошего способа обеспечить структуру этих байтов в будущем. Не говоря уже о том, что вообще плохая идея допускать попадание «зависимых от реализации значений» в двоичную спецификацию. Так я получил 8-байтовые отступы и упорядоченные Intel IP-адреса в структурах «по проводам».

0 голосов
/ 28 апреля 2009

Обычно рекомендуется указывать значение неиспользуемых полей следующим образом: - Отправитель ДОЛЖЕН установить поле в ноль - Получатель ДОЛЖЕН игнорировать поле

Таким образом, в какой-то момент в будущем вы можете использовать поле для какой-либо новой функции. Когда вы делаете это, все, что вам нужно сделать для обратной совместимости, это определить значение 0 поля, чтобы обозначать «старое поведение до введения новой функции.

(На самом деле, также неплохо ввести некоторую форму объявления о возможностях, которая позволяет одной стороне определить, поддерживает ли другая сторона эту функцию, другими словами, сможет ли другая сторона нулевые значения для поля.)

0 голосов
/ 28 апреля 2009

Преимущество, если таковое имеется, заключается в будущих версиях протокола, где используются поля. «Плохое» значение по умолчанию позволило бы получателю определить, что используется более старая версия протокола.

...