Что такое протокол 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-таблицу.
Обновленная таблица выглядит следующим образом:
ARP
(Address Resolution Protocol
- протокол определения адреса) - протокол в компьютерных сетях, предназначенный для определения MAC адреса по известному IP адресу. В данном примере рассмотрено получение ARP таблицы локального компьютера. Для этого используется свойство «StandardOutput
» из класса «Process
», которое позволяет получить поток, используемый для чтения вывода приложения. В качестве источника вывода данных используется командная строка с запуском команды «arp -a
», которая отображает текущие ARP записи, опрашивая текущие данные протокола. Если ARP используют более одного сетевого интерфейса, то будут отображаться записи для каждой таблицы.
public static StreamReader ExecuteCommandLine(String file, String arguments = "")
{
ProcessStartInfo startInfo = new ProcessStartInfo();
//Задаем значение, указывающее необходимость запускать
//процесс в новом окне.
startInfo.CreateNoWindow = true;
//Устанавливаем скрытый стиль окна. Окно может быть видимым или скрытым.
//Система отображает скрытое окно, не прорисовывая его.
//Если окно скрыто, оно эффективно отключено.
//Скрытое окно может обрабатывать сообщения от системы или
//от других окон, но не может обрабатывать ввод от пользователя
//или отображать вывод. Часто, приложение может держать новое окно
//скрытым, пока приложение определит внешний вид окна, а затем
//сделать стиль окна Normal.
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
//Задаем значение, указывающее, что не нужно использовать
//оболочку операционной системы для запуска процесса.
startInfo.UseShellExecute = false;
//Задаем значение, указывающее необходимость записывать выходные
//данные приложения в поток System.Diagnostics.Process.StandardOutput.
startInfo.RedirectStandardOutput = true;
//Задаем приложение для запуска.
startInfo.FileName = file;
//Задаем набор аргументов командной строки, используемых при
//запуске приложения.
startInfo.Arguments = arguments;
//Задаем предпочтительную кодировку для стандартного вывода.
startInfo.StandardOutputEncoding = Encoding.GetEncoding(866);
//Запускам ресурс процесса, с указанными выше параметрами и связываем
//ресурс с новым компонентом System.Diagnostics.Process.
Process process = Process.Start(startInfo);
//Возвращаем System.IO.StreamReader, который может использоваться
//для чтения потока стандартного вывода приложения.
return process.StandardOutput;
}
Что бы воспользоваться приведенным выше методом и разобрать полученные данные, добавьте приведенный ниже листинг в метод «Form_Load
» главной формы или в метод «Button_Click
» элемента управления «Button
».
//Инициализируем новую таблицу
DataTable dt = new DataTable();
//Создаем три колонки
dt.Columns.Add("Адрес в интернете");
dt.Columns.Add("Физический адрес");
dt.Columns.Add("Тип");
//Заносим в переменную поток данных из консольного приложения
var arpStream = WindowsFormsARPTable.Form1.ExecuteCommandLine("arp", "-a");
//Удаляем первые три строки, т.к они содержат
//пустую строку
//имя интерфейса
//заголовки столбцов
for (int i = 0; i < 3; i++)
{
arpStream.ReadLine();
}
//Циклически проходим по входному потоку
//Пока функция EndOfStream не вернет значение true
//указывающая, что текущая позиция потока
//находится в конце потока
while (!arpStream.EndOfStream)
{
//Получаем одну строку из текущего потока
var line = arpStream.ReadLine().Trim();
//Так как между столбцами есть несколько пробелов
//их необходимо сократить до одного
while (line.Contains(" "))
{
line = line.Replace(" ", " ");
}
//Чтобы распределить полученные данные по столбцам таблицы их
// необходимо разделить с помощью метода Split
// который возвращает массив, элементы которого содержат
//подстроки данного экземпляра, разделенные одним или более
//знаками указанных в его значении.
var parts = line.Split(" ");
//Если значение первого столбца пустое, значит
//данную строку необходимо пропустить
if (parts.Trim() != string.Empty)
{
//Если первое значение не пустое
//создаем строку с использованием трех параметров и
//добавляем его в System.Data.DataRowCollection.
dt.Rows.Add(new object
{
parts.Trim(),
parts.Trim(),
parts.Trim()
});
}
}
Ниже приведен пример работы тестовой программы.
В 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                                                     статический Интерфейс: 192.168.1.133 — 0x1c адрес в Интернете Физический адрес Тип 192.168.1.1                c8-2b-35-9a-a6-1e   динамический В данном примере присутствуют записи 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 для сетевой диагностики. Весь список команд 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-кадр передается по сети. Полностью порядок преобразования адресов выглядит так:
- По сети передается широковещательный ARP-запрос.
- Исходящий IP-пакет ставится в очередь.
- Возвращается ARP-ответ, содержащий информацию о соответствии IP- и Ethernet-адресов. Эта информация заносится в ARP-таблицу.
- Для преобразования IP-адреса в Ethernet-адрес у IP-пакета, постав ленного в очередь, используется ARP-таблица.
- 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.
Для этого введите в командной строке или delete 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-a удаляет все записи таблицы. arp -s
В 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
Иногда интерфейсом выхода является Сеть Ethernet.
Предположим, что сетевая связь между R1 и R2 является каналом Ethernet и что интерфейс FastEthernet 0/1 R1 соединен с этой сетью, как показано на рисунке. Статический маршрут, используя IP-адрес следующего транзитного участка для сети 192.168.2.0/24, может быть установлен, используя эту команду:
R1(config)#ip route 192.168.2.0 255.255.255.0 172.16.2.2
Как обсуждалось в одном из предыдущих постов про "Конфигурирование интерфейса Ethernet", пакет IP должен инкапсулироваться в Кадр Ethernet с целевым MAC-адресом Ethernet. Если пакет должен быть отправлен маршрутизатору следующего транзитного участка, целевой MAC-адрес будет адресом интерфейса Ethernet маршрутизатора следующего транзитного участка. В этом случае целевой MAC-адрес Ethernet будет соответствовать IP-адресу следующего транзитного участка 172.16.2.2. R1 проверяет свою таблицу ARP интерфейса FastEthernet 0/1 на запись с 172.16.2.2 и соответствующим MAC-адресом.
Отправка запроса ARP
Если эта запись не находится в таблице ARP, R1 отправляет запрос ARP через свой интерфейс FastEthernet 0/1. Широковещательная передача Уровня 2 запрашивает, что если у какого-либо устройства имеется IP-адрес 172.16.2.2, чтобы оно ответило своим MAC-адресом. Поскольку у интерфейса FastEthernet 0/1 R2 IP-адрес равен 172.16.2.2, он отсылает ответ ARP назад с MAC-адресом для того интерфейса.
R1 получает ответ ARP и добавляет IP-адрес 172.16.2.2 и соответствующий MAC-адрес к его таблице ARP. Пакет IP теперь инкапсулируется в Кадр Ethernet с целевым MAC-адресом, найденным в таблице ARP. Кадр Ethernet с инкапсулированным пакетом затем отсылается через интерфейс FastEthernet 0/1 к маршрутизатору R2.
В 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