ARP: протокол преобразования адресов

При передаче данных через компьютерные сети идентификация IP-пакетов осуществляется при помощи IP-адресов. Однако, для фактической передачи данных через канальный уровень должны применяться аппаратные адреса (это не касается соединений типа «point-to-point» («точка-точка»), где получатель очевиден).

Определением того, какой аппаратный адрес связан с данным IP-адресом, занимается протокол ARP (Address Resolution Protocol — протокол преобразования (разрешения) адресов). Его можно применять в сетях любых типов, которые поддерживают широковещательный режим, но чаще всего этот протокол рассматривают в контексте сети Ethernet.

Протокол разрешения адресов ARP является обязательным стандартом TCP/IP, описанным в документе RFC 826 «Address Resolution Protocol (ARP)». ARP преобразует IP-адреса, используемые программным обеспечением TCP/IP, в аппаратные адреса сетевых адаптеров локальной сети.

ARP предоставляет узлам, расположенным в одной физической сети, следующие службы протокола:

  1. Аппаратные адреса (или МАС-адреса — адреса уровня управления доступом к среде передачи) определяются путем посылки широковещательного сетевого запроса следующего вида «Какой аппаратный адрес имеет устройство с указанным IP-адресом?».
  2. Когда на ARP-запрос отправляется ответ, то отправитель ARP-ответа и запрашивающий узел заносят IP-адреса и аппаратные адреса друг друга в локальную таблицу, называемую кэшем ARP, для дальнейшего использования.

Назначение аппаратных адресов.

Каждое устройство, предназначенное для работы в локальной сети, должно иметь уникальный аппаратный адрес, присвоенный разработчиком. Для устройств локальных сетей 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-адреса в аппаратные адреса узлов, расположенных в той же локальной сети.

В этом примере два узла 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 по аппаратному адресу последнего.

Узнай цену консультации

"Да забей ты на эти дипломы и экзамены!” (дворник Кузьмич)