Где хранится arp таблица на компьютере

Обновлено: 07.07.2024

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

Два старших бита аппаратного адреса используются для идентификации типа :

- первый бит - одиночный (0) или групповой (1) адрес.

- второй бит - признак универсального (0) или локально администрируемого (1) адреса.

Следующие 22 бита адреса содержат специальный код производителя, обозначаемый как MFG или OUI - универсальный код организации.

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

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

- в сеть отправляется широковещательный запрос (ARP-request), принимаемый всеми сетевыми устройствами. Он содержит IP и Ethernet адреса отправителя, а также, целевой IP-адрес, для которого выполняется определение MAC-адреса.

- каждое устройство, принявшее запрос проверяет соответствие целевого IP-адреса, указанного в запросе, своему собственному IP-адресу. При совпадении, отправителю передается ARP-ответ (ARP-Reply), в котором содержатся IP и MAC адреса ответившего узла. Кадр с ARP-ответом содержит IP и MAC адреса как отправителя, так и получателя-составителя запроса.

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

Формат командной строки ARP:

ARP -s inet_addr eth_addr [if_addr]

ARP -d inet_addr [if_addr]

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

Параметры командной строки ARP:

-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 c физическим адресом eth_addr . Физический адрес задается 6 байтами (в шестнадцатеричном виде), разделенными дефисом. Эта связь является постоянной

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

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

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

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

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

- многоадресная рассылка ( Multicast ).

При одноадресной передаче поток данных передается от узла-отправителя на индивидуальный 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

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

В данном примере присутствуют записи 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 -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.

Как известно, адресация в сети 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 <IP-адрес> <MAC-адрес>

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

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

Область применения: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012

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

Синтаксис

Параметры

Параметр Описание
[/a [<inetaddr>] [/n <ifaceaddr>] Отображает текущие таблицы кэша ARP для всех интерфейсов. Параметр /n учитывает регистр. Чтобы отобразить запись кэша ARP для определенного IP-адреса, используйте ARP/a с параметром инетаддр , где инетаддр — это IP-адрес. Если инетаддр не указан, используется первый подходящий интерфейс. Чтобы отобразить таблицу кэша ARP для определенного интерфейса, используйте параметр /n ифацеаддр в сочетании с параметром /a , где инетаддр — это IP-адрес, назначенный интерфейсу.
[/g [<inetaddr>] [/n <ifaceaddr>] Идентично /a.
[/d <inetaddr> [<ifaceaddr>] Удаляет запись с указанным IP-адресом, где инетаддр — это IP-адрес. Чтобы удалить запись в таблице для определенного интерфейса, используйте параметр ифацеаддр , где ифацеаддр — это IP-адрес, назначенный интерфейсу. Чтобы удалить все записи, используйте подстановочный знак звездочки (*) вместо инетаддр.
[/s <inetaddr> <etheraddr> [<ifaceaddr>] Добавляет статическую запись в кэш ARP, которая разрешает IP-адрес инетаддр с физическим адресом есераддр. Чтобы добавить статическую запись кэша ARP в таблицу для определенного интерфейса, используйте параметр ифацеаддр , где ифацеаддр — это IP-адрес, назначенный интерфейсу.
/? Отображение справки в командной строке.

Remarks

IP-адреса для инетаддр и ифацеаддр выражаются в десятичной нотации.

Физический адрес для есераддр состоит из шести байт, выраженных в шестнадцатеричной нотации и разделенных дефисами (например, 00-AA-00-4F-2A-9C).

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

Примеры

Чтобы отобразить таблицы кэша ARP для всех интерфейсов, введите:

Чтобы отобразить таблицу кэша ARP для интерфейса, которому назначен IP-адрес 10.0.0.99, введите:

Чтобы добавить статическую запись кэша ARP, которая разрешает IP-адрес 10.0.0.80 к физическому адресу 00-AA-00-4F-2A-9C, введите:

p, blockquote 1,0,0,0,0 -->

Протокол ARP

p, blockquote 2,0,0,0,0 -->

Но в реальности данные передаются с помощью какой-нибудь технологии канального уровня, например Ethernet. Коммутаторы Ethernet ничего не знают об IP-адресах и для передачи данных используют MAC-адреса. Следовательно, необходимо средство, которое позволяет по IP-адресу компьютера определить его МАК-адрес.

p, blockquote 3,0,0,0,0 -->

Таблица соответствия ARP

Самое простое средство это таблица соответствия. Мы создаем таблицу, в которой пишем IP-адрес и соответствующий ему MAC-адрес.

p, blockquote 4,0,0,0,0 -->

таблица протокола arp

p, blockquote 5,0,0,0,0 -->

Такое средство действительно используется на практике, например в Linux такая табличка хранится в файле /etc/ethers. Однако в крупной сети такой подход не работает.

p, blockquote 6,0,0,0,0 -->

ARP-запрос

Протокол ARP позволяет автоматически определить МАК-адрес компьютера по его IP-адресу. Протокол работает в режиме запрос-ответ.

p, blockquote 7,0,1,0,0 -->

Компьютер, который хочет узнать МАК-адрес по известному IP-адресу, направляет ARP запрос “У кого IP 192.168.10.43?” Запрос отправляется на широковещательный МАК-адрес (FF:FF:FF:FF:FF:FF).

p, blockquote 8,0,0,0,0 -->


p, blockquote 9,0,0,0,0 -->

И этот запрос получают все компьютеры в сети. Тот компьютер, который узнал в запросе свой IP-адрес подготавливает и отправляет ARP ответ. В ответ включается IP-адрес компьютера (IP:192.168.10.43) и его МАК-адрес (MAC: 54:BE:F7:88:15:47).

p, blockquote 10,0,0,0,0 -->


p, blockquote 11,0,0,0,0 -->

Отправитель ARP запроса получает ответ, извлекает из него МАК-адрес и использует его для передачи данных по технологии канального уровня.

p, blockquote 12,0,0,0,0 -->


p, blockquote 13,0,0,0,0 -->

Формат ARP-запроса

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

p, blockquote 14,0,0,0,0 -->

Формат ARP-запроса

Формат ARP-ответа

Формат ARP ответа точно такой же, только в поле “операция” стоит значение 2 и адрес, который мы ищем находится в поле локальный адрес отправителя.

p, blockquote 16,0,0,0,0 -->


p, blockquote 17,0,0,0,0 -->

Место в модели OSI

В модели взаимодействия открытых систем OSI протокол ARP находится между канальным и сетевым уровнем. Пакеты ARP вкладываются напрямую в кадры Ethernet без IP.

p, blockquote 18,0,0,0,0 -->

ARP в модели OSI

p, blockquote 19,0,0,0,0 -->

Из-за того, что ARP находится ниже сетевого уровня, пакеты ARP не проходят через маршрутизаторы. Таким образом, с помощью ARP можно узнать только МАК-адреса компьютеров, которые находятся в одной подсети, а адреса компьютеров, которые находятся в другой подсети отделенные маршрутизатором узнать нельзя.

p, blockquote 20,0,0,0,0 -->


p, blockquote 21,0,0,0,0 -->

p, blockquote 22,0,0,0,0 -->


p, blockquote 23,0,0,1,0 -->

ARP-таблица

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

p, blockquote 24,0,0,0,0 -->


p, blockquote 25,0,0,0,0 -->

p, blockquote 26,0,0,0,0 -->

Посмотреть ARP таблицу на компьютере можно с помощью команды arp -a.

Оптимизация ARP

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

p, blockquote 28,0,0,0,0 -->

Добровольный ARP-запрос (Gratuitous ARP)

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

p, blockquote 29,0,0,0,0 -->

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

p, blockquote 30,0,0,0,0 -->

Выводы по протоколу ARP

Читайте также: