Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Протокол IP






5.3.1. Основные функции протокола IP

Основу транспортных средств стека протоколов TCP/IP составляет протокол меж­сетевого взаимодействия (Internet Protocol, IP). Он обеспечивает передачу дейта­грамм от отправителя к получателям через объединенную систему компьютерных сетей.

Название данного протокола — Intrenet Protocol — отражает его суть: он должен передавать пакеты между сетями. В каждой очередной сети, лежащей на пути пе-

384 Глава 5 • Сетевой уровень как средство построения больших сетей ____________________________

ремещения пакета, протокол IP вызывает средства транспортировки, принятые в этой сети, чтобы с их помощью передать этот пакет на маршрутизатор, ведущий к следующей сети, или непосредственно на узел-получатель.

Протокол IP относится к протоколам без установления соединений. Перед IP не ставится задача надежной доставки сообщений от отправителя к получателю. Протокол IP обрабатывает каждый IP-пакет как независимую единицу, не имею­щую связи ни с какими другими IP-пакетами. В протоколе IP нет механизмов, обычно применяемых для увеличения достоверности конечных данных: отсутству­ет квитирование — обмен подтверждениями между отправителем и получателем, нет процедуры упорядочивания, повторных передач или других подобных функ­ций. Если во время продвижения пакета произошла какая-либо ошибка, то прото­кол IP по своей инициативе ничего не предпринимает для исправления этой ошибки. Например, если на промежуточном маршрутизаторе пакет был отброшен по при­чине истечения времени жизни или из-за ошибки в контрольной сумме, то модуль IP не пытается заново послать испорченный или потерянный пакет. Все вопросы обес­печения надежности доставки данных по составной сети в стеке TCP/IP решает протокол TCP, работающий непосредственно над протоколом IP. Именно TCP орга­низует повторную передачу пакетов, когда в этом возникает необходимость.

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

Имеется прямая связь между функциональной сложностью протокола и слож­ностью заголовка пакетов, которые этот протокол использует. Это объясняется тем, что основные служебные данные, на основании которых протокол выполняет то или иное действие, переносятся между двумя модулями, реализующими этот протокол на разных машинах, именно в полях заголовков пакетов. Поэтому очень полезно изучить назначение каждого поля заголовка IP-пакета, и это изучение дает не только формальные знания о структуре пакета, но и объясняет все основные режимы работы протокола по обработке и передаче IP-дейтаграмм.

5.3.2. Структура IP-пакета

IP-пакет состоит из заголовка и поля данных. Заголовок, как правило, имеющий длину 20 байт, имеет следующую структуру (рис. 5.12).

Поле Номер версии (Version), занимающее 4 бит, указывает версию протокола IP. Сейчас повсеместно используется версия 4 (IPv4), и готовится переход на версию 6 (IPv6).

Поле Длина заголовка (IHL) IP-пакета занимает 4 бит и указывает значение длины заголовка, измеренное в 32-битовых словах. Обычно заголовок имеет длину в 20 байт (пять 32-битовых слов), но при увеличении объема служебной информации эта' длина может быть увеличена за счет использования дополнительных байт в поле Опции (IP Options). Наибольший заголовок занимает 60 октетов.

Поле Тип сервиса (Type of Service) занимает один байт и задает приоритетность пакета и вид критерия выбора маршрута. Первые три бита этого поля образуют

5.3. Протокол IP 385

подполе приоритета пакета (Precedence). Приоритет может иметь значения от са­мого низкого — 0 (нормальный пакет) до самого высокого — 7 (пакет управляющей информации). Маршрутизаторы и компьютеры могут принимать во внимание при­оритет пакета и обрабатывать более важные пакеты в первую очередь. Поле Тип сервиса содержит также три бита, определяющие критерий выбора маршрута. Ре­ально выбор осуществляется между тремя альтернативами: малой задержкой, вы­сокой достоверностью и высокой пропускной способностью. Установленный бит D (delay) говорит о том, что маршрут должен выбираться для минимизации задерж­ки доставки данного пакета, бит Т — для максимизации пропускной способности, а бит R — для максимизации надежности доставки. Во многих сетях улучшение од­ного из этих параметров связано с ухудшением другого, кроме того, обработка каждого из них требует дополнительных вычислительных затрат. Поэтому редко, когда имеет смысл устанавливать одновременно хотя бы два из этих трех критери­ев выбора маршрута. Зарезервированные биты имеют нулевое значение.

Поле Общая длина (Total Length) занимает 2 байта и означает общую длину пакета с учетом заголовка и поля данных. Максимальная длина пакета ограничена разрядностью поля, определяющего эту величину, и составляет 65 535 байт, однако в большинстве хост-компьютеров и сетей столь большие пакеты не используются. При передаче по сетям различного типа длина пакета выбирается с учетом макси­мальной длины пакета протокола нижнего уровня, несущего IP-пакеты. Если это кадры Ethernet, то выбираются пакеты с максимальной длиной в 1500 байт, уме­щающиеся в поле данных кадра Ethernet. В стандарте предусматривается, что все хосты должны быть готовы принимать пакеты вплоть до 576 байт длиной (прихо­дят ли они целиком или по фрагментам). Хостам рекомендуется отправлять паке­ты размером более чем 576 байт, только если они уверены, что принимающий хост или промежуточная сеть готовы обслуживать пакеты такого размера.

Поле Идентификатор пакета (Identification) занимает 2 байта и используется для распознавания пакетов, образовавшихся путем фрагментации исходного паке­та. Все фрагменты должны иметь одинаковое значение этого поля.

Поле Флаги (Flags) занимает 3 бита и содержит признаки, связанные с фраг­ментацией. Установленный бит DF (Do not Fragment) запрещает маршрутизатору

386 Глава 5 • Сетевой уровень как средство построения больших сетей

фрагментировать данный пакет, а установленный бит MF (More Fragments) гово­рит о том, что данный пакет является промежуточным (не последним) фрагмен­том. Оставшийся бит зарезервирован.

Поле Смещение фрагмента (Fragment Offset) занимает 13 бит и задает смещение в байтах поля данных этого пакета от начала общего поля данных исходного паке­та, подвергнутого фрагментации. Используется при сборке/разборке фрагментов пакетов при передачах их между сетями с различными величинами MTU. Смеще­ние должно быть кратно 8 байт.

Поле Время жизни (Time to Live) занимает один байт и означает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи. На маршрутизато­рах и в других узлах сети по истечении каждой секунды из текущего времени жизни вычитается единица; единица вычитается и в том случае, когда время задер­жки меньше секунды. Поскольку современные маршрутизаторы редко обрабаты­вают пакет дольше, чем за одну секунду, то время жизни можно считать равным максимальному числу узлов, которые разрешено пройти данному пакету до того, как он достигнет места назначения. Если параметр времени жизни станет нулевым до того, как пакет достигнет получателя, этот пакет будет уничтожен. Время жизни можно рассматривать как часовой механизм самоуничтожения. Значение этого поля изменяется при обработке заголовка IP-пакета.

Идентификатор Протокол верхнего уровня (Protocol) занимает один байт и ука­зывает, какому протоколу верхнего уровня принадлежит информация, размещен­ная в поле данных пакета (например, это могут быть сегменты протокола TCP, дейтаграммы UDP, пакеты ICMP или OSPF). Значения идентификаторов для раз­личных протоколов приводятся в документе RFC «Assigned Numbers».

Контрольная сумма (Header Checksum) занимает 2 байта и рассчитывается толь­ко по заголовку. Поскольку некоторые поля заголовка меняют свое значение в процессе передачи пакета по сети (например, время жизни), контрольная сумма проверяется и повторно рассчитывается при каждой обработке IP-заголовка. Кон­трольная сумма — 16 бит — подсчитывается как дополнение к сумме всех 16-бито­вых слов заголовка. При вычислении контрольной суммы значение самого поля «контрольная сумма» устанавливается в нуль. Если контрольная сумма неверна, то пакет будет отброшен, как только ошибка будет обнаружена.

Поля IP-адрес источника (Source IP Address) и IP-адрес назначения (Destination IP Address) имеют одинаковую длину — 32 бита — и одинаковую структуру.

Поле Опции (IP Options) является необязательным и используется обычно только при отладке сети. Механизм опций предоставляет функции управления, которые необходимы или просто полезны при определенных ситуациях, однако он не ну­жен при обычных коммуникациях. Это поле состоит из нескольких подполей, каж­дое из которых может быть одного из восьми предопределенных типов. В этих подполях можно указывать точный маршрут прохождения маршрутизаторов, ре­гистрировать проходимые пакетом маршрутизаторы, помещать данные системы безопасности, а также временные отметки. Так как число подполей может быть произвольным, то в конце поля Опции должно быть добавлено несколько байт для выравнивания заголовка пакета по 32-битной границе.

Поле Выравнивание (Padding) используется для того, чтобы убедиться в том, что IP-заголовок заканчивается на 32-битной границе. Выравнивание осуществля- ется нулями. ____________________________________________________________

_______________________________________________________________ 5.3. Протокол IP 387

Ниже приведена распечатка значений полей заголовка одного из реальных IP-пакетов, захваченных в сети Ethernet средствами анализатора протоколов Microsoft Network Monitor.

IP: Version = 4 (0x4)

IP: Header Length = 20 (0x14)

IP: Service Type = 0 (0x0)

IP: Precedence = Routine

IP:...0.:.. = Normal Delay

IP:....0... = Normal Throughput

IP:.....0.. = Normal Reliability

IP: Total Length = 54 (0x36)

IP: Identification = 31746 (Ox7C02)

IP: Flags Summary = 2 (0x2)

IP:.......0 = Last fragment in datagram

IP:......1. = Cannot fragment datagram

IP: Fragment Offset = 0 (0x0) bytes

IP: Time to Live = 128 (0x80)

IP: Protocol = TCP - Transmission Control

IP: Checksum = OxEB86

IP: Source Address = 194.85.135.75

IP: Destination Address = 194.85.135.66

IP: Data: Number of data bytes remaining = 34 (0x0022)

5.3.3. Таблицы маршрутизации в IP-сетях

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

Примеры таблиц различных типов маршрутизаторов

Структура таблицы маршрутизации стека TCP/IP соответствует общим принци­пам построения таблиц маршрутизации, рассмотренным выше. Однако важно от­метить, что вид таблицы IP-маршрутизации зависит от конкретной реализации стека TCP/IP. Приведем пример трех вариантов таблицы маршрутизации, с кото­рыми мог бы работать маршрутизатор Ml в сети, представленной на рис. 5.13.

Если представить, что в качестве маршрутизатора Ml в данной сети работает штатный программный маршрутизатор MPR операционной системы Microsoft Win­dows NT, то его таблица маршрутизации могла бы иметь следующий вид (табл. 5.9).

Назначение полей таблицы маршрутизации

Несмотря на достаточно заметные внешние различия, во всех трех таблицах есть все те ключевые параметры, необходимые для работы маршрутизатора, которые были рассмотрены ранее при обсуждении концепции маршрутизации.

К таким параметрам, безусловно, относятся адрес сети назначения (столбцы «Destination» в маршрутизаторах NetBuilder и Unix или «Network Address» в мар­шрутизаторе MPR) и адрес следующего маршрутизатора (столбцы «Gateway» в маршрутизаторах NetBuilder и Unix или «Gateway Address» в маршрутизаторе MPR).

390 Глава 5 • Сетевой уровень как средство построения больших сетей

Третий ключевой параметр — адрес порта, на который нужно направить пакет, в некоторых таблицах указывается прямо (поле «Interface» в таблице Windows NT), а в некоторых — косвенно. Так, в таблице Unix-маршрутизатора вместо адреса пор­та задается его условное наименование — 1еО для порта с адресом 198.21.17.5, lei для порта с адресом 213.34.12.3 и 1оО для внутреннего порта с адресом 127.0.0.1.

В маршрутизаторе NetBuilder II поле, обозначающее выходной порт в какой-либо форме, вообще отсутствует. Это объясняется тем, что адрес выходного порта всегда можно косвенно определить по адресу следующего маршрутизатора. На­пример, попробуем определить по табл. 5.10 адрес выходного порта для сети 56.0.0.0. Из таблицы следует, что следующим маршрутизатором для этой сети будет марш­рутизатор с адресом 213.34.12.4. Адрес следующего маршрутизатора должен при­надлежать одной из непосредственно присоединенных к маршрутизатору сетей, и в данном случае это сеть 213.34.12.0. Маршрутизатор имеет порт, присоединенный к этой сети, и адрес этого порта 213.34.12.3 мы находим в поле «Gateway» второй строки таблицы маршрутизации, которая описывает непосредственно присоеди­ненную сеть 213.34.12.0. Для непосредственно присоединенных сетей адресом сле­дующего маршрутизатора всегда является адрес собственного порта маршрутизатора. Таким образом, адрес выходного порта для сети 56.0.0 — это адрес 213.34.12.3.

Остальные параметры, которые можно найти в представленных версиях табли­цы маршрутизации, являются необязательными для принятия решения о пути сле­дования пакета.

Наличие или отсутствие поля маски в таблице говорит о том, насколько совре­менен данный маршрутизатор. Стандартным решением сегодня является исполь­зование поля маски в каждой записи таблицы, как это сделано в таблицах маршрутизаторов MPR Windows NT (поле «Netmask») и NetBuilder (поле «Mask»). Обработка масок при принятии решения маршрутизаторами будет рассмотрена ниже. Отсутствие поля маски говорит о том, что либо маршрутизатор рассчитан на работу только с тремя стандартными классами адресов, либо он использует для всех записей одну и ту же маску, что снижает гибкость маршрутизации.

Метрика, как видно из примера таблицы Unix-маршрутизатора, является не­обязательным параметром. В остальных двух таблицах это поле имеется, однако оно используется только в качестве признака непосредственно подключенной сети. Действительно, если в таблице маршрутизации каждая сеть назначения упомянута только один раз, то поле метрики не будет приниматься во внимание при выборе маршрута, так как выбор отсутствует. А вот признак непосредственно подключен­ной сети маршрутизатору нужен, поскольку пакет для этой сети обрабатывается особым способом — он не передается следующему маршрутизатору, а отправляется узлу назначения. Поэтому метрика 0 для маршрутизатора NetBuilder или 1 для маршрутизатора MPR просто говорит маршрутизатору, что эта сеть непосредственно подключена к его порту, а другое значение метрики соответствует удаленной сети. Выбор значения метрики для непосредственно подключенной сети является доста­точно произвольным, главное, чтобы метрика удаленной сети отсчитывалась с уче­том этого выбранного начального значения. В Unix-маршрутизаторе используется поле признаков, где флаг G отмечает удаленную сеть, а его отсутствие — непосред­ственно подключенную.

Однако существуют ситуации, когда маршрутизатор должен обязательно хра­нить значение метрики для записи о каждой удаленной сети. Эти ситуации возни­кают, когда записи в таблице маршрутизации являются результатом работы

5.3. Протокол IP 391

некоторых протоколов маршрутизации, например протокола RIP. В таких прото­колах новая информация о какой-либо удаленной сети сравнивается с имеющейся в таблице, и если метрика новой информации лучше имеющейся, то новая запись вытесняет имеющуюся. В таблице Unix-маршрутизатора поле метрики отсутству­ет, и это значит, что он не использует протокол RIP.

Флаги записей присутствуют только в таблице Unix-маршрутизатора. Они опи­сывают характеристики записи.

• U — показывает, что маршрут активен и работоспособен. Аналогичный смысл имеет поле «Status» в маршрутизаторе NetBuilder.

• Н — признак специфического маршрута к определенному хосту. Маршрут ко всей сети, к которой принадлежит данный хост, может отличаться от данного маршрута.

• G — означает, что маршрут пакета проходит через промежуточный маршрутиза­тор (gateway). Отсутствие этого флага отмечает непосредственно подключен­ную сеть.

• D — означает, что маршрут получен из сообщения Redirect (перенаправление) протокола ICMP. Этот признак может присутствовать только в таблице марш­рутизации конечного узла. Признак означает, что конечный узел в какой-то предыдущей передаче пакета выбрал не самый рациональный следующий мар­шрутизатор на пути к данной сети, и этот маршрутизатор с помощью протокола ICMP сообщил, что все последующие пакеты к данной сети нужно отправлять через другой следующий маршрутизатор. Протокол ICMP может посылать сооб­щения только узлу-отправителю, поэтому у промежуточного маршрутизатора этот признак встретиться не может. Признак никак не влияет на процесс марш­рутизации, он только указывает администратору источник появления записи. В таблице Unix-маршрутизатора используются еще два поля, имеющих спра­вочное значение. Поле «Refcnt» показывает, сколько раз на данный маршрут ссы­лались при продвижении пакетов. Поле «Use» отражает количество пакетов, переданных по данному маршруту.

В таблице маршрутизатора NetBuilder также имеются два справочных поля. Поле времени жизни «TTL» (Time To Live) имеет смысл для динамических запи­сей, которые имеют ограниченный срок жизни. Текущее значение поля показывает оставшийся срок жизни записи в секундах. Поле «Source» отражает источник по­явления записи в таблице маршрутизации. Хотя это поле имеется не во всех мар­шрутизаторах, но практически для всех маршрутизаторов существуют три основных источника появления записи в таблице.

Источники и типы записей в таблице маршрутизации

