Битлента
Словарь терминов3 мин чтения·

ARP: как IP-адрес сопоставляется с MAC-адресом

Как работает протокол ARP: широковещательный запрос, ARP-таблица, чем отличается ответ, зачем нужен gratuitous ARP и как посмотреть кэш командой arp -a.

Проблема двух адресов

Когда программа обращается к устройству по IP-адресу, сетевой карте нужен другой адрес: MAC. Именно он записывается в кадр Ethernet или Wi-Fi, потому что коммутатор и точка доступа ничего не знают об IP. Между этими двумя мирами стоит ARP, Address Resolution Protocol, определённый ещё в начале 1980-х годов. Его задача очень узкая: по известному IPv4-адресу соседа узнать его физический адрес.

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

Ход запроса и ответа

Допустим, компьютер хочет отправить пакет на адрес 192.168.1.20 в своей подсети и не знает его MAC. Он рассылает широковещательный кадр с вопросом: «У кого адрес 192.168.1.20? Сообщите тому, кто спрашивает». Запрос получают все устройства сегмента, но отвечает только владелец адреса, причём направленно, обычным кадром на MAC спрашивающего.

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

Особые формы: gratuitous ARP и proxy ARP

Самопроизвольный ARP, gratuitous, устройство рассылает без всякого запроса, объявляя собственный адрес. Его используют для двух целей: проверить, не занят ли адрес другим узлом, и обновить кэши соседей после смены MAC, например когда резервный сервер принимает адрес основного.

Прокси-ARP означает, что маршрутизатор отвечает на запросы от имени другого узла, подсказывая свой MAC. Раньше приём применяли для объединения сегментов без изменения настроек клиентов, а сейчас он встречается редко и может скрывать ошибки конфигурации.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Где это заметно на практике

В нормальной работе ARP незаметен. Проблемы проявляются в нескольких ситуациях. Конфликт адресов: два устройства получили один IP, и компьютеры путаются, кому отправлять кадры, отчего связь то работает, то пропадает. Операционные системы обычно выводят предупреждение о конфликте.

Второй случай связан с безопасностью. У протокола нет проверки подлинности: любое устройство может ответить на запрос и утверждать, что нужный IP принадлежит ему. Так работает подмена ARP, о которой рассказано на странице про arp-spoofing. От неё защищают функции управляемых коммутаторов и, главное, шифрование на верхних уровнях, из-за которого перехваченные данные остаются нечитаемыми.

Как посмотреть ARP-кэш

В Windows и Linux выполните команду arp -a в терминале, а в современных Linux ещё и ip neigh. Вы увидите список IP-адресов соседей с их MAC-адресами. В списке почти всегда есть шлюз: тот самый роутер, чей MAC подставляется в кадры при выходе в интернет.

Если нужно очистить таблицу, например после смены оборудования с тем же IP, в Windows поможет команда netsh interface ip delete arpcache, выполненная с правами администратора, а в Linux ip neigh flush all. Записи создадутся заново при следующем обращении.

Что ARP не делает

В IPv6 протокола ARP нет вовсе: соседей там находят через Neighbor Discovery, часть протокола ICMPv6, и вместо широковещания применяется групповая рассылка. Кроме того, ARP не шифрует и не проверяет, а лишь связывает адреса. Он не занимается маршрутизацией и не знает ничего о сетях за шлюзом.

Если устройство не отвечает на ping, это ещё не значит, что ARP не сработал: увидеть запись в кэше можно и при отброшенных пакетах ICMP. Это удобно использовать для диагностики: если MAC соседа появился в таблице, второй уровень исправен, а проблемы выше.

Если устройство не может связаться с соседом по сети, стоит проверить ARP-таблицу. Запись со статусом «неполная» или отсутствие записи означает, что ответ на запрос не приходит: сосед выключен, находится в другой подсети или изолирован настройками точки доступа. Многие роутеры по умолчанию запрещают беспроводным клиентам общаться друг с другом, и тогда кадры между ними просто не проходят.

Вторая причина: устаревшая запись после замены оборудования. Если роутер заменили, а старый MAC ещё лежит в кэше, связь восстановится не сразу, пока запись не устареет или её не очистят вручную. Третья причина: дублирование адресов. Когда двое устройств получили один IP, в таблице заметны переключения MAC-адреса для одного и того же IP, а связь то пропадает, то возвращается.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
сетиarpmac-адреспротоколы

Часто задаваемые вопросы

Читайте также