Что такое ARP (протокол разрешения адресов)?

Для того чтобы иметь возможность отправлять пакеты данных в сетях TCP/IP, передатчику требуется три бита адресной информации: маска подсети, IP-адрес и MAC-адрес (также аппаратный или физический адрес). Маску подсети и IP-адрес сетевые устройства получают автоматически и гибко при подключении к сети. Для этого подключаемые коммуникационные устройства, такие как маршрутизаторы или концентраторы, обращаются к протоколу DHCP. В локальных сетях эти две записи также могут быть введены вручную. Однако аппаратный адрес назначается производителем соответствующего устройства и связывается с конкретным IP-адресом с помощью так называемого протокола разрешения адресов (ARP).

Определение протокола ARP

Протокол разрешения адресов был определен в RFC-стандарте 826 в 1982 году для преобразования адресов IPv4 в MAC-адреса. ARP незаменим для передачи данных в сетях Ethernet по двум причинам: с одной стороны, отдельные кадры данных (также Ethernet-кадры) IP-пакета могут быть отправлены на нужные узлы назначения только с помощью аппаратного адреса. Однако протокол Интернета не может самостоятельно обращаться к этим физическим адресам. С другой стороны, из-за своей ограниченной длины протокол IPv4 не предоставляет возможности хранить адреса устройств. ARP предоставляет решение с помощью собственного механизма кэширования ARP. В новом протоколе IPv6 соответствующие функции выполняет протокол Neighbor Discovery Protocol (NDP).

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

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

Примечание

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

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

Если целевой узел не находится в той же подсети, отправитель обращается к шлюзу по умолчанию (обычно это маршрутизатор). Это также может быть сделано путем объединения MAC- и IP-адресов, поэтому также требуется протокол разрешения адресов. Шлюз получает пакет данных после разрешения адресов и затем берет на себя заботу о его пересылке целевому узлу. Для этого он сначала анализирует IP-заголовок, чтобы получить необходимую информацию. Впоследствии он также использует различные аспекты протокола ARP для решения:

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

В последнем случае процесс повторяется до тех пор, пока пакет данных не достигнет места назначения или поле TTL (время жизни) в IP-заголовке не примет значение 0. 

Настройка сообщений ARP

Протокол ARP использует простой формат сообщений для отправки запросов/ответа на запросы. Хотя изначально он был предназначен для IPv4 и MAC-адресов, использование других сетевых протоколов теоретически возможно. Именно поэтому существуют поля для типа и размера аппаратных и протокольных адресов. Следовательно, общий размер ARP-пакетов также может отличаться. Например, в стандартной ситуации при использовании ARP в сетях IPv4 ethernet длина пакета составляет 224 бита (28 байт). На следующей иллюстрации показаны компоненты одного из таких информационных пакетов:

Настройка ARP-сообщений

Протокол ARP использует простой формат сообщений для отправки запросов/ответа на запросы. Хотя изначально он был предназначен для IPv4 и MAC-адресов, использование других сетевых протоколов теоретически возможно. Именно поэтому существуют поля для типа и размера аппаратных и протокольных адресов. Следовательно, общий размер ARP-пакетов также может отличаться. Например, в стандартной ситуации при использовании ARP в сетях IPv4 ethernet длина пакета составляет 224 бита (28 байт). На следующей иллюстрации показаны компоненты одного из таких информационных пакетов:

Заголовок ARP начинается с информационной последовательности длиной 16 бит о специфике аппаратного адреса. В случае предполагаемых устройств ethernet вышеуказанный пакет будет иметь значение 1. Далее следует протокол (также длиной 16 бит), задача которого — служить основой для разрешения адреса ARP. Адреса IPv4 характеризуются значением 0x0800 (2048), которое также используется в кадрах ethernet в качестве значения для протокола IPv4 (EtherType). Следующие два поля содержат информацию о длине двух адресов (в байтах). MAC-адреса имеют размер 6 байт (48 бит) и поэтому обозначаются значением 6. IP-адреса имеют длину 4 байта (32 бита), поэтому по умолчанию используется значение 4.

Следующие 16 бит (операция) зарезервированы для указания ARP-сообщения. Таким образом, 1 означает ARP-запрос, а 2 — ARP-ответ. Наконец, пакеты содержат четыре соответствующих и ранее объявленных адреса:

  • MAC-адрес отправителя: Содержит MAC-адрес запрашивающего компьютера в запросе; в ARP-ответе в этой точке находится физический адрес получателя или адрес следующего шлюза.
  • IP-адрес отправителя: Содержит IP-адрес запрашивающего компьютера (ARP-запрос) или назначения следующего шлюза (ответ).
  • MAC-адрес получателей: В этом поле отображается MAC-адрес, транслируемый FF:FF:FF:FF:FF:FF:FF:FF, если отправитель делает запрос; в ARP-ответе здесь указан аппаратный адрес запрашивающего узла.
  • IP-адрес получателя: В запросе это поле содержит IP-адрес узла, MAC-адрес которого ищется; в ответном сообщении — IP-адрес запрашивающего компьютера.

Конфигурация ARP — как это работает

Как стандартный протокол, протокол разрешения адресов поддерживает кросс-платформенную поддержку и обеспечивает разрешение MAC-адресов в фоновом режиме — будь то система Linux, Windows или MacOS. Кроме того, для различных операционных систем существует одноименный инструмент командной строки, который позволяет отображать кэш ARP, а также добавлять или удалять записи вручную. Для полного обзора возможностей можно открыть командную строку или терминал и ввести команду arp (Windows) или arp-man (Linux).

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

Если вы хотите самостоятельно добавить комбинацию адресов хоста или удалить ее из ARP-таблиц, вам понадобятся параметры -s и -d. Например, если физический адрес 00-aa-00-62-c6-09 находится за IP-адресом 157.55.85.212, создайте соответствующую статическую запись с помощью следующей команды:

arp -a 157.55.85.212 00-aa-00-62-c6-09

Эта информация будет удалена из кэша так же быстро, если вместо этого вы примените параметр «delete» к одному из архивных адресов:

arp -d 157.55.85.212

Вместо конкретного интернет-адреса вы также можете использовать символ * для обозначения всех временно хранимых данных.

Каковы модификации протокола ARP?

Помимо ранее представленной стандартной функции, существует ряд альтернативных вариантов использования пакетов сообщений ARP. Например, хост может использовать его для информирования других участников сети о своем собственном MAC-адресе. Для этого он отправляет ARP-запрос в широковещательную рассылку и вводит свой собственный IP в качестве адреса источника и адреса получателя. Поскольку это делается самостоятельно, такая модификация протокола также называется Gratuitous ARP («незапрашиваемый ARP»). Такое самоинициированное сообщение физического адреса может произойти, например, в следующих случаях:

  1. В силу своей IP-адресации, GARP-сообщения не могут вызывать никакого ответа в теории — в противном случае это означало бы, что IP-адрес, используемый отправителем, дублируется. Если один из хостов, с которыми установлен широковещательный контакт, все равно отвечает ответным сообщением, виноват ли в этом администратор сети.
     
  2. Gratuitous ARP позволяет всем хостам включить аппаратный адрес отправителя в свой собственный кэш. Это особенно выгодно, когда этот адрес изменился, например, из-за замены сетевой карты. Поэтому измененные ARP-сообщения всегда отправляются при загрузке компьютера
     
  3. Серверы, настроенные как запасные в целях защиты от сбоев, часто имеют общий IP-адрес. Для того чтобы трафик данных был перенаправлен на входящий сервер, последний должен объявить MAC-адрес другим хостам. Для этого отлично подходят сообщения GARP.
     
  4. Мобильный IP позволяет мобильному узлу сохранять свой собственный IP-адрес даже при переключении сети. Для этого так называемый HomeAgent принимает на себя IP-адрес мобильного хоста, когда он удаляется из домашней сети.  Чтобы привлечь к себе внимание, он посылает незаслуженное ARP-сообщение. Таким же образом мобильный узел регистрируется обратно, когда он снова оказывается в домашней сети.

Следующей модификацией является протокол обратного разрешения адресов (RARP), который, по сути, инвертирует функцию ARP: он разрешает не IP-адреса в MAC-адреса, а MAC-адреса в IP-адреса. Это возможность определения собственного интернет-адреса с помощью устройств, в которых не предусмотрено выделение или постоянное хранение (например, рабочие станции без жесткого диска).

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

Примечание

Если ARP-сообщениями и ARP-кэшем намеренно манипулируют для получения несанкционированного доступа к конфиденциальным данным, это называется ARP-спуфинг. Как работает этот тип атаки «человек посередине» и какие меры предосторожности следует предпринять, можно узнать из нашего руководства.

Оцените статью
cdelat.ru
Добавить комментарий