Протокол arp. Протокол ARP и «с чем его едят» (дополнено)

Всем привет! Сегодня я расскажу, как посмотреть 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 адрес.

Любое устройство, подключенное к локальной сети (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).

Если компьютер контактирует с другим аналогичным устройством в той же сети, требуется физический или 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 тесно связана. Всякий раз, когда ошибка предотвращает маршрутизацию или доставку шлюзу датаграммы, он отправляет сообщение о недоступности адресата обратно в исходный код, а затем удаляет датаграмму. Неисправляемые неполадки в сети обычно подразумевают сбои в передаче данных. Поскольку сообщение включает в себя короткий префикс дейтаграммы, вызывавшей проблему, источник точно знает, какой из адресов недоступен. Направление может быть недоступно, поскольку аппаратное обеспечение временно не работает, отправитель сообщил несуществующий адрес назначения или потому, что шлюз не имеет маршрута к целевой сети.

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

Сетевая утилита 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

В 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



В продолжение темы:
Android

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