1

У меня есть датаграмма 3600 байт, MTU 800 байт, и поэтому мое количество фрагментов составляет 5.

Я обнаружил, что первые 4 фрагмента будут 800 байтов (включая 20B для заголовка IP), а последний будет 480 (включая заголовок IP).

Смещение для первого конечно 0, но когда я вычисляю смещение для второго фрагмента, я получаю это:

fragment 2 offset = 780 Bytes / 8 = 97.5

Как мне справиться с получением нецелого числа? Я возьму потолок?

1 ответ1

1

Хорошо, я понял, вы должны выбрать размер полезной нагрузки, который делится на 8 и оставить оставшееся место для заголовка.

На мой вопрос я получил 97,5, потому что 780 не делится на 8, поэтому я уменьшил размер полезной нагрузки до 776, что при делении на 8 дает мне 97.

Затем я использую это значение для вычисления смещения фрагмента.

Если у вас MTU, равный 800 байтам, ваше смещение для второго фрагмента будет, конечно, 97, и как это работает в реальном пакете:

  • Заголовок IP = 20 байт
  • Полезная нагрузка = 776 байт
  • Неиспользуемое пространство = 4 байта

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .