Modelul de reţea ISO/OSI

      O rețea de calculatoare este formată din două sau mai multe calculatoare care comunică între ele. Un internet (atenţie! cu i mic) reprezintă o reţea de reţele.
      Primul lucru de care trebuie ţinut cont atunci când ne gândim la comunicarea între calculatoare este suportul material prin intermediul căruia se face transferul de informaţii de la un calculator la altul. Cel mai uzual mediu de transfer al informaţiei este, în momentul actual, cablul. Din ce în ce mai mult se foloseşte ca mediu de transport, aerul, prin intermediul undelor electro-magnetice sau luminoase (infraroşu). Avantajul principal al unei astfel de reţele îl reprezintă mobilitatea elementelor (calculatoarelor). Principalul dezavantaj este costul ridicat al echipamentelor de reţea.
      Nu voi insista asupra echipamentelor fizice necesare construirii unei reţele, unele din ele fiind prezentate în rubrica Internet al ER din februarie 2000.
      Putem face o comparaţie între sistemul de comunicare între calculatoarele dintr-o reţea şi un grup de oameni. Să presupunem că un număr de oameni s-au întâlnit dintr-un oarecare motiv (şedinţă, etc.). În momentul în care încep să discute vor folosi anumite reguli. De exemplu, ce s-ar întâmpla dacă ar vorbi toţi deodată? Nimeni nu ar înţelege nimic şi rezultatul final al discuţiei ar fi nul. De aceea ei se conformează unor anumite reguli nescrise (de bun simţ) pentru a ajunge, totuşi, la un rezultat. Aşa şi calculatoarele, trebuie să folosească nişte reguli, de data aceasta scrise, pentru a avea o finalitate. Aceste reguli, pe care calculatoarele, respectiv programele de reţea, le folosesc pentru a transmite şi recepţiona date, se numesc protocoale.
      Între 1977 şi 1984 specialiştii în reţele au dezvoltat un model de reţea numit model de referinţă pentru interconectarea sistemelor deschise (Open Systems Interconnection - OSI). Acest model a fost dezvoltat pornind de la o propunere a Organizaţiei Internaţionale pentru Standarde (International Standards Organization - ISO).
      În literatura despre reţele se foloseşte, pentru denumirea acestui model de referinţă, prescurtarea ISO/OSI. În continuare vom prezenta modelul ISO/OSI din punctul de vedere al programatorului, care, pentru a face programe de reţea trebuie să stăpânească conceptele cu care vine acest model.
      O prima caracteristică este stratificarea. Din acest considerent reţeaua este împărţită în mai multe niveluri: pentru a permite o organizare în module funcţionale bine definite. Pentru proiectanţii de reţele modelul ISO/OSI reprezintă o reţea ideală. Ei folosesc acest model pentru a construi reţele reale şi pot schimba atât numărul de nivele cât şi numele sau funcţiile acestora. Ca urmare, chiar şi o reţea realizată pe baza modelului ISO/OSI poate conţine diferenţe semnificative faţă de model sau de alte reţele bazate pe acesta.
      Într-o reţea stratificată fiecare nivel oferă funcţii sau servicii specifice nivelelor adiacente, protejând nivelul de deasupra de detaliile legate de implementarea funcţiilor de nivel mai coborât.
      Atunci când două calculatoare "discută" unul cu celalalt, nivelurile corespondente din fiecare, poartă de asemenea o conversaţie. Nivelele corespondente din calculatoare diferite din reţea se numesc procese pereche. Reţelele nu transferă datele direct între procesele pereche ci se produc comunicaţii virtuale. În realitate, toate comunicaţiile dintr-o reţea au loc la nivelul cel mai de jos al reţelei (nivelul fizic), unde există în realitate legătura hardware.
      Spuneam, anterior, că fiecare nivel din modelul ISO/OSI oferă servicii specifice de comunicaţii nivelului superior. Să vedem care este diferenţa dintre serviciu şi protocol. Să luăm de exemplu serviciul poştal: când trimitem o scrisoare cuiva, scriem adresa persoanei pe plic. Serviciul sau funcţia oferită de adresă este livrarea corectă a corespondenţei. Adresele de pe plicuri se conformează în mod normal unui standard, unor reguli: prima linie conţine numele destinatarului, a doua conţine numele si numărul străzii, eventual blocul şi etajul, iar linia trei: oraşul, ţara şi codul poştal. Formatul în care se scrie adresa pe plic se bazează pe un protocol poştal.
      În acelaşi mod, putem spune că un serviciu de reţea defineşte sau descrie o funcţie şi un scop (exemplu: detecţia erorilor). Un protocol de reţea defineşte sau descrie formatul şi structura pachetelor de date pe care modulele de soft pentru reţea le folosesc pentru a asigura serviciul.
      Din punct de vedere al conexiunii realizate între cele două calculatoare din reţea, serviciile pot fi de două feluri: servicii orientate pe conexiune şi servicii fără conexiune. Un serviciu orientat pe conexiune creează un circuit virtual, care dă iluzia unei căi fizice, neîntrerupte de comunicaţie. Totuşi, nu există un circuit real ci se creează doar impresia unui canal solid pentru comunicaţii. Am putea compara acest tip de serviciu cu o convorbire telefonică. Atunci când dorim să vorbim cu cineva formăm un număr la telefon, număr ce este preluat de centrala telefonică, care, la rândul ei, din centrală in centrală, ajunge până la zona geografică în care se află persoana căutată. În momentul în care persoana căutată ridică receptorul şi începe discuţia, avem impresia că între cele doua telefoane s-a creat o cale neîntrerupta de comunicaţie, În realitate acest canal este compus din mai multe segmente, care, fizic, sunt poziţionate între centralele telefonice de pe parcurs.
      Un serviciu fără conexiune realizează comunicaţia sub forma unui serviciu de distribuţie. Să facem comparaţie cu un serviciu expres de distribuire a poştei cu ajutorul curierilor călare. Pentru a livra o scrisoare, un curier o transportă de la o staţie de poştă la alta, unde o preda altui curier. Scrisoarea ajunge în cele din urmă la destinaţie, dar pot interveni întârzieri. Dacă în loc de o scrisoare trebuie să transmitem mai multe colete mari, este probabil ca fiecare colet să necesite un curier propriu. Aceşti curieri au viteze şi pot alege trasee, diferite până la destinaţie. Deşi toate coletele vor ajunge în cele din urmă la destinaţie, unele din ele pot să sufere mari întârzieri. Iată deci, o altă caracteristică a modelului ISO/OSI: secvenţialitatea datelor.
      Un mesaj, între doua calculatoare, poate fi divizat în mai multe unităţi de date numite pachete. Calculatorul emitent va transmite aceste pachete în aceeaşi ordine în care apar în mesajul iniţial. Calculatorul destinaţie poate să recepţioneze aceste pachete în altă ordine decât cea de la transmisia lor. Un protocol orientat pe conexiune garantează recepţionarea pachetelor în aceeaşi ordine în care au fost trimise. Protocoalele fără conexiune nu garantează secvenţialitatea, ele având sarcina să asambleze corect pachetele pentru a se obţine mesajul iniţial.
      Să facem în continuare o prezentare mai detaliată a nivelurilor din modelul ISO/OSI.
      1. Nivelul fizic - transmite datele prin intermediul canalelor de comunicaţie din reţea. El include elementele fizice (hard) ale reţelei, metodele de transmisie a datelor (semnale de control, temporizări, etc.), tehnologiile de reţea (Ethernet, ARCNET, token ring). Tot nivelul fizic stabileşte proprietăţile mecanice şi electrice ale canalelor de comunicaţie, ca şi detaliile procedurale referitoare la aceste caracteristici.
      2. Nivelul legătură de date - transferă datele brute între nivelul fizic şi nivelul reţea, fiind reprezentat de placa de reţea. Aici se fragmentează datele ce urmează a fi transmise şi se împachetează în vederea călătoriei prin mediul de conectare. De asemeni, în partea cealaltă, unde se recepţionează datele, se reface mesajul transmis. Unităţile de date rezultate din formatarea de către acest nivel a mesajului sunt denumite în general cadre. Cadrele sunt folosite şi pentru a detecta şi corecta alterarea datelor în canalul de comunicaţie.
      Pentru a detecta alterarea datelor se folosesc coduri ciclice redundante (CRC). CRC-ul pe 32 de biţi este rezultatul unor calcule complexe, efectuate asupra datelor transmise în cadrul respectiv. Emiţătorul calculează CRC-ul şi apoi îl ataşează la sfârşitul cadrului de date. Receptorul recalculează CRC-ul şi îl compară cu cel conţinut în cadrul de date.
      Celelalte date care compun cadrul sunt necesare pentru identificarea corectă şi rutarea cadrului. Câmpul "tip cadru" este utilizat, de receptor, pentru a determina protocolul utilizat când datele "urcă" prin nivelele din reţea.
      3. Nivelul reţea - determină calea sau ruta pe care o vor urma datele pentru a ajunge la destinaţie. Ca urmare, pe acest nivel, se gestionează traficul, congestiile şi ratele de transfer (vitezele) de-a lungul liniilor de transmisie. Pentru îndeplinirea funcţiei de rutare se folosesc, în general, tabelele de rutare, care pot fi de două feluri: statice sau dinamice. Când se foloseşte un tabel static, acesta trebuie actualizat de administratorul reţelei. Tabelele dinamice de rutare sunt actualizate automat de către software-ul de reţea. Soluţia cu tabele de rutare statice se adoptă atunci când configuraţia reţelei se schimbă rar.
      4. Nivelul transport - livrează datele, în interiorul calculatorului receptor (primite de la nivelul reţea) la aplicaţia corespunzătoare.
      Termenul "lăţime de bandă" este folosit pentru a descrie cantitatea de date care circulă printr-un canal de comunicaţie într-un interval de timp. Făcând o comparaţie cu debitul de apă de la un robinet, putem micşora timpul necesar pentru umplerea unui pahar dacă mărim debitul de apă (deschidem mai tare robinetul).
      Pentru a mări lăţimea de bandă (debitul), nivelele transport pot crea mai multe conexiuni la nivel reţea pentru o singură conexiune la nivel transport.
      În linii mari putem spune că nivelul reţea gestionează traficul între mai multe calculatoare, pe când nivelul transport gestionează traficul între mai multe procese dintr-un calculator. Ambele funcţii sunt foarte importante dar sunt complet diferite.
      5. Nivelul sesiune - negociază conexiunea între procese sau aplicaţii de pe calculatoare diferite; gestionează detalii ca: nume de cont, parole şi autorizarea utilizatorilor. De fiecare dată când dorim să utilizăm un serviciu de reţea trebuie să efectuăm operaţia de login. De asemenea, un utilizator, poate creea mai multe sesiuni prin executarea mai multor operaţii login. Pentru fiecare login (sesiune) nivelul sesiune negociază şi stabileşte conexiuni între procese sau aplicaţii situate pe calculatoare diferite.
      Înainte de a stabili o conexiune, cele două calculatoare trebuie să negocieze nişte parametri: rata de transfer a datelor, controlul erorilor si tipul transferului de date (simplex, semi-duplex sau duplex). O dată conexiunea stabilită, aceşti parametri pot fi modificaţi funcţie de condiţiile de trafic, schimbarea făcându-se "la sugestia" oricărui calculator.
      Când o reţea nu necesită servicii de comunicaţii între aplicaţii, se poate elimina nivelul sesiune. În Internet nivelul sesiune este eliminat complet.
      6. Nivelul prezentare - gestionează datele legate de interfaţa reţelei cu imprimantele, cu monitoarele şi cu formatele de fişiere. Acest nivel oferă servicii de reţea utile, dar nu esenţiale, cum ar fi:

  • criptarea datelor. Se preferă criptarea pe acest nivel pentru ca datele să nu fie vizibile altor nivele de reţea,
  • comprimarea datelor şi creşterea lăţimii de bandă,
  • afişarea datelor.

      7. Nivelul aplicaţie - conţine detalii despre aplicaţiile din întreaga reţea. Un programator obişnuit creează, în general, programe pentru acest nivel. Celelalte programe, care nu se încadrează în terminologia "în general" sunt programele distribuite (programe care conectează procesoarele mai multor calculatoare dintr-o reţea, pentru a participa simultan la rezolvarea unei anumite probleme de calcul.
      În articolul următor vom vedea cum respectă TCP/IP modelul ISO/OSI.

 
Free Web Hosting