Что значит arp. Для чего используется протокол arp. Примеры использования ARP

Иногда интерфейсом выхода является Сеть Ethernet.

Предположим, что сетевая связь между R1 и R2 является каналом Ethernet и что интерфейс FastEthernet 0/1 R1 соединен с этой сетью, как показано на рисунке. Статический маршрут, используя IP-адрес следующего транзитного участка для сети 192.168.2.0/24, может быть установлен, используя эту команду:

R1(config)#ip route 192.168.2.0 255.255.255.0 172.16.2.2

Как обсуждалось в одном из предыдущих постов про "Конфигурирование интерфейса Ethernet", пакет IP должен инкапсулироваться в Кадр Ethernet с целевым MAC-адресом Ethernet. Если пакет должен быть отправлен маршрутизатору следующего транзитного участка, целевой MAC-адрес будет адресом интерфейса Ethernet маршрутизатора следующего транзитного участка. В этом случае целевой MAC-адрес Ethernet будет соответствовать IP-адресу следующего транзитного участка 172.16.2.2. R1 проверяет свою таблицу ARP интерфейса FastEthernet 0/1 на запись с 172.16.2.2 и соответствующим MAC-адресом.

Отправка запроса ARP

Если эта запись не находится в таблице ARP, R1 отправляет запрос ARP через свой интерфейс FastEthernet 0/1. Широковещательная передача Уровня 2 запрашивает, что если у какого-либо устройства имеется IP-адрес 172.16.2.2, чтобы оно ответило своим MAC-адресом. Поскольку у интерфейса FastEthernet 0/1 R2 IP-адрес равен 172.16.2.2, он отсылает ответ ARP назад с MAC-адресом для того интерфейса.

R1 получает ответ ARP и добавляет IP-адрес 172.16.2.2 и соответствующий MAC-адрес к его таблице ARP. Пакет IP теперь инкапсулируется в Кадр Ethernet с целевым MAC-адресом, найденным в таблице ARP. Кадр Ethernet с инкапсулированным пакетом затем отсылается через интерфейс FastEthernet 0/1 к маршрутизатору R2.

Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ.

В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом.

Принцип работы:

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

    Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным.

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

Arp-таблица для преобразования адресов

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

ARP-таблицы строятся согласно документу RFC-1213 и для каждого IP-адреса содержит четыре кода:

    Ifindex - Физический порт (интерфейс), соответствующий данному адресу;

    Физический адрес - MAC-адрес, например Ethernet-адрес;

    IP-адрес - IP-адрес, соответствующий физическому адресу;

    тип адресного соответствия - это поле может принимать 4 значения: 1 - вариант не стандартный и не подходит ни к одному из описанных ниже типов; 2 - данная запись уже не соответствует действительности; 3 - постоянная привязка; 4 - динамическая привязка;

Примет таблицы для технологии Ethernet:

Ethernet-адрес

08:00:39:00:2F:C3

08:00:5A:21:A7:22

08:00:10:99:AC:5

Принято все байты 4-байтного IP-адреса записывать десятичными числами, разделенными точками. При записи 6-байтного Ethernet-адреса каждый байт указывается в 16-ричной системе и отделяется двоеточием.

ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выбираются независимо, и нет какого-либо алгоритма для преобразования одного в другой.

IP-адрес выбирает менеджер сети. Ethernet-адрес выбирает производитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Когда у машины заменяется плата сетевого адаптера, то меняется и ее Ethernet-адрес.

Arp кэш.

    Эффективность функционирования ARP во многом зависит от ARP кэша (ARP cache), который присутствует на каждом хосте.

    Стандартное время жизни каждой записи в кэше составляет 20 минут с момента создания записи.

Порядок преобразования адресов

В ходе обычной работы сетевая программа, такая как TELNET, отправляет прикладное сообщение, пользуясь транспортными услугами TCP. Модуль TCP посылает соответствующее транспортное сообщение через модуль IP. В результате составляется IP-пакет, который должен быть передан драйверу Ethernet. IP-адрес места назначения известен прикладной программе, модулю TCP и модулю IP. Необходимо на его основе найти Ethernet-адрес места назначения. Для определения искомого Ethernet-адреса используется ARP-таблица.

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

    По сети передается широковещательный ARP-запрос.

    Исходящий IP-пакет ставится в очередь.

Каждый сетевой адаптер принимает широковещательные передачи. Все драйверы Ethernet проверяют поле типа в принятом Ethernet-кадре и передают ARP-пакеты модулю ARP. ARP-запрос можно интерпретировать так: "Если ваш IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес". Пакет ARP-запроса выглядит примерно так:

Пример ARP-запроса

Каждый модуль ARP проверяет поле искомого IP-адреса в полученном ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посылает ответ прямо по Ethernet-адресу отправителя запроса. ARP-ответ можно интерпретировать так: "Да, это мой IP-адрес, ему соответствует такой-то Ethernet-адрес". Пакет с ARP-ответом выглядит примерно так:

Пример ARP-ответа

Этот ответ получает машина, сделавшая ARP-запрос. Драйвер этой машины проверяет поле типа в Ethernet-кадре и передает ARP-пакет модулю ARP. Модуль ARP анализирует ARP-пакет и добавляет запись в свою ARP-таблицу.

Обновленная таблица выглядит следующим образом:

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

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

Как это работает?

Это означает, что каждый раз, когда машина А хочет послать пакеты данных машине B, A должна послать пакет ARP для запроса MAC-адреса B. Вместе с тем это неизбежно приведет к увеличению нагрузки на сеть и утяжелению трафика.

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

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

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

Пример отображения использования протокола разрешения адресов

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

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

Протокол ARP и его назначение - выводы

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

Протокол восстановления обратного адреса

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

Детальный механизм

И машина, которая выдает запрос, и сервер, который отвечает на него - все они используют физические сетевые адреса во время сеанса связи. Как правило, запрашивающая сторона не знает физический адрес. Таким образом, запрос транслируется на все машины в сети. Затем запрашивающая сторона должна идентифицировать себя по отношению к серверу. Для этого может быть использован серийный номер CPU или физический адрес сетевой машины. При этом использование физического адреса в качестве уникального идентификатора имеет два преимущества.

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

Действие RARP во времени

Так как RARP использует физическую сеть напрямую, никакое другое программное обеспечение протокола не будет отвечать на запрос или ретранслировать его. Программное обеспечение RARP должно единолично справиться с этими задачами. Некоторые рабочие станции, которые полагаются на RARP для загрузки, могут неоднократно повторять попытку неопределенное время, пока не получат ответ. Другие реализации имеют отказ после нескольких попыток, чтобы избежать перегрузки сети ненужными трансляциями.

Протоколы IP/ICMP/ARP

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

Сообщений (ICMP) позволяет шлюзам осуществлять передачу ошибок или управлять сообщениями для других шлюзов или хостов. Таким образом, ICMP обеспечивает связь между протоколами Интернет на обоих соединяемых компьютерах.

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

Протоколы TCP/IP

TCP/IP-протоколы предоставляют средства, способные помочь сетевым администраторам или пользователям идентифицировать проблемы сети. Один из наиболее часто используемых инструментов отладки вызывает запрос ICMP и получает ответное сообщение. В то же время хост или шлюз посылает эхо-сообщение с запросом ICMP на указанный адрес. Любая машина, которая получает эхо-запрос, формулирует отклик и возвращает к исходному отправителю. При этом ответ содержит копию данных, передаваемых в запросе, а также связанный с ними отклик.

Этот протокол может быть использован для проверки того, доступен ли адресат и возможна ли с ним связь. В свою очередь, протоколы ARP - это используемые в дополнение к TCP/IP и необходимые для осуществления корректной связи между устройствами в сети.

Оценка: 4.86 Голосов: 7 Комментарии: 10

Начнем с теории…

Что такое ARP и зачем это нам

ARP (“Address Resolution Protocol” - протокол определения адреса ) - использующийся в компьютерных сетях протокол низкого уровня, предназначенный для определения адреса канального уровня по известному адресу сетевого уровня. Наибольшее распространение этот протокол получил благодаря повсеместности сетей IP, построенных поверх Ethernet, поскольку практически в 100 % случаев при таком сочетании используется ARP.

ARP протокол работает с MAC адресами. Свой индивидуальный MAC адрес есть у каждой сетевой карты.

MAC-адрес (“Media Access Control” - управление доступом к среде ) - это уникальный идентификатор, сопоставляемый с различными типами оборудования для компьютерных сетей. Большинство сетевых протоколов канального уровня используют одно из трёх пространств MAC-адресов, управляемых IEEE: MAC-48, EUI-48 и EUI-64. Адреса в каждом из пространств теоретически должны быть глобально уникальными. Не все протоколы используют MAC-адреса, и не все протоколы, использующие MAC-адреса, нуждаются в подобной уникальности этих адресов.

Рис.1. Путь к ARP таблице.

Рис.2. ARP таблица.

На Рисунке 2 мы видим ARP таблицу. В ней три записи, они добавляются автоматически и имеют следующую структуру. IP Adress – это, собственно, IP адрес компьютера сети, MAC Adress – это mac адрес этого же компьютера, и Interface, который указывает за каким интерфейсом находится данный компьютер. Обратите внимание, что напротив всех записей есть буква D. Она означает то, что эта запись динамическая и будет изменена, если изменятся какие-то данные. То есть, если пользователь случайно введет неправильный IP адрес, то просто изменится запись в ARP таблице и больше ничего. Но нам это не подходит. Нам нужно застраховаться от таких случаев. Для этого в ARP таблицу вносятся статические записи. Как это сделать? Существует два способа.

Рис.3. Добавляем Статическую запись первым способом.

Способ первый. Как обычно нажимаем красный плюс. В появившемся окне вводим IP адрес, MAC адрес и выбираем интерфейс, за которым находится данный компьютер.

Рис.4. Добавляем Статическую запись вторым способом.

Способ второй. Выбираем нужную запись, кликаем два раза левой клавишей мыши, в появившемся окне нажимаем кнопку Make Statik . Статическая запись добавлена.

Рис.5. Таблица со статическими записями.

Как видно на рисунке 5 – напротив добавленной записи отсутствует буква D. Это говорит о том, что запись статическая.

Теперь, если пользователь случайно введет не свой адрес, Mikrotik , проверив соответствие IP и МАС адреса в ARP таблице и, не найдя нужной записи, не даст пользователю выйти в интернет, тем самым наведет пользователя на мысль о том, что он, возможно, был не прав и надо бы позвонить администратору.

Еще на что хотелось бы обратить ваше внимани е: эти записи применяются для пакетов проходящих через router.

Маршрутиза́тор или роутер - сетевое устройство, которое принимает решения о пересылке пакетов сетевого уровня (уровень 3 модели OSI) между различными сегментами сети на основании информации о топологии сети и определённых правил.

Если нужно, чтобы правила применялись к Bridge(бридж), то в Bridge нужно включить функцию Use IP Firewall (рис.6.).

Бридж - это способ соединения двух сегментов Ethernet на канальном уровне, т.е. без использования протоколов более высокого уровня, таких как IP. Пакеты передаются на основе Ethernet-адресов, а не IP-адресов (как в маршрутизаторе). Поскольку передача выполняется на канальном уровне (уровень 2 модели OSI), все протоколы более высокого уровня прозрачно проходят через мост.

Рис.6 . Включение функции Use IP Firewall.

Евгений Рудченко

За публикацию первоначальной статьи, а также всем, кто плюсанул в карму для возможности моей собственноручной публикации. Теперь дополненная версия с учетом пожеланий и дополнений. Добро пожаловать под кат.

Доброго времени суток, дорогие хабраюзеры. Этой статьей я хочу начать цикл повествования о протоколах, которые помогают нам прозрачно, быстро и надежно обмениваться информацией. И начать с протокола ARP.

Как известно, адресация в сети Internet представляет собой 32-битовую последовательность 0 и 1, называющихся IP-адресами. Но непосредственно связь между двумя устройствами в сети осуществляется по адресам канального уровня (MAC-адресам).

Так вот, для определения соответствия между логическим адресом сетевого уровня (IP) и физическим адресом устройства (MAC) используется описанный в RFC 826 протокол ARP (Address Resolution Protocol, протокол разрешения адресов).

ARP состоит из двух частей. Первая – определяет физический адрес при посылке пакета, вторая – отвечает на запросы других станций.

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

Пример ARP-таблицы.

192.168.1.1 08:10:29:00:2F:C3
192.168.1.2 08:30:39:00:2F:C4

Слева – IP-адреса, справа – MAC-адреса.

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

Записи ARP-таблицы бывают двух вид видов: статические и динамические. Статические добавляются самим пользователем, динамические же – создаются и удаляются автоматически. При этом в ARP-таблице всегда хранится широковещательный физический адрес FF:FF:FF:FF:FF:FF (в Linux и Windows).

Создать запись в ARP-таблице просто (через командную строку):

arp –s

Вывести записи ARP-таблицы:

arp –a

После добавления записи в таблицу ей присваивается таймер. При этом, если запись не используется первые 2 минуты, то удаляется, а если используется, то время ее жизни продлевается еще на 2 минуты, при этом максимально – 10 минут для Windows и Linux (FreeBSD – 20 минут, Cisco IOS – 4 часа), после чего производится новый широковещательный ARP-запрос.

Сообщения ARP не имеют фиксированного формата заголовка и при передаче по сети инкапсулируются в поле данных канального уровня

Формат сообщения ARP.

  • тип сети (16 бит): для Ethernet – 1 ;
  • тип протокола (16 бит): h0800 для IP ;
  • длина аппаратного адреса (8 бит);
  • длина сетевого адреса (8 бит);
  • тип операции (16 бит): 1 – запрос, 2 - ответ ;
  • аппаратный адрес отправителя (переменная длина);
  • сетевой адрес отправителя (переменная длина);
  • аппаратный адрес получателя (переменная длина);
  • сетевой адрес получателя (переменная длина).

А вот как происходит определение маршрута с участием протокола ARP.

Пусть отправитель A и получатель B имеют свои адреса с указанием маски подсети.

  1. Если адреса находятся в одной подсети, то вызывается протокол ARP и определяется физический адрес получателя, после чего IP-пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу, соответствующему IP-адресу назначения.
  2. Если нет – начинается просмотр таблицы в поисках прямого маршрута.
  3. Если маршрут найден, то вызывается протокол ARP и определяется физический адрес соответствующего маршрутизатора, после чего пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу.
  4. В противном случае, вызывается протокол ARP и определяется физический адрес маршрутизатора по умолчанию, после чего пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу.

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

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

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

В целом, протокол ARP универсален для любых сетей, но используется только в IP и широковещательных (Ethernet, WiFi, WiMax и т.д.) сетях, как наиболее широко распространенных, что делает его незаменимым при поиске соответствий между логическими и физическими адресами.

P.S. Эту статью писал я сам, никуда не подглядывая, основываясь только на своих знаниях, полученных в ходе изучения сетей.