Протокол ARP
Протокол ARP (англ. Address Resolution Protocol — протокол разрешения адресов) — это протокол канального уровня (L2) в стеке TCP/IP, предназначенный для преобразования сетевых (IP) адресов в аппаратные (MAC) адреса в локальных вычислительных сетях (LAN). ARP используется для определения, какому MAC-адресу соответствует заданный IP-адрес в пределах одной подсети, что необходимо для передачи кадров на канальном уровне.
История и стандартизация
Протокол ARP был разработан в 1982 году Дэвидом Пламмером и описан в RFC 826 (стандарт Internet Standard STD 37). Изначально он создавался для сетей Ethernet, но впоследствии был адаптирован для других технологий канального уровня, таких как Wi-Fi (IEEE 802.11), Token Ring, FDDI и ATM. В 1990-х годах протокол стал основой для работы IPv4 в локальных сетях, а его недостатки (отсутствие аутентификации) привели к разработке расширений, таких как Secure ARP (S-ARP) и использование ARP-спуфинга.
Принцип работы
ARP работает на основе широковещательных запросов и одноадресных ответов. Процесс разрешения адреса включает следующие шаги:
- Инициация запроса: Узел (отправитель), которому нужно отправить IP-пакет другому узлу в той же подсети, проверяет свой ARP-кэш (таблицу соответствий IP-адресов и MAC-адресов). Если запись отсутствует, он формирует ARP-запрос.
- Широковещательная рассылка: ARP-запрос отправляется на широковещательный MAC-адрес (FF:FF:FF:FF:FF:FF для Ethernet). Запрос содержит IP-адрес цели и MAC-адрес отправителя.
- Обработка запроса: Все узлы в локальной сети принимают кадр. Если IP-адрес цели совпадает с собственным IP-адресом узла, он формирует ARP-ответ, содержащий свой MAC-адрес. В противном случае кадр игнорируется.
- Одноадресный ответ: Ответ отправляется непосредственно отправителю (на его MAC-адрес). После получения ответа отправитель обновляет свой ARP-кэш и использует полученный MAC-адрес для передачи IP-пакета.
Формат ARP-пакета
ARP-пакет (кадр) имеет фиксированную структуру, описанную в RFC 826. Поля пакета:
| Поле | Размер (байт) | Описание |
|---|---|---|
| Тип аппаратного адреса (HTYPE) | 2 | Идентификатор технологии канального уровня (1 для Ethernet) |
| Тип протокола (PTYPE) | 2 | Код сетевого протокола (0x0800 для IPv4) |
| Длина аппаратного адреса (HLEN) | 1 | Размер MAC-адреса в байтах (6 для Ethernet) |
| Длина протокольного адреса (PLEN) | 1 | Размер IP-адреса в байтах (4 для IPv4) |
| Операция (OPER) | 2 | Тип сообщения: 1 — запрос, 2 — ответ |
| Аппаратный адрес отправителя (SHA) | HLEN | MAC-адрес отправителя |
| Протокольный адрес отправителя (SPA) | PLEN | IP-адрес отправителя |
| Аппаратный адрес цели (THA) | HLEN | MAC-адрес цели (заполняется нулями в запросе) |
| Протокольный адрес цели (TPA) | PLEN | IP-адрес цели |
Общий размер ARP-пакета для Ethernet и IPv4 составляет 28 байт (без учёта заголовка канального уровня).
Классификация и разновидности
Стандартный ARP (IPv4)
Используется в сетях IPv4 для разрешения адресов. Работает только в пределах одной подсети. Если IP-адрес цели находится в другой подсети, ARP-запрос отправляется на MAC-адрес шлюза по умолчанию.
Reverse ARP (RARP)
Обратный протокол, описанный в RFC 903 (1984 год). Позволяет узлу узнать свой IP-адрес по известному MAC-адресу. Использовался в бездисковых станциях для загрузки по сети, но вытеснен протоколами BOOTP и DHCP.
Proxy ARP
Техника, при которой маршрутизатор отвечает на ARP-запросы от имени удалённых узлов. Позволяет узлам в одной подсети связываться с узлами в другой подсети, не зная о существовании маршрутизатора. Описан в RFC 1027.
Gratuitous ARP (GARP)
Произвольный ARP-ответ, отправляемый узлом без соответствующего запроса. Используется для:
- Объявления о смене MAC-адреса (например, при переключении сетевого интерфейса).
- Проверки уникальности IP-адреса (Duplicate Address Detection, DAD) в протоколах DHCP и IPv4.
- Обновления ARP-кэша других узлов.
Inverse ARP (InARP)
Протокол, обратный ARP: позволяет определить IP-адрес по известному аппаратному адресу. Используется в сетях Frame Relay и ATM. Описан в RFC 2390.
ARP для IPv6 (NDP)
В протоколе IPv6 функции ARP выполняет протокол Neighbor Discovery Protocol (NDP), описанный в RFC 4861. NDP использует ICMPv6-сообщения и многоадресную рассылку вместо широковещательной, что снижает нагрузку на сеть.
ARP-кэш и управление им
Каждый узел хранит таблицу соответствий IP-адресов и MAC-адресов, называемую ARP-кэшем. Записи в кэше имеют ограниченный срок жизни (TTL, Time To Live), который в современных операционных системах обычно составляет от 15 до 300 секунд для динамических записей. Статические записи могут быть добавлены администратором вручную.
Механизмы управления ARP-кэшем:
- Динамическое обновление: Записи добавляются автоматически при получении ARP-ответов или при отправке собственных запросов.
- Удаление по таймеру: Устаревшие записи удаляются после истечения TTL.
- Принудительное удаление: Команды
arp -d(Windows/Linux) илиnetsh interface ip delete arpcache(Windows) позволяют очистить кэш.
Применение
ARP является критически важным протоколом для работы IPv4 в локальных сетях. Основные области применения:
- Передача IP-пакетов в Ethernet-сетях: Без ARP невозможно определить MAC-адрес получателя, что делает невозможной отправку кадров.
- Работа DHCP: Клиент использует ARP (через Gratuitous ARP) для проверки уникальности полученного IP-адреса.
- Маршрутизация: Маршрутизаторы используют ARP для определения MAC-адресов соседних узлов при пересылке пакетов.
- Сетевые утилиты: Инструменты, такие как
arping, используют ARP-запросы для проверки доступности узлов.
Уязвимости и безопасность
ARP не имеет встроенных механизмов аутентификации, что делает его уязвимым для атак:
- ARP-спуфинг (ARP cache poisoning): Злоумышленник отправляет поддельные ARP-ответы, связывая свой MAC-адрес с IP-адресом другого узла (например, шлюза). Это позволяет перехватывать трафик (атака «человек посередине», MITM).
- ARP-флуд: Массовая рассылка поддельных ARP-запросов или ответов для переполнения ARP-кэша и нарушения работы сети.
- Отказ в обслуживании (DoS): Подмена MAC-адреса шлюза может привести к недоступности сети для всех узлов.
Методы защиты:
- Статические ARP-записи: Ручное добавление записей для критичных узлов (например, шлюза).
- ARP-инспекция (DAI, Dynamic ARP Inspection): Технология на управляемых коммутаторах, проверяющая подлинность ARP-пакетов на основе DHCP-снупинга.
- Использование VPN или шифрования: Протоколы IPsec, SSL/TLS защищают трафик даже при успешном ARP-спуфинге.
- Протокол S-ARP: Расширение ARP с цифровыми подписями, но не получившее широкого распространения.
Ограничения и альтернативы
Основные ограничения ARP:
- Широковещательный характер: ARP-запросы рассылаются всем узлам подсети, что создаёт избыточный трафик в больших сетях.
- Отсутствие масштабирования: ARP не работает через маршрутизаторы и не поддерживает глобальные сети.
- Зависимость от IPv4: Для IPv6 используется NDP, который лишён многих недостатков ARP (многоадресная рассылка, встроенная безопасность).
В современных сетях ARP остаётся стандартом для IPv4, но постепенно вытесняется NDP по мере перехода на IPv6.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →