← Все вопросы

Что делает протокол ARP и зачем нужна команда arp -a?

Задан 31 месяц назад306 просмотров2 ответа
7

Набрал в терминале arp -a и увидел список IP-адресов с какими-то длинными адресами через двоеточия. Что это за протокол ARP, что показывает эта команда и зачем оно вообще нужно?

2 ответа

12
✓ Принятый ответ — помог автору

ARP (Address Resolution Protocol) решает одну задачу: сопоставить IP-адрес с MAC-адресом внутри локальной сети.

Зачем это нужно. В пределах одной локальной сети данные передаются не по IP, а по MAC-адресам (это те самые «длинные адреса через двоеточия», вроде a4:5e:60:c1:22:0f, физический адрес сетевой карты). Но программы работают с IP. Значит, прежде чем отправить кадр, нужно узнать: «у кого из соседей по сети IP 192.168.1.1 и какой у него MAC?». Этим и занимается ARP:

  1. Хост кричит на всю сеть (broadcast): «У кого IP 192.168.1.1? Сообщите свой MAC».
  2. Владелец этого IP отвечает: «Это я, мой MAC такой-то».
  3. Ответ кэшируется в ARP-таблице, чтобы не спрашивать каждый раз.

Команда arp -a как раз показывает эту таблицу — кэш соответствий IP ↔ MAC:

arp -a

? (192.168.1.1) at a4:5e:60:c1:22:0f on en0 ifscope [ethernet]
? (192.168.1.15) at 3c:22:fb:7a:11:9d on en0 ifscope [ethernet]

Здесь видно, что роутер 192.168.1.1 имеет MAC a4:5e:60:c1:22:0f. Полезно для диагностики локальной сети: проверить, что устройство «видится», найти дубли IP, посмотреть, кто вообще есть в сетке.

Важно: ARP работает только внутри локальной сети. Для выхода в интернет хост узнаёт MAC не конечного сервера, а своего шлюза (роутера).

6

Полезные варианты команды на разных системах:

arp -a        # вся таблица (Windows / macOS / Linux)
arp -n        # Linux, без резолва имён, быстрее
ip neigh      # современный аналог на Linux

И ещё момент про безопасность: на ARP завязана атака ARP-spoofing, когда злоумышленник в той же сети подделывает ARP-ответы и выдаёт свой MAC за MAC роутера, чтобы пропускать чужой трафик через себя. Так что неожиданно «съехавший» MAC шлюза в arp -a — повод насторожиться.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект