S. Buraga-Introducere in retele de calculatoare.pdf
S. Buraga-Introducere in retele de calculatoare.pdf S. Buraga-Introducere in retele de calculatoare.pdf
FACULTATEA DE INFORMATICA, UNIVERSITATEA “AL.I.CUZA” - IASI INTRODUCERE IN RETELE DE CALCULATOARE SABIN CORNELIU BURAGA busaco@infoiasi.ro http://www.infoiasi.ro/~busaco
- Page 2 and 3: NOTA AUTORULUI In cele ce urmeaza v
- Page 4 and 5: conectarea directa cu un terminal s
- Page 6 and 7: ca ele vor furniza legaturi necesar
- Page 8 and 9: Când si cum a apărut INTERNETUL I
- Page 10 and 11: compatibilităţi cât mai mari în
- Page 12 and 13: Internet • reţea de reţele •
- Page 14 and 15: Trebuie ştiute adresa destinatarul
- Page 16 and 17: Dezavantaje: ♦ Costuri ridicate l
- Page 18 and 19: Reţele punct-la-punct • se refer
- Page 20 and 21: • este în general un calculator,
- Page 22 and 23: Exemplu practic - relatiile de afac
- Page 24 and 25: Interfaţa: o este de mai mare succ
- Page 26 and 27: Conversaţia virtuală la nivelul n
- Page 28 and 29: Protocoalele nivelului 3 definesc r
- Page 30 and 31: PARTEA 4 STIVA DE PROTOCOALE TCP/IP
- Page 32 and 33: În transmiterea fluxului de inform
- Page 34 and 35: ASEMĂNĂRI: ASEMĂNĂRI ŞI DEOSEB
- Page 36 and 37: ENUNŢ: Protocoalele sunt proiectat
- Page 38 and 39: - IP Internet Protocol - protocolul
- Page 40 and 41: Obiectivul principal al DARPA a fos
- Page 42 and 43: PROTOCOLUL INTERNET Internet Protoc
- Page 44 and 45: Datagramă UDP UDP este doar o inte
- Page 46 and 47: Headerul TCP Header-ul TCP, prezent
- Page 48 and 49: Există două tipuri de servere: Mo
- Page 50 and 51: PARTEA 8 ASPECTE PRACTICE LEGATE DE
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.