Фрагментация IP - IP fragmentation

Пример фрагментации блока данных протокола на заданном уровне на более мелкие фрагменты.

Фрагментация IP является протокол Интернета (IP) процесс, который нарушает пакеты на более мелкие части (фрагменты), чтобы полученные кусочки могли пройти через звено с меньшим максимальная единица передачи (MTU), чем исходный размер пакета. Фрагменты собираются при приеме хозяин.

RFC  791 описывает процедуру IP-фрагментации, а также передачи и повторной сборки IP-пакетов.[1] RFC 815 описывает упрощенный алгоритм сборки.[2] В Идентификация поле вместе с иностранный и местный интернет-адрес и идентификатор протокола, и Фрагмент поле смещения вместе с Не фрагментируйте и Еще фрагмент флаги в Заголовок IP используются для фрагментации и повторной сборки IP-пакетов.[1]:24[2]:9

Если принимающий хост получает фрагментированный IP-пакет, он должен повторно собрать пакет и передать его на более высокий уровень протокола. Повторная сборка должна происходить на принимающем хосте, но на практике это может быть выполнено промежуточным маршрутизатором, например, преобразование сетевых адресов (NAT) май необходимо повторно собрать фрагменты, чтобы транслировать потоки данных.[3]

Детали механизма фрагментации, а также общий архитектурный подход к фрагментации различаются между IPv4, и IPv6.

Различия IPv4 и IPv6

Алгоритм фрагментации в IPv4.
Пример множественной фрагментации IPv4. Фрагментация происходит на двух уровнях. В первом Максимальный блок передачи составляет 4000 байтов, а во втором - 2500 байтов.

В IPv4 маршрутизатор который получает сетевой пакет больше, чем MTU следующего перехода, есть два варианта: отбросить пакет, если Не фрагментируйте (DF) бит флага устанавливается в заголовке пакета и отправляет Протокол управляющих сообщений Интернета (ICMP) сообщение, которое указывает состояние Необходима фрагментация (Тип 3, Код 4) или фрагментируйте пакет и отправьте его по каналу с меньшим MTU. Хотя отправители могут создавать фрагментированные пакеты, маршрутизаторы IPv6 не имеют возможности для дальнейшей фрагментации. Вместо этого требуется сетевое оборудование для доставки любых пакетов IPv6 или их фрагментов размером не более 1280 байт, а узлы IPv6 необходимы для определения оптимального MTU через Обнаружение MTU пути перед отправкой пакетов.

Хотя форматы заголовков различны для IPv4 и IPv6, аналогичные поля используются для фрагментации, поэтому один и тот же алгоритм может быть повторно использован для фрагментации и повторной сборки IPv4 и IPv6.

В IPv4 хосты должны делать все возможное для повторной сборки фрагментированных IP-пакетов с общим повторно собранным размером до 576 байт. Они также могут попытаться собрать фрагментированные IP-пакеты размером более 576 байт, но им также разрешено молча отбрасывать такие большие пакеты. Приложениям рекомендуется воздерживаться от отправки пакетов размером более 576 байт, если они не знают заранее, что удаленный хост способен их принять или повторно собрать.[1]:12

В IPv6 хосты должны делать все возможное для повторной сборки фрагментированных пакетов с общим повторно собранным размером до 1500 байтов, что превышает минимальный MTU IPv6, равный 1280 байтам.[4] Фрагментированные пакеты с общим повторно собранным размером более 1500 байтов могут опционально отбрасываться без уведомления. Приложения, использующие фрагментацию IPv6 для преодоления ограничения MTU пути, должны явно фрагментировать пакет в точке происхождения; однако им не следует пытаться отправлять фрагментированные пакеты с общим размером более 1500 байт, если они не знают заранее, что удаленный хост способен к повторной сборке.

Влияние на пересылку по сети

Когда сеть имеет несколько параллельных путей, такие технологии, как LAG и CEF разделить трафик между путями в соответствии с алгоритм хеширования. Одна из целей алгоритма - гарантировать, что все пакеты одинаковы. поток отправляются по тому же пути, чтобы свести к минимуму ненужные переупорядочивание пакетов.

Фрагментация IP может вызвать чрезмерное количество повторных передач при обнаружении фрагментов. потеря пакета а надежные протоколы, такие как TCP, должны повторно передавать все фрагменты для восстановления после потери одного фрагмента.[5] Таким образом, отправители обычно используют два подхода для определения размера IP-пакетов для отправки по сети. Во-первых, отправляющий узел должен отправить IP-пакет размером, равным MTU первого перехода в паре источник-место назначения. Второй - запустить алгоритм обнаружения MTU пути.[6] для определения MTU пути между двумя IP-хостами, чтобы избежать фрагментации IP.

По состоянию на 2020 год, Фрагментация IP считается хрупкой и часто нежелательной из-за ее воздействия на безопасность.[7]

Смотрите также

Рекомендации

  1. ^ а б c протокол Интернета, Институт информационных наук, сентябрь 1981 г., RFC  791
  2. ^ а б Дэвид Д. Кларк (июль 1982 г.), Алгоритмы повторной сборки IP-дейтаграмм, RFC  815
  3. ^ Архитектурные последствия NAT, Ноябрь 2000 г., RFC  2993
  4. ^ С. Диринг; Р. Хинден (декабрь 1998 г.), Спецификация интернет-протокола версии 6 (IPv6), RFC  2460
  5. ^ Кристофер А. Кент, Джеффри С. Могул. «Фрагментация считается вредной» (PDF).
  6. ^ Обнаружение MTU пути, Ноябрь 1990 г., RFC  1191
  7. ^ «Фрагментация IP считается хрупкой». IETF. 2019. Цитировать журнал требует | журнал = (помощь)

внешняя ссылка