Курс по сетевым технологиям
A A A

 

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




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

 

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

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

 

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

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

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

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

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

 

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

 

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

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




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


 

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

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





 

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

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