135
000 — обычно.
Биты D,T,R,C определяют желаемый тип маршрутизации:
D (Delay) — выбор маршрута с минимальной задержкой,
T (Throughput) — выбор маршрута с максимальной пропускной способностью,
R (Reliability) — выбор маршрута с максимальной надежностью,
C (Cost) — выбор маршрута с минимальной стоимостью. В дейтаграмме может быть установлен только один из битов
D,T,R,C. Старший бит байта не используется.
Реальный учет приоритетов и выбора маршрута в соответствии со значением байта TOS зависит от маршрутизатора, его программного обеспечения и настроек. Маршрутизатор может поддерживать расчет маршрутов для всех типов TOS, для части или игнорировать TOS вообще. Маршрутизатор может учитывать значение приоритета при обработке всех дейтаграмм или при обработке дейтаграмм, исходящих только из некоторого ограниченного множества узлов сети, или вовсе игнорировать приоритет.
Total Length (16 бит) — длина всей дейтаграммы в октетах, включая заголовок и данные, максимальное значение 65535, минимальное — 21 (заголовок без опций и один октет в поле данных).
ID (Identification) (16 бит), Flags (3 бита), Fragment Offset
(13 бит) используются для фрагментации и сборки дейтаграмм. TTL (Time To Live) (8 бит) — «время жизни» дейтаграммы.
Устанавливается отправителем, измеряется в секундах. Каждый маршрутизатор, через который проходит дейтаграмма, переписывает значение TTL, предварительно вычтя из него время, потраченное на обработку дейтаграммы. Так как в настоящее время скорость обработки данных на маршрутизаторах велика, на одну дейтаграмму тратится обычно меньше секунды, поэтому фактически каждый маршрутизатор вычитает из TTL единицу. При достижении значения TTL=0 дейтаграмма уничтожается, при этом отправителю может быть послано соответствующее ICMPсообщение. Контроль TTL предотвращает зацикливание дейтаграммы в сети.
Protocol (8 бит) — определяет программу (вышестоящий протокол стека), которой должны быть переданы данные дейта-
136
граммы для дальнейшей обработки. Коды некоторых протоколов приведены в таблице 6.3.
Таблица 6.3 — Коды IP-протоколов
Код |
Протокол |
Описание |
1 |
ICMP |
Протокол контрольных сообщений |
2 |
IGMP |
Протокол управления группой хостов |
3 |
IP |
IP поверх IP (инкапсуляция) |
4 |
TCP |
TCP |
5 |
EGP |
Протокол внешней маршрутизации (устарел) |
6 |
IGP |
Протокол внутренней маршрутизации (устарел) |
7 |
UDP |
UDP |
8 |
RSVP |
Протокол резервирования ресурсов при мультика- |
|
|
стинге |
9 |
IGRP |
Протокол внутренней маршрутизации от фирмы cisco |
10 |
OSPF |
Протокол внутренней маршрутизации |
Header Checksum (16 бит) — контрольная сумма заголовка, представляет из себя 16 бит, дополняющие биты в сумме всех 16битовых слов заголовка. Перед вычислением контрольной суммы значение поля Header Checksum обнуляется. Поскольку маршрутизаторы изменяют значения некоторых полей заголовка при обработке дейтаграммы (как минимум, поля TTL), контрольная сумма каждым маршрутизатором пересчитывается заново. Если при проверке контрольной суммы обнаруживается ошибка, дейтаграмма уничтожается.
Source Address (32 бита) — IP-адрес отправителя. Destination Address (32 бита) — IP-адрес получателя. Options — опции, поле переменной длины. Опций может
быть одна, несколько или ни одной. Опции определяют дополнительные услуги модуля IP по обработке дейтаграммы, в заголовок которой они включены.
Padding — выравнивание заголовка по границе 32-битного слова, если список опций занимает нецелое число 32-битных слов. Поле «Padding» заполняется нулями
137
Фрагментация дейтаграмм
Различные среды передачи имеют различный максимальный размер передаваемого блока данных (MTU — Media Transmission Unit), это число зависит от скоростных характеристик среды и вероятности возникновения ошибки при передаче. Например, размер MTU в 10Мбит/с Ethernet равен 1536 октетам,
в 100 Мбит/с FDDI — 4096 октетам.
При передаче дейтаграммы из среды с большим MTU в среду c меньшим MTU может возникнуть необходимость во фрагментации дейтаграммы. Фрагментация и сборка дейтаграмм осуществляются модулем протокола IP. Для этого применяются поля
ID (Identification), Flags и Fragment Offset заголовка дейтаграммы.
Flags — поле состоит из 3 бит, младший из которых всегда сброшен:
0 DF MF
Значения бита DF (Don’t Fragment):
0— фрагментация разрешена,
1— фрагментация запрещена (если дейтаграмму нельзя передать без фрагментации, она уничтожается).
Значения бита MF (More Fragments):
0— данный фрагмент последний (единственный),
1— данный фрагмент не последний.
ID (Identification) — идентификатор дейтаграммы, устанавливается отправителем; используется для сборки дейтаграммы из фрагментов для определения принадлежности фрагментов одной дейтаграмме.
Fragment Offset — смещение фрагмента, значение поля указывает, на какой позиции в поле данных исходной дейтаграммы находится данный фрагмент. Смещение считается 64-битовыми порциями, т.е. минимальный размер фрагмента равен 8 октетам, а следующий фрагмент в этом случае будет иметь смещение 1. Первый фрагмент имеет смещение нуль.
Опции IP
Опции определяют дополнительные услуги протокола IP по обработке дейтаграмм. Опция состоит, как минимум, из октета «Тип опции», за которым могут следовать октет «Длина опции» и октеты с данными для опции.
138
Рис. 6.14 — Структура октета Тип опции
Значения бита С:
1 — опция копируется во все фрагменты;
0 — опция копируется только в первый фрагмент. Определены два класса опций: 0 — Управление и 2 — Изме-
рение и отладка. Внутри класса опция идентифицируется номером. Ниже приведены опции, описанные в стандарте протокола IP.
Таблица 6.4 — Опции IP
Класс |
Номер |
Октет |
Опция |
|
длины |
||||
0 |
0 |
– |
Конец списка опций |
|
0 |
1 |
– |
Нет операции |
|
0 |
2 |
+(11) |
Безопасность |
|
0 |
3 |
+ |
Loose Source Routing (свободное исполнение |
|
маршрута отправителя) |
||||
|
|
|
||
0 |
9 |
+ |
Strict Source Routing (строгое исполнение мар- |
|
шрута отправителя) |
||||
|
|
|
||
0 |
7 |
+ |
Запись маршрута |
|
0 |
8 |
+(4) |
Stream ID |
|
2 |
4 |
+ |
Internet Timestamp (временной штамп) |
При обнаружении в списке опции Конец списка опций разбор опций прекращается, даже если длина заголовка (IHL) еще не исчерпана. Опция Нет операции обычно используется для выравнивания между опциями по границе 32 бит.
Большинство опций в настоящее время не используются. Опции Stream ID и Безопасность применялись в ограниченном круге экспериментов, функции опций Запись маршрута и Internet Timestamp выполняет программа traceroute.
Применение опций в дейтаграммах замедляет их обработку. Поскольку большинство дейтаграмм не содержат опций, то есть имеют фиксированную длину заголовка, их обработка макси-
139
мально оптимизирована именно для этого случая. Появление опции прерывает этот скоростной процесс и вызывает стандартный универсальный модуль IP, способный обработать любые стандартные опции, но за счет существенной потери в быстродействии.
ARP: протокол определения адреса
IP адреса имеют какое-либо значение только в семействе протоколов TCP/IP. Канальные уровни, такие как Ethernet или Token ring, имеют собственную схему адресации (в основном 48битные адреса); сетевые уровни, в свою очередь, используют эти канальные уровни. Сеть Ethernet, может быть использована различными сетевыми уровнями в одно и то же время. Компьютеры использующие разные сетевые протоколы могут находиться на одном и том же физическом кабеле.
Когда фрейм Ethernet отправляется от одного хоста по локальной сети к другому, по его MAC-адресу определяется, к какому интерфейсу он должен быть доставлен. Драйвер сетевой платы никогда не смотрит на IP адрес назначения в IP дейтаграмме.
Другими словами возникает необходимость установить соответствие между двумя различными формами адресов: 32битными IP адресами и каким-либо типом адресов канального уровня. RFC 826 [Plummer 1982] — официальная спецификация
ARP.
Для этого используются в основном два базовых протокола:
протокол определения адреса (ARP — address resolution protocol)
и обратный протокол определения адреса (RARP — reverse address resolution protocol).
IP-адрес (32 битный адрес Internet)
ARP |
RARP |
MAC-адрес (48-битный адрес Ethernet)
Рис. 6.15 — Транспортный уровень TCP/IP