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.