Из чего состоит сетевой пакет?

1339
Aung Kaung Hein

Я знаю основную сеть, но я не очень хорош в этом. Теперь я рассчитываю, сколько пакетов будет потеряно, если я буду использовать UDP поверх IPv4 . Я могу предположить, что издержки протокола для данных, отправляемых через UDP по IPv4, составляют 66 байтов . И данные должны передаваться в блоках размером 4 КБ (это должен быть размер полезной нагрузки каждого пакета).

Вот мой вопрос:

Из чего состоит сетевой пакет?

Википедия утверждает, что

Пакет состоит из двух видов данных: управляющая информация и пользовательские данные (также известные как полезная нагрузка).

Таким образом, в основном пакет имеет заголовок и трейлер с промежуточными данными.

Структура пакета выглядит следующим образом: Заголовок | Полезная нагрузка | трейлер

Так что, если я хочу сформировать пакет, должен ли я включать издержки протокола в мои вычисления?

Размер пакета = 66 байт (издержки протокола) + 4096 байт (полезная нагрузка) = 4162 байт

Любая помощь будет очень высоко ценится.

0
Вы говорите, что хотите вычислить потерянные пакеты, но затем переходите к задаче о длине пакета. Это потому, что вы знаете частоту ошибок по битам и можете использовать ее, а также длину пакета для расчета частоты потери пакетов? Если так, я рекомендую сделать это ясно в вопросе. Я только понял почему, когда спрашивал вас, почему (я написал начало этого комментария до того, как понял, так что, думаю, у других возникла бы такая же или хуже проблема). ctrl-alt-delor 9 лет назад 0
@ Richard Я делаю эксперимент в данной ситуации. 4788 МБ данных должно быть передано от A до B. Как вы знаете, UDP, как правило, довольно ненадежен: в среднем 3,3% передаваемых пакетов данных теряются. Издержки протокола составляют 66 байтов. Поэтому мне нужно знать, как сначала определить размер пакета, чтобы я мог рассчитать, сколько пакетов будет передано. Итак, я должен добавить накладные расходы для расчета размера пакета или мне просто нужно использовать полезную нагрузку? Aung Kaung Hein 9 лет назад 0
Скорость потери пакетов может варьироваться: я использовал UDP для выделенной локальной сети и получил нулевую потерю. С другой стороны, если вы отправите его через очень плохую сеть, вам может стать хуже. Большие пакеты с большей вероятностью будут потеряны. Меньшие пакеты имеют больше накладных расходов. Если вы используете UDP, то вам нужно добавить собственный протокол для обработки потери пакетов (или знать, что вы можете доверять сетевому уровню на 100%, чтобы сделать это за вас). ctrl-alt-delor 9 лет назад 0
У меня были некоторые проблемы с пониманием этого. Спасибо за все ваши объяснения @ Richard. Вы мне очень помогли. Итак, если, скажем, мне нужно выяснить, сколько пакетов необходимо передать, чтобы все 4788 МБ данных было получено в B, было бы правильно использовать эту формулу? 4788 МБ / размер пакета, который является суммой служебных данных и полезной нагрузки (66 байт + 4096 байт) ** В этом случае нулевые потери. ** Aung Kaung Hein 9 лет назад 0
Я рассчитал таким образом: 1 пакет имеет 4162 байта. Итак, сколько пакетов будет передано за 4788 МБ? Я получил 4162 байта, потому что я добавил издержки в моем расчете. Или мне просто использовать 4096 байт без издержек? Это именно то, что я хочу знать. Aung Kaung Hein 9 лет назад 0

2 ответа на вопрос

1
ctrl-alt-delor
  • Q: In which parts of the packet would corruption cause it to not be delivered?
  • A: An error in any important part of a packet will cause it to be rejected.
  • Q: What part if a packet is important.
  • A: All of it, or else it would not exist.

Therefore Consider the whole packet: payload, udp, ipv4, network-layer (ethernet, ppp, etc). Note the network-layer may change for different parts of the journey, and there for the length of the packet, but so also will the bit error rate.

«> сетевой уровень может изменяться для разных частей пути» - изменение сетевого уровня => дополнительная / удаленная управляющая информация, пакет может быть инкапсулирован в транспортную информацию произвольной сети, которая его передает. Hannu 9 лет назад 1
1
ctrl-alt-delor

To calculate the minimum number of packets needed, to send a given quantity of data (assuming zero losses).

Let Sp be the size of the payload of a packet. Let St be the total size of the data. Let Np be the number of packets. then Np=St/Sp 

In this case we do not consider the meta data (header/overhead).


Let us consider a physical example.

If we have 1L of water (Vt). We wish to move it using a cup(Vc). So number of times we have to use cup(Nc) is Nc=Vt/Vc.

But which Vc, the cup has two volumes, an internal and an external volume (Vi and Ve). The external volume is how much water would be displace if it had a lid to stop water getting in, or Vi+Vm where Vm is volume of the materials the cup is made of. Vi is more simply the Volume of water that the cup can hold. Which value of Vc should we use? Vc=Ve or Vc=Vi