Протокол 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).
Если в 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.
Обычно рекомендуется использовать таблицу маршрутов, так как архитектура протоколов 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 с представителем по умолчанию в тех случаях, когда не находят подходящих записей в таблице маршрутов.