Протокол разрешения адресов (ARP) — это фундаментальный механизм, обеспечивающий взаимодействие между сетевым (Layer 3) и канальным (Layer 2) уровнями модели OSI в сетях на основе IPv4. Его основная задача — динамическое преобразование логического IP-адреса узла в его физический MAC-адрес в пределах одного широковещательного домена (broadcast domain).
Основная проблема и решение
В стеке протоколов TCP/IP сетевой уровень оперирует IP-адресами для маршрутизации пакетов от источника к получателю через сеть. Однако, когда пакет достигает конечного сегмента сети (или когда оба узла находятся в одной подсети), его необходимо доставить конкретному сетевому интерфейсу. Канальный уровень, отвечающий за эту локальную доставку, использует аппаратные MAC-адреса.
Проблема: Устройство знает IP-адрес получателя, но не знает его MAC-адрес.
Решение: Протокол ARP.
ARP решает эту проблему путем широковещательного запроса внутри локальной сети, эффективно спрашивая: “Кто владеет этим IP-адресом? Пожалуйста, сообщите мне свой MAC-адрес”.
Формат ARP-пакета
ARP-пакет инкапсулируется непосредственно в кадр канального уровня (например, Ethernet) и имеет следующую структуру:
| Поле | Размер (байты) | Описание |
|---|---|---|
| Hardware Type (HTYPE) | 2 | Тип аппаратного адреса. Для Ethernet значение 1. |
| Protocol Type (PTYPE) | 2 | Тип протокола сетевого уровня. Для IPv4 значение 0x0800. |
| Hardware Address Length (HLEN) | 1 | Длина аппаратного адреса в байтах. Для MAC-адресов — 6. |
| Protocol Address Length (PLEN) | 1 | Длина сетевого адреса в байтах. Для IPv4 — 4. |
| Operation (OPER) | 2 | Тип операции: 1 для ARP-запроса (ARP Request), 2 для ARP-ответа (ARP Reply). |
| Sender Hardware Address (SHA) | 6 | MAC-адрес отправителя запроса или ответа. |
| Sender Protocol Address (SPA) | 4 | IP-адрес отправителя запроса или ответа. |
| Target Hardware Address (THA) | 6 | В запросе — поле заполнено нулями (00:00:00:00:00:00). В ответе — MAC-адрес получателя. |
| Target Protocol Address (TPA) | 4 | IP-адрес, для которого требуется разрешение MAC-адреса. |
Примеры ARP-пакетов
1. ARP-запрос (ARP Request):
- OPER:
1 - SHA: MAC-адрес отправителя (напр.,
00:11:22:33:44:55) - SPA: IP-адрес отправителя (напр.,
192.168.1.10) - THA:
00:00:00:00:00:00(неизвестен) - TPA: IP-адрес цели (напр.,
192.168.1.20)
Этот пакет инкапсулируется в широковещательный Ethernet-кадр с Destination MAC = FF:FF:FF:FF:FF:FF, чтобы его получил каждый узел в сети.
2. ARP-ответ (ARP Reply):
- OPER:
2 - SHA: MAC-адрес цели из запроса (напр.,
AA:BB:CC:DD:EE:FF) - SPA: IP-адрес цели из запроса (напр.,
192.168.1.20) - THA: MAC-адрес отправителя запроса (напр.,
00:11:22:33:44:55) - TPA: IP-адрес отправителя запроса (напр.,
192.168.1.10)
Этот пакет инкапсулируется в unicast Ethernet-кадр, направленный напрямую отправителю запроса.
Процесс работы ARP
Процесс разрешения адреса состоит из нескольких шагов:
- Проверка кэша: Узел A, желающий отправить пакет узлу B (
192.168.1.20), сначала проверяет свою локальную ARP-таблицу (кэш). Если записьIP -> MACуже существует и актуальна, процесс завершается, и A использует найденный MAC-адрес для формирования кадра. - Генерация запроса: Если записи в ARP-таблице нет, узел A создает ARP-запрос, где TPA =
192.168.1.20, а THA =00:00:00:00:00:00. - Широковещательная рассылка: ARP-запрос помещается в Ethernet-кадр с Destination MAC =
FF:FF:FF:FF:FF:FFи рассылается всем узлам в локальной сети. - Обработка запроса: Все узлы получают запрос. Большинство игнорируют его, сравнивая TPA со своим IP-адресом. Только узел B, чей IP совпадает с
192.168.1.20, обрабатывает запрос. - Формирование и отправка ответа: Узел B создает ARP-ответ, заполняя SHA и SPA своим MAC и IP, а THA и TPA — данными из запроса. Ответ отправляется напрямую узлу A как unicast-кадр.
- Обновление кэша: Узел A получает ответ, извлекает из него MAC-адрес узла B и добавляет новую запись (
192.168.1.20->AA:BB:CC:DD:EE:FF) в свою ARP-таблицу. Теперь A может отправить исходный пакет данных.
ARP-таблица (кэш)
Каждое устройство поддерживает локальную ARP-таблицу — это кэш соответствий IP-адресов и MAC-адресов. Это критически важно для производительности, так как позволяет избежать генерации ARP-запроса для каждого отправляемого пакета.
- Записи: Добавляются динамически при получении ARP-ответов.
- Время жизни (TTL): Записи имеют ограниченное время жизни (обычно от 15 до 45 минут в различных ОС). После истечения TTL запись помечается как устаревшая и удаляется, чтобы таблица не содержала недействительных данных (например, если устройство было отключено от сети).
- Статические записи: Администратор может вручную добавить постоянные записи, которые не устаревают. Это используется для повышения безопасности или для критически важных устройств.
Команда arp -a в большинстве операционных систем позволяет просмотреть содержимое этой таблицы.

Безопасность и уязвимости
ARP является простым и эффективным протоколом, но он не содержит встроенных механизмов безопасности, что делает его уязвимым к атакам:
- ARP-спуфинг (ARP Spoofing / ARP Poisoning): Злоумышленник отправляет в сеть поддельные ARP-ответы, связывая свой MAC-адрес с IP-адресом другого узла (например, шлюза по умолчанию). В результате весь трафик, предназначенный для этого узла, будет перенаправляться на злоумышленника, что позволяет ему перехватывать, модифицировать или блокировать данные (атака типа “Man-in-the-Middle”).
- Причина уязвимости: Узлы принимают и обрабатывают ARP-ответы даже без отправки соответствующего запроса, и они автоматически обновляют свои ARP-таблицы на основе полученной информации.
Для защиты от таких атак используются специализированные решения, такие как статические ARP-записи, DHCP Snooping и Dynamic ARP Inspection (DAI) на управляемых коммутаторах.
Связь с другими протоколами
- RARP (Reverse ARP): Устаревший протокол, выполнявший обратную функцию — по MAC-адресу определял IP-адрес. Был заменен BOOTP, а затем DHCP.
- NDP (Neighbor Discovery Protocol): В IPv6 функции ARP полностью интегрированы в протокол NDP, который работает поверх ICMPv6 и предоставляет более широкий набор функций, включая обнаружение соседей, определение MTU и маршрутизаторов.
Таким образом, ARP является незаменимым “клеем”, связывающим логическую адресацию IP с физической адресацией на уровне MAC, обеспечивая корректную доставку данных в пределах локальной сети.
B (по очереди)
низкий уровень и embedded