Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5-1protocol IP 2011.docx
Скачиваний:
8
Добавлен:
10.08.2019
Размер:
169.18 Кб
Скачать

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

Маршрутизатор способен соединять сети с различными сетевыми средами и протоколами канального уровня, но, чтобы направить па­кеты из одной сети в другую, ему часто приходится переупаковывать дейтаграмму в другой кадр канального уровня. Иногда это выливает­ся в удаление старого кадра и создание нового. В других случаях про­токолы канального уровня различаются настолько сильно, что про­цесс переупаковки усложняется, как, например, при соединении сети Token Ring с сетью Ethernet. Дело в том, что в сети Token Ring дейта­грамма может иметь длину до 4500 байтов, а в сети Ethernet — не бо­лее 1500 байтов.

Для решения этой проблемы маршрутизатор разделяет дейтаграм­му, пришедшую из сети Token Ring, на несколько фрагментов (рис. 4). Каждый из них обладает собственным заголовком IP и пересы­лается в отдельном кадре канального уровня. Размер фрагмента оп­ределяется размером максимальной единицы передачи (maximum trans­fer unit, MTU) в целевой сети. Попадая в сети с меньшим значением MTU, фрагменты могут дробиться дальше. Восстановление исходной дейтаграммы из фрагментов производится только в самом конце их путешествия, в целевой системе.

Маршрутизатор

Рис. 4. Для передачи по сети с меньшим значением MTU маршрутизатор разделяет дейтаграмму на фрагменты

Разбивая дейтаграмму на фрагменты, протокол IP к каждому из них присоединяет IP-заголовок. Поле Identification в заголовке каж­дого фрагмента содержит то же значение, что и аналогичное поле в заголовке исходной дейтаграммы. Это позволяет целевой системе найти фрагменты, принадлежащие одной и той же дейтаграмме. Кро­ме того, маршрутизатор записывает в поля Total Length длины фраг­ментов и изменяет значение бита More Fragments в поле Flags с 0 на 1 во всех фрагментах, кроме последнего. Значение 1 этого бита означа­ет, что существуют и другие фрагменты, относящиеся к той же дей­таграмме. По биту More Fragments целевая система определяет, все ли фрагменты получены и можно ли начинать сборку дейтаграммы.

Значение поля Fragment Offset определяет место фрагмента в дей­таграмме. У первого фрагмента значение этого поля равно 0, у второ­го фрагмента оно равно размеру первого фрагмента в байтах. Для тре­тьего фрагмента величина смещения равна суммарному размеру пер­вых двух фрагментов и т. д. Целевая система использует эти величи­ны, чтобы скомпоновать фрагменты в правильном порядке. Установ­ка в единицу бита Don't Fragment в поле Flags запрещает маршрути­затору фрагментировать дейтаграмму. Если без фрагментации ее пе­редать нельзя, маршрутизатор проигнорирует дейтаграмму, послав системе-источнику сообщение ICMP об ошибке.

Необходимо отметить разницу между фрагментацией в узле-отправителе и динамической фрагментацией в транзитных узлах сети – маршрутизаторах.

В первом случае деление сообщения на несколько более мелких частей происходит при передачи данных между протоколами одного и того же стека внутри компьютера. Протоколы, выполняющие фрагментацию в пределах узла, анализируют тип технологии нижнего уровня, определяют его MTU и делят сообщения на части, которые умещаются в кадры канального уровня.

В стеке TCP/IP эту задачу решает протокол ТСР, который разбивает поток байтов, передаваемый ему с прикладного уровня, на сегменты нужного размера.

А вот на транзитном узле- маршрутизаторе, когда пакет необходимо передать с большим значением MTU в сеть с меньшим значением MTU, способности протокола IP выполнять фрагментацию становятся востребованными. Пакеты фрагменты, путешествуя по сети могут вторично подвергнуться маршрутизации на каком-либо промежуточном маршрутизаторе.