Протоколы ARP и RARP или как узнать MAC-адрес по IP-адресу
Помощь проекту:
WMR: R288272666982
WMZ: Z293550531456
Яндекс.Деньги: 410011531129223
Блог: http://zametkinapolyah.ru/
Полезное в блоге: http://zametkinapolyah.ru/veb-programmirovanie и http://zametkinapolyah.ru/servera-i-protokoly
Паблик блога в ВК: https://vk.com/zametkinapolyah
Мы разобрались с самыми основами протокола IP, теперь давайте разберемся как третий уровень модели OSI взаимодействует со вторым. Или как сетевые устройства по IP-адресу могут узнать физический адрес устройства или MAC-адрес.
Для этих целей есть протокол разрешения адресов или address resolution protocol (ARP). Давайте рассмотрим простой пример, в котором у нас есть локальная сеть с двумя компьютерами, которым нужно общаться между собой. Мы помним, что для общения между узлами локальной сети никакой маршрутизации не используется. И, допустим, наша локальная сеть построена по такой замечательной технологии как Ethernet.
Наши компьютеры знают IP-адреса, но при передачи данных по сетям Ethernet это им не поможет для общения, поскольку для передачи данных в сетях Ethernet IP-адреса не нужны, а нужны физические адреса устройств. Тут в дело включается протокол ARP.
Справа у нас есть пример с двумя узлами, на рисунке вы видите сетевые и физические адреса устройств, давайте поговорим, как по сетевому адресу узел узнает MAC-адрес.
Естественно, делается это при помощи протокола ARP: первый компьютер сгенерирует широковещательный запрос канального уровня, в котором сообщит всем компьютерам своей сети, в котором скажет (для нашего случая) я компьютер с MAC-адресом 00-60-08-52-F9-D8, мой IP-адрес вот такой: 10.0.0.99, хочу узнать MAC-адрес компьютера с IP-адресом 10.0.0.1.
Такое сообщение будет доставлено всем компьютерам из одной сети, но только один компьютер, у которого IP-адрес 10.0.0.1 не проигнорирует это сообщение и даст ответ, указав свой MAC-адрес.
После того, как MAC-адреса двух узлов известны, компьютеры могут установить соединение и общаться по технологии Ethernet, передавая любые данные. Стоит отметить, что протокол ARP стал популярен благодаря тому, что большинство локальных сетей построены по принципу IP поверх Ethernet.
Также стоит заметить, что ARP используется не только для сопоставления IP и MAC адресов, но и для других протоколов второго и третьего уровня. Также существует протокол InARP (In - Inverse), который позволяет узнать адрес третьего уровня по известному адресу второго уровня.
Еще можно упомянуть протокол RARP (первая R – reverse), этот протокол использовался для того чтобы по известному MAC-адресу узнать IP-адрес устройства.
Но тут стоит отметить, что InARP скорее дополняет возможности ARP, а RARP – это скорее устаревший аналог DHCP (про DHCP мы поговорим чуть позже).
Итак, давайте еще раз коротко вспомним алгоритм работы ARP:
Станция, которая хочет передавать по сети Ethernet формирует ARP запрос, в котором указывает информацию о себе, а также указывает IP-адрес узла, чей MAC нужно узнать.
ARP запрос широковещательный, а это означает, что его получат все машины из сети, в которой находится наш узел. И все эти машины сравнят свой IP-адрес с тем адресом, который указан в запросе.
Машина, у которой произойдет совпадение, сформирует ответ, в котором укажет свой MAC-адрес, все остальные машины проигнорируют запрос.
Но тут стоит заметить, что многие узлы не такие «глупые», чтобы каждый раз нагружать сеть и делать широковещательные запросы, перед тем как сделать запрос, машина обратиться к своей ARP-таблице, в которой хранится сопоставление физического и логического адреса, если данные есть в таблице, то никакого запроса в сеть отправлено не будет, но если данных нет, то происходит запрос.
Еще стоит отметить, что протокол ARP кэширует данные. И от того, как настроен кэш зависит эффективность работы протокола. Время жизни ARP кэша может быть несколько секунд, а может быть и несколько часов, всё зависит от разработчика того или иного сетевого устройства. Для большего понимания: если время жизни кэша две минуты, то это означает следующее: если наш узел в течение двух минут не будет обращаться к тому или иному узлу, то данные о сопоставлении будут удалены из кэша.
Отметим, что это далеко не все, что можно рассказать про протокол ARP.