В этом разделе мы рассмотрим то, как при посылке IP-пакета определяется
Ethernet-адрес назначения. Для отображения IP-адресов в Ethernet адреса
используется протокол ARP (Address Resolution Protocol - адресный
протокол). Отображение выполняется только для отправляемых IP-пакетов,
так как только в момент отправки создаются заголовки IP и Ethernet.
Преобразование адресов выполняется путем поиска в таблице. Эта таблица,
называемая ARP-таблицей, хранится в памяти и содержит строки для
каждого узла сети. В двух столбцах содержатся IP- и Ethernet-адреса.
Если требуется преобразовать IP-адрес в Ethernet-адрес, то ищется запись
с соответствующим IP-адресом. Ниже приведен пример упрощенной
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-таблицы
не удается преобразовать IP-адрес, то происходит следующее:
По сети передается широковещательный ARP-запрос.
Исходящий IP-пакет ставится в очередь.
Каждый сетевой адаптер принимает широковещательные передачи. Все
драйверы Ethernet проверяют поле типа в принятом Ethernet-кадре и передают
ARP-пакеты модулю ARP. ARP-запрос можно интерпретировать так: "Если
ваш IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес".
Пакет 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-таблицу.
Новая запись в 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-таблицу для
каждого своего сетевого интерфейса.