S. Buraga-Introducere in retele de calculatoare.pdf

S. Buraga-Introducere in retele de calculatoare.pdf S. Buraga-Introducere in retele de calculatoare.pdf

08.06.2013 Views

FACULTATEA DE INFORMATICA, UNIVERSITATEA “AL.I.CUZA” - IASI INTRODUCERE IN RETELE DE CALCULATOARE SABIN CORNELIU BURAGA busaco@infoiasi.ro http://www.infoiasi.ro/~busaco

FACULTATEA DE INFORMATICA, UNIVERSITATEA “AL.I.CUZA” - IASI<br />

INTRODUCERE IN<br />

RETELE DE CALCULATOARE<br />

SABIN CORNELIU BURAGA<br />

busaco@<strong>in</strong>foiasi.ro<br />

http://www.<strong>in</strong>foiasi.ro/~busaco


NOTA AUTORULUI<br />

In cele ce urmeaza vom face o prezentare generala a problematicii <strong>retele</strong>lor <strong>de</strong><br />

<strong>calculatoare</strong> si Internet-ului, ca retea a <strong>retele</strong>lor, <strong>in</strong>sist<strong>in</strong>d asupra protocoalelor <strong>de</strong> comunicatie d<strong>in</strong>tre<br />

<strong>calculatoare</strong>le conectate la retea si asupra unor aspecte practice legate <strong>de</strong> Internet (istoric,<br />

arhitectura, servicii importante etc.). Cursul este <strong>in</strong>sotit si <strong>de</strong> o anexa cupr<strong>in</strong>z<strong>in</strong>d aspecte mai<br />

tehnice, legate <strong>de</strong> programarea <strong>in</strong> retea, folos<strong>in</strong>d socket-uri <strong>in</strong> limbajul C standard, pe sisteme <strong>de</strong><br />

operare compatibile UNIX (L<strong>in</strong>ux).


PARTEA 1<br />

PREAMBUL<br />

RETEA = un sistem <strong>de</strong> <strong>calculatoare</strong>, term<strong>in</strong>ale si baze <strong>de</strong> date conectate pr<strong>in</strong> l<strong>in</strong>ii <strong>de</strong> comunicatii.<br />

Ele permit utilizatorilor diferitelor tipuri <strong>de</strong> <strong>calculatoare</strong> sa schimbe date si<br />

sa foloseasca programe speciale sau supercomputere (ma<strong>in</strong>frame).<br />

Dimensiunile ei fizice merg <strong>de</strong> la o retea locala la una <strong>in</strong>ternationala.<br />

Raspandirea <strong>in</strong>formatiilor pr<strong>in</strong>tre grupurile <strong>de</strong> <strong>calculatoare</strong> si utilizatorii lor constituie un<br />

sector pr<strong>in</strong>cipal al Erei Informationale. Acceptarea calculatorului personal si a <strong>retele</strong>lor locale <strong>in</strong><br />

timpul anilor ’80 a dus la capacitatea <strong>de</strong>-a accesa <strong>in</strong>formatii <strong>in</strong> baze <strong>de</strong> date aflate la distanta;<br />

<strong>in</strong>carcarea unor aplicatii <strong>de</strong> pe computere aflate, <strong>de</strong> asemenea, la mare distanta; trimiterea unui<br />

mesaj catre un prieten <strong>in</strong> alta tara si partajarea unor fisiere cu un coleg <strong>de</strong> birou, toate acestea<br />

facandu-se cu ajutorul unui PC.<br />

Retele care permit ca toate acestea sa fie facute asa <strong>de</strong> usor sant <strong>de</strong> fapt entitati sofisticate<br />

si complexe. Calculatoarele se sprij<strong>in</strong>a pe efectivitatea lor asupra multor componente ce lucreaza<br />

<strong>in</strong>tre ele. Design-ul si asamblarea <strong>retele</strong>lor mondiale <strong>de</strong> computere pot fi privite ca una d<strong>in</strong> cele<br />

mai importante m<strong>in</strong>uni tehnologice ale ultimei <strong>de</strong>ca<strong>de</strong>.<br />

MODEM-URI SI CALCULATOARE DE BIROU<br />

In anii ’70 <strong>calculatoare</strong>le existente erau foarte scumpe, erau mas<strong>in</strong>i fragile care trebuiau<br />

supravegheate <strong>de</strong> specialisti si pastrate <strong>in</strong>tr-un mediu controlat, special. Ele puteau fi folosite fie la


conectarea directa cu un term<strong>in</strong>al sau utilizand o l<strong>in</strong>ie <strong>de</strong> telefon si un mo<strong>de</strong>m pentru a avea acces<br />

la distanta. Datorita pretului lor ridicat t<strong>in</strong><strong>de</strong>au <strong>de</strong>-a fi consi<strong>de</strong>rate resurse centralizate asupra<br />

carora utilizatorul trebuia sa aranjeze propriul lor acces. In tot acest timp companiile ce ofereau<br />

timp <strong>de</strong> acces la un computer ma<strong>in</strong>frame s-au <strong>de</strong>zvoltat. Retelele <strong>de</strong> <strong>calculatoare</strong> d<strong>in</strong> aceasta<br />

perioada nu erau disponibile pe piata. Chiar si asa una d<strong>in</strong> cele mai mari <strong>de</strong>zvoltari menite sa<br />

modifice lumea mo<strong>de</strong>rna a tehnologiiilor a fost <strong>in</strong>itiata la acea vreme. Aceasta realizare este<br />

cunoscuta astazi sub numele <strong>de</strong> Internet.<br />

RETELE LOCALE<br />

Unul d<strong>in</strong> cele mai dramatice evenimente <strong>in</strong> <strong>retele</strong>le <strong>de</strong> <strong>calculatoare</strong> a fost <strong>in</strong>troducerea si<br />

<strong>de</strong>zvoltarea rapida a <strong>retele</strong>lor locale, ca un mod <strong>de</strong> standardizare a sistemelor <strong>de</strong> conectare a<br />

computerului folsite <strong>in</strong> firma. Acest lucru <strong>in</strong>semna conectarea impreuna a unui numar <strong>de</strong><br />

elemente computationale. La cel mai simplu nivel o retea locala furniza nu mai mult <strong>de</strong>cat un<br />

mediu <strong>de</strong> conectare (cum ar fi un cablu coaxial la care toate <strong>calculatoare</strong>le si imprimantele sant<br />

conectate) impreuna cu un set <strong>de</strong> reguli ce guverneaza accesul catre acel mediu. Cea mai folosita<br />

retea locala, Ethernet, utilizeaza un mecanism numit CALL SENSE MULTIPLE ACCESS –<br />

COLISION DETECT/CSMA - CD (Accces multiplu a sensului <strong>de</strong> apel – <strong>de</strong>tectie <strong>de</strong> coliziuni).<br />

Aceasta <strong>in</strong>seamna ca fiecare componenta conectata poate folosi legatura cand s-a stabilit ca nu<br />

exista un alt dispozitiv care-l foloseste. Daca coliziunea totusi se produce dispozitivul care sonda<br />

conexiunea se retrage si <strong>in</strong>cearca d<strong>in</strong> nou mai tarziu. Ethernet transforma date la viteza <strong>de</strong> 10<br />

MB/sec, ceea ce este suficient <strong>de</strong> rapid pentru a face ca distantele d<strong>in</strong>tre dispozitive sa fie<br />

nesemnificative. Ele apar ca si cum ar fi direct conectate cu <strong>de</strong>st<strong>in</strong>atia lor. Ethernet-ul si CSMA-<br />

CD sant exemple <strong>de</strong> <strong>retele</strong> locale. Exista multe componente diferite ce alcatuiesc acest sistem<br />

(cum ar fi magistrala, <strong>in</strong>elul, conexiunea stea) si un numar diferit <strong>de</strong> protocoale <strong>de</strong> acces. In ciuda<br />

acestei varietati toate <strong>retele</strong>le locale dau posibilitatea accesarii caracteristicilor <strong>in</strong> care ele sant<br />

limitate <strong>in</strong> distanta (fizic, ele acopera o s<strong>in</strong>gura cladire) si sant suficient <strong>de</strong> rapi<strong>de</strong> pentru a face<br />

reteaua <strong>de</strong> conectare <strong>in</strong>vizibila dispozitivelor care o folosesc. In plus, <strong>retele</strong>le locale mo<strong>de</strong>rne pot<br />

oferi utilizatorilor o gama larga <strong>de</strong> facilitati sofisticate. Pachetele <strong>de</strong> software <strong>de</strong> management sant<br />

disponibile pentru a controla modul <strong>in</strong> care dispozitivele sant configurate <strong>in</strong> reteaua locala, cum<br />

sant adm<strong>in</strong>istrate, utilizate si cum resursele <strong>de</strong> retea sant controlate. O larga structura adoptata a<br />

<strong>retele</strong>i locale este <strong>de</strong>-a avea un numar <strong>de</strong> servicii ce sant valabile unui numar, <strong>de</strong> obicei, mult mai


mare <strong>de</strong> clienti. Vechile computere (acele puternice) furnizau servicii cum ar fi: controlul<br />

imprimantei, a partajarii fisierelor si posta.<br />

ROUTERE SI PUNTI DE LEGATURA<br />

Facilitatile multor <strong>retele</strong> locale sant foarte puternice. Multe companii nu doresc sa pose<strong>de</strong><br />

<strong>in</strong>sule, izolate <strong>de</strong> facilitatile <strong>de</strong> calcul. Ele, <strong>de</strong> obicei, doresc sa ext<strong>in</strong>da facilitatile pe-o arie larga, <strong>in</strong><br />

asa fel <strong>in</strong>cat acele grupuri sa poata lucra fara a fi nevoie sa fie localizate. Routerele si puntile <strong>de</strong><br />

legatura sant dispozitive specializate ce permit ca doua sau o s<strong>in</strong>gura retea locala sa fie conectate.<br />

Puntea <strong>de</strong> legatura este, mai <strong>de</strong> graba, un dispozitiv <strong>de</strong> baza, el putand sa controleze doar <strong>retele</strong><br />

locale <strong>de</strong> acelasi tip. Routerul este o componenta mai <strong>in</strong>teligenta ce poate <strong>in</strong>terconecta mai multe<br />

tipuri diferite <strong>de</strong> <strong>retele</strong> <strong>de</strong> <strong>calculatoare</strong>. Multe companii mari au <strong>retele</strong> <strong>de</strong> date ce se regasesc <strong>in</strong>tr-o<br />

colectie <strong>de</strong> routere si <strong>retele</strong> locale.<br />

D<strong>in</strong> punct <strong>de</strong> ve<strong>de</strong>re al utilizatorului acest aranjament le pune la dispozitie o retea fizica<br />

diversa ce seamana cu o resursa coerenta.<br />

RETELE TERITORIALE (W.A.N.)<br />

De la un anumit punct <strong>de</strong>v<strong>in</strong>e nepractic ext<strong>in</strong><strong>de</strong>rea unei <strong>retele</strong> locale pe mai <strong>de</strong>parte.<br />

Acest lucru il <strong>de</strong>term<strong>in</strong>a uneori limitarile fizice, dar mult mai <strong>de</strong>s apar modalitati mai convenabile<br />

si mai ieft<strong>in</strong>e <strong>de</strong>-a ext<strong>in</strong>e o retea <strong>de</strong> <strong>calculatoare</strong>.<br />

Doua componente importante <strong>in</strong> majoritatea <strong>retele</strong>lor <strong>de</strong> <strong>calculatoare</strong> existente sant<br />

telefonul public si reteaua <strong>de</strong> date. Acestea furnizeaza legaturi la distanta ce fac posibila virtual<br />

ext<strong>in</strong><strong>de</strong>rea <strong>retele</strong>i locale <strong>in</strong>tr-o retea teritoriala (W.A.N.). Aproape toti operatorii nationali <strong>de</strong> retea<br />

(British Telecom <strong>in</strong> Marea Britanie, Deutsche Bun<strong>de</strong>spost <strong>in</strong> Germania) ofera servicii pentru<br />

<strong>in</strong>terconectarea <strong>retele</strong>lor <strong>de</strong> <strong>calculatoare</strong>. Aceste servicii merg <strong>de</strong> la <strong>retele</strong> <strong>de</strong> legaturi <strong>de</strong> date<br />

simple si mici la care reteaua telefonica e capabila, pr<strong>in</strong> <strong>in</strong>termediul serviciilor <strong>de</strong> date sofisticate,<br />

<strong>de</strong> mare viteza, care sant i<strong>de</strong>al relizate pentru <strong>in</strong>terconectarea <strong>de</strong> <strong>retele</strong> locale. Aceste servicii <strong>de</strong><br />

date <strong>de</strong> mare viteza sant cunoscute ca fi<strong>in</strong>d conexiuni cu lungime larga <strong>de</strong> banda. Se anticipeaza


ca ele vor furniza legaturi necesare <strong>in</strong>tre <strong>retele</strong> locale ce realizeaza ceea ce va transforma asa<br />

numita autostrada <strong>in</strong>formationala <strong>in</strong> realitate.<br />

DISTRIBUTED COMPUTING (CALCUL DISTRIBUIT)<br />

Ar fi mai usor sa ne <strong>in</strong>chipuim ca, <strong>calculatoare</strong>le vor fi capabile sa lucreze impreuna odata<br />

ce ele dispun <strong>de</strong> conexiune <strong>in</strong>tr-o banda larga. Intrebarea care se pune este : cum se poate reusi ca<br />

<strong>calculatoare</strong>le construite <strong>de</strong> diversi producatori d<strong>in</strong> diverse tari sa lucreze impreuna. Pana nu <strong>de</strong><br />

mult majoritatea <strong>calculatoare</strong>lor erau construite cu propria lor <strong>in</strong>terfata si erau structurate <strong>in</strong>tr-un<br />

mod propriu, unic. Un computer putea conversa cu un altul <strong>de</strong> acelasi tip, <strong>in</strong>sa avea dificultati <strong>in</strong><br />

comunicarea cu un altul stra<strong>in</strong>. Totusi, existau cateva echipamente privilegiate ce aveau<br />

posibilitatea sa extraga date d<strong>in</strong>tr-o varietate <strong>de</strong> resurse.<br />

La <strong>in</strong>ceputul anilor ’90 diferentele d<strong>in</strong>tre diferitele tipuri <strong>de</strong> <strong>calculatoare</strong> s-au redus pana<br />

cand au at<strong>in</strong>s stadiul <strong>in</strong> care puteau <strong>in</strong>teractiona efectiv. Aceasta a permis, virtual, oricui sa<br />

foloseasca pr<strong>in</strong> control <strong>de</strong> la distanta, cu rezultate bune, o mas<strong>in</strong>a <strong>de</strong> calcul. Pr<strong>in</strong>cipalii<br />

contribuitori la aceasta sant:<br />

CLIENT/SERVER<br />

In loc sa se construiasca sisteme <strong>de</strong> <strong>calculatoare</strong> tip bloc (monolitic) s-a ajuns la un punct<br />

<strong>de</strong> ve<strong>de</strong>re comun ce stipuleaza ca ele ar trebui construite <strong>de</strong> tipul sistemelor client/server. Clientul<br />

(un utilizator PC) cere un serviciu (cum ar fi tiparirea la imprimanta) iar serverul (un procesor al<br />

unui calculator conectat la o retea locala) il furnizeaza. Aceasta imag<strong>in</strong>e <strong>de</strong> consens a structurii<br />

sistemelor <strong>calculatoare</strong>lor <strong>de</strong>monstreaza ca exista o separatie a functiilor ce alta data erau<br />

<strong>in</strong>ghesuite impreuna. Detaliile implementarii ce <strong>de</strong>curg d<strong>in</strong>tr-un s<strong>in</strong>gur concept au <strong>de</strong> strabatut un<br />

drum lung pentru a face ca toate computerele sa fie tratate la fel.<br />

SISTEME DESCHISE<br />

Acest termen acopera conceptul general <strong>de</strong> constructie a sistemelor <strong>de</strong> computere <strong>in</strong> asa<br />

fel <strong>in</strong>cat ele pot fi <strong>de</strong>ja <strong>in</strong>terconectate. In practica conceptul <strong>de</strong> sisteme <strong>de</strong>schise abor<strong>de</strong>aza, pe


componente, toate complexitatile unui sistem <strong>de</strong> calculator utilizand structuri similare <strong>in</strong>diferent<br />

<strong>de</strong> tipul sistemelor. Acest fapt atrage dupa s<strong>in</strong>e un amestec <strong>de</strong> standar<strong>de</strong> (care ii spun<br />

producatorului ceea ce el ar trebui sa faca) si consortii (grupuri <strong>de</strong> experti ce-i ajuta pe<br />

producatori sa-si at<strong>in</strong>ga scopul). Efectul general este ca acestia doi pot colabora (expertproducator).<br />

Scopul f<strong>in</strong>al este <strong>de</strong> fapt sa permita oricui sa cumpere <strong>calculatoare</strong> <strong>de</strong> la un numar<br />

diferit <strong>de</strong> producatori, sa le poata amplasa convenabil oriun<strong>de</strong>, sa foloseasca conexiunile <strong>de</strong> banda<br />

larga pentru a le lega <strong>in</strong>tre ele si sa poata opera pe ele ca pe o mas<strong>in</strong>a care profita la maxim <strong>de</strong><br />

aceste legaturi rapi<strong>de</strong>.<br />

SECURITATE SI MANAGEMENT<br />

Posedand <strong>retele</strong> <strong>de</strong> <strong>calculatoare</strong> alcatuite d<strong>in</strong> mas<strong>in</strong>i ce pot comunica <strong>in</strong>tre ele nu este d<strong>in</strong><br />

pe <strong>de</strong>parte scopul f<strong>in</strong>al. Spectrul autostrazii <strong>in</strong>formationale abia acum <strong>de</strong>v<strong>in</strong>e ceva <strong>de</strong> luat <strong>in</strong><br />

seama, cevea cu a<strong>de</strong>varat important.<br />

Securitate<br />

Odata cu cresterea volumului <strong>de</strong> <strong>in</strong>formatii importante care sa fie lasate doar <strong>in</strong> seama<br />

calculatorului, securitatea acestuia <strong>de</strong>v<strong>in</strong>e d<strong>in</strong> ce <strong>in</strong> ce mai importanta. Intr-un astfel <strong>de</strong> sistem ar fi<br />

mult prea usor ca o persoana cu <strong>in</strong>alta pregatire sa acceseze <strong>in</strong>formatii confi<strong>de</strong>ntiale fara a fi<br />

<strong>de</strong>tectata. Standardul sistemelor <strong>de</strong> date pentru protectia <strong>in</strong>formatiilor <strong>de</strong> pe computer <strong>in</strong>trodus la<br />

sfarsitul anilor ’70 i s-a atasat recent un sistem <strong>de</strong> chei publice ce permit utilizatorilor sa<br />

fragmenteze si sa <strong>de</strong>fragmenteze usor mesajele lor fara ca o terta persoana sa se <strong>in</strong>terpuna.<br />

Management<br />

Nu e un lucru usor sa pastrezi operationala o retea locala si ea sa functioneze <strong>in</strong> parametri<br />

optimi. Facand ca o retea <strong>de</strong> <strong>calculatoare</strong> ce se <strong>in</strong>t<strong>in</strong><strong>de</strong> <strong>in</strong> <strong>in</strong>trega lume sa mearga foarte b<strong>in</strong>e, duce<br />

provocarea managementului unei <strong>retele</strong> cu un pas mai <strong>de</strong>parte. Conceptele esentiale pentru acest<br />

tip <strong>de</strong> management a diverselor <strong>retele</strong> a capatat <strong>in</strong> ultima vreme o atentie <strong>de</strong>osebita. Astazi exista<br />

suficiente mijloace si standar<strong>de</strong> pentru aceste aspecte importante ale <strong>retele</strong>lor <strong>de</strong> <strong>calculatoare</strong><br />

pentru a fi posibila supervizarea efectiva a <strong>retele</strong>lor locale.


Când si cum a apărut INTERNETUL<br />

INTERNETUL<br />

Reţeaua Internet a apărut la sfârşitul anilor '60 pr<strong>in</strong>tr-un efort <strong>de</strong> conectare a reţelei<br />

Departamentului Apărării Statelor Unite (cunoscută sub numele <strong>de</strong> ARPAnet - Advanced<br />

Research Projects Agency) cu alte reţele conectate pr<strong>in</strong> dispozitive radio şi satelit. ARPAnet a fost<br />

o reţea experimentală proiectată să asigure suportul pentru cercetarea militară - în particular<br />

cercetări priv<strong>in</strong>d construirea unor reţele care puteau rezista cu succes unor întreruperi parţiale.<br />

În mo<strong>de</strong>lul ARPAnet comunicarea se face întot<strong>de</strong>auna între un calculator sursă şi unul<br />

<strong>de</strong>st<strong>in</strong>aţie. Reţeaua se presupune a fi nesigură; orice porţiune d<strong>in</strong> ea poate dispare în orice<br />

moment. Noul tip <strong>de</strong> reţea a fost conceput pentru a cere m<strong>in</strong>imul <strong>de</strong> <strong>in</strong>formaţie <strong>de</strong> la calculatorul<br />

client. Pentru a trimite un mesaj (pachet <strong>de</strong> <strong>in</strong>formaţie) în reţea un calculator trebuie pur şi simplu<br />

să-şi <strong>de</strong>pună datele sale într-un "plic" numit pachet <strong>de</strong> Protocol Internet (IP) şi să specifice<br />

corect(pr<strong>in</strong>tre altele)adresa <strong>de</strong>st<strong>in</strong>atarului acelui pachet. Calculatoarele care comunicau schimbând<br />

pachetele IP (nu reţeaua în ansamblul ei) aveau obligaţia să verifice încheierea comunicaţiei.<br />

Avantajul era acela că orice calculator putea conversa în condiţii egale cu alt calculator d<strong>in</strong> reţea.<br />

Drumul d<strong>in</strong>tre calculatorul sursă şi cel <strong>de</strong>st<strong>in</strong>aţie nu trebuie să fie mereu acelaşi: dacă<br />

<strong>in</strong>terv<strong>in</strong>e o modificare <strong>de</strong> structură în cadrul reţelei se vr i<strong>de</strong>ntifica în mod d<strong>in</strong>amic noi "drumuri"<br />

- numite rute - între <strong>calculatoare</strong><br />

Timpul a <strong>de</strong>monstrat că acest protocol (IP) este suficient <strong>de</strong> robust şi fiabil pentru a putea<br />

mo<strong>de</strong>la tranzacţiile în cadrul acestei reţele<br />

Până în jurul anului 1993 s-a maturizat suficient <strong>de</strong> mult si tehnologia reţelelor locale<br />

(LAN - Local Area Network). Majoritatea staţiilor <strong>de</strong> lucru rulau Berkeley UNIX care <strong>in</strong>clu<strong>de</strong>a<br />

software <strong>de</strong>zvoltat pe baza protocolului IP. A apărut o nouă cer<strong>in</strong>ţă: în locul conectării unei staţii<br />

<strong>de</strong> lucru la serverul unic ce <strong>de</strong>servea reţeaua locală se punea acum problema conectării întregilor<br />

reţele la ARPAnet. În acelaşi timp multe companii si organizaţii au început sa-şi construiască<br />

reţele private folos<strong>in</strong>d aceleaşi protocoale ca şi în cazul ARPAnet. Era clar că dacă aceste reţele ar


putea comunica între ele(<strong>de</strong> pe orice calculator al unei reţele <strong>de</strong> tip LAN se putea comunica cu<br />

orice calculator d<strong>in</strong>tr-o altă reţea) acest lucru ar însemna un mare avantaj. Una d<strong>in</strong> cele mai<br />

importante reţele noi astfel apărute a fost NSFNET, înfi<strong>in</strong>ţată <strong>de</strong> NSF (National Science<br />

Foundation), o agenţie guvernamentală americană. Spre sfârşitul anilor '80 această organizaţie a<br />

creat c<strong>in</strong>ci noduri <strong>de</strong> comunicare puternice în centrele universitare americane cele mai<br />

importante. Problema care apărea acum era datorată costului ridicat al serviciului pr<strong>in</strong> l<strong>in</strong>ii<br />

telefonice închiriate pe distanţe foarte mari. Soluţia a constat în înfi<strong>in</strong>ţarea unor centre regionale.<br />

Astfel aproape fiecare campus universitar a fost conectat la centrul Internet cel mai apropiat.<br />

Aceste lanţuri <strong>de</strong> centre au fost conectate la rândul lor la centrele mari <strong>de</strong>servite <strong>de</strong><br />

supercomputere capabile să facă faţă unui trafic extrem <strong>de</strong> mare. În scurt timp serverele centrale<br />

au ajuns în stadiul să stocheze un volum uriaş <strong>de</strong> <strong>in</strong>formaţie, dar lucrul cel mai important era<br />

faptul că această <strong>in</strong>formaţie putea fi accesată foarte uşor <strong>de</strong> pe orice calculator conectat la unul<br />

d<strong>in</strong> centrele regionale. Datorită creşterii traficului <strong>de</strong> la an la an ,s-a ajuns la o supraîncărcare a<br />

acestei reţele, astfel încât în anul 1987 s-a impus o îmbunătăţire a l<strong>in</strong>iilor telefonice ,precum şi a<br />

performanţelor tehnice ale serverelor.<br />

Pe măsură ce performanţele au crescut ,cererea <strong>de</strong> servicii Internet a <strong>de</strong>venit tot mai mare.<br />

Cele mai multe d<strong>in</strong>tre colegiile americane au fost conectate la Internet, impactul educaţional fi<strong>in</strong>d<br />

imens. Odată <strong>de</strong>păşit acest stadiu, atenţia s-a îndreptat spre şcolile elementare şi medii americane.<br />

Impactul acestei măsuri pe scară largă s-a manifestat mai cu seamă în domeniul companiilor şi<br />

firmelor comerciale. Foştii absolvenţi ai colegiilor americane au conv<strong>in</strong>s marile corporaţii d<strong>in</strong><br />

toate domeniile <strong>de</strong> utilitatea conectării la Internet. Acest fapt a dus la o <strong>de</strong>zvoltare accelerată a<br />

acestei reţele. În prezent majoritatea firmelor mici şi mijlocii folosesc serviciile Internet pentru<br />

rezolvarea problemelor proprii legate <strong>de</strong> transferul <strong>de</strong> <strong>in</strong>formaţie.<br />

C<strong>in</strong>e guvernează reţeaua INTERNET<br />

Deşi cer<strong>in</strong>ţele <strong>de</strong> adm<strong>in</strong>istrare ale unei astfel <strong>de</strong> reţele sunt uriaşe, nu există o autoritate<br />

supremă care să o guverneze. Există în schimb un număr <strong>de</strong> organizaţii constituite pe bază <strong>de</strong><br />

voluntariat care au ca scop <strong>in</strong>vestigarea problemelor ce pot apare şi care propun măsuri <strong>de</strong><br />

îmbunătăţire. Internet Architecture Board (IAB) este o astfel <strong>de</strong> organizaţie. Membrii acesteia se<br />

întâlnesc regulat pentru a se consulta în priv<strong>in</strong>ţa stabilirii standar<strong>de</strong>lor, a alocării resurselor, pentru<br />

a propune soluţii pe termen mediu şi lung. Odată un nou standard adoptat, este publicat pe<br />

Internet, urmând ca pe baza acestuia să se construiască noi aplicaţii, scopul fi<strong>in</strong>d acela al unei


compatibilităţi cât mai mari între arhitecturi, sisteme <strong>de</strong> operare etc. Deşi Internet este <strong>de</strong>parte <strong>de</strong><br />

a fi la stadiul <strong>de</strong> anarhie, oric<strong>in</strong>e este liber să-şi exprime sugestiile <strong>de</strong>spre cum ar trebui organizat.<br />

Astfel s-a format o noua organizaţie numită Internet Eng<strong>in</strong>eer<strong>in</strong>g Task Force (IETF). Membrii<br />

acesteia se întâlnesc periodic pentru a discuta probleme <strong>de</strong> natură operaţională pe termen scurt.<br />

Atunci când se prez<strong>in</strong>tă o problemă se formează un grup <strong>de</strong> lucru care cercetează exclusiv acea<br />

problemă şi caută soluţii cât mai performante. La sfârşitul unei astfel <strong>de</strong> cercetări se creează un<br />

raport. Dacă soluţia propusă este valoroasă poate fi trimisă la IAB pentru a fi acceptată ca<br />

standard<br />

C<strong>in</strong>e plăteşte pentru serviciile Internet<br />

Contrar aşteptărilor, nimeni nu plăteşte pentru Internet în ansamblul său; nu există nici o<br />

firmă care să colecteze plăţile <strong>de</strong> la toate reţelele Internet sau <strong>de</strong> la utilizatori. În schimb, toată<br />

lumea plăteşte pentru partea sa <strong>de</strong> acces. NSF plăteşte pentru NSFNET, NASA plăteşte pentru<br />

NASA Science Internet. Un colegiu sau o corporaţie plăteşte pentru conectarea sa la o reţea<br />

regională, care la rândul ei plăteşte un furnizor naţional pentru accesul său la o reţea<br />

<strong>in</strong>ternaţională.<br />

Ce înseamnă şi ce oferă Internetul pentru furnizorul <strong>in</strong>dividual<br />

Faptul că Internet nu este o reţea <strong>de</strong> <strong>calculatoare</strong>, ci o colecţie <strong>de</strong> reţele, înseamnă foarte<br />

puţ<strong>in</strong> pentru utilizatorul f<strong>in</strong>al al resurselor sale. Pentru a rula un program sau pentru a accesa o<br />

anumită colecţie <strong>de</strong> date nu este necesară cunoaşterea modului <strong>de</strong> <strong>in</strong>teracţiune a acestor reţele.<br />

S<strong>in</strong>gura dată când acest lucru <strong>de</strong>v<strong>in</strong>e important este momentul când apar probleme . Fiecare reţea<br />

are propriul său centru <strong>de</strong> operaţiuni (NOC - Network Operation Center). Centrele discută între<br />

ele şi ştiu cum să-şi rezolve problemele. Utilizatorul <strong>in</strong>dividual trebuie în acest caz să ia legătura<br />

cu furnizorul său <strong>de</strong> servicii Internet.<br />

Accesul Internet înseamnă, în ultimă <strong>in</strong>stanţă, posibilitatea accesării a milioane <strong>de</strong> servere<br />

situate pe tot cupr<strong>in</strong>sul globului. Astfel utilizatorul poate găsi răspuns la orice întrebare pe care şio<br />

pune, poate trimite mesaje în lume aproape <strong>in</strong>stantaneu, poate transfera documente cu<br />

<strong>in</strong>formaţii d<strong>in</strong> orice domeniu <strong>de</strong> activitate, poate efectua cumpărături, vizita galerii <strong>de</strong> artă,


conversa on-l<strong>in</strong>e cu orice alt utilizator conectat, află ultimile ştiri ale agenţiilor <strong>de</strong> presă sau poate<br />

aduce programe soft <strong>de</strong> pe arhivele publice.<br />

Reţeaua Internet este a<strong>de</strong>sea numită Autostradă Internaţională. Acest concept <strong>de</strong><br />

<strong>in</strong>frastructură <strong>in</strong>formaţională globală sau "Information Superhighway" <strong>in</strong>trodus <strong>de</strong> ex-vicepreşed<strong>in</strong>tele<br />

american Al Gore şi preluat <strong>de</strong> Bill Gates are o structură similară Reţeaua are posibilităţi enorme<br />

pentru comunicarea globală, rapidă şi ieft<strong>in</strong>ă şi poate dom<strong>in</strong>a în scurt timp aria educaţională. Dar<br />

canalele <strong>de</strong> comunicaţii existente (în primul rând accesul la l<strong>in</strong>iile telefonice) impun restricţii.<br />

Înlocuirea acestora cu canale cu fibră optică şi tehnologie digitală permit facilităţi superioare.


Internet<br />

• reţea <strong>de</strong> reţele<br />

• comunicarea :<br />

între 2 reţele<br />

PARTEA 2<br />

PRELIMINARII<br />

între 2 <strong>calculatoare</strong> ale unei reţele<br />

Reţea – formată d<strong>in</strong> conectarea fizică a două sau mai multe <strong>calculatoare</strong>.<br />

Comunicarea<br />

• transmisie <strong>de</strong> biţi<br />

• transmisie serială (între <strong>calculatoare</strong>)<br />

• transmisie paralelă (pentru imprimantă)


Cum se face comunicarea pr<strong>in</strong> cablu ?<br />

- simplex - se transmite într-un s<strong>in</strong>gur sens<br />

- semi-duplex – se poate transmite <strong>in</strong> ambele sensuri, dar nu în acelaşi timp<br />

- full-duplex - pot exista fluxuri <strong>de</strong> biţi în acelaşi timp între cele două <strong>calculatoare</strong><br />

REŢEA = cabluri + set <strong>de</strong> protocoale, <strong>in</strong>terfeţe si servicii<br />

Transmiterea datelor se face pr<strong>in</strong> comutare<br />

<strong>de</strong> circuite<br />

<strong>de</strong> pachete<br />

Comutarea <strong>de</strong> circuite – creează o cale unică neîntreruptibilă între două dispozitive care<br />

comunică:<br />

A<br />

B imprimantă<br />

Comutarea <strong>de</strong> pachete – între A şi B există o mulţime <strong>de</strong> drumuri (chiar dacă se<br />

întrerupe un<strong>de</strong>va o legătură, pachetele circulă pe toate rutele până ajunge la B)<br />

A B<br />

C


Trebuie ştiute adresa <strong>de</strong>st<strong>in</strong>atarului şi a expeditorului.<br />

Topologii (<strong>de</strong> reţea) – se referă la forma geometrică a reţelei, mai exact la forma<br />

geometrică virtuală<br />

Def<strong>in</strong>iţia topologiilor <strong>de</strong> reţea – forma geometrică <strong>de</strong> amplasare a calcula-toarelor întro<br />

reţea<br />

♦ bus(magistrală)<br />

♦ <strong>in</strong>el<br />

♦ stea<br />

♦ arbore<br />

BUS: se foloseşte un mediu unic <strong>de</strong> transmisie a datelor<br />

-Se foloseşte cablu coaxial<br />

-Este foarte răspândită<br />

Avantaje: datele circulă în ambele sensuri<br />

Dezavantaje:<br />

♦ orice <strong>de</strong>fecţiune fizică într-un loc oarecare al magistralei atrage după s<strong>in</strong>e<br />

întreruperea tuturor comunicaţiilor în reţea


♦ securitatea datelor este extrem <strong>de</strong> redusă (<strong>in</strong>formaţia trece pe la fiecare calculator<br />

al reţelei)<br />

Inel (r<strong>in</strong>g) :<br />

♦ <strong>calculatoare</strong>le sunt legate sub forma unui <strong>in</strong>el cont<strong>in</strong>uu<br />

♦ într-o topologie <strong>in</strong>el <strong>in</strong>formaţia circulă într-un s<strong>in</strong>gur sens<br />

♦ orice <strong>de</strong>fecţiune a cablului atrage întreruperea comunicării în reţea<br />

♦ securitatea scăzută<br />

Stea :<br />

Informaţia circulă trecând pr<strong>in</strong>tr-un nod central.<br />

Avantaje:<br />

♦ Defectarea unui cablu nu afectează comunicarea în reţea<br />

♦ Securitatea este bună


Dezavantaje:<br />

♦ Costuri ridicate la “că<strong>de</strong>rea” nodului central<br />

SCOPUL REŢELELOR<br />

♦ Partajarea resurselor: soft, fişiere, spaţiu pe disc, imprimante<br />

♦ Fiabilitate mai mare a reţelelor<br />

- Toleranta la <strong>de</strong>fecte<br />

- Sistemul bancar, reactoare, etc.<br />

♦ Economia <strong>de</strong> bani<br />

I<strong>de</strong>ea e <strong>de</strong> a mări puterea <strong>de</strong> calcul fără a renunţa la <strong>calculatoare</strong>le vechi: ma<strong>in</strong>frame (Felix C256,<br />

Felix 512, Felix1024) sau m<strong>in</strong>i<strong>calculatoare</strong> (In<strong>de</strong>pen<strong>de</strong>nt I-100, I-102, I-108, Coral, PDP 11)<br />

♦ Reţeaua ca mediu <strong>de</strong> comunicare<br />

- accesul la <strong>in</strong>formaţie <strong>de</strong> la distanţă,<br />

- comunicaţiile <strong>in</strong>terpersonale,<br />

- divertismentul <strong>in</strong>teractiv.


PARTEA 3<br />

MODELE DE COMUNICARE<br />

Tipuri <strong>de</strong> reţele : (după mărime)<br />

• LAN (Local Area Network) – la nivel <strong>de</strong> <strong>in</strong>capere, cladire<br />

• MAN (Metropolitan Area Network) – la nivelul unui oraş<br />

• WAN (World-Wi<strong>de</strong> Area Network) – reţele larg răspândite (Internetul)<br />

• Reţele cu difuzare (Broadcast)<br />

• Reţele “po<strong>in</strong>t-to-po<strong>in</strong>t”<br />

Reţele cu difuzare (Broadcast)<br />

TEHNOLOGII DE TRANSMISIE<br />

• au un s<strong>in</strong>gur canal <strong>de</strong> transmisie care este partajat la toate nivelurile d<strong>in</strong> reţea;<br />

• se emite pe canal pentru toate maş<strong>in</strong>ile; toate maş<strong>in</strong>ile “aud” dar numai cele<br />

implicate răspund;<br />

• unităţile <strong>de</strong> transmisie sunt mesaje scurte numite “pachete”;<br />

• este posibil să fie transmise pachete la un grup <strong>de</strong> utilizatori (Multicast<strong>in</strong>g);


Reţele punct-la-punct<br />

• se referă la comunicarea între maş<strong>in</strong>i, aflate la distanţă mare, iar comunicarea se<br />

face pr<strong>in</strong> acele conexiuni multiple între perechi <strong>de</strong> maş<strong>in</strong>i<br />

• ca să ajungă <strong>de</strong> la o maş<strong>in</strong>ă la alta un pachet trece pr<strong>in</strong> mai multe maş<strong>in</strong>i<br />

<strong>in</strong>termediare (în cazul în care nu există legătură directă)<br />

• pachetele sunt ghidate după nişte algoritmi numiţi algoritmi <strong>de</strong> rutare<br />

Modul <strong>de</strong> transmisie poate fi s<strong>in</strong>cron (negociere şi transmisie) – asemănător telefonului<br />

– sau as<strong>in</strong>cron – mesajele postale.<br />

• modul s<strong>in</strong>cron<br />

presupune existenţa unui orologiu (ceas) la fiecare maş<strong>in</strong>ă;<br />

discutăm <strong>de</strong> două maş<strong>in</strong>i care dispun <strong>de</strong> ceas propriu;<br />

ceasurile trebuie să fie reglate la aceeaşi frecvenţă;<br />

• modul as<strong>in</strong>cron<br />

A B<br />

ceas s<strong>in</strong>cron ceas<br />

caracterele pot fi emise oricând, iar <strong>in</strong>tervalul între două caractere<br />

transmise poate fi oricât <strong>de</strong> mare;<br />

biţii d<strong>in</strong> fiecare caracter transmis sunt precedaţi şi urmaţi <strong>de</strong> către un bit<br />

special <strong>de</strong> start şi stop<br />

nu mai <strong>de</strong>p<strong>in</strong><strong>de</strong> <strong>de</strong> ceasul maş<strong>in</strong>ilor


Există protocoale diferite care realizează comunicarea s<strong>in</strong>cronă şi cea as<strong>in</strong>cronă<br />

La comunicarea în mod s<strong>in</strong>cron, după ce are loc o negociere care stabileşte canalul <strong>de</strong><br />

comunicare, comunicarea este extrem <strong>de</strong> fluidă;<br />

La comunicarea în mod as<strong>in</strong>cron transmiţi când vrei, dar preţul plătit este că nu am o<br />

fluiditate a comunicării şi mereu trebuie să scriem adresa iar pachetele nu vor veni în ord<strong>in</strong>ea în<br />

care au fost trimise.<br />

Probleme:<br />

• Aceeaşi limbă, acelaşi alfabet<br />

CONECTAREA CALCULATOARELOR ÎN REŢEA<br />

• Aceeaşi limbă, alfabete diferite<br />

• Limbi diferite, acelaşi alfabet<br />

• Limbi diferite, alfabete diferite<br />

Apare atenuarea semnalului emis, şi pentru a putea face semnalul transmisibil, trebuie să<br />

<strong>in</strong>troducem un Repetor.<br />

Repetorul<br />

• copie si amplifică semnalul<br />

• el elim<strong>in</strong>ă pier<strong>de</strong>rea semnalului pr<strong>in</strong> elim<strong>in</strong>area atenuării<br />

• măreşte lungimea magistralei în LAN (cablu)<br />

Bridge (punte)<br />

• joacă rolul agentului <strong>de</strong> circulaţie<br />

• în termeni <strong>de</strong> reţea, conectează două reţele care utilizează aceeaşi tehnologie<br />

(Ethernet)


• este în general un calculator, şi el realizează următorul lucru:<br />

- împart reţeaua în două grupuri şi pun un alt calculator(1) care realizează puntea<br />

între ele; calculatorul (1) i<strong>de</strong>ntifică un pachet d<strong>in</strong> reţeaua “a” şi transmite la reţeaua B (micşorează<br />

pachetele ce se plimbă între cele două reţele)<br />

- calculatorul (1) exam<strong>in</strong>ează pachetele d<strong>in</strong> fiecare reţea şi le transferă doar atunci<br />

când este cazul<br />

reţea;<br />

Avantaj: creşte performanţa, fiabilitatea şi securitatea<br />

- performanţa : creşterea d<strong>in</strong> cauza elim<strong>in</strong>ării coliziunilor, ambuteiajelor <strong>de</strong> pachete<br />

- fiabilitatea : ruperea la nivelul unui cablu nu afectează toate <strong>calculatoare</strong>le d<strong>in</strong><br />

- securitatea: trafic <strong>de</strong> <strong>in</strong>formaţii pe reţea şi accesări autorizate sau nu<br />

Router<br />

• Direcţionează datele între două reţele care au tehnologii diferite şi protocoale<br />

diferite: Ethernet, Token-R<strong>in</strong>g (IBM);<br />

• este un calculator ceva mai complicat;<br />

• cunoaşte adresa tuturor <strong>calculatoare</strong>lor pe care le ve<strong>de</strong> în reţea;<br />

• dirijează pachetele conform unor algoritmi <strong>de</strong> rutare (reuşeşte să facă “traducerea”<br />

d<strong>in</strong>tr-un protocol în alt protocol);<br />

• orice router poate fi în acelaşi timp şi Bridge;<br />

Gateway(poartă)<br />

• se referă în fapt la anumite aplicaţii care sunt <strong>de</strong>-a lungul reţelei (poartă <strong>de</strong><br />

aplicaţii);


• mo<strong>de</strong>lul client-server<br />

PARADIGMELE COMUNICĂ RII ÎN REŢ EA<br />

- în reţea la nivelul aplicaţiilor există 2 „actori” importanţi – server si client (noţiuni<br />

software, ext<strong>in</strong>se la noţiuni hardware<br />

- serverul – stă în aşteptare <strong>de</strong> a oferi nişte servicii şi aceste servicii le oferă doar pr<strong>in</strong>tr-un<br />

anumit port<br />

- clientul – accesează un port şi apelează serviciul oferit <strong>de</strong> către server<br />

• RPC (Remote Procedure Call) – apel <strong>de</strong> procedură la distanţă<br />

PROTOCOALE Ş I INTERFEŢ E<br />

In proiectarea <strong>retele</strong>lor <strong>de</strong> <strong>calculatoare</strong> apărut o abordare stratificată, fi<strong>in</strong>d dată <strong>de</strong><br />

complexitatea comunicării în reţea.<br />

A B<br />

i+1 i+1 nivel<br />

i i<br />

i-1 i-1<br />

1 1


Exemplu practic – relatiile <strong>de</strong> afaceri <strong>in</strong>tre doi directori <strong>de</strong> companie, d<strong>in</strong> tari diferite:<br />

A B<br />

Director Director<br />

Secretară Secretară<br />

Traducător Traducător<br />

Cut.poştală Funcţionar poştal<br />

Serv. Poştale Servicii poştale


Notiunile importante vehiculate <strong>in</strong> cont<strong>in</strong>uare sunt:<br />

Protocol = un set <strong>de</strong> reguli care:<br />

• are loc la unul d<strong>in</strong>tre niveluri<br />

• face posibilă comunicarea la acest nivel între două maş<strong>in</strong>i;<br />

• este o transcriere în program a unor reguli;<br />

• este un set <strong>de</strong> reguli care <strong>de</strong>f<strong>in</strong>esc convenţiile <strong>de</strong> comunicare conforme unui nivel<br />

Interfaţă = acele servicii care permit comunicarea la acest nivel între două niveluri<br />

consecutive;<br />

ARHITECTURĂ DE REŢEA = niveluri + <strong>in</strong>terfeţe + protocoale<br />

Pr<strong>in</strong>cipiu:<br />

La nivelul n al <strong>de</strong>st<strong>in</strong>atarului se primeşte exact acelaşi mesaj ca la nivelul n al emiţătorului.<br />

In prezent exista doua ierarhii <strong>de</strong> protocoale:<br />

• Mo<strong>de</strong>lul ISO/OSI (Open Systems Interconection)<br />

o mo<strong>de</strong>l al reţelei i<strong>de</strong>ale;<br />

o are 7 straturi;<br />

• Mo<strong>de</strong>lul TCP/IP<br />

o mo<strong>de</strong>l cu 5 straturi;


Interfaţa:<br />

o este <strong>de</strong> mai mare succes practic <strong>de</strong>cât cel i<strong>de</strong>al propus <strong>de</strong> ISO<br />

n+1<br />

n<br />

n-1<br />

Client pentru stratul (n-1)<br />

Server pentru stratul (n+1)<br />

Detaliile <strong>de</strong> implementare sunt ascunse pe stratul (n+1).<br />

Serviciu:<br />

- fiecare nivel oferă servicii specifice, <strong>de</strong> care <strong>de</strong>p<strong>in</strong><strong>de</strong> nivelul superior;<br />

- Serviciile nivelului n ofera funcţionalitatea nivelului n <strong>de</strong> care <strong>de</strong>p<strong>in</strong><strong>de</strong> nivelul n+1<br />

Protocol şi Serviciu<br />

- fiecare nivel se conformează unui set <strong>de</strong> reguli (protocol)<br />

- protocoalele <strong>de</strong>f<strong>in</strong>esc serviciile în felul următor:<br />

- dau reguli pe care nivelul trebuie să le urmeze pentru a implementa serviciul<br />

corespunzător.<br />

- serviciul <strong>de</strong>f<strong>in</strong>eşte funcţionalitatea nivelului.


Mo<strong>de</strong>lul OSI d<strong>in</strong> punct <strong>de</strong> ve<strong>de</strong>re al programatorului:<br />

7.nivelul aplicaţie protocol <strong>de</strong> aplicaţie 7.nivelul aplicaţie<br />

6.nivelul prezentare protocol <strong>de</strong> prezentare 6.nivelul prezentare<br />

5.nivelul sesiune protocol sesiune 5.nivelul sesiune<br />

4.nivelul transport protocol <strong>de</strong> transport 4.nivelul transport<br />

3.nivelul reţea protocol <strong>de</strong> reţea 3.nivelul reţea<br />

2.nivelul leg. <strong>de</strong> date protocol leg <strong>de</strong> date 2.nivelul leg. <strong>de</strong> date<br />

1.nivelul fizic protocol <strong>de</strong> comunicare efectivă 1.nivelul fizic<br />

Host A Host B<br />

- mo<strong>de</strong>l cu 7 niveluri;<br />

- reprez<strong>in</strong>tă în fapt o reţea i<strong>de</strong>ală, un standard pentru o reţea i<strong>de</strong>ală;<br />

- specificaţie <strong>de</strong> proiectare pentru reţele;<br />

- suite <strong>de</strong> protocoale care implementează X.25 (CCITTX.25);<br />

- protocoalele <strong>de</strong> la nivelele 2-6 realizează o comunicare virtuală<br />

- numele fiecărui nivel i<strong>de</strong>ntifică protocoalele corespunzătoare asociate nivelului<br />

respectiv şi nivelurile corespon<strong>de</strong>nte d<strong>in</strong> hosturile diferite se numesc procese pereche;<br />

- comunicaţia între procesele pereche este o comunicare virtuală căci <strong>de</strong> fapt<br />

comunicaţia nu are loc <strong>de</strong>cât la nivelul fizic;<br />

- reţelele nu transferă date în mod direct între procesele pereche;<br />

- comunicarea virtuală (conversaţie virtuală) d<strong>in</strong>tre niveluri corespon<strong>de</strong>nte<br />

simplifică programarea în reţea


Conversaţia virtuală la nivelul n se <strong>de</strong>sfasoara astfel:<br />

Cererile <strong>de</strong> servicii şi răspunsurile sunt transmise pr<strong>in</strong> <strong>in</strong>termediul primitivelor.<br />

Putem dist<strong>in</strong>ge 4 clase mari <strong>de</strong> primitive:<br />

- cererile – sunt nivelurile client (n+1) şi transmit cereri <strong>de</strong> servicii (ale nivelului n);<br />

- <strong>in</strong>dicaţiile – corespund notificării transmise la un nivel la distanţă ce urmează unei<br />

cereri <strong>de</strong> serviciu.<br />

- răspunsurile – clasa permite răspunsul la o <strong>in</strong>dicaţie.<br />

- confirmările – permit unui producător <strong>de</strong> servicii să răspundă la cererea unui client.<br />

Clasificarea ne permite să dist<strong>in</strong>gem 2 clase <strong>de</strong> servicii:<br />

- serviciile confirmate (se utilizează toate cele 4 tipuri <strong>de</strong> primitive conform următoarei<br />

scheme)<br />

host A reţeaua host B<br />

cerere n+1 n n n+1<br />

Exemplu: Serviciul <strong>de</strong> stabilire a conexiunii (TCP)<br />

- servicii neconfirmate – utilizează numai cereri şi <strong>in</strong>dicaţii.<br />

transfer <strong>in</strong>dicaţie<br />

răspuns<br />

confirmare


NIVELELE IN DETALIU<br />

Funcţionalitatea (serviciile) nivelurilor este urmatoarea:<br />

- Nivelul 1: stratul fizic se ocupă cu caract. fizice: semnale, modulare/<strong>de</strong>modulare,<br />

multiplexări etc. Unitatea <strong>de</strong> <strong>in</strong>formatie este bitul.<br />

- Nivelul 2: permite specificarea modului în care datele traversează distanţa d<strong>in</strong>tre<br />

două maş<strong>in</strong>i. Unitatea cu care se lucrează se numeşte cadru (frame). La nivelul 2 există strategii<br />

diferite care fac posibilă <strong>de</strong>limitarea acestor unităţi <strong>de</strong> transmisie. La cadre se mai adaugă o<br />

<strong>in</strong>formaţie suplimentară care ne ajută să <strong>de</strong>tectăm orice eroare <strong>in</strong>trodusă la nivel fizic; tehnica<br />

utilizată în mod curent <strong>de</strong> aceste coduri corectoare <strong>de</strong> erori CRC (Cyclic Redundancy Co<strong>de</strong>s).<br />

Tot acest nivel <strong>de</strong> ocupa cu reglarea schimbului <strong>de</strong> date: cadrele conţ<strong>in</strong> pe lângă datele care se<br />

schimbă în mod normal un câmp care permite dialogul între entităţile <strong>de</strong> date, respectiv <strong>de</strong> a<br />

transporta un cadru. Nivelul 2 lucrează cu <strong>in</strong>formaţii <strong>de</strong>spre cadru, limitele lui, reguli pentru<br />

transferul <strong>de</strong> date şi controlul acestui transfer.<br />

- Nivelul 3 (nivelul retea): are ca responsabilitate livrarea datelor în reţea.<br />

Determ<strong>in</strong>ă ruta (calea) pe care o vor urma datele în drumul lor <strong>de</strong> la host A la host B (<strong>de</strong> la maş<strong>in</strong>a<br />

A la maş<strong>in</strong>a B).<br />

Se ocupă <strong>de</strong>:<br />

o gestionarea datelor în reţea<br />

o rezolvarea congestiilor<br />

o ratele <strong>de</strong> transfer <strong>de</strong>-a lungul reţelei (viteza)<br />

Într-o reţea cu comutare <strong>de</strong> pachete cum este Internetul, în fiecare pachet avem adresele<br />

<strong>de</strong>st<strong>in</strong>atar şi sursă.


Protocoalele nivelului 3 <strong>de</strong>f<strong>in</strong>esc responsabilităţile fiecărui element d<strong>in</strong> reţea în ceea ce priveşte<br />

rutarea datelor. Se garantează că hostul <strong>de</strong>st<strong>in</strong>atar recepţionează pachetele în mod corect.<br />

În mo<strong>de</strong>lul ISO/OSI nivelul reţea asigură secvenţialitatea pachetelor spre <strong>de</strong>osebire <strong>de</strong> TCP/IP<br />

un<strong>de</strong> acest lucru îl realizează nivelul transport (nivelul 4). De asemeni, se face gestiunea traficului<br />

în reţea, contorizarea traficului în reţea.<br />

- Nivelul 4 (nivelul transport): este un mecanism <strong>de</strong> verificare a comunicării<br />

<strong>de</strong>st<strong>in</strong>atar-expeditor, funcţia sa importantă fi<strong>in</strong>d <strong>de</strong> livrare a datelor în codrul hostului local.<br />

niv 4<br />

niv 3<br />

procese<br />

Host A Host B<br />

proces proces<br />

- Nivelul 5 (nivelul aplicaţie): negociază legătura între procese şi aplicaţii <strong>de</strong> pe<br />

hosturi diferite gestionează entităţi ca nume, cantitate, parole, autentificare.<br />

- Nivelul 6 (prezentare): este conceput în OSI astfel: unele funcţii folosite în<br />

comunicarea în reţea sunt <strong>de</strong>s folosite (<strong>in</strong>terfaţa cu imprimanta, <strong>in</strong>terfaţa cu monitorul); <strong>de</strong>taliile<br />

legate <strong>de</strong> <strong>in</strong>terfeţe sunt gestionate la nivelul 6.<br />

- Nivelul 7: <strong>in</strong>clu<strong>de</strong> programele care utilizează reţeaua: posta electronica, transferul<br />

<strong>de</strong> fisiere, conectare la distanta etc.<br />

niv 4


TCP/IP – este organizat în 4 straturi conceptuale care se sprij<strong>in</strong>ă pe cel <strong>de</strong>-al 5-lea strat,<br />

cel al hardului reţelei, fi<strong>in</strong>d utilizat <strong>de</strong> Internet.


PARTEA 4<br />

STIVA DE PROTOCOALE TCP/IP<br />

- TCP – Transmission Control Protocol<br />

- IP – Internet Protocol<br />

In prezent, TCP/IP reprez<strong>in</strong>ta mai mult <strong>de</strong> doua protocoale. Tot ce se numeşte<br />

Tehnologie Internet <strong>de</strong> fapt se referă la suita <strong>de</strong> protocoale TCP/IP. Astfel, putem <strong>de</strong>f<strong>in</strong>i<br />

Internetul ca fi<strong>in</strong>d orice reţea care foloseşte tehnologia Internet (Internet Technology).<br />

Stiva <strong>de</strong> protocoale TCP/IP<br />

Suita <strong>de</strong> protocoale TCP/IP asigură transmisia şi gestionarea <strong>in</strong>formaţiilor/datelor care se<br />

<strong>de</strong>plasează în Internet. Ca programatori <strong>de</strong> reţea trebuie să înţelegem funcţionarea TCP/IP.


Stiva <strong>de</strong> protocoale TCP/IP are 4 nivele <strong>de</strong> bază care se sprij<strong>in</strong>ă pe un nivel fizic:<br />

aplicatie, transport (TCP si UDP), retea (IP), legatura <strong>de</strong> date.<br />

aplicaţie aplicaţie<br />

FLUXUL DE DATE<br />

Există 3 paşi importanţi în transmiterea datelor în Internet:<br />

1. Transmiterea <strong>in</strong>formaţiei <strong>de</strong> la aplicaţie la reţea (cu ajutorul stivei <strong>de</strong> protocoale).<br />

2. Reţeaua trebuie să <strong>de</strong>term<strong>in</strong>e un<strong>de</strong> trebuie să ajungă datele<br />

(<strong>de</strong>term<strong>in</strong>ând adresa <strong>de</strong>st<strong>in</strong>atarului).<br />

3. Reţeaua trebuie să ruteze şi să transporte datele la <strong>de</strong>st<strong>in</strong>atar acolo un<strong>de</strong> cu<br />

ajutorul stivei <strong>de</strong> protocoale <strong>in</strong>formaţia urcă <strong>de</strong> la nivelul aplicaţiei.


În transmiterea fluxului <strong>de</strong> <strong>in</strong>formaţii, <strong>in</strong>formaţia are diferite formate:<br />

- la nivelul aplicaţie – stream-uri (mesaje) <strong>de</strong> date<br />

- la nivelul TCP – pachete<br />

- la nivelul reţea – cadre (frame-uri)<br />

La nivelul fizic se folosesc cabluri coaxiale sau torsadat, iar la nivelul legătură <strong>de</strong> date se<br />

utilizeaza Ethernet, Token R<strong>in</strong>g, fiecare placa <strong>de</strong> retea posed<strong>in</strong>d o adresa <strong>de</strong> 6 octeti. Pentru a<br />

realiza conversia d<strong>in</strong>tre adresele placilor <strong>de</strong> retea si cele ale <strong>calculatoare</strong>lor d<strong>in</strong> Internet se folosesc<br />

protocoalele :<br />

- ARP - Address Resolution Protocol (protocol <strong>de</strong> conversie a adreselor) - funcţia<br />

sa este <strong>de</strong> a transforma adresele <strong>de</strong> nivel reţea în adrese <strong>de</strong> nivel legătură <strong>de</strong> date (adica adrese<br />

fizice ale placilor <strong>de</strong> retea);<br />

- RARP - Reverse Address Resolution Protocol – operaţia <strong>in</strong>versă ARP –<br />

transformă adresele <strong>de</strong> nivel legătură în adrese <strong>de</strong> nivel reţea.<br />

Nivel reţea → nivel aplicaţie<br />

Nivelul IP (nivel <strong>in</strong>ternet) se ocupă <strong>de</strong> comunicarea la nivelul maş<strong>in</strong>ilor. Rolul lui este <strong>de</strong> a<br />

permite hosturilor să emită pachete în reţea şi face ca pachetele să circule <strong>in</strong><strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> maş<strong>in</strong>ile<br />

<strong>in</strong>termediare.<br />

Comunicare sigură(fiabilă) şi comunicare nesigură<br />

- Este similară cu lipsa expeditorului la trimiterea unei scrisori.<br />

- In cazul ISO/OSI – costul <strong>de</strong> a asigura o comunicare sigură este foarte mare, dar<br />

la suita <strong>de</strong> protocoale TCP/IP (mult mai practică) e sigură la nivelul IP.


- TCP/IP <strong>in</strong>troduce la nivelul transport (TCP) un control f<strong>in</strong>al al transmisiei numit<br />

“end-to-end”.<br />

A B<br />

control al transmisiei “end-to-end”<br />

TCP TCP<br />

IP IP IP IP IP<br />

Leg<br />

Orice pas <strong>in</strong>termediar se numeşte hop.<br />

Nivelul transport<br />

- Asigură comunicarea “end-to-end”;<br />

- Asigură controlul fluxului <strong>de</strong> date ;<br />

- Consta d<strong>in</strong> doua protocoale:<br />

TCP (Transmission Control Protocol) – protocol s<strong>in</strong>cron - realizează<br />

comunicare orientată-conexiune (circuit virtual), similara telefonului;<br />

UDP (User Datagram Protocol) – as<strong>in</strong>cron – realizeaza o comunicare care<br />

nu este orientată conexiune, similara telegramelor.<br />

Nivelul aplicaţie<br />

Reuneşte funcţionalităţile nivelurilor sesiune, prezentare, aplicaţie <strong>de</strong> la mo<strong>de</strong>lul<br />

ISO/OSI.


ASEMĂNĂRI:<br />

ASEMĂNĂRI ŞI DEOSEBIRI ÎNTRE OSI ŞI TCP/IP<br />

1. Ambele se bazează pe stivă <strong>de</strong> protocoale (<strong>in</strong><strong>de</strong>pen<strong>de</strong>nte).<br />

2. Funcţionalitatea nivelurilor este oarecum asemănătoare.<br />

3. În topul stivelor <strong>de</strong> protocoale se află nivelul aplicaţie care se bazează pe nivelul<br />

transport .<br />

Se dist<strong>in</strong>g trei concepte importante:<br />

- serviciu – dă funcţionalitatea fiecărui strat (spune ce face), dar nu spune ce<br />

foloseşte şi cum funcţionează.<br />

- <strong>in</strong>terfaţă – spune protocolului aflat <strong>de</strong>asupra ce parametri trebuie să îi <strong>de</strong>a şi ce<br />

rezultat va obţ<strong>in</strong>e.<br />

- protocol – explică regulile după care se face comunicarea (cum se în<strong>de</strong>pl<strong>in</strong>eşte<br />

serviciul).<br />

DEOSEBIRI:<br />

1. OSI dist<strong>in</strong>ge cele 3 concepte, iar TCP/IP nu le dist<strong>in</strong>ge. OSI este bun ca mo<strong>de</strong>l,<br />

TCP/IP este bun ca implementare<br />

2. Fiabilitatea / Siguranţa comunicării.<br />

X.25 (suita <strong>de</strong> protocoale corespunzătoare lui OSI) face <strong>de</strong>tectarea şi tratarea erorilor la fiecare<br />

nivel :


- Nivelul 2: erori <strong>de</strong> transmisie<br />

proceduri <strong>de</strong> acoperire – se foloseşte o cifră <strong>de</strong> control pentru fiecare pachet, confirmare pentru<br />

aceste cifre <strong>de</strong> control.<br />

- Nivelul 3:<br />

Face <strong>de</strong>tectarea si corectarea erorilor la nivel <strong>de</strong> pachete<br />

- Nivelul 4:<br />

TCP/IP – cifre <strong>de</strong> control, algoritmi <strong>de</strong> retransmisie, proceduri <strong>de</strong> acoperire a erorilor, time-out,<br />

timpul <strong>de</strong> viata a pachetelor<br />

Fiabilitatea în OSI – foarte bună, eficienţa – foarte slabă<br />

Fiabilitatea în TCP/IP – mai mică, eficienţa – mai bună<br />

3. Un<strong>de</strong> este localizată <strong>de</strong>cizia şi controlul<br />

- OSI – controlul şi <strong>de</strong>cizia – centralizat (rutări, control, <strong>de</strong> flux şi trafic, confirmări <strong>de</strong><br />

transmisie) în dispecerat <strong>de</strong> reţea<br />

- TCP/IP - cere tuturor serverelor să participe aproape la toate operaţiile reţelei<br />

(<strong>de</strong>tectarea <strong>de</strong> erori, rutări, controlul fluxului în reţea). Astfel reţeaua este o sumă <strong>de</strong> servere active<br />

d<strong>in</strong> punct <strong>de</strong> ve<strong>de</strong>re al Internetului, <strong>de</strong>cizia şi controlul se distribuie.<br />

Concluzii:<br />

- OSI – bun ca mo<strong>de</strong>l<br />

- TCP/IP – bun ca ansamblu <strong>de</strong> protocoale efective.<br />

In<strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> schema <strong>de</strong> stratificare putem enunţa PRINCIPIUL STRATIFICĂRII<br />

(funcţionează <strong>in</strong><strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> schema <strong>de</strong> stratificare şi <strong>de</strong> funcţionalitatea straturilor):


ENUNŢ:<br />

Protocoalele sunt proiectate astfel încât stratul n la <strong>de</strong>st<strong>in</strong>atar<br />

primeşte exact ceea ce se emite <strong>de</strong> stratul n la expeditor.<br />

Asadar, pentru programatori este important doar stratul n, fara a-i <strong>in</strong>teresa ce se petrece la<br />

straturile <strong>in</strong>ferioare.


PARTEA 5<br />

PROTOCOALE DE COMUNICATIE<br />

IN RETELELE DE CALCULATOARE<br />

(DETALII)<br />

Cel mai a<strong>de</strong>sea comunicaţiile <strong>in</strong>terprocese <strong>de</strong>-a lungul unei reţele sunt realizate pr<strong>in</strong><br />

<strong>in</strong>termediul familiei <strong>de</strong> protocoale TCP/IP. Dupa cum am vazut si mai sus, familia <strong>de</strong> protocoale<br />

TCP/IP constă d<strong>in</strong> următoarele protocoale:<br />

- TCP<br />

Transmission Control Protocol este un protocol orientat-conexiune ce oferă posibilitatea <strong>de</strong> a<br />

realiza comunicaţii full-duplex sigure. Se bazează pe protocolul IP. TCP este <strong>de</strong> <strong>de</strong>parte cel mai<br />

folosit protocol în comunicarea <strong>in</strong>terprocese.<br />

- UDP<br />

User Datagram Protocol – comunicaţii nesigure în mod neconectat<br />

- ICMP<br />

Internet Control Message Protocol – folosit pentru tratarea erorilor şi controlul <strong>in</strong>formaţiilor.<br />

Foloseşte protocolul IP pentru realizarea schimbului <strong>de</strong> date. În mod normal procele utilizator nu<br />

au nevoie să aceseze ICMP, <strong>de</strong>oarece mesajele acestuia sunt procesate <strong>de</strong> către software-ul<br />

TCP/IP.


- IP<br />

Internet Protocol – protocolul <strong>de</strong> bază pentru UDP, TCP şi ICMP. Procesele utilizator<br />

folosesc doar TCP sau UDP, folosirea directă a IP-ului fi<strong>in</strong>d rar întâlnită.<br />

Diferitele piese ale Internetului sunt conectate <strong>de</strong> un set <strong>de</strong> <strong>calculatoare</strong> numite routere,<br />

care conectează împreună reţelele. Aceste reţele sunt uneori Ethernet, uneori reţele <strong>de</strong> tip <strong>in</strong>el,<br />

sau alteori reţele telefonice.<br />

La nivelul protocolului IP, un router primeşte datele trimise <strong>de</strong> un<strong>de</strong>va şi <strong>de</strong>ci<strong>de</strong> un<strong>de</strong><br />

trebuie să le trimită mai <strong>de</strong>parte folos<strong>in</strong>d pentru aceasta cea mai bună cale <strong>de</strong> comunicare. Suita<br />

<strong>de</strong> reguli pr<strong>in</strong> care se realizează schimbul <strong>de</strong> date se numeşte protocol. Protocolul Internet (IP)<br />

trimite mesajele sau verifică faptul că routerul ştie ce să facă cu datele când acestea îi sosesc<br />

funcţionând ca un plic.<br />

Adresele Internet constau d<strong>in</strong> patru numere (octeti), fiecare mai mic <strong>de</strong>cât 256. Atunci<br />

când sunt scrise, numerele sunt separate pr<strong>in</strong> puncte, astfel:<br />

187.110.27.7<br />

135.120.4.2<br />

Adresa este în fapt formată d<strong>in</strong> mai multe părţi. Deoarece Internet este o reţea <strong>de</strong> reţele,<br />

începutul adresei spune routerului Internet reţeaua la care suntem conectaţi. Sfârşitul adresei ne<br />

spune care calculator gazdă (host) va recepta pachetul. Fiecare calculator <strong>de</strong> pe Internet are o<br />

adresă unică în acest fel. De exemplu, serverul stu<strong>de</strong>ntilor Facultatii <strong>de</strong> Informatica are adresa IP<br />

urmatoare : 193.231.30.197.<br />

Pentru o serie <strong>de</strong> motive practice (d<strong>in</strong>tre cele mai notabile putem număra limitările<br />

echipamentelor), <strong>in</strong>formaţia trimisă <strong>de</strong>-a lungul reţelelor IP este "spartă" în piese <strong>de</strong> dimensiuni<br />

mai mici, numite pachete. Informaţia d<strong>in</strong> <strong>in</strong>teriorul pachetelor are o lungime <strong>de</strong> regulă între unul şi<br />

aproximativ 1500 caractere. Asta pentru a preîntâmp<strong>in</strong>a ca un utilizator să monopolizeze reţeaua,<br />

permiţând tuturor să aibă acces la ea. Totodată dacă reţeaua este supraîncărcată, asta înseamnă că<br />

ea se va comporta rău pentru toţi utilizatorii ei: ea nu se opreşte pentru unii, în timp ce alţi<br />

utilizatori mai importanţi o monopolizează.


- ARP<br />

Address Resolution Protocol mapează adresele Internet în adrese hardware. Numai anumite<br />

reţele au nevoie <strong>de</strong> el.<br />

- RARP<br />

Reverse Address Resolution Protocol mapează adrese hardware în adrese Internet.<br />

Relaţiile d<strong>in</strong>tre aceste protocoale sunt ilustrate în figura următoare.<br />

Componentele familiei <strong>de</strong> Protocoale Internet<br />

Ca în cazul oricărui protocol bazat pe mai multe nivele, fiecare nivel încapsulează datele<br />

nivelului <strong>in</strong>ferior.<br />

Familia <strong>de</strong> protocoale TCP/IP a fost <strong>de</strong>zvoltată <strong>de</strong> către Defense Advanced Research Projects<br />

Agency (DARPA) în anii 1970.


Obiectivul pr<strong>in</strong>cipal al DARPA a fost <strong>de</strong> “a <strong>de</strong>zvolta o tehnică efectivă pentru utilizare<br />

multiplexată a reţelelor <strong>in</strong>terconectate”. Acest obiectiv a fost at<strong>in</strong>s şi astăzi mii <strong>de</strong> reţele<br />

(conectate sau nu la faimosul Internet) folosesc familia <strong>de</strong> protocoale TCP/IP.<br />

În al doilea rând ei au urmărit următoarele obiective: comunicaţiile trebuie să cont<strong>in</strong>ue în<br />

ciuda pie<strong>de</strong>rii <strong>de</strong> servicii; suport pentru tipuri multiple <strong>de</strong> servicii; arhitectura Internet trebuie să<br />

se adapteze la o varietate <strong>de</strong> reţele; să permită un management distribuit al resurselor; să fie<br />

eficientă d<strong>in</strong> punt <strong>de</strong> ve<strong>de</strong>re al costului; şi să permită adăugarea <strong>de</strong> noi hosturi cu m<strong>in</strong>imum <strong>de</strong><br />

efort.<br />

În special un obiectiv, cont<strong>in</strong>uarea comunicaţiilor în ciuda pier<strong>de</strong>rii <strong>de</strong> servicii, a jucat un<br />

rol major în procesul <strong>de</strong> proiectare. Pentru a at<strong>in</strong>ge acest obiectiv, <strong>in</strong>formaţiile <strong>de</strong> stare care<br />

<strong>de</strong>scriu conversaţia în curs trebuie să fie protejate. Aşa că aceste <strong>in</strong>formaţii sunt obţ<strong>in</strong>ute la<br />

punctele f<strong>in</strong>ale <strong>de</strong> comunicare şi nici un packet care traversează nodurile reţelei nu are nevoie <strong>de</strong><br />

<strong>in</strong>formaţiile <strong>de</strong> stare.<br />

Fiecare host are asignată o adresă IP pe 32 <strong>de</strong> biţi. Această adresă i<strong>de</strong>ntifică reţeaua la care<br />

este ataşat acel host. Detalii <strong>de</strong>spre adresa IP vom afla mai tirziu.<br />

Numere <strong>de</strong> Port<br />

Datagramele IP specifică doar host-ul <strong>de</strong>st<strong>in</strong>aţie. Pentru a i<strong>de</strong>ntifica aplicaţia căreia îi sunt<br />

<strong>de</strong>st<strong>in</strong>ate aceste datagrame TCP şi UDP folosesc numere <strong>de</strong> port pe 16 biţi. Numerele <strong>de</strong> port sunt<br />

mai flexibile <strong>de</strong>cât id-urile <strong>de</strong> proces, un proces poate avea, în acelaşi timp, mai multe conexiuni<br />

dist<strong>in</strong>cte cu alte procese utilizând mai multe porturi. De asemeni un port poate fi folosit pentru a<br />

recepţiona mesaje <strong>de</strong> la mai multe surse.<br />

Serverele aşteaptă cererile clienţilor la porturi b<strong>in</strong>ecunoscute. De exemplu, HTTP<br />

(HyperText Transfer Protocol) are portul TCP şi UDP cu numărul 80. Numerele <strong>de</strong> port<br />

b<strong>in</strong>ecunoscute cu numere între 1 şi 1023 sunt adm<strong>in</strong>istrate <strong>de</strong> către Internet Assigned Numbers<br />

Authority (IANA).<br />

Procesele client în mod normal nu trebuie să-şi facă griji în priv<strong>in</strong>ţa numărului pe care îl<br />

vor folosi <strong>de</strong>oarece pot primi în mod automat un port unic la nivelul hostului pe care rulează.


Multiplexare/Demultiplexare<br />

Protocoalele <strong>de</strong> comunicaţie folosesc tehnici <strong>de</strong> multiplexare şi <strong>de</strong>multiplexare pe toate<br />

nivelele ierarhiei. Când trimitem un mesaj protocoalele diferitelor nivele ale stivei <strong>de</strong> protocoale<br />

TCP/IP <strong>de</strong> pe calculatorul sursă, <strong>in</strong>clud în acesta biţi suplimentari pr<strong>in</strong> care se specifică tipul<br />

mesajului, protocolul folosit etc. Calculatorul <strong>de</strong>st<strong>in</strong>aţie foloseşte aceste <strong>in</strong>formaţii în procesul <strong>de</strong><br />

<strong>de</strong>multiplexare a mesajelor. Procesul <strong>de</strong> <strong>de</strong>multiplexare a mesajelor pentru frame-uri Ethernet este<br />

ilustrat mai jos.<br />

Demultiplexarea mesajelor într-o reţea Ethernet


PROTOCOLUL INTERNET<br />

Internet Protocol (IP) este protocolul <strong>de</strong> bază pentru TCP şi UDP. Comunicaţiile IP sunt<br />

nesigure, în mod neconectat, şi mesajele protocolului IP sunt datagrame.<br />

Nesiguranţa protocolului IP se referă la faptul că datagramele pot fi pierdute, duplicate,<br />

sau pot sosi într-o altă ord<strong>in</strong>e <strong>de</strong>cât cea în care au fost trimise. Nu se stabileşte o conexiune<br />

îna<strong>in</strong>tea începerii schimbului <strong>de</strong> datagrame.<br />

Hea<strong>de</strong>r-ul (antetul) unei datagrame IP, este prezentat în figura <strong>de</strong> mai jos:<br />

Câmpurile hea<strong>de</strong>r-ului unei Datagrame IP<br />

- lungime hea<strong>de</strong>r – reprez<strong>in</strong>tă lungimea hea<strong>de</strong>r-ului IP<br />

- tipul serviciului – <strong>in</strong>dică dacă această datagramă necesită sau nu o tratare specială.


- lungime totală – stabileşte lungimea datagramei, <strong>in</strong>clusiv a hea<strong>de</strong>r-ul. Lungimea maximă<br />

a unei datagrame IP este 65515 bytes. Dacă este necesar IP fragmentează în mod automat<br />

mesajele ce trebuie transmise<br />

- i<strong>de</strong>ntificare – i<strong>de</strong>ntifică în mod unic fiecare datagramă trimisă <strong>de</strong> un host<br />

- flaguri şi fragment offset – sunt folosite în procesul <strong>de</strong> fragmentare a datagramelor<br />

- timpul <strong>de</strong> viaţă – limitează numărul <strong>de</strong> rutere pr<strong>in</strong> care datagrama poate trece<br />

- protocol – specifică tipul mesajului (e.g. UDP sau TCP), acest câmp este util în procesul<br />

<strong>de</strong> <strong>de</strong>multiplexare a datagramelor IP<br />

- sumă <strong>de</strong> control hea<strong>de</strong>r – suma <strong>de</strong> control a hea<strong>de</strong>r-ului IP<br />

- adresă IP sursă – orig<strong>in</strong>ea datagramei IP<br />

- adresă IP <strong>de</strong>st<strong>in</strong>aţie – <strong>de</strong>st<strong>in</strong>aţia datagramei IP<br />

PROTOCOLUL U DP<br />

User Datagram Protocol (UDP) – vezi si figura <strong>de</strong> mai jos – adaugă datagramelor IP<br />

<strong>in</strong>formaţii suplimentare astfel încât acestea să poată fi folosite <strong>de</strong> către procese; pentru<br />

i<strong>de</strong>ntificarea procesului <strong>de</strong>st<strong>in</strong>aţie se folosesc numărele <strong>de</strong> port. Suma <strong>de</strong> control UDP se referă la<br />

hea<strong>de</strong>r-ul UDP, unele câmpuri ale hea<strong>de</strong>r-ului IP, şi la date. Câmpul length se referă la numărul <strong>de</strong><br />

bytes al datagramei UDP <strong>in</strong>clusiv hea<strong>de</strong>r-ul.


Datagramă UDP<br />

UDP este doar o <strong>in</strong>terfaţă care face datagramele IP folosibile <strong>de</strong> către procese diferite.<br />

Deci UDP e la fel <strong>de</strong> nesigur ca şi IP, acest protocol negarantând că mesajele vor ajunge la<br />

<strong>de</strong>st<strong>in</strong>aţie. Mai multe <strong>de</strong>spre specificaţiile UDP pot fi găsite în RFC 768.<br />

PROTOCOLUL TCP<br />

Transmission Control Protocol, sau TCP, oferă un flux <strong>de</strong> date sigur, orientatconexiune,<br />

şi full-duplex.. Foloseşte protocolul IP pentru transmiterea datelor.<br />

TCP este protocolul, frecvent menţionat împreună cu IP, care este folosit pentru a<br />

corecta problemele care pot apărea la transportul datelor. TCP preia <strong>in</strong>formaţia pe care vrem să o<br />

transmitem şi o sparge în bucăţi. El numerotează apoi fiecare piesă astfel încât cel care primeşte<br />

datele să poată verifica şi să le pună înapoi în ord<strong>in</strong>ea corectă. Pentru a transmite secvenţa <strong>de</strong><br />

numere pr<strong>in</strong> reţea, el are un plic propriu cu <strong>in</strong>formaţiile necesare. Acesta este, la rândul său, pus<br />

în <strong>in</strong>teriorul unui plic IP şi transmis reţelei. Odată pus într-un plic IP reţeaua poate să îl<br />

transporte.<br />

La recepţie, un pachet <strong>de</strong> programe TCP colectează plicurile, extrage datele şi le aşează în<br />

ord<strong>in</strong>ea corectă. Dacă unele plicuri lipsesc, el cere emiţătorului să le mai transmită odată. Când are<br />

toată <strong>in</strong>formaţia ordonată corect, el trece datele către acel program <strong>de</strong> aplicaţii care utilizează<br />

serviciile sale.


Aceasta este o viziune puţ<strong>in</strong> utopică a TCP-ului. În realitate pachetele nu numai că se<br />

pierd, dar ele pot fi chiar alterate <strong>de</strong> către erorile <strong>de</strong> pe l<strong>in</strong>iile telefonice pe care le tranzitează.<br />

TCP se ocupă şi <strong>de</strong> această problemă. Când pune datele într-un plic, el calculează o sumă <strong>de</strong><br />

control. O suma <strong>de</strong> control este un număr care permite programului receptor să <strong>de</strong>tecteze erorile<br />

d<strong>in</strong> pachet. Când pachetul ajunge la <strong>de</strong>st<strong>in</strong>aţie, TCP-ul care face recepţia pachetelor, recalculează<br />

suma <strong>de</strong> control şi o compară cu cea a emiţătorului. Dacă ele nu sunt egale, o eroare a apărut în<br />

timpul transmiterii. TCP-ul care recepţionează va anula pachetul şi va cere retransmiterea lui.<br />

Îna<strong>in</strong>te ca două aplicaţii să transfere date via TCP, între acestea trebuie stabilită o<br />

conexiune. Deoarece mesajele <strong>de</strong> control TCP nu sunt vizibile aplicaţiilor, acestea folosesc<br />

fluxurile <strong>de</strong> date TCP similar cu apelurile I/O d<strong>in</strong> UNIX. Siguranţa fluxului <strong>de</strong> date TCP e<br />

asigurată pr<strong>in</strong>:<br />

- Datele sunt fragmentate în segmente.<br />

TCP menţ<strong>in</strong>e un timer pentru fiecare segment trimis. Dacă nu primeşte o confirmare în timpul<br />

<strong>in</strong>dicat <strong>de</strong> timer atunci retransmite acel segment.<br />

- Datele primite sunt confirmate.<br />

Pr<strong>in</strong> <strong>in</strong>termediul sumei <strong>de</strong> control se verifică corectitud<strong>in</strong>ea datelor. Segmentele corupte sunt<br />

elim<strong>in</strong>ate iar emiţătorul neprim<strong>in</strong>d confirmările în timpul <strong>in</strong>dicat <strong>de</strong> timer le va retransmite.<br />

Deoarece TCP se bazează pe datagramele IP în realizarea schimbului <strong>de</strong> date, şi acestea pot sosi<br />

în altă ord<strong>in</strong>e <strong>de</strong>cât cea în care au fost trimise, TCP resecvenţionează datele în cazul în care e<br />

necesar.<br />

- TCP <strong>de</strong>tectează şi elim<strong>in</strong>ă duplicatele datagramelor IP.<br />

Controlul fluxului <strong>de</strong> date e realizat <strong>de</strong> TCP: fiecare punct f<strong>in</strong>al <strong>de</strong> comunicaţie <strong>de</strong>ţ<strong>in</strong>e o mulţime<br />

f<strong>in</strong>ită <strong>de</strong> date care sunt expediate până sunt confirmate <strong>de</strong> către cealaltă parte (acest proce<strong>de</strong>u se<br />

numeşte „fereastră glisantă“).


Hea<strong>de</strong>rul TCP<br />

Hea<strong>de</strong>r-ul TCP, prezentat în figura <strong>de</strong> mai sus, conţ<strong>in</strong>e cel puţ<strong>in</strong> 20 <strong>de</strong> octeţi. Ca şi în<br />

cazul datagramelor UDP, segmentele TCP conţ<strong>in</strong> numerele <strong>de</strong> port ale proceselor sursă şi<br />

<strong>de</strong>st<strong>in</strong>aţie. Împreună cu adresele IP sursă şi <strong>de</strong>st<strong>in</strong>aţie acestea i<strong>de</strong>ntifică în mod unic fiecare<br />

conexiune.<br />

Câmpul număr <strong>de</strong> secvenţă – i<strong>de</strong>ntifică poziţia acestei secvenţe <strong>de</strong> date în segment.<br />

Număr <strong>de</strong> confirmare – coţ<strong>in</strong>e numărul următoarei secvenţe <strong>de</strong> date pe care emiţătorul<br />

confirmării aşteaptă să o primească.<br />

Lugime hea<strong>de</strong>r – lungimea hea<strong>de</strong>r-ului TCP.<br />

Se utilizează diferite flaguri (biti) pentru stabilirea conexiunii şi controlul <strong>in</strong>formaţiilor <strong>de</strong><br />

stare. Dimensiunea ferestrei glisante <strong>in</strong>dică modulului TCP <strong>de</strong> la recepţie numărul <strong>de</strong> octeţi pe care<br />

emiţătorul poate să îl accepte. În mod normal, dimensiunea ferestrei glisante este <strong>de</strong> câteva mii <strong>de</strong><br />

octeţi. Suma <strong>de</strong> control TCP <strong>in</strong>clu<strong>de</strong> datele TCP în calcule. TCP cere ca emiţătorul să calculeze<br />

suma <strong>de</strong> control şi să o <strong>in</strong>cludă în acest câmp. Modulul <strong>de</strong> recepţie trebuie să verifice sumele <strong>de</strong><br />

control când primeşte datele. Po<strong>in</strong>terul <strong>de</strong> urgenţă specifică poziţia unui octet în zona <strong>de</strong> date TCP.


Scopul său este <strong>de</strong> a atenţiona modulul TCP receptor că există date urgente şi <strong>de</strong> a <strong>in</strong>dica poziţia<br />

acestora.<br />

Mai multe <strong>in</strong>formaţii <strong>de</strong>spre specificaţiile TCP pot fi găsite în RFC 793.<br />

Pentru a garanta siguranţa şi secvenţialitatea pentru fluxul <strong>de</strong> octeţi, TCP foloseşte<br />

confirmări (monitorizate <strong>de</strong> timere) şi sume <strong>de</strong> control.<br />

IP UDP TCP<br />

orientat-conexiune da nu da<br />

numere <strong>de</strong> port nu da da<br />

sume <strong>de</strong> control nu opt. da<br />

confirmări nu nu da<br />

timeout şi retransmisii nu nu da<br />

<strong>de</strong>tecţia duplicatelor nu nu da<br />

secvenţiere nu nu da<br />

controlul fluxului nu nu da<br />

Mo<strong>de</strong>lul Client/Server<br />

O comparaţie între protocoalele IP, UDP, şi TCP<br />

MODELE DE CALCUL DISTRIBUIT<br />

În cadrul mo<strong>de</strong>lului client/server două sau mai multe procese, eventual rulând pe maş<strong>in</strong>i<br />

diferite, cooperează în realizarea unui anumit task. Schema <strong>de</strong> comunicare este următoare: un<br />

proces (numit client) trimite o cerere (cere un serviciu) către alte procese (numite servere). Serverele<br />

vor transmite un anumit răspuns către client. Aceste <strong>in</strong>teracţiuni sunt ilustrate în figura următoare.


Există două tipuri <strong>de</strong> servere:<br />

Mo<strong>de</strong>lul Client/Server<br />

- servere concurente care pot rezolva mai multe cereri simultan, şi<br />

- servere iterative care pot rezolva o s<strong>in</strong>gură cerere la un moment dat.<br />

Serverele concurente sunt folosite mai ales atunci când răspunsul nu poate fi transmis<br />

înapoi imediat sau când trebuie realizate comunicaţii suplimentare cu clientul. De obicei serverele<br />

concurente folosesc protocoale <strong>de</strong> comunicaţie orientate conexiune. Ele sunt implementate pr<strong>in</strong><br />

<strong>in</strong>termediul proceselor (via apelul fork() <strong>in</strong> sistemele UNIX, <strong>in</strong> limbajul C standard) sau al firelor<br />

<strong>de</strong> execuţie (thread-uri, <strong>in</strong> sisteme <strong>de</strong> operare sau limbaje care permit aceasta). Serverele iterative<br />

sunt i<strong>de</strong>ale în cazul în care cererile pot fi rezolvate rapid iar răspunsul este scurt. În mod normal<br />

sunt construite cu ajutorul protocoalelor neorientate-conexiune.


Un scenariu <strong>de</strong> <strong>in</strong>teracţiune Client/Server<br />

Un client este o parte a aplicaţiei care este rulată <strong>de</strong> către utilizator. Serverele, în mod<br />

normal, sunt <strong>de</strong>moni care sunt lansaţi în execuţie la boot-area sistemului, sau când soseşte o cerere<br />

către acel serviciu. Odată lansaţi în execuţie <strong>de</strong>monii rămân în memorie până la reboot-area<br />

sistemului. Cele mai multe servere petrec majoritatea timpului în aşteptarea cererilor pe care sunt<br />

capabile să le rezolve. Este posibil ca procesele client şi server să ruleze pe acelaşi computer, dar<br />

acest lucru nu este necesar dacă cele două procese folosesc facilităţile oferite <strong>de</strong> reţeaua <strong>de</strong><br />

comunicaţie.


PARTEA 8<br />

ASPECTE PRACTICE<br />

LEGATE DE INTERNET<br />

SISTEMUL DE NUMIRE A DOMENIILOR<br />

Destul <strong>de</strong> <strong>de</strong>vreme, s-a realizat că adresele sunt bune pentru comunicarea d<strong>in</strong>tre maş<strong>in</strong>i,<br />

dar şi că oamenii preferă nume. Este dificilă discuţia <strong>de</strong>spre Internet folos<strong>in</strong>d adrese numerice,<br />

dar şi mai greu sunt <strong>de</strong> ţ<strong>in</strong>ut m<strong>in</strong>te. De aceea <strong>calculatoare</strong>lor <strong>de</strong> pe Internet li s-au dat nume<br />

pentru uşur<strong>in</strong>ţa folosirii lor, <strong>de</strong> către utilizatorii umani.<br />

La început, când Internetul era o organizaţie nu prea <strong>de</strong>zvoltată, utilizarea numelor era<br />

uşoară. NIC-ul (Network Informaţion Center) ţ<strong>in</strong>ea un registru (un fisier <strong>de</strong>numit hosts) pe care îl<br />

actualiza mereu. Se putea trimite un formular, electronic <strong>de</strong>sigur, şi NIC îl adăuga la lista <strong>de</strong> nume<br />

şi adrese pe care o întreţ<strong>in</strong>ea. Acest fişier numit fişierul <strong>de</strong> <strong>calculatoare</strong> gazdă, era distribuit regulat<br />

către fiecare maş<strong>in</strong>ă gazdă <strong>de</strong> pe reţea. Numele erau cuv<strong>in</strong>te simple, fiecare alese pentru a fi unice.<br />

Dacă c<strong>in</strong>eva utiliza un nume, calculatorul îl căuta în fişier şi îl substituia cu adresa<br />

corespunzătoare.<br />

D<strong>in</strong> nefericire, când Internetul s-a răspândit şi a crescut, tot astfel s-a întâmplat şi cu acel<br />

fişier. Exista o întârziere semnificativă în obţ<strong>in</strong>erea unui nume <strong>de</strong>ja înregistrat şi <strong>de</strong>venise dificil<br />

<strong>de</strong> găsit nume care nu mai fuseseră încă folosite. De asemenea, se pier<strong>de</strong>a prea mult timp în reţea<br />

pentru a distribui acest fişier mare către fiecare maş<strong>in</strong>ă care era cupr<strong>in</strong>să în acesta. Era clar că era<br />

nevoie <strong>de</strong> un sistem distribuit, conectat direct la un sistem central care să <strong>in</strong>fluenţeze în b<strong>in</strong>e rata<br />

<strong>de</strong> schimb a fişierelor. Acest sistem este numit Sistemul <strong>de</strong> Numire a Domeniilor sau DNS<br />

(Doma<strong>in</strong> Name System).<br />

DNS este o metodă <strong>de</strong> adm<strong>in</strong>istrare a numelor pr<strong>in</strong> trecerea către grupuri diferite a<br />

responsabilităţii pentru subseturile care formează acest nume. Fiecare nivel în acest sistem este<br />

numit domeniu. Domeniile sunt separate pr<strong>in</strong> puncte:<br />

• ux.cso.uiuc.edu<br />

• nic.ddn.mil


• yoyodyne.com<br />

• fenrir.<strong>in</strong>foiasi.ro<br />

Dacă citim un astfel <strong>de</strong> nume, fiecare domeniu pe care îl întâlnim este mai mare <strong>de</strong>cât cel<br />

prece<strong>de</strong>nt. Pentru primul nume (ux.cso.uiuc.edu), ux este numele calculatorului gazdă. Numele<br />

pentru acel calculator este creat şi întreţ<strong>in</strong>ut <strong>de</strong> către grupul cso. Departamentul cso este o parte a<br />

Universităţii Il<strong>in</strong>ois d<strong>in</strong> Urbana Champaign (uiuc). Uiuc este o porţiune d<strong>in</strong> grupul <strong>de</strong> <strong>in</strong>stituţii <strong>de</strong><br />

educaţie (edu) – universitati, <strong>in</strong>stitute <strong>de</strong> cercetare. Deci domeniul edu conţ<strong>in</strong>e toate <strong>calculatoare</strong>le<br />

d<strong>in</strong> <strong>in</strong>stitutele educaţionale ale SUA, domeniul uiuc.edu conţ<strong>in</strong>e toate <strong>calculatoare</strong>le <strong>de</strong> la Univ.<br />

Il<strong>in</strong>ois şi aşa mai <strong>de</strong>parte.<br />

Fiecare grup poate crea sau schimba tot ceea ce există în <strong>in</strong>teriorul său. Dacă uiuc <strong>de</strong>ci<strong>de</strong><br />

să creeze un alt grup numit ncsa, el poate face asta fără să ceară permisiunea nimănui. Tot ce<br />

trebuie să facă este să adauge noile nume în partea sa d<strong>in</strong> baza <strong>de</strong> date mondială, iar mai <strong>de</strong>vreme<br />

sau mai târziu toţi cei care au nevoie să afle vor şti <strong>de</strong> noul nume (nsca.uiuc.edu). Similar, cso poate<br />

cumpăra un nou calculator, să-i <strong>de</strong>a un nume şi să-l adauge în reţea fără să ceară permisiunea<br />

nimănui. Dacă fiecare grup <strong>de</strong> la edu în jos va respecta regulile şi vor fi siguri că numele pe care le<br />

dau sunt unice, atunci fiecare două sisteme <strong>de</strong> oriun<strong>de</strong> d<strong>in</strong> Internet nu vor avea acelaşi nume.<br />

Similar, pentru numele simbolic fenrir.<strong>in</strong>foiasi.ro.<br />

Este uşor să ne dăm seama <strong>de</strong> un<strong>de</strong> v<strong>in</strong> numele şi domeniile d<strong>in</strong>tr-o organizaţie ca<br />

universitatea sau o companie. Domeniile <strong>de</strong> la cel mai înalt nivel (ca edu) au fost create atunci<br />

când a fost <strong>in</strong>ventat sistemul domeniilor. La început, cele mai înalte nivele au fost în număr <strong>de</strong><br />

şase:<br />

Domeniul Utilizare<br />

Com pentru organizaţii comerciale (www.amazon.com)<br />

Edu organizaţii educaţionale (www.gmu.edu)<br />

Gov organizaţii guvernamentale, nemilitare (whitehouse.gov)<br />

Mil organizaţii militare (navy.mil)<br />

Org alte organizaţii (www.w3.org)<br />

Net Resurse pentru reţea (<strong>in</strong>ternic.net)


Când Internet a <strong>de</strong>venit o reţea <strong>in</strong>ternaţională, a fost necesară o modalitate <strong>de</strong> a da<br />

celorlalte ţări responsabilitatea pentru propriile nume. Acum există un set <strong>de</strong> domenii notate cu<br />

două litere (conform codului rutier), care corespund domeniilor <strong>de</strong> nivel cel mai înalt, pentru ţări.<br />

De exemplu .ro pentru Romania, .fr pentru Franta, .jp pentru Japonia sau chiar .us pentru USA.<br />

Când se foloseşte un nume ca fenrir.<strong>in</strong>foiasi.ro, calculatorul trebuie să îl transforme într-o<br />

adresa. Pentru aceasta el cere ajutorul serverelor DNS, începând <strong>de</strong> la dreapta spre stânga<br />

numelui. Pentru început, el cere serverului local DNS să caute adresa. În acest moment sunt trei<br />

posibilităţi:<br />

• Serverul local ştie adresa, pentru că adresa este în porţiunea d<strong>in</strong> baza <strong>de</strong> date mondială a<br />

acestui server<br />

• Serverul local ştie adresa pentru că altc<strong>in</strong>eva a întrebat recent <strong>de</strong> aceeaşi adresă<br />

• Serverul local nu cunoaşte adresa, dar ştie cum să o afle.<br />

Software-ul serverului contactează un server rădăc<strong>in</strong>ă. Acesta este serverul care ştie<br />

adresele serverelor pentru zona (ro) nivelului cel mai înalt (cel d<strong>in</strong> dreapta). El cere serverului<br />

rădăc<strong>in</strong>ă adresa calculatorului responsabil cu zona <strong>in</strong>foiasi.ro. Programul contactează apoi acel<br />

calculator şi îi cere adresa serverului fenrir. În sfârşit, el contactează acea maş<strong>in</strong>ă şi primeşte adresa<br />

lui fenrir, calculatorul gazdă care a fost scopul acestei aplicaţii.<br />

În concluzie, avantajul real al DNS este că el împarte giganticul Internet într-un mănunchi<br />

<strong>de</strong> piese mai uşor <strong>de</strong> stăpânit. Deşi sunt sute <strong>de</strong> mii <strong>de</strong> <strong>calculatoare</strong> ele au un nume; iar numele<br />

sunt organizate într-o manieră convenabilă, făcând mai uşor pentru utilizator <strong>de</strong> ţ<strong>in</strong>ut m<strong>in</strong>te cele<br />

<strong>de</strong> care are nevoie.


Conectarea la distanţă<br />

SERVICII DE BAZĂ ÎN INTERNET<br />

Telnet este protocolul Internetului <strong>de</strong> conectare la distanţa. El ne permite ca <strong>de</strong> la o<br />

tastatură legată la un calculator să ne conectăm la un alt calculator aflat la distanţă. Conectarea se<br />

poate face la o maş<strong>in</strong>ă care se află în aceeaşi cameră, în acelaşi campus, sau într-un colţ în<strong>de</strong>părtat<br />

al lumii. Atunci când suntem conectaţi e ca şi cum tastatura ar fi legată direct la acel calculator.<br />

Putem accesa oricare d<strong>in</strong> serviciile pe care acea maş<strong>in</strong>ă le oferă pentru term<strong>in</strong>alele ei locale. Putem<br />

rula o sesiune <strong>in</strong>teractivă normală (conectarea la sistem, executarea <strong>de</strong> comenzi) sau putem avea<br />

acces la o mulţime <strong>de</strong> servicii speciale: putem citi un catalog al unei biblioteci, să accesăm un text<br />

d<strong>in</strong>tr-un ziar sau să profităm <strong>de</strong> multe alte servicii care sunt oferite <strong>de</strong> diferite sisteme d<strong>in</strong> reţea.<br />

Deşi există un număr mare <strong>de</strong> comenzi, având un număr şi mai mare <strong>de</strong> subcomenzi,<br />

doar câteva sunt utilizate în general:<br />

close<br />

Term<strong>in</strong>ă o conexiune care exista <strong>de</strong>ja sau a fost creată. Ea <strong>de</strong>conectează imediat<br />

utilizatorul <strong>de</strong> la sistemul aflat la distanţă; pate ieşi şi d<strong>in</strong> Telnet dacă am specificat numele<br />

calculatorului direct în comanda telnet. Această comandă este folositoare dacă am <strong>in</strong>trat<br />

<strong>in</strong>tr-o legătură cu un alt calculator şi vrem să ieşim <strong>de</strong> acolo.<br />

open nume<br />

Încearcă sa creeze o conexiune cu maş<strong>in</strong>a <strong>in</strong>dicată. Este necesar numele sau adresa<br />

maş<strong>in</strong>ii. Majoritatea programelor Telnet vor cere explicit un nume <strong>de</strong> maş<strong>in</strong>ă dacă acesta<br />

nu este specificat. Reţ<strong>in</strong>em că trebuie să dăm comanda close pentru a închi<strong>de</strong> o conexiune<br />

existentă îna<strong>in</strong>te <strong>de</strong> a <strong>de</strong>schi<strong>de</strong> o alta nouă.<br />

set echo<br />

Activează sau <strong>de</strong>zactivează ecoul local. Ecoul este procesul pr<strong>in</strong> care caracterele pe care<br />

le-am tastat apar pe ecran. De obicei, calculatorul aflat la distanţă este responsabil cu<br />

trimiterea caracterelor tastate înapoi către term<strong>in</strong>alul nostru după ce le-a recepţionat.<br />

Acest lucru se numeşte ecou la distanţă şi este consi<strong>de</strong>rat mai sigur pentru că atunci poţi<br />

şti dacă sistemul aflat la distanţă a recepţionat corect ceea ce am tastat. Ecoul local


înseamnă că afişarea, pe ecran, a ceea ce tastăm, este responsabilitatea calculatorului local.<br />

Deoarece ecoul la distantă este mai sigur Telnet începe cu ecoul local <strong>de</strong>zactivat.<br />

Comanda set echo funcţionează ca un întrerupător.<br />

Cum ştim când trebuie activat sau <strong>de</strong>zactivat ecoul local? Dacă ecoul este <strong>de</strong>zactivat şi el<br />

ar trebui să fie activ, caracterele tastate nu vor afişate; nu vom ve<strong>de</strong>a comenzile pe care le<br />

trimitem sistemului aflat la distanţă, dar vom ve<strong>de</strong>a rezultatul acestor comenzi. Dacă<br />

ecoul local este activ şi el ar trebui să fie <strong>de</strong>zactivat, vom ve<strong>de</strong>a fiecare caracter pe care îl<br />

tastăm <strong>de</strong> două ori. În ambele cazuri soluţia este aceiaşi: se <strong>in</strong>tră în l<strong>in</strong>ia <strong>de</strong> comandă şi se<br />

tastează set echo.<br />

set escape car<br />

Atribuie caracterului escape (s<strong>in</strong>gurul caracter care nu poate fi transmis la distanţă <strong>de</strong><br />

Telnet) valoarea caracterului specificat. E important ca acel caracter escape pe care l-am<br />

ales să nu fie niciodată nevoie să îl folosim cât timp lucrăm în mod normal. Acest lucru<br />

poate fi o problemă, multe programe atribuie acţiuni pentru aproape toate tastele.<br />

quit<br />

term<strong>in</strong>ă programul Telnet<br />

^z (CTRL+Z)<br />

Suspendă temporar sesiunea Telnet pentru a permite altor comenzi să fie executate pe<br />

sistemul local. Conexiunile şi alte opţiuni rămân neschimbate la revenirea în program.<br />

Transferul fişierelor: ftp<br />

A<strong>de</strong>seori, vom găsi <strong>in</strong>formaţie pe Internet pe care nu dorim să o exam<strong>in</strong>ăm <strong>de</strong> pe un<br />

sistem aflat la distanţă având nevoie <strong>de</strong> o copie.<br />

Programul ftp se numeşte aşa după protocolul <strong>de</strong> aplicaţie pe care îl foloseşte: File<br />

Transfer Protocol (FTP). Aşa cum spune şi numele, sarc<strong>in</strong>a protocolului este să transfere fişiere<br />

<strong>de</strong> la un calculator la altul. Nu contează un<strong>de</strong> sunt situate cele două <strong>calculatoare</strong>, cum sunt<br />

conectate şi nici chiar dacă folosesc acelaşi sistem <strong>de</strong> operare.<br />

Vom prezenta în cont<strong>in</strong>uare cele mai folositoare comenzi ftp


ascii<br />

Intră în modul ASCII, pentru transferarea fişierelor text.<br />

b<strong>in</strong>ary<br />

Intră în modul b<strong>in</strong>ar, pentru transferarea fişierelor b<strong>in</strong>are.<br />

cd director_la_distanţă<br />

Schimbă directorul <strong>de</strong> lucru pe maş<strong>in</strong>a aflată la distanţă<br />

close<br />

Term<strong>in</strong>ă sesiunea ftp cu o anumită maş<strong>in</strong>ă şi se întoarce în modul comandă ftp. După<br />

close, putem <strong>in</strong>troduce open pentru a <strong>de</strong>schi<strong>de</strong> o conexiune cu un nou sistem, sau quit<br />

pentru a ieşi d<strong>in</strong> ftp.<br />

<strong>de</strong>lete nume_fişier<br />

Şterge fişierul numit <strong>de</strong> pe maş<strong>in</strong>a aflată la distanţă.<br />

dir fişier_<strong>de</strong>st<strong>in</strong>aţie<br />

Oferă un list<strong>in</strong>g complet al directorului curent <strong>de</strong> pe maş<strong>in</strong>a aflată la distanţă. Fişier şi<br />

<strong>de</strong>st<strong>in</strong>aţie sunt ambele opţionale. fişier poate fi numele unui s<strong>in</strong>gur fişier sau o construcţie<br />

<strong>de</strong> metacaractere. List<strong>in</strong>gul oferă toate numele <strong>de</strong> fişiere care satisfac specificaţia. Dacă<br />

fişier este omis, list<strong>in</strong>gul dă toate fişierele d<strong>in</strong> directorul curent <strong>de</strong> pe maş<strong>in</strong>a aflată la<br />

distanţă. Dest<strong>in</strong>aţia specifică un<strong>de</strong> va fi pus rezultatul. Dacă <strong>de</strong>st<strong>in</strong>aţie este omis, apare<br />

list<strong>in</strong>gul pe ecran.<br />

hash<br />

Spune ftp-ului să tipărească un caracter diez (#) <strong>de</strong> fiecare dată când este transferat un<br />

bloc <strong>de</strong> date, semnalându-ne vizual dacă datele au fost transferate.<br />

help comandă<br />

Afişează o bucată mică d<strong>in</strong> documentaţia <strong>de</strong>spre acea comandă.<br />

lcd director<br />

Schimbă directorul implicit <strong>de</strong> pe maş<strong>in</strong>a locală în directorul numit<br />

ls fişier_<strong>de</strong>st<strong>in</strong>aţie


Oferă un list<strong>in</strong>g scurt al directorului <strong>de</strong> pe maş<strong>in</strong>a aflată la distanţă. Argumentele sunt la<br />

fel ca la dir.<br />

mget listă_fişiere<br />

Transferă mai multe fişiere <strong>de</strong> pe maş<strong>in</strong>a accesată<br />

mput listă_fişiere<br />

Pune mai multe fişiere pe maş<strong>in</strong>a accesată<br />

open nume_maş<strong>in</strong>ă<br />

Realizează conexiunea cu maş<strong>in</strong>a numită. Este folositoare dacă vrem să ne conectăm la un<br />

nou sistem după ce am transferat fişiere <strong>de</strong> pe un alt sistem.<br />

prompt<br />

Cu mget şi mput, comanda prompt spune ftp-ului să ceară confirmarea îna<strong>in</strong>tea<br />

transferării fiecărui fişier. Este folositor dacă vrem să fim siguri că nu transferăm fişiere <strong>de</strong><br />

care nu avem nevoie<br />

pwd<br />

Afişează numele directorului curent <strong>de</strong> pe maş<strong>in</strong>a accesată.<br />

quit<br />

Închi<strong>de</strong> conexiunea, dacă există una, şi iese d<strong>in</strong> ftp.<br />

user nume_utilizator<br />

Trimite numele <strong>de</strong> utilizator către maş<strong>in</strong>a aflată la distanţă pentru conectare. Este<br />

folositoare dacă am <strong>in</strong>trodus numele <strong>de</strong> utilizator sau parola <strong>in</strong>corect. Decât să închi<strong>de</strong>m<br />

conexiunea şi să <strong>de</strong>schi<strong>de</strong>m alta nouă, putem încerca d<strong>in</strong> nou <strong>in</strong>troducând comanda user.


Sistemul <strong>de</strong> poştă electronică<br />

Prelim<strong>in</strong>arii<br />

Este unul d<strong>in</strong> cele mai larg răspândite servicii Internet. Porn<strong>in</strong>d <strong>in</strong>iţial ca un serviciu<br />

simplu capabil să mute mesaje text (şir <strong>de</strong> caractere) <strong>de</strong> pe un calculator pe altul şi să-l adauge la<br />

un fişier numit căsuţa poştală, e-mail a cunoscut o <strong>de</strong>zvoltare concomitentă cu <strong>de</strong>zvoltarea<br />

reţelelor <strong>de</strong> comunicaţie.<br />

În general, un mesaj e-mail este un text împreună cu <strong>in</strong>formaţiile referitoare la <strong>de</strong>st<strong>in</strong>atar,<br />

expeditor etc., <strong>in</strong>formaţii constituite în aşa-numitul hea<strong>de</strong>r al mesajului. De obicei, hea<strong>de</strong>r-ul unui<br />

mesaj este generat <strong>de</strong> aplicaţia e-mail folosită. Iată în cele ce urmează o listă a câmpurilor care<br />

formează hea<strong>de</strong>r-ul unui mesaj:<br />

• From - conţ<strong>in</strong>e adresa <strong>de</strong> e-mail a "expeditorului"(utilizatorul care trimite mesajul);<br />

• To - conţ<strong>in</strong>e adresa e-mail a <strong>de</strong>st<strong>in</strong>atarului; aceasta trebuie sa fie cunoscută <strong>de</strong> către<br />

expeditorul mesajului;<br />

• Subject - este o <strong>de</strong>scriere în câteva cuv<strong>in</strong>te a mesajului - nu este obligatorie;<br />

• Date - este data la care mesajul a fost transmis - este comletată automat <strong>de</strong><br />

programul client;<br />

• Replay-to - este adresa la care expeditorul doreşte să primească răspunsul la mesajul<br />

respectiv.(este util atunci când acesta <strong>de</strong>ţ<strong>in</strong>e mai multe căsuţe poştale şi doreşte ca răspunsurile să<br />

fie colectate într-una s<strong>in</strong>gură);<br />

• Message-ID - un şir <strong>de</strong> i<strong>de</strong>ntificare generat <strong>de</strong> agentul <strong>de</strong> transport la trimiterea<br />

mesajului. Acest i<strong>de</strong>ntificator este unic pentru fiecare mesaj;<br />

• Received - fiecare calculator care primeşte mesajul şi îl transmite mai <strong>de</strong>parte adaugă<br />

câte un astfel <strong>de</strong> câmp. În felul acesta se poate reconstitui drumul urmat <strong>de</strong> mesaj <strong>de</strong> la expeditor<br />

la <strong>de</strong>st<strong>in</strong>atar;<br />

• Cc (carbon copy - copie la <strong>in</strong>digo) - utilizatorii ale căror adrese sunt trecute în<br />

acest câmp vor primi câte o copie a mesajului;


• Bcc (bl<strong>in</strong>d carbon copy) - sunt copii trimise unei liste <strong>de</strong> cititori, la fel ca şi copiile<br />

<strong>in</strong>digo obişnuite (Cc). Totuşi l<strong>in</strong>ia <strong>de</strong> antet care listează <strong>de</strong>st<strong>in</strong>atarii este ştearsă automat d<strong>in</strong><br />

mesajul trimis. De aceea , nici unul d<strong>in</strong>tre <strong>de</strong>st<strong>in</strong>atarii mesajului nu va şti c<strong>in</strong>e a mai primit "copii<br />

la <strong>in</strong>digo <strong>in</strong>vizibile". D<strong>in</strong> moment ce nu există nici o înregistrare în mesajul recepţionat că aceste<br />

copii au fost trimise, acţiunile ulterioare care folosesc date d<strong>in</strong> antet, nu îi vor <strong>in</strong>clu<strong>de</strong> şi pe aceşti<br />

<strong>de</strong>st<strong>in</strong>atari;<br />

• Fişierele semnătură .signature - sunt o cale <strong>de</strong> adăugare a unor <strong>in</strong>formaţii<br />

suplimentare la mesajele trimise. Ele sunt a<strong>de</strong>sea folosite pentru a <strong>in</strong>clu<strong>de</strong> <strong>in</strong>formaţii <strong>de</strong>spre<br />

utilizator şi cum poate fi el contactat<br />

S<strong>in</strong>gurul <strong>in</strong>diciu pe care îl are sistemul <strong>de</strong> e-mail pentru a livra un mesaj este adresa<br />

<strong>de</strong>st<strong>in</strong>atarului. Acesta este <strong>de</strong> forma nume_utiliator@domeniu. Numele utilizatorului este<br />

numele contului pe care acel utilizator îl <strong>de</strong>ţ<strong>in</strong>e sau, mai rar, poate fi un alias al utilizatorului,<br />

<strong>de</strong>f<strong>in</strong>it pe maş<strong>in</strong>a acestuia. Într-o reţea în care conturile utilizator sunt dispuse pe mai multe<br />

maş<strong>in</strong>i se pot specifica adrese <strong>de</strong> e-mail care să ascundă numele maş<strong>in</strong>ii şi astfel d<strong>in</strong> exterior să<br />

apară adrese cu acelaşi domeniu pentru toţi utilizatorii.<br />

Facilităţi e-mail generale<br />

La primul contact cu sistemul e-mail utilizatorul va compune (Compose) un mesaj.<br />

Câmpul To: poate conţ<strong>in</strong>e mai multe adrese <strong>de</strong> <strong>de</strong>st<strong>in</strong>atari. Este sarc<strong>in</strong>a utilizatorului să-şi<br />

actualizeze lista <strong>de</strong> adrese <strong>de</strong> e-mail a utilizatorilor cu care va schimba mesaje. Dar nu este<br />

s<strong>in</strong>gurul mod <strong>de</strong> a trimite mesaje:<br />

• Reply - Odată un mesaj primit el poate fi returnat expeditorului, eventual în<br />

prealabil modificat. Mesajul returnat poate conţ<strong>in</strong>e corpul mesajului orig<strong>in</strong>al, sau nu. Mesajul<br />

orig<strong>in</strong>al poartă numele <strong>de</strong> quoted text. Returnarea poate fi făcută doar expeditorului (Reply to<br />

sen<strong>de</strong>r) sau expeditorului şi tuturor celor care au primit mesajul (Reply to all recipients).<br />

• Forward - mesajul primit pate fi "trimis mai <strong>de</strong>parte" unor alţi utilizatori (care nu<br />

se aflau în lista <strong>de</strong>st<strong>in</strong>atarilor mesajului orig<strong>in</strong>al).<br />

Mesajele sunt organizate în colecţii numite fol<strong>de</strong>re. Mesajele noi apar colecţionate într-un<br />

fol<strong>de</strong>r numit <strong>de</strong> cele mai multe ori <strong>in</strong>box (căsuţă <strong>de</strong> <strong>in</strong>trare). Dacă sistemul local <strong>de</strong> e-mail<br />

permite stocarea temporară a mesajelor care urmează să fie trimise, aceasta poartă numele <strong>de</strong><br />

outbox (căsuţă <strong>de</strong> ieşire). De asemenea, odată un mesaj compus şi trimis, o copie a acestuia<br />

rămâne stocată într-un fol<strong>de</strong>r numit sent-mail.


Atunci când mesajul electronic nu poate fi distribuit, expeditorul primeşte o notificare în<br />

acest sens, care explică şi cauzele <strong>in</strong>succesului. Există trei motive obişnuite pentru care poşta<br />

electronică eşuează:<br />

• Sistemul <strong>de</strong> poşta electronică nu poate găsi maş<strong>in</strong>a <strong>de</strong>st<strong>in</strong>atarului - "Host<br />

unknown" (acest lucru înseamnă că domeniul d<strong>in</strong> adresa <strong>de</strong>st<strong>in</strong>atarului este <strong>in</strong>existent);<br />

• Dest<strong>in</strong>atarul nu este cunoscut <strong>de</strong> acea maş<strong>in</strong>ă - "Unknown user" (domeniul este<br />

corect, dar pe maş<strong>in</strong>a respectivă nu se afla un utilizator cu numele specificat în mesaj);<br />

• Programul poate găsi atât maş<strong>in</strong>a cât şi <strong>de</strong>st<strong>in</strong>atarul, dar nu poate transmite<br />

mesajul. Iată câteva motive posibile:<br />

• reţeaua poate avea erori, făcând imposibil contactul cu maş<strong>in</strong>a aflată la<br />

distanţă;<br />

• sistemul aflat la distanţă poate fi "mort" (poate avea <strong>de</strong> exemplu,<br />

probleme hardware);<br />

• sistemul aflat la distanţă poate fi greşit configurat.<br />

Agenţi <strong>de</strong> transport pentru poşta electronică<br />

Cu toate că utilizatorul serviciului e-mail <strong>in</strong>teracţionează nemijlocit doar cu clientul e-mail<br />

(programul care permite în esenţă trimiterea şi primirea mesajelor ), cre<strong>de</strong>m că se impun câteva<br />

specificaţii <strong>de</strong>spre protocoalele care asigură transferul mesajelor <strong>de</strong> pe un calculator pe altul.<br />

Aceste protocoale sunt protocoale la nivelul aplicatie <strong>in</strong> cadrul stivei <strong>de</strong> protocoale TCP/IP.<br />

• SMTP (Simple Mail Transport Protocol) - este protocolul consacrat <strong>de</strong><br />

transport e-mail în Internet. În general, pentru trimiterea unui mesaj între două maş<strong>in</strong>i d<strong>in</strong><br />

Internet se realizează o conexiune <strong>de</strong> tip SMTP care constă într-o etapă <strong>de</strong> autentificare şi<br />

transferul efectiv. D<strong>in</strong> punctul <strong>de</strong> ve<strong>de</strong>re al utilizatorului s<strong>in</strong>gura <strong>in</strong>teracţiune cu acest protocol<br />

constă în specificarea numelui server-ului SMTP. Acest nume se obţ<strong>in</strong>e <strong>de</strong> la adm<strong>in</strong>istratorul <strong>de</strong><br />

sistem.<br />

• POP (Post Office Protocol) - este un protocol care lucrează pe pr<strong>in</strong>cipiul unei<br />

căsuţe poştale: programul client se conectează d<strong>in</strong> timp în timp la serverul POP. La o conexiune


sunt trimise mesajele d<strong>in</strong> outbox-ul clientului şi sunt aduse mesaje noi <strong>de</strong> pe pop-server.<br />

Autentificarea se realizează la nivel <strong>de</strong> utilizator, cu parolă. Numele POP-server-ului este <strong>de</strong><br />

asemenea furnizat <strong>de</strong> adm<strong>in</strong>istratorul <strong>de</strong> sistem, la fel ca şi numele contului POP.<br />

Sistemul news (ştiri în reţea)<br />

Stirile în reţea sunt echivalentul Internet al unui grp <strong>de</strong> discuţii. Acestea permit<br />

utilizatorului să consulte articole publicate (posted) în Internet, fi<strong>in</strong>d grupate după tematică. Ştirile<br />

în reţea grupează discuţiile sub un set larg <strong>de</strong> titluri, numite grupuri <strong>de</strong> ştiri (newsgroups). Un<br />

program <strong>de</strong> citire a news-urilr prez<strong>in</strong>tă aceste discuţii într-o modalitate ordonată. În fiecare grup <strong>de</strong><br />

ştiri exista mai multe discuţii <strong>de</strong>spre anumite subiecte, astfel că grupurile sunt organizate ierarhic,<br />

având numele celui mai larg grup la început, urmat <strong>de</strong> un număr arbitrar <strong>de</strong> subgrupuri. Numele<br />

fiecărui subgrup este separat <strong>de</strong> grupul păr<strong>in</strong>te şi <strong>de</strong> subgrupurile sale pr<strong>in</strong>tr-un punct ".".<br />

Majoritatea grupurilor <strong>de</strong> ştiri sunt parte a USENET, un set <strong>de</strong> grupuri consi<strong>de</strong>rate a fi<br />

<strong>de</strong> <strong>in</strong>teres global şi care este disponibil în toată lumea în mod gratuit. USENET nu este o reţea <strong>de</strong><br />

<strong>calculatoare</strong>, ci un set <strong>de</strong> reguli unanim acceptate pentru transferul ştirilor şi adm<strong>in</strong>istrarea<br />

grupurilor <strong>de</strong> ştiri. Reguli pentru folosirea, crearea şi ştergerea grupurilor au existat îna<strong>in</strong>te <strong>de</strong><br />

Internet (USENET a precedat Internet-ul; în acele timpuri ştirile erau transmise pr<strong>in</strong> conexiuni<br />

telefonice folos<strong>in</strong>d un protocol <strong>de</strong> transfer numit uucp – Unix to Unix Copy). Cele şapte categorii<br />

mari <strong>de</strong> grupuri <strong>de</strong> ştiri sunt:<br />

1. comp - <strong>calculatoare</strong>, <strong>in</strong>formatică şi subiecte aflate în legătură cu acest domeniu.<br />

Inclu<strong>de</strong> <strong>in</strong>formatica pură, surse <strong>de</strong> programe, <strong>in</strong>formaţii <strong>de</strong>spre sisteme software şi hardware, ca şi<br />

subiecte <strong>de</strong> <strong>in</strong>teres general.<br />

2. news - grupuri <strong>in</strong>teresate <strong>de</strong> reţeaua <strong>de</strong> ştiri şi <strong>de</strong> programe <strong>de</strong> ştiri. Inclu<strong>de</strong><br />

subgrupuri importante ca news.newuser.questions (întrebări <strong>de</strong> la utilizatori noi) şi<br />

news.announce.newusers (<strong>in</strong>formaţii importante pentru noii utilizatori).<br />

3. rec - aici se discută <strong>de</strong>spre hobby-uri, activităţi recreaţionale şi <strong>de</strong>spre artă.<br />

4. sci - aici se discută <strong>de</strong>spre cercetări şi programe şti<strong>in</strong>ţifice.<br />

5. soc - grupuri care pun în discuţie probleme sociale.


6. talk - grupurile talk sunt un forum pentru <strong>de</strong>zbateri pe teme controversate.<br />

Discuţiile t<strong>in</strong>d să <strong>de</strong>v<strong>in</strong>ă întortocheate şi fără rezultat.<br />

7. misc - tot ce nu <strong>in</strong>tră în categoriile <strong>de</strong> mai sus, sau <strong>in</strong>tră în mai multe categorii.<br />

Serverele pot avea şi grupuri <strong>de</strong> ştiri locale. Orice adm<strong>in</strong>istrator poate crea oricâte grupuri<br />

<strong>de</strong> ştiri doreşte, corespunzător <strong>in</strong>tereselor utilizatorilor locali. Grupurile locale pot <strong>de</strong>veni cu<br />

timpul grupuri globale cu acceptul larg al utilizatorilor. Astfel au apărut grupuri alternative (pe<br />

lângă USENET). De exemplu:<br />

• alt - grupuri care discută "moduri alternative <strong>de</strong> a ve<strong>de</strong>a lucrurile". În unele d<strong>in</strong><br />

aceste grupuri mesajele suferă <strong>de</strong> o <strong>in</strong>coerenţă evi<strong>de</strong>ntă;<br />

• bionet - grupuri <strong>in</strong>teresate <strong>de</strong> biologie;<br />

• biz - discuţii referitoare la afaceri. Această ierarhie <strong>de</strong> grup <strong>de</strong> ştiri permite<br />

trimiterea <strong>de</strong> reclame şi materiale <strong>de</strong> prospectare a pieţei; astfel <strong>de</strong> activităţi nu sunt permise în<br />

alte grupuri;<br />

• <strong>de</strong> - discuţii tehnice, recreaţionale şi sociale în limba germană.<br />

• hepnet - discuţii <strong>de</strong> <strong>in</strong>teres în pr<strong>in</strong>cipal pentru comunitatea celor <strong>in</strong>teresaţi <strong>de</strong><br />

fizica energiilor înalte;<br />

• relcom - diferite grupuri orig<strong>in</strong>ale d<strong>in</strong> fosta URSS (unele pot necesita programe<br />

speciale pentru a afişa alfabetul chirilic).


RESURSE BIBLIOGRAFICE<br />

• Sab<strong>in</strong> <strong>Buraga</strong>, Gabriel Ciobanu – Atelier <strong>de</strong> programare <strong>in</strong> <strong>retele</strong> <strong>de</strong> <strong>calculatoare</strong>,<br />

Ed. Polirom, Iasi, 2001<br />

• Arnaud Dufour - Internet, Computer Press Agora, Tg.Mures, 1997<br />

• A.Tanenbaum - Retele <strong>de</strong> <strong>calculatoare</strong>, Computer Press Agora, Tg.Mures, 1996<br />

• V.V.Patriciu et al. - Securitatea <strong>in</strong>formatica în UNIX si Internet, Ed.Tehnica,<br />

Bucuresti, 1998<br />

• Mihai Jalobeanu - Acces <strong>in</strong> Internet, Ed. Promedia Plus, Cluj-Napoca, 1996<br />

• Douglas E. Comer and David L. Stevens - Internetwork<strong>in</strong>g with TCP/IP Vol. III,<br />

Client-Server Programm<strong>in</strong>g and Applications BSD Socket Version, Prentice Hall, 1996<br />

• J. Postel (Ed.), Internet Protocol - DARPA Internet Program Protocol Specification,<br />

http://cwis.auc.dk/rfc/rfc/rfc791.html<br />

• J. Postel, User Datagram Protocol,<br />

http://cwis.auc.dk/rfc/rfc/rfc768.html<br />

• J. Postel (Ed.), Transmission Control Protocol - DARPA Internet Program Protocol<br />

Specification, http://cwis.auc.dk/rfc/rfc/rfc793.html<br />

• * * - RPC Remote Procedure Call Specification – Sun Microsystems Inc.<br />

http://cwis.auc.dk/rfc/rfc/rfc1057.html<br />

• * * - Requests For Comments (RFCs):<br />

ftp://ftp.<strong>in</strong>ternic.net/rfc/


ANEXA - Interfaţa socket<br />

1.Crearea unui socket utilizând socket()<br />

2.Atribuirea unui nume pentru un socket - b<strong>in</strong>d()<br />

3.Specificarea unui socket pe maş<strong>in</strong>a <strong>de</strong> la distanţă - connect()<br />

4.Închi<strong>de</strong>rea unui socket – close()<br />

5.O <strong>de</strong>taliere: conexiuni Client-Server<br />

6.Deschi<strong>de</strong>rea unui socket numai pentru ascultare - listen()<br />

7.Stabilirea conexiunii <strong>de</strong> partea server-ului - accept()<br />

8.Transfer <strong>de</strong> date pr<strong>in</strong> socket-uri conectate - send() and recv()<br />

Socketurile sunt o facilitate generalizată a reţelelor <strong>in</strong>trodusă pentru prima dată în<br />

BSD 4.1c şi mai apoi perfecţionată în versiunea curentă odată cu BSD 4.2.<br />

Socketurile sunt disponibile în majoritatea versiunilor UNIX în prezent (Interfaţa<br />

straturilor <strong>de</strong> transport (TLI) se găseşte în alternativa System V). Socketurile<br />

permit comunicarea între două procese diferite <strong>de</strong> pe aceeaşi maş<strong>in</strong>ă sau <strong>de</strong> pe<br />

maş<strong>in</strong>i diferite. Se utilizează în mod implicit protocoalele <strong>in</strong>ternet pentru<br />

comunicarea între maş<strong>in</strong>i; alte protocoale cum ar fi DECnet pot fi utilizate acolo<br />

un<strong>de</strong> sunt disponibile.<br />

D<strong>in</strong> punctul <strong>de</strong> ve<strong>de</strong>re al programatorului, un socket arată şi se comportă<br />

aproximativ ca un <strong>de</strong>scriptor <strong>de</strong> fişier <strong>de</strong> nivel coborât. Aceasta <strong>de</strong>oarece comenzi<br />

cum ar fi read() şi write() lucrează cu socketurile în aceeaşi manieră în care<br />

lucrează cu fişiere şi pipe-uri. Diferenţele d<strong>in</strong>tre socketuri şi <strong>de</strong>scriptorii normali <strong>de</strong><br />

fişiere apar la crearea unui socket şi la o serie <strong>de</strong> operaţiuni speciale <strong>de</strong> control al<br />

socketurilor. Aceste operaţiuni sunt diferite între socketuri şi <strong>de</strong>scriptori normali <strong>de</strong>


fişiere datorită complexităţii suplimentare la stabilirea conexiunilor în reţea<br />

comparativ cu accesul normal la disc.<br />

Pentru majoritatea operaţiilor ce utilizează socketuri, rolurile clientului şi<br />

serverului trebuiesc atribuite. Un server este un proces care realizează anumite<br />

funcţii la cererea unui client. Aşa cum se va observa în această discuţie, rolurile nu<br />

sunt simetrice şi nu pot fi <strong>in</strong>versate fără un oarecare efort.<br />

Această <strong>de</strong>scriere a utilizării socketurilor parcurge trei stadii:<br />

Utilizarea socketurilor <strong>in</strong>tr-un mod neconectat sau mod datagramă între procese<br />

client şi server aflate pe aceeaşi maş<strong>in</strong>ă. În această situaţie, clientul nu stabileşte în<br />

mod explicit o conexiune cu serverul. Clientul, b<strong>in</strong>eînţeles, trebuie să cunoască<br />

adresa serverului. Serverul, în schimb, pur şi simplu aşteaptă un mesaj să apară.<br />

Adresa clientului este unul d<strong>in</strong>tre parametrii cererii <strong>de</strong> recepţionare a mesajului şi<br />

este utilizată <strong>de</strong> către server pentru a răspun<strong>de</strong>.<br />

Utilizarea socketurilor în mod conectat între un client şi un server pe aceeaşi<br />

maş<strong>in</strong>ă. În acest caz, rolurile clientului şi serverului sunt mai profund întărite în<br />

sensul că socketul este stabilit şi utilizat. Acest mo<strong>de</strong>l este a<strong>de</strong>sea <strong>de</strong>numit mo<strong>de</strong>l<br />

client-server orientat pe conexiune.<br />

Utilizarea socketurilor într-un mod conectat între client şi server pe maş<strong>in</strong>i<br />

diferite. Aceasta este extensia cazului <strong>de</strong> reţea <strong>de</strong>scrisă în stadiul 2 <strong>de</strong> mai sus.<br />

Modul neconectat sau datagramă între client şi server pe maş<strong>in</strong>i diferite nu este<br />

discutat în mod explicit aici. Utilizarea acestuia poate fi <strong>de</strong>dusă d<strong>in</strong> prezentările<br />

făcute la stadiile 1 şi 3.<br />

1.Crearea unui socket utilizând socket()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t socket(<strong>in</strong>t af, <strong>in</strong>t type, <strong>in</strong>t protocol)


socket() este foarte asemănătoare cu socketpair() cu excepţia faptului că numai un<br />

socket este creat în loc <strong>de</strong> două. Aceasta este cel mai <strong>de</strong>s utilizată dacă procesul cu<br />

care doriţi să comunicaţi nu este un proces fiu. Câmpurile af, type şi protocol sunt<br />

utilizate exact ca şi în apelul sistem socketpair()<br />

În caz <strong>de</strong> succes, se returnează un <strong>de</strong>scriptor <strong>de</strong> fişier ataşat socketului. În caz <strong>de</strong><br />

eroare, se returnează –1 iar errno <strong>de</strong>scrie problema.<br />

• AF_UNIX este utilizat pentru comunicaţii între procese aflate pe un s<strong>in</strong>gur<br />

•<br />

sistem; AF_INET pentru comunicaţii între procese aflate pe aceeaşi maş<strong>in</strong>ă<br />

sau pe maş<strong>in</strong>i diferite utilizând protocoalele standard DARPA<br />

(IP/UDP/TCP).<br />

Tipul socketului se referă la “stilul” comunicării. Cele mai utilizate două valori<br />

<strong>in</strong>clud:<br />

• SOCK_STREAM: un stream <strong>de</strong>date fără limite ale înregistrărilor. Livrarea<br />

într-un mediu <strong>de</strong> reţea este garantată; dacă livrarea este imposibilă,<br />

expeditorul primeşte un <strong>in</strong>dicator <strong>de</strong> eroare.<br />

• SOCK_DGRAM: un stream <strong>de</strong> înregistrări, fiecare <strong>de</strong> o dimensiune dată.<br />

Livrarea într-un mediu <strong>de</strong> reţea nu este garantată.<br />

O valoare 0 a protocolului este foarte <strong>de</strong>s întâlnită. Aceasta permite<br />

sistemului să aleagă primul protocol permis cu perechea <strong>de</strong> valori specificate<br />

pentru familie şi tip.<br />

2.Atribuirea unui nume pentru un socket - b<strong>in</strong>d()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t b<strong>in</strong>d(<strong>in</strong>t s, struct sockaddr *name, <strong>in</strong>t namelen)


Utilizând socketpair(), socketurile pot fi partajate numai între procese<br />

păr<strong>in</strong>te şi fiu sau între fii aceluiaşi păr<strong>in</strong>te. Cu un nume ataşat socketului, orice<br />

proces <strong>de</strong> pe sistem în poate <strong>de</strong>scrie sau utiliza.<br />

Într-un apel la b<strong>in</strong>d(), s este <strong>de</strong>scriptorul <strong>de</strong> fişier pentru socket, obţ<strong>in</strong>ut d<strong>in</strong> apelul<br />

la socket() . name este un po<strong>in</strong>ter la o structură <strong>de</strong> tip sockaddr. Dacă familia <strong>de</strong><br />

adrese este AF_UNIX (aşa cum se specifică la crearea socketului) structura este<br />

<strong>de</strong>f<strong>in</strong>ită după cum urmează:<br />

struct sockaddr {<br />

u_short sa_family;<br />

char sa_data[14];<br />

};<br />

name.sa_family trebuie să fie AF_UNIX. name.sa_data trebuie să conţ<strong>in</strong>ă cel mult<br />

14 octeţi d<strong>in</strong>tr-un nume <strong>de</strong> fişier care va fi ataşat socketului. namelen dă lungimea<br />

reală a numelui, adică lungimea conţ<strong>in</strong>utului <strong>in</strong>iţializat al structurii <strong>de</strong> date.<br />

În caz <strong>de</strong> succes se returnează valoare 0. În caz <strong>de</strong> eroare se returnează valoarea –1,<br />

cu <strong>de</strong>scrierea erorii în errno.<br />

Exemplu:<br />

struct sockaddr name;<br />

<strong>in</strong>t s;<br />

name.sa_family = AF_UNIX;<br />

strcpy(name.sa_data, "/tmp/sock");<br />

if((s = socket(AF_UNIX, SOCK_STREAM, 0) < 0)<br />

{<br />

pr<strong>in</strong>tf("socket create failure %d\n", errno);<br />

exit(0);<br />

}<br />

if (b<strong>in</strong>d(s, &name, strlen(name.sa_data) +<br />

sizeof(name.sa_family)) < 0)<br />

pr<strong>in</strong>tf("b<strong>in</strong>d failure %d\n", errno);<br />

3.Specificarea unui socket pe maş<strong>in</strong>a <strong>de</strong> la distanţă - connect()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t connect(<strong>in</strong>t s, struct sockaddr *name, <strong>in</strong>t namelen)


Apelul b<strong>in</strong>d() permite numai specificarea unei adrese locale. Pentru<br />

specificarea capătului <strong>de</strong> la distanţă a unei conexiuni <strong>de</strong> adrese se va utiliza apelul<br />

connect(). În apelul la connect(), s este <strong>de</strong>scriptorul <strong>de</strong> fişier pentru socket. Name<br />

este un po<strong>in</strong>ter la o structură <strong>de</strong> tip sockaddr:<br />

struct sockaddr {<br />

u_short sa_family;<br />

char sa_data[14];<br />

};<br />

Ca şi în cazul apelului sistem b<strong>in</strong>d(), name.sa_family trebuie să fie<br />

AF_UNIX. name.sa_data trebuie să conţ<strong>in</strong>ă maximum 14 octeţi d<strong>in</strong>tr-un nume <strong>de</strong><br />

fişier care va fi atribuit socketului. namelen dă lungimea reală a numelui.<br />

Returnarea valorii 0 <strong>in</strong>dică succesul, în timp ce o valoare <strong>de</strong> -1 <strong>in</strong>dică eşecul, cu<br />

<strong>de</strong>scrierea erorii dată <strong>de</strong> errno.<br />

O mostră <strong>de</strong> fragment <strong>de</strong> cod:<br />

struct sockaddr name;<br />

name.sa_family = AF_UNIX;<br />

strcpy(name.sa_data, "/tmp/sock");<br />

if (connect(s, &name, strlen(name.sa_data) +<br />

sizeof(name.sa_family)) < 0) {<br />

pr<strong>in</strong>tf("connect failure %d\n", errno);<br />

}<br />

4.Închi<strong>de</strong>rea unui socket – close()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

void close(<strong>in</strong>t s).<br />

Apelul I/O close() va închi<strong>de</strong> <strong>de</strong>scriptorul socketului s exact la fel cum închi<strong>de</strong><br />

orice <strong>de</strong>scriptor <strong>de</strong> fişier <strong>de</strong>schis.<br />

Exemplu - sendto() şi recvfrom()<br />

/* receiver */<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

struct sockaddr myname;


struct sockaddr from_name;<br />

char buf[80];<br />

ma<strong>in</strong>()<br />

{<br />

<strong>in</strong>t sock;<br />

<strong>in</strong>t fromlen, cnt;<br />

}<br />

sock = socket(AF_UNIX, SOCK_DGRAM, 0);<br />

if (sock < 0) {<br />

pr<strong>in</strong>tf("socket failure %d\n", errno);<br />

exit(1);<br />

}<br />

myname.sa_family = AF_UNIX;<br />

strcpy(myname.sa_data, "/tmp/tsck");<br />

if (b<strong>in</strong>d(sock, &myname, strlen(myname.sa_data) +<br />

sizeof(name.sa_family)) < 0) {<br />

pr<strong>in</strong>tf("b<strong>in</strong>d failure %d\n", errno);<br />

exit(1);<br />

}<br />

cnt = recvfrom(sock, buf, sizeof(buf),<br />

0, &from_name, &fromlen);<br />

if (cnt < 0) {<br />

pr<strong>in</strong>tf("recvfrom failure %d\n", errno);<br />

exit(1);<br />

}<br />

buf[cnt] = '\0'; /* assure null byte */<br />

from_name.sa_data[fromlen] = '\0';<br />

pr<strong>in</strong>tf("'%s' received from %s\n",<br />

buf, from_name.sa_data);<br />

/* sen<strong>de</strong>r */<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

char buf[80];<br />

struct sockaddr to_name;<br />

ma<strong>in</strong>()<br />

{<br />

<strong>in</strong>t sock;<br />

sock = socket(AF_UNIX, SOCK_DGRAM, 0);


}<br />

if (sock < 0) {<br />

pr<strong>in</strong>tf("socket failure %d\n", errno);<br />

exit(1);<br />

}<br />

to_name.sa_family = AF_UNIX;<br />

strcpy(to_name.sa_data, "/tmp/tsck");<br />

strcpy(buf, "test data l<strong>in</strong>e");<br />

cnt = sendto(sock, buf, strlen(buf), 0, &to_name,<br />

strlen(to_name.sa_data) + sizeof(to_name.sa_family));<br />

if (cnt < 0) {<br />

pr<strong>in</strong>tf("sendto failure %d\n", errno);<br />

exit(1);<br />

}<br />

5.O <strong>de</strong>taliere: conexiuni Client-Server<br />

Socketurile pot fi utilizate pentru a scrie aplicaţii client-server utilizând o tehnică<br />

client-server orientată pe reţea. Unele caracteristici ale aceste tehnici <strong>in</strong>clud:<br />

• Serverul poate manipula multiple cereri client pentru conexiuni şi servicii.<br />

• Serverul răspun<strong>de</strong> oricăror cereri client <strong>in</strong><strong>de</strong>pen<strong>de</strong>nt <strong>de</strong> toţi ceilalţi clienţi<br />

• Un client ştie cum să stabilească o conexiune cu serverul.<br />

Conexiunea client-server, odată stabilită, rămâne validă până ce fie clientul<br />

fie serverul o întrerup în mod explicit, cam ca o conexiune telefonică fără<br />

probleme. Socketul utilizat pentru această conexiune se numeşte un socket<br />

orientat pe conexiune.<br />

Tipul socketului este specificat ca SOCK_STREAM. În consec<strong>in</strong>ţă, procesul care<br />

primeşte un mesaj prelucrează acest mesaj după următoarele reguli:<br />

• Datele transmise nu au limite.


• Toţi octeţii d<strong>in</strong>tr-un mesaj primit trebuie citiţi îna<strong>in</strong>te <strong>de</strong> prelucrarea<br />

următorului mesaj.<br />

• Octeţii d<strong>in</strong>tr-un mesaj primit pot fi citiţi într-o structură <strong>de</strong> control cu<br />

program buclă <strong>de</strong>oarece nu sunt pierduţi octeţi <strong>de</strong> date.<br />

• Serverul va crea un proces fiu cu ajutorul fork() la stabilirea unei conexiuni<br />

client.<br />

• Acest proces fiu este proiectat să comunice cu exact un proces client.<br />

• Procesul fiu server execută serviciile cerute pentru clientul său conectat.<br />

• Procesul fiu server se term<strong>in</strong>ă când serviciul cerut a fost în<strong>de</strong>pl<strong>in</strong>it.<br />

Funcţiile listen() şi accept() permit serverului să asculte cererile <strong>de</strong> servicii.. read()<br />

şi write() pot fi utilizate <strong>de</strong> client şi <strong>de</strong> server pentru a trimite/primi mesaje; send()<br />

şi recv() pot fi utilizate <strong>de</strong> asemenea.<br />

6.Deschi<strong>de</strong>rea unui socket numai pentru ascultare - listen()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t listen(<strong>in</strong>t s, <strong>in</strong>t backlog)<br />

listen stabileşte socket-ul ca un capăt pasiv a unei conexiuni. Nu suspendă execuţia<br />

procesului.<br />

Nu pot fi trimise mesaje pr<strong>in</strong> acest socket. Pot fi recepţionate mesaje.<br />

s este <strong>de</strong>scriptorul <strong>de</strong> fişier asociat socket-ului creat folos<strong>in</strong>d apelul <strong>de</strong> sistem<br />

socket().<br />

backlog este mărimea cozii <strong>de</strong> aşteptare a cererilor în timpul în care server-<br />

ul este ocupat cu o cerere a unui serviciu. Sistemul curent impune maximul la 5.<br />

0 este returnat în caz <strong>de</strong> succes, -1 în caz <strong>de</strong> eroare şi errno <strong>in</strong>dică problema.<br />

Exemplu:<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t sockfd; /* socket file <strong>de</strong>scriptor */


if(listen(sockfd, 5) < 0)<br />

pr<strong>in</strong>tf ("listen error %d\n", errno);<br />

7.Stabilirea conexiunii <strong>de</strong> partea server-ului - accept()<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t accept(<strong>in</strong>t sockfd, struct sockaddr *name, <strong>in</strong>t *namelen)<br />

Apelarea accept() stabileşte o conexiune client-server <strong>de</strong> partea server-ului.<br />

(Cererea clientului se face utilizând apelul <strong>de</strong> sistem connect().) Server-ul trebuie<br />

să aibe creat socket-ul folos<strong>in</strong>d socket(), să aibe dat un nume folos<strong>in</strong>d b<strong>in</strong>d(), şi<br />

stabil<strong>in</strong>d coada <strong>de</strong> ascultare folos<strong>in</strong>d listen().<br />

sockfd este <strong>de</strong>scriptorul <strong>de</strong> fişier al socket-ului returnat la apelul <strong>de</strong> sistem socket().<br />

name este un po<strong>in</strong>ter la o structură <strong>de</strong> tip sockaddr cum este <strong>de</strong>scris mai jos<br />

struct sockaddr {<br />

u_short sa_family;<br />

char sa_data[14];<br />

};<br />

În cazul întoarcerii cu succes după apelul accept(), această structură va conţ<strong>in</strong>e<br />

adresa <strong>de</strong> protocol a socket-ului clientului.<br />

Zona <strong>de</strong> date la care <strong>in</strong>dică namelen trebuie <strong>in</strong>iţializată la lungimea actuală a lui<br />

name. În cazul întoarcerii cu succes după apelul accept(), zona <strong>de</strong> date la care<br />

<strong>in</strong>dică namelen va conţ<strong>in</strong>e lungimea actuală a adresei <strong>de</strong> protocol a socket-ului<br />

clientului.<br />

În caz <strong>de</strong> succes, accept() creează un nou socket cu aceleaşi familie, tip, şi protocol<br />

ca sockfd. Descriptorul <strong>de</strong> fişier pentru acest nou socket este valoarea returnată <strong>de</strong><br />

accept(). Acest nou socket este folosit pentru toate comunicaţiile cu clientul.<br />

Dacă nu există nici o cerere <strong>de</strong> conectare, accept() se va bloca până când cererea<br />

unui client este pusă în coadă.


accept() va eşua mai ales dacă sockfd nu este un <strong>de</strong>scriptor <strong>de</strong> fişier sau dacă tipul<br />

socket-ului nu este SOCK_STREAM. În acest caz, accept() returnează valoarea -1<br />

şi errno <strong>de</strong>scrie problema.<br />

8.Transfer <strong>de</strong> date pr<strong>in</strong> socket-uri conectate - send() and recv()<br />

Două apeluri <strong>de</strong> librărie pentru transferul datelor , numite send() şi recv(),<br />

sunt disponibile dacă socket-urile sunt conectate. Ele corespund foarte în<strong>de</strong>aproape<br />

cu funcţiile read() and write() folosite pentru I/O la <strong>de</strong>scriptori <strong>de</strong> fişiere obişnuiţi.<br />

#<strong>in</strong>clu<strong>de</strong> <br />

#<strong>in</strong>clu<strong>de</strong> <br />

<strong>in</strong>t send(<strong>in</strong>t sd, char *buf, <strong>in</strong>t len, <strong>in</strong>t flags)<br />

<strong>in</strong>t recv(<strong>in</strong>t sd, char * buf, <strong>in</strong>t len, <strong>in</strong>t flags)<br />

În ambele cazuri, sd este <strong>de</strong>scriptorul <strong>de</strong> socket.<br />

Pentru send(), buf <strong>in</strong>dică spre un tampon ce conţ<strong>in</strong>e datele ce trebuie trimise,<br />

len este lungimea datelor şi flags va fi <strong>de</strong> obicei 0. Valoarea returnată este numărul<br />

<strong>de</strong> octeţi trimişi în caz <strong>de</strong> succes. Dacă eşuează, -1 este returnat şi errno <strong>de</strong>scrie<br />

eroarea.<br />

Pentru recv(), buf <strong>in</strong>dică la o zonă <strong>de</strong> date în care se vor copia datele recepţionate,<br />

len este mărimea acestor date în octeţi, şi flags este <strong>de</strong> obicei 0 sau setat la<br />

MSG_PEEK dacă datele recepţionate trebuie reţ<strong>in</strong>ute în sistem după ce este<br />

recepţionat. Valoarea returnată este numărul <strong>de</strong> octeţi recepţionaţi în caz <strong>de</strong> succes.<br />

Dacă eşuează, -1 este returnat şi errno <strong>de</strong>scrie eroarea.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!