Первым источником является программное обеспечение стека TCP/IP. При ини­циализации маршрутизатора это программное обеспечение автоматически заносит в таблицу несколько записей, в результате чего создается так называемая мини­мальная таблица маршрутизации.

Это, во-первых, записи о непосредственно подключенных сетях и маршрутиза­торах по умолчанию, информация о которых появляется в стеке при ручном кон­фигурировании интерфейсов компьютера или маршрутизатора. К таким записям в приведенных примерах относятся записи о сетях 213.34.12.0 и 198.21.17.0, а также

392 Глава 5 • Сетевой уровень как средство построения больших сетей

запись о маршрутизаторе по умолчанию — default в Unix-маршрутизаторе и 0.0.0.0 в маршрутизаторе MPR Windows NT. В приведенном примере таблицы для марш­рутизатора NetBuilder маршрутизатор по умолчанию не используется, следовательно, при поступлении пакета с адресом назначения, отсутствующим в таблице маршру­тизации, этот пакет будет отброшен.

Во-вторых, программное обеспечение автоматически заносит в таблицу марш­рутизации записи об адресах особого назначения. В приведенных примерах табли­ца маршрутизатора MPR Windows NT содержит наиболее полный набор записей такого рода. Несколько записей в этой таблице связаны с особым адресом 127.0.0.0 (loopback), который используется для локального тестирования стека TCP/IP. Пакеты, направленные в сеть с номером 127.0.0.0, не передаются протоколом IP на канальный уровень для последующей передачи в сеть, а возвращаются в источ­ник — локальный модуль IP. Записи с адресом 224.0.0.0 требуются для обработки групповых адресов (multicast address). Кроме того, в таблицу могут быть занесены адреса, предназначенные для обработки широковещательных рассылок (например, записи 8 и 11 содержат адрес отправки широковещательного сообщения в соответ­ствующих подсетях, а последняя запись в таблице — адрес ограниченной широко­вещательной рассылки сообщения). Заметим, что в некоторых таблицах записи об особых адресах вообще отсутствуют.

Вторым источником появления записи в таблице является администратор, непос­редственно формирующий запись с помощью некоторой системной утилиты, на­пример программы route, имеющейся в операционных системах Unix и Windows NT. В аппаратных маршрутизаторах также всегда имеется команда для ручного зада­ния записей таблицы маршрутизации. Заданные вручную записи всегда являются статическими, то есть не имеют срока истечения жизни. Эти записи могут быть как постоянными, то есть сохраняющимися при перезагрузке маршрутизатора, так и временными, хранящимися в таблице только до выключения устройства. Часто администратор вручную заносит запись default о маршрутизаторе по умолчанию. Таким же образом в таблицу маршрутизации может быть внесена запись о специ­фичном для узла маршруте. Специфичный для узла маршрут содержит вместо номера сети полный IP-адрес, то есть адрес, имеющий ненулевую информацию не только в поле номера сети, но и в поле номера узла. Предполагается, что для такого конечного узла маршрут должен выбираться не так, как для всех остальных узлов сети, к которой он относится. В случае когда в таблице есть разные записи о про­движении пакетов для всей сети и ее отдельного узла, при поступлении пакета, адресованного узлу, маршрутизатор отдаст предпочтение записи с полным адресом узла.

И наконец, третьим источником записей могут быть протоколы маршрутиза­ции, такие как RIP или OSPF. Такие записи всегда являются динамическими, то есть имеют ограниченный срок жизни. Программные маршрутизаторы Windows NT и Unix не показывают источник появления той или иной записи в таблице, а маршрутизатор NetBuilder использует для этой цели поле «Source». В приведенном в табл. 5.10 примере первые две записи созданы программным обеспечением стека на основании данных о конфигурации портов маршрутизато­ра — это показывает признак «Connected». Следующие две записи обозначены как «Static», что указывает на то, что их ввел вручную администратор. После­дняя запись является следствием работы протокола RIP, поэтому в ее поле «TTL» имеется значение 160.

5.3. Протокол IP 393

5.3.4. Маршрутизация без использования масок

Рассмотрим на примере IP-сети (рис. 5.14) алгоритм работы средств сетевого уровня по продвижению пакета в составной сети. При этом будем считать, что все узлы сети, рассматриваемой в примере, имеют адреса, основанные на классах, без ис­пользования масок. Особое внимание будет уделено взаимодействию протокола IP с протоколами разрешения адресов АКР и DNS.

