Кто инициирует arp запросы
Перейти к содержимому

Кто инициирует arp запросы

  • автор:

Структура и принцип работы протокола ARP

Маршрутизаторы передают пакеты по какому-либо логическому пути, который состоит из определённого количества каналов передачи данных, “читая” и “взаимодействуя” с сетевыми адресами. Пакеты, инкапсулированные в кадры (фреймы), передаются через канальную среду. Фреймы содержат уникальные идентификаторы канальной среды (например, MAC-адреса) для определения адресата источника и назначения в канальной среде.

Устройствам в канальной среде необходим способ определения идентификаторов канальной среды соседей для того чтобы фреймы могли быть отправлены корректному адресату назначения. Одним из таких механизмов определения для протокола IP версии 4 является протокол ARP — Address Resolution Protocol, описанный в RFC 826.

1. Основы работы протокола ARP

На рисунке 1 изображён процесс работы протокола ARP

Процесс работы протокола ARP

Устройство, которому необходимо узнать идентификатор канальной среды другого устройства, создает пакет ARP Request. Данный запрос содержит в себе IP-адрес устройства для которого необходимо узнать идентификатор канального среды ( Target ), а также данные канальной среды (в данном случае MAC-адрес) и IP-адрес устройства, которое данный запрос сформировало ( Source ).

Пакет ARP Request инкапсулируется в фрейм. В качестве MAC-адреса источника выступает сам источник, в качестве MAC-адреса назначения используется broadcast адрес ( FFFF.FFFF.FFFF ).

Вот как выглядит ARP Request если захватить его с помощью wireshark

ARP Request

Подробно рассмотреть каждое поле запроса ARP можно скачав данный дамп

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

На следующем изображении можно увидеть как выглядит ARP Reply

ARP Reply

Также скачав дамп с трафиком можно более подробно увидеть каждое поле пакета

2. Структура полей протокола ARP

Протокол ARP имеет следующие поля:

Формат протокола ARP

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

Hardware Type — 16-битное поле, определяющее “тип канальной среды”. Наиболее часто используемые типы представлены в таблице ниже

Номер Тип среды
1 Ethernet
15 Frame Relay
17 HDLC
18 Fiber Channel
20 Serial Link

Но основную часть всё же занимает именно Ethernet.

Hardware Type

Protocol Type — 16-битное поле, определяющее протокол сетевого уровня, который отправитель связывает с идентификатором канала передачи данных. Для протокола IP версии 4 значение данного поля равно 0x0800

Protocol Type

Hardware Address Length — 8-битное поле, определяющее длину идентификатора канальной среды в байтах. MAC-адреса имеет длину 48 бит или 6 байт.

Hardware Address Length

Protocol Address Length — 8-битное поле, определяющее длину адреса сетевого уровня в байтах. IP-адреса имеет длину 32 бита или 4 байта.

Protocol Address Length

Operation — 16-битное поле, которое определяет какой тип пакета ARP используется:

  • ARP Request — 1
  • ARP Reply — 2
  • Reverse ARP Request — 3
  • Reverse ARP Reply — 4
  • Inverse ARP Request — 8
  • Inverse ARP Reply — 9

Opcode

Последние 20 байт приходятся на адресацию канальной среды и сетевого уровня источника и назначения запроса (MAC-адрес 6 байт * 2 + IP-адрес 4 байт * 2 = 20)

MAC + IP адреса

3. Практика

Посмотрим небольшую практику на примере следующей схемы:

Схема №1

Для того чтобы отследить пакеты arp на устройствах cisco можно воспользоваться утилитой debug . Для этого необходимо в привилегированном режиме выполнить команду debug arp

Важно: команда debug очень требовательна к ресурсам, следует аккуратно использовать её на производстве. При неаккуратном задании параметров можно потерять доступ к устройству из-за постоянного спама сообщений в консоль.

Для просмотра таблицы ARP на устройствах cisco можно выполнить команду show arp в привилегированном режиме. Для операционной системы Windows можно выполнить команду arp -a , а для Linux команда выглядит arp -vn . Примеры выполнения команд приведены ниже:

Cisco ARP table Windows ARP table Linux ARP table

Стоит обратить внимание на колонку Age в выводе команды на маршрутизаторе. Данная колонка показывает через какое количество времени данная запись будет удалена из таблицы ARP. Это сделано для того чтобы предотвратить перегрузку таблицы ARP устаревшими записями.

По умолчанию устройства cisco хранятся информацию у себя в таблице ARP в течение 4 часов, это можно проверить командой show interface <имя_интерфейса> | include ARP

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

Для очистки ARP кэша можно выполнить команду

В следующий раз я вкратце рассмотрю другие разновидности протокола ARP: Proxy ARP , Gratuitous ARP , Reverse ARP .

«Организация сети и эталонная модель OSI»

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

56. При отправке почтового сообщения с компьютера А на компьютер Б данные необходимо инкапсулировать. Что происходит после преобразования алфавитно-цифровых символов в данные?
Данные сегментируются на меньшие блоки

57. При отправке почтового сообщения с компьютера А на компьютер Б по локальной сети данные необходимо инкапсулировать. Что происходит после создания пакета?
Пакет помещается в кадр

58. Что из приведенного ниже наилучшим образом описывает дейтаграмму?
Пакет сетевого уровня

59. Что из приведенного ниже наилучшим образом описывает функцию уровня представлений?
Он обеспечивает форматирование кода и представление данных

60. Эталонная модель OSI является многоуровневой. Какое из положений неправильно характеризует причину многоуровневости модели?
Многоуровневая модель увеличивает сложность

Name already in use

Computer-networks-lessons-in-Russian / content / pr4-protokol-arp.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Практическая работа №4. Протокол ARP

Цель: понять принцип наполнения таблицы коммутации и работы протокола ARP.

ARP (Address Resolution Protocol) – протокол 3-го уровня, который обеспечивает связность между адресами 2-го и 3-го уровней в сети. Существует 4 типа ARP-сообщений:

  1. Традиционный ARP
  2. Proxy ARP
  3. Gratuitous ARP
  4. ARP probe и ARP Announcement

Данный протокол работает посредством сообщений Ethernet broadcast и Ethernet unicast, называемые ARP-request (-запрос) и ARP-reply (-ответ) соответственно, для выполнения 2 базовых функций:

Определение MAC адреса устройства посредством известного IPv4 адреса.

Наполнение ARP таблицы. По факту, в ARP таблице содержатся IP-адреса устройств и соответствующие им MAC-адреса.

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

Proxy ARP

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

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

ARP probe и ARP Announcement

Этот тип ARP-сообщений используется для процесса обнаружения дубликатов адресов в сети (Duplicate Address Detection). Они часто называется самообращенными (gratuitous), т.к. процесс передачи этих сообщений не инициирован другими каким-либо запросом в сети, но все же являеются самостоятельным типом сообщений из-за наличия отличного значения в поле OpCode в теле ARP-пакета. Когда возникает необходимость в проверке занятости какого-либо адреса в сети (например, при работе DHCP), хост отправляет несколько (обычно 3) Probe-сообщений, где MAC-адрес получателя — 0000.0000.0000 , IP-адрес получателя — интересуемый адрес. «Нулевой» MAC использован для избежания неправильного маппинга в ARP-таблицах хостов, в случае наличия дубликата адреса в сети. Если ответ не пришел, он отправляет Announcement, объявляя адрес своим.

Наполнение таблицы коммутации

Для успешного процесса коммутации, коммутатору необходимо знать какие сетевые устройства доступны и через который порт. Подобные записи хранятся в так называемой таблице коммутации (MAC address table), где в качестве основных полей выступают MAC адреса устройств и порты, через которые они доступны. В процессе работы коммутатором из заголовка извлекается адрес получателя, проверяется таблица MAC-адресов на предмет совпадения и, как только оно найдено, кадр без изменений отправляется в указанный порт. Если же адрес отсутствует в таблице или кадр пришёл широковещательный, то он направляется на все порты, кроме того, откуда пришёл. Далее, при ответе адресата, его адрес коммутатор добавит в таблицу вместе с портом получения, если таковой записи не было ранее.

Для выполнения работы, соберите сеть как на рисунке ниже:

pk4topo.png

Для пошагового отслеживания сообщений в сети, в PacketTracer** нужно переключиться из режима RealTime в Simulation ** (в правом нижнем углу окна). В поле фильтров выбрать только ICMP и ARP пакеты. В реальной сети для подобного анализа используется ПО WireShark.

Протокол ARP и «с чем его едят» (дополнено)

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

Доброго времени суток, дорогие хабраюзеры. Этой статьей я хочу начать цикл повествования о протоколах, которые помогают нам прозрачно, быстро и надежно обмениваться информацией. И начать с протокола 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 <IP-адрес> <MAC-адрес>

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

После добавления записи в таблицу ей присваивается таймер. При этом, если запись не используется первые 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 и т.д.) сетях, как наиболее широко распространенных, что делает его незаменимым при поиске соответствий между логическими и физическими адресами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *