Я создаю протокол, чтобы два приложения общались через поток TCP/IP, и выясняю, как разработать заголовок для моих сообщений. Используя заголовок TCP в качестве начального руководства, мне интересно, понадобится ли мне дополнение. Я понимаю, что когда мы имеем дело с кешем, мы хотим убедиться, что сохраняемые данные помещаются в строку кеша, чтобы при их извлечении это делалось так эффективно. Однако я не понимаю, как имеет смысл дополнять заголовок, учитывая, что приложение будет анализировать поток байтов и сохранять его так, как считает нужным.
Например: я хочу отправить заголовок сообщения, состоящий из 3-байтового поля, за которым следует 1-байтовое поле заполнения для 32-битного выравнивания. Затем я отправлю данные сообщения.
В этом случае получатель просто возьмет 3 байта из потока и отбросит байт заполнения. А затем начните читать данные сообщения. Насколько я понимаю, он не будет хранить 3 байта и данные сообщения так, как ему хочется. Весь смысл выравнивания байтов заключается в том, чтобы они были извлечены эффективным образом. Но если ретривер не заботится о заполнении, как оно будет эффективно извлечено?
Без заполнения извлекатель просто берет 3 байта заголовка из потока, а затем берет байты данных. Поскольку ретривер хранит эти байты так, как хочет, какая разница, выполнено заполнение или нет?
Может быть, я упускаю момент заполнения.
Немного сложно извлечь вопрос из этого поста, но с тем, что я сказал, вы, ребята, вероятно, сможете указать на мои неправильные представления.
Пожалуйста, дайте мне знать, что вы, ребята, думаете.
Спасибо, джбу