Documente noi - cercetari, esee, comentariu, compunere, document
Referate categorii

Adresele de internet - Problema determinarii adreselor, Doua tipuri de adrese fizice, Determinarea adreselor

Adresele de internet

Am aratat ca o internet se comporta ca o retea virtuala, utilizand doar adresele TCP/IP - adrese pe 32 de biti atribuite universal fiecarui calculator - pentru trimiterea sau primirea pachetelor. Pe de alta parte se stie ca intr-o retea fizica data, doua masini pot comunica numai daca isi cunosc reciproc adresele fizice de retea. Asadar, o problema esentiala o constituie modul in care un calculator sau un ruter poate converti adresa IP intr-o adresa fizica corecta atunci cand trebuie sa trimita un pachet printr-o anume retea fizica



Problema determinarii adreselor

Sa consideram doua masini A si B care utilizeaza in comun o retea fizica. Fiecare calculator are atribuita cate o adresa IP - IA si IB - si cate o adresa fizica - PA si PB . Scopul este acela de a elabora un program care sa ascunda adresele fizice si sa permita programelor de la nivelul superior sa lucreze doar cu adresele de internet. In final, totusi, comunicatia trebuie sa fie executata de catre retelele fizice, utilizand modul de adresare fizica oferit de hardware. Sa presupunem ca masina A doreste sa trimita un pachet masinii B prin intermediul unei retele fizice la care ambele calculatoare sunt atasate, dar A cunoaste doar adresa de internet IB a lui B. Se pune problema: cum poate A sa converteasca aceasta adresa in adresa fizica PB a lui B?

Punerea in corespondenta a adreselor trebuie sa fie executata la fiecar pas de-a lungul traseului de la sursa originara pana la destinatia finala In particular, apar doua cazuri. In primul caz, la ultimul pas al livrarii unui pachet, pachetul trebuie trimis printr-o retea fizica catre destinatia sa finala; calculatorul care a trimis pachetul trebuie sa converteasca adresa de Internet a destinatarului final in adresa fizica a destinatiei. In al doilea caz, in oricare punct al traiectoriei dintre sursa si destinatie cu exceptia pasului final, pachetul trebuie trimis unui ruter intermediar; prin urmare, emitatorul trebuie sa converteasca adresa de Internet a ruterului intermediar intr-o adresa fizica

Problema punerii in corespondenta a adreselor de nivel inalt cu adresele fizice este cunoscuta ca problema determinarii adreselor [address resolution problem] si a fost rezolvata pe mai multe cai. Unele suite de protocoale mentin in fiecare masina tabele ce contin perechi de adrese de nivel inalt si fizice. Altele rezolva problema codificand adresa hardware in adresa de nivel inalt. Utilizarea oricareia din aceste metode in mod exclusiv conduce la o adresare de nivel inalt, in cel mai bun caz, greoaie.

Doua tipuri de adrese fizice

Exista doua tipuri principale de adrese fizice: adrese fizice mari, fixe (ca in Ethernet) si adrese fizice mici, usor de configurat (ca in inelul cu jeton proNET). Pentru primul tip, problema determinarii adreselor este dificil de rezolvat, dar pentru cel de al doilea tip ea se rezolva usor. Vom considera mai intai cazul mai simplu.

Determinarea adreselor prin conversie directa

Reteaua de tip inel cu jeton proNET utilizeaza numere mici drept adrese fizice si permite utilizatorului sa aleaga o adresa hardware la instalarea unei placi de interfata in calculator. Secretul usurintei cu care se face determinarea adreselor cu un astfel de hardware de retea rezida in aceea ca, intrucat avem libertatea de a alege atat adrese IP cat si cele fizice, le putem alege astfel incat parti din ele sa fie identice. De regula, se atribuie adresele IP cu partea reprezentand hostid egala cu 1, 2, 3, etc. si apoi, la instalarea hardware-l interfetei de retea, se selecteaza o adresa fizica ce corespunde adresei IP. Spre exemplu, administratorul de sistem va selecta adresa fizica 3 pentru un calculator cu adresa IP 192.5.48.3, caci aceasta adresa este de clasa C cu hostid = 3.

Pentru retele precum proNET, calcularea uni adrese fizice dintr-o adresa IP este o operatie banala. Calculul consta in extragerea portiunii hostid din adresa IP. Aceasta extragere este eficienta din punct de vedere al calculului, intrucat ea necesita doar cateva instructiuni masina. Corespondenta este usor de mentinut caci ea poate fi efectuata fara legatura cu datele externe. In fine, la retea pot fi adaugate noi masini fara a necesita schimbarea adreselor deja atribuite sau recompilarea codului.

Din punct de vedere conceptual, alegerea unei solutii de numerotare care sa faca eficienta determinarea adreselor inseamna selectarea unei functii f care sa converteasca adresele IP in adrese fizice. Proiectantul este si el liber sa selecteze o solutie de numerotare a adreselor fizice in functie de hardware. Determinarea adresei IP IA inseamna calcularea


PA = f (IA)


Se doreste o cat mai mare eficienta a calcularii functiei f. Daca multimea adreselor fizice are restrictii, este posibil sa se gaseasca o alta metoda eficienta de punere in corespondenta decat cea din exemplul de mai sus. De exemplu, daca se utilizeaza IP intr-o retea bazata pe conexiuni precum ATM, nu putem alege adresele fizice. In astfel de retele, unul sau mai multe calculatoare stocheaza perechi de adrese, fiecare pereche fiind formata dintr-o adresa Internet si adresa fizica corespunzatoare. De exemplu, valorile pot fi stocate intr-o tabela din memorie in care se va face cautarea perechii. Pentru a face eficienta determinarea adresei in astfel de cazuri, programul poate utiliza o functie hash conventionala pentru cautarea in tabela

Determinarea adreselor prin legatura dinamica

Pentru a intelege de ce este dificila determinarea adreselor pentru unele retele, sa luam cazul tehnologiei Ethernet. Se stie ca fiecarei interfete Ethernet ii este atribuita, la fabricatie, o adresa fizica pe 48 biti. Drept consecinta, cand hardware-ul se defecteaza si este necesara inlocuirea interfetei Ethernet, adresa fizica a masinii se va schimba. Mai mult, intrucat adresa Ethernet are o lungime de 48 biti, ea nu poate fi in nici un fel codificata ca o adresa IP pe 32 biti .




Proiectantii protocoalelor TCP/IP au gasit o solutie creatoare la problema determinarii adreselor pentru retele care poseda capacitatea de difuzare (precum Ethernet). Solutia permite adaugarea de noi masini la retea fara a fi necesara recompilarea codului si nu necesita intretinere si nici o baza de date centralizata. Pentru a evita stocarea unei tabele de corespondente, proiectantii au ales utilizarea unui protocol de nivel jos care sa puna in corespondenta adresele in mod dinamic. Acest protocol, ce ofera un mecanism destul de eficient si, tot odata, usor de intretinut, se numeste Protocolul de determinare a adreselor [Address Resolution Protocol (ARP)]. Acest protocol permite unui calculator sa gaseasca adresa fizica a unui calculator “tinta” din aceeasi retea fizica daca ii cunoaste adresa IP.


Dupa cum arata fig. de mai sus, ideea care sta in spatele determinarii dinamice a adreselor cu ajutorul ARP este simpla: cand calculatorul A vrea sa determine adresa IP IB a calculatorului B din aceeasi retea fizica, el va difuza un pachet special care cere calculatorului cu adresa IP IB sa raspunda cu adresa sa fizica PB. Toate calculatoarele din reteaua fizica, inclusiv B, primesc cererea, dar numai calculatorul B isi va recunoaste adresa IP si va trimite un raspuns continand perechea (IB , PB). Cand A primeste raspunsul, el va utiliza adresa fizica PB pentru a trimite pachetul internet direct lui B.

Memoria cache pentru determinarea adreselor

Faptul ca, pentru a trimite un pachet de la A la B, A trebuie sa trimita mai intai o difuzare care sa ajunga si la B pare lipsit de sens. Dar si mai ciudat pare faptul ca A difuzeaza o intrebare de tipul “cum pot sa ajung la tine?” in loc sa difuzeze pur si simplu pachetul care trebuie sa ajunga si) la B. Dar acest schimb de mesaje are o ratiune: difuzarea este mult prea costisitoare pentru a fi utilizata de fiecare data cand o masina are de transmis un pachet altei masini, intrucat ea reclama ca fiecare masina din retea sa proceseze pachetul difuzat. Pentru a reduce costurile comunicatiei, calculatoarele care utilizeaza ARP mentin in memoria cache ultimele legaturi pe care le-a stabilit intre adresele IP si cele fizice aferente, nefiind astfel nevoite sa utilizeze ARP in mod repetat. Ori de cate ori un calculator primeste un raspuns ARP, el salveaza in aceasta memorie, in vederea inspectarii ei ulterioare, perechea adresa IP - adresa fizica aferenta. Cand transmite un pachet, un calculator inspecteaza intotdeauna mai intai memoria sa cache, pentru a verifica daca exista legatura intre adrese care il intereseaza. Daca ea exista in memoria cache ARP, calculatorul nu mei trebuie sa difuzeze in retea. Experienta a aratat ca, intrucat majoritatea comunicatiilor dintr-o retea implica transferul a mai mult de un pachet, chiar si o mica memorie cache se justifica

