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... r4f14fh
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.