Новый взгляд на протокол разрешения адресов

Опубликовано: 17 Марта, 2023
Новый взгляд на протокол разрешения адресов

Как ИТ-специалист, я иногда ловлю себя на мысли о сетевых коммуникациях с точки зрения IP-адресации. Однако, как мы все знаем, IP-адреса — это только один из механизмов идентификации узла в сети. Сетевые узлы также можно идентифицировать по их адресу управления доступом к среде или MAC-адресу. MAC-адрес — это адрес аппаратного уровня, который однозначно идентифицирует сетевой интерфейс в сети. Существуют также виртуальные MAC-адреса, но это обсуждение будет сосредоточено на физических адресах.

Как работает ARP

Когда устройству необходимо отправить данные на другое устройство в IP-сети, оно должно иметь возможность определить MAC-адрес устройства-получателя. Здесь в игру вступает протокол разрешения адресов, или ARP. Задача ARP заключается в определении MAC-адреса, соответствующего данному IP-адресу.

Конечно, сетевые коммуникации были бы очень медленными, если бы трансляцию ARP приходилось выполнять для каждого отдельного пакета, отправляемого по сети. Для повышения производительности устройства используют кэш ARP. Кэш ARP — это просто список известных сопоставлений IP-адресов и MAC-адресов. Поэтому, если устройству необходимо определить MAC-адрес, соответствующий определенному IP-адресу, оно просматривает кэш ARP, чтобы определить, известен ли уже MAC-адрес получателя.

Отсутствует MAC-адрес

Если MAC-адрес получателя не отображается в кэше ARP, то устройство, которому необходимо передать данные данному получателю, отправляет запрос ARP через локальную подсеть. Запрос ARP, по сути, является запросом получателя на ответ со своим MAC-адресом.

Это, конечно, вызывает большой вопрос. Как отправитель может отправить запрос ARP получателю, если он не знает MAC-адрес получателя? В конце концов, основная причина, по которой отправителю нужен MAC-адрес получателя, в первую очередь заключается в том, чтобы отправитель мог отправлять данные получателю.

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

На первый взгляд работа протокола разрешения адресов может показаться полностью теоретической. Однако операционная система Windows предоставляет большую часть этой функциональности через команду с соответствующим названием ARP. На самом деле команда ARP десятилетиями была частью операционной системы Windows.

Команда ARP позволяет просматривать и изменять кэш ARP устройства. Чтобы показать вам, как это работает, учтите, что до того, как я начал писать эту статью, я провел некоторое время, общаясь с сервером в моей сети с IP-адресом 147.100.100.151. Поскольку мой компьютер недавно связывался с этим сервером, информация о сервере должна находиться в кэше ARP моего компьютера. Поэтому, если бы я хотел найти MAC-адрес этого сервера, я мог бы сделать это, введя следующую команду:

АРП-А 147.100.100.151

Вы можете увидеть вывод команды на рисунке ниже:

В данном случае я указал IP-адрес конкретного сервера, но есть возможность изучить кэш ARP целиком. Для этого просто введите команду ARP -A без указания IP-адреса. Это приведет к отображению всего кеша.

Хорошо, это хороший трюк для вечеринки, но вам, вероятно, интересно, есть ли какое-либо практическое применение этой утилиты в реальном мире. Хотите верьте, хотите нет, но есть кое-что, для чего команда ARP работает очень хорошо.

Предположим на мгновение, что в вашей сети возник конфликт IP-адресов в результате того, что двум узлам был назначен один и тот же IP-адрес. Давайте также представим, что вам удалось отследить хост-нарушитель и назначить ему новый IP-адрес, но у устройства Windows в вашей сети возникли проблемы со связью с одним из этих хостов, хотя конфликт IP-адресов был разрешен. Проблема, скорее всего, связана с тем, что в кэш ARP записывается недопустимая запись в результате конфликта IP-адресов. Поэтому вы можете использовать команду ARP для проверки и устранения проблемы.

Минуту назад я показал вам, как использовать команду ARP для просмотра определенного IP-адреса в кэше ARP. Информация, которая отображалась для этого адреса на предыдущем снимке экрана, была правильной, поскольку в моей сети не возникало конфликта IP-адресов. Однако ради обсуждения предположим, что информация, возвращенная поиском в кэше, неверна. В такой ситуации я мог бы использовать переключатель -D, чтобы удалить запись из кеша ARP. Фактическая команда будет:

АРП-Д 147.100.100.151

Если бы я хотел создать новую запись кэша ARP с правильным MAC-адресом, я мог бы использовать переключатель -S для создания статической записи. Статические записи — это записи, которые вручную добавляются в кэш ARP. Однако стоит отметить, что статические записи удаляются при перезагрузке системы.

Я должен быть честным с вами в том, что мне ни разу не приходилось создавать статическую запись в таблице ARP. Помните, что записи в таблице ARP создаются автоматически в результате попытки связаться с хостом. Поэтому, если вы удалите оскорбительную запись из кэша ARP, новая запись займет ее место при следующей попытке связи с хостом. Предполагая, что конфликт IP-адресов разрешен, новая запись кэша ARP должна содержать правильную информацию.

Уборка после конфликта

Команда ARP, вероятно, не является одной из тех вещей, которые вы будете использовать ежедневно. Тем не менее, эта команда может дать представление о том, как работает процесс разрешения адресов. Это полезно для очистки после конфликта IP-адресов, но, возможно, оно может быть еще более полезным в качестве образовательного учебного пособия для тех, кто плохо знаком с сетями.