В протоколе IP-адрес узла, то есть адрес компьютера или порта маршрутизатора, назначается произвольно администратором сети и прямо не связан с его локальным адресом, как это сделано, например, в протоколе IPX. Подход, используемый в IP, удобно использовать в крупных сетях и по причине его независимости от формата локального адреса, и по причине стабильности, так как в противном случае, при смене на компьютере сетевого адаптера это изменение должны бы были учитывать все адресаты всемирной сети Internet.
Локальный адрес используется в протоколе IP только в пределах локальной сети при обмене данными между маршрутизатором и узлом этой сети. Маршрутизатор, получив пакет для узла одной из сетей, непосредственно подключенных к его портам, должен для передачи пакета сформировать кадр в соответствии с требованиями принятой в этой сети технологии и указать в нем локальный адрес узла, например его МАС-адрес. В пришедшем пакете этот адрес не указан, поэтому перед маршрутизатором встает задача поиска его по известному IP-адресу, который указан в пакете в качестве адреса назначения.
Для определения локального адреса по IP-адресу используется протокол разрешения адреса Address Resolution Protocol, ARP. Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ. Существует также протокол, решающий обратную задачу - нахождение IP-адреса по известному локальному адресу. Он называется реверсивный ARP - RARP (Reverse Address Resolution Protocol) и используется при старте бездисковых станций, не знающих в начальный момент своего IP-адреса, но знающих адрес своего сетевого адаптера.
В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом.
Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно. Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным. В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес. ARP-запросы и ответы используют один и тот же формат пакета. Так как локальные адреса могут в различных типах сетей иметь различную длину, то формат пакета протокола ARP зависит от типа сети. На рисунке показан формат пакета протокола ARP для передачи по сети Ethernet.
Тип сети | Тип протокола | |
Длина локального адреса | Длина сетевого адреса | Операция |
Локальный адрес отправителя (байты 0 - 3) | ||
Локальный адрес отправителя (байты 4 - 5) | IP-адрес отправителя (байты 0-1) | |
IP-адрес отправителя (байты 2-3) | Искомый локальный адрес (байты 0 - 1) | |
Искомый локальный адрес (байты 2-5) | ||
Искомый IP-адрес (байты 0 - 3) | ||
Узел, отправляющий ARP-запрос, заполняет в пакете все поля, кроме поля искомого локального адреса (для RARP-запроса не указывается искомый IP-адрес). Значение этого поля заполняется узлом, опознавшим свой IP-адрес.
Маршрутизация — это процесс пересылки пакетов данных между сетями или подсетями. Возможные пути передачи пакетов называются маршрутами.
Процесс маршрутизации использует таблицы, протоколы и алгоритмы маршрутизации, чтобы определить наиболее эффективный путь для пересылки IP-пакета из одной сети в другую. Маршрутизация в компьютерных сетях типично выполняется специальными программно-аппаратными средствами — маршрутизаторами (Router) или шлюзом. Маршрутизатор может быть выполнен в виде отдельного сетевого устройства. В простых конфигурациях может быть реализован на базе компьютера с несколькими сетевыми интерфейсами, на котором установлено специальное программное обеспечение. В этом случае говорят о программном маршрутизаторе. Маршрутизаторы значительно увеличивают масштабируемость сетей, ограничивая широковещательные домены и домены коллизий.
В зависимости от способа заполнения таблицы маршрутизации, различают два вида маршрутизации:
1. Статическая маршрутизация. Все маршруты прописываются и изменяются администратором системы вручную. Это самый простой способ организации маршрутизации. Однако он подходит только для небольших сетей, изменения в структуре которых происходят достаточно редко. Кроме того, данный способ маршрутизации не годится в случае, когда важно обеспечить высокую надежность межсетевого взаимодействия. Если один из маршрутов окажется по каким-либо причинам недоступен, администратору необходимо будет вручную изменить таблицу маршрутизации на всех маршрутизаторах в сети. До этого момента межсетевое взаимодействие на отдельных участках сети будет невозможно.
2. Динамическая маршрутизация. Построение таблицы маршрутизации осуществляется посредством специальных протоколов маршрутизации. Участие администратора в этом процессе минимально и сводится к изначальной конфигурации маршрутизаторов. Два наиболее распространенных протокола IP-маршрутизации, используемых в интрасетях, — протоколы RIP (Routing Information Protocol) и OSPF (Open Shortest Path First). Посредством указанных протоколов маршрутизаторы способны информировать друг друга об изменениях в структуре сети. В случае недоступности одного из маршрутов, маршрутизаторы автоматически перестроят свои таблицы маршрутизации и, при возможности, выберут другой маршрут доставки сообщений.
Таблица маршрутизации — таблица, состоящая из сетевых маршрутов и предназначенная для определения наилучшего пути передачи сетевого пакета. Каждая запись в таблице маршрутизации состоит, как правило, из таких полей:
- destination - адрес сети или узла назначения, либо указание, что маршрут является маршрутом по умолчанию
- gateway - шлюз, обозначающий адрес маршрутизатора в сети, на который необходимо отправить пакет, следующий до указанного адреса назначения
- netmask, genmask - маску сети назначения
- интерфейс (в зависимости от системы это может быть порядковый номер, GUID или символьное имя устройства)
- метрику — числовой показатель, задающий предпочтительность маршрута. Чем меньше число, тем более предпочтителен маршрут (интуитивно представляется как расстояние).
Пример таблицы маршрутизации (ОС Linux):
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
При отправке сетевого пакета, операционная система смотрит, по какому именно маршруту он должен быть отправлен, основываясь на таблице маршрутизации. Как правило, выбирается наиболее конкретный (то есть, с наиболее длинной сетевой маской) маршрут из тех, которые соответствуют адресу отправителя. Если ни один из маршрутов не подходит, пакет уничтожается, а его отправителю возвращается ICMP-сообщение No route to host.
В момент начальной загрузки системы таблица маршрутизации пуста, и пополняется потом, по мере загрузки системы и её дальнейшей работы.
Изменение записей в таблице маршрутизации может выполняться администратором системы вручную или специальным программным обеспечением.
В таблице может быть один, а в некоторых операционных системах и несколько шлюзов по умолчанию. Такой шлюз используется для сетей для которых нет более конкретных маршрутов в таблице маршрутизации.
"Управляемые коммутаторы 2-го и 3-го уровней, VLAN и маршрутизаторы"
Общей проблемой локальной сетей является служебный широковещательный
трафик, например ARP, при помощи которого компьютеры сети постоянно обновляют
информацию об IP- и MAC-адресах соседних компьютеров. По мере увеличения
компьютеров в сети растет и служебный трафик, который с определенного уровня на-
чинает перегружать линии связи и тем самым серьезно мешать обмену данными меж-
ду компьютерами. Решением этой проблемы является разбиение большой сети на под-
сети таким образом, чтобы в каждой подсети оказались компьютеры интенсивно об-
щающиеся данными между собой напрямую, т.е. для которых служебные пакеты ARP
и WINS являются действительно необходимыми. Остальные подсети от данного слу-
жебного трафика, являющегося для них паразитным, будут отсечены. Таким образом
при удачном разбиении большой сети, например, на 4 подсети, в каждой из них объем
служебного трафика уменьшится почти в 4 раза.
Существует несколько аппаратных решений для организации подсетей.
Рассмотрим некоторые из них.
Первое решение, представленное на рисунке, заключается в использовании про-
стых коммутаторов (свитчей) для каждой из подсетей и соединении коммутаторов
между собой при помощи маршрутизатора. Важно понимать, что в том случае, если
подсети расположены достаточно далеко друг от друга, то это решение является зача-
стую и единственно возможным. При этом в сетях малых предприятий с небольшим
трафиком в качестве маршрутизатора можно использовать компьютер с Unix-подоб-
ной операционной системой, а в сетях с большим трафиком лучше использовать аппа-
ратный маршрутизатор — специализированный микрокомпьютер со специализиро-
ванной операционной системой, которые спроектированы для эффективного решения
подобной узко-специализированной задачи. Важно также понимать, что в данном слу-
чае маршрутизатор нужен скорее не для отсечения служебного трафика, сколько для
соединения подсетей между собой.
Поскольку данное решение является простым и достаточно распространенным,
то существует соблазн использовать его и для расщепления сети на подсети. В самом
деле, если компьютеры располагаются в соседних помещениях и исторически сло-
жилось так, что они подключены к одному коммутатору, то при увеличении количе-
ства компьютеров и интенсивности сетевого трафика кажется логичным заменить
один большой коммутатор на несколько маленьких и поставить рядом маршрутизатор.
Однако, такое решение будет не самым лучшим, хотя бы потому, что потребует
нескольких устройств, соединенных между собой большим количеством проводов, да
и для отсечения паразитного трафика может потребоваться дополнительная настройка
межсетевого экрана.
Поскольку данный случай является типичным, то для него созданы специализи-
рованные аппаратные решения — управляемые коммутаторы (свитчи) 2-го и 3-го
уровней, которые помимо рассмотренной помогают решать и другие задачи при помо-
щи аппаратно реализованной в них технологии VLAN — виртуальных локальных се-
тей.
Неуправляемый свитч 2-го уровня или просто свитч — это устройство, которое
может извлекать из сетевых пакетов MAC-адреса получателей и в соответствии с этим
направлять пакет не на все порты, а только на один, к которому и подключен получа-
тель данного пакета. Этим свитч и отличается от разветвителя или хаба, называемого
иногда свитчем 1-го уровня, который просто копирует пришедший пакет на все свои
порты. Управляемый свитч 2-го уровня позволяет создавать VLAN, т.е. в простейшем
случае назначать свои порты различным подсетям, которые будут изолированы друг
от друга, т.е вести себя как несколько физических неуправляемых свитчей.
Свитч 3-го уровня имеет доступ к IP-адресам получателей и, следовательно мо-
жет осуществлять маршрутизацию пакетов. Свитч 4-го уровня — доступ к протоко-
лам и портам и поэтому способен осуществлять не только маршрутизацию, но и
фильтрацию пакетов.
Изучение всех возможностей свитчей 2-го и 3-го уровня выходит за рамки на-
стоящего курса. В данной работе мы остановимся только на простейших случаях ис-
пользовании VLAN.
VLAN — это более сложная вещь, чем просто разделение портов одного управ-
ляемого свитча на несколько независимых подсетей. VLAN позволяет решить и обрат-
ную задачу — объединить несколько уделенных компьютеров, подключенных напря-
мую к разным управляемым свитчам в одну виртуальную сеть и выделить для этой
сети какие-либо сетевые ресурсы недоступные другим виртуальным сетям, т.к. вирту-
альная сеть, также как и хост, может иметь свой собственный IP-адрес.
Рассмотрим второй способ разбиения большой сети на подсети с использовани-
ем управляемого свитча 2-го уровня и маршрутизатора.
Как видно на рисунке, в свитче задействовано 5 портов: по 2 порта на VLAN и
один порт на роутер. Если роутер (маршрутизатор) не подключать, то хосты в каждой
VLAN будут изолированы друг от друга. Для организации связи между ними с отсече-
нием служебного широковещательного трафика и используется маршрутизатор.
Причем достаточно одного порта и одной линии связи, а не двух портов — по одному
от каждой из VLAN — как может показаться на первый взгляд. Это достигается за
счет того, что порт управляемого свитча переводится в trunk-режим, при котором в за-
головок пакета добавляется информация о VLAN-источнике и VLAN-назначении.
Причем порт маршрутизатора также нуждается в дополнительной настройке для обра-
ботки такого trunk-трафика.
Если использовать свитч 3-го уровня, то маршрутизатор не нужен, поскольку
данный свитч сам может осуществлять маршрутизацию, имея доступ к IP-адресам
приемников и получателей пакетов.
И, наконец, если требуется обеспечить несколько альтернативных маршрутов
между подсетями, каждая из которых на рисунке представлена одним хостом, выпол-
няющем функции программного файерволла, можно использовать несколько маршру-
тизаторов, которые следует «закольцевать». Сами маршрутизаторы необходимо пере-
вести в режим RIP, при котором они будут обмениваться служебной информацией и
выбирать из нескольких альтернативных оптимальный маршрут при передаче пакета
из одной подсети в другую.