08.06.2013 Views

S. Buraga-Introducere in retele de calculatoare.pdf

S. Buraga-Introducere in retele de calculatoare.pdf

S. Buraga-Introducere in retele de calculatoare.pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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!