ARP
Материал из Википедии — свободной энциклопедии
Название: | Address Resolution Protocol |
---|---|
Уровень (по модели ВОС): | Сетевой |
Семейство: | TCP/IP |
Создан в: | 1982 г. |
Порт/ID: | 0x0806/Ethernet |
Назначение протокола: | Преобразование сетевых адресов в канальные |
Спецификация: | RFC 826 |
Основные реализации (клиенты): | реализации стека TCP/IP в Microsoft Windows, Linux и BSD |
Основные реализации (серверы): | реализации стека TCP/IP в Windows, Linux и BSD |
ARP (англ. Address Resolution Protocol — протокол разрешения адресов) — сетевой протокол, предназначенный для преобразования IP-адресов (адресов сетевого уровня) в MAC-адреса (адреса канального уровня) в сетях TCP/IP. Он определён в RFC 826.
ARP (протокол разрешения адресов) — очень распространённый и чрезвычайно важный протокол. Каждый узел сети имеет два адреса, физический адрес и логический адрес. В сети Ethernet для идентификации источника и получателя информации используются оба адреса. Информация пересылаемая от одного компьютера другому по сети содержит в себе физический адрес отправителя, IP-адрес отправителя, физический адрес получателя и IP-адрес получателя. ARP-протокол обеспечивает связь между этими двумя адресами. Существует четыре типа ARP-сообщений: ARP-запрос (ARP request), ARP-ответ (ARP reply), RARP-запрос (RARP-request) и RARP-ответ (RARP-reply). Локальный хост при помощи ARP-запроса запрашивает физический адрес хоста-получателя. Ответ (физический адрес хоста-получателя) приходит в виде ARP-ответа. Хост-получатель, вместе с ответом, шлет также RARP-запрос, адресованный отправителю, для того, чтобы проверить его IP адрес. После проверки IP адреса отправителя, начинается передача пакетов данных.
Перед тем, как создать подключение к какому-либо устройству в сети, IP-протокол проверяет свой ARP-кеш, чтобы выяснить, не зарегистрирована ли в нём уже нужная для подключения информация о хосте-получателе. Если такой записи в ARP-кеше нет, то выполняется широковещательный ARP-запрос. Этот запрос для устройств в сети имеет следующий смысл: «Кто-нибудь знает физический адрес устройства, обладающего следующим IP-адресом?» Когда получатель примет этот пакет, то должен будет ответить: «Да, это мой IP-адрес. Мой физический адрес следующий: …» После этого отправитель обновит свой ARP-кеш, и будет способен передать информацию получателю. Ниже приведён пример ARP-запроса и ARP-ответа. <см. внизу страницы>
Записи в ARP-кеше могут быть статическими и динамическими. Пример, данный выше, описывает динамическую запись кеша. Хост-отправитель автоматически послал запрос получателю, не уведомляя при этом пользователя. Записи в ARP-кеш можно добавлять вручную, создавая статические записи кеша. Это можно сделать при помощи команды:
arp -s <IP адрес> <MAC адрес>
После того, как IP-адрес прошёл процедуру разрешения адреса, он остаётся в кеше в течение 2-х минут. Если в течение этих двух минут произошла повторная передача данных по этому адресу, то время хранения записи в кеше продлевается ещё на 2 минуты. Эта процедура может повторяться до тех пор, пока запись в кеше просуществует до 10 минут. После этого запись будет удалена из кеша и будет отправлен повторный ARP-запрос.
Содержание |
[править] Вариации ARP-протокола
ARP изначально был разработан не только для IP протокола, но в настоящее время в основном используется для сопоставления IP- и MAC-адресов.
ARP также можно использовать для разрешения MAC-адресов для различных адресов протоколов 3-го уровня (Layer 3 protocols addresses). ARP был адаптирован также для разрешения других видов адресов 2-го уровня (Layer 2 addresses); например, ATMARP используется для разрешения ATM NSAP адресов в Classical IP over ATM протоколе.
[править] Inverse ARP
Inverse Address Resolution Protocol, Inverse ARP или InARP — протокол для получения Layer 3 адреса (например IP адресов) других рабочих станций по Layer 2 адресам (например DLCI в Frame Relay сетях). В основном используется во Frame Relay и ATM сетях.
[править] Сравнение ARP и InARP
ARP переводит Layer 3 адреса в Layer 2 адреса, в то же время InARP можно рассматривать как его инверсию. InARP реализовано как расширение ARP. Форматы пакетов этих протоколов одни и те же, отличаются лишь коды операций и заполняемые поля.
Reverse ARP (RARP), как и InARP, также переводит Layer 2 адреса в Layer 3 адреса. Но RARP используется для получения Layer 3 адресов самих станций отправителей, в то время как в InARP-протоколе отправитель знает свои Layer 2 и Layer 3 адреса, и запрашивает Layer 3 адрес другой станции. От RARP отказались в пользу BOOTP который был в свою очередь заменён DHCP.
[править] Структура пакета
Ниже проиллюстрирована структура пакета, используемого в ARP-запросах и ответах. В сетях Ethernet эти пакеты используют EtherType 0x0806, и рассылаются широковещательно MAC-адрес — FF:FF:FF:FF:FF:FF. Отметим, что в структуре пакета, показанной ниже в качестве SHA, SPA, THA, & TPA условно используются 32-битные слова — реальная длина определяется физическим устройством и протоколом.
|
- Hardware type (HTYPE)
- Каждый транспортный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 1.
- Protocol type (PTYPE)
- Код протокола. Например, для IPv4 будет записано 0x0800.
- Hardware length (HLEN)
- длина физического адреса в байтах. Ethernet адреса имеют длину 6 байт.
- Protocol length (PLEN)
- длина логического адреса в байтах. IPv4 адреса имеют длину 4 байта.
- Operation
- Код операции отправителя: 1 в случае запроса и 2 в случае ответа.
- Sender hardware address (SHA)
- Физический адрес отправителя.
- Sender protocol address (SPA)
- Логический адрес отправителя.
- Target hardware address (THA)
- Физический адрес получателя. Поле пусто при запросе.
- Target protocol address (TPA)
- Логический адрес получателя.
[править] Пример запроса
Если хост с IPv4 адресом 10.10.10.123 и MAC адресом 00:09:58:D8:11:22 хочет послать пакет другому хосту с адресом 10.10.10.140, но не знает его MAC адрес, то он должен послать ARP запрос для разрешения адреса.
Пакет, изображённый ниже, изображает широковещательный запрос. Если хост с IP 10.10.10.140 присутствует в сети и доступен, то он получает этот ARP-запрос и возвращает ответ.
|
[править] Пример ответа
По сценарию, описанному выше, если хост с адресом 10.10.10.140 имеет MAC адрес 00:09:58:D8:33:AA, то он пошлет в ответ пакет, проиллюстрированный ниже. Заметим, что блоки адресов отправителя и получателя теперь поменяли значения (отправитель ответа теперь получатель запроса; получатель ответа — отправитель запроса). Кроме того, хост 10.10.10.140 заполнил свой MAC адрес в поле физического адреса отправителя.
Любой хост в той же сети, что и отправитель с получателем, тоже получат запрос (так как он широковещательный) и таким образом добавят в свой кеш информацию об отправителе. ARP-ответ направлен только источнику ARP-запроса, поэтому ARP-ответ не доступен другим хостам в сети.
|
[править] ARP Оповещение
- Замечание: Длинна полей SHA,SPA,THA,TPA зависит от параметров Hardware length и Protocol length соответственно, в данном случае таблицы не совсем верны, при посылке запроса к станции с неизвестным MAC адресом в поле назначения нужно указывать широковешательный адрес: FF FF FF FF FF FF (-kipish-)
ARP оповещение (ARP Announcement) — это пакет (обычно ARP запрос [1]) содержащий корректную SHA и SPA хоста-отправителя, с TPA равной SPA. Это не разрешающий запрос, а запрос на обновление ARP-кеша других хостов, получающих пакет.
Большинство операционных систем посылают такой пакет при включении хоста в сеть, это позволяет предотвратить ряд проблем. Например при смене сетевой карты (когда необходимо обновить связь между IP и MAC адресами), такой запрос исправит записи в ARP-кеше других хостов в сети.
ARP оповещения также используются для 'защиты' IP адресов в RFC 3927 (Zeroconf) протоколе.
[править] См. также
[править] Внешние ссылки
- ARP Sequence Diagram (pdf)
- RFC 826 — Address Resolution Protocol
- RFC 2390 — Inverse Address Resolution Protocol
- Gratuitous ARP
- ARP Questions and Answers
- Free ARP tools with source code (French)
- ARP-SK ARP traffic generation tools
Это незавершённая статья о компьютерных сетях. Вы можете помочь проекту, исправив и дополнив её. |