Протокол ARP с представителем
является альтернативным методом, позволяющим
шлюзам принимать все необходимые решения о
маршрутизации. Он применяется в сетях с
широковещательной передачей, где для
отображения
IP-адресов в сетевые адреса используется протокол
ARP или ему подобный. Здесь мы вновь будем
предполагать, что имеем дело с сетью Ethernet.
Во многом метод, реализуемый протоколом ARP с представителем, аналогичен использованию маршрутов по умолчанию и сообщений перенаправления. Но протокол ARP с представителем не затрагивает таблиц маршрутов, все делается на уровне адресов Ethernet. Протокол ARP с представителем может использоваться либо для маршрутизации IP-пакетов ко всем сетям, либо только в локальной сети, либо в какой-то комбинации подсетей. Проще всего продемонстрировать его использование при работе со всеми адресами.
Чтобы использовать протокол, нужно настроить узел так, как будто все машины в мире подключены непосредственно к вашей локальной сети Ethernet. В ОС UNIX это делается командой "route add default 128.6.4.2 0", где 128.6.4.2 - IP-адрес вашего узла. Как уже отмечалось, метрика 0 говорит о том, что все IP-пакеты, которым подходит данный маршрут, должны посылаться напрямую по локальной сети.
Когда нужно послать IP-пакет узлу в локальной сети Ethernet, ваша машина должна определить Ethernet-адрес этого узла. Для этого она использует ARP-таблицу. Если в ARP-таблице уже есть запись, соответствующая IP-адресу места назначения, то из нее просто берется Ethernet-адрес, и кадр, содержащий IP-пакет, отправляется. Если такой записи нет, то посылается широковещательный ARP-запрос. Узел с искомым IP-адресом назначения принимает его и в ARP-ответе сообщает свой Ethernet-адрес. Эти действия соответствуют обычному протоколу ARP, описанному выше.
Протокол ARP с представителем основан на том, что шлюзы работают как представители удаленных узлов. Предположим, в подсети 128.6.5 имеется узел 128.6.5.2 (узел A на рис.12). Он желает послать IP-пакет узлу 128.6.4.194, который подключен к другой сети Ethernet (узел B в подсети 128.6.4). Существует шлюз с IP-адресом 128.6.5.1, соединяющий две подсети (шлюз R).
сеть 1 сеть 2 128.6.5 128.6.4 ----o----------------o--- --o---------------o---- | | | | ------------- ------------- --------------- | 128.6.5.2 | | 128.6.5.1 | | 128.6.4.194 | | A | | 128.6.4.1 | | B | ------------- | R | --------------- -------------
Рис.12. Сеть, использующая протокол ARP с представителем
Если в ARP-таблице узла A нет
маршрута доступа к узлу B, то узел A посылает
ARP-запрос узлу B. Фактически машина A спрашивает:
"Если кто-нибудь знает Ethernet-адрес узла 128.6.4.194,
сообщите мне его". Узел B не может ответить на
запрос самостоятельно. Он подключен к другой
сети Ethernet и никогда даже не увидит этот ARP-запрос.
Однако шлюз R может работать от его имени. Шлюз R
отвечает: "Я здесь, IP-адресу 128.6.4.194
соответствует Ethernet-адрес 2:7:1:0:EB:CD", где 2:7:1:0:EB:CD
в действительности является Ethernet-адресом шлюза.
Это создает иллюзию, что узел
128.6.4.194 подключен непосредственно к той же
локальной сети Ethernet, что и узел A, и имеет
Ethernet-адрес 2:7:1:0:EB:CD. Когда узел A захочет послать
новый IP-пакет узлу B, он использует указанный
Ethernet-адрес. Кадр, содержащий IP-пакет, попадет к
шлюзу R, а он переправит его по назначению.
Заметим, что полученный эффект такой же, как если бы в таблице маршрутов была запись за исключением того, что маршрутизация выполняется на уровне модуля ARP, а не модуля IP.
----------------------------------------------------- | адрес флаг вида шлюз интерфейс | | назначения маршрутизации | ----------------------------------------------------- | 128.6.4.194 косвенная 128.6.5.1 pe0 | -----------------------------------------------------
Обычно рекомендуется использовать таблицу маршрутов, так как архитектура протоколов TCP/IP предусматривает выполнение маршрутизации на межсетевом уровне. Однако иногда протокол ARP с представителем очень полезен. Он может помочь в следующих случаях:
1) в IP-сети есть узел, который не умеет работать с подсетями;
2) в IP-сети есть узел, который не может соответствующим образом реагировать на сообщения перенаправления;
3) нежелательно выбирать какой-либо шлюз как маршрут по умолчанию;
4) программное обеспечение не способно восстанавливаться при сбоях на маршрутах.
Иногда протокол ARP с
представителем выбирают из-за удобства. Дело в
том, что он упрощает работу по начальной
установке таблицы маршрутов. Даже в простейших
IP-сетях требуется устанавливать маршрут по
умолчанию, то есть использовать команду типа
"route add defailt ...", как в ОС UNIX. При изменении
IP-адреса шлюза эту команду приходится менять во
всех узлах. Если же использовать протокол ARP с
представителем, т.е. в команде установки маршрута
по умолчанию указать метрику 0, то при замене
IP-адреса шлюза команду начальной установки
менять не придется, так как
протокол ARP с представителем не требует явного
задания IP-адресов шлюзов. Любой шлюз может
ответить на ARP-запрос.
Для того, чтобы избавить пользователей от обязательной начальной установки маршрутов, некоторые реализации TCP/IP используют протокол ARP с представителем по умолчанию в тех случаях, когда не находят подходящих записей в таблице маршрутов.