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 .
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.
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.
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 InARPARP 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ă.
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 .
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.
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 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.
|
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.
|
Î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.
|
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]
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.
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 .
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] :
TCP /IP pe straturi ale modelului OSI | Protocoale de bază|
---|---|
Fizic | |
canalizat | |
reţea | |
Transport | |
sesiune | |
Reprezentare | |
Aplicat | |
Altele aplicate | |
Lista de porturi TCP și UDP |