6.14 Фрагментация
6.14 Фрагментация
Поля идентификации (Identification), флагов (Flags) и смещения фрагмента (Fragment Offset) позволяют фрагментировать и восстанавливать (собирать) датаграмму. Когда IP нужно переслать датаграмму большего размера, чем MTU следующего участка, то:
1. Сначала проверяется содержимое поля флагов. Если значение "Не фрагментировать" установлено в 1, ничего делать не нужно — датаграмма отбрасывается и перестает существовать.
2. Если флаг "Не фрагментировать" установлен в 0, то поле данных разделяется на отдельные части в соответствии с MTU следующего участка. Полученные части выравниваются по 8-октетной границе.
3. Каждой части присваивается заголовок IP, подобный заголовку исходной датаграммы, в частности копируются значения полей источника, назначения, протокола и идентификации. Однако следующие поля устанавливаются индивидуально для каждой из частей:
a. Длина датаграммы будет отражать текущую длину полученной датаграммы.
b. Флаг More из поля флагов устанавливается в 1 для всех частей, кроме последней.
c. Поле смещения фрагмента будет указывать позицию полученной части относительно начала исходной датаграммы. Начальная позиция принимается за 0. Смещение фрагмента равно реальному смещению, разделенному на 8.
d. Для каждого фрагмента вычисляется собственная контрольная сумма.
Теперь настало время более подробно рассмотреть поля при фрагментации датаграммы.