Протоколы сетевого уровня arp

Протокол ARP¶

Служебный протокол канального уровня. Вспомогательный протокол, предназначен для установления MAC адреса при известном ip устройства в броадкаст домене. Либо при определении MAC адреса шлюза, для отправки кадра на dgw при маршрутизации. Возможны варианты PROXY-ARP, Gratuitous ARP, но тут их пока рассматривать не буду, тут просто рассмотрю совсем базовые вещи. По сути, MAC адрес необходим для дальнейшей формирования кадра для его дальнейшей коммутации или маршрутизации.

Алгоритм работы ARP протокола:¶

  • ARP-request — Запрашививается MAC адрес по известному ip адресу, при этом сообщаются «реквизиты отправителя» (mac и ip адрес отправителя)
  • ARP-reply — Тот ip адрес(хотя и не всегда), которому отправлялся запрос отвечает отправителю ARP-запроса и сообщает свой MAC адрес.

Аналогия Проведу небольшую аналогию.

«Аналогия ARP-request»: «Эй, Я Иванов, мой номер телефона 232-323. Скажи, Козлов, какой у тебя номер телефона?», кричит Иванов в большой комнате.

«Аналогия ARP-reply»: «эй Иванов, Я Козлов, мой номер телефона 323-232», кричит Козлов Иванову.

  • большая комната — броадкаст домен
  • Фамилия: Иванов — это ip адрес отправителя
  • Фамилия: Козлов — это ip адрес получателя
  • номера телефонов — это MAC адреса.

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

ARP-request¶

Запрос MAС адреса, соответствующий определенному ip адресу.

Заголовок кадра (L2)¶

При запросе о МАС адресе отправляется ARP запрос, где в заголовке кадра указывается:

  • DA: броадкаст MAC адрес (ff:ff:ff:ff:ff:ff) — адрес назначения (всем)
  • SA: MAС адрес источника (60:a4:4c:a9:b4:b0) — в данном случае
  • Type: 0x806 — это номер, который означает ARP протокол.

В поле «Type» указывается,какой протокол находится на следующем(сетевом) уровне.

Протокол ARP (L3-L7)¶

Собственно как такового «классического» заголовка Layer 3 у ARP-a нет, а сразу идет сам ARP протокол.

В данном случае ARP-request

Общий формат ARP протокола¶

1. Hardware type¶

тип протокола канального уровня

В нашем случае, Hardware type = 1 — это номер, соответствующий протоколу Ethernet.

2. Protocol type¶

тип протокола сетевого уровня

В нашем случае, Protocol type = 0x0800 - это номер, соответствующий ipv4. 
3. Hardware size¶

Размер адреса канального уровня

В нашем случае, Hardware size - это MAC адрес, соответственно это  
4. Protocol size¶

Размер адреса сетевого уровня

В нашем случае, Protocol size - это ipv4 адрес, соответственно это  
5. Opcode¶
6. Sender MAC Address¶
7. Sender IP Address¶
8. Target MAC Address¶
9. Target IP address¶
В данном случае это адрес  

ARP-reply¶

Заголовок кадра (L2)¶

При запросе о МАС адресе отправляется ARP запрос, где в заголовке кадра указывается:

  • DA: MAC адрес назначения (60:a4:4c:a9:b4:b0) - адрес назначения, тому кто отправлял ARP запрос
  • SA: MAС адрес источника (00:00:5e:00:01:01)
  • Type: 0x806 - это номер, который означает ARP протокол.

В поле "Type" указывается, какой протокол находится на следующем(сетевом) уровне.

Протокол ARP (L3-L7)¶

1. Hardware type¶

тип протокола канального уровня

2. Protocol type¶

тип протокола сетевого уровня

3. Hardware size¶

Размер адреса канального уровня

В нашем случае, Hardware size - это MAC адрес, соответственно это  
4. Protocol size¶

Размер адреса сетевого уровня

В нашем случае, Protocol size - это ipv4 адрес, соответственно это  
5. Opcode¶
6. Sender MAC Address¶
7. Sender IP Address¶
8. Target MAC Address¶
9. Target IP address¶
Padding¶

Заполнитель, в данном случае равен 18 byte - используется для увеличения кадра до минимальной длины 64 byte Т.е. размер кадра равен:

  • заголовoк кадра = 14 bytes
  • ARP = 28 bytes
  • Padding = 18 bytes
  • FCS - frame control summ = 4 bytes
  • ИТОГО = 64 bytes

Примечание: FCS - не показывается при дампе.

По Итогу¶

В конечном счете отправитель узнает MAC адрес на который ему нужно будет отправлять и использует в дальнейшем для формирования заголовка кадра, который отправляется на известный ip адрес

на обоих Хостах добавляются ARP-записи, об изученной связке MAC-IP в ARP таблицу вида:

Пример 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-таблицы:

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

Источник

Читайте также:  Топология сети 4 буквы
Оцените статью
Adblock
detector