Подтвердить что ты не робот

Что такое служебные данные, полезная нагрузка и заголовок

Может кто-нибудь, пожалуйста, объясните мне, что такое служебные данные, полезная нагрузка, заголовок и пакет. Насколько я знаю, пакет - это все данные, которые нужно передать. Этот пакет состоит из фактических данных, которые, по моему мнению, являются полезной нагрузкой, а исходная/целевая информация пакета находится в заголовке. Таким образом, пакет состоит из заголовка и полезной нагрузки. Так что это накладные расходы. является верхней частью части заголовка. Я получил это из сети. "Подкачка пакетов включает в себя все лишние байты информации, которые хранятся в заголовке пакета", заголовок уже содержит информацию о источнике/получателе. Каковы дополнительные байты информации, которые накладные расходы этого пакета. Я смущен.

4b9b3361

Ответ 1

В пакете, как вы сказали, есть "полезная нагрузка", которая сама по себе должна передавать данные (обычно это пользовательские данные), "заголовок" содержит различные вещи, зависит от используемого вами протокола, например UDP содержит только простые вещи в заголовке, такие как Destination и Source IP/PORT, TCP на другом конце содержит больше таких вещей, как порядковый номер пакета для обеспечения упорядоченной доставки, множество флагов для обеспечения фактически принятого пакета в нем адресата и контрольной суммы данных, чтобы убедиться, что она не повреждена и не получена правильно в нем деление.

Теперь "служебная" часть на самом деле является дополнительными данными, необходимыми для отправки вашей полезной нагрузки. В случаях, о которых я говорил выше, это часть заголовка, потому что вам нужно добавить ее в каждую полезную нагрузку, которую вы хотите отправить через Интернет. TCP имеет большие накладные расходы, чем UDP, потому что ему нужно добавить больше данных в вашу полезную нагрузку, но вы гарантированно получите ваши данные в этом месте назначения в том порядке, в котором вы его отправили, а не повреждены. UDP не имеет этих функций, поэтому он не может этого гарантировать.

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

int playerID;
float posX;
float posY;

Размер полезной нагрузки составляет 12 байт, и, скажем, мы отправляем ее с использованием TCP, теперь весь пакет будет выглядеть следующим образом:

-------------
TCP_HEADER
-------------
int playedID;
float posX;
float posY;

Теперь весь размер пакета - полезная нагрузка + TCP_HEADER, которая составляет 12 байтов + (от 32 байт до 72 байт), теперь у вас есть служебные данные от 32 до 72 байт для ваших данных. Вы можете прочитать о заголовке TCP здесь. Обратите внимание, что накладные расходы даже больше, чем сами данные!

Теперь вам нужно решить, является ли это протоколом, который вы хотите использовать для своей игры, если вам не нужны функции, в которых TCP лучше использовать UDP, поскольку он имеет меньшие накладные расходы и, следовательно, меньше данных для отправки.

Ответ 2

Вы правы, что пакет обычно состоит из заголовка, а затем полезной нагрузки. Накладные расходы по типу пакета - это сумма потерянной полосы пропускания, которая требуется для передачи полезной нагрузки. Заголовок пакета представляет собой дополнительную информацию, помещенную поверх полезной нагрузки пакета, чтобы гарантировать, что он добирается до места назначения.

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

Можно сказать, что UDP имеет более низкие накладные расходы, чем TCP, потому что его пакеты имеют меньший заголовок и, следовательно, имеют меньшую пропускную способность для отправки полезной нагрузки (данные).

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