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

ARP-запрос

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

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

ARP-запрос отправляется широковещательно (broadcast) на MAC-адрес FF:FF:FF:FF:FF:FF, что означает, что пакет получают все устройства в данном широковещательном домене (например, в одном сегменте Ethernet). Запрос содержит IP-адрес целевого устройства, для которого отправитель хочет узнать MAC-адрес. Каждое устройство, получившее запрос, проверяет, совпадает ли указанный IP-адрес с его собственным. Если совпадение найдено, устройство отправляет ARP-ответ (unicast), содержащий свой MAC-адрес, непосредственно отправителю запроса.

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

Пакет ARP-запроса имеет фиксированную структуру, определённую в RFC 826. Основные поля:

  • Тип аппаратного адреса (HTYPE) — 2 байта, для Ethernet значение 1.
  • Тип протокольного адреса (PTYPE) — 2 байта, для IPv4 значение 0x0800.
  • Длина аппаратного адреса (HLEN) — 1 байт, для Ethernet — 6 (MAC-адрес).
  • Длина протокольного адреса (PLEN) — 1 байт, для IPv4 — 4.
  • Код операции (OPER) — 2 байта, для запроса значение 1, для ответа — 2.
  • Аппаратный адрес отправителя (SHA) — 6 байт, MAC-адрес устройства, отправляющего запрос.
  • Протокольный адрес отправителя (SPA) — 4 байта, IP-адрес отправителя.
  • Аппаратный адрес цели (THA) — 6 байт, в запросе обычно заполняется нулями, так как он неизвестен.
  • Протокольный адрес цели (TPA) — 4 байта, IP-адрес устройства, MAC-адрес которого требуется узнать.

В Ethernet-кадре пакет ARP инкапсулируется непосредственно в поле данных, без использования IP-заголовка. Тип протокола в заголовке Ethernet для ARP — 0x0806.

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

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

Пример последовательности

  1. Устройство А с IP 192.168.1.10 и MAC AA:BB:CC:DD:EE:01 хочет отправить данные устройству Б с IP 192.168.1.20.
  2. Устройство А формирует ARP-запрос, где SPA = 192.168.1.10, SHA = AA:BB:CC:DD:EE:01, TPA = 192.168.1.20, THA = 00:00:00:00:00:00.
  3. Запрос отправляется на широковещательный MAC-адрес FF:FF:FF:FF:FF:FF.
  4. Все устройства в сегменте сети получают этот кадр. Устройство Б, обнаружив совпадение TPA со своим IP, формирует ARP-ответ, где SPA = 192.168.1.20, SHA = 11:22:33:44:55:66, TPA = 192.168.1.10, THA = AA:BB:CC:DD:EE:01.
  5. Ответ отправляется непосредственно устройству А (unicast).
  6. Устройство А получает ответ, извлекает MAC-адрес устройства Б и добавляет запись в свой ARP-кэш. После этого IP-пакет может быть отправлен.

ARP-кэш и его управление

Для повышения эффективности и снижения количества широковещательных запросов каждое устройство хранит таблицу соответствия IP-адресов и MAC-адресов, называемую ARP-кэшем. Записи в кэше имеют ограниченный срок жизни (TTL, Time To Live), который зависит от операционной системы и конфигурации сети (обычно от 20 секунд до нескольких минут). По истечении TTL запись удаляется, и при необходимости повторного обмена данными с тем же устройством выполняется новый ARP-запрос.

В операционных системах семейства Windows, Linux и macOS можно просмотреть содержимое ARP-кэша с помощью команды arp -a (в Windows) или ip neigh show (в Linux). Статические записи могут быть добавлены вручную для предотвращения определённых типов атак или для работы в специфических сетевых конфигурациях.

Разновидности ARP-запросов

Обратный ARP (RARP)

RARP (Reverse ARP) — протокол, позволяющий устройству узнать свой IP-адрес по известному MAC-адресу. Использовался в ранних сетях для бездисковых станций, но был вытеснен протоколами BOOTP и DHCP.

