- •А. М. Шабалин
- •Предисловие
- •Введение
- •1 Современные классификации операционных систем
- •1.1 Основные аспекты изучения современных операционных систем
- •1.2 Определение сетевых операционных систем
- •1.3 Характеристика популярных операционных систем по различным классификационным критериям
- •1.3.1 Операционные системы компании Microsoft
- •1.3.2 Альтернативные операционные системы
- •2 Современные сетевые протоколы
- •2.1 Стандартная семиуровневая эталонная модель взаимодействия открытых систем и стек протоколов tcp/ip
- •2.2 Протоколы межсетевого взаимодействия семейства ip
- •2.2.1 Протокол iPv4
- •2.2.2 Протокол iPv6
- •2.3 Основы адресации в ip-сетях
- •2.3.1 Адресация iPv4
- •2.3.2 Адресация iPv6
- •2.4 Проблема установления соответствия между адресами различных типов
- •00-18-F3-4a-a1-55
- •192.168.200.199
- •194.85.135.75 – 008048Ев7е60.
- •2.5 Протоколы транспортного уровня стека tcp/ip
- •2.5.1 Протокол udp
- •2.5.2 Протокол tcp
- •2.6 Протоколы маршрутизации
- •2.6.1 Классификации протоколов маршрутизации
- •2.6.2 Внутренние протоколы маршрутизации rip и ospf
- •2.6.3 Внешний шлюзовый протокол bgp
- •2.6.4 Дополнительные протоколы маршрутизации icmp и igmp
- •Заключение
- •Библиографический список
- •Приложение а
- •Синтаксис:
- •Приложение б Настройка iPv6 в операционной системе ms WindowsXp
- •Приложение в Контрольно-измерительные материалы
- •Словарь терминов и определений
- •Часть ip-адреса, соответствующая сетевой части адреса.
- •Алфавитно-предметный указатель
- •Часть 71
- •Список сокращений
- •Учебное издание
2.2.1 Протокол iPv4
IPv4-пакет состоит из заголовка и поля данных. Заголовок пакета состоит из 32-х-разрядных слов и имеет переменную длину, зависящую от размера поля Параметры, но всегда кратную 32 битам. За заголовком непосредственно следуют данные, передаваемые в пакете. На рис. 2.7 представлена структура пакета IPv4 [33].
Поле Номер версии (Version) занимает 4 бита и идентифицирует версию протокола IP. Значение поля равно 4 (IPv4).
4 бита Номер версии |
4 бита Длина заголовка |
8 бит Тип сервиса |
16 бит Общая длина | |||||||||
PR |
D |
T |
R |
| ||||||||
16 бит Идентификатор пакета |
3 бита Флаги |
13 бит Смещение фрагмента | ||||||||||
|
D |
M | ||||||||||
8 бит Время жизни |
8 бит Протокол верхнего уровня |
16 бит Контрольная сумма | ||||||||||
32 бита IP-адрес источника | ||||||||||||
32 бита IP-адрес назначения | ||||||||||||
Параметры и выравнивание | ||||||||||||
до 64 килобайт ПОЛЕ ДАННЫХ |
Рис. 2.7 – Структура IPv4-пакета
Значение Длина заголовка (Header Length) обозначает длину отдельно взятого IP-заголовка, которая может варьироваться вследствие того, что IP-заголовок обеспечивает поддержку дополнительных возможностей, которые не всегда используются. Значение поля выражается в числах, кратных четырем байтам. Предположим, что фактический десятичный код этого поля равен пяти. Анализаторы умножают это значение на 4 байта и получают точную длину IP-заголовка, равную 20 байтам. Обычно длина IP-заголовка действительно составляет 20 байт, но при добавлении некоторой служебной информации это значение может быть увеличено за счет дополнительных байтов в поле Параметры. Наибольшая длина заголовка составляет 60 байт.
Поле Тип сервиса (Type of Service, ToS) имеет и другое, более современное название – байт дифференцированного обслуживания, или DS-байт. Данное поле содержит биты поля, называемого Предшествование (Precedence), которое служит одной цели – хранению признаков, отражающих требования к качеству обслуживания пакета. Первые три бита содержат значение приоритета пакета: от самого низкого (0) до самого высокого (7). Маршрутизаторы и компьютеры могут принимать во внимание приоритет пакета и обрабатывать более важные пакеты в первую очередь. Следующие три бита поля ToS определяют критерий выбора маршрута. Если бит D (Delay – задержка) установлен в 1, то маршрут должен выбираться с учетом минимизации задержки доставки данного пакета; установленный бит Т (Throughput – пропускная способность) – максимизации пропускной способности, а бит R (Reliability – надежность) – максимизации надежности доставки. Оставшиеся два бита имеют нулевое значение.
Поле Общая длина (Total Length) занимает 2 байта и характеризует общую длину пакета с учетом заголовка и поля данных. Максимальная длина пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65 535 байт, однако в большинстве компьютеров и сетей столь большие пакеты не используются. При передаче по сетям различного типа длина пакета выбирается с учетом максимальной длины пакета протокола нижнего уровня, несущего IP-пакеты. Если это кадры Ethernet, то выбираются пакеты с максимальной длиной 1500 байт, умещающиеся в поле данных кадра Ethernet. В стандартах TCP/IP предусматривается, что все хосты должны быть готовы принимать пакеты до 576 байт длиной (независимо от того, приходят ли они целиком или фрагментами).
Идентификатор пакета (Identification) занимает 2 байта и используется для распознавания пакетов, образовавшихся путем деления на части (фрагментации) исходного пакета. Все части (фрагменты) одного пакета должны иметь одинаковое значение этого поля.
Флаги (Flags) занимают 3 бита и содержат признаки, связанные с фрагментацией. Установленный в 1 бит DF (Do not Fragment Bit – не фрагментировать) запрещает маршрутизатору фрагментировать данный пакет (0 – фрагментация разрешена), а установленный в 1 бит MF (More Fragments Bits – дальнейшие фрагменты) указывает на то, что данный пакет является промежуточным (не последним) фрагментом и ожидаются дальнейшие фрагменты (0 – последний фрагмент). Оставшийся бит зарезервирован.
Поле Смещение фрагмента (Fragment Offset) используется, если пакет является фрагментом. В нем указывается, в какую позицию следует поместить содержащиеся в нем данные, когда все фрагменты будут повторно объединяться в общий пакет. Смещение должно быть кратно 8 байтам.
Поле Время жизни (Time To Live, TTL) занимает один байт и используется для задания предельного срока, в течение которого пакет может перемещаться по сети. Время жизни пакета измеряется в секундах и задается источником. По истечении каждой секунды пребывания на каждом из маршрутизаторов, через которые проходит пакет во время своего «путешествия» по сети, из его текущего времени жизни вычитается единица (единица вычитается и в том случае, если время пребывания было меньше секунды). Поскольку современные маршрутизаторы редко обрабатывают пакет дольше, чем за одну секунду, то время жизни можно интерпретировать как максимальное число транзитных узлов, которые разрешено пройти пакету. Если значение поля времени жизни становится нулевым до того, как пакет достигает получателя, пакет уничтожается. Следовательно, время жизни является своего рода часовым механизмом самоуничтожения пакета.
Поле Протокол верхнего уровня (Protocol) занимает один байт и содержит идентификатор, указывающий, какому протоколу верхнего уровня принадлежит информация, размещенная в поле данных пакета. Например, 6 означает, что в пакете находится сообщение TCP, 17 – сообщение UDP, 1 – сообщение ICMP.
Контрольная сумма заголовка (Header Checksum) занимает 2 байта (16 бит) и рассчитывается только по заголовку. Поскольку некоторые поля заголовка меняют свое значение в процессе передачи пакета по сети (например, поле времени жизни), контрольная сумма проверяется и повторно рассчитывается на каждом маршрутизаторе и конечном узле. При вычислении контрольной суммы значение самого поля контрольной суммы устанавливается в ноль. Если контрольная сумма неверна, то пакет отбрасывается, как только обнаруживается ошибка.
Поля IP-адреc источника (Source Address) и приемника (Destination Address) имеют одинаковую длину – 32 бита.
Поле Параметры (Option) является необязательным и используется обычно только при отладке сети. Это поле состоит из нескольких подполей одного из восьми предопределенных типов. В этих подполях можно указывать точный маршрут, регистрировать проходимые пакетом маршрутизаторы, помещать данные системы безопасности или временные отметки.
Так как число подполей в поле параметров может быть произвольным, то в конце заголовка должно быть добавлено несколько нулевых байтов для выравнивания заголовка пакета по 32-х-битной границе.
Ниже приведена распечатка значений полей заголовка одного из реальных IP-пакетов, захваченных в сети Ethernet средствами анализатора протоколов сетевого монитора Microsoft Network Monitor 3.1. Строки пронумерованы для удобства. В данной распечатке сетевой монитор в скобках дает шестнадцатеричные значения полей (рядом в квадратных скобках мы указали их русский перевод):
1. IP: Version = 4 (0x4) [номер версии];
2: IP: Header Length = 20 (0x14) [длина заголовка];
3. IP: Service Type – 0 (0x0) [тип сервиса];
4. IP: Precedence = Routine [PR – приоритет низкий];
5. IP: ...0.... = Normal Delay [D – минимизации задержки нет];
6. IP: ...0... = Normal Throughput [T – максимизации пропускной способности нет]; 7. IP: …0.. = Normal Reliability [R – максимизации надежной доставки нет];
8. IP: Total Length – 54 (0x36) [общая длина];
9. IP: Identification = 31746 (0x7C02) [идентификатор пакетов];
10. IP: Flags Summary = 2 (0x2) [флаги];
11. IP: 0 = Last fragment in datagram [M – последний фрагмент];
12. IP: 1 = Cannot fragment datagram [D – фрагментация запрещена];
13. IP: Fragment Offset = 0 (0x0) bytes [смещение фрагмента];
14. IP: Time to Live = 128 (0x80) [время жизни];
15. IP: Protocol = 6 [протокол верхнего уровня – TCP];
16. IP: Checksum = 0xEB86 [контрольная сумма];
17. IP: Source Address = 194.85 135.75 [адрес источника];
18. IP: Destination Address = 194.85.135.66 [адрес назначения];
19. IP: Data: Number of data bytes remaining = 34 (0x0022) [параметры].
Важной чертой протокола IP, отличающей его от других сетевых протоколов (например, от сетевого протокола IPX), является его способность выполнять динамическую фрагментацию пакетов при передаче их между сетями с различными, максимально допустимыми значениями длины поля данных кадров. Данная функция протокола IP во многом способствует масштабируемости технологии TCP/IP.
Практически во всех стеках протоколов есть протоколы, которые отвечают за деление (фрагментацию) сообщений прикладного уровня на такие части, которые укладывались бы в кадры канального уровня. Для этого они анализируют тип технологии нижнего уровня и определяют ее MTU (Maximum Transmission Unit – максимальная единица передачи). В стеке TCP/IP эту задачу решает протокол TCP, который разбивает поток байтов, передаваемый ему с прикладного уровня, на сегменты нужного размера (например, на 1460 байт, если на нижнем уровне данной сети работает протокол семейства Ethernet). Поэтому протокол IP в узле-отправителе, как правило, не использует свои возможности по фрагментации пакетов. А вот на маршрутизаторе, когда пакет необходимо передать из сети с большим в сеть с меньшим значением MTU, способности протокола IP выполнять фрагментацию становятся востребованными.