ARP

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

IP адреси мають яке-небудь значення лише в сімействі протоколів TCP/IP. Канальні рівні, такі як Ethernet або Token ring, мають власну схему адресації (в основному 48-бітні адреси); мережні рівні, у свою чергу, використовують ці канальні рівні. Мережа Ethernet, може бути використана різними мережними рівнями в той саме час. Комп'ютери, що використовують різні мережні протоколи, можуть знаходитися на тому самому фізичному кабелі.

Коли фрейм Ethernet відправляється від одного хоста по локальній мережі до іншого, по його 48-бітный Ethernet адресі визначається, до якого інтерфейсу він повинен бути доставлений. Драйвер мережної плати ніколи не дивиться на IP адреси призначення в IP датаграмы.

Іншими словами виникає необхідність встановити відповідність між двома різними формами адрес: 32-бітними IP адресами і яким-небудь типом адрес канального рівня. RFC 826 [Plummer 1982] - офіційна специфікація ARP.

Arp1.jpg

На малюнку показані: протокол визначення адреси (ARP - address resolution protocol) і зворотний протокол визначення адреси (RARP - reverse address resolution protocol).

ARP надає динамічне зіставлення IP адрес і відповідних апаратних адрес. Ми використовуємо термін динамічне, тому що це відбувається автоматично і звичайно не залежить від використовуваних прикладних програм або волі системного адміністратора.

RARP, в основному, використовується системами без твердих дисків (бездискові робітники станції або X термінали), однак тут потрібна ручна конфігурація за участю системного адміністратора.

Формат пакета ARP На малюнку показаний формат ARP запиту і формат ARP відгуку, у випадку використання Ethernet і IP адрес. (ARP можна використовувати в інших мереж, при цьому він здатний установлювати відповідність не тільки для IP адрес. Перші чотири поля, що слідують за полем типу фрейму, вказують на типи і розміри заключних чотирьох полів.)

Arp1.jpg

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

Двобайтовий тип фрейму (frame type) Ethernet вказує, дані якого типу, підуть слідом. Для ARP запиту або ARP відгуку це поле містить 0x0806.

Вирази апаратний (hardware) і протокол (protocol) використовуються для опису полів у пакетах ARP. Наприклад, ARP запит запрошує апаратну адресу (у даному випадку Ethernet адреса) відповідну адресі протоколу (у даному випадку IP адреса).

Поле hard type вказує на тип апаратної адреси. Для Ethernet це значення дорівнює одиниці. Prot type указує тип адреси протоколу, до якого буде приведена відповідність. Для IP адрес використовується значення 0x0800. По своєму цільовому призначенню це значення відповідає полю типу у фреймі Ethernet, що містить IP датаграмму.

Два наступних однобайтних поля, hard size і prot size, указують на розміри в байтах апаратної адреси й адреси протоколу. У ARP запитах і відгуках вони складають 6 для Ethernet і 4 для IP адреси.

Поле op указує на тип операції: ARP запит (значення встановлюється в 1), ARP відгук (2), RARP запит (3) і RARP відгук (4). Це поле необхідне, тому що поля типу фрейму (frame type) однакові для ARP запиту і ARP відгуку.

Наступні чотири поля: апаратна адреса відправника (Ethernet адреса в даному прикладі), адреса протоколу (IP адреса), апаратна адреса призначення й адреса протоколу призначення. Зверніть увагу, що в даному випадку відбувається деяке дублювання інформації: апаратна адреса відправника може бути отримана як з Ethernet заголовка, так і з ARP запиту.

Для ARP запиту всі поля заповнені, за винятком апаратної адреси призначення. Коли система одержує ARP запит, що призначається їй, вона вставляє свою апаратну адресу, змінює місцями адреси джерела і призначення, встановлює поле op у значення 2 і відправляє відгук.