Interested Article - ARP
- 2020-05-08
- 1
ARP ( англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса другого компьютера по известному IP-адресу .
Описание протокола было опубликовано в ноябре 1982 года в . ARP был спроектирован для передачи IP-пакетов через пакеты (кадры) Ethernet. Принцип выяснения аппаратного адреса целевого хоста, использованный в ARP, был затем использован в сетях других типов.
Наибольшее распространение ARP получил благодаря повсеместности сетей IP , построенных поверх Ethernet, поскольку в них практически всегда используется ARP. В семействе протоколов IPv6 ARP не существует, его функции возложены на ICMPv6 .
Описание
Рассмотрим суть функционирования ARP на простом примере. Компьютер А (IP-адрес 10.0.0.1) и компьютер Б (IP-адрес 10.22.22.2) соединены сетью Ethernet . Компьютер А желает переслать пакет данных на компьютер Б, IP-адрес компьютера Б ему известен. Однако сеть Ethernet, которой они соединены, не работает с IP-адресами. Поэтому компьютеру А для осуществления передачи через Ethernet требуется узнать адрес компьютера Б в сети Ethernet ( MAC-адрес в терминах Ethernet). Для этой задачи и используется протокол ARP. По этому протоколу компьютер А отправляет широковещательный запрос, адресованный всем компьютерам в одном с ним широковещательном домене . Суть запроса: «компьютер с IP-адресом 10.22.22.2, сообщите свой MAC-адрес компьютеру с МАС-адресом (напр. a0:ea:d1:11:f1:01)». Сеть Ethernet доставляет этот запрос всем устройствам в том же сегменте Ethernet, в том числе и компьютеру Б. Компьютер Б отвечает компьютеру А на запрос и сообщает свой MAC-адрес (напр. 00:ea:d1:11:f1:11) Теперь, получив MAC-адрес компьютера Б, компьютер А может передавать ему любые данные через сеть Ethernet.
Существуют следующие типы сообщений ARP: запрос ARP ( ARP request ) и ответ ARP ( ARP reply ). Система-отправитель при помощи запроса ARP запрашивает аппаратный адрес системы-получателя, который приходит внутри ответа ARP.
Перед тем, как передать пакет сетевого уровня через сегмент Ethernet, проверяет кэш ARP, чтобы выяснить, не зарегистрирована ли уже в его таблице нужная информация об узле-получателе. Если такой записи в кэше ARP нет, то выполняется широковещательный запрос ARP. Этот запрос для устройств в сети имеет следующий смысл: «Кто-нибудь знает физический адрес устройства, обладающего таким-то адресом IP?» Когда хост с этим адресом IP примет такой пакет запроса, он должен ответить: «Да, это мой адрес IP и мой аппаратный адрес такой-то». После этого отправитель запроса сохранит аппаратный адрес получателя в свой кэш ARP и сможет адресно передать информацию получателю.
Ниже приведён пример запроса и ответа ARP. <см. внизу страницы>
Записи в кэше ARP могут быть статическими и динамическими. Пример, данный выше, описывает динамическую запись кэша. Можно также создавать статические записи в таблице В большинстве операционных систем это можно сделать при помощи команды:
-
arp -s <IP-адрес> <MAC-адрес>
В Windows Server 2003 записи в таблице ARP, созданные динамически, остаются в кэше в течение 2 минут. Если в течение этих двух минут произошла повторная передача данных по этому адресу, то время хранения записи в кэше продлевается ещё на 2 минуты. Эта процедура может повторяться несколько раз, но максимум запись в кэше просуществует до 10 минут. После этого запись будет удалена из кэша, и при необходимости будет отправлен повторный запрос ARP .
В более новых операционных системах время хранения записей в таблице ARP и метод хранения выбираются программно и при желании их можно изменить.
Варианты протокола ARP
ARP изначально был разработан не только для IP, этот протокол также можно использовать для выяснения адресов MAC в различных протоколах 3 уровня ( англ. Layer 3 protocols addresses ). ARP был адаптирован также для получения других (аппаратных) адресов 2 уровня модели OSI ( Layer 2 addresses ).
Протоколы InARP и ATM ARP используются в разных вариантах инкапсуляции IP over ATM, описанных в ( Classical IP and ARP over ATM ) .
В настоящее время ARP в-основном используется для сопоставления адресов IP и MAC в сетях ethernet.
Inverse ARP
Inverse Address Resolution Protocol , Inverse ARP или InARP — протокол для получения адресов сетевого уровня (например адресов IP ) других рабочих станций по их адресам канального уровня (например, в сетях Frame Relay ). InARP обычно используется в сетях Frame Relay и ATM .
Сравнение ARP и InARP
ARP переводит адреса сетевого уровня в адреса канального уровня, в то же время InARP можно рассматривать как его инверсию. InARP реализовано как расширение ARP. Форматы пакетов этих протоколов одни и те же, различаются лишь коды операций и заполняемые поля.
RARP
Reverse Address Resolution Protocol , Reverse ARP или RARP , как и InARP , переводит адреса канального уровня в адреса сетевого уровня. Но RARP используется для получения логических адресов самих станций отправителей, в то время как в InARP-протоколе отправитель знает свои адреса и запрашивает логический адрес другой станции. От RARP отказались в пользу BOOTP , который был в свою очередь заменён DHCP .
Принцип работы
- Узел, которому нужно выполнить отображение адреса IP на аппаратный адрес (Ethernet hardware address, MAC-адрес ), формирует запрос ARP с адресом IP получателя, вкладывает его в кадр протокола канального уровня и рассылает его широковещательно.
- Все узлы сегмента локальной сети получают запрос ARP и сравнивают указанный там адрес IP с собственным.
- В случае совпадения собственного адреса IP с полученным в запросе ARP, узел формирует ответ ARP, в котором указывает и свой адрес IP, и свой аппаратный адрес, и отправляет его уже адресно на аппаратный адрес отправителя запроса ARP.
Преобразование адресов выполняется путём поиска в таблице соответствия адресов IP и MAC. Эта таблица, называемая таблицей ARP, хранится в памяти операционной системы и содержит записи для каждого известного ей узла сети. В двух столбцах содержатся адреса IP и Ethernet (MAC). Если требуется преобразовать адрес IP в MAC, то в таблице ARP ищется запись с соответствующим адресом IP.
223.1.2.1 | 08:00:39:00:2F:C3 |
223.1.2.3 | 08:00:5A:21:A7:22 |
223.1.2.4 | 08:00:10:99:AC:54 |
Структура пакета ARP
Ниже проиллюстрирована структура пакета, используемого в запросах и ответах ARP. В сетях Ethernet в этих пакетах используется 0x0806, и запросы рассылаются на широковещательный MAC-адрес — FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже, в качестве SHA, SPA, THA и TPA условно используются 32- битные слова — реальная длина определяется физическим устройством и протоколом.
|
- Hardware type (HTYPE)
- Каждый канальный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 0x0001.
- Protocol type (PTYPE)
- Код сетевого протокола. Например, для IPv4 будет записано 0x0800.
- Hardware length (HLEN)
- Длина физического адреса в байтах. Адреса Ethernet имеют длину 6 байт (0x06).
- Protocol length (PLEN)
- Длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта (0x04).
- Operation
- Код операции отправителя: 0x0001 в случае запроса и 0x0002 в случае ответа.
- Sender hardware address (SHA)
- Физический адрес отправителя.
- Sender protocol address (SPA)
- Логический адрес отправителя.
- Target hardware address (THA)
- Физический адрес получателя. Не требуется при запросе.
- Target protocol address (TPA)
- Логический адрес получателя.
Пример запроса
Если хост с IPv4 адресом 10.10.10.123 и MAC адресом 00:0D:9D:86:59:E2 хочет послать пакет другому хосту с адресом 10.10.10.140, но не знает его MAC адрес, то он должен послать ARP запрос для разрешения адреса.
Пакет, изображённый ниже, изображает широковещательный запрос. Если хост с IP 10.10.10.140 присутствует в сети и доступен, то он получает этот запрос ARP и возвращает ответ.
|
Пример ответа
В ситуации, описанной выше, если узел с адресом 10.10.10.140 имеет адрес MAC 00:09:58:D8:33:AA, то он отправит в ответ пакет, проиллюстрированный ниже. Заметим, что блоки адресов отправителя и получателя теперь поменяли значения (отправитель ответа теперь получатель запроса; получатель ответа — отправитель запроса). Кроме того, в ответе есть MAC-адрес узла 10.10.10.140 в поле физического адреса отправителя (SHA), а поле THA не пустое (одноадресный ответ).
Любой узел в той же сети, что и отправитель с получателем, тоже получит запрос (так как он широковещательный) и таким образом добавит в свой кэш информацию об отправителе. Ответ ARP направлен только источнику запроса ARP, поэтому ответ ARP не доступен другим узлам в сети.
|
- Замечание. Длина полей SHA, SPA, THA, TPA зависит от параметров Hardware length и Protocol length соответственно.
Кэш ARP
Эффективность функционирования ARP во многом зависит от кэша ARP ( ARP cache ), который имеется на каждом хосте. В кэше содержится составленная операционной системой таблица соответствия адресов MAC и IP.
Время жизни записи в кэше оставлено на усмотрение разработчика. По умолчанию может составлять от десятков секунд (например, 20 секунд) до четырёх часов ( Cisco IOS ).
Обнаружение конфликтов адресов (Address Conflict Detection)
ARP может использоваться для обнаружения конфликтов IP-адресов в локальной сети. определяет формат запроса ARP Probe с полем SPA , состоящим из всех нулей (адрес IP 0.0.0.0). Перед назначением адреса IP интерфейсу хост может проверить, что этот адрес не используется другим хостом сегмента локальной сети.
ARP-оповещение (ARP Announcement)
ARP-оповещение ( ARP Announcement ) — это пакет (обычно ARP-запрос ), содержащий корректную SHA и SPA хоста-отправителя, с TPA, равной SPA. Это не разрешающий запрос, а запрос на обновление кэша ARP других хостов, получающих пакет.
Большинство операционных систем посылает такой пакет при включении хоста в сеть, что позволяет предотвратить ряд проблем. Например, при смене сетевой карты (когда необходимо обновить связь между адресами IP и MAC), такой запрос исправит записи в кэше ARP других хостов в сети.
ARP-оповещения также используются для «защиты» адресов IP в протоколе Zeroconf , описанном в .
Добровольный запрос ARP (Gratuitous ARP)
Специальный случай запроса ARP — запрос собственного адреса IP, он получил название « Gratuitous ARP » (добровольный запрос ARP) .
В таком запросе адреса IP отправителя и получателя совпадают.
Gratuitous ARP используется в двух целях :
- оповещение соседних устройств о том, что в сегменте сети появился новый адрес IP;
- проверка свободности адреса IP (используется ли он другим устройством).
См. также
Примечания
Литература
- (англ.) : Address Resolution Protocol
- (англ.) : Classical IP and ARP over ATM
- (англ.) : Inverse Address Resolution Protocol
- (англ.) : IPv4 Address Conflict Detection
Ссылки
- (англ.)
- (англ.) // EventStudio 1.0 documentation. — от 10 ноября 2006 на Wayback Machine
- (фр.)
- (англ.)
- (англ.)
- // ZvonDozvon.ru.
Для улучшения этой статьи
желательно
:
|
- 2020-05-08
- 1