Справочник по сетевым протоколам

       

Фрагментация и сборка


Поле 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.



Содержание раздела