Протокол 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. В результате
составляется IP-пакет, который должен быть передан драйверу
Ethernet. IP-адрес места назначения известен прикладной программе,
модулю TCP и модулю IP. Необходимо на его основе найти
Ethernet-адрес места назначения. Для определения искомого
Ethernet-адреса используется ARP-таблица.
Запросы и ответы протокола ARP
Как же
заполняется ARP-таблица? Она заполняется автоматически модулем ARP,
по мере необходимости. Когда с помощью существующей ARP-таблицы не
удается преобразовать IP-адрес, то происходит следующее:
- По сети передается широковещательный ARP-запрос.
- Исходящий IP-пакет ставится в очередь.
Каждый сетевой адаптер принимает широковещательные передачи. Все
драйверы Ethernet проверяют поле типа в принятом Ethernet-кадре и
передают ARP-пакеты модулю ARP. ARP-запрос можно интерпретировать
так: "Если ваш IP-адрес совпадает с указанным, то сообщите мне ваш
Ethernet-адрес". Пакет ARP-запроса выглядит примерно так:
IP-адрес отправителя Ethernet-адрес отправителя
| 223.1.2.1 08:00:39:00:2F:C3 |
Искомый IP-адрес Искомый Ethernet-адрес
| 223.1.2.2 <пусто> |
Табл.2.
Пример ARP-запроса
Каждый модуль ARP проверяет поле искомого IP-адреса в
полученном ARP-пакете и, если адрес совпадает с его собственным
IP-адресом, то посылает ответ прямо по Ethernet-адресу отправителя
запроса. ARP-ответ можно интерпретировать так: "Да, это мой
IP-адрес, ему соответствует такой-то Ethernet-адрес". Пакет с
ARP-ответом выглядит примерно так:
IP-адрес отправителя Ethernet-адрес отправителя
| 223.1.2.2 08:00:28:00:38:A9 |
Искомый IP-адрес Искомый Ethernet-адрес
| 223.1.2.1 08:00:39:00:2F:C3
|
Табл.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.3
| 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-таблицу
для каждого своего сетевого интерфейса.
[Назад]
[Содержание]
[Вперед]