1. Итак, пусть пользователь компьютера cit.dol.ru, находящегося в сети Ethernet и имеющего IP-адрес 194.87.23.17 (адрес класса С), обращается по протоколу FTP к компьютеру sl.msk.su, принадлежащему другой сети Ethernet и имею­щему IP-адрес 142.06.13.14 (адрес класса В): > ftp sl.msk.su

Модуль FTP упаковывает свое сообщение в сегмент транспортного протокола TCP, который в свою очередь помещает свой сегмент в пакет протокола IP. В за­головке IP-пакета должен быть указан IP-адрес узла назначения. Так как пользо­ватель компьютера cit.dol.ru использует символьное имя компьютера sl.msk.su, то стек TCP/IP должен определить IP-адрес узла назначения самостоятельно.

При конфигурировании стека TCP/IP в компьютере cit.dol.ru был задан его собственный IP-адрес, IP-адрес маршрутизатора по умолчанию и IP-адрес DNS-

394 Глава 5 • Сетевой уровень как средство построения больших сетей

сервера. Модуль IP может сделать запрос к серверу DNS, но обычно сначала просматривается локальная таблица соответствия символьных имен и IP-ад­ресов. Такая таблица хранится чаще всего в виде текстового файла простой структуры — каждая его строка содержит запись об одном символьном имени и его IP-адресе. В ОС Unix такой файл традиционно носит имя hosts и нахо­дится в каталоге /etc.

2. Будем считать, что компьютер cit.dol.ru имеет файл hosts, а в нем есть строка 142.06.13.14 sl.msk.su

Таким образом, разрешение имени выполняется локально, и протокол IP мо­жет теперь формировать IP-пакеты с адресом назначения 142.06.13.14 для вза­имодействия с компьютером sl.msk.su.

3. Модуль IP компьютера cit.dol.ru проверяет, нужно ли маршрутизировать па­кеты с адресом 142.06.13.14. Так как адрес сети назначения (142.06.0.0) не совпадает с адресом (194.87.23.0) сети, которой принадлежит компьютер-от­правитель, то маршрутизация необходима.

4. Компьютер cit.dol.ru начинает формировать кадр Ethernet для отправки IP-пакета маршрутизатору по умолчанию, IP-адрес которого известен — 194.87.23.1, но неизвестен МАС-адрес, необходимый для перемещения кадра в локальной сети. Для определения МАС-адреса маршрутизатора протокол IP обращается к протоколу ARP, который просматривает ARP-таблицу. Если в последнее время компьютер cit.dol.ru выполнял какие-либо межсетевые обмены, то скорее всего искомая запись, содержащая соответствие между IP- и МАС-адресами марш­рутизатора по умолчанию уже находится в кэш-таблице протокола ARP. Пусть в данном случае нужная запись была найдена именно в кэш-таблице:

194.87.23.1 008048ЕВ7Е60

Обозначим найденный МАС-адрес 008048ЕВ7Е60 в соответствии с номером маршрутизатора и его порта через МАСп.

5. В результате компьютер cit.dol.ru отправляет по локальной сети пакет, упако­ванный в кадр Ethernet, имеющий следующие поля:

6. Кадр принимается портом 1 маршрутизатора 1 в соответствии с протоколом Ethernet, так как МАС-узел этого порта распознает свой адрес МАСп. Прото­кол Ethernet извлекает из этого кадра IP-пакет и передает его программному обеспечению маршрутизатора, реализующему протокол IP. Протокол IP из­влекает из пакета адрес назначения 142.06.13.14 и просматривает записи своей таблицы маршрутизации. Пусть маршрутизатор 1 имеет в своей таблице мар­шрутизации запись

142.06.0.0 135.12.0.11 2.

которая говорит о том, что пакеты для сети 142.06. 0.0 нужно передавать мар­шрутизатору 135.12.0.11, находящемуся в сети, подключенной к порту 2 мар­шрутизатора 1.

5.3. Протокол IP 395

7. Маршрутизатор 1 просматривает параметры порта 2 и находит, что к нему под­ключена сеть FDDI. Так как сеть FDDI имеет значение MTU большее, чем сеть Ethernet, то фрагментация IP-пакета не требуется. Поэтому маршрутизатор 1 формирует кадр формата FDDI. На этом этапе модуль IP должен определить МАС-адрес следующего маршрутизатора по известному IP-адресу 135.12.0.11. Для этого он обращается к протоколу ARP. Допустим, что нужной записи в кэш-таблице не оказалось, тогда в сеть FDDI отправляется широковещательный ARP-запрос, содержащий наряду с прочей следующую информацию.

о. Аналогично действует модуль if на маршрутизаторе л. получив кадр FDDI, он отбрасывает его заголовок, а из заголовка IP извлекает IP-адрес сети назна­чения и просматривает свою таблицу маршрутизации. Там он может найти запись о конкретной сети назначения:

142.06.0.0 203.21.4.12 2

или при отсутствии такой записи будет использована запись о маршрутизато­ре по умолчанию:

default 203.21.4.12 2,

Определив IP-адрес следующего маршрутизатора 203.21.4.12, модуль IP фор­мирует кадр Ethernet для передачи пакета маршрутизатору 3 по сети Ethernet. С помощью протокола ARP он находит МАС-адрес этого маршрутизатора и помещает его в заголовок кадра. IP-адрес узла назначения, естественно, остает­ся неизменным.

396 Глава 5 • Сетевой уровень как средство построения больших сетей

9. Наконец, после того как пакет поступил в маршрутизатор сети назначения — маршрутизатор 3, — появляется возможность передачи этого пакета компью­теру назначения. Маршрутизатор 3 определяет, что пакет нужно передать в сеть 142.06.0.0, которая непосредственно подключена к его первому порту. По­этому он посылает ARP-запрос по сети Ethernet с IP-адресом компьютера sl.msk.su. ARP-ответ содержит МАС-адрес конечного узла, который модуль IP передает канальному протоколу для формирования кадра Ethernet:

10. Сетевой адаптер компьютера sl.msk.su захватывает кадр Ethernet, обнаружи­вает совпадение МАС-адреса, содержащегося в заголовке, со своим собствен­ным адресом и направляет его модулю IP. После анализа полей IP-заголовка из пакета извлекаются данные, которые в свою очередь содержат сообщение выше лежащего протокола. Поскольку в данном примере рассматривается обмен данными по протоколу FTP, который использует в качестве транспортного протокола TCP, то в поле данных IP-пакета находится TCP-сегмент. Опреде­лив из TCP-заголовка номер порта, модуль IP переправляет сегмент в соответ­ствующую очередь, из которой данный сегмент попадет программному модулю FTP-сервера.

5.3.5. Маршрутизация с использованием масок

Использование масок для структуризации сети

Алгоритм маршрутизации усложняется, когда в систему адресации узлов вносятся дополнительные элементы — маски. В чем же причина отказа от хорошо себя заре­комендовавшего в течение многих лет метода адресации, основанного на классах? Таких причин несколько, и одна из них — потребность в структуризации сетей.

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

Допустим, администратор получил в свое распоряжение адрес класса В: 129.44.0.0. Он может организовать сеть с большим числом узлов, номера которых он может брать из диапазона 0.0.0.1-0.0.255.254 (с учетом того, что адреса из одних нулей и одних единиц имеют специальное назначение и не годятся для адресации узлов). Однако ему не нужна одна большая неструктурированная сеть, производ­ственная необходимость диктует администратору другое решение, в соответствии с которым сеть должна быть разделена на три отдельных подсети, при этом трафик

5.3. Протокол IP 397

в каждой подсети должен быть надежно локализован. Это позволит легче диагнос­тировать сеть и проводить в каждой из подсетей особую политику безопасности.

Посмотрим, как решается эта проблема путем использования механизма масок.

Итак, номер сети, который администратор получил от поставщика услуг, — 129.44.0.0 (10000001 00101100 00000000 00000000). В качестве маски было выбра­но значение 255.255.192.0 (11111111 11111111 1100000000000000). После наложе­ния маски на этот адрес число разрядов, интерпретируемых как номер сети, увеличилось с 16 (стандартная длина поля номера сети для класса В) до 18 (число единиц в маске), то есть администратор получил возможность использовать для нумерации подсетей два дополнительных бита. Это позволяет ему сделать из одно­го, централизованно заданного ему номера сети, четыре:

129.44.0.0 (10000001 00101100 00000000 00000000)

129.44.64.0 (10000001 00101100 01000000 00000000)

129.44.128.0 (10000001.00101100 10000000 00000000)

129.44.192.0 (10000001 00101100 11000000 00000000)

Два дополнительных последних бита в номере сети часто интерпретируются как номера подсетей (subnet), и тогда четыре перечисленных выше подсети имеют номера 0 (00), 1 (01), 2 (10) и 3 (11) соответственно.

ПРИМЕЧАНИЕ Некоторые программные и аппаратные маршрутизаторы не поддерживают номера подсетей, которые состоят либо только из одних нулей, либо только из одних единиц. Например, для некоторых типов оборудо­вания номер сети 129.44.0.0 с маской 255.255.192.0, использованный в нашем примере, окажется недопу­стимым, поскольку в этом случае разряды в поле номера подсети имеют значение 00. По аналогичным соображениям недопустимым может оказаться и номер сети 129.44.192.0 с тем же значением маски. Здесь номер подсети состоит только из единиц. Однако более современные маршрутизаторы свободны от этих ограничений. Поэтому, принимая решение об использовании механизма масок, необходимо выяс­нить характеристики того оборудования, которым вы располагаете, чтобы соответствующим образом скон­фигурировать маршрутизаторы и компьютеры сети.

В результате использования масок была предложена следующая схема распре­деления адресного пространства (рис. 5.15).

Сеть, получившаяся в результате проведенной структуризации, показана на рис. 5.16. Весь трафик во внутреннюю сеть 129.44.0.0, направляемый из внешней сети, поступает через маршрутизатор Ml. В целях структуризации информацион­ных потоков во внутренней сети установлен дополнительный маршрутизатор М2.

Все узлы были распределены по трем разным сетям, которым были присвое­ны номера 129.44.0.0, 129.44.64.0 и 129.44.128.0 и маски одинаковой длины -255.255.192.0. Каждая из вновь образованных сетей была подключена к соответ­ственно сконфигурированным портам внутреннего маршрутизатора М2. Кроме того, еще одна сеть (номер 129.44.192.0, маска 255.255.192.0) была выделена для созда­ния соединения между внешним и внутренним маршрутизаторами. Особо отме­тим, что в этой сети для адресации узлов были заняты всего два адреса 129.44.192.1 (порт маршрутизатора М2) и 129.44.192.2 (порт маршрутизатора Ml), еще два адреса 129.44.192.0 и 129.44.192.255 являются особыми адресами. Следовательно, огромное число узлов (214 - 4) в этой подсети никак не используются.

Извне сеть по-прежнему выглядит, как единая сеть класса В, а на местном уров­не это полноценная составная сеть, в которую входят три отдельные сети. Прихо­дящий общий трафик разделяется местным маршрутизатором М2 между этими сетями в соответствии с таблицей маршрутизации. (Заметим, что разделение боль-

398 Глава 5 • Сетевой уровень как средство построения больших сетей

шой сети, имеющей один адрес старшего класса, например А или В, с помощью масок несет в себе еще одно преимущество по сравнению с использованием не­скольких адресов стандартных классов для сетей меньшего размера, например С. Оно позволяет скрыть внутреннюю структуру сети предприятия от внешнего на­блюдения и тем повысить ее безопасность.)

Рассмотрим, как изменяется работа модуля IP, когда становится необходимым учитывать наличие масок. Во-первых, в каждой записи таблицы маршрутизации появляется новое поле — поле маски.

Во-вторых, меняется алгоритм определения маршрута по таблице маршрутиза­ции. После того как IP-адрес извлекается из очередного полученного IP-пакета, необходимо определить адрес следующего маршрутизатора, на который надо пере­дать пакет с этим адресом. Модуль IP последовательно просматривает все записи таблицы маршрутизации. С каждой записью производятся следующие действия.

• Маска М, содержащаяся в данной записи, накладывается на IP-адрес узла на­значения, извлеченный из пакета.

• Полученное в результате число является номером сети назначения обрабатыва­емого пакета. Оно сравнивается с номером сети, который помещен в данной записи таблицы маршрутизации.

• Если номера сетей совпадают, то пакет передается маршрутизатору, адрес кото­рого помещен в соответствующем поле данной записи.

Теперь рассмотрим этот алгоритм на примере маршрутизации пакетов в сети, изображенной на рис. 5.16. Все маршрутизаторы внешней сети, встретив пакеты с адресами, начинающимися с 129.44, интерпретируют их как адреса класса В и на­правляют по маршрутам, ведущим к маршрутизатору Ml. Маршрутизатор Ml в свою очередь направляет весь входной трафик сети 129.44.0.0 на маршрутизатор М2, а именно на его порт 129.44.192.1.

Маршрутизатор М2 обрабатывает все поступившие на него пакеты в соответ­ствии с таблицей маршрутизации (табл. 5.12).

Таблица 5.12. Таблица маршрутизатора М2 в сети с масками одинаковой длины


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.026 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал