КОНСПЕКТ_ЛЕКЦИЙ_Сети_и_телекоммуникации (853866), страница 16
Текст из файла (страница 16)
После маршрутизатора дейтаграммы необходимо передать в сеть с MTU, равным 1500 байт. Для этого маршрутизатор делит поступающие дейтаграммы пополам. Он формирует новые дейтаграммы, каждая из которых имеет размер 1400+20 байт, чтобы уложиться в MTU второй сети. Необходимо отметить, что маршрутизатор не собирает фрагменты в более крупные дейтаграммы, даже если на пути встречается сеть, допускающая такое укрупнение.
Фрагментация и сборка производятся автоматически, не требуя от отправителя специальных действий. Каждая фрагментированная часть исходной дейтаграммы имеет тот же формат. Использование фрагментации повышает вероятность потери исходной дейтаграммы, так как потеря даже одного фрагмента приводит к потере всей дейтаграммы. Сборка дейтаграммы осуществляется на месте назначения. Такой метод позволяет маршрутизировать фрагменты независимо.
Поля «Идентификатор», «Флаги» и «Смещение фрагмента» управляют фрагментацией и сборкой дейтаграммы.
Рассмотрим еще один пример фрагментации дейтаграммы с приведением конкретных значений полей заголовка дейтаграммы протокола дейтаграммы. На рис. 6.4 показан исходный заголовок дейтаграммы. Пусть MTU будет равно 280 байт. Допустим, что общая длина передаваемой дейтаграммы составляет 472 байта.
Номер версии = 4 | Длина заголовка = 5 | Тип сервиса | Общая длина = 472 | ||
Идентификатор =111 | Флаги = 0 | Смещение фрагмента = 0 | |||
Время жизни =123 | Протокол = 6 | Контрольная сумма заголовка | |||
Адрес отправителя | |||||
Адрес получателя | |||||
Данные | |||||
Рис. 6.4. Заголовок дейтаграммы до фрагментации
На рис. 6.5 показаны поля заголовков двух полученных в результате фрагментации дейтаграмм. Получающиеся дейтаграммы имеют максимальный размер поля данных, равный 256 байт.
Поле «Флаги» используется при фрагментации. Нулевой первый бит разрешает фрагментацию, единичный — запрещает. Единичный второй бит указывает на последний фрагмент дейтаграммы.
Поле «Смещение фрагмента» используется для указания смещения данных во фрагменте относительно начала исходной дейтаграммы. Чтобы получить смещение в байтах, надо значение этого поля умножить на 8. Первый фрагмент всегда имеет нулевое смещение. Поле используется при сборке фрагментов дейтаграммы после передачи по сетям с различными MTU.
Поле «Протокол» показывает, какому протоколу верхнего уровня принадлежит дейтаграмма. При поступлении дейтаграммы это поле указывает, какому приложению следует ее передать. В табл. 6.1 содержится перечень (неполный) протоколов.
Таблица 6.1
Заголовок фрагмента дейтаграммы #1
Номер версии = 4 | Длина заголовка = 5 | Тип сервиса | Общая длина = 276 | |||||
Идентификатор =111 | Флаги = 1 | Смещение фрагмента = 0 | ||||||
Время жизни =119 | Протокол = 6 | Контрольная сумма заголовка | ||||||
Адрес отправителя | ||||||||
Адрес получателя | ||||||||
Данные | ||||||||
Заголовок фрагмента дейтаграммы #2
Номер версии = 4 | Длина заголовка =5 | Тип сервиса | Общая длина = 276 | |||||
Идентификатор=111 | Флаги = 1 | Смещение фрагмента = 0 | ||||||
Время жизни=119 | Протокол = 6 | Контрольная сумма заголовка | ||||||
Адрес отправителя | ||||||||
Адрес получателя | ||||||||
Данные | ||||||||
Рис. 6.5. Заголовки двух дейтаграмм после фрагментации
Таблица 6.1.
Значения поля «Протокол»
Знач. поля
| Протокол | Пояснение |
0
| резерв |
|
1
| ICMP | Internet Control Message Protocol, протокол управляющих сообщений
|
2
| IGMP | Internet Group Management Protocol, протокол управления группами
|
4
| IP | Инкапсуляция IP в IP |
б
| TCP | Transmission Control Protocol, протокол управления передачей |
8
| EGP | Exterior Gateway Protocol, внешний шлюзовый протокол |
17
| UDP | User Datagram Protocol, протокол пользовательских дейтаграмм |
88 | IGRP | Interior Gateway Routing Protocol, внутренний протокол маршрутизации |
89
| OSPF
| Open Shortest Path First, «первый кратчайший путь»
|
Поле «Контрольная сумма» рассчитывается по всему заголовку. Так как некоторые поля заголовка меняют свое значение, например время жизни, при прохождении дейтаграммы через маршрутизаторы контрольная сумма проверяется и повторно рассчитывается при каждой модификации заголовка. Определение контрольной суммы заголовка обеспечивает безошибочность передачи дейтаграммы через сеть. Перед отправкой дейтаграммы вычисляется контрольная сумма, которая вносится в ее заголовок. При получении дейтаграммы вычисляется ее контрольная сумма, которая сравнивается со значением контрольной суммы в ее заголовке. При обнаружении ошибки в контрольной сумме дейтаграмма отбрасывается. Алгоритм вычисления контрольной суммы заголовка дейтаграммы протокола IP применяется и во многих других протоколах, таких как UDP, TCP, ICMP и OSPF.
Поля «Адрес отправителя» и «Адрес получателя» имеют одинаковые длину и структуру. Поля содержат 32-битные IP-адреса отправителя и получателя дейтаграммы.
Поле «Опции» необязательно и обычно используется при настройке сети. В поле могут быть указаны точный маршрут прохождения дейтаграммы в распределенной сети, данные о безопасности, различные временные отметки и т. д. Поле не имеет фиксированной длины, поэтому для выравнивания заголовка дейтаграммы по 32-битной границе предусмотрено следующее поле — поле «Выравнивание». Выравнивание осуществляется нулями.
Длина поля «Опции» меняется в зависимости от того, какие опции были выбраны. Опции в дейтаграмме размещаются друг за другом, без разделителей. Каждая опция состоит из кода опции (1 байт), за которым могут следовать длина опции (1 байт) и байты данных этой опции. На рис. 6.6 показан формат поля «Опции».
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
Копировать | Класс опции | Номер опции |
Рис. 6.6. Формат поля «Опции»
Байт кода опции делится на три поля: флаг «Копировать», «Класс опции» к «Номер опции». Флаг «Копировать» управляет тем, как маршрутизаторы учитывают опции при фрагментации дейтаграммы. Если бит установлен, опции должны копироваться во все фрагменты дейтаграммы. Если флаг не установлен опцию нужно скопировать только в первый фрагмент.
Поля «Класс опции» и «Номер опции» указывают класс опции и номер опции внутри этого класса (табл. 6.2 и 6.3).
Таблица 6.2.
Значения поля «Класс опции;
Значение поля
| Пояснение
|
0
| Управление дейтаграммами или сетью
|
1
| Зарезервировано
|
2
| Отладка сети
|
3
| Зарезервировано
|
Из класса 3 применяется опция с номером 4. В нее записываются межсетевые временные метки. Они используются при протоколировании следования дейтаграммы по маршруту.
В настоящее время некоторые опции практически не используются. Например, опция «Безопасность» с номером 2 была разработана исключительно для нужд министерства обороны США, и в гражданских сетях не используется. Опция «Идентификатор потока» использовалась только в экспериментах с сетями Satnet и сейчас не встречается.
Таблица 6.3.
Номера опций класса 0
Номер опции
| Длина
| Пояснение
|
0
| -
| Конец списка опций. Используется, если опция не заканчивается в конце заголовка |
1
| -
| Нет операций. Используется для выравнивания по 32-битной границе в списке опций |
2
| 11
| Безопасность |
3
| Переменная
| Используется для маршрутизации дейтаграммы с учетом информации, предоставленной отправителем (маршрут однозначно не определен) |
7
| Переменная
| Запись маршрута |
8
| 4 | Идентификатор маршрута. Используется для поддержки идентификации потока |
9
| Переменная
| Используется для маршрутизации дейтаграммы с учетом информа-ции, предоставленной отправителем (маршрут определен однозначно) |
Другой | - | Не используется |