Протокол ARP

 

Протокол ARP (Address Resolution Protocol, Протокол Разрешения Адресов) описан в RFC 826.

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

Все узлы, поддерживающие протокол ARP, ведут ARP-таблицу, состоящую из записей <IP-адрес;MAC-адрес>.

Когда узлу нужно определить локальный адрес другого узла, его ARP-модуль сначала ищет его в ARP-таблице, и, если нужный адрес не найден, то передает широковещательное сообщение: “Знает ли кто-нибудь локальный адрес для IP 123.45.67.89? Я 123.45.67.90, мой MAC-адрес 10:20:30:40:50:60.”. Узел, которого разыскивают, отвечает (не широковещательно, а прямой передачей): “Да, 123.45.67.89 – это я. Мой MAC-адрес 10:20:30:40:50:61”. При этом он сохраняет пару <IP-адрес;MAC-адрес> искавшего его узла в своей ARP-таблице. Наконец, первый узел, получив ответ, заносит его в свою ARP-таблицу.

Как правило, записи в ARP-таблице имеют ограниченное время жизни (стандарт описывает возможные схемы ограничения времени жизни и тайм-аутов, но не требует их применения).

Формат сообщения ARP позволяет использовать этот протокол в сетях с разным размером адресов (до 256 бит).

Сообщения ARP не содержат IP-заголовка и непосредственно размещаются в поле данных кадра канального уровня.