Modelul arhitectural ISO



Modelul arhitectural ISO-OSI


Vom lamuri pentru inceput intelesul unui cuvant, standard, care, alaturi de termeni precum contor, tutorial, implementare, specificatie produc frisoane unei 'anumite parti' a tineretului studios
Odata cu aparitia unei noi tehnologii, se manifesta si un fenomen de proliferare a produselor ce utilizeaza tehnologia respectiva, fiecare producator dorind sa impuna pe piata propria realizare (mai buna sau mai proasta decat altele). Dupa un anumit timp, piata realizeaza o 'selectie naturala', ramanand in competitie doar produsele de calitate (mai sunt si cateva exceptii, cum ar fi acea firma a carui nume incepe cu M, se termina cu T si are un produs W). Acest interval de timp duce la 'maturizarea' tehnologiei respective si reprezinta un test al utilitatii ei. Urmeaza interminabile discutii si controverse intre firmele combatante, iar o comisie internationala incearca sa stabileasca un set de reguli si conventii obligatorii pentru toti cei ce dezvolta produse bazate pe tehnologia in discutie. Astfel se naste un standard . 'Fizic', standardul se prezinta sub forma unui 'metru cub' de documentatie, prea putin accesibila omului de rand, continand recomandari pe care nu toti le respecta sau ar fi imposibil ca, respectandu-le, sa 'iasa' un produs functional (sfarsitul glumei). Standardul este important pentru unificarea diverselor variante ale tehnologiei respective si defineste un set de reguli generale, universal acceptate, contribuind la aparitia de produse portabile (na, a mai aparut un termen !).
Standardele sunt aprobate de organizatii internationale, cum ar fi: OSI (International Standards Organisation), ECMA (European Computer Manufacturer's Association), IEEE (Institute of Electrical and Electronical Engineers), ANSI.
Elaborarea standardelor pentru retele a devenit necesara datorita diversificarii echipamentelor si serviciilor, care a condus la aparitia de retele eterogene din punctul de vedere al tipurilor de echipamente folosite. In plus, multitudinea de medii fizice de comunicatie a contribuit la decizia de a defini reguli precise pentru interconectarea sistemelor. ISO a elaborat un model arhitectural de referinta pentru interconectarea calculatoarelor, cunoscut sub denumirea de





modelul arhitectural ISO-OSI (Open System Interconnection).

Modelul ISO-OSI imparte arhitectura retelei in sapte nivele, construite unul deasupra altuia, adaugand functionalitate serviciilor oferite de nivelul inferior. Modelul nu precizeaza cum se construiesc nivelele, dar insista asupra serviciilor oferite de fiecare si specifica modul de comunicare intre nivele prin intermediul interfetelor. Fiecare producator poate construi nivelele asa cum doreste, insa fiecare nivel trebuie sa furnizeze un anumit set de servicii. Proiectarea arhitecturii pe nivele determina extinderea sau imbunatatirea facila a sistemului. De exemplu, schimbarea mediului de comunicatie nu determina decat modificarea nivelului fizic, lasand intacte celelalte nivele.
In figura 2 puteti vedea cele sapte nivele ale modelului arhitectural OSI.


In cele ce urmeaza voi prezenta cate ceva despre fiecare nivel:
1. Nivelul fizic are rolul de a transmite datele de la un calculator la altul prin intermediul unui mediu de

comunicatie. Datele sunt vazute la acest nivel ca un sir de biti. Problemele tipice sunt de natura electrica: nivelele de tensiune corespunzatoare unui bit 1 sau 0, durata impulsurilor de tensiune, cum se initiaza si cum se opreste transmiterea semnalelor electrice, asigurarea pastrarii formei semnalului propagat. Mediul de comunicatie nu face parte din nivelul fizic.
2. Nivelul legaturii de date corecteaza erorile de transmitere aparute la nivelul fizic, realizand o comunicare corecta intre doua noduri adiacente ale retelei. Mecanismul utilizat in acest scop este impartirea bitilor in cadre ( frame), carora le sunt adaugate informatii de control. Cadrele sunt transmise individual, putand fi verificate si confirmate de catre receptor. Alte functii ale nivelului se refera la fluxul de date (astfel incat transmitatorul sa nu furnizeze date mai rapid decat le poate accepta receptorul) si la gestiunea legaturii (stabilirea conexiunii, controlul schimbului de date si desfiintarea conexiunii).
3. Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si destinatie, trecand eventual prin noduri intermediare (routing ). Este foarte important ca fluxul de date sa fie astfel dirijat incat sa se evite aglomerarea anumitor zone ale retelei (congestionare ). Interconectarea retelelor cu arhitecturi diferite este o functie a nivelului retea.
4. Nivelul transport realizeaza o conexiune intre doua calculatoare gazda (host) detectand si corectand erorile pe care nivelul retea nu le trateaza. Este nivelul aflat in mijlocul ierarhiei, asigurand nivelelor superioare o interfata independanta de tipul retelei utilizate. Functiile principale sunt: stabilirea unei conexiuni sigure intre doua masini gazda, initierea transferului, controlul fluxului de date si inchiderea conexiunii.
5. Nivelul sesiune stabileste si intretine conexiuni (sesiuni) intre procesele aplicatie, rolul sau fiind acela de a permite proceselor sa stabileasca 'de comun acord' caracteristicile dialogului si sa sincronizeze acest dialog.
6. Nivelul prezentare realizeaza operatii de transformare a datelor in formate intelese de entitatile ce intervin intr-o conexiune. Transferul de date intre masini de tipuri diferite (Unix-DOS, de exemplu) necesita si codificarea datelor in functie de caracteristicile acestora. Nivelul prezentare ar trebui sa ofere si servicii de criptare/decriptare a datelor, in vederea asigurarii securitatii comunicatiei in retea.
7. Nivelul aplicatie are rolul de 'fereastra' de comunicatie intre utilizatori, acestia fiind reprezentati de entitatile aplicatie (programele). Nivelul aplicatie nu comunica cu aplicatiile ci controleaza mediul in care se executa aplicatiile, punandu-le la dispozitie servicii de comunicatie. Printre functiile nivelului aplicatie se afla:
o identificarea partenerilor de comunicatie, determinarea disponibilitatii acestora si autentificarea lor
o sincronizarea aplicatiilor cooperante si selectarea modului de dialog
o stabilirea responsabilitatilor pentru tratarea erorilor
o identificarea constrangerilor asupra reprezentarii datelor
o transferul informatiei
Primele trei nivele de la baza ierarhiei (fizic, legatura de date, retea) sunt considerate ca formand o subretea de comunicatie . Subreteaua este raspunzatoare pentru realizarea transferului efectiv al datelor, pentru verificarea corectitudinii transmisiei si pentru dirijarea fluxului de date prin diversele noduri ale retelei. Acest termen trebuie inteles ca desemnand 'subreteaua logica', adica multimea protocoalelor de la fiecare nivel care realizeaza functiile de mai sus. Termenul de subretea este utilizat si pentru a desemna liniile de transmisie si echipamentele fizice care realizeaza dirijarea si controlul transmisiei.
Modelul OSI nu este implementat in intregime de producatori, nivelele sesiune si prezentare putand sa lipseasca (unele din functiile atribuite acestora in modelul OSI sunt indeplinite de alte nivele). Modelul OSI este un model orientativ, strict teoretic, realizarile practice fiind mai mult sau mai putin diferite. Ei, va zice unul dintre voi, pai ce-am batut campii atata cu un model teoretic ? Mie nu-mi foloseste asta la nimic !
Lucrurile nu stau chiar asa. Intelegerea unui alt model este mult usurata de studierea modelului ISO-OSI, motiv pentru care orice carte serioasa il prezinta detaliat.
Sa vedem cum se realizeaza un transfer de date intre doua masini gazda. Cel mai bun exemplu este modul in care putem citi o pagina web aflata pe un calculator situat la mare distanta:
· utilizatorul lanseaza un program pentru vizualizarea paginilor web (browser)
· browserul este entitatea aplicatie care va 'negocia' pentru noi obtinerea paginii
· nivelul aplicatie va identifica existenta resursei cerute de client (clientul este browserul, care-l reprezinta pe utilizator in aceasta 'tranzactie') si a posesorului acesteia (serverul-inteles ca fiind entitatea ce ofera resursa ceruta nu calculatorul central al unei retele; in cazul nostru avem de-a face cu un server de web). Se realizeaza autentificarea serverului (se verifica daca partenerul este intr-adevar cine pretinde ca este (cam ciudata chestie pentru o retea, nu ?)) si se stabileste daca acesta este disponibil (=poate si vrea sa ne satisfaca cererea).
· Nivelul sesiune va stabili o conexiune intre procesul client si procesul server
· Nivelul transport se va ocupa de intretinerea conexiunii si de corectarea erorilor netratate la nivelul retea
· nivelul retea va asigura transferul datelor in secvente (pachete), stabilind drumul acestora intre server si client

Lucrurile sunt ceva mai complicate decat in cele prezentate mai sus. Datele sosesc prin intermediul mediului de comunicatie ca un flux de biti. La nivelul legaturii de date, bitii sunt transformati in cadre, iar la nivelul retea in pachete (vom vedea mai tarziu cum arata un pachet). In cele din urma, datele ajung la nivelul aplicatie unde sunt preluate de browser si ne sunt prezentate. Fiecare nivel adauga sau sterge o parte din informatiile de control atasate datelor de celelalte nivele.