Loading AI tools
телекомуникационный протокол, который используется для преобразования адреса сетевого уровня в адрес канального уровня Из Википедии, свободной энциклопедии
ARP (англ. Address Resolution Protocol — протокол определения адреса) — протокол в компьютерных сетях, предназначенный для определения MAC-адреса другого компьютера по известному IP-адресу.
Возможно, эта статья содержит оригинальное исследование. |
ARP | |
---|---|
Название | Address Resolution Protocol |
Уровень (по модели OSI) | Канальный |
Семейство | TCP/IP |
Создан в | 1982 |
Порт/ID | 0x0806/Ethernet |
Назначение протокола | Преобразование сетевых адресов в канальные |
Спецификация | RFC 826 |
Основные реализации (клиенты) | реализации стека TCP/IP в Microsoft Windows, Linux и BSD |
Основные реализации (серверы) | реализации стека TCP/IP в Windows, Linux и BSD |
![]() |
Описание протокола было опубликовано в ноябре 1982 года в RFC 826. 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[1].
В более новых операционных системах время хранения записей в таблице ARP и метод хранения выбираются программно и при желании их можно изменить.
ARP изначально был разработан не только для IP, этот протокол также можно использовать для выяснения адресов MAC в различных протоколах 3 уровня (англ. Layer 3 protocols addresses). ARP был адаптирован также для получения других (аппаратных) адресов 2 уровня модели OSI (Layer 2 addresses).
Протоколы InARP и ATM ARP используются в разных вариантах инкапсуляции IP over ATM, описанных в RFC 1577 (Classical IP and ARP over ATM)[2].
В настоящее время ARP в основном используется для сопоставления адресов IP и MAC в сетях ethernet.
Inverse Address Resolution Protocol, Inverse ARP или InARP — протокол для получения адресов сетевого уровня (например адресов IP) других рабочих станций по их адресам канального уровня (например, DLCI в сетях Frame Relay). InARP обычно используется в сетях Frame Relay и ATM.
ARP переводит адреса сетевого уровня в адреса канального уровня, в то же время InARP можно рассматривать как его инверсию. InARP реализовано как расширение ARP. Форматы пакетов этих протоколов одни и те же, различаются лишь коды операций и заполняемые поля.
Reverse Address Resolution Protocol, Reverse ARP или RARP, как и InARP, переводит адреса канального уровня в адреса сетевого уровня. Но RARP используется для получения логических адресов самих станций отправителей, в то время как в InARP-протоколе отправитель знает свои адреса и запрашивает логический адрес другой станции. От RARP отказались в пользу BOOTP, который был в свою очередь заменён DHCP.
Преобразование адресов выполняется путём поиска в таблице соответствия адресов 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. В сетях Ethernet в этих пакетах используется EtherType 0x0806, и запросы рассылаются на широковещательный MAC-адрес — FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже, в качестве SHA, SPA, THA и TPA условно используются 32-битные слова — реальная длина определяется физическим устройством и протоколом.
|
Если хост с 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 не доступен другим узлам в сети.
|
Эффективность функционирования ARP во многом зависит от кэша ARP (ARP cache), который имеется на каждом хосте. В кэше содержится составленная операционной системой таблица соответствия адресов MAC и IP.
Время жизни записи в кэше оставлено на усмотрение разработчика. По умолчанию может составлять от десятков секунд (например, 20 секунд) до четырёх часов (Cisco IOS).[3]
ARP может использоваться для обнаружения конфликтов IP-адресов в локальной сети. RFC 5227 определяет формат запроса ARP Probe с полем SPA, состоящим из всех нулей (адрес IP 0.0.0.0). Перед назначением адреса IP интерфейсу хост может проверить, что этот адрес не используется другим хостом сегмента локальной сети.
ARP-оповещение (ARP Announcement) — это пакет (обычно ARP-запрос[4]), содержащий корректную SHA и SPA хоста-отправителя, с TPA, равной SPA. Это не разрешающий запрос, а запрос на обновление кэша ARP других хостов, получающих пакет.
Большинство операционных систем посылает такой пакет при включении хоста в сеть, что позволяет предотвратить ряд проблем. Например, при смене сетевой карты (когда необходимо обновить связь между адресами IP и MAC), такой запрос исправит записи в кэше ARP других хостов в сети.
ARP-оповещения также используются для «защиты» адресов IP в протоколе Zeroconf, описанном в RFC 3927.
Специальный случай запроса ARP — запрос собственного адреса IP, он получил название «Gratuitous ARP» (добровольный запрос ARP)[5].
В таком запросе адреса IP отправителя и получателя совпадают.
Gratuitous ARP используется в двух целях[5]:
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.