ARP

Модель TCP/IP (RFC 1122)
Прикладний рівень
Транспортний рівень
Мережевий рівень
Канальний рівень
Цей шаблон:
  • переглянути
  • обговорити
  • редагувати

ARP (англ. Address Resolution Protocol — протокол визначення адрес) — комунікаційний протокол, призначений для перетворення IP-адрес (адрес мережевого рівня) в MAC-адреси (адреси канального рівня) в мережах TCP/IP. Він визначений в RFC 826.

Опис протоколу

Перетворення виконується лише для тих IP-пакетів, які відправляються, оскільки лише в момент відправлення створюються заголовки IP та Ethernet.

ARP-таблиця для перетворення адрес

Перетворення адрес виконується шляхом пошуку за таблицею. Ця таблиця називається ARP-таблицею, зберігається у пам'яті й містить рядки для кожного вузла мережі. В двох стовпчиках містяться IP- та Ethernet-адреси. Якщо потрібно перетворити IP-адресу в Ethernet-адресу, то відбувається пошук запису з відповідною IP-адресою. Нижче наведено приклад спрощеної ARP-таблиці.

Табл.1. Приклад ARP-таблиці
IP-адреса Ethernet-адреса
223.1.2.1 08:00:39:00:2F:C3
223.1.2.2 08:00:5A:21:A7:22
223.1.2.3↑ 08:00:10:99:AC:54

ARP-таблиця необхідна через те, що IP-адреси та Ethernet-адреси вибираються незалежно, і немає жодного алгоритму для перетворення однієї в іншу. IP-адресу вибирає менеджер мережі з урахуванням розташування машини у мережі Інтернет. Якщо машину переміщують до іншої частини мережі Інтернет, то її IP-адреса повинна бути змінена. Ethernet-адресу вибирає виробник мережного інтерфейсного обладнання з виділеного для нього згідно з ліцензією адресного простору. Якщо в машини змінюється мережний адаптер, то змінюється й Ethernet-адреса.

Порядок перетворення адрес

У ході звичайної роботи мережева програма відправляє прикладне повідомлення, користуючись транспортними послугами TCP. Модуль TCP надсилає відповідне транспортне повідомлення через модуль IP. У результаті складається IP-пакет, який має передаватись драйверові Ethernet. IP-адреса місця призначення відома прикладній програмі, модулеві TCP та модулеві IP. Необхідно на її основі знайти Ethernet-адресу місця призначення. Для пошуку відповідної Ethernet-адреси використовується ARP-таблиця.

Запити та відповіді протоколу ARP

ARP-таблиця заповнюється автоматично модулем ARP по мірі необхідності. Коли за допомогою існуючої ARP-таблиці не вдається перетворити IP-адресу, то відбувається таке:

  1. По мережі передається широкомовний ARP-запит.
  2. Вихідний IP-пакет ставиться в чергу.

Кожний мережний адаптер приймає широкомовні передачі. Усі драйвери Ethernet перевіряють поле типу в прийнятому Ethernet-кадрі й передають ARP-пакети модулю ARP. ARP-запит можна інтерпретувати так: «Якщо ваша IP-адреса збігається із зазначеною, то повідомте мені вашу Ethernet-адресу». Пакет ARP-запиту виглядає приблизно так:

Табл.2. Приклад ARP-запиту
IP-адреса відправника 223.1.2.1
Ethernet-адреса відправника 08:00:5A:21:A7:22
Шукана IP-адреса 223.1.2.3
Шукана Ethernet-адреса <порожньо>

Кожний модуль ARP перевіряє поле шуканої IP-адреси в отриманому ARP-пакеті і, якщо адреса збігається з його власною IP-адресою, то посилає відповідь прямо за Ethernet-адресою відправника запиту. Пакет з ARP-відповіддю виглядає приблизно так:

Табл.3. Приклад ARP-відповіді
IP-адреса відправника 223.1.2.3
Ethernet-адреса відправника 08:01:2A:2B:A7:21
IP-адреса автора запиту 223.1.2.1
Ethernet-адреса автора запиту 08:00:5A:21:A7:22

Цю відповідь одержує машина, що зробила ARP-запит. Драйвер цієї машини перевіряє поле типу в Ethernet-кадрі й передає ARP-пакет модулю ARP. Модуль ARP аналізує ARP-пакет і додає запис у свою ARP-таблицю. Якщо в мережі немає машини із шуканою IP-адресою, то ARP-відповіді не буде й не буде запису в ARP-таблиці. Протокол IP буде знищувати IP-пакети, що направляються по цій адресі. Протоколи верхнього рівня не можуть відрізнити випадок пошкодження мережі Ethernet від випадку відсутності машини із шуканою IP-адресою.

Див. також

Посилання

Ця стаття не містить посилань на джерела. Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні (авторитетні) джерела. Матеріал без джерел може бути піддано сумніву та вилучено. (жовтень 2014)
{{{alt}}} Це незавершена стаття про комп'ютерні мережі.
Ви можете допомогти проєкту, виправивши або дописавши її.

П:  Портал «Програмування»