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

ОГЛАВЛЕНИЕ

В данном документе мы рассмотрим, что такое IP фрагментация, как она происходит и почему является нежелательным явлением в сетях, а также рассмотрим пару сценариев как ее предотвратить.

IP-фрагментация и реассемблирование

IP Протокол был спроектирован для использования на широком разнообразии каналов передачи данных. Хотя максимальная длина датаграммы IP - 64 КБ, большинство каналов передачи данных устанавливают максимальный предел длины пакета, названный MTU.

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

IP-фрагментация это разбиение датаграммы на множество частей, которые могут быть повторно собраны позже. Для IP-фрагментации и повторной сборки используются такие поля из IP заголовка как источник, адресат, идентификация, полная длина, и смещение фрагмента, наряду с флажками "больше фрагментов" (MF) и "не фрагментировать" (DF).

Изображение ниже изображает расположение IP заголовка



Идентификация это 16 битовое поле и есть значение, назначенное отправителем IP датаграммы. Используется для последующей сборки фрагментов датаграммы.
Смещение фрагмента это поле 13 битов и указывает, какому месту принадлежит фрагмент в оригинальной IP датаграмме. Это значение всегда кратно восьми байтам.
В области флажков заголовка IP, есть три бита для флажков управления. Важно отметить, что бит "не фрагментировать" (DF) играет основную роль во фрагментации, потому что он определяет, можно ли фрагментировать пакет.

Бит 0 – зарезервирован и всегда сброшен в 0. Бит 1 – это бит DF (0 – можно фрагментировать, 1 – нельзя). Бит 2 – это бит MF (0 – это последний фрагмент, 1 = есть еще фрагменты)

На график ниже показ пример фрагментации.



Если вы сложите все длины IP-фрагментов, то полученное значение превысит оригинальную длину IP датаграммы на 60 байт. Причина,такого увеличения состоит в том, что были созданы три дополнительных IP заголовка, по одному для каждого фрагмента после первого.
  • Первый фрагмент имеет смещение 0, длина этого фрагмента - 1500; она включает 20 байтов для немного измененного оригинального IP заголовка.
  • Второй фрагмент имеет смещение 185 (185 x 8 = 1480), которое означает, что порция данных этого фрагмента начинается с 1480 байта в оригинальной IP датаграмме. Длина этого фрагмента - 1500; она включает дополнительный IP заголовок, созданный для этого фрагмента.
  • Третий фрагмент имеет смещение 370 (370 x 8 = 2960), которое означает, что данные этого фрагмента начинаются с 2960 байта в оригинальной IP датаграмме. Длина этого фрагмента - 1500; она включает дополнительный заголовок IP, созданный для этого фрагмента.
  • Четвертый фрагмент имеет смещение 555 (555 x 8 = 4440), которое означает, что часть данных этого фрагмента начинается с 4440 байтов в оригинальной IP датаграмме. Длина этого фрагмента - 700 байтов; это включает дополнительный заголовок IP, созданный для этого фрагмента.
Только, когда получен последний фрагмент, может быть определен размер оригинальной IP датаграммы. Смещение фрагмента в последнем фрагменте (555) дает смещение данных в 4440 байтов в оригинальной IP датаграмме. Если вы добавите байты данных от последнего фрагмента (680 = 700 - 20), это даст вам 5120 байтов, что является порцией данных оригинальной IP датаграммы. Затем, добавляя 20 байтов для IP заголовка мы получим размер оригинальной IP датаграммы (4440 + 680 + 20 = 5140).

Читайте также:
  • Протокол GRE
    Полученный в результате пакет GRE инкапсулируется в пакет другого протокола (протокол доставки). В данной статье мы рассмотрим форматы пакетов проткола GRE. GRE версии 0Формат заголовка GRE версии 0 выглядит следующим образом.Первые два октета заголовка содержат флаги GRE:C, Checksum Present. 1 бит....
  • Конфигурирование GRE туннелей в TCP/IP
    Рис. 1Туннельные линки являются poin-to-point линками. Туннелирование состоит из следующих трех компонентов:Протокол-"пассажир", который инкапсулируется в туннель, например AppleTalk, CLNS, IP, and IPX.Протокол носитель - протокол, который выполняет инкапсуляцию, например GRE, IP-in-IP, L2...
  • Защита стека TCP/IP от SYN атак
    В то время как невозможно полностью предотвратить SYN атаки, настройка TCP/IP стека помогает уменьшить влияние этого вида атак, при этом все еще разрешая легальный клиентский трафик через сервер. Необходимо отметить, что некоторые SYN атаки не всегда пытаются "положить" серверы, вместо это...
  • Протокол SSTP
    VPN Virtual private network (виртуальная частная сеть), или также называемая VPN, это сеть которая собирается с использованием общих элементов для подключения к узлам, что позволяет пользователям создавать сети для передачи данных. Системы используют шифрование и различные другие меры безопаснос...
  • Протокол SNMP
    Протокол SNMP Протокол SNMP появился в конце 1980-х гг., когда возникла необходимость управлять растущими сетями и проверять определенные условия функционирования данных сетей. Большинство протоколов в TCP/IP построены на основе модели клиент/сервер. За исключением небольших различий в плане опреде...