Размер пустого пакета UDP и TCP? - PullRequest
30 голосов
/ 04 декабря 2009

Каков размер пустой дейтаграммы UDP? А что за пустой пакет TCP?

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

Ответы [ 5 ]

75 голосов
/ 04 декабря 2009

TCP:

Размер кадра Ethernet - 24 байта
Размер заголовка IPv4 (без параметров) - 20 байт
Размер заголовка TCP (без каких-либо опций) - 20 байт

Общий размер кадра Ethernet, несущего пакет IP с пустым сегментом TCP - 24 + 20 + 20 = 64 байта

UDP:

Размер кадра Ethernet - 24 байта
Размер заголовка IPv4 (без параметров) - 20 байт
Размер заголовка UDP - 8 байт

Общий размер кадра Ethernet, несущего пакет IP с пустой дейтаграммой UDP, - 24 + 20 + 8 = 52 байта

18 голосов
/ 20 августа 2014

Himanshus ответ совершенно правильно.

Что может вводить в заблуждение при рассмотрении структуры кадра Ethernet [см. Дальнейшее чтение], так это то, что без полезной нагрузки минимальный размер кадра Ethernet будет составлять 18 байт: Dst Mac (6) + Src Mac (6) + Длина (2) + Fcs (4), добавление минимального размера IPv4 (20) и TCP (20) дает нам 58 байтов.

Что еще не было упомянуто, так это то, что минимальная полезная нагрузка кадра Ethernet составляет 46 байт, поэтому 20 + 20 байт из IPv4 и TCP недостаточно для полезной нагрузки! Это означает, что необходимо заполнить 6 байтов, то есть, откуда исходит 64 байта.

18 (мин. Поля заголовка Ethernet) + 6 (заполнение) + 20 (IPv4) + 20 (TCP) = 64 байта

Надеюсь, это немного прояснит ситуацию.

Дополнительная литература :

8 голосов
/ 04 декабря 2009

См. Протокол пользовательских дейтаграмм . Заголовок UDP имеет длину 8 байт (64 бита).

Минимальный размер пустого заголовка TCP составляет 5 слов (32-разрядное слово), а максимальный размер заголовка TCP составляет 15 слов.

С наилучшими пожеланиями, Fabian

1 голос
/ 04 декабря 2009

Артелиус и Халфдан правы, но вы что-то упускаете: UDP и TCP работают поверх некоторого физического транспорта. Например, если вы используете UDP через Ethernet, вы должны также включить размер кадра Ethernet

0 голосов
/ 01 июня 2015

Если вы намереваетесь рассчитать потребление полосы пропускания и соотнести его с максимальной скоростью вашей сети (например, 1 Гбит / с или 10 Гбит / с), необходимо, как указал Useless, добавить * 1002. * Накладные расходы на кадрирование Ethernet на уровне 1 до чисел, рассчитанных Феликсом и другими, а именно

  • 7 байтов преамбула
  • 1 байт разделитель начала кадра
  • 12-байтовый межпакетный промежуток

т.е. в общей сложности на каждый пакет расходуется еще 20 байтов.

...