вторник, 31 мая 2011 г.

Протокол ARP


Протокол ARP
 
 
     В этом разделе мы рассмотрим то, как при посылке IP-пакета определя-
 ется  Ethernet-адрес  назначения.  Для отображения IP-адресов в Ethernet-
 адреса используется протокол ARP (Address Resolution Protocol -  адресный
 
 
 
протокол).   Отображение  выполняется только для отправляемых IP-пакетов,
 так как только в момент отправки создаются заголовки IP и Ethernet.
 
 
4.1.  ARP-таблица для преобразования адресов
 
    Преобразование адресов выполняется путем поиска в таблице.  Эта таб-
 лица,  называемая  ARP-таблицей,  хранится в памяти и содержит строки для
 каждого узла сети.  В двух столбцах  содержатся  IP-  и  Ethernet-адреса.
 Если  требуется преобразовать IP-адрес в Ethernet-адрес, то ищется запись
с соответствующим  IP-адресом.   Ниже  приведен  пример  упрощенной  ARP-
 таблицы.
 
 
 
            ---------------------------------------------
            |      IP-адрес           Ethernet-адрес    |
            ---------------------------------------------
            |     223.1.2.1          08:00:39:00:2F:C3  |
            |     223.1.2.3          08:00:5A:21:A7:22  |
            |     223.1.2.4          08:00:10:99:AC:54  |
            ---------------------------------------------
 
                    Табл.1. Пример ARP-таблицы
 
      Принято все байты 4-байтного IP-адреса записывать  десятичными  чис-
 лами, разделенными точками.  При записи 6-байтного Ethernet-адреса каждый
 байт указывается в 16-ричной системе и отделяется двоеточием.
 
 
     ARP-таблица необходима потому, что IP-адреса и Ethernet-адреса выби-
 раются  независимо, и нет какого-либо алгоритма для преобразования одного
 в другой.  IP-адрес выбирает менеджер сети с учетом  положения  машины  в
 сети  internet.   Если машину перемещают в другую часть сети internet, то
 ее IP-адрес должен быть изменен.  Ethernet-адрес  выбирает  производитель
 сетевого  интерфейсного  оборудования из выделенного для него по лицензии
 адресного пространства.  Когда у машины заменяется плата  сетевого  адап-
 тера, то меняется и ее Ethernet-адрес.
 
 
4.2.  Порядок преобразования адресов

    В ходе обычной работы сетевая программа, такая как  TELNET,  отправ-
 ляет  прикладное сообщение, пользуясь транспортными услугами TCP.  Модуль
 TCP посылает соответствующее транспортное сообщение через модуль  IP.   В
результате  составляется  IP-пакет,  который должен быть передан драйверу
 Ethernet.   IP-адрес  места  назначения  известен  прикладной  программе,
модулю  TCP  и  модулю IP.  Необходимо на его основе найти Ethernet-адрес
места назначения.  Для определения искомого Ethernet-адреса  используется
 
ARP-таблица.
 
4.3.  Запросы и ответы протокола ARP

   Как же заполняется ARP-таблица?  Она заполняется автоматически моду-
 лем ARP, по мере необходимости.  Когда с помощью существующей ARP-таблицы
 не удается преобразовать IP-адрес, то происходит следующее:
 
1)   По сети передается широковещательный ARP-запрос.
2)   Исходящий IP-пакет ставится в очередь.
 
Каждый сетевой адаптер принимает  широковещательные  передачи.   Все
 драйверы  Ethernet  проверяют поле типа в принятом Ethernet-кадре и пере-
 дают ARP-пакеты модулю ARP.  ARP-запрос можно интерпретировать так: "Если
 ваш  IP-адрес совпадает с указанным, то сообщите мне ваш Ethernet-адрес".
 Пакет ARP-запроса выглядит примерно так:
 
 
 
     -----------------------------------------------------------
     |   IP-адрес отправителя              223.1.2.1           |
     |   Ethernet-адрес отправителя        08:00:39:00:2F:C3   |
     -----------------------------------------------------------
     |   Искомый IP-адрес                  223.1.2.2           |
     |   Искомый Ethernet-адрес            <пусто>             |
     -----------------------------------------------------------
 
                    Табл.2. Пример ARP-запроса
 
    Каждый модуль ARP проверяет поле  искомого  IP-адреса  в  полученном
 ARP-пакете и, если адрес совпадает с его собственным IP-адресом, то посы-
 лает ответ прямо по Ethernet-адресу отправителя запроса.  ARP-ответ можно
 интерпретировать  так:  "Да, это мой IP-адрес, ему соответствует такой-то
 Ethernet-адрес".  Пакет с ARP-ответом выглядит примерно так:
 
 
 
     -----------------------------------------------------------
     |   IP-адрес отправителя              223.1.2.2           |
     |   Ethernet-адрес отправителя        08:00:28:00:38:A9   |
     -----------------------------------------------------------
     |   Искомый IP-адрес                  223.1.2.1           |
     |   Искомый Ethernet-адрес            08:00:39:00:2F:C3   |
     -----------------------------------------------------------
 
                    Табл.3. Пример ARP-ответа
 
 Этот ответ получает  машина,  сделавшая  ARP-запрос.   Драйвер  этой
 машины  проверяет  поле типа в Ethernet-кадре и передает ARP-пакет модулю
 ARP.  Модуль ARP анализирует ARP-пакет и добавляет  запись  в  свою  ARP-
 таблицу.
 
 
     Обновленная таблица выглядит следующим образом:
 
 
 
            ---------------------------------------------
            |      IP-адрес           Ethernet-адрес    |
            ---------------------------------------------
            |     223.1.2.1          08:00:39:00:2F:C3  |
            |     223.1.2.2          08:00:28:00:38:A9  |
            |     223.1.2.3          08:00:5A:21:A7:22  |
            |     223.1.2.4          08:00:10:99:AC:54  |
            ---------------------------------------------
 
             Табл.4. ARP-таблица после обработки ответа
 
 4.4.  Продолжение преобразования адресов
  Новая запись в ARP-таблице  появляется  автоматически,  спустя  нес-
 колько  миллисекунд  после  того, как она потребовалась.  Как вы помните,
 ранее на шаге 2 исходящий IP-пакет был поставлен  в  очередь.   Теперь  с
 использованием  обновленной  ARP-таблицы  выполняется  преобразование IP-
 адреса в Ethernet-адрес, после чего  Ethernet-кадр  передается  по  сети.
 
Полностью порядок преобразования адресов выглядит так:
 
 1)   По сети передается широковещательный ARP-запрос.
 
 2)   Исходящий IP-пакет ставится в очередь.
 
3)   Возвращается ARP-ответ, содержащий информацию о соответствии  IP-  и
 Ethernet-адресов.  Эта информация заносится в ARP-таблицу.
 
4)   Для преобразования IP-адреса в Ethernet-адрес у  IP-пакета,  постав-
 ленного в очередь, используется ARP-таблица.

5)   Ethernet-кадр передается по сети Ethernet. 
    Короче говоря, если с помощью ARP-таблицы не удается сразу  осущест-
 вить  преобразование адресов, то IP-пакет ставится в очередь, а необходи-
 мая для преобразования информация получается с помощью запросов и ответов
 протокола ARP, после чего IP-пакет передается по назначению.
   Если в сети нет машины с искомым IP-адресом, то ARP-ответа не  будет
 и не будет записи в ARP-таблице.  Протокол IP будет уничтожать IP-пакеты,
 направляемые по этому адресу.  Протоколы верхнего уровня не  могут  отли-
 чить случай повреждения сети Ethernet от случая отсутствия машины с иско-
 мым IP-адресом.

         Некоторые реализации IP и ARP не ставят в очередь  IP-пакеты  на  то
 время, пока они ждут ARP-ответов.  Вместо этого IP-пакет просто уничтожа-
 ется, а его восстановление возлагается на модуль TCP или прикладной  про-
 цесс,  работающий  через UDP.  Такое восстановление выполняется с помощью
 таймаутов и повторных передач.   Повторная  передача  сообщения  проходит
 успешно, так как первая попытка уже вызвала заполнение ARP-таблицы.
 Следует отметить, что каждая машина имеет отдельную ARP-таблицу  для
 каждого своего сетевого интерфейса.