Протоколы ARP, RARP, ICMP: принцип работы, назначение. ARP — протокол преобразования адресов

05.08.2019 Программы и сервисы

Любое устройство, подключенное к локальной сети (Ethernet, FDDI и т.д.), имеет уникальный физический сетевой адрес, заданный аппаратным образом. 6-байтовый Ethernet-адрес выбирает изготовитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Если у машины меняется сетевой адаптер, то меняется и ее Ethernet-адрес.

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

Протокол ARP (address resolution protocol, RFC-826) решает именно эту проблему - преобразует ARP- в 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-адрес.

Протокол межсетевых управляющих сообщений ICMP (Internet Control Message Protocol) является обязательным стандартом TCP/IP, описанным в документе RFC 792, «Internet Control MessageProtocol (ICMP)». Используя ICMP, узлы и маршрутизаторы, связывающиеся по протоколу IP, могут сообщать об ошибках и обмениваться ограниченной управляющей информацией и сведениями о состоянии.



ICMP-сообщения обычно автоматически отправляются в следующих случаях.

Протокол обмена управляющими сообщениями ICMP (Internet Control Message Protocol) позволяет маршрутизатору сообщить конечному узлу об ошибках, с которыми машрутизаторстолкнулся при передаче какого-либо IP-пакета от данного конечного узла.

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

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

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

Формат ICMP-пакета

ICMP-сообщения инкапсулируются и передаются в IP-датаграммах, как показано на следующем рисунке.

Существует несколько типов сообщений ICMP. Каждый тип сообщения имеет свой формат, при этом все они начинаются с общих трех полей: 8-битного целого числа, обозначающего тип сообщения (TYPE), 8-битного поля кода (CODE), который конкретизирует назначение сообщения, и 16-битного поля контрольной суммы (CHECKSUM). Кроме того, сообщение ICMP всегда содержит заголовок и первые 64 бита данных пакета IP, который вызвал ошибку. Это делается для того, чтобы узел-отправитель смог более точно проанализировать причину ошибки, так как все протоколы прикладного уровня стека TCP/IP содержат наиболее важную информацию для анализа в первых 64 битах своих сообщений.



Прежде всего, TCP и UDP - протоколы. А основное их отличие в том TCP - протокол с гарантированной доставкой пакетов, UDP - нет.

TCP - «гарантированный» транспортный механизм с предварительным установлением соединения, предоставляющий приложению надёжный поток данных, дающий уверенность в безошибочности получаемых данных, перезапрашивающий данные в случае потери и устраняющий дублирование данных. TCP позволяет регулировать нагрузку на сеть, а также уменьшать время ожидания данных при передаче на большие расстояния. Более того, TCP гарантирует, что полученные данные были отправлены точно в такой же последовательности. В этом его главное отличие от UDP.

UDP протокол передачи датаграмм без установления соединения. Также его называют протоколом «ненадёжной» передачи, в смысле невозможности удостовериться в доставке сообщения адресату, а также возможного перемешивания пакетов. В приложениях, требующих гарантированной передачи данных, используется протокол TCP.
UDP обычно используется в таких приложениях, как потоковое видео и компьютерные игры, где допускается потеря пакетов, а повторный запрос затруднён или не оправдан, либо в приложениях вида запрос-ответ (например, запросы к DNS), где создание соединения занимает больше ресурсов, чем повторная отправка.
И TCP, и UDP используют для определения протокола верхнего уровня число, называемое портом.

Rip ospf

В первое время RIP распространялся вместе с операционной системой BSD и не рассматривался в качестве стандарта для Интернет. Однако впоследствии, подобно множеству других служб BSD, он стал критически важным элементом IP-сетей. В настоящее время в документах IETF закреплено две версии RIP: версия 1 (исходная) - в RFC 1058 и версия 2 - в RFC 1722 (Internet Standard 56). Обе они похожи, но между ними имеются некоторые важные различия.

Протокол RIP основан на алгоритме “длины векторов” (distance-vector), который связывает длину маршрута (число переходов - hops) с его вектором (сетью или хостом назначения). Информацию о маршрутах к тем или иным сетям/хостам устройства RIP получают от соседних маршрутизаторов и затем выбирают маршрут с наименьшим числом переходов. Как только маршрут к месту назначения выбран, он сохраняется в локальной базе данных, а информация обо всех остальных маршрутах к тому же месту назначения стирается. Периодически каждый маршрутизатор сообщает остальным об обнаруженных им маршрутах.

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

Протокол OSPF появился как ориентированный на IP-сети вариант протокола IS-IS. Он определен в нескольких документах IETF: в RFC 1131 описан OSPF 1 (устаревшая версия), в RFC 1583, - вероятно, самая распространенная версия OSPF 2, и, наконец, в RFC 2328 определен последний вариант OSPF 2 (Internet Standard 54).

При использовании OSPF на каждом маршрутизаторе содержится независимая база данных по административной области маршрутизации, включающая информацию о доступных сетях, маршрутизаторах и стоимости каждого соединения. Когда состояние сети, маршрутизатора или интерфейса изменяется, каждый обнаруживший это маршрутизатор (в пределах области) вносит информацию в локальную базу данных, а затем соответственно перестраивает карты маршрутизации. Выбор маршрута производится с учетом стоимости всех маршрутов к конкретной точке назначения и напрямую не зависит от числа переходов. Другими словами, для выбора оптимальных маршрутов в OSPF применяется алгоритм “стоимости векторов” (cost vector).

Эта модель предоставляет больше возможностей для улучшения маршрутизации (например, быстрее происходит синхронизация изменений), но требует большей вычислительной мощности и большего объема памяти от участвующих в процессе машин. По этой причине на рынке гораздо шире представлены системы с поддержкой RIP, нежели OSPF. Например, хотя во многих серверных ОС имеются те или иные OSPF-демоны, лишь очень небольшое число сетевых клиентов или устройств низшего класса поддерживают OSPF, поскольку даже для пассивного “прослушивания” приходится снабжать устройство полнофункциональным механизмом анализа базы данных OSPF.

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

Областям присваиваются 32-битовые идентификаторы (обычно они представлены в виде адресов IPv4), магистраль же всегда имеет номер 0. Маршрутизаторы могут одновременно присутствовать в нескольких областях, но для каждой из них они должны хранить отдельную базу данных о состоянии соединений. Согласно терминологии OSPF, маршрутизатор, присутствующий одновременно в нескольких областях, называется ABR (Area Border Router), а маршрутизатор, обменивающийся данными с другим протоколом маршрутизации, - ASBR (Autonomous System Border Router).

Всем привет! Сегодня я расскажу, как посмотреть arp таблицу в Windows. Что такое arp - это протокол распознавания адреса, предназначен для преобразования IP-адресов в MAC-адреса, часто называемые также физическими адресами. Ранее я уже рассказывал, как выглядит arp таблица cisco . Думаю, что многим коллегам, кто только начинает знакомиться с сетевой инфраструктурой данной операционной системы, данная информация окажет хорошее подспорье, для формирования фундамента. Тут главное понимать принцип работы и назначения, все остальное уже нюансы различных вендоров.

Важной особенностью интерфейса Ethernet является то, что каждая интерфейсная карта имеет свой уникальный адрес. Каждому производителю карт выделен свой пул адресов в рамках которого он может выпускать карты. Согласно протоколу Ethernet, каждый интерфейс имеет 6-ти байтовый адрес. Адрес записывается в виде шести групп шестнадцатеричных цифр по две в каждой (шестнадцатеричная записи байта). Первые три байта называются префиксом, и именно они закреплены за производителем. Каждый префикс определяет 224 различных комбинаций, что равно почти 17-ти млн. адресам.

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

Как посмотреть arp таблицу

Вводим команду

Где вы слева видите ip адрес, а правее видите Физический адрес (mac адрес). Это и есть arp таблица windows.

По умолчанию данный кэш живет 300 секунд

очистка arp таблицы

Делается с помощью команды

И видим,произошла очистка arp таблицы

Как добавить свою запись в arp таблицу

Делается это с помощью команды

arp -s 157.55.85.212 00-aa-00-62-c6-09

Увеличиваем время жизни arp записи Windows 7 по 10

Давайте рассмотрим на примере Windows 8.1 как можно увеличить время жизни arp записей, для чего это может быть нужно, ну, чтобы разгрузить сеть лишним трафиком, если у вас в сети мало, что меняется. Делается это все через реестр Windows

Нажимаем Win+R и вводим regedit и переходим в ветку

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Тут вам для изменения периода хранения данных в кэше ARP, нужно создать Параметр DWORD, если у вас разрядность системы 32, то создаем 32, если 64, то такой же.

Задаем имя ArpCacheLife и ставим значение в секундах, после чего нужно перезагрузиться и у вас поменяется время жизни arp записи.

Вот полная справка команды arp

Отображение и изменение таблиц преобразования IP-адресов в физические,
используемые протоколом разрешения адресов (ARP).

ARP -s inet_addr eth_addr
ARP -d inet_addr
ARP -a [-N if_addr] [-v]

  • -a Отображает текущие ARP-записи, опрашивая текущие данные протокола. Если задан inet_addr, то будут отображены IP и физический адреса только для заданного компьютера. Если ARP используют более одного сетевого интерфейса, то будут отображаться записи для каждой таблицы.
  • -g То же, что и параметр -a.
  • -v Отображает текущие ARP-записи в режиме подробного протоколирования. Все недопустимые записи и записи в интерфейсе обратной связи будут отображаться.
    inet_addr Определяет IP-адрес.
  • -N if_addr Отображает ARP-записи для заданного в if_addr сетевого интерфейса.
  • -d Удаляет узел, задаваемый inet_addr. Параметр inet_addr может содержать знак шаблона * для удаления всех узлов.
  • -s Добавляет узел и связывает адрес в Интернете inet_addr с физическим адресом eth_addr. Физический адрес задается 6 байтами (в шестнадцатеричном виде), разделенных дефисом. Эта связь является постоянной eth_addr Определяет физический адрес.
  • if_addr - Если параметр задан, он определяет адрес интерфейса в Интернете, чья таблица преобразования адресов должна измениться. Если параметр не задан, будет использован первый доступный интерфейс.

RARP

Reverse ARP, обратный ARP протокол служит для того, чтобы по имеющемуся MAC адресу узнать IP адрес. Этот протокол используется в бездисковых машинах (https://ru.wikipedia.org/wiki/Бездисковая_рабочая_станция), загружающихся по сети. Первым делом такая машина должна узнать свой IP адрес, и параметры сети, чтобы она могла обратиться по сети, допустим к TFTP серверу, с которого она будет скачивать загрузочную запись. Единственное, что знает о себе эта машина - её MAC адрес.

В 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).

Структура заголовка ARP

  • 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

Утилита командной строки ARP.EXE присутствует во всех версиях Windows и имеет один и тот же синтаксис.

Команда ARP позволяет просматривать и изменять записи в кэш ARP (Address Resolution Protocol - протокол разрешения адресов), который представляет собой таблицу соответствия IP-адресов аппаратным адресам сетевых устройств. Аппаратный адрес - это уникальный, присвоенный при изготовлении, 6-байтный адрес сетевого устройства, например сетевой карты. Этот адрес также часто называют MAC-адресом (Media Access Control - управление доступом к среде) или Ethernet-адресом. В сетях Ethernet передаваемые и принимаемые данные всегда содержат MAC-адрес источника (Source MAC) и MAC-адрес приемника (Destination MAC). Два старших бита MAC-адреса используются для идентификации типа адреса:

  1. первый бит - одиночный (0) или групповой (1) адрес.
  2. второй бит - признак универсального (0) или локально администрируемого (1) адреса.
  3. cледующие 22 бита адреса содержат специальный код производителя MFG или OUI - универсальный код организации.

Другими словами, любое сетевое устройство имеет аппаратный адрес, состоящий из 2- х частей. Старшую часть MAC - адреса, централизованно выделяемую по лицензии каждому производителю сетевого оборудования. Например, 00:E0:4C - для сетевых устройств REALTEK SEMICONDUCTOR CORP. Крупным производителям сетевого оборудования обычно принадлежит несколько диапазонов OUI . И младшую часть MAC-адреса, которая формируется при производстве оборудования, и уникальна для каждого экземпляра устройства.

Любое сетевое устройство имеет аппаратный адрес, состоящий из 2-х частей:

  1. Старшую часть MAC - адреса, централизованно выделяемую по лицензии каждому производителю сетевого оборудования. Например, 00:E0:4C - для сетевых устройств REALTEK SEMICONDUCTOR CORP. Крупным производителям сетевого оборудования обычно принадлежит несколько диапазонов OUI .
  2. Младшую часть MAC-адреса, которая формируется при производстве оборудования, и уникальна для каждого экземпляра устройства.

Отображение IP-адресов (формируемых программным путем), в аппаратные адреса, выполняется с помощью следующих действий:

  1. в сеть отправляется широковещательный запрос (ARP-request), принимаемый всеми сетевыми устройствами. Он содержит IP и Ethernet адреса отправителя, а также, целевой IP-адрес, для которого выполняется определение MAC-адреса.
  2. каждое устройство, принявшее запрос проверяет соответствие целевого IP-адреса, указанного в запросе, своему собственному IP-адресу. При совпадении, отправителю передается ARP-ответ (ARP-Reply), в котором содержатся IP и MAC адреса ответившего узла. Кадр с ARP-ответом содержит IP и MAC адреса как отправителя, так и получателя-составителя запроса.
  3. информация, полученная в ARP-ответе, заносится в ARP-кэш и может использоваться для обмена данными по IP-протоколу для данного узла. ARP-кэш представляет собой таблицу в оперативной памяти, каждая запись в которой содержит IP, MAC и возраст их разрешения. Возраст записи учитывается для того, чтобы обеспечить возможность повторного выполнения процедуры ARP при каком либо изменении соответствия адресов.

Синтаксис ARP.EXE :

arp[-a [-NIfaceAddr]] [-g [-NIfaceAddr]] [-dInetAddr ] [-sInetAddr EtherAddr ]

    1. a[ InetAddr] [ -NIfaceAddr] - ключ -a - отображает текущую таблицу ARP для всех интерфейсов. Для отображения записи конкретного IP-адреса используется ключ -a с параметром InetAdd , в качестве которого указывается IP-адрес. Если узел, отправляющий ARP-запрос имеет несколько сетевых интерфейсов, то для отображения таблицы ARP нужного интерфейса, можно использовать ключ -N с параметром IfaceAddr, в качестве которого используется IP-адрес интерфейса.
    2. g[ InetAddr] [ -NIfaceAddr] - ключ -g идентичен ключу -a.
    3. d InetAddr[ IfaceAddr] - используется для удаления записей из ARP-кэш. Возможно удаление по выбранному IP или полная очистка ARP кэш. Для удаления всех записей, вместо адреса используется символ * Если имеется несколько сетевых интерфейсов, то очистку можно выполнить для одного из них, указав в поле IfaceAddr его IP.
    4. s InetAddr EtherAddr [ IfaceAddr] - используется для добавления статических записей в таблицу ARP. Статические записи хранятся в ARP-кэш постоянно. Обычно, добавление статических записей используется для сетевых устройств, не поддерживающих протокол ARP или не имеющих возможности ответить на ARP- запрос.
    5. /? - получение справки по использованию arp.exe. Аналогично - запуск arp.exe без параметров.

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

  • arp -a - отобразить все записи таблицы ARP.
  • arp -a 192.168.0.9 - отобразить запись, соответствующую IP-адресу 192.168.0.9
  • arp -a 192.168.1.158 -N 192.168.1.1 - отобразить таблицу ARP для адреса 192.168.1.158 на сетевом интерфейсе 192.168.1.1
  • arp -a -N 10.164.250.148 - отобразить все записи таблицы ARP на сетевом интерфейсе 10.164.250.148.
  • arp -s 192.168.0.1 00-22-15-15-88-15 - добавить в таблицу ARP статическую запись, задающую соответствие IP - адреса 192.168.0.1 и MAC-адреса 00-22-15-15-88-15
  • arp -s 192.168.0.1 00-22-15-15-88-15 192.168.0.56 - то же самое, что и в предыдущем случае, но с указанием сетевого интерфейса, для которого выполняется добавление статической записи.
  • arp -d 192.168.1.1 192.168.1.56 удаление записи из таблицы ARP для IP-адреса 192.168.1.1 на сетевом интерфейсе 192.168.1.56
  • arp -d * - полная очистка таблицы ARP. Аналогично - arp -d без параметров. Если имеется несколько сетевых интерфейсов, то очистка может быть выполнена только для одного из них - arp -d * 192.168.0.56.

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

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

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

  1. arp -a | more
  2. arp -a > C:\myarp.txt

Протокол 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-таблицу.

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