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-запрос.
Пример последовательности
- Устройство А с IP 192.168.1.10 и MAC AA:BB:CC:DD:EE:01 хочет отправить данные устройству Б с IP 192.168.1.20.
- Устройство А формирует 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.
- Запрос отправляется на широковещательный MAC-адрес FF:FF:FF:FF:FF:FF.
- Все устройства в сегменте сети получают этот кадр. Устройство Б, обнаружив совпадение 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.
- Ответ отправляется непосредственно устройству А (unicast).
- Устройство А получает ответ, извлекает 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 →


