Протокол за откривање на адреси

**Протоколот за откривање на адреси** (**ARP**) е телекомуникациски протокол кој се користи за откривање на адреси од мрежниот слој ако е позната адресата од слојот за пристап до медиумот. Оваа операција е критична во мрежите каде има потреба од пристапување до истиот медиум од повеќе уреди. ARP е дефиниран од страна на RFC 826 во 1982. Овој протокол е Интернет стандард STD 37, а исто така се користи и како програма за манипулирање со MAC адреси во повеќето оперативни системи.

ARP се користи за претворање на IP-адресите во физички адреси како што е етернет адресата (попозната како MAC-адреса). Овој протокол е имплементиран во многу технологии:  IPv4, Chaosnet, DECnet и Xerox PARC Universal Packet (PUP) со користење на IEEE 802 стандарди, FDDI, X.25, Frame Relay и Asynchronous Transfer Mode (ATM). Најкористена технологија е IPv4 со IEEE 802.3 и IEEE 802.11.

Во IPv6 мрежите, функционалноста на ARP е овозможена од протоколот за откривање на соседи (NDP).

## Оперативен опсег
Протоколот за откривање на адреси е протокол од типот барање-одговор кој работи енкапсулирано во протоколот кој е моментално активен на линкот (линиски протокол). Комуницира само во рамките на една мрежа, никогаш не преминува надвор од меѓумрежните јазли. Овој објект го сместува ARP во слојот за пристап до медиум на Internet Protocol Suite, додека пак во Open Systems Interconnection (OSI) моделот многу често е опишан дека живее помеѓу слоевите 2 и 3. Работи енкапсулирано во протоколите кои имаат слој 2. Како и да е, ARP не е развиен во рамките на OSI.

## Структура на пакетите
Протоколот за откривање на адреси користи едноставен формат за пораки кој содржи барање и одговор за откривање на адреси. Големината на оваа порака зависи од големините на адресите (на горните и долните слоеви) кои зависат од типот на мрежниот протокол (најчесто IPv4) кој се користи и од видот на хардверот или виртуелниот слој за поврзување со медиум на кој работат горните слоеви. Заглавјето на пораката ги специфицира овие типови, како и големината на секоја од адресите. Заглавјето се комплетира со операциски код за барање (1) и одговор (2). Капацитетот на пакетот е 4 адреси: хадверска, протокол како и адресите на праќачот и примачот.

Основната структура на ARP пакетите е покажана во следната табела која покажува како IPv4 мрежите работат на Етернет. Во овој пример, пакетот има 48-бит полиња за хардверска адреса на праќачот (SHA) и хардверска адреса на примачот (THA) и 32-бит полиња за corresponding sender and target protocol addresses (SPA and TPA). Значи, големината на ARP пакетот во овој случај е 28 бајти. Етертипот за ARP е 0x0806.

; Тип на хардвер (HTYPE): Ова поле го специфицира видот на протокол мрежата. Пример: Етернет е 1.
; Тип на протокол (PTYPE): Ова поле го специфицира меѓумрежниот протокол за кого е наменето ARP барањето. За IPv4, вредноста му е 0x0800. Дозволените PTYPE вредности имаат исти вредности како вредностите на EtherType.
; Должина на хардверска адреси (HLEN): Должината на хардверска адреса (во октети). Должината на Етернет адресите е 6.
; Должината на протокол адреси (PLEN): Должината (исто така во октети) на адресите кои се користат во горниот протокол слој. (Горниот протокол слој специфицира во PTYPE.) Должината на IPv4 адресите е 4.
; Операција : Ја специфицира операцијата која ја извршува испраќачот: 1 за барање, 2 за одговор.
; Хардверска адреса на испраќач (SHA): Медиумска адреса на испраќач. Во едно ARP барање, ова поле е искористено за да покажува на адресата на домаќинот кој испраќа барање. Во ARP одговорот, ова поле е искористено за да покажува на адресата на домаќинот кој го прима барањето. (Not necessarily address of the host replying as in the case of virtual media.) Note that switches do not pay attention to this field, particularly in learning MAC addresses.
; Протокол адреса на испраќач (SPA): меѓумрежната адреса на испраќачот.
; Хардверска адреса на примач (THA): Медиумска адреса на примач. Во едно ARP барање ова поле се игнорира. Во ARP одговор ова поле е искористено за да покажува кон адресата на домаќинот кој го испратил барањето.
; Протокол адреса на примач (TPA): меѓумрежната адреса на примачот.

Вредностите на параметрите на ARP протоколот се стандардизирани и одржувани од страна на Internet Assigned Numbers Authority (IANA).

## Пример
На пример, да претпоставиме дека компјутерите *Matterhorn* и *Washington* се во една канцеларија, поврзани меѓу себе на локална мрежа (LAN) преку Етернет кабли и мрежни преклопници, без излезен насочувач или насочувач.  Matterhorn сака да испрати пакет до Washington. Преку DNS, се утврдува дека IP-адресата на Washington е 192.168.0.55. За да се испрати пораката исто така е потребно да се знае која е неговата МAC адреса.  Најпрво, Matterhorn користи кеширана ARP табела, ја наоѓа адресата 192.168.0.55 и бара какви било снимки за MAC адресата на Washington (00:eb:24:b2:05:ac). Доколку ја пронајде MAC адресата, испраќа IP пакет енкапсулиран во рамка од ниво 2 на слојот за поврзување со медиум на адресата 00:eb:24:b2:05:ac преку локално кабелско поврзување на мрежа. Доколку кешот не даде резултат за 192.168.0.55, Matterhorn мора да испрати broadcast ARP порака (одредиште FF:FF:FF:FF:FF:FF, MAC адреса која е прифатена од сите компјутери) барајќи одговор за 192.168.0.55.  Washington одговара преку неговата MAC адреса (и неговата IP-адреса). Washington може да додаде влез за Matterhorn во својата ARP табела за користење во иднина. Одговорот е кеширан на ARP табелата на Matterhorn и пораката конечно може да биде испратена.

## ARP барање
**ARP барањето** се конструира со сите нули на *IP-адресата на праќачот*. Терминот е искористен во спецификацијата на *Откривање на грешки кај IPv4 адресите (IPv4 Address Conflict Detection)* (RFC 5227). Пред да почнат да се користат IPv4 адреси (без разлика дали се примени преку рачна конфигурација, DHCP или друго), домаќинот кој ја имплементира оваа спецификација, со broadcasting на ARP пакетите за барање мора да провери дали адресата е веќе во употреба.

## ARP известување
ARP исто така може да биде искористен и како едноставен протокол за известување. Ова е корисно за промени кај мапирањето на хардверска адреса на другите домаќини кога IP или MAC адресата се променети. Such an announcement, also called a *gratuitous ARP* message, is usually broadcast as an ARP request containing the sender's protocol address (SPA) in the target field (TPA=SPA), with the target hardware address (THA) set to zero. An alternative is to broadcast an ARP reply with the sender's hardware and protocol addresses (SHA and SPA) duplicated in the target fields (TPA=SPA, THA=SHA).

ARP известувањето не е наменето да врати одговор. Наместо тоа, ги менува кешираните влезови на ARP табелите на другите домаќини кои го примаат пакетот. Кодот на операцијата може да укажува на барање или одговор бидејќи ARP стандардот специфицира дека opcode-от се обработува само кога на ARP табелата се менуваат полињата за адреси.

Многу оперативни системи извршуваат „бесплатна ARP порака“ при стартување. Тоа помага да се решат проблемите кои би настанале доколку мрежната картичка се промени (промена на мапирањето IP-адреса-во-MAC-адреса) а другите домаќини се’ уште го имаат старото мапирање на нивните ARP кешови.

Бесплатното ARP исто така се користи и од некои интерфејс двигатели (драјвери) за да се обезбеди избалансиран сообраќај. Примамливо е да му се соопшти различна MAC адреса на тимот кој ќе ги прими пакетите.

ARP известувањата можат да се искористат за да се одбрани локална IP-адреса во протоколот Zeroconf (RFC 3927), и за преземање на IP-адреса во групи на опслужувачи со висок степен на достапност.

## ARP посредување
**ARP посредувањето** се однесува на процесот на решавање на адресите од Слој 2 преку виртуелни приватни жичени сервиси (VPWS) кога различни протоколи за откривање на адреси се искористени за поврзани кола, на пример Етернет на едниот крај и Frame Relay на другиот.  Во IPv4, секоја краен уред на услужникот (PE) се пребарува IP-адресата на локално прикачениот клиентски (CE) уред и ја дистрибуира на далечинскиот PE уред кој му одговара. Потоа, секој PE уред праќа одговор на локалните ARP барања користејќи ја IP-адресата на CE уредот и хардверската адреса на PE уредот. Во IPv6, секој PE уред ја пребарува IP-адресата на двата (локален и оддалечен CE) уреди, а потоа ги прекинува локалните пакети на протоколот за откривање на соседи (ND) и инверзниот протокол за откривање на соседи (IND) и ги препраќа до далечинскиот PE уред.

## Инверзен ARP и реверзен ARP
**Инверзен протокол за откривање на адреси** (Инверзен ARP или InARP) се користи за добивање на адреси од мрежното ниво (на пример, IP-адреси) на другите јазли од адресите од слојот за поврзување со податоци (Слој 2). Првично се користи во Frame Relay (DLCI) и ATM мрежи, во кои адресите од Слој 2 на виртуелни кола понекогаш се добиваат со сигнализирање од Слојот 2 и адресите на Слој 3 мора да бидат достапни пред да се искористат виртуелните кола.

Преведувањето на ARP на адреси од Слој 3 во Слој 2 адреси (InARP) може да се опише како нејзина инверзна операција. InARP е имплементиран како протокол додаток на ARP: го користи истиот формат на пакети како ARP, но различни операциски кодови.

Обратниот протокол за откривање на адреси (Обратен ARP или RARP), исто како InARP, преведува адреси од Слој 2 во адреси од Слој 3. Како и да е, во InARP пребарувачката станица поставува барање за Слој 3 на друг јазол, каде RARP се користи за добивање на адреса од Слојот 3 од пребарувачката станица за адресна конфигурација. RARP е застарен протокол, подоцна заменет од BOOTP, кој па подоцна бил заменет од Протоколот за динамичка конфигурација на домаќин (DHCP).

## ARP лажирање и ARP посредник

Бидејќи ARP не обезбедува методи за проверка на автентичноста на одговорите на ARP, ARP одговорите можат да доаѓаат од други системи различни од оној кој се користи во адресите од Слој 2. ARP *посредник* е систем кој одговара на барањето на ARP во име на друг систем за кој испраќа сообраќај, како дел од дизајнот на самата мрежа, како што е примерот за користење интернет преку телефонската линија (dial-up). Во ARP *лажирањето* системот за одговор, или *лажирачот*, праќа одговор на барањето за адреса на друг систем with со цел да ги добие податоците наменети за тој систем. Злонамерен корисник може да го искористи ARP лажирањето за да изврши man-in-the-middle или denial-of-service напад на други корисници. Постојат многу софтвери за детектирање и извршување на ARP лажирани напади, поради тоа што ARP не обезбедува методи за заштита од напади.

## Можности на ARP
Секој компјутер одржува табела за мапирање на адреси од Слој 3 (т.н. IP-адреси) во адреси од Слој 2 (т.н. етернет MAC адреси). Во еден модерен компјутери ова го одржуваат речиси целосно ARP пакетите на локалната мрежа и е наречено 'ARP кеш' што е спротивно на 'Табела на адреси од Слој 2'.  Во постарите компјутери каде broadcast пакетите биле сметани за скапи ресурси, биле користени други методи за одржување на оваа табела како што е статичко конфигурирање на фајлови, или централно одржување на листи.
Во 1980-тите мрежните компјутери имале наредна *arp* за испитување или манипулирање со табелата. Практично, сите модерни лични сметачи имаат некоја варијанта на оваа наредба.

## ARP полнење
Вградените системи како што се мрежните камери и уредите за дистрибуција кои работат на мрежа, кои немаат кориснички интерфејс, може да користат т.н. *ARP stuffing* за правење на почетна мрежна врска, иако ова е погрешна употреба на израз бидејќи ARP не е вклучен.  Ова е решение за проблемот со управување на мрежа на корисничките уреди, поточно проблемот со алокација на IP-адреси на етернет уредите каде 1) корисникот нема можност да го контролира DHCP или слични протоколи за алокација на адреси, 2) уредот нема кориснички интерфејс за да го конфигурира и 3) компјутерот на корисникот не може да комуницира со протоколот затоа што нема соодветна IP-адреса.

Решението е усвоено на следниот начин: компјутерот на корисникот има IP-адреса која се внесува рачно во табелата на адреси (најчесто со командата *arp* со MAC адресата земена од етикетата на уредот) а потоа му испраќа посебни пакети на уредот, обично ping уреди со нестандардна големина.  Потоа уредот ја презема оваа IP-адреса и корисникот комуницира со неа преку telnet или web протоколи за да ја изврши конфигурацијата. Ваквите уреди обично имаат метод за прекинување на процесот откако уредот ќе почне да работи нормално.

## Стандардни документи
* RFC 826 - Ethernet Address Resolution Protocol, Internet Standard STD 37.
* RFC 903 - Reverse Address Resolution Protocol, Internet Standard STD 38.
* RFC 2390 - Inverse Address Resolution Protocol, draft standard
* RFC 5227 - IPv4 Address Conflict Detection, proposed standard

## Поврзано
* Arping
* Arptables
* Arpwatch
* Proxy ARP
* ARP Spoofing
* Serial line ARP
* Sleep Proxy Service

## Наводи

## Надворешни врски

* ArpON home page
* ARP Sequence Diagram (pdf) 
* Gratuitous ARP
* ARP-SK ARP traffic generation tools 
* Sample Capture file from WireSharkWiki

Категорија:Internet Standards
Категорија:Link protocols
Категорија:Сметачки мрежи