|

Любое устройство, подключенное к локальной сети (Ethernet, FDDI и т.д.), имеет уникальный физический сетевой адрес, заданный аппаратным образом. 6-байтовый Ethernet-адрес выбирает изготовитель сетевого интерфейсного оборудования из выделенного для него по лицензии адресного пространства. Если у машины меняется сетевой адаптер, то меняется и ее Ethernet-адрес.
4-байтовый IP-адрес задает менеджер сети с учетом положения машины в сети Интернет. Если машина перемещается в другую часть сети Интернет, то ее IP-адрес должен быть изменен. Преобразование IP-адресов в сетевые выполняется с помощью arp-таблицы. Каждая машина сети имеет отдельную ARP-таблицу для каждого своего сетевого адаптера. Не трудно видеть, что существует проблема отображения физического адреса (6 байт для Ethernet) в пространство сетевых IP-адресов (4 байта) и наоборот.
Протокол ARP (address resolution protocol, RFC-826) решает именно эту проблему - преобразует ARP- в Ethernet-адреса.
Рассмотрим процедуру преобразования адресов при отправлении сообщения. Пусть прикладная программа одной ЭВМ отправляет сообщение другой. Прикладной программе IP-адрес места назначения обычно известен. Для определения
Ethernet-адреса просматривается ARP-таблица. Если для требуемого IP-адреса в ней присутствует Ethernet-адрес, то формируется и посылается соответствующий пакет. Если же с помощью ARP-таблицы не удается преобразовать адрес, то выполняется следующее:
1. Всем машинам в сети посылается пакет с ARP-запросом (с широковещательным Ethernet-адресом места назначения).
2. Исходящий IP-пакет ставится в очередь.
Каждая машина, принявшая ARP-запрос, в своем ARP-модуле сравнивает собственный IP-адрес с IP-адресом в запросе. Если IP-адрес совпал, то прямо по Ethernet-адресу отправителя запроса посылается ответ, содержащий как IP-адрес ответившей машины, так и ее Ethernet-адрес. После получения ответа на свой ARP-запрос машина имеет требуемую информацию о соответствии IP и Ethernet-адресов, формирует соответствующий элемент ARP-таблицы и отправляет IP-пакет, ранее поставленный в очередь. Если же в сети нет машины с искомым IP-адресом, то ARP-ответа не будет и не будет записи в ARP-таблицу. Протокол
IP будет уничтожать IP-пакеты, предназначенные для отправки по этому адресу.
Протоколы верхнего уровня не могут отличить случай повреждения в среде ethernet от случая отсутствия машины с искомым IP-адресом. Во многих реализациях в случае, если IP-адрес не принадлежит локальной сети, внешний порт сети (gateway) или маршрутизатор откликается, выдавая свой физический адрес (режим прокси-ARP).
Функционально, ARP делится на две части. Одна - определяет физический адрес при посылке пакета, другая отвечает на запросы других машин. ARP-таблицы имеют динамический характер, каждая запись в ней "живет" определенное время после чего удаляется. Менеджер сети может осуществить запись в ARP-таблицу, которая там будет храниться "вечно". ARP-пакеты вкладываются непосредственно в ethernet-кадры. Формат arp-пакета показан на рис. 4.4.6.1.

Рис. 4.4.6.1. Формат пакета ARP
HA-Len - длина аппаратного адреса; PA-Len лина протокольного адреса (длина в байтах, например, для IP-адреса PA-Len=4). Тип оборудования - это тип интерфейса, для которого отправитель ищет адрес; код содержит 1 для Ethernet. Ниже представлена таблица 4.4.6.1 кодов оборудования.
Таблица 4.4.6.1. Коды оборудования
Код типа оборудования |
Описание |
1 |
Ethernet (10 Мбит/с) |
2 |
Экспериментальный Ethernet (3 Мбит/с) |
3 |
Радиолюбительская связь через X.25 |
4 |
Proteon ProNET маркерная кольцевая сеть (Token Ring) |
5 |
Chaos |
6 |
Сети IEEE 802 |
7 |
ARCNET |
Таблица 4.4.6.2. Коды протоколов (для IP это 0800H).
|
Код типа протокола |
Описание |
Десятичное значение |
Hex |
512 |
0200 |
XEROX PUP |
513 |
0201 |
PUP трансляция адреса |
1536 |
0600 |
XEROX NS IDP |
2048 |
0800 |
DOD Internet протокол (IP) |
2049 |
0801 |
X.75 Internet |
2050 |
0802 |
NBS Internet |
2051 |
0803 |
ECMA Internet |
2052 |
0804 |
Chaosnet |
2053 |
0805 |
X.25 уровень 3 |
2054 |
0806 |
Протокол трансляции адреса (ARP) |
2055 |
0807 |
XNS совместимость |
2560 |
0A00 |
Xerox IEEE-802.3 PUP |
4096 |
1000 |
Bercley Trailer |
21000 |
5208 |
BBN Simnet |
24577 |
6001 |
DEC MOP Dump/Load |
24578 |
6002 |
DEC MOP удаленный терминал |
24579 |
6003 |
DEC DECnet фаза IV |
24580 |
6004 |
DEC LAT |
24582 |
6005 |
DEC |
24583 |
6006 |
DEC |
32773 |
8005 |
HP Probe |
32784 |
8010 |
Excelan |
32821 |
8035 |
Реверсивный протокол ARP (RARP) |
32824 |
8038 |
DEC LANbridge |
32923 |
8098 |
Appletalk |
33100 |
814C |
SNMP |
Поле код операции определяет, является ли данный пакет ARP-запросом (код = 1), ARP-откликом (2), RARP-запросом (3), или RARP-откликом (4). Это поле необходимо, как поле тип кадра в Ethernet пакетах, они идентичны для ARP-запроса и отклика.
ARP-таблицы строятся согласно документу RFC-1213 и для каждого IP-адреса содержит четыре кода:
|
ifindex |
Физический порт (интерфейс), соответствующий данному адресу; |
|
Физический адрес |
MAC-адрес, например Ethernet-адрес; |
|
IP-адрес |
IP-адрес, соответствующий физическому адресу; |
|
тип адресного соответствия |
это поле может принимать 4 значения: 1 - вариант не стандартный и не подходит ни к одному из описанных ниже типов; 2 -
данная запись уже не соответствует действительности; 3 - постоянная привязка; 4 - динамическая привязка; |
В SUN и некоторых других ЭВМ имеется программа arp, которая позволяет отобразить ARP-таблицу на экране. С флагом -a команда отображает всю таблицу, флаг позволяет стереть запись, а -s - служит для внесения записей в таблицу (последние два флага доступны для операторов с системными привилегиями). Команда ARP без флагов с адресом или именем ЭВМ выдаст соответствующую строку таблицы:
arp 192.148.166.129
Name: semenov.itep.ru
Address: 192.148.166.129 (IP-адрес моей персональной ЭВМ)
Aliases: yas
А команда
arp nb выдаст запись
nb (193.124.224.60) at 0:80:ad:2:24:b7 (запись для NetBlazer ИТЭФ)
ARP запросы могут решать и другие задачи. Так при загрузке сетевого обеспечения ЭВМ такой запрос может выяснить, а не присвоен ли идентичный IP-адрес какому-то еще объекту в сети. При смене физического интерфейса такой запрос может инициировать смену записи в ARP-таблице.
|