ARP

Dependences: Ethernet, IP, IP Addressing, Routing, Модель OSI

ARP (Address Resolution Protocol) — протокол разрешения адреса.

Когда хост хочет отправить пакет на определенный IP адрес, он должен отправить кадр маршрутизатору или напрямую в сеть. Говоря кадр, имеется в виду второй уровень модели OSI. Для соединения точка-точка проблем нет — необходимо определить выходной интерфейс и отправить пакет туда, получатель ведь только один.

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

Рассмотрим причину, почему не указывается физический адрес, а используется логический IP адрес и почему невозможно прописать однозначное соответствие между физическими и логическими адресами.
Ethernet MAC-адрес имеет плоскую структуру. Это значит,  что не существует иерархии для адресации хостов, а значение адреса — произвольное значение, длиной в 48 бит. Поэтому хосты должны быть в одном сегменте сети (широковещательном домене) для возможности обмена Ethernet кадрами. Думаю, не стоит объяснять как ухудшается производительность больших широковещательных доменов. Это первая причина, почему не используется глобально адресация по физическим адресам. Иерархия IP адресов (разбиение на сети/подсети) позволяет создавать сети и маршрутизировать пакеты между ними.
IP адрес — это логический сетевой адрес, который не зависит ни от аппаратного обеспечения, ни от типа канала связи, ни от протокола канального уровня. Такой независимый подход позволяет адресовать хост в сети в независимости от способа его подключения к этой сети. Также хост может адресоваться по множеству разных сетевых адресов и динамически изменять их. Это пример того, почему нельзя глобально определить однозначное соответствие между физическими и логическими адресами.
Выходя из написанного выше, необходим способ динамически определять физический адрес получателя, зная лишь его логический адрес. Для  решения этой задачи используется протокол ARP.

Когда хост хочет отправить пакет, он прежде отправляет широковещательный запрос, который звучит как «who has x.x.x.x?». Владелец указанного IP-адреса (x.x.x.x) отвечает уже unicast пакетом, указывая свой физический адрес. Таким образом отправитель узнает MAC адрес, который помещает в кадр при инкапсуляции.
Все описанные действия выполняет ядро операционной системы. Но есть микроядерные системы, где сетевая подсистема вынесена в отдельную службу. Также есть реализация сетевого стека в пользовательском пространстве (userspace).

Если при отправке каждого пакета отправлять ARP запрос, появляются следующие проблемы:
  • задержки
  • использование пропускной способности
  • создание большого количества широковещательного трафика

Для уменьшения действия описанных проблем в сетевых подсистемах используется кеширование. Динамически изученные MAC адреса помещаются в таблицу, которую называют ARP таблицей. По истечению определенного промежутка времени (обычно 5 мин.) запись удаляется из таблицы.

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

ARP

Proxy-ARP — это технология, согласно которой маршрутизатор отвечает на чужой ARP запрос, предназначеный не ему, своим MAC адресом.
При этом отправитель, предполагая что получил в ARP ответе физический адрес получателя, помещает этот MAC адрес в кадр. Таким образом маршрутизатор получает кадр, адресованный ему, но пакет содержит не его IP адрес. Это в свою очередь значит, что пакет предназначен для маршрутизации. Ответный пакет также проходит этап маршрутизации в обратную сторону. Для обеих сторон маршрутизатор является прозрачным.
Возможен случай, когда proxy-arp работает только для одного сегмента сети, а с другой стороны хост знает о существовании маршрутизатора и отправляет пакеты ему сознательно.

Задачи которые позволяет решить эта технология:
  • подключение к сети одного хоста, принадлежащего другой физической сети (другому широковещательному домену)
  • объединение двух широковещательных доменов для общения одноадресными рассылками (unicast), но ограничивая широковещательный трафик между доменами; при этом не прибегая к использованию bridge и брандмауэров.
Понятие Proxy-ARP можно встретить при конфигурации VPN сервера.

В технологии Frame-Relay существует понятие Inverse-ARP. Как и соответствует из названия, этот протокол явзяется обратным ARP. Суть протокола заключается в преобразовании физического адреса в логический, т.е. IP-адрес. В сети Frame-Relay физическим адресом являестя DLCI.

Благодарим за статью: Дмитрия Подгорного

Войти