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

Июнь 30, 2011

ООО \"Булат\" — это продажа строительных нерудных материалов: керамзит, керамзитовый гравий, песок, щебень, кирпич, пеноблоки. Мы оперативно обеспечиваем потребности наших клиентов в поставке стройматериалов по конкурентоспособным ценам. На текущий день цена на керамзит у Булата очень низкая. Если решили закупаться сырьем для стройки — советуем делать это сейчас, поскольку к осени стройматериалы должны подорожать.

______________________________________

Продолжение серии постов из курса по сетевым технологиям:

Необходимость процедуры фрагментации и реассемблирования IP-датаграмм обусловлена тем, что их передача выполняется, в общем случае, по физическим сетям различной природы, в которых дейст-вуют различные ограничения в том числе и на максимальный размер физического кадра-блока данных физического уровня (это ограничение называется MTU). Так в сетях Ethernet MTU составляет 1500 октет (октет = 8 двоичных разрядов). Размер MTU определяется пропускной способностью той или иной сетевой технологии.
Поскольку протокол IP спроектирован так чтобы не зависеть от сетевого оборудования и физической природы каналов связи, то в стандарте протокола IP жёстких ограничений на размер IP-датаграммы не накладывается, а максимальный размер IP-датаграммы достаточно велик, чтобы учитывать возможности прогресса существующих сетевых технологий. Это позволяет использовать возможности высокоскоростных сетей, передавая по ним датаграммы сравнительно большого размера. Однако при этом возникают проблемы: при необходимости передать IP-датаграмму большого размера по сети с малым MTU, её приходится фрагментировать. В результате IP-датаграмма передаётся в виде датаграмм меньшего размера. Фрагментированную IP-датаграмму необходимо так или иначе реассемблировать. Это обусловлено тем, что в теле исходной IP-датаграммы находится блок данных протокола транспортного уровня, который при фрагментации IP-датаграммы распределяется по фрагментам. Именно поэтому использовать фрагменты IP-датаграммы независимо друг от друга невозможно.
Теоретически реассемблирование может выполняться как маршрутизатором, так и конечным получателем. Но на практике, как правило, маршрутизаторы реассемблированием не занимается, и реассемблирование выполняет конечный получатель.
Для управления процессами фрагментации и реассемблирования используются следующие поля заголовка IP-датаграммы: Flags, Identification, Fragment Offset. На эти процедуры влияют также следующие поля: Header Length, Total Length, Header Checksum, Options.
При фрагментации заголовок каждого фрагмента формируется по заголовку исходной IP-датаграммы с последующей модификацией необходимых полей. В частности флаг MF для последнего фрагмента сбрасывается, для всех остальных устанавливается. Поле Fragment Offset каждого фрагмента указывает смещение блока данных данного фрагмента в блоке данных исходной IP-датаграммы (для первого фрагмента 0). Поле Options, если оно присутствует в исходной IP-датаграмме, передаётся полностью в составе первого фрагмента, в остальных оно отсутствует. Для каждого фрагмента пересчитывается контрольная сумма заголовка (Header Checksum).
Размер блока данных каждого фрагмента должен быть кратен 8 октетам, размер минимального фрагмента — 8 октетов. Значение поля Fragment Offset выражается в единицах, каждая из которых равна 8 октетам.
В связи с требованием кратности размера блока данных фрагмента 8 октетам размер блока данных всех исходных IP-датаграмм также формируется кратным 8 октетам, поскольку заранее невозможно предсказать будет ли необходимость во фрагментации или нет при её передаче получателю.
Требуется чтобы любая реализация протокола IP могла передавать фрагменты размером 68 октетов без дальнейшей фрагментации, а получатель был готов принять датаграмму размером в 576 октетов (полученную целиком или как фрагмент другой датаграммы).
Если в исходной IP-датаграмме флаг DF установлен, а в процессе её передачи возникла необходимость её фрагментации, то такая дата-грамма отбрасывается и не доставляется получателю.

++++++++++++++++++++++++++++++++++++++++++++++++

Предыдущие выпуски: