logo
адресация сетей

8. Принципы маршрутизации

В этой главе с теоретической точки зрения показано, как применяется IP -адресация при реализации такой базовой функции в сетях TCP / IP , как маршрутизация.

Маршрутизацией называется действие по перенаправлению пакета из одной логической сети (или подсети) в другую. А маршрутизатор — это устройство, выполняющее такое действие.

Основные средства маршрутизации функционируют следующим образом. Хост применяет операцию "И" к IP -адресу отправителя (чаще всего таковым является его собственный IP -адрес) и маске сети, соответствующей этому адресу, а также к IP -адресу получателя и той же маске сети. Если полученные при этом результаты совпадают, это означает, что оба IP -адреса находятся в одной и той же сети, по­этому для определения МАС-адреса устройства получателя можно применить широковещательную рассылку запроса ARP . А если полученные результаты не совпадают, это означает, что получатель находится в другой сети, и для передачи пакета на хост получателя необходимо обратиться к маршрутизатору. Придя к заключению, что требуется маршрутизатор, хост отправителя проверяет наличие в своей конфигурации IP -адреса шлюза, применяемого по умолчанию. Затем он определяет МАС-адрес шлюза, применяемого по умолчанию (маршрутизатора), с помощью широковещательной рассылки запроса ARP . Получив МАС-адрес маршрутизатора, хост формирует пакет, используя IP -адрес конечного хоста получателя, но в качестве МАС-адреса указывает МАС-адрес маршрутизатора. После получения пакета маршрутизатор проверяет пакет и обнаруживает, что пакет предназначен ему, после чего проверяет в пакете IP -адрес получателя.

Затем маршрутизатор просматривает таблицу (называемую таблицей маршрутизации), в которой перечислены все удаленные сети, известные ему в настоящее время, и пытается найти в этой таблице маршрут к сети получателя. Если маршрут к удаленной сети найден, маршрутизатор вводит МАС-адрес устройства, находящегося в конце следующего транзитного перехода (либо следующего маршрутизатора, через который проходит данный маршрут, либо самого удаленного хоста), в пакет и перенаправляет его. А если не удается найти маршрут к удаленной сети (даже самый неудобный, такой как стандартный маршрут), маршрутизатор возвращает отправителю сообщение ICMP о том, что получатель недостижим.

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

На первый взгляд кажется, что маршрутизатор выполняет очень простые задачи. Но в действительности он должен иметь информацию обо всех сетях, к которым он непосредственно подключен, чтобы иметь возможность перенаправить в них пакеты, передаваемые хостами. Кроме того, маршрутизатор должен правильно перенаправлять в эти сети пакеты, поступающие от хостов. Наконец, он должен ограничивать (или устранять) широковещательную рассылку. Именно последняя функция и определяет необходимость применения первой и второй из перечисленных выше функций.

Рассмотрим, как эти действия выполняются на практике. Чтобы передать информацию на любой хост, необходимо знать МАС-адрес (или другой адрес уровня 2) этого хоста. Такая проблема в плоской сети (плоской обычно принято называть сеть, не сегментированную с помощью маршрутизатора) решается с помощью протокола ARP . Но плоские сети имеют серьезные недостатки, связанные с мас­штабируемостью, поскольку после передачи широковещательного сообщения его получают и обрабатывают все хосты.

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

Поэтому логическая операция "И" применяется для того, чтобы хост мог определить, достаточно ли ему просто выполнить широковещательную рассылку, чтобы достичь другого хоста, или вместо этого он должен отправить пакет маршрутизатору. Но следует помнить, что для доставки пакета все равно необходим МАС-адрес. А если хост не может выполнять широковещательную рассылку для получения MAC -адреса удаленного хоста, то как он определит МАС-адрес, по которому должен быть отправлен пакет? Ответ на этот вопрос состоит в том, что он не выполняет такую операцию, а использует для передачи пакета МАС-адрес маршрутизатора.

Если хост определяет, что получатель передаваемого им сообщения находится в другой сети, он просто передает соответствующий пакет маршрутизатору, имеющему больше возможностей по достижению удаленной сети. Как правило, таким маршрутизатором является шлюз данного хоста, применяемый по умолчанию. (Этим маршрутизатором может быть также один из маршрутизаторов, перечисленных в таблице маршрутизации хоста). Применяемым по умолчанию шлюзом является устройство, работающее по протоколу IP , на которое хост передает пакет, если не имеет информации о том, кому еще можно передать этот пакет. При передаче пакета на применяемый по умолчанию шлюз хост в качестве МАС-адреса получателя использует адрес этого шлюза, а не МАС-адрес удаленного хоста, но в пакете все равно указывает IP -адрес удаленного хоста. Затем маршрутизатор определяет, в каком направлении необходимо передать этот пакет, и вставляет в него новый МАС-адрес следующего транзитного перехода, если в этом есть необходимость. Такой процесс показан на рис. 8.1.

Рис. 8.1 Пример маршрутизации пакета

В этом примере хост Vinni пытается отправить пакет хосту Pyatachok . На пути между этими двумя хостами находятся два маршрутизатора ( Ia и Krolik ). Хост Vinni определяет, что Pyatachok является удаленным хостом, поэтому вставляет в пакет МАС-адрес маршрутизатора Ia и передает этот пакет. После получения пакета маршрутизатор Ia определяет, что для достижения хоста Pyatachok этот пакет должен пройти через маршрутизатор Krolik . Поэтому он вставляет в пакет МАС-адрес маршрутизатора Krolik и передает этот пакет. Маршрутизатор Krolik имеет информацию о том, что к хосту Pyatachok можно обратиться непосредственно через его интерфейс Ethernet , но еще не знает МАС-адрес хоста Pyatachok , поэтому выполняет рассылку запросов ARP для его получения. После получения МАС-адреса хоста Pyatachok маршрутизатор Krolik вставляет его в пакет и передает этот пакет непосредственно хосту Pyatachok . При возникновении необходимости отправить ответ с хоста Pyatachok на хост Vinni описанный выше процесс выполняется в обратном порядке.

Теперь рассмотрим еще один пример. На рис. 8.2 показано, как два хоста ( Gannibal и Lukull ) пытаются вступить во взаимодействие. Хост Gannibal имеет IP -адрес 172.16.1.1 с маской подсети 255.255.0.0. А хост Lukull имеет IP -адрес 172 .16.5.202 с маской подсети 255.255.255.0. Могут ли они связаться друг с другом?

Рис. 8.2 Пример безуспешной попытки взаимодействия

Ответ является отрицательным. Почему? Снова рассмотрим рисунок 8.2. После выполнения операции "И" создается впечатление, что хост Gannibal должен попытаться передать пакет на маршрутизатор, поскольку его адрес сети равен 172.168.0.0, а адрес сети хоста Lukull равен 172.16.5.0. Но фактически справедливо обратное утверждение. Хост Gannibal не имеет возможности определить, что хост Lukull использует иную маску подсети, чем он. Поэтому после выполнения хостом Gannibal операции "И" с применением одинаковых масок подсети полученные результаты совпадают, и он предпринимает попытку непосредственно передать пакет. И операция передачи пакета хостом Gannibal фактически будет выполнена успешно, поскольку оба хоста действительно находятся в одной и той же логической сети. Но при попытке хоста Lukull ответить на запрос будет получен отрицательный результат, поскольку этот хост сам выполняет операцию "И". Полученные им результаты покажут, что оба хоста находятся в разных сетях. Поэтому хост Lukull попытается передать пакет маршрутизатору, но этот пакет так и не будет доставлен.

Цель этого последнего примера применения операции "И" состоит в том, чтобы дать читателю понять, что если хосты находятся в одной и той же логической сети, в них должны совпадать не только части IP -адресов с обозначением сети, но и маски подсети. Если эти компоненты адреса не совпадают, операция "И" выполняется неправильно и связь нарушается.

В этой главе лишь с теоретической точки зрения показано, как применяется IP -адресация при реализации такой базовой функции в сетях TCP / IP , как маршрутизация. Более подробное описание данного вопроса выходит за рамки данной книги. Следует отметить, что это очень обширная тема, которой посвящено много книг. Однако хорошее знание адресации в сетях TCP / IP абсолютно необходимо для четкого понимания работы как самих маршрутизаторов, так и протоколов, используемых ими.