Назначение аппаратных адресов.
Каждое устройство, предназначенное для работы в локальной сети, должно иметь уникальный аппаратный адрес, присвоенный разработчиком. Для устройств локальных сетей Ethernet и Token Ring этот адрес называется адресом уровня управления доступом к среде передачи (media access control address, MAC-адрес).
Каждый такой аппаратный адрес идентифицирует устройство в физической сети с помощью 6-байтового числа, записанного в ПЗУ физического устройства, например сетевого адаптера. Аппаратные адреса обычно представляются в шестнадцатеричном формате, например 00-AA-00-3F-89-4A.
Регистрацией и выделением аппаратных адресов занимается институт IEEE (Institute of Electrical and Electronics Engineers). В настоящее время IEEE регистрирует и назначает отдельным изготовителям уникальные числа для первых трех байтов аппаратного адреса. Последние три байта аппаратного адреса каждый изготовитель назначает сетевым адаптерам самостоятельно.
Преобразование аппаратных адресов для локального трафика.
На рис. 1 показано, как протокол ARP преобразует IP-адреса в аппаратные адреса узлов, расположенных в той же локальной сети.
Рис. 1. Преобразование аппаратных адресов для локального трафика
в протоколе ARP.
В этом примере два узла TCP/IP — узлы A и B — расположены в одной физической сети. Узел A имеет IP-адрес 10.0.0.99, а узел B — 10.0.0.100.
Когда узел A пытается соединиться с узлом B, для преобразования программного адреса узла B (10.0.0.100) в его аппаратный адрес выполняются следующие действия:
1. На основании содержимого таблицы маршрутизации узла A, протокол IP определяет, что для того, чтобы пакеты достигали узла B, их нужно отправить по IP-адресу 10.0.0.100. Затем узел A ищет в своем локальном кэше ARP соответствующий аппаратный адрес узла B.
2. Если узел A не может найти в кэше нужного адреса, он отправляет широковещательный ARP-запрос всем узлам локальной сети с вопросом «Какой аппаратный адрес соответствует IP-адресу 10.0.0.100?». Этот ARP-запрос содержит в себе программный (IP) и аппаратный адреса источника — узла A. Каждый узел локальной сети получает ARP-запрос и проверяет, не соответствует ли его IP-адрес IP-адресу, указанному в запросе. Если IP-адрес узла не совпадает с указанным в запросе IP-адресом, узел отбрасывает ARP-запрос.
3. Узел B определяет, что IP-адрес, указанный в ARP-запросе, соответствует его IP-адресу, и добавляет сопоставление программного и аппаратного адресов узла A в свой локальный кэш ARP.
4. Узел B отправляет ARP-ответ, содержащий его аппаратный адрес, непосредственно узлу A.
5. Когда узел A получает ARP-ответ от узла B, он заносит в свой кэш ARP сопоставление программного и аппаратного адресов узла B.
Когда аппаратный адрес узла B будет определен, узел A сможет отправлять IP-трафик узлу B по аппаратному адресу последнего.
Преобразование аппаратных адресов для удаленного трафика.
Протокол ARP также используется для перенаправления на локальные маршрутизаторы тех IP-дейтаграмм, которые предназначены для узлов, расположенных вне локальной сети. В таком случае протокол ARP определяет аппаратный адрес интерфейса маршрутизатора этой локальной сети.
На рис. 2 показано, как протокол ARP преобразует IP-адреса в аппаратные адреса двух узлов, которые находятся в различных физических сетях, соединенных общим маршрутизатором.
Рис. 2. Преобразование аппаратных адресов для удаленного трафика в протоколе ARP.
В этом примере узел A имеет IP-адрес 10.0.0.99, а узел B — 192.168.0.99. Первый интерфейс маршрутизатора находится в той же физической сети, что и узел A, и имеет IP-адрес 10.0.0.1. Второй интерфейс маршрутизатора находится в той же физической сети, что и узел В, и имеет IP-адрес 192.168.0.1.
Когда узел A пытается соединиться с узлом B, для преобразования программного адреса первого интерфейса маршрутизатора (10.0.0.1) в его аппаратный адрес выполняются следующие действия:
1. На основании содержимого таблицы маршрутизации узла A, протокол IP определяет, что для того чтобы пакеты достигали узла B, их нужно отправить по IP-адресу основного шлюза — 10.0.0.1. Затем узел A ищет в своем локальном кэше ARP соответствующий аппаратный адрес для IP-адреса 10.0.0.1.
2. Если узел A не может найти в кэше нужного адреса, он отправляет широковещательный ARP-запрос всем узлам локальной сети с вопросом «Какой аппаратный адрес соответствует IP-адресу 10.0.0.1?» Этот ARP-запрос содержит в себе программный (IP) и аппаратный адреса источника — узла A. Каждый узел локальной сети получает ARP-запрос и проверяет, не соответствует ли его IP-адрес IP-адресу, указанному в запросе. Если IP-адрес узла не совпадает с указанным в запросе IP-адресом, узел отбрасывает ARP-запрос.
3. Маршрутизатор определяет, что IP-адрес, указанный в ARP-запросе, соответствует его IP-адресу, и добавляет сопоставление программного и аппаратного адресов узла A в свой локальный кэш ARP.
4. Затем маршрутизатор отправляет ARP-ответ, содержащий его аппаратный адрес, непосредственно узлу A.
5. Когда узел A получает ARP-ответ от маршрутизатора, он заносит в свой кэш ARP сопоставление программного и аппаратного адресов для адреса 10.0.0.1.
Когда аппаратный адрес первого интерфейса маршрутизатора будет определен, узел A сможет отправлять IP-трафик на первый интерфейс маршрутизатора по его аппаратному адресу. Затем маршрутизатор пересылает трафик на узел B с использованием процесса ARP.
Структура ARP-пакета.
На рис. 3 проиллюстрирована структура пакета, используемого в запросах и ответах ARP.
Рис. 3. Формат 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): логический адрес отправителя.
Target hardware address (THA):физический адрес получателя. Поле пусто при запросе.
Target protocol address (TPA): логический адрес получателя.
Кэш ARP.
Чтобы уменьшить число широковещательных запросов, протокол ARP использует кэш сопоставлений IP-адресов и аппаратных адресов устройств. Каждый сетевой адаптер имеет свой кэш ARP. Он может содержать как динамические, так и статические записи. Динамические записи добавляются и удаляются автоматически, с течением времени. Статические записи остаются в кэше до тех пор, пока компьютер не будет перезагружен.
Каждая динамическая запись кэша ARP имеет потенциальное время жизни, равное 10 минутам. Новые записи, добавляемые в кэш, получают штамп времени. Если запись не будет повторно использована в течение двух минут после добавления, срок ее жизни истекает, и она удаляется из кэша ARP. Если запись будет повторно использована, срок ее жизни увеличивается на две минуты. Если запись будет использована еще раз, время ее жизни снова увеличивается на две минуты; максимальное значение времени жизни равно 10 минутам.
В большинстве систем имеется команда аrр, которую можно применять для изучения и обработки содержимого кэша ARP. Она обычно используется для добавления и удаления записей. Команда аrр -а отображает содержимое кэша; естественно, в каждой операционной системе у нее свой формат.
Команда аrр, как правило, используется в целях отладки и при работе со специальным оборудованием. Некоторые устройства не могут общаться по протоколу ARP (например, сетевые принтеры и специализированные графические мониторы), и для включения их в сеть нужно сконфигурировать другую машину в качестве агента-посредника ARP. Обычно этой цели служит команда аrр.
Если два компьютера в сети имеют одинаковый IP-адрес, то на одном из них запись в ARP-таблице будет правильной, а на другом — нет. С помощью команды аrр можно найти машину-нарушитель.
Для ознакомления с параметрами команды arpвведите команду arp /? в командную строку.
В нормальных условиях многие адреса, необходимые компьютеру, выявляются вскоре после начальной загрузки, поэтому протокол ARP не оказывает серьезного воздействия на загруженность сети.