Размер пустого пакета UDP и TCP?
Каков размер пустой UDP-дейтаграммы? А что за пустой пакет TCP?
Я могу только найти информацию о MTU, но я хочу знать, каков их "базовый" размер, чтобы оценить потребление пропускной способности для протоколов поверх них.
6 ответов
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 байта
Himanshus ответ совершенно правильно.
Что может вводить в заблуждение при рассмотрении структуры кадра 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 байта
Надеюсь, это немного прояснит ситуацию.
Дальнейшее чтение:
См. Протокол пользовательских дейтаграмм. Заголовок UDP имеет длину 8 байт (64 бита).
Минимальный размер пустого заголовка TCP составляет 5 слов (32-битное слово), а максимальный размер заголовка TCP составляет 15 слов.
С наилучшими пожеланиями, Фабиан
Если вы намереваетесь рассчитать потребление полосы пропускания и связать их с максимальной скоростью вашей сети (например, 1 Гбит / с или 10 Гбит / с), необходимо, как указал Useless, добавить накладные расходы на кадрирование Ethernet на уровне 1 к числа, рассчитанные Феликсом и другими, а именно
- Преамбула 7 байтов
- 1-байтовый разделитель начала кадра
- 12-байтовый межпакетный зазор
т.е. в общей сложности еще 20 байтов потребляется на пакет.
Артелиус и Халфдан правы, но вы что-то упускаете: UDP и TCP работают поверх некоторого физического транспорта. Например, если вы используете UDP поверх Ethernet, вы должны также включить размер кадра Ethernet
Если вы ищете точку зрения на программное обеспечение (в конце концов, Stack Overflow предназначен для вопросов по программному обеспечению), то фрейм не включает служебные данные FCS, отступов и символов кадрирования, и ответ равен 54:
- 14-байтовый заголовок L2
- 20 байт заголовка L3
- 20 байт заголовка L4
Это происходит в случае пакета подтверждения TCP, поскольку пакеты подтверждения не имеют параметров L4.
Что касается FCS, заполнения, символа кадрирования, туннелирования и т. д., которые аппаратные и промежуточные маршрутизаторы обычно скрывают от программного обеспечения хоста... Программное обеспечение действительно заботится только о дополнительных накладных расходах из-за их влияния на пропускную способность. Как отмечают другие ответы, FCS добавляет к кадру 4 байта, что делает его кадром 58 байтов. Следовательно, для достижения минимального размера кадра в 64 байта требуется 6 байтов заполнения. Контроллер Ethernet добавляет дополнительные 20 байт символов кадрирования, что означает, что пакет занимает минимум 84 байта (или 672 бита) в сети. Так, например, канал 1 Гбит/с может отправлять один пакет каждые 672 нс, что соответствует максимальной скорости передачи пакетов примерно 1,5 МГц. Кроме того, промежуточные маршрутизаторы могут добавлять различные теги и заголовки туннелей, которые дополнительно увеличивают минимальный размер TCP-пакета в точках внутри сети (особенно в магистральных сетях общего пользования).
Однако, учитывая, что программное обеспечение, вероятно, разделяет полосу пропускания с другим программным обеспечением, разумно предположить, что этот вопрос касается не общей пропускной способности сети, а скорее того, сколько байтов должно генерировать программное обеспечение хоста. Хост использует контроллер Ethernet (например, этот 10 Мбит/с или этот 100 Гбит/с) для добавления символов FCS, заполнения и кадрирования, а также использует маршрутизаторы для добавления тегов и туннелей (контроллер разгрузки виртуализации, например, во втором канале). , имеет встроенный механизм туннелирования.Более старые контроллеры полагаются на отдельный блок маршрутизатора). Следовательно, минимальный пакет TCP , сгенерированный программным обеспечением хоста, составляет 54 байта.