Назад | Перейти на главную страницу

Почему полезная нагрузка Ethernet не превышает 1500, а я могу пинговать с пакетом большего размера?

Совсем недавно я узнал, что полезная нагрузка Ethernet составляет не более 1500 байт (mtu).

Первое, что пришло мне в голову, это то, что мы можем пинговать с гораздо большим размером, чем этот. Так что я подумал, что, может быть, пакет ping каким-то образом разорван. Итак, я проверил wirehark и увидел, что это только один пакет, даже когда я пингую с размером 10 000 байт.

Какое объяснение этому стоит?

Обновить:

Даже если используются кадры Jumbo Ethernet, которые поддерживают до 9000 байт, я все равно могу пинговать примерно 17000 байт, что по-прежнему превышает 9000.

На основе комментария @ColtonCat

Ответ прост потому, что имеет место фрагментация IP.

Пример: ping с размером 2000 байт и максимальным mtu 1518, вы можете увидеть в wirehark, что и запрос ping, и ответ разбиты на пакеты по 1518 и 566 байтов.

Расчет выглядит следующим образом: 18 байтов для заголовка Ethernet (src mac 6, dst mac 6, тип 2, FCS 4), 20 байтов для заголовка IP, 8 байтов для ICMP >> 46. MTU равно 1518, так что остается 1472 байта. данных (1518 - 46).

Те же вычисления выполняются для второго фрагментированного пакета.

Примечание. Wireshark не показывает байты FCS. Таким образом, вам просто нужно вычесть 4. Кроме того, все это может иметь место для IPv4, поскольку в IPv6 не допускается фрагментация.