Урок 24. Протокол ARP

Процесс передачи пакетов по сети всегда затрагивает уровни L2 и L3. Причем на каждом уровне любое сетевое устройство использут свой уникальный для данный сети адрес. Для обеспечения взаимодействия устройств и используется Протокол Опеределения  Адреса (Address Resolution Protocol - ARP), который мы и рассмотрим в данной статье.

Рассмотрим процесс передачи пакета по сети от компьютера. Причем путь пролегает через множество маршрутизаторов к другому компьютеру:

Процесс передачи пакетов в сети

 

Чтобы пакет достиг пункта назначения необходимо знать IP адрес получателя и MAC адрес ближайшего маршрутизатора. Да-да, именно ближайшего маршрутизатора, а не конечного получателя. 

Почему нельзя указать MAC адрес получателя? 

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

А зачем тогда нам указывать МАС адрес ближайшего маршрутизатора? 

Если вспомнить модель TCP/IP  и OSI, то любой запрос от одного устройства к другому формируется на одном из верхних уровней. А далее “спускается” вниз и дополняется служебной информацией. На приеме процесс обратный, то есть с самого нижнего уровня пакет “поднимается” наверх, освобождаясь от служебной информации каждого уровня.

Чтобы маршрутизатор мог анализировать и передавать поступившие пакеты, они должны содержать МАС адрес данного маршрутизатора в качестве адреса получателя. Именно при таком условии данные будут приняты, а не отброшены.

Не зная МАС адрес ближайшего маршрутизатора, мы никогда не сможем отправить наши данные получателю. Даже если мы укажем неправильный МАС адрес, то наш пакет никогда не достигнет получателя.

Вернемся к рисунку и посмотрим как будет происходить передача данных от одного маршрутизатора к другому:

Процесс передачи пакетов в сети

 

IP адреса получателя и отправителя всегда остаются неизменными на протяжении всего пути, а МАС адреса меняются на каждом промежуточном пункте. 

А как узнать МАС адрес соседа? 

Как раз для этих целей и используется протокол ARP. ARP (Address Resolution Protocol) работает на канальном уровне.  Например, рассмотрим обычную сеть:

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

 

Чтобы компьютер А передал пакет компьютеру C, нужно узнать МАС адрес компьютера C. Для этого компьютер А просто отправляет широковещательный запрос всем устройствам: “Кому принадлежит IP адрес 192.168.1.30?” MAC и IP адреса получателей имеют широковещательные значения - ff.ff.ff.ff.ff.ff и 192.168.1.255 соответственно:

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

 

Данный запрос получат все устройства в сети, но ответит только то, которое имеет адрес 192.168.1.30. Причем ответит оно уже самому отправителю без широковещательной рассылки.  Из этого ответа мы и узнаем МАС адрес получателя.

Вот как это выглядит в анализаторе Wireshark:

Принцип работы ARP в Wireshark

 

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

Для просмотра таблицы на Windows системах достаточно выполнить команду arp -a, на маршрутизаторах - show arp

Таблица ARP

Таблица ARP