stringtranslate.com

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

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

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

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

Процесс

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

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

Различия 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. ^ abc Интернет-протокол , Институт информационных наук, сентябрь 1981 г., RFC 791. 
  2. ^ ab Дэвид Д. Кларк (июль 1982 г.), Алгоритмы повторной сборки IP-дейтаграмм , RFC 815 
  3. ^ Архитектурные последствия NAT , ноябрь 2000 г., RFC 2993. 
  4. ^ С. Диринг ; Р. Хинден (декабрь 1998 г.), Спецификация интернет-протокола версии 6 (IPv6) , RFC 2460. 
  5. ^ Кристофер А. Кент, Джеффри К. Могул. «Фрагментация считается вредной» (PDF) .
  6. ^ Path MTU Discovery , ноябрь 1990 г., RFC 1191. 
  7. ^ Фрагментация IP считается хрупкой. Сентябрь 2020 г. doi : 10.17487/RFC8900 . РФК 8900.

Внешние ссылки