ARP — протокол преобразования адресов. Протокол arp

Протокол ARP работает различным образом в зависимости от того, какой протокол канального уровня работает в данной сети - протокол локальной сети (Ethernet, Token Ring, FDDI) с возможностью широковещательного доступа одновременно ко всем узлам сети, или же протокол глобальной сети (X.25, frame relay), как правило не поддерживающий широковещательный доступ.

В локальных сетях протокол ARP использует широковещательные кадры протокола канального уровня для поиска в сети узла с заданным IP-адресом.

Принцип работы:

    Узел, которому нужно выполнить отображение IP-адреса на локальный адрес, формирует ARP запрос, вкладывает его в кадр протокола канального уровня, указывая в нем известный IP-адрес, и рассылает запрос широковещательно.

    Все узлы локальной сети получают ARP запрос и сравнивают указанный там IP-адрес с собственным.

    В случае их совпадения узел формирует ARP-ответ, в котором указывает свой IP-адрес и свой локальный адрес и отправляет его уже направленно, так как в ARP запросе отправитель указывает свой локальный адрес.

Arp-таблица для преобразования адресов

Преобразование адресов выполняется путем поиска в таблице. Эта таблица, называемая ARP-таблицей, хранится в памяти и содержит строки для каждого узла сети.

ARP-таблицы строятся согласно документу RFC-1213 и для каждого IP-адреса содержит четыре кода:

    Ifindex - Физический порт (интерфейс), соответствующий данному адресу;

    Физический адрес - MAC-адрес, например Ethernet-адрес;

    IP-адрес - IP-адрес, соответствующий физическому адресу;

    тип адресного соответствия - это поле может принимать 4 значения: 1 - вариант не стандартный и не подходит ни к одному из описанных ниже типов; 2 - данная запись уже не соответствует действительности; 3 - постоянная привязка; 4 - динамическая привязка;

Примет таблицы для технологии Ethernet:

Ethernet-адрес

08:00:39:00:2F:C3

08:00:5A:21:A7:22

08:00:10:99:AC:5

Принято все байты 4-байтного IP-адреса записывать десятичными числами, разделенными точками. При записи 6-байтного Ethernet-адреса каждый байт указывается в 16-ричной системе и отделяется двоеточием.

ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выбираются независимо, и нет какого-либо алгоритма для преобразования одного в другой.

IP-адрес выбирает менеджер сети. Ethernet-адрес выбирает производитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Когда у машины заменяется плата сетевого адаптера, то меняется и ее Ethernet-адрес.

Arp кэш.

    Эффективность функционирования ARP во многом зависит от ARP кэша (ARP cache), который присутствует на каждом хосте.

    Стандартное время жизни каждой записи в кэше составляет 20 минут с момента создания записи.

Порядок преобразования адресов

В ходе обычной работы сетевая программа, такая как TELNET, отправляет прикладное сообщение, пользуясь транспортными услугами TCP. Модуль TCP посылает соответствующее транспортное сообщение через модуль IP. В результате составляется IP-пакет, который должен быть передан драйверу Ethernet. IP-адрес места назначения известен прикладной программе, модулю TCP и модулю IP. Необходимо на его основе найти Ethernet-адрес места назначения. Для определения искомого Ethernet-адреса используется ARP-таблица.

Как же заполняется ARP-таблица? Она заполняется автоматически модулем ARP, по мере необходимости. Когда с помощью существующей ARP-таблицы не удается преобразовать IP-адрес, то происходит следующее:

    По сети передается широковещательный ARP-запрос.

    Исходящий IP-пакет ставится в очередь.

Каждый сетевой адаптер принимает широковещательные передачи. Все драйверы Ethernet проверяют поле типа в принятом Ethernet-кадре и передают ARP-пакеты модулю ARP. ARP-запрос можно интерпретировать так: "Если ваш IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес". Пакет ARP-запроса выглядит примерно так:

Пример ARP-запроса

Каждый модуль ARP проверяет поле искомого IP-адреса в полученном ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посылает ответ прямо по Ethernet-адресу отправителя запроса. ARP-ответ можно интерпретировать так: "Да, это мой IP-адрес, ему соответствует такой-то Ethernet-адрес". Пакет с ARP-ответом выглядит примерно так:

Пример ARP-ответа

Этот ответ получает машина, сделавшая ARP-запрос. Драйвер этой машины проверяет поле типа в Ethernet-кадре и передает ARP-пакет модулю ARP. Модуль ARP анализирует ARP-пакет и добавляет запись в свою ARP-таблицу.

Обновленная таблица выглядит следующим образом:

Ранее говорилось, что порт или интерфейс, с помощью которого маршрутизатор подключен к сети, рассматривается как часть этой сети. Следовательно, интерфейс маршрутизатора, подключенный к сети, имеет тот же IP-адрес, что и сеть (рис. 6.12). Поскольку маршрутизаторы, как и любые другие устройства, принимают и отправляют данные по сети, они также строят ARP-таблицы, в которых содержатся отображения IP-адресов на МАС-адреса.

Рисунок 6.11. RARP-сервер откликается на IP запрос от рабочей станции с МАС-адресом 08-00-20-67-92-89


Рисунок 6.12. IP-адреса приводятся в соответствие с МАС-адресами с помощью ARP-таблиц.

Маршрутизатор может быть подключен к нескольким сетям или подсетям. Вообще, сетевые устройства имеют наборы только тех МАС- и IP-адресов, которые регулярно повторяются. Короче говоря, это означает, что типичное устройство содержит информацию об устройствах своей собственной сети. При этом об устройствах за пределами собственной локальной сети известно очень мало. В то же время маршрутизатор строит таблицы, описывающие все сети, подключенные к нему. В результате ARP-таблицы маршрутизаторов могут содержать МАС- и IP-адреса устройств более чем одной сети (6.13). Кроме карт соответствия IP-адресов МАС адресам в таблицах маршрутизаторов содержатся отображение портов (рис. 6.14)

Что происходит если пакет данных достигает маршрутизатора, который не подключен к сети назначения пакета? Кроме МАС и IP-адресов устройств тех сетей, к которым подключен данный маршрутизатор, он еще содержит МАС- и IP-адреса других маршрутизаторов. Маршрутизатор использует эти адреса для направления данных конечному получателю (рис.6.15). При получении пакета, адрес назначения которого отсутствует в таблице маршрутизации, маршрутизатор направляет этот пакет по адресам других маршрутизаторов, которые, возможно, содержат в своих таблицах маршрутизации информацию о хост-машине пункта назначения.



Рисунок 6.14. Порты также заносятся в таблицу маршрутизации

Шлюз по умолчанию

Если источник расположен в сети с номером, который отличается от номера сети назначения, и источник не знает МАС-адрес получателя, то для того, чтобы доставить данные получателю, источник должен воспользоваться услугами маршрутизатора. Если маршрутизатор используется подобным образом, то его называют шлюзом по умолчанию (default gateway). Чтобы воспользоваться услугами шлюза по умолчанию, источник инкапсулирует данные, помещая в них в качестве МАС-адреса назначения МАС-адрес маршрутизатора. Так как источник хочет доставить данные устройству, а не маршрутизатору, то в заголовке в качестве IP-адреса назначения используется IP-адрес устройства, а не маршрутизатора (рис. 6.16). Когда маршрутизатор получает данные, он убирает информацию канального уровня, использованную при инкапсуляции. Затем данные передаются на сетевой уровень, где анализируется IP-адрес назначения. После этого маршрутизатор сравнивает IP-адрес назначения с информацией, которая содержится в таблице маршрутизации. Если маршрутизатор обнаруживает отображение IP-адреса пункта назначения на соответствующий МАС-адрес и приходит к выводу, что сеть назначения подключена к одному из его портов, он инкапсулирует данные, помещая в них информацию о новом МАС-адресе, и передает их по назначению.



Рисунок 6.15. Данные переправляются маршрутизатором к пункту их назначения


Рисунок 6.16. Для доставки данных используются IP-адрес пункта назначения

Резюме

  • Все устройства в локальной сети должны следить за ARP-запросами, но только те устройства, чей IP-адрес совпадает с IP-адресом, содержащимся в запросе, должны откликнуться путем сообщения своего MAC-адреса устройству, создавшему запрос.
  • Если IP-адрес устройства совпадает с IP-адресом, содержащимся в ARP-запросе, устройство откликается, посылая источнику свой МАС-адрес. Эта процедура называется ARP-ответом.
  • Если источник не может обнаружить МАС-адрес пункта назначения в своей ARP-таблице, он создает ARP-запрос и отправляет его в широковещательном режиме всем устройствам в сети.
  • Если устройство не знает собственного IP-адреса, оно использует протокол RARP.
  • Когда устройство, создавшее RARP-запрос, получает ответ, оно копирует свой IP-адрес в кэш-память, где этот адрес будет храниться на протяжении всего сеанса работы.
  • Маршрутизаторы, как и любые другие устройства, принимают и отправляют данные по сети, поэтому они также строят ARP-таблицы, в которых содержатся отображения IP-адресов на МАС-адреса.
  • Если источник расположен в сети с номером, который отличается от номера сети назначения, и источник не знает МАС-адрес получателя, то для того, чтобы доставить данные получателю, источник должен использовать маршрутизатор в качестве шлюза по умолчанию.

Глава 7 Топологии

В этой главе:

  • Определение понятия топология
  • Шинная топология, ее преимущества и недостатки
  • Топология "звезда", ее преимуществ и недостатки
  • Внешние терминаторы
  • Активные и пассивные концентраторы
  • Характеристики топологии "расширенная звезда", определение
  • длины кабеля для топологии "звезда" и способы увеличения размеров области охватываемой сетью с топологией "звезда”
  • Аттенюация

Введение

В главе 6, "ARP и RARP”, было рассказано, каким образом устройства в локальных сетях используют протокол преобразования адреса ARP перед отправкой данных получателю. Было также выяснено, что происходит, если устройство в одной сети не знает адреса управления доступом к среде передачи данных (МАС-цреса) устройства в другой сети. В этой главе рассказывается о топологиях, используемых при создании сетей.

Топология

В локальной вычислительной сети (ЛВС) все рабочие станции должны быть соединены между собой Если в ЛВС входит файл-сервер, он также должен быть подключен к рабочим станциям. Физическая схема, которая описывает структуру локальной сети, называется топологией В этой главе описываются три типа топологий шинная, “звезда" и "расширенная звезда" (рис 71 , 72)


Рисунок 7.1. Шинная топология типична для ЛВС Ethernet, включая 10Base2 и 10BaseS


Рисунок 7.2. Топология «звезда» типична для сетей Ethernet и Token Ring, которые используют в качестве центра сети концентратор, коммутатор или повторитель

Шинная топология

Шинная топология представляет собой топологию, в которой все устройства локальной сети подключаются к линейной сетевой среде передачи данных. Такую линейную среду часто называют каналом, шиной или трассой. Каждое устройство, например, рабочая станция или сервер, независимо подключается к общему шинному кабелю с помощью специального разъема (рис. 7.3). Шинный кабель должен иметь на конце согласующий резистор, или терминатор, который поглощает электрический сигнал, не давая ему отражаться и двигаться в обратном направлении по шине.


В TCP/IP не рассматриваются технологии канального и физического уровней, при реальной передаче данных все равно приходится отображать IP адрес на адрес канального уровня.

В сети Ethernet для идентификации источника и получателя информации используются IP и MAC адреса. Информация, пересылаемая от одного компьютера другому по сети, содержит в себе физический адрес отправителя, IP-адрес отправителя, физический адрес получателя и IP-адрес получателя. ARP-протокол обеспечивает связь между этими двумя адресами, поскольку эти два адреса никак друг с другом не связаны.

