Поле Internet идентификации (ID) используется вместе с адресами отправителя и получателя, полями протокола для идентификации фрагментов датаграммы при сборке.
Бит флага More Fragments (MF) устанавливается, если датаграмма не является последним фрагментом. Поле Fragment Offset идентифицирует расположение фрагмента относительно начала в первоначальной не фрагментированной датаграмме. Единица измерения - 8 октетов.
Стратегия фрагментации разработана так, чтобы не фрагментированная датаграмма имела нули во всех полях с информацией о фрагментации (MF=0, Fragment Offset=0). Если же Internet датаграмма фрагментируется, то выделение информации производится кусками и по границе 8 октет.
Данный формат позволяет использовать 2**32=8192 фрагментов по 8 октетов каждый, а в целом 65536 октетов. Заметим, что это совпадает со значением поля общей длины для датаграммы (конечно, заголовок учитывается в общей длине датаграммы, но не фрагментов).
Когда происходит фрагментация, то некоторые опции копируются, а другие остаются лишь в первом фрагменте.
Каждый Internet модуль должен быть способен передать датаграмму из 68 октетов без дальнейшей фрагментации. Это происходит потому, что Internet заголовок может включать до 60 октетов, а минимальный фрагмент - 8 октетов. Каждый Internet - получатель должен быть в состоянии принять датаграмму из 576 октетов в качестве единого куска, либо в виде фрагментов, подлежащих сборке.
Процесс фрагментации может повлиять на предыдущие поля
(1) | - поле опций |
(2) | - флаг "more fragments" |
(3) | - смещение фрагмента |
(4) | - поле длины Internet заголовка |
(5) | - поле общей длины |
(6) | - контрольная сумма заголовка |
Если бит флага запрета фрагментации (Don't Fragment - DF) установлен, то Internet фрагментация данной датаграммы запрещена, даже если она может быть разрушена. Данное средство может использоваться для предотвращения фрагментации в тех случаях, когда хост-получатель не имеет достаточных ресурсов для сборки Internet фрагментов.
Одним из примеров использования средства запрета фрагментации должна служить линия, ведущая к малому хосту. Маленький хост может иметь фиксированную загрузочную программу, которая принимает датаграмму, помещает в памяти, а затем исполняет ее.
Процедуры фрагментации и сборки наиболее просто описываются примерами. Следующие процедуры являются учебными реализациями.
В следующих псевдопрограммах принимается следующая нотация:
"=<" означает "меньше или равно",
"#" означает "не равно",
"=" означает "равно",
"<-" означает "устанавливается в".
Кроме этого,
"с x по y" означает включительно по x, но не включая y.
К примеру, выражение "с 4 по 7" означало бы включение 4,5 и 6, но не включало бы 7.