Perfectionari ale ARP

Sunt posibile mai multe perfectionari ale mecanismului ARP. Mai intai se va observa ca, daca un calculator A este gata sa utilizeze ARP intrucat doreste sa ii transmita calculatorului B, exista o mare probabilitate ca si B sa trebuiasca sa-i transmita lui A intr-un viitor apropiat. Pentru a anticipa necesitatea lui B de a comunica si pentru a evita un surplus de trafic in retea, A va include corespondenta
(IA , PA) dintre adresele sale
in cererea sa catre B. B va extrage corespondenta intre adresele lui A din cererea sosita de la acesta, va salva aceasta pereche in memoria sa cache de ARP si apoi ii va trimite un raspuns lui A. In al doilea rand, vom observa ca, intrucat A difuzeaza cererea sa initiala, toate masinile din retea o receptioneaza, putand extrage si stoca in memoria lor cache corespondenta dintre adresele IP si fizica ale lui A. In al treilea rand, cand unui calculator i se inlocuieste interfata de retea (pentru ca hardware-ul eis-a defectat, de exemplu), adresa sa fizica se va schimba. Celelalte calculatoare din retea, care au stocat in memoria lor cache ARP corespondenta adresa IP - adresa fizica pentru acest calculator, trebuie sa fie informate de aceasta schimbare, pentru a-si actualiza respectiva corespondenta. Un sistem poate sa le informeze pe celelalte despre noua sa adresa trimitand o difuzare ARP la pornire (boot-are). Asadar regula de lucru a ARP se perfectioneaza astfel: corespondenta adresa IP - adresa fizica a emitatorului se va include in fiecare difuzare ARP; receptoarele isi vor actualiza informatia privind corespondenta adreselor din memoria lor cache inainte de a procesa un pachet ARP

Relatia dintre ARP si celelalte protocoale

ARP ofera un mecanism posibil de punere in corespondenta a adreselor IP cu adresele fizice. Am semnalat, insa, ca unele tehnologii de retele nu au nevoie de asa ceva. Ideea este ca ARP ar deveni complet inutil daca am putea face ca toate hardware-urile de retele sa recunoasca adresele IP. Prin urmare, ARP impune, mai degraba, o noua tehnicade stabilire a adreselor peste mecanismul de adresare utilizat de hardware - oricare ar fi el. De aceea ARP este privit ca un protocol de nivel jos ce face parte din sistemul retelei fizice, nu din protocoalele de internet.



Implementarea ARP

Din punct de vedere functional, ARP este compus din doua parti. Prima parte converteste o adresa IP intr-o adresa fizica la trimiterea unui pachet; a doua parte raspunde cererilor venite de la celelalte masini. Dandu-se o adresa IP a destinatiei, programul consulta memoria sa cache ARP pentru a daca poseda conversia din adresa IP in adresa fizica. Daca da, programul extrage adresa fizica, pune aceasta adresa intr-un cadru cu date si il trimite. Daca nu gaseste corespondenta dintre adrese, programul va trebui sa difuzeze o cerere ARP, asteptand un raspuns.

Aceasta tehnica de difuzare a unei cereri ARP pentru a gasi o corespondenta de adrese poate deveni complicata. Masina destinatie poate fi scoasa din functiune sau doar prea ocupata pentru a mai accepta si aceasta cerere. Intr-un astfel de caz, emitatorul nu va primi un raspuns sau il va primi cu intarziere. Cum o retea Ethernet reprezinta un sistem de livrare cu effort minim, s-ar putea ca cererea ARP difuzata initial se poate chiar pierde (caz in care emitatorul va trebui sa o retransmita - macar o data Intre timp, calculatorul trebuie sa stocheze pachetul transmis initial, pentru a putea fi transmis de indata ce adresa destinatarului va fi determinata (daca intarzierea este mare, calculatorul poate decide sa elimine pachetul stocat pentru a fi trimis In realitate, calculatorul trebuie sa decida daca sa permita celorlalte programe de aplicatii sa se desfasoare in continuare in timp ce el prelucreaza o cerere ARP (majoritatea procedeaza astfel). Daca da, programul trebuie sa faca fata cazului cand o aplicatie genereaza cereri ARP suplimentare pentru aceeasi adresa, fara a difuza cereri multiple pentru o destinatie data

In fine, sa consideram cazul cand masina A a obtinut o corespondenta de adrese pentru masina B, dar, ulterior, hardware-ul lui B s-a defectat si a fost inlocuit. Desi adresa lui B s-a schimbat, corespondenta din memoria cache a lui A nu s-a modificat, astfel ca A va utiliza o adresa hardware inexistenta, facand imposibila o receptie cu succes. Acest caz ilustreaza de ce este important ca programul ARP sa trateze tabela sa de corespondete ca o memorie cache, stergand elementele dupa o perioada data. Desigur, ceasul (timer) pentru orice element din memoria cache trebuie resetat ori de cate ori soseste o difuzare ARP continand corespondenta de adrese (dar nu se reseteaza cand acel element este folosit pentru a trimite un pachet).

A doua parte a codului ARP se ocupa de pachetele ARP ce sosesc din retea. Cand vine un pachet ARP, programul extrage mai intai adresa IP a emitatorului si adresa hardware pereche, apoi examineaza memoria cache locala pentru a constata daca poseda deja un element pentru emitator. Daca exista un element in memoria cache pentru adresa IP data, programul actualizeaza acel element suprascriind adresa fizica obtinuta din pachet. Apoi, receptorul prelucreaza restul pachetului ARP.

Un receptor trebuie sa faca fata la doua tipuri de pachete ARP care sosesc. Daca soseste o cerere ARP, masina receptoare trebuie sa constate daca ea este destinatara cererii (adica o alta masina a difuzat o cerere pentru adresa fizica a receptorului in cauza). Daca da, programul ARP formeaza un raspuns, furnizand adresa sa hardware, si trimite acest raspuns direct inapoi solicitantului. Receptorul adauga de asemenea perechea de adrese a emitatorului in memoria sa cache, daca ea nu este deja prezenta. Daca adresa IP mentionata in cererea ARP nu corespunde adresei locale IP, inseamna ca pachetul cere o corespondenta de adrese pentru o alta masina din retea si, deci, poate fi ignorat.

Un alt caz interesant apare cand soseste raspunsul ARP. In functie de implementare, mecanismul (handler) memoriei cache poate fi nevoit sa creeze un nou element in aceasta memorie sau elementul fusese deja creat cand a fost generata cererea. In oricare din cazuri, odata actualizata memoria cache, receptorul incearca sa puna in corespondenta raspunsul cu o cerere emisa anterior. De obicei, raspunsurile vin ca urmar a unei cereri generate din cauza ca masina are un pachet de transmis. Intre momentul cand o masina isi difuzeaza cererea ARP si cel in care primeste raspunsul, programele de aplicatii sau protocoalele de nivel mai inalt pot genera cereri suplimentare pentru aceeasi adresas programul trebuie sa-si “aminteasca” ca a trimis deja o cerere si sa nu mai trimita inca una. De regula, programul ARP plaseaza pachetele suplimentare intr-o coada de asteptare. Odata raspunsul sosit si corespondenta de adrese conoscuta, programul ARP scoate pachetele din coada, plaseaza fiecare pachet intr-un cadru si utilizeaza corespondenta de adrese pentru a completa adresa fizica a destinatiei. Daca nu a emis anterior o cerere pentru adresa IP din raspuns, masina actualizeaza adresa fizica din elementul aferent din memoria sa cache si, apoi, inceteaza pur si simplu prelucrarea pachetului.

Incapsularea mesajelor ARP si identificarea lor

Mesajelele ARP sunt transportate de la o masina la alta in cadre fizice, in campul de date al acestora. Fig. ce urmeaza ilustreaza incapsularea mesajelor ARP.





MESAJUL  ARP


ANTETUL CADRULUI

CAMPUL DE DATE AL CADRULUI


Pentru a marca un cadru ce poarta un mesaj ARP, emitatorul atribuie o valoare speciala campului tipul cadrului din antetul cadrului si apoi depune mesajul ARP in campul de date al cadrului. Cand soseste un cadru la un calculator, software-ul de retea utilizeaza tipul cadrului pentru a determina continutul acestuia. In majoritatea tehnologiilor, se utilizeaza o unica valoare pentru tipul cadrului pentru toate cadrele care poarta mesaje ARP, iar software-ul de retea de la receptor va trebui sa examineze in continuare mesajul ARP pentru a face distinctia intre cereri si raspunsuri ARP.

Formatul mesajelor in protocolul ARP

Spre diferenta de majoritatea protocoalelor, datele din pachetele ARP nu au un antet de format fix. Pentru a face ARP utilizabila pentru o mare gama de tehnologii de retea, lungimile campurilor ce contin adresele depind de tipul de retea. Totusi, pentru a face posibila interpretarea oricarui mesaj, antetul contine, aproape de inceputul sau, niste campuri fixe care indica lungimile adreselor ce se afla in campurile urmatoare.

Exemplul din fig. de mai jos ilustreaza formatul pe 28 octeti al mesajelor ARP, utilizat intr-o retea Ethernet (in care adresele fizice sunt pe 6 octeti = 48 biti) pentru convertirea adreselor IP (care au o lungime de 4 octeti) .


0

8

16

24

31

TIPUL HARDWARE-ULUI
TIPUL PROTOCOLULUI
LUNGIME AH
LUNGIME AP

OPERATIUNEA

AH EMITATOR (octetii 0 ÷ 3)

AH EMITATOR (octetii 4 si 5)

IP EMITATOR (octetii 0 si 1)

IP EMITATOR (octetii 2 si 3)

AH DESTINATAR (octetii 0 si 1)

AH DESTINATAR (octetii 2 ÷ 5)

IP DESTINATAR (octetii 0 ÷ 3)


Campul TIPUL HARDWARE-ULUI indica tipul interfetei hardware pentru care emitatorul cere un raspuns; el contine valoarea 1 pentru Ethernet. Campul TIPUL PROTOCOLULUI specifica tipul adresei de protocol de nivel inalt furnizat de emitator; el contine 080016 pentru adresele IP. Campul OPERATIUNEA precizeaza daca mesajul este: o cerere ARP (1), un raspuns ARP (2), o cerere RARP (3) sau un raspuns RARP **) (4). Campurile LUNGIME AH si LUNGIME AP permit utilizarea ARP la retele arbitrare, intrucat ele specifica lungimea adresei hardware si respectiv lungimea adresei de protocol de nivel inalt. Emitatorul furnizeaza adresa sa hardware si adresa sa IP - daca le cunoaste - in campurile AH EMITATOR si respectiv IP EMITATOR. La efectuarea unei cereri, emitatorul furnizeaza si adresa IP a destinatarului (pentru ARP) sau adresa hardware a destinatarului (pentru RARP), utilizand respectiv campurile AH DESTINATAR si IP DESTINATAR. Inainte de a raspunde, masina destinatar completeaza adresele lipsa, schimba intre ele adresele destinatarului si emitatorului si modifica operatiunea intr-un raspuns. Prin urmare, un raspuns transporta adresele IP si hardware atat ale masinii care a facut cererea originara cat si ale masinii cu care dorea sa ia legatura.




Intrucat punerea directa in corespondenta este mai convenabila si mai eficienta decat legatura dinamica, viitoarea generatie a IP a fost proiectata astfel incat sa permita codificarea adreselor pe 48 biti in adrese IP.

In aceasta fig. (ca si in cele ce vor urma) s-a adoptat - din motive grafice - reprezentarea mesajului cu 4 octeti pe linie; dar (ca la majoritatea protocoalelor ce vor urma) campurile de lungimi variabile din pachetele ARP nu se aliniaza exact la 32 biti, fapt ce necesita atentie la urmarirea formatului. Astfel, spre exemplu, adresa hardware a emitatorului - notata cu AH EMITATOR - ocupa 6 octeti consecutivi, astfel ca ea se continua pe urmatoarea linie a reprezentarii formatului.

RARP este un protocol ce serveste la determinarea unei adrese de internet la pornirea unui calculator si care foloseste acelasi format de mesaje; el va fi descris in capitolul urmator.