Размер пустого пакета UDP и TCP?

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

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


person puccio    schedule 04.12.2009    source источник
comment
Википедия расскажет вам все, что вам нужно знать в этом случае ...   -  person Artelius    schedule 04.12.2009
comment
Артелиус и Халфдан верны, но вам чего-то не хватает: UDP и TCP работают поверх некоторого физического транспорта. Например, если вы используете UDP через Ethernet, вы также должны указать размер Ethernet-фрейма   -  person Useless    schedule 04.12.2009
comment
Ну ... и, конечно, IP-кадр, если вы хотите, чтобы он маршрутизировался.   -  person halfdan    schedule 04.12.2009
comment
Какой уровень сервера? UDP на IP может работать на многих уровнях сервера, одним из которых является Ethernet, но есть также MPLS, PBT, Frame Relay, ATM, POS и т. Д.   -  person jldupont    schedule 06.12.2009
comment
Не существует такой вещи, как IP-кадр: вы, вероятно, захотите иметь в виду IP-пакет.   -  person jldupont    schedule 06.12.2009


Ответы (4)


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 байта

person Himanshu    schedule 04.12.2009
comment
это (по модулю возможных ошибок :) было действительно общим результатом, которого я действительно искал! - person puccio; 04.12.2009
comment
Я думаю, что минимальный кадр Ethernet составляет 64 байта (полезная нагрузка должна быть дополнена как минимум до 46 байтов). - person Useless; 04.12.2009
comment
Однако не все TCP и UDP передаются поверх Ethernet - на самом деле один и тот же пакет вполне может передаваться на нескольких разных физических уровнях во время его прохождения по разным сетям. - person caf; 04.12.2009
comment
Вы предполагаете, что уровень IP-сервера работает поверх Ethernet - справедливое предположение для LANS, с меньшей вероятностью, когда дело доходит до WAN. - person jldupont; 06.12.2009
comment
Я проанализировал UDP-пакет в Wireshark, который передается из программы JAVA. - person Anand; 01.08.2016
comment
Некоторые источники, такие как Википедия, говорят, что использование полей Контрольная сумма и Порт источника необязательно в заголовке IPv4 UDP. Значит ли это, что если я захочу отключить эти 2 поля, я сохраню 4 байта из размера заголовка UDP? - person Dainius Kreivys; 06.09.2016
comment
Каким образом кадр Ethernet имеет 24 байта? Если я рассматриваю и Mac, и протокол, сумма составляет 14 байтов, что не так в этом предположении? - person Johnny Willer; 08.11.2017
comment
@JohnnyWiller Preamble (8 октетов) и последовательность проверки кадра (2 октета). - person minmaxavg; 11.11.2018

Ответ Химаншуса совершенно правильный.

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

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

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

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

Дополнительная информация:

person Felix    schedule 20.08.2014
comment
Означает ли это также следующее? 18 (минимальное количество полей заголовка Ethernet) + 18 (заполнение) + 20 (IPv4) + 8 (UDP) = 64 байта? Всего 18 + 20 + 8 = 46 байтов для полезной нагрузки IP + UDP. - person Ali; 08.12.2014
comment
Да! Здесь снова 20 + 8 (= 28) недостаточно для минимальной полезной нагрузки Ethernet, поэтому необходимо 18 байтов заполнения (20 + 8 + 18 = 46). - person Felix; 09.12.2014
comment
Если вам интересно, как отличить пустой пакет TCP от пакета с 1-6 байтами полезной нагрузки в сети Ethernet, это делается с помощью поля общей длины в заголовке IP. - person Karsten Spang; 24.10.2017

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

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

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

person halfdan    schedule 04.12.2009

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

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

то есть в общей сложности на пакет потребляется еще 20 байтов.

person Evgeniy Berezovsky    schedule 01.06.2015