Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курс Информационные сети (4 ку.doc
Скачиваний:
8
Добавлен:
26.11.2019
Размер:
2.58 Mб
Скачать

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

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

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

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

Рис. 6.4. Для передачи по сети с меньшим значением MTU

маршрутизатор разделяет дейтаграмму на фрагменты

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

Идентификация протокола

Чтобы корректно обработать принятую дейтаграмму, целевая систе­ма должна знать, каким протоколом сгенерирована информация в поле данных. Для этого в поле Protocol заголовка IP записывается один из кодов протоколов TCP/IP, определенных в документе RFC 1700. Наиболее часто используются следующие коды:

0 IP

1 ICMP

3 Gateway-to-Gateway Protocol (GGP)

6 TCP

8 Exterior Gateway Protocol (EGP)

17 UDP

Совет На каждой TCP/IP-системе есть текстовый файл PROTOCOL, содержащий список кодов протоколов, которые, как ожидается, будут распознаваться или использоваться этой системой. Если Вам нужно узнать код протокола, попробуйте сначала найти его в этом файле, и только потом начинайте поиски в RFC 1700.

Наиболее ожидаемы в этом списке протоколы транспортного уров­ня TCP и U DP, генерирующие большую часть трафика в TCP/I Р-се-тях. Однако в дейтаграммах IP передается информация и других про­токолов, в том числе сообщения ICPM об ошибках и других проис-шествиях в сети, а также сообщения маршрутизирующих протоколов, подобных GGP и EGP, которыми TCP/IР-системы пользуются для автоматического обновления таблиц маршрутизации.