Прокси-ARP

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

Gratuitous ARP (GARP)

Gratuitous ARP — это ARP-запрос или ответ, отправляемый устройством для объявления или обновления своего MAC-адреса в сети без предварительного запроса. Обычно используется при смене IP-адреса, при подключении нового устройства к сети или для проверки уникальности IP-адреса (Duplicate Address Detection, DAD). GARP может быть как широковещательным, так и направленным.

Инверсный ARP (InARP)

InARP (Inverse ARP) — протокол, используемый в сетях Frame Relay и ATM для определения IP-адреса удалённого устройства по его канальному адресу (DLCI или VPI/VCI). В отличие от обычного ARP, InARP работает наоборот: известен канальный адрес, требуется узнать сетевой.

Уязвимости и безопасность

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

ARP-спуфинг (ARP-отравление)

ARP-спуфинг — атака, при которой злоумышленник отправляет поддельные ARP-ответы в сеть, связывая свой MAC-адрес с IP-адресом другого устройства (например, шлюза по умолчанию). В результате трафик, предназначенный для жертвы, перенаправляется через атакующее устройство, что позволяет перехватывать, модифицировать или блокировать данные. Эта атака часто используется для организации атак типа «человек посередине» (Man-in-the-Middle, MITM).

ARP-флуд

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

Методы защиты

  • Статические ARP-записи — ручное добавление записей в ARP-кэш критически важных устройств, что предотвращает их подмену.
  • ARP-инспекция (Dynamic ARP Inspection, DAI) — функция управляемых коммутаторов, которая проверяет ARP-пакеты на соответствие записям в DHCP-сниффинге или статическим правилам. Пакеты, не соответствующие ожидаемым, отбрасываются.
  • Использование протокола DHCP Snooping — позволяет отслеживать назначения IP-адресов и создавать базу доверенных соответствий IP-MAC.
  • Шифрование трафика на более высоких уровнях (например, HTTPS, SSH, VPN) — не предотвращает ARP-спуфинг, но делает перехваченные данные нечитаемыми для злоумышленника.
  • Сетевые экраны и системы обнаружения вторжений (IDS) — могут анализировать ARP-трафик и выявлять аномалии.

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

ARP-запросы остаются неотъемлемой частью работы сетей на основе IPv4. В сетях IPv4 без поддержки протокола IPv6 ARP является единственным способом разрешения адресов на канальном уровне. В сетях IPv6 аналогичную функцию выполняет протокол NDP (Neighbor Discovery Protocol), который использует ICMPv6-сообщения и не требует ARP.

В виртуальных сетях (VLAN, VXLAN) ARP-запросы могут обрабатываться специальными шлюзами или контроллерами, что позволяет масштабировать сети и снижать широковещательный трафик. В программно-конфигурируемых сетях (SDN) ARP-запросы могут перехватываться и обрабатываться централизованно, что повышает безопасность и управляемость.

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

  • Протокол ARP был разработан в 1982 году Дэвидом Пламмером (David C. Plummer) и описан в RFC 826.
  • В некоторых реализациях ARP-запрос может использоваться для обнаружения конфликтов IP-адресов (Duplicate Address Detection, DAD) — устройство отправляет GARP-запрос перед началом использования IP-адреса.
  • Существует расширение протокола ARP для работы с IPv6, называемое ARP for IPv6, но оно не получило широкого распространения из-за внедрения NDP.
  • В сетях Ethernet максимальный размер ARP-пакета составляет 28 байт (без учёта заголовка Ethernet), что делает его одним из самых компактных сетевых протоколов.

Источники

  • RFC 826 — An Ethernet Address Resolution Protocol (1982)
  • RFC 5227 — IPv4 Address Conflict Detection (2008)
  • RFC 4861 — Neighbor Discovery for IP version 6 (IPv6) (2007)
  • Таненбаум Э., Уэзеролл Д. — «Компьютерные сети» (5-е издание, 2012)
  • Олифер В. Г., Олифер Н. А. — «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание, 2016)

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

На главную BFOmetr →