ARP — протокол разрешения адресов (Address Resolution Protocol) является протоколом третьего (сетевого) уровня модели OSI, используется для преобразования IP-адресов в MAC-адреса, играет важную функцию в множественном доступе сетей. ARP была определена RFC 826 в 1982 году.

Непосредственно связь между IP адресом и MAC адресом осуществляется с помощью так называемых ARP-таблиц, где в каждой строке указывается соответствие IP адреса MAC адресу.

Пример ARP-таблицы в ОС Windowsпредставлен на рисунке.

В ARP-таблице, помимо IP и MAC адреса, еще указывается тип связи, существует два типа записей:

  • Статические записи создаются вручную, они существуют до тех пор, пока компьютер или маршрутизатор остается включенным.
  • Динамические записи должны периодически обновляться. Если запись не обновлялась в течении определенного времени (приблизительно 2 минуты), то она исключается из таблицы. В ARP-таблице содержаться записи не обо всех узлах сети. А только те, которые активно участвуют в сетевых операциях. Такой способ хранения называется ARP-кэшем.

В IPv6 функциональность ARP обеспечивает протокол NDP (Neighbor Discovery Protocol Протокол Обнаружения Соседей).

RARP (англ. Reverse Address Resolution Protocol — Обратный протокол преобразования адресов) — протокол третьего (сетевого) уровня модели OSI, выполняет обратное отображение адресов, то есть преобразует аппаратный адрес в IP-адрес.

Существует четыре типа ARP-сообщений:

  • ARP-запрос(ARPrequest);
  • ARP-ответ(ARP reply);
  • RARP-запрос(RARP-request);
  • RARP-ответ(RARP-reply).

  • Hardware type (HTYPE) Каждый канальный протокол передачи данных имеет свой номер, который хранится в этом поле. Например, Ethernet имеет номер 0x0001
  • 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) Логический адрес отправителя.
  • Targethardwareaddress (THA) Физический адрес получателя. Поле пусто при запросе.
  • Target protocol address (TPA) Логический адрес получателя.

Рассмотрим структуру заголовка ARP запроса (request) на примере перехваченного пакета с помощью сетевого анализатора Wireshark

Рассмотрим структуру заголовка ARP ответа (reply) на примере перехваченного пакета с помощью сетевого анализатора Wireshark

Вас также могут заинтересовать:

Утилита командной строки ARP.EXE используется для отображения и изменения таблиц преобразования IP-адресов в физические (MAC — адреса), используемые протоколом разрешения адресов (Address Resolution Protocol — ARP).

ARP -s inet_addr eth_addr

ARP -d inet_addr

ARP -a [-N if_addr] [-v]

-a Отображает текущие ARP-записи, опрашивая текущие данные протокола. Если задан inet_addr, то будут отображены IP и физический адреса только для заданного компьютера.

Семейка протокола ARP

Если ARP используют более одного сетевого интерфейса, то будут отображаться записи для каждой таблицы.

-g То же, что и параметр -a.

-v Отображает текущие ARP-записи в режиме подробного протоколирования. Все недопустимые записи и записи в интерфейсе обратной связи будут отображаться.

inet_addr Определяет IP-адрес.

-N if_addr Отображает ARP-записи для заданного в if_addr сетевого интерфейса.

-d Удаляет узел, задаваемый inet_addr. Параметр inet_addr может содержать знак шаблона * для удаления всех узлов.

-s Добавляет узел и связывает адрес в Интернете inet_addr c физическим адресом eth_addr. Физический адрес задается 6 байтами (в шестнадцатеричном виде), разделенных дефисом. Эта связь является постоянной

eth_addr Определяет физический адрес.

if_addr Если параметр задан, он определяет адрес интерфейса в Интернете, чья таблица преобразования адресов должна измениться. Если параметр не задан, будет использован первый доступный интерфейс.

В IP-сетях существует три способа отправки пакетов от источника к приемнику:

— одноадресная передача (Unicast );

— широковещательная передача (Broadcast );

При одноадресной передаче поток данных передается от узла-отправителя на индивидуальный IP-адрес узла-получателя.

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

Многоадресная рассылка обеспечивает доставку потока данных группе узлов на IP-адрес группы многоадресной рассылки. Узлы группы могут находиться в данной локальной сети или в любой другой. Узлы для многоадресной рассылки объединяются в группы при помощи протокола IGMP (Internet Group Management Protocol, межсетевой протокол управления группами). Пакеты содержащие в поле назначения заголовка групповой адрес, будут поступать на узлы групп и обрабатываться. Источник многоадресного трафика направляет пакеты многоадресной рассылки не на индивидуальные IP-адреса каждого из узлов-получателей, а на групповой IP-адрес. Групповые адреса определяют произвольную группу IP-узлов, присоединившихся к этой группе и желающих получать адресованный ей трафик. Международное агентство IANA (Internet Assigned Numbers Authority, «Агентство по выделению имен и уникальных параметров протоколов Интернета»), которое управляет назначением групповых адресов, выделило для многоадресной рассылки адреса IPv4 класса D в диапазоне от 224.0.0.0 до 239.255.255.255.

Примеры использования ARP :

arp -a — отобразить таблицу соответствия IP и MAC адресов для данного компьютера.

arp -a | more — то же, что и в предыдущем случае, но с отображением информации в постраничном режиме.

arp -a > macaddr.txt — отобразить таблицу соответствия IP и MAC адресов для данного компьютера с выводом результатов в текстовый файл macaddr.txt .

Пример содержимого таблицы ARP:

Интерфейс: 127.0.0.1 — 0x1

224.0.0.22                                                     статический
224.0.0.251                                                   статический
239.255.255.250                                           статический

Интерфейс: 192.168.1.133 — 0x1c

адрес в Интернете Физический адрес Тип

192.168.1.1                c8-2b-35-9a-a6-1e   динамический
192.168.1.132            00-11-92-b3-a8-0d   динамический
192.168.1.255            ff-ff-ff-ff-ff-ff            статический
224.0.0.22                  01-00-5e-00-00-16   статический
224.0.0.251                01-00-5e-00-00-fb   статический
224.0.0.252                01-00-5e-00-00-fc   статический
239.255.255.250        01-00-5e-7f-ff-fa     статический

В данном примере присутствуют записи ARP для петлевого интерфейса 127.0.0.1 и реального 192.168.1.133 . Петлевой интерфейс не используется для реальной передачи данных и не имеет привязки к аппаратному адресу. Таблица ARP реального интерфейса содержит записи для узлов с адресами 192.168.1.1 и 192.168.1.132 , а также записи для широковещательной (MAC-адрес равен ff-ff-ff-ff-ff-ff) и групповых рассылок (MAC-адрес начинается с 01-00-5e). МАС-адрес групповой рассылки всегда начинается с префикса, состоящего из 24 битов - 01-00-5Е. Следующий, 25-й бит равен 0. Последние 23 бита МАС-адреса формируются из 23 младших битов группового IP-адркса.

arp -s 192.168.1.1 00-08-00-62-F6-19 — добавить в таблицу ARP запись, задающую соответствие IP адреса 192.168.1.1 и физического адреса 00-08-00-62-F6-19

arp -d 192.168.1.1 — удалить из таблицы ARP запись для IP-адреса 192.168.1.1

arp -d 192.168.1.* — удалить из таблицы ARP записи для диапазона IP-адресов 192.168.1.1 — 192.168.1.254

Некоторые замечания по практическому использованию команды ARP:

— разрешение адресов по протоколу ARP выполняется только при операциях передачи данных по протоколу IP .
— время жизни записей в таблице ARP ограничено, поэтому, перед просмотром ее содержимого для конкретного адреса нужно выполнить ping на этот адрес.
— если ответ на ping не приходит, а запись для данного IP-адреса присутствует в таблице ARP, то этот факт можно интерпретировать как блокировку ICMP-пакетов брандмауэром пингуемого узла.
— невозможность подключения к удаленному узлу по протоколам TCP или UDP при наличии записей в таблице ARP для целевого IP, может служить признаком отсутствия служб обрабатывающих входящие подключения, или их блокировки брандмауэром (закрытые порты).
— ARP протокол работает в пределах локального сегмента сети. Поэтому, если выполнить ping на внешний узел (например ping yandex.ru), то в таблице ARP будет присутствовать запись для IP — адреса маршрутизатора, через который выполняется отправка пакета во внешнюю сеть.

Примеры практического использования ARP для сетевой диагностики.

Весь список команд CMD Windows

Протокол ARP

В этом разделе мы рассмотрим то, как при посылке IP-пакета определяется Ethernet-адрес назначения. Для отображения IP-адресов в Ethernet адреса используется протокол ARP (Address Resolution Protocol — адресный протокол). Отображение выполняется только для отправляемых IP-пакетов, так как только в момент отправки создаются заголовки IP и Ethernet.

ARP-таблица для преобразования адресов

Преобразование адресов выполняется путем поиска в таблице. Эта таблица, называемая ARP-таблицей, хранится в памяти и содержит строки для каждого узла сети. В двух столбцах содержатся IP- и Ethernet-адреса. Если требуется преобразовать IP-адрес в Ethernet-адрес, то ищется запись с соответствующим IP-адресом. Ниже приведен пример упрощенной ARP-таблицы.

IP-адрес Ethernet-адрес
223.1.2.1
223.1.2.3
223.1.2.4
08:00:39:00:2F:C3
08:00:5A:21:A7:22
08:00:10:99:AC:54

Табл.1. Пример ARP-таблицы
Принято все байты 4-байтного IP-адреса записывать десятичными числами, разделенными точками. При записи 6-байтного Ethernet-адреса каждый байт указывается в 16-ричной системе и отделяется двоеточием.

ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выбираются независимо, и нет какого-либо алгоритма для преобразования одного в другой. IP-адрес выбирает менеджер сети с учетом положения машины в сети internet. Если машину перемещают в другую часть сети internet, то ее IP-адрес должен быть изменен. Ethernet-адрес выбирает производитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Когда у машины заменяется плата сетевого адаптера, то меняется и ее Ethernet-адрес.

Порядок преобразования адресов

В ходе обычной работы сетевая программа, такая как TELNET, отправляет прикладное сообщение, пользуясь транспортными услугами TCP. Модуль TCP посылает соответствующее транспортное сообщение через модуль IP.

Протокол ARP

В результате составляется IP-пакет, который должен быть передан драйверу Ethernet. IP-адрес места назначения известен прикладной программе, модулю TCP и модулю IP. Необходимо на его основе найти Ethernet-адрес места назначения. Для определения искомого Ethernet-адреса используется ARP-таблица.

Запросы и ответы протокола ARP

Как же заполняется ARP-таблица? Она заполняется автоматически модулем ARP, по мере необходимости. Когда с помощью существующей ARP-таблицы не удается преобразовать IP-адрес, то происходит следующее:

Каждый сетевой адаптер принимает широковещательные передачи. Все драйверы Ethernet проверяют поле типа в принятом Ethernet-кадре и передают ARP-пакеты модулю ARP. ARP-запрос можно интерпретировать так: «Если ваш IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес». Пакет ARP-запроса выглядит примерно так:

Табл.2. Пример ARP-запроса Каждый модуль ARP проверяет поле искомого IP-адреса в полученном ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посылает ответ прямо по Ethernet-адресу отправителя запроса. ARP-ответ можно интерпретировать так: «Да, это мой IP-адрес, ему соответствует такой-то Ethernet-адрес». Пакет с ARP-ответом выглядит примерно так:

Табл.3. Пример ARP-ответа Этот ответ получает машина, сделавшая ARP-запрос. Драйвер этой машины проверяет поле типа в Ethernet-кадре и передает ARP-пакет модулю ARP. Модуль ARP анализирует ARP-пакет и добавляет запись в свою ARP-таблицу.

Обновленная таблица выглядит следующим образом:

IP-адрес Ethernet-адрес
223.1.2.1
223.1.2.2
223.1.2.3
223.1.2.4
08:00:39:00:2F:C3
08:00:28:00:38:A9
08:00:5A:21:A7:22
08:00:10:99:AC:54

Табл.4. ARP-таблица после обработки ответа

Продолжение преобразования адресов

Новая запись в ARP-таблице появляется автоматически, спустя несколько миллисекунд после того, как она потребовалась. Как вы помните, ранее на шаге 2 исходящий IP-пакет был поставлен в очередь. Теперь с использованием обновленной ARP-таблицы выполняется преобразование IPадреса в Ethernet-адрес, после чего Ethernet-кадр передается по сети. Полностью порядок преобразования адресов выглядит так:

  1. По сети передается широковещательный ARP-запрос.
  2. Исходящий IP-пакет ставится в очередь.
  3. Возвращается ARP-ответ, содержащий информацию о соответствии IP- и Ethernet-адресов. Эта информация заносится в ARP-таблицу.
  4. Для преобразования IP-адреса в Ethernet-адрес у IP-пакета, постав ленного в очередь, используется ARP-таблица.
  5. Ethernet-кадр передается по сети Ethernet.

Короче говоря, если с помощью ARP-таблицы не удается сразу осуществить преобразование адресов, то IP-пакет ставится в очередь, а необходимая для преобразования информация получается с помощью запросов и ответов протокола ARP, после чего IP-пакет передается по назначению.

Если в сети нет машины с искомым IP-адресом, то ARP-ответа не будет и не будет записи в ARP-таблице. Протокол IP будет уничтожать IP-пакеты, направляемые по этому адресу. Протоколы верхнего уровня не могут отличить случай повреждения сети Ethernet от случая отсутствия машины с искомым IP-адресом.

Некоторые реализации IP и ARP не ставят в очередь IP-пакеты на то время, пока они ждут ARP-ответов. Вместо этого IP-пакет просто уничтожается, а его восстановление возлагается на модуль TCP или прикладной процесс, работающий через UDP. Такое восстановление выполняется с помощью таймаутов и повторных передач. Повторная передача сообщения проходит успешно, так как первая попытка уже вызвала заполнение ARP-таблицы.

Следует отметить, что каждая машина имеет отдельную ARP-таблицу для каждого своего сетевого интерфейса.

Proxy-ARP — это технология, согласно которой маршрутизатор отвечает на чужой ARP запрос, предназначеный не ему, своим MAC адресом.
При этом отправитель, предполагая что получил в ARP ответе физический адрес получателя, помещает этот MAC адрес в кадр. Таким образом маршрутизатор получает кадр, адресованный ему, но пакет содержит не его IP адрес. Это в свою очередь значит, что пакет предназначен для маршрутизации. Ответный пакет также проходит этап маршрутизации в обратную сторону. Для обеих сторон маршрутизатор является прозрачным.
Возможен случай, когда proxy-arp работает только для одного сегмента сети, а с другой стороны хост знает о существовании маршрутизатора и отправляет пакеты ему сознательно.

Задачи которые позволяет решить эта технология:

  • подключение к сети одного хоста, принадлежащего другой физической сети (другому широковещательному домену)
  • объединение двух широковещательных доменов для общения одноадресными рассылками (unicast), но ограничивая широковещательный трафик между доменами; при этом не прибегая к использованию bridge и брандмауэров.

Понятие Proxy-ARP можно встретить при конфигурации VPN сервера.

В технологии Frame-Relay существует понятие Inverse-ARP. Как и соответствует из названия, этот протокол явзяется обратным ARP.

Address Resolution Protocol

Суть протокола заключается в преобразовании физического адреса в логический, т.е. IP-адрес. В сети Frame-Relay физическим адресом являестя DLCI.

Благодарим за статью: Дмитрия Подгорного

Очистка и удаление кэша ARP

Очистка кэша ARP через командную строку

Когда компьютеры обращаются к информации DNS, найден­ные сопоставления имен и адресов временно сохраняются в кэше ARP (Address Resolution Protocol), чтобы в следующий раз при обращении к той же информации не выполнять поиск заново. Эта информация устаревает в соответствии со значе­нием TTL (Time-To-Live), устанавливаемом при ее получении, и по окончании срока жизни такая информация должна быть обновлена.

После получения новой информации устанавлива­ется новое значение TTL. В общем случае эта автоматическая система получения, очистки и обновления информации о со­поставлениях имен и адресов работает хорошо.

Команда ARP — просмотр и изменение таблиц ARP.

Но иногда ус­таревшая информация успевает вызвать проблемы до того, как она будет сброшена. Так, если на каком-то компьютере изме­няется DNS-имя, а значение TTL еще не обнулялось, вы вре­менно лишаетесь возможности найти этот компьютер.

Удаление старой информации о сопоставлени­ях имен

У администраторов DNS есть в запасе несколько трюков, с помощью которых можно уменьшить негативное влияние сме­ны имен, например задание меньшего значения TTL перед сме­ной имени, чтобы старая информация удалялась быстрее и не вызывала проблем. Однако вы можете обнаружить, что легче просто избавиться от старых данных и заставить компьютер вновь просматривать информацию в DNS.

Для этого введите в командной строке или de­lete arpcache (если контекст Interface IP в Netsh уже установ­лен). В результате будет удалена информация о сопоставлени­ях имен и адресов для всех интерфейсов, настроенных на дан­ном компьютере.

Пример использования очистки кеша arp

Если у вас несколько интерфейсов и вы хо­тите сбросить информацию лишь для одного интерфейса, ука­жите нужный интерфейс через ИмяИнтерфейса, напри­мер:

  • netsh interface ip delete arpcache
  • delete arpcache

ARP (Address Resolution Protocol - протокол разрешения адресов) - протокол сетевого уровня (Network Link layer), предназначенный для преобразования IP- адресов (адресов сетевого уровня) в MAC-адрес- адреса (адреса канального уровня) в сетях TCP/IP. Он определён в RFC 826.

Утилита arp:

    Ключи консольной утилиты arp:arp -a выводит содержимое таблицы ARP. arp выводит ARP-запись для заданного хоста. arp -d удаляет запись, соответствующую хосту.

    Протокол arp

    arp -d-a удаляет все записи таблицы. arp -s добавляет запись. arp -f добавляет записи из файла соответствия .

    В Linux полностью очистить ARP таблицу штатными средствами нельзя. Можно использовать скрипт вида, соответственно видоизменив его под свои нужды ethers.local #!/bin/shI=1while[$I-le254]do arp -d 192.168.1.${I} arp -s 192.168.1.${I}0:0:0:0:0:0I=`expr$I + 1`done arp -f/etc/ethers.local

    Маршрутизация.

    Эта команда для всех пунктов состояния задает failed. В дальнейшем ядро операционной системы удалить помеченные MAC адреса. ip neigh flush all

За публикацию первоначальной статьи, а также всем, кто плюсанул в карму для возможности моей собственноручной публикации. Теперь дополненная версия с учетом пожеланий и дополнений. Добро пожаловать под кат.

Доброго времени суток, дорогие хабраюзеры. Этой статьей я хочу начать цикл повествования о протоколах, которые помогают нам прозрачно, быстро и надежно обмениваться информацией. И начать с протокола ARP.

Как известно, адресация в сети Internet представляет собой 32-битовую последовательность 0 и 1, называющихся IP-адресами. Но непосредственно связь между двумя устройствами в сети осуществляется по адресам канального уровня (MAC-адресам).

Так вот, для определения соответствия между логическим адресом сетевого уровня (IP) и физическим адресом устройства (MAC) используется описанный в RFC 826 протокол ARP (Address Resolution Protocol, протокол разрешения адресов).

ARP состоит из двух частей. Первая – определяет физический адрес при посылке пакета, вторая – отвечает на запросы других станций.

Протокол имеет буферную память (ARP-таблицу), в которой хранятся пары адресов (IP-адрес, MAC-адрес) с целью уменьшения количества посылаемых запросов, следовательно, экономии трафика и ресурсов.

Пример ARP-таблицы.

192.168.1.1 08:10:29:00:2F:C3
192.168.1.2 08:30:39:00:2F:C4

Слева – IP-адреса, справа – MAC-адреса.

Прежде, чем подключиться к одному из устройств, IP-протокол проверяет, есть ли в его ARP-таблице запись о соответствующем устройстве. Если такая запись имеется, то происходит непосредственно подключение и передача пакетов. Если же нет, то посылается широковещательный ARP-запрос, который выясняет, какому из устройств принадлежит IP-адрес. Идентифицировав себя, устройство посылает в ответ свой MAC-адрес, а в ARP-таблицу отправителя заносится соответствующая запись.

Записи ARP-таблицы бывают двух вид видов: статические и динамические. Статические добавляются самим пользователем, динамические же – создаются и удаляются автоматически. При этом в ARP-таблице всегда хранится широковещательный физический адрес FF:FF:FF:FF:FF:FF (в Linux и Windows).

Создать запись в ARP-таблице просто (через командную строку):

arp –s

Вывести записи ARP-таблицы:

arp –a

После добавления записи в таблицу ей присваивается таймер. При этом, если запись не используется первые 2 минуты, то удаляется, а если используется, то время ее жизни продлевается еще на 2 минуты, при этом максимально – 10 минут для Windows и Linux (FreeBSD – 20 минут, Cisco IOS – 4 часа), после чего производится новый широковещательный ARP-запрос.

Сообщения ARP не имеют фиксированного формата заголовка и при передаче по сети инкапсулируются в поле данных канального уровня

Формат сообщения ARP.

  • тип сети (16 бит): для Ethernet – 1 ;
  • тип протокола (16 бит): h0800 для IP ;
  • длина аппаратного адреса (8 бит);
  • длина сетевого адреса (8 бит);
  • тип операции (16 бит): 1 – запрос, 2 - ответ ;
  • аппаратный адрес отправителя (переменная длина);
  • сетевой адрес отправителя (переменная длина);
  • аппаратный адрес получателя (переменная длина);
  • сетевой адрес получателя (переменная длина).

А вот как происходит определение маршрута с участием протокола ARP.

Пусть отправитель A и получатель B имеют свои адреса с указанием маски подсети.

  1. Если адреса находятся в одной подсети, то вызывается протокол ARP и определяется физический адрес получателя, после чего IP-пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу, соответствующему IP-адресу назначения.
  2. Если нет – начинается просмотр таблицы в поисках прямого маршрута.
  3. Если маршрут найден, то вызывается протокол ARP и определяется физический адрес соответствующего маршрутизатора, после чего пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу.
  4. В противном случае, вызывается протокол ARP и определяется физический адрес маршрутизатора по умолчанию, после чего пакет инкапсулируется в кадр канального уровня и отправляется по указанному физическому адресу.

Главным достоинством проткола ARP является его простота, что порождает в себе и главный его недостаток – абсолютную незащищенность, так как протокол не проверяет подлинность пакетов, и, в результате, можно осуществить подмену записей в ARP-таблице (материал для отдельной статьи), вклинившись между отправителем и получателем.

Бороться с этим недостатком можно, вручную вбивая записи в ARP-таблицу, что добавляет много рутинной работы как при формировании таблицы, так и последующем ее сопровождении в ходе модификации сети.

Существуют еще протоколы InARP (Inverse ARP), который выполняет обратную функцую: по заданному физическому адресу ищется логический получателя, и RARP (Reverse ARP), который схож с InARP, только он ищет логический адрес отправителя.

В целом, протокол ARP универсален для любых сетей, но используется только в IP и широковещательных (Ethernet, WiFi, WiMax и т.д.) сетях, как наиболее широко распространенных, что делает его незаменимым при поиске соответствий между логическими и физическими адресами.

P.S. Эту статью писал я сам, никуда не подглядывая, основываясь только на своих знаниях, полученных в ходе изучения сетей.

Если компьютер контактирует с другим аналогичным устройством в той же сети, требуется физический или MAC-адрес. Но поскольку приложение предоставило IP-адрес получателя, ему нужен какой-то механизм для его привязки с MAC-адресом. Это делается по протоколу разрешения адресов (ARP). IP-адрес узла назначения является широковещательным, а узел-получатель сообщает источник его MAC-адреса.

Это значит, что в каждом случае, когда машина A намерена передать пакеты данных устройству B, она вынуждена отправить ARP-пакет для разрешения MAC-адреса B. Следовательно, это слишком сильно увеличивает нагрузку на трафик, поэтому для снижения стоимости связи, компьютеры, которые используют протоколы ARP, сохраняют кеш недавно приобретенных привязок адресов IP_to_MAC, т. е. они не должны повторно использовать этот протокол.

Современный вид

Сегодня используются несколько усовершенствований протокола ARP и его назначения. Так, когда машина A хочет отправить пакеты устройству B, возможно, что B отправит данные для A в скором времени. По этой причине, чтобы избежать ARP для машины B, A должна выполнить привязку адреса IP_to_MAC при запросе MAC-адреса B в специальном пакете.

Поскольку A направляет свой изначальный запрос для MAC-адреса B, каждый компьютер в сети должен извлекать и хранить в своем кеше привязку адреса IP_to_MAC A. Когда в сети появляется новый компьютер (например, при перезагрузке операционной системы), он может транслировать эту привязку, чтобы все остальные машины могли хранить его в своих кешах. Это позволит устранить множество ARP-пакетов всеми другими машинами, когда они хотят общаться с добавленным устройством.

Вариации ARP-протокола

Рассмотрим сценарий, при котором компьютер делает попытку связаться с какой-либо удаленной машиной с помощью программы PING при том, что ранее не было обмена IP-дейтаграммами между этими устройствами, и ARP-пакет должен быть отправлен для идентификации MAC-адреса удаленного компьютера.

Сообщение запроса Address Resolution Protocol (которое выглядит как обращение A.A.A.A к B.B.B.B - IP-адресам) транслируется в локальной сети с использованием протокола Ethernet типа 0x806. Пакет отбрасывается всеми машинами, за исключением целевой, которая отвечает сообщением ответа APR (AAAA - hh: hh: hh: hh: hh: hh где hh: hh: hh: hh: hh: hh - адрес источника Ethernet). Этот ответ является одноадресным для машины с IP-адресом B.B.B.B. Поскольку сообщение запроса протокола APR включало аппаратный адрес (а именно - источника Ethernet) запрашивающего компьютера, целевому устройству не требуется другое сообщение, чтобы понять это.

Взаимосвязь с другими протоколами

Как только вы поймете, для чего нужен протокол ARP, следует рассмотреть его взаимодействие с другими элементами сети.

RARP - это протокол, с помощью которого физическая машина в локальной сети может делать запрос, чтобы узнать свой IP-адрес из таблицы протокола или кэширования сервера шлюза. Это необходимо, так как на устройстве не может присутствовать постоянно установленный диск, где оно может постоянно хранить свой IP-адрес. Сетевой администратор создает таблицу в маршрутизаторе шлюза локальной сети, который сопоставляет адреса физического компьютера (либо управления доступом к среде - MAC) соответствующим «айпи». Когда новая машина настроена, ее клиентская программа RARP запрашивает с сервера RARP на маршрутизаторе для отправки его IP-адрес. Предполагая, что запись была настроена в таблице маршрутизатора, данный сервер RARP вернет «айпи» на компьютер, который может сохранить его для будущего использования. Таким образом, это тоже своеобразный протокол определения адреса.

Механизм в деталях

И машина, выдающая запрос, и сервер, на него отвечающий, использует физические сетевые адреса в процессе их короткой связи. Обычно запрашивающий компьютер не знает его. Таким образом, запрос передается всем машинам в сети. Теперь запросчик должен идентифицировать себя уникально для сервера. Для этого можно использовать либо серийный номер процессора, либо физический сетевой адрес устройства. При этом использование второго в качестве уникального идентификатора обладает двумя преимуществами:

  • Данные адреса всегда доступны и не обязательно связаны с кодом начальной загрузки.
  • Поскольку идентификационная информация зависит от сети, а не от ЦП, все машины в данной сети будут предоставлять уникальные идентификаторы.

Как и сообщение протокола ARP, запрос RARP отправляется с одного компьютера на другой, инкапсулированный в части данных сетевого кадра. Рамка Ethernet, содержащая его, имеет обычную преамбулу, Ethernet-источник и адреса назначения, а также поля типа пакета перед кадром. Кадр кодирует значение 8035, чтобы идентифицировать его содержимое как сообщение RARP. Часть данных кадра включает в себя 28-октетное сообщение.

Отправитель отправляет запрос RARP, который указывает себя как инициатор запроса и целевую машину, и передает свой физический сетевой адрес в поле целевого аппаратного адреса. Все устройства в сети получают запрос, но только те из них, кто уполномочен предоставлять RARP, обрабатывают запрос и отправляют ответ. Такие машины известны неофициально как серверы данного протокола. Для успешной реализации протоколов ARP/RARP сеть должна содержать как минимум один такой сервер.

Они отвечают на запрос, заполняя поле адреса целевого протокола, изменяя тип сообщения от запроса до ответа и отправляя ответ прямо на машину, отправляющую запрос.

Синхронизация транзакций RARP

Поскольку RARP напрямую использует физическую сеть, никакое иное программное обеспечение протокола не должно откликаться на запрос или повторно передавать его. ПО RARP должно выполнять эти задачи. Некоторые рабочие станции, полагающиеся на такой протокол для загрузки, предпочитают повторять попытку до бесконечности, пока не получат ответ. Иные реализации объявляют об отказе после нескольких попыток предотвратить наполнение сети ненужной трансляцией.

Преимущества Mulitple RARP Servers: большая надежность.

Недостаток: перегрузка может возникнуть, когда все серверы ответят.

Таким образом, чтобы избежать недостатков, можно использовать первичный и вторичный серверы. Каждому компьютеру, который запрашивает запрос RARP, назначается первичный сервер. Обычно он отвечает на все позывы, но если он терпит неудачу, тогда запросчик может взять тайм-аут и выполнить ретрансляцию запроса. Если второй сервер получает вторую копию запроса в течение короткого времени первого, он отвечает. Но все же может возникнуть проблема, при которой по умолчанию реагируют все вторичные серверы, тем самым перегружая сеть. Таким образом, проблема состоит в том, чтобы избежать одновременной передачи ответов с обоих серверов. Каждый вторичный сервер, который принимает запрос, вычисляет случайную задержку и затем отправляет ответ.

Недостатки RARP

Поскольку он работает на низком уровне, он требует прямых адресов в сети, что затрудняет работу приложений для создания сервера. Он не полностью использует возможности такой сети, как ethernet, которая применяется для отправки минимального пакета. Поскольку ответ с сервера содержит только одну небольшую часть информации, 32-разрядный интернет-адрес RARP формально описан в RFC903.

ICMP-протокол

В этом протоколе зашифрован механизм, который шлюзы и хосты используют для обмена информацией об управлении или ошибкой. Интернет-протокол обеспечивает надежную службу передачи данных без установления соединения, датаграмма перемещается от шлюза к шлюзу, пока не достигнет того, которое может доставить его непосредственно до конечного пункта назначения.

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

Связующее звено

Протокол управления интернет-протоколом позволяет шлюзам отправлять сообщения об ошибках или управлять сообщениями на другие шлюзы или хосты. ICMP предоставляет связь между программным обеспечением протокола Интернета между компьютерами. Это механизм сообщений так называемого специального назначения, добавленный разработчиками к протоколам TCP/IP. Это позволяет шлюзам в Интернете информировать об ошибках либо направлять информацию о непредвиденных обстоятельствах.

Сам протокол IP не содержит ничего, чтобы помочь подключиться к тестированию отправителя или узнать о сбоях. Отчеты об ошибках и их исправлении сообщаются посредством ICMP только в отношении исходного источника. Он должен связывать ошибки с отдельными прикладными программами и предпринимать действия для устранения проблем. Таким образом, он предоставляет возможность для шлюза сообщать об ошибке. При этом он не полностью определяет действие, которое необходимо предпринять для исправления неполадок.

ICMP ограничивается в связи с исходным источником, но не с промежуточными ICMP-сообщениями. Они отправляются через Интернет в части данных дейтаграммы IP, которая сама перемещается по сети. Именно поэтому они тесно взаимосвязаны с ARP-протоколом. ICMP-сообщения маршрутизируются точно так же, как датаграммы, содержащие информацию для пользователей, не имея при этом дополнительной надежности или приоритета.

Исключение присутствует для процедур обработки ошибок, когда IP-датаграмма, несущая сообщения ICMP, не генерируется для ошибок, которые возникают из дейтаграмм, содержащих сообщения о неполадках.

Формат сообщения ICMP

Оно насчитывает в себе три поля:

  • 8-битное целочисленное поле TYPE, идентифицирующее сообщение;
  • 8-битовое поле CODE, которое предоставляет дополнительную информацию о его типе;
  • 16-разрядное поле CHECKSUM (ICMP использует одну и ту же контрольную сумму алгоритма, которая охватывает только сообщение этого протокола).

Кроме того, сообщения ICMP, информирующие об ошибках, во всех случаях включают в себя заголовок и начальные 64 бита данных дейтаграммы, вызывающих проблему.

Запросы и ответы

Протоколы TCP/IP предоставляют средства, помогающие сетевым менеджерам или пользователям идентифицировать сетевые проблемы. Один из чаще всего используемых инструментов отладки делает вызовы эхо-запроса ICMP и сообщения эхо-ответа. Хост или шлюз отправляет сообщение к определенному пункту назначения.

Любой компьютер, который принимает эхо-запрос, создает ответ, и возвращает его исходному отправителю. Запрос включает в себя необязательную область направляемых данных. Ответ имеет в себе копию данных, отправленных в запросе. Эхо-запрос и отклик, связанный с ним, могут применяться для проверки доступности достижимой цели и отклика.

Поскольку как запрос, так и ответ направляются в IP-датаграммах, успешное его получение подтверждает, что система исправно работает. Для этого должны быть соблюдены следующие условия:

  • IP-программное обеспечение источника должно маршрутизировать датаграмму;
  • Промежуточные шлюзы пунктом назначения и источником должны работать и правильно маршрутизировать дейтаграмму;
  • Должен быть запущен конечный компьютер, и на нем должно работать как программное обеспечение ICMP, так и IP;
  • Маршруты в шлюзах по обратному пути должны быть правильными.

Как это работает?

Работа протоколов ARP и ICMP тесно связана. Всякий раз, когда ошибка предотвращает маршрутизацию или доставку шлюзу датаграммы, он отправляет сообщение о недоступности адресата обратно в исходный код, а затем удаляет датаграмму. Неисправляемые неполадки в сети обычно подразумевают сбои в передаче данных. Поскольку сообщение включает в себя короткий префикс дейтаграммы, вызывавшей проблему, источник точно знает, какой из адресов недоступен. Направление может быть недоступно, поскольку аппаратное обеспечение временно не работает, отправитель сообщил несуществующий адрес назначения или потому, что шлюз не имеет маршрута к целевой сети.

Несмотря на то, что шлюзы отправляют не доходящие сообщения по назначению, если они не могут маршрутизировать или доставлять датаграммы, не все такие ошибки могут быть обнаружены. Если дейтаграмма содержит параметр исходного маршрута с неправильными данными, она может инициировать сообщение об ошибке маршрута источника.