ARP

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 10 februarie 2022; verificările necesită 6 modificări .
ARP
Nume Protocolul de rezoluție a adresei
Nivel (conform modelului OSI ) canalizat
Familie TCP/IP
Creat în 1982
Port/ID 0x0806/ Ethernet
Scopul protocolului Conversia adreselor de rețea în adrese de canal
Specificație RFC 826
Principalele implementări (clienți) implementări ale stivei TCP/IP în Microsoft Windows , Linux și BSD
Implementări de bază ( servere ) implementări ale stivei TCP/IP în Windows , Linux și BSD
 Fișiere media la Wikimedia Commons

ARP ( Eng.  Address Resolution Protocol  - protocol de determinare a adresei) este un protocol din rețelele de calculatoare conceput pentru a determina adresa MAC a altui computer printr-o adresă IP cunoscută .

Descrierea protocolului a fost publicată în noiembrie 1982 în RFC 826 . ARP a fost conceput pentru a transmite pachete IP prin pachete Ethernet (cadre). Principiul aflării adresei hardware a gazdei țintă, folosit în ARP, a fost apoi folosit în alte tipuri de rețele.

ARP a devenit cel mai răspândit datorită omniprezentei rețelelor IP construite pe Ethernet, deoarece folosesc aproape întotdeauna ARP. ARP nu există în familia de protocoale IPv6 , funcțiile sale sunt atribuite ICMPv6 .

Descriere

Luați în considerare esența funcționării ARP pe un exemplu simplu. Calculatorul A (adresa IP 10.0.0.1) și computerul B (adresa IP 10.22.22.2) sunt conectate printr-o rețea Ethernet . Calculatorul A dorește să trimită un pachet de date către computerul B, adresa IP a computerului B îi este cunoscută. Cu toate acestea, rețeaua Ethernet la care sunt conectați nu funcționează cu adrese IP. Prin urmare, computerul A trebuie să cunoască adresa computerului B din rețeaua Ethernet ( adresa MAC în termeni Ethernet) pentru a putea transmite prin Ethernet. Pentru această sarcină, se utilizează protocolul ARP. Conform acestui protocol, computerul A trimite o solicitare de difuzare adresată tuturor computerelor din același domeniu de difuzare . Esența solicitării: „calculator cu adresa IP 10.22.22.2, spuneți-vă adresa MAC computerului cu adresa MAC (ex. a0:ea:d1:11:f1:01)”. Rețeaua Ethernet furnizează această solicitare tuturor dispozitivelor de pe același segment Ethernet, inclusiv computerului B. Computerul B răspunde computerului A cu cererea și raportează adresa MAC a acestuia (ex. 00:ea:d1:11:f1:11) Acum, După ce a primit adresa MAC a computerului B, computerul A îi poate trimite orice date prin rețeaua Ethernet.

Există următoarele tipuri de mesaje ARP: cerere ARP (cerere ARP ) și răspuns ARP (răspuns ARP ). Sistemul expeditor, folosind o cerere ARP, solicită adresa hardware a sistemului receptor, care intră în răspunsul ARP.

Înainte de a trece un pachet de nivel de rețea peste un segment Ethernet, stiva de rețea verifică memoria cache ARP pentru a vedea dacă informațiile necesare despre nodul destinație sunt deja înregistrate în tabelul său. Dacă nu există o astfel de intrare în memoria cache ARP, atunci se face o solicitare de difuzare ARP. Această solicitare pentru dispozitive din rețea are următorul sens: „Știe cineva adresa fizică a dispozitivului cu așa sau cutare adresă IP?” Când o gazdă cu această adresă IP primește un astfel de pachet de solicitare, trebuie să răspundă: „Da, aceasta este adresa mea IP și adresa mea hardware este așa și așa”. După aceea, expeditorul cererii va stoca adresa hardware a destinatarului în cache-ul său ARP și va putea să adreseze informațiile destinatarului.

Mai jos este un exemplu de cerere și răspuns ARP. < vezi în josul paginii>

Intrările din memoria cache ARP pot fi statice sau dinamice. Exemplul dat mai sus descrie o intrare dinamică în cache. De asemenea, puteți crea intrări statice în tabel. Pe majoritatea sistemelor de operare, acest lucru se poate face cu comanda:

arp -s <IP-адрес> <MAC-адрес>

În Windows Server 2003, intrările de tabel ARP create dinamic rămân în cache timp de 2 minute. Dacă în aceste două minute a avut loc o retransmitere a datelor la această adresă, atunci timpul de stocare a intrării în cache se prelungește cu încă 2 minute. Această procedură poate fi repetată de mai multe ori, dar intrarea maximă în cache va dura până la 10 minute. După aceea, intrarea va fi eliminată din cache și, dacă este necesar, va fi trimisă o nouă cerere ARP [1] .

Pe sistemele de operare mai noi, timpul de păstrare a intrărilor din tabelul ARP și metoda de stocare sunt selectabile prin programare și pot fi modificate dacă se dorește.

Variante ale protocolului ARP

ARP a fost dezvoltat inițial nu numai pentru IP, acest protocol poate fi folosit și pentru a afla adrese MAC în diferite adrese de protocoale de nivel 3 .  ARP a fost, de asemenea, adaptat pentru a obține alte adrese (hardware) de layer 2 ale modelului OSI ( Layer 2 addresses ).

Protocoalele InARP și ATM ARP sunt utilizate în diferite încapsulări IP peste ATM descrise în RFC 1577 ( IP clasic și ARP peste ATM ) [2] .

În prezent, ARP este folosit în principal pentru a potrivi adresele IP și MAC pe rețelele Ethernet.

ARP invers

Inverse Address Resolution Protocol , Inverse ARP sau InARP  este un protocol pentru obținerea adreselor de nivel de rețea (de exemplu , adrese IP ) ale altor stații de lucru prin adresele lor de nivel de legătură (de exemplu, DLCI în rețelele Frame Relay ). InARP este utilizat în mod obișnuit în rețele Frame Relay și ATM .

Comparația dintre ARP și InARP

ARP traduce adresele de nivel de rețea în adrese de nivel de legătură, în timp ce InARP poate fi privit ca invers. InARP este implementat ca o extensie a ARP. Formatele de pachete ale acestor protocoale sunt aceleași, doar codurile de operare și câmpurile care trebuie completate diferă.

RARP

Reverse Address Resolution Protocol , Reverse ARP sau RARP , precum InARP , traduce adresele de nivel de legătură în adrese de nivel de rețea. Dar RARP este folosit pentru a obține adresele logice ale stațiilor trimițătoare în sine, în timp ce în protocolul InARP expeditorul își cunoaște propriile adrese și solicită adresa logică a altei stații. RARP a fost abandonat în favoarea BOOTP , care a fost la rândul său înlocuit cu DHCP .

Cum funcționează

  1. O gazdă care trebuie să mapeze o adresă IP la o adresă hardware (adresă hardware Ethernet, adresa MAC ) formează o solicitare ARP cu adresa IP de destinație, o atașează la un cadru de protocol din stratul de legătură și o difuzează.
  2. Toate gazdele de pe segmentul rețelei locale primesc cererea ARP și compară adresa IP specificată acolo cu propria lor.
  3. Dacă propria sa adresă IP se potrivește cu cea primită în cererea ARP, nodul generează un răspuns ARP, în care indică atât adresa sa IP, cât și adresa sa hardware și o trimite adresată la adresa hardware a expeditorului cererii ARP.

Traducerea adreselor se realizează prin căutarea tabelului de corespondență dintre adresele IP și MAC. Acest tabel, numit tabel ARP, este stocat în memoria sistemului de operare și conține intrări pentru fiecare gazdă cunoscută de acesta. Cele două coloane conțin adresele IP și Ethernet (MAC). Dacă doriți să convertiți o adresă IP într-un MAC, atunci tabelul ARP caută o intrare cu adresa IP corespunzătoare.

Exemplu de tabel ARP simplificat
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

Structura unui pachet ARP

Structura de pachete utilizată în cererile și răspunsurile ARP este ilustrată mai jos. Pe rețelele Ethernet , aceste pachete folosesc EtherType 0x0806, iar cererile sunt trimise la adresa MAC de difuzare  - FF:FF:FF:FF:FF:FF. Rețineți că în structura pachetului prezentată mai jos, cuvintele de 32 de biți sunt utilizate în mod convențional ca SHA, SPA, THA și TPA - lungimea reală este determinată de dispozitivul fizic și de protocol.

+ biții 0-7 8 - 15 16 - 31
0 Tip hardware (HTYPE) Tip de protocol (PTYPE)
32 lungime hardware (HLEN) Lungimea protocolului (PLEN) Operare (OPER)
64 Adresa hardware a expeditorului (SHA)
? Adresa protocolului expeditorului (SPA)
? Adresă hardware țintă (THA)
? Adresă de protocol țintă (TPA)
Tip hardware (HTYPE) Fiecare protocol de transfer de date de canal are propriul său număr, care este stocat în acest câmp. De exemplu, Ethernet este numerotat 0x0001. Tip de protocol (PTYPE) Codul protocolului de rețea. De exemplu, pentru IPv4 , ar fi scris 0x0800. lungime hardware (HLEN) Lungimea adresei fizice în octeți. Adresele Ethernet au o lungime de 6 octeți (0x06). Lungimea protocolului (PLEN) Lungimea adresei logice în octeți. Adresele IPv4 au o lungime de 4 octeți (0x04). Operațiune Opcode-ul expeditorului: 0x0001 pentru o solicitare și 0x0002 pentru un răspuns. Adresa hardware a expeditorului (SHA) Adresa fizică a expeditorului. Adresa protocolului expeditorului (SPA) Adresa logică a expeditorului. Adresă hardware țintă (THA) Adresa fizică a destinatarului. Nu este necesar la cerere. Adresă de protocol țintă (TPA) Adresa logică a destinatarului.

Exemplu de solicitare

Dacă o gazdă cu adresa IPv4 10.10.10.123 și adresa MAC 00:0D:9D:86:59:E2 dorește să trimită un pachet către o altă gazdă cu adresa 10.10.10.140, dar nu își cunoaște adresa MAC, atunci trebuie să trimită un ARP cerere de rezolvare a adresei.

Pachetul prezentat mai jos reprezintă o solicitare de difuzare. Dacă gazda cu IP 10.10.10.140 este prezentă în rețea și este accesibilă, atunci primește această solicitare ARP și returnează un răspuns.

biții 0-7 8 - 15 16 - 31
0 tip hardware = 0x0001 tip de protocol = 0x0800
32 Lungimea hardware = 0x06 lungimea protocolului = 0x04 Operațiune = 0x0001
64 SHA (primii 32 de biți) = 0x000D9D86
96 SHA (ultimii 16 biți) = 0x59E2 SPA (primii 16 biți) = 0x0A0A
128 SPA (ultimii 16 biți) = 0x0A7B THA (primii 16 biți) = 0x0000
160 THA (ultimii 32 de biți) = 0x00000000
192 TPA=0x0A0A0A8C

Exemplu de răspuns

În situația descrisă mai sus, dacă nodul cu adresa 10.10.10.140 are o adresă MAC de 00:09:58:D8:33:AA, atunci va trimite înapoi pachetul ilustrat mai jos. Rețineți că blocurile de adrese ale expeditorului și destinatarului și-au schimbat acum valori (expeditorul răspunsului este acum destinatarul cererii; destinatarul răspunsului este expeditorul cererii). De asemenea, răspunsul are o adresă MAC gazdă de 10.10.10.140 în câmpul adresa fizică sursă (SHA), iar câmpul THA nu este gol (răspuns unicast).

Orice gazdă din aceeași rețea cu expeditorul și receptorul va primi și cererea (pentru că este o difuzare) și astfel adaugă informații despre expeditor în cache-ul său. Răspunsul ARP este direcționat numai către originea solicitării ARP, astfel încât răspunsul ARP nu este disponibil pentru alte gazde din rețea.

+ biții 0-7 8 - 15 16 - 31
0 tip hardware = 0x0001 tip de protocol = 0x0800
32 Lungimea hardware = 0x06 lungimea protocolului = 0x04 Operațiune = 0x0002
64 SHA (primii 32 de biți) = 0x000958D8
96 SHA (ultimii 16 biți) = 0x33AA SPA (primii 16 biți) = 0x0A0A
128 SPA (ultimii 16 biți) = 0x0A8C THA (primii 16 biți) = 0x000D
160 THA (ultimii 32 de biți) = 0x9D8659E2
192 TPA=0x0A0A0A7B
  • Cometariu. Lungimea câmpurilor SHA, SPA, THA, TPA depinde de parametrii Lungimea hardware și, respectiv, Lungimea protocolului.

Cache ARP

Eficacitatea ARP depinde în mare măsură de memoria cache ARP (cache ARP ) care este disponibilă pe fiecare gazdă. Cache-ul conține un tabel de corespondență între adresele MAC și IP compilat de sistemul de operare.

Durata de viață a unei intrări în cache este lăsată la latitudinea dezvoltatorului. Valoarea implicită poate fi de la zeci de secunde (de exemplu, 20 de secunde) la patru ore ( Cisco IOS ). [3]

Detectarea conflictelor de adrese

ARP poate fi utilizat pentru a detecta conflicte de adrese IP într-o rețea locală. RFC 5227 definește un format de cerere ARP Probe cu un câmp SPA total zero (adresa IP 0.0.0.0). Înainte de a atribui o adresă IP unei interfețe, o gazdă POATE verifica dacă adresa nu este utilizată de o altă gazdă pe segmentul LAN.

Anunț ARP

Un Anunț ARP este un pachet (de obicei o cerere ARP [4] ) care conține SHA și SPA corecte ale gazdei care trimite, cu un TPA egal cu SPA. Aceasta nu este o cerere de permisiune, ci o solicitare de actualizare a memoriei cache ARP a altor gazde care primesc pachetul.

Majoritatea sistemelor de operare trimit un astfel de pachet atunci când o gazdă intră online, ceea ce ajută la prevenirea o serie de probleme. De exemplu, la schimbarea plăcii de rețea (când trebuie actualizată asocierea dintre adresele IP și MAC), o astfel de solicitare va repara intrările din memoria cache ARP a altor gazde din rețea.

Alertele ARP sunt folosite și pentru a „securiza” adresele IP în protocolul Zeroconf , descris în RFC 3927 .

Solicitare voluntară ARP (ARP gratuită)

Un caz special al unei cereri ARP este o solicitare pentru propria adresă IP, se numește „ ARP gratuit ” (cerere ARP voluntară) [5] .

Într-o astfel de solicitare, adresele IP ale expeditorului și ale destinatarului sunt aceleași.

ARP gratuit este utilizat în două scopuri [5] :

  1. notificarea dispozitivelor învecinate că a apărut o nouă adresă IP în segmentul de rețea;
  2. verificarea libertății adresei IP (dacă este folosită de un alt dispozitiv).

Vezi și

Note

  1. Vizualizați memoria cache ARP (Address Resolution Protocol)  : [ ing. ]  : [ arh. 25 februarie 2021 ] // MSDN. - 2009. - 8 octombrie.
  2. TCP/IP peste ATM  : [ ing. ]  : [ arh. 9 februarie 2022 ]. — IBM .
  3. Blogul de testare a sistemelor încorporate: ARP Timeout Value pentru Linux, Windows, Cisco 2960 și DELL Switch . Consultat la 8 noiembrie 2013. Arhivat din original pe 21 septembrie 2013.
  4. Re: [dhcwg] ARP gratuit în DHCP vs. IPv4 ACD Draft Arhivat din original pe 12 octombrie 2007.
  5. 12 ZvonDozvon . _

Literatură

  •   RFC 826 :  Protocolul de rezoluție a adresei
  •   RFC 1577 :  IP clasic și ARP peste ATM
  •   RFC 2390 :  Protocol de rezoluție inversă a adresei
  •   RFC 5227 :  Detectarea conflictelor de adrese IPv4

Link -uri