Телекоммуникационные технологии.Сети TCP-IP


Фрагментация дейтаграмм


Различные среды передачи имеют различный максимальный размер передаваемого блока данных (MTU- Media Transmission Unit), это число зависит от скоростных характеристик среды и вероятности возникновения ошибки при передаче. Например, размер MTU в 10Мбит/с Ethernet равен 1536 октетам, в 100 Мбит/с FDDI - 4096 октетам.

При передаче дейтаграммы из среды с большим MTU в среду c меньшим MTU может возникнуть необходимость во фрагментации дейтаграммы. Фрагментация и сборка дейтаграмм осуществляются модулем протокола IP. Для этого применяются поля “ID” (Identification), “Flags” и “Fragment Offset” заголовка дейтаграммы.

Flags -поле состоит из 3 бит, младший из которых всегда сброшен:

0

DF

MF

Значения бита DF (Don’t Fragment):

0 - фрагментация разрешена,

1 - фрагментация запрещена (если дейтаграмму нельзя передать без фрагментации, она уничтожается).

Значения бита MF (More Fragments):

0 - данный фрагмент последний (единственный),

1 - данный фрагмент не последний.

ID (Identification) - идентификатор дейтаграммы, устанавливается отправителем; используется для сборки дейтаграммы из фрагментов для определения принадлежности фрагментов одной дейтаграмме.

Fragment Offset - смещение фрагмента, значение поля указывает, на какой позиции в поле данных исходной дейтаграммы находится данный фрагмент. Смещение считается 64-битовыми порциями, т.е. минимальный размер фрагмента равен 8 октетам, а следующий фрагмент в этом случае будет иметь смещение 1. Первый фрагмент имеет смещение нуль.

Рассмотрим процесс фрагментации на примере. Допустим, дейтаграмма размером 4020 октетов (из них 20 октетов заголовка) передается из среды FDDI (MTU=4096) в среду Ethernet (MTU=1536). На границе сред производится фрагментация дейтаграммы. Заголовки в данной дейтаграмме и во всех ее фрагментах одинаковой длины - 20 октетов.

Исходная дейтаграмма:
заголовок: ID=X, Total Length=4020, DF=0, MF=0, FOffset=0
данные (4000 октетов): “А....А” (1472 октета), “В....В” (1472 октета), “С....С” (1056 октетов)

Фрагмент 1:
заголовок: ID=X, Total Length=1492, DF=0, MF=1, FOffset=0
данные: “А....А” (1472 октета)

Фрагмент 2:
заголовок: ID=X, Total Length=1492, DF=0, MF=1, FOffset=184
данные: “B....B” (1472 октета)

Фрагмент 3:
заголовок: ID=X, Total Length=1076, DF=0, MF=0, FOffset=368
данные: “C....C” (1056 октетов)

Фрагментация может быть рекурсивной, т.е., например, фрагменты 1 и 2 могут быть еще раз фрагментированы; при этом смещение (Fragment Offset) считается от начала исходной дейтаграммы.




- Начало -  - Назад -  - Вперед -