Открыть сервис

ARP

ARP (англ. Address Resolution Protocol, протокол разрешения адресов) — это протокол канального уровня сетевой модели OSI, предназначенный для преобразования сетевых адресов (IP-адресов) в физические (MAC-адреса) в локальных вычислительных сетях. ARP является фундаментальным механизмом, обеспечивающим взаимодействие между узлами в сетях Ethernet, Wi-Fi и других средах, использующих IP-адресацию. Без ARP невозможна доставка IP-пакетов на конкретные устройства в пределах одного сегмента сети.

История возникновения

Протокол ARP был разработан в 1982 году в рамках проекта DARPA (Агентство перспективных исследовательских проектов Министерства обороны США) и впервые описан в документе RFC 826 (автор — Дэвид Пламмер). Изначально протокол предназначался для сетей Ethernet, но впоследствии был адаптирован для других технологий, таких как Wi-Fi, Token Ring, FDDI и ATM. В 1984 году вышла спецификация RFC 903, описывающая протокол RARP (Reverse ARP), который решал обратную задачу — определение IP-адреса по известному MAC-адресу. Однако RARP был вытеснен более функциональными протоколами, такими как BOOTP и DHCP.

Принцип работы

ARP использует широковещательные запросы для определения соответствия IP-адреса MAC-адресу. Работа протокола состоит из двух основных этапов: отправка запроса и получение ответа.

Формат ARP-пакета

ARP-пакет передаётся непосредственно в кадре канального уровня (например, Ethernet-кадре). Его структура включает следующие поля:

Процесс разрешения адреса

  1. Отправка запроса. Когда узел A хочет передать IP-пакет узлу B, он сначала проверяет свою ARP-таблицу (кэш) на наличие записи, соответствующей IP-адресу узла B. Если записи нет, узел A формирует широковещательный ARP-запрос (MAC-адрес получателя — FF:FF:FF:FF:FF:FF), в котором указывает свой IP- и MAC-адрес, а также IP-адрес узла B. Этот запрос получают все устройства в локальной сети.
  2. Обработка запроса. Каждый узел в сети сравнивает указанный в запросе IP-адрес получателя со своим собственным. Если адрес не совпадает, пакет игнорируется. Если совпадает, узел B формирует ARP-ответ, в котором указывает свой MAC-адрес.
  3. Ответ. ARP-ответ отправляется непосредственно узлу A (не широковещательно), используя его MAC-адрес, полученный из запроса. Узел A получает ответ, извлекает из него MAC-адрес узла B и сохраняет эту пару (IP — MAC) в своей ARP-таблице.
  4. Передача данных. После получения MAC-адреса узел A формирует Ethernet-кадр, в котором указывает MAC-адрес получателя (узла B) и помещает внутрь IP-пакет. Кадр отправляется по сети и доставляется только узлу B.

ARP-кэш

ARP-таблица (кэш) хранит записи о соответствии IP- и MAC-адресов. Каждая запись имеет время жизни (TTL, Time to Live), по истечении которого она удаляется. Типичное значение TTL для записей, полученных динамически, составляет от 2 до 10 минут (в зависимости от реализации ОС). Статические записи могут быть добавлены вручную и не имеют ограничения по времени. Периодическое обновление кэша необходимо для поддержания актуальности данных, так как MAC-адреса могут изменяться (например, при замене сетевого адаптера).

Виды ARP

Proxy ARP

Proxy ARP (прокси-ARP) — это механизм, при котором маршрутизатор или другое сетевое устройство отвечает на ARP-запросы от имени другого узла. Это позволяет узлам, находящимся в разных сегментах сети, взаимодействовать так, как если бы они были в одной локальной сети. Proxy ARP часто используется в сетях с масками подсети, отличными от стандартных, или при объединении нескольких сетей через маршрутизаторы без явной настройки маршрутизации на клиентах.

Gratuitous ARP

Gratuitous ARP (бесполезный или добровольный ARP) — это ARP-ответ, отправляемый устройством без предшествующего запроса. Обычно используется для:

Inverse ARP (InARP)

Inverse ARP (обратный ARP) — протокол, решающий обратную задачу: определение IP-адреса по известному MAC-адресу. Используется в сетях Frame Relay и ATM, где физические адреса известны заранее, а IP-адреса необходимо сопоставить.

Уязвимости и атаки

Протокол ARP не имеет встроенных механизмов аутентификации и шифрования, что делает его уязвимым для ряда атак в локальных сетях.

ARP-spoofing (ARP-отравление)

ARP-spoofing (или ARP cache poisoning) — это атака, при которой злоумышленник отправляет поддельные ARP-ответы в сеть, чтобы связать свой MAC-адрес с IP-адресом другого узла (например, шлюза по умолчанию). В результате трафик, предназначенный для этого узла, перенаправляется злоумышленнику. Это позволяет перехватывать, модифицировать или блокировать данные. Для защиты от ARP-spoofing используются:

DoS-атаки с использованием ARP

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

Применение в современных сетях

Протокол ARP остаётся неотъемлемой частью IPv4-сетей Ethernet и Wi-Fi. Он используется в операционных системах Windows, Linux, macOS, а также во встроенных системах и сетевом оборудовании. В IPv6 функции ARP выполняет протокол NDP (Neighbor Discovery Protocol), который, в отличие от ARP, использует многоадресные (multicast) запросы и включает встроенные механизмы защиты (например, Secure Neighbor Discovery, SEND). Тем не менее ARP остаётся стандартом для IPv4 и будет применяться до полного перехода на IPv6.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →