Sunteți pe pagina 1din 72

FA C U LTA T E A D E I N F O R M A T I C A , U N I V E R S I TA T E A A L . I .

C U Z A - I A S I

INTRODUCERE IN R E T E L E D E C A L C U L A T OA R E
SABIN CORNELIU BURAGA busaco@infoiasi.ro http://www.infoiasi.ro/~busaco

NOTA AUTORULUI

In cele ce urmeaza vom face o prezentare generala a problematicii retelelor de calculatoare si Internet-ului, ca retea a retelelor, insistind asupra protocoalelor de comunicatie dintre calculatoarele conectate la retea si asupra unor aspecte practice legate de Internet (istoric, arhitectura, servicii importante etc.). Cursul este insotit si de o anexa cuprinzind aspecte mai tehnice, legate de programarea in retea, folosind socket-uri in limbajul C standard, pe sisteme de operare compatibile UNIX (Linux).

PARTEA 1

PREAMBUL

RETEA = un sistem de calculatoare, terminale si baze de date conectate prin linii de comunicatii. Ele permit utilizatorilor diferitelor tipuri de calculatoare sa schimbe date si sa foloseasca programe speciale sau supercomputere (mainframe). Dimensiunile ei fizice merg de la o retea locala la una internationala.

Raspandirea informatiilor printre grupurile de calculatoare si utilizatorii lor constituie un sector principal al Erei Informationale. Acceptarea calculatorului personal si a retelelor locale in timpul anilor 80 a dus la capacitatea de-a accesa informatii in baze de date aflate la distanta; incarcarea unor aplicatii de pe computere aflate, de asemenea, la mare distanta; trimiterea unui mesaj catre un prieten in alta tara si partajarea unor fisiere cu un coleg de birou, toate acestea facandu-se cu ajutorul unui PC. Retele care permit ca toate acestea sa fie facute asa de usor sant de fapt entitati sofisticate si complexe. Calculatoarele se sprijina pe efectivitatea lor asupra multor componente ce lucreaza intre ele. Design-ul si asamblarea retelelor mondiale de computere pot fi privite ca una din cele mai importante minuni tehnologice ale ultimei decade.

M O D E M - U R I S I C A L C U L AT OA R E D E B I RO U

In anii 70 calculatoarele existente erau foarte scumpe, erau masini fragile care trebuiau supravegheate de specialisti si pastrate intr-un mediu controlat, special. Ele puteau fi folosite fie la

conectarea directa cu un terminal sau utilizand o linie de telefon si un modem pentru a avea acces la distanta. Datorita pretului lor ridicat tindeau de-a fi considerate resurse centralizate asupra carora utilizatorul trebuia sa aranjeze propriul lor acces. In tot acest timp companiile ce ofereau timp de acces la un computer mainframe s-au dezvoltat. Retelele de calculatoare din aceasta perioada nu erau disponibile pe piata. Chiar si asa una din cele mai mari dezvoltari menite sa modifice lumea moderna a tehnologiiilor a fost initiata la acea vreme. Aceasta realizare este cunoscuta astazi sub numele de Internet.

RETELE LOCALE

Unul din cele mai dramatice evenimente in retelele de calculatoare a fost introducerea si dezvoltarea rapida a retelelor locale, ca un mod de standardizare a sistemelor de conectare a computerului folsite in firma. Acest lucru insemna conectarea impreuna a unui numar de elemente computationale. La cel mai simplu nivel o retea locala furniza nu mai mult decat un mediu de conectare (cum ar fi un cablu coaxial la care toate calculatoarele si imprimantele sant conectate) impreuna cu un set de reguli ce guverneaza accesul catre acel mediu. Cea mai folosita retea locala, Ethernet, utilizeaza un mecanism numit CALL SENSE MULTIPLE ACCESS COLISION DETECT/CSMA - CD (Accces multiplu a sensului de apel detectie de coliziuni). Aceasta inseamna ca fiecare componenta conectata poate folosi legatura cand s-a stabilit ca nu exista un alt dispozitiv care-l foloseste. Daca coliziunea totusi se produce dispozitivul care sonda conexiunea se retrage si incearca din nou mai tarziu. Ethernet transforma date la viteza de 10 MB/sec, ceea ce este suficient de rapid pentru a face ca distantele dintre dispozitive sa fie nesemnificative. Ele apar ca si cum ar fi direct conectate cu destinatia lor. Ethernet-ul si CSMACD sant exemple de retele locale. Exista multe componente diferite ce alcatuiesc acest sistem (cum ar fi magistrala, inelul, conexiunea stea) si un numar diferit de protocoale de acces. In ciuda acestei varietati toate retelele locale dau posibilitatea accesarii caracteristicilor in care ele sant limitate in distanta (fizic, ele acopera o singura cladire) si sant suficient de rapide pentru a face reteaua de conectare invizibila dispozitivelor care o folosesc. In plus, retelele locale moderne pot oferi utilizatorilor o gama larga de facilitati sofisticate. Pachetele de software de management sant disponibile pentru a controla modul in care dispozitivele sant configurate in reteaua locala, cum sant administrate, utilizate si cum resursele de retea sant controlate. O larga structura adoptata a retelei locale este de-a avea un numar de servicii ce sant valabile unui numar, de obicei, mult mai

mare de clienti. Vechile computere (acele puternice) furnizau servicii cum ar fi: controlul imprimantei, a partajarii fisierelor si posta.

RO U T E R E S I P U N T I D E L E G A T U R A

Facilitatile multor retele locale sant foarte puternice. Multe companii nu doresc sa posede insule, izolate de facilitatile de calcul. Ele, de obicei, doresc sa extinda facilitatile pe-o arie larga, in asa fel incat acele grupuri sa poata lucra fara a fi nevoie sa fie localizate. Routerele si puntile de legatura sant dispozitive specializate ce permit ca doua sau o singura retea locala sa fie conectate. Puntea de legatura este, mai de graba, un dispozitiv de baza, el putand sa controleze doar retele locale de acelasi tip. Routerul este o componenta mai inteligenta ce poate interconecta mai multe tipuri diferite de retele de calculatoare. Multe companii mari au retele de date ce se regasesc intr-o colectie de routere si retele locale. Din punct de vedere al utilizatorului acest aranjament le pune la dispozitie o retea fizica diversa ce seamana cu o resursa coerenta.

R E T E L E T E R I T O R I A L E ( W. A . N. )

De la un anumit punct devine nepractic extinderea unei retele locale pe mai departe. Acest lucru il determina uneori limitarile fizice, dar mult mai des apar modalitati mai convenabile si mai ieftine de-a extine o retea de calculatoare. Doua componente importante in majoritatea retelelor de calculatoare existente sant telefonul public si reteaua de date. Acestea furnizeaza legaturi la distanta ce fac posibila virtual extinderea retelei locale intr-o retea teritoriala (W.A.N.). Aproape toti operatorii nationali de retea (British Telecom in Marea Britanie, Deutsche Bundespost in Germania) ofera servicii pentru interconectarea retelelor de calculatoare. Aceste servicii merg de la retele de legaturi de date simple si mici la care reteaua telefonica e capabila, prin intermediul serviciilor de date sofisticate, de mare viteza, care sant ideal relizate pentru interconectarea de retele locale. Aceste servicii de date de mare viteza sant cunoscute ca fiind conexiuni cu lungime larga de banda. Se anticipeaza

ca ele vor furniza legaturi necesare intre retele locale ce realizeaza ceea ce va transforma asa numita autostrada informationala in realitate.

D I S T R I BU T E D C O M P U T I N G ( C A L C U L D I S T R I BU I T )

Ar fi mai usor sa ne inchipuim ca, calculatoarele vor fi capabile sa lucreze impreuna odata ce ele dispun de conexiune intr-o banda larga. Intrebarea care se pune este : cum se poate reusi ca calculatoarele construite de diversi producatori din diverse tari sa lucreze impreuna. Pana nu de mult majoritatea calculatoarelor erau construite cu propria lor interfata si erau structurate intr-un mod propriu, unic. Un computer putea conversa cu un altul de acelasi tip, insa avea dificultati in comunicarea cu un altul strain. Totusi, existau cateva echipamente privilegiate ce aveau posibilitatea sa extraga date dintr-o varietate de resurse. La inceputul anilor 90 diferentele dintre diferitele tipuri de calculatoare s-au redus pana cand au atins stadiul in care puteau interactiona efectiv. Aceasta a permis, virtual, oricui sa foloseasca prin control de la distanta, cu rezultate bune, o masina de calcul. Principalii contribuitori la aceasta sant:

CLIENT/SERVER

In loc sa se construiasca sisteme de calculatoare tip bloc (monolitic) s-a ajuns la un punct de vedere comun ce stipuleaza ca ele ar trebui construite de tipul sistemelor client/server. Clientul (un utilizator PC) cere un serviciu (cum ar fi tiparirea la imprimanta) iar serverul (un procesor al unui calculator conectat la o retea locala) il furnizeaza. Aceasta imagine de consens a structurii sistemelor calculatoarelor demonstreaza ca exista o separatie a functiilor ce alta data erau inghesuite impreuna. Detaliile implementarii ce decurg dintr-un singur concept au de strabatut un drum lung pentru a face ca toate computerele sa fie tratate la fel.

SISTEME DESCHISE

Acest termen acopera conceptul general de constructie a sistemelor de computere in asa fel incat ele pot fi deja interconectate. In practica conceptul de sisteme deschise abordeaza, pe

componente, toate complexitatile unui sistem de calculator utilizand structuri similare indiferent de tipul sistemelor. Acest fapt atrage dupa sine un amestec de standarde (care ii spun producatorului ceea ce el ar trebui sa faca) si consortii (grupuri de experti ce-i ajuta pe producatori sa-si atinga scopul). Efectul general este ca acestia doi pot colabora (expertproducator). Scopul final este de fapt sa permita oricui sa cumpere calculatoare de la un numar diferit de producatori, sa le poata amplasa convenabil oriunde, sa foloseasca conexiunile de banda larga pentru a le lega intre ele si sa poata opera pe ele ca pe o masina care profita la maxim de aceste legaturi rapide.

S E C U R I TA T E S I M A NA G E M E N T

Posedand retele de calculatoare alcatuite din masini ce pot comunica intre ele nu este din pe departe scopul final. Spectrul autostrazii informationale abia acum devine ceva de luat in seama, cevea cu adevarat important. Securitate Odata cu cresterea volumului de informatii importante care sa fie lasate doar in seama calculatorului, securitatea acestuia devine din ce in ce mai importanta. Intr-un astfel de sistem ar fi mult prea usor ca o persoana cu inalta pregatire sa acceseze informatii confidentiale fara a fi detectata. Standardul sistemelor de date pentru protectia informatiilor de pe computer introdus la sfarsitul anilor 70 i s-a atasat recent un sistem de chei publice ce permit utilizatorilor sa fragmenteze si sa defragmenteze usor mesajele lor fara ca o terta persoana sa se interpuna.

Management Nu e un lucru usor sa pastrezi operationala o retea locala si ea sa functioneze in parametri optimi. Facand ca o retea de calculatoare ce se intinde in intrega lume sa mearga foarte bine, duce provocarea managementului unei retele cu un pas mai departe. Conceptele esentiale pentru acest tip de management a diverselor retele a capatat in ultima vreme o atentie deosebita. Astazi exista suficiente mijloace si standarde pentru aceste aspecte importante ale retelelor de calculatoare pentru a fi posibila supervizarea efectiva a retelelor locale.

INTERNETUL

Cnd si cum a ap!rut INTERNETUL

Re!eaua Internet a ap"rut la sfr#itul anilor '60 printr-un efort de conectare a re!elei Departamentului Ap"r"rii Statelor Unite (cunoscut" sub numele de ARPAnet - Advanced Research Projects Agency) cu alte re!ele conectate prin dispozitive radio #i satelit. ARPAnet a fost o re!ea experimental" proiectat" s" asigure suportul pentru cercetarea militar" - n particular cercet"ri privind construirea unor re!ele care puteau rezista cu succes unor ntreruperi par!iale. n modelul ARPAnet comunicarea se face ntotdeauna ntre un calculator surs" #i unul destina!ie. Re!eaua se presupune a fi nesigur"; orice por!iune din ea poate dispare n orice moment. Noul tip de re!ea a fost conceput pentru a cere minimul de informa!ie de la calculatorul client. Pentru a trimite un mesaj (pachet de informa!ie) n re!ea un calculator trebuie pur #i simplu s"-#i depun" datele sale ntr-un "plic" numit pachet de Protocol Internet (IP) #i s" specifice corect(printre altele)adresa destinatarului acelui pachet. Calculatoarele care comunicau schimbnd pachetele IP (nu re!eaua n ansamblul ei) aveau obliga!ia s" verifice ncheierea comunica!iei. Avantajul era acela c" orice calculator putea conversa n condi!ii egale cu alt calculator din re!ea. Drumul dintre calculatorul surs" #i cel destina!ie nu trebuie s" fie mereu acela#i: dac" intervine o modificare de structur" n cadrul re!elei se vr identifica n mod dinamic noi "drumuri" - numite rute - ntre calculatoare Timpul a demonstrat c" acest protocol (IP) este suficient de robust #i fiabil pentru a putea modela tranzac!iile n cadrul acestei re!ele Pn" n jurul anului 1993 s-a maturizat suficient de mult si tehnologia re!elelor locale (LAN - Local Area Network). Majoritatea sta!iilor de lucru rulau Berkeley UNIX care includea software dezvoltat pe baza protocolului IP. A ap"rut o nou" cerin!": n locul conect"rii unei sta!ii de lucru la serverul unic ce deservea re!eaua local" se punea acum problema conect"rii ntregilor re!ele la ARPAnet. n acela#i timp multe companii si organiza!ii au nceput sa-#i construiasc" re!ele private folosind acelea#i protocoale ca #i n cazul ARPAnet. Era clar c" dac" aceste re!ele ar

putea comunica ntre ele(de pe orice calculator al unei re!ele de tip LAN se putea comunica cu orice calculator dintr-o alt" re!ea) acest lucru ar nsemna un mare avantaj. Una din cele mai importante re!ele noi astfel ap"rute a fost NSFNET, nfiin!at" de NSF (National Science Foundation), o agen!ie guvernamental" american". Spre sfr#itul anilor '80 aceast" organiza!ie a creat cinci noduri de comunicare puternice n centrele universitare americane cele mai importante. Problema care ap"rea acum era datorat" costului ridicat al serviciului prin linii telefonice nchiriate pe distan!e foarte mari. Solu!ia a constat n nfiin!area unor centre regionale. Astfel aproape fiecare campus universitar a fost conectat la centrul Internet cel mai apropiat. Aceste lan!uri de centre au fost conectate la rndul lor la centrele mari deservite de supercomputere capabile s" fac" fa!" unui trafic extrem de mare. n scurt timp serverele centrale au ajuns n stadiul s" stocheze un volum uria# de informa!ie, dar lucrul cel mai important era faptul c" aceast" informa!ie putea fi accesat" foarte u#or de pe orice calculator conectat la unul din centrele regionale. Datorit" cre#terii traficului de la an la an ,s-a ajuns la o supranc"rcare a acestei re!ele, astfel nct n anul 1987 s-a impus o mbun"t"!ire a liniilor telefonice ,precum #i a performan!elor tehnice ale serverelor. Pe m"sur" ce performan!ele au crescut ,cererea de servicii Internet a devenit tot mai mare. Cele mai multe dintre colegiile americane au fost conectate la Internet, impactul educa!ional fiind imens. Odat" dep"#it acest stadiu, aten!ia s-a ndreptat spre #colile elementare #i medii americane. Impactul acestei m"suri pe scar" larg" s-a manifestat mai cu seam" n domeniul companiilor #i firmelor comerciale. Fo#tii absolven!i ai colegiilor americane au convins marile corpora!ii din toate domeniile de utilitatea conect"rii la Internet. Acest fapt a dus la o dezvoltare accelerat" a acestei re!ele. n prezent majoritatea firmelor mici #i mijlocii folosesc serviciile Internet pentru rezolvarea problemelor proprii legate de transferul de informa!ie.

Cine guverneaz! re"eaua INTERNET De#i cerin!ele de administrare ale unei astfel de re!ele sunt uria#e, nu exist" o autoritate suprem" care s" o guverneze. Exist" n schimb un num"r de organiza!ii constituite pe baz" de voluntariat care au ca scop investigarea problemelor ce pot apare #i care propun m"suri de mbun"t"!ire. Internet Architecture Board (IAB) este o astfel de organiza!ie. Membrii acesteia se ntlnesc regulat pentru a se consulta n privin!a stabilirii standardelor, a aloc"rii resurselor, pentru a propune solu!ii pe termen mediu #i lung. Odat" un nou standard adoptat, este publicat pe Internet, urmnd ca pe baza acestuia s" se construiasc" noi aplica!ii, scopul fiind acela al unei

compatibilit"!i ct mai mari ntre arhitecturi, sisteme de operare etc. De#i Internet este departe de a fi la stadiul de anarhie, oricine este liber s"-#i exprime sugestiile despre cum ar trebui organizat. Astfel s-a format o noua organiza!ie numit" Internet Engineering Task Force (IETF). Membrii acesteia se ntlnesc periodic pentru a discuta probleme de natur" opera!ional" pe termen scurt. Atunci cnd se prezint" o problem" se formeaz" un grup de lucru care cerceteaz" exclusiv acea problem" #i caut" solu!ii ct mai performante. La sfr#itul unei astfel de cercet"ri se creeaz" un raport. Dac" solu!ia propus" este valoroas" poate fi trimis" la IAB pentru a fi acceptat" ca standard

Cine pl!te#te pentru serviciile Internet Contrar a#tept"rilor, nimeni nu pl"te#te pentru Internet n ansamblul s"u; nu exist" nici o firm" care s" colecteze pl"!ile de la toate re!elele Internet sau de la utilizatori. n schimb, toat" lumea pl"te#te pentru partea sa de acces. NSF pl"te#te pentru NSFNET, NASA pl"te#te pentru NASA Science Internet. Un colegiu sau o corpora!ie pl"te#te pentru conectarea sa la o re!ea regional", care la rndul ei pl"te#te un furnizor na!ional pentru accesul s"u la o re!ea interna!ional".

Ce nseamn! #i ce ofer! Internetul pentru furnizorul individual

Faptul c" Internet nu este o re!ea de calculatoare, ci o colec!ie de re!ele, nseamn" foarte pu!in pentru utilizatorul final al resurselor sale. Pentru a rula un program sau pentru a accesa o anumit" colec!ie de date nu este necesar" cunoa#terea modului de interac!iune a acestor re!ele. Singura dat" cnd acest lucru devine important este momentul cnd apar probleme . Fiecare re!ea are propriul s"u centru de opera!iuni (NOC - Network Operation Center). Centrele discut" ntre ele #i #tiu cum s"-#i rezolve problemele. Utilizatorul individual trebuie n acest caz s" ia leg"tura cu furnizorul s"u de servicii Internet. Accesul Internet nseamn", n ultim" instan!", posibilitatea acces"rii a milioane de servere situate pe tot cuprinsul globului. Astfel utilizatorul poate g"si r"spuns la orice ntrebare pe care #io pune, poate trimite mesaje n lume aproape instantaneu, poate transfera documente cu informa!ii din orice domeniu de activitate, poate efectua cump"r"turi, vizita galerii de art",

conversa on-line cu orice alt utilizator conectat, afl" ultimile #tiri ale agen!iilor de pres" sau poate aduce programe soft de pe arhivele publice. Re!eaua Internet este adesea numit" Autostrad! Interna"ional!. Acest concept de infrastructur" informa!ional" global" sau "Information Superhighway" introdus de ex-vicepre#edintele american Al Gore #i preluat de Bill Gates are o structur" similar" Re!eaua are posibilit"!i enorme pentru comunicarea global", rapid" #i ieftin" #i poate domina n scurt timp aria educa!ional". Dar canalele de comunica!ii existente (n primul rnd accesul la liniile telefonice) impun restric!ii. nlocuirea acestora cu canale cu fibr" optic" #i tehnologie digital" permit facilit"!i superioare.

PARTEA 2

PRELIMINARII

Internet

re!ea de re!ele comunicarea : !" ntre 2 re!ele !" ntre 2 calculatoare ale unei re!ele

Re"ea format" din conectarea fizic" a dou" sau mai multe calculatoare.

Comunicarea

transmisie de bi!i transmisie serial" (ntre calculatoare) transmisie paralel" (pentru imprimant")

Cum se face comunicarea prin cablu ? - simplex - se transmite ntr-un singur sens - semi-duplex se poate transmite in ambele sensuri, dar nu n acela#i timp - full-duplex - pot exista fluxuri de bi!i n acela#i timp ntre cele dou" calculatoare

RE$EA = cabluri + set de protocoale, interfe!e si servicii de circuite Transmiterea datelor se face prin comutare de pachete

Comutarea de circuite creeaz" o cale unic" nentreruptibil" ntre dou" dispozitive care comunic":

A C B imprimant"

Comutarea de pachete ntre A #i B exist" o mul!ime de drumuri (chiar dac" se ntrerupe undeva o leg"tur", pachetele circul" pe toate rutele pn" ajunge la B)

Trebuie #tiute adresa destinatarului #i a expeditorului.

Topologii (de re"ea) se refer" la forma geometric" a re!elei, mai exact la forma geometric" virtual" Defini"ia topologiilor de re"ea forma geometric" de amplasare a calcula-toarelor ntro re!ea bus(magistral") inel stea arbore

BUS : se folose#te un mediu unic de transmisie a datelor

-Se folose#te cablu coaxial -Este foarte r"spndit" Avantaje: datele circul" n ambele sensuri Dezavantaje: orice defec!iune fizic" ntr-un loc oarecare al magistralei atrage dup" sine

ntreruperea tuturor comunica!iilor n re!ea

al re!elei)

securitatea datelor este extrem de redus" (informa!ia trece pe la fiecare calculator

Inel (ring) :

calculatoarele sunt legate sub forma unui inel continuu ntr-o topologie inel informa!ia circul" ntr-un singur sens orice defec!iune a cablului atrage ntreruperea comunic"rii n re!ea securitatea sc"zut"

Stea :

Informa!ia circul" trecnd printr-un nod central. Avantaje: Defectarea unui cablu nu afecteaz" comunicarea n re!ea Securitatea este bun"

Dezavantaje: Costuri ridicate la c"derea nodului central

SCOPUL RE$ELELOR

Partajarea resurselor: soft, fi#iere, spa!iu pe disc, imprimante Fiabilitate mai mare a re!elelor Toleranta la defecte Sistemul bancar, reactoare, etc. Economia de bani

Ideea e de a m"ri puterea de calcul f"r" a renun!a la calculatoarele vechi: mainframe (Felix C256, Felix 512, Felix1024) sau minicalculatoare (Independent I-100, I-102, I-108, Coral, PDP 11) Re!eaua ca mediu de comunicare accesul la informa!ie de la distan!", comunica!iile interpersonale, divertismentul interactiv.

PARTEA 3

MODELE DE COMUNICARE

Tipuri de re"ele : (dup" m"rime)

LAN (Local Area Network) la nivel de incapere, cladire MAN (Metropolitan Area Network) la nivelul unui ora# WAN (World-Wide Area Network) re!ele larg r"spndite (Internetul)

TEHNOLOGII DE TRANSMISIE

Re!ele cu difuzare (Broadcast) Re!ele point-to-point

Re"ele cu difuzare (Broadcast)


au un singur canal de transmisie care este partajat la toate nivelurile din re!ea; se emite pe canal pentru toate ma#inile; toate ma#inile aud dar numai cele

implicate r"spund;

unit"!ile de transmisie sunt mesaje scurte numite pachete; este posibil s" fie transmise pachete la un grup de utilizatori (Multicasting);

Re"ele punct-la-punct

se refer" la comunicarea ntre ma#ini, aflate la distan!" mare, iar comunicarea se

face prin acele conexiuni multiple ntre perechi de ma#ini

ca s" ajung" de la o ma#in" la alta un pachet trece prin mai multe ma#ini

intermediare (n cazul n care nu exist" leg"tur" direct")

pachetele sunt ghidate dup" ni#te algoritmi numi!i algoritmi de rutare

Modul de transmisie poate fi sincron (negociere #i transmisie) asem"n"tor telefonului sau asincron mesajele postale.

modul sincron !" presupune existen!a unui orologiu (ceas) la fiecare ma#in"; !" discut"m de dou" ma#ini care dispun de ceas propriu;
!" ceasurile trebuie s" fie reglate la aceea#i frecven!"; A B

ceas

sincron

ceas

modul asincron !" caracterele pot fi emise oricnd, iar intervalul ntre dou" caractere transmise poate fi orict de mare; !" bi!ii din fiecare caracter transmis sunt preceda!i #i urma!i de c"tre un bit special de start #i stop !" nu mai depinde de ceasul ma#inilor

Exist" protocoale diferite care realizeaz" comunicarea sincron" #i cea asincron" La comunicarea n mod sincron, dup" ce are loc o negociere care stabile#te canalul de comunicare, comunicarea este extrem de fluid"; La comunicarea n mod asincron transmi!i cnd vrei, dar pre!ul pl"tit este c" nu am o fluiditate a comunic"rii #i mereu trebuie s" scriem adresa iar pachetele nu vor veni n ordinea n care au fost trimise.

C O N E C TA R E A C A L C U L A TOA R E L O R N R E $ E A

Probleme:

Aceea#i limb", acela#i alfabet Aceea#i limb", alfabete diferite Limbi diferite, acela#i alfabet Limbi diferite, alfabete diferite

Apare atenuarea semnalului emis, #i pentru a putea face semnalul transmisibil, trebuie s" introducem un Repetor.

Repetorul

copie si amplific" semnalul el elimin" pierderea semnalului prin eliminarea atenu"rii m"re#te lungimea magistralei n LAN (cablu)

Bridge (punte)

joac" rolul agentului de circula!ie n termeni de re!ea, conecteaz" dou" re!ele care utilizeaz" aceea#i tehnologie

(Ethernet)

este n general un calculator, #i el realizeaz" urm"torul lucru: mpart re!eaua n dou" grupuri #i pun un alt calculator(1) care realizeaz" puntea

ntre ele; calculatorul (1) identific" un pachet din re!eaua a #i transmite la re!eaua B (mic#oreaz" pachetele ce se plimb" ntre cele dou" re!ele) cnd este cazul Avantaj: cre#te performan!a, fiabilitatea #i securitatea re!ea; securitatea: trafic de informa!ii pe re!ea #i acces"ri autorizate sau nu performan!a : cre#terea din cauza elimin"rii coliziunilor, ambuteiajelor de pachete fiabilitatea : ruperea la nivelul unui cablu nu afecteaz" toate calculatoarele din calculatorul (1) examineaz" pachetele din fiecare re!ea #i le transfer" doar atunci

Router

Direc!ioneaz" datele ntre dou" re!ele care au tehnologii diferite #i protocoale

diferite: Ethernet, Token-Ring (IBM);


este un calculator ceva mai complicat; cunoa#te adresa tuturor calculatoarelor pe care le vede n re!ea; dirijeaz" pachetele conform unor algoritmi de rutare (reu#e#te s" fac" traducerea

dintr-un protocol n alt protocol);

orice router poate fi n acela#i timp #i Bridge;

Gateway(poart!)

se refer" n fapt la anumite aplica!ii care sunt de-a lungul re!elei (poart" de

aplica!ii);

PARADIGMELE COMUNIC%RII N RE$EA

modelul client-server

- n re!ea la nivelul aplica!iilor exist" 2 actori importan!i server si client (no!iuni software, extinse la no!iuni hardware - serverul st" n a#teptare de a oferi ni#te servicii #i aceste servicii le ofer" doar printr-un anumit port - clientul acceseaz" un port #i apeleaz" serviciul oferit de c"tre server

RPC (Remote Procedure Call) apel de procedur" la distan!"

PROTOCOALE &I INTERFE$E

In proiectarea retelelor de calculatoare ap"rut o abordare stratificat", fiind dat" de complexitatea comunic"rii n re!ea.
A i+1 i i-1 i+1 i i-1 B nivel

Exemplu practic relatiile de afaceri intre doi directori de companie, din tari diferite:

A Director

B Director

Secretar"

Secretar"

Traduc"tor

Traduc"tor

Cut.po#tal"

Func!ionar po#tal

Serv. Po#tale

Servicii po#tale

Notiunile importante vehiculate in continuare sunt:

Protocol = un set de reguli care:


are loc la unul dintre niveluri face posibil" comunicarea la acest nivel ntre dou" ma#ini; este o transcriere n program a unor reguli; este un set de reguli care definesc conven!iile de comunicare conforme unui nivel

Interfa"! = acele servicii care permit comunicarea la acest nivel ntre dou" niveluri consecutive;

ARHITECTUR% DE RE$EA = niveluri + interfe"e + protocoale

Principiu: La nivelul n al destinatarului se prime#te exact acela#i mesaj ca la nivelul n al emi!"torului.

In prezent exista doua ierarhii de protocoale:

Modelul ISO/OSI (Open Systems Interconection) o o model al re!elei ideale; are 7 straturi;

Modelul TCP/IP o model cu 5 straturi;

o este de mai mare succes practic dect cel ideal propus de ISO Interfa"a:
n+1

Client pentru stratul (n-1) Server pentru stratul (n+1)


n

n-1

Detaliile de implementare sunt ascunse pe stratul (n+1).

Serviciu: fiecare nivel ofer" servicii specifice, de care depinde nivelul superior; Serviciile nivelului n ofera func!ionalitatea nivelului n de care depinde nivelul n+1

Protocol #i Serviciu corespunz"tor. serviciul define#te func!ionalitatea nivelului. fiecare nivel se conformeaz" unui set de reguli (protocol) protocoalele definesc serviciile n felul urm"tor: dau reguli pe care nivelul trebuie s" le urmeze pentru a implementa serviciul

Modelul OSI din punct de vedere al programatorului:

7.nivelul aplica"ie 6.nivelul prezentare 5.nivelul sesiune 4.nivelul transport 3.nivelul re"ea 2.nivelul leg. de date '.nivelul fizic Host A

protocol de aplica!ie protocol de prezentare protocol sesiune protocol de transport protocol de re!ea protocol leg de date protocol de comunicare efectiv"

7.nivelul aplica"ie 6.nivelul prezentare 5.nivelul sesiune 4.nivelul transport 3.nivelul re"ea 2.nivelul leg. de date '.nivelul fizic Host B

model cu 7 niveluri; reprezint" n fapt o re!ea ideal", un standard pentru o re!ea ideal"; specifica!ie de proiectare pentru re!ele; suite de protocoale care implementeaz" X.25 (CCITTX.25); protocoalele de la nivelele 2-6 realizeaz" o comunicare virtual" numele fiec"rui nivel identific" protocoalele corespunz"toare asociate nivelului

respectiv #i nivelurile corespondente din hosturile diferite se numesc procese pereche; comunica!ia ntre procesele pereche este o comunicare virtual" c"ci de fapt

comunica!ia nu are loc dect la nivelul fizic; re!elele nu transfer" date n mod direct ntre procesele pereche; comunicarea virtual" (conversa!ie virtual") dintre niveluri corespondente

simplific" programarea n re!ea

Conversa!ia virtual" la nivelul n se desfasoara astfel: Cererile de servicii #i r"spunsurile sunt transmise prin intermediul primitivelor. Putem distinge 4 clase mari de primitive: cererile sunt nivelurile client (n+1) #i transmit cereri de servicii (ale nivelului n); indica"iile corespund notific"rii transmise la un nivel la distan!" ce urmeaz" unei

cereri de serviciu. r!spunsurile clasa permite r"spunsul la o indica!ie. confirm!rile permit unui produc"tor de servicii s" r"spund" la cererea unui client.

Clasificarea ne permite s" distingem 2 clase de servicii: - serviciile confirmate (se utilizeaz" toate cele 4 tipuri de primitive conform urm"toarei scheme)
host A cerere n+1 n transfer r"spuns confirmare re!eaua host B n n+1 indica!ie

Exemplu: Serviciul de stabilire a conexiunii (TCP)

- servicii neconfirmate utilizeaz" numai cereri #i indica!ii.

N I V E L E L E I N D E TA L I U

Func!ionalitatea (serviciile) nivelurilor este urmatoarea:

Nivelul ': stratul fizic se ocup" cu caract. fizice: semnale, modulare/demodulare,

multiplex"ri etc. Unitatea de informatie este bitul.

Nivelul 2: permite specificarea modului n care datele traverseaz" distan!a dintre

dou" ma#ini. Unitatea cu care se lucreaz" se nume#te cadru (frame). La nivelul 2 exist" strategii diferite care fac posibil" delimitarea acestor unit"!i de transmisie. La cadre se mai adaug" o informa!ie suplimentar" care ne ajut" s" detect"m orice eroare introdus" la nivel fizic; tehnica utilizat" n mod curent de aceste coduri corectoare de erori CRC (Cyclic Redundancy Codes). Tot acest nivel de ocupa cu reglarea schimbului de date: cadrele con!in pe lng" datele care se schimb" n mod normal un cmp care permite dialogul ntre entit"!ile de date, respectiv de a transporta un cadru. Nivelul 2 lucreaz" cu informa!ii despre cadru, limitele lui, reguli pentru transferul de date #i controlul acestui transfer.

A Se

Nivelul 3 (nivelul retea): are ca responsabilitate livrarea datelor n re!ea. la ocup" ma#ina B). de:

Determin" ruta (calea) pe care o vor urma datele n drumul lor de la host A la host B (de la ma#ina

o gestionarea datelor n re!ea o rezolvarea congestiilor o ratele de transfer de-a lungul re!elei (viteza)

ntr-o re!ea cu comutare de pachete cum este Internetul, n fiecare pachet avem adresele destinatar #i surs".

Protocoalele nivelului 3 definesc responsabilit"!ile fiec"rui element din re!ea n ceea ce prive#te rutarea datelor. Se garanteaz" c" hostul destinatar recep!ioneaz" pachetele n mod corect. n modelul ISO/OSI nivelul re!ea asigur" secven!ialitatea pachetelor spre deosebire de TCP/IP unde acest lucru l realizeaz" nivelul transport (nivelul 4). De asemeni, se face gestiunea traficului n re!ea, contorizarea traficului n re!ea.

Nivelul 4 (nivelul transport): este un mecanism de verificare a comunic"rii

destinatar-expeditor, func!ia sa important" fiind de livrare a datelor n codrul hostului local.


procese proces proces

niv 4

niv 4

niv 3

Host A

Host B

Nivelul 5 (nivelul aplica"ie): negociaz" leg"tura ntre procese #i aplica!ii de pe

hosturi diferite gestioneaz" entit"!i ca nume, cantitate, parole, autentificare.

Nivelul 6 (prezentare): este conceput n OSI astfel: unele func!ii folosite n

comunicarea n re!ea sunt des folosite (interfa!a cu imprimanta, interfa!a cu monitorul); detaliile legate de interfe!e sunt gestionate la nivelul 6.

Nivelul 7: include programele care utilizeaz" re!eaua: posta electronica, transferul

de fisiere, conectare la distanta etc.

TCP/IP este organizat n 4 straturi conceptuale care se sprijin" pe cel de-al 5-lea strat, cel al hardului re!elei, fiind utilizat de Internet.

PARTEA 4

S T I VA D E P R O T O C OA L E T C P / I P
TCP Transmission Control Protocol IP Internet Protocol

In prezent, TCP/IP reprezinta mai mult de doua protocoale. Tot ce se nume#te Tehnologie Internet de fapt se refer" la suita de protocoale TCP/IP. Astfel, putem defini Internetul ca fiind orice re!ea care folose#te tehnologia Internet (Internet Technology).

Stiva de protocoale TCP/IP

Suita de protocoale TCP/IP asigur" transmisia #i gestionarea informa!iilor/datelor care se deplaseaz" n Internet. Ca programatori de re!ea trebuie s" n!elegem func!ionarea TCP/IP.

Stiva de protocoale TCP/IP are 4 nivele de baz" care se sprijin" pe un nivel fizic: aplicatie, transport (TCP si UDP), retea (IP), legatura de date.

aplica!ie

aplica!ie

F L U X U L D E DA T E

Exist" 3 pa#i importan!i n transmiterea datelor n Internet:

1.

Transmiterea informa!iei de la aplica!ie la re!ea (cu ajutorul stivei de protocoale).

2.

Re!eaua

trebuie

s"

determine

unde

trebuie

s"

ajung"

datele

(determinnd adresa destinatarului).

3.

Re!eaua trebuie s" ruteze #i s" transporte datele la destinatar acolo unde cu

ajutorul stivei de protocoale informa!ia urc" de la nivelul aplica!iei.

n transmiterea fluxului de informa!ii, informa!ia are diferite formate: - la nivelul aplica!ie stream-uri (mesaje) de date - la nivelul TCP pachete - la nivelul re!ea cadre (frame-uri)

La nivelul fizic se folosesc cabluri coaxiale sau torsadat, iar la nivelul leg"tur" de date se utilizeaza Ethernet, Token Ring, fiecare placa de retea posedind o adresa de 6 octeti. Pentru a realiza conversia dintre adresele placilor de retea si cele ale calculatoarelor din Internet se folosesc protocoalele :

ARP - Address Resolution Protocol (protocol de conversie a adreselor) - func!ia

sa este de a transforma adresele de nivel re!ea n adrese de nivel leg"tur" de date (adica adrese fizice ale placilor de retea); RARP - Reverse Address Resolution Protocol opera!ia invers" ARP

transform" adresele de nivel leg"tur" n adrese de nivel re!ea.

Nivel re"ea nivel aplica"ie

Nivelul IP (nivel internet) se ocup" de comunicarea la nivelul ma#inilor. Rolul lui este de a permite hosturilor s" emit" pachete n re!ea #i face ca pachetele s" circule independent de ma#inile intermediare. Comunicare sigur!(fiabil!) #i comunicare nesigur! Este similar" cu lipsa expeditorului la trimiterea unei scrisori. In cazul ISO/OSI costul de a asigura o comunicare sigur" este foarte mare, dar

la suita de protocoale TCP/IP (mult mai practic") e sigur" la nivelul IP.

end-to-end.

TCP/IP introduce la nivelul transport (TCP) un control final al transmisiei numit

A control al transmisiei end-to-end TCP IP Leg IP IP IP

TCP IP

Orice pas intermediar se nume#te hop.

Nivelul transport Asigur" comunicarea end-to-end; Asigur" controlul fluxului de date ; Consta din doua protocoale: !" TCP (Transmission Control Protocol) protocol sincron - realizeaz" comunicare orientat"-conexiune (circuit virtual), similara telefonului; !" UDP (User Datagram Protocol) asincron realizeaza o comunicare care nu este orientat" conexiune, similara telegramelor. Nivelul aplica"ie Reune#te func!ionalit"!ile nivelurilor sesiune, prezentare, aplica!ie de la modelul ISO/OSI.

A S E M % N % R I & I D E O S E B I R I N T R E O S I & I TC P / I P

ASEM%N%RI: 1. 2. 3. transport . Ambele se bazeaz" pe stiv" de protocoale (independente). Func!ionalitatea nivelurilor este oarecum asem"n"toare. n topul stivelor de protocoale se afl" nivelul aplica"ie care se bazeaz" pe nivelul

Se disting trei concepte importante: serviciu d" func!ionalitatea fiec"rui strat (spune ce face), dar nu spune ce

folose#te #i cum func!ioneaz". interfa"! spune protocolului aflat deasupra ce parametri trebuie s" i dea #i ce

rezultat va ob!ine. serviciul). protocol explic" regulile dup" care se face comunicarea (cum se ndepline#te

DEOSEBIRI: 1. OSI distinge cele 3 concepte, iar TCP/IP nu le distinge. OSI este bun ca model,

TCP/IP este bun ca implementare 2. nivel : Fiabilitatea / Siguran!a comunic"rii.

X.25 (suita de protocoale corespunz"toare lui OSI) face detectarea #i tratarea erorilor la fiecare

Nivelul 2: erori de transmisie

proceduri de acoperire se folose#te o cifr" de control pentru fiecare pachet, confirmare pentru aceste cifre de control. Nivelul 3:

Face detectarea si corectarea erorilor la nivel de pachete Nivelul 4:

TCP/IP cifre de control, algoritmi de retransmisie, proceduri de acoperire a erorilor, time-out, timpul de viata a pachetelor Fiabilitatea n OSI foarte bun", eficien!a foarte slab" Fiabilitatea n TCP/IP mai mic", eficien!a mai bun"

3. -

Unde este localizat" decizia #i controlul OSI controlul #i decizia centralizat (rut"ri, control, de flux #i trafic, confirm"ri de

transmisie) n dispecerat de re!ea TCP/IP - cere tuturor serverelor s" participe aproape la toate opera!iile re!elei

(detectarea de erori, rut"ri, controlul fluxului n re!ea). Astfel re!eaua este o sum" de servere active din punct de vedere al Internetului, decizia #i controlul se distribuie.

Concluzii: OSI bun ca model TCP/IP bun ca ansamblu de protocoale efective.

Independent de schema de stratificare putem enun!a PRINCIPIUL STRATIFIC%RII (func!ioneaz" independent de schema de stratificare #i de func!ionalitatea straturilor):

ENUN#: Protocoalele sunt proiectate astfel nct stratul n la destinatar prime$te exact ceea ce se emite de stratul n la expeditor.

Asadar, pentru programatori este important doar stratul n, fara a-i interesa ce se petrece la straturile inferioare.

PARTEA 5

P R O T O C OA L E D E C O M U N I C A T I E I N R E T E L E L E D E C A L C U L A T OA R E (DETALII)
Cel mai adesea comunica!iile interprocese de-a lungul unei re!ele sunt realizate prin intermediul familiei de protocoale TCP/IP. Dupa cum am vazut si mai sus, familia de protocoale TCP/IP const" din urm"toarele protocoale: TCP

Transmission Control Protocol este un protocol orientat-conexiune ce ofer" posibilitatea de a realiza comunica!ii full-duplex sigure. Se bazeaz" pe protocolul IP. TCP este de departe cel mai folosit protocol n comunicarea interprocese.

UDP

User Datagram Protocol comunica!ii nesigure n mod neconectat

ICMP

Internet Control Message Protocol folosit pentru tratarea erorilor #i controlul informa!iilor. Folose#te protocolul IP pentru realizarea schimbului de date. n mod normal procele utilizator nu au nevoie s" aceseze ICMP, deoarece mesajele acestuia sunt procesate de c"tre software-ul TCP/IP.

IP

Internet Protocol protocolul de baz" pentru UDP, TCP #i ICMP. Procesele utilizator folosesc doar TCP sau UDP, folosirea direct" a IP-ului fiind rar ntlnit". Diferitele piese ale Internetului sunt conectate de un set de calculatoare numite routere, care conecteaz" mpreun" re!elele. Aceste re!ele sunt uneori Ethernet, uneori re!ele de tip inel, sau alteori re!ele telefonice. La nivelul protocolului IP, un router prime#te datele trimise de undeva #i decide unde trebuie s" le trimit" mai departe folosind pentru aceasta cea mai bun" cale de comunicare. Suita de reguli prin care se realizeaz" schimbul de date se nume#te protocol. Protocolul Internet (IP) trimite mesajele sau verific" faptul c" routerul #tie ce s" fac" cu datele cnd acestea i sosesc func!ionnd ca un plic. Adresele Internet constau din patru numere (octeti), fiecare mai mic dect 256. Atunci cnd sunt scrise, numerele sunt separate prin puncte, astfel: 187.110.27.7 135.120.4.2 Adresa este n fapt format" din mai multe p"r!i. Deoarece Internet este o re!ea de re!ele, nceputul adresei spune routerului Internet re!eaua la care suntem conecta!i. Sfr#itul adresei ne spune care calculator gazd" (host) va recepta pachetul. Fiecare calculator de pe Internet are o adres" unic" n acest fel. De exemplu, serverul studentilor Facultatii de Informatica are adresa IP urmatoare : 193.231.30.197. Pentru o serie de motive practice (dintre cele mai notabile putem num"ra limit"rile echipamentelor), informa!ia trimis" de-a lungul re!elelor IP este "spart"" n piese de dimensiuni mai mici, numite pachete. Informa!ia din interiorul pachetelor are o lungime de regul" ntre unul #i aproximativ 1500 caractere. Asta pentru a prentmpina ca un utilizator s" monopolizeze re!eaua, permi!nd tuturor s" aib" acces la ea. Totodat" dac" re!eaua este supranc"rcat", asta nseamn" c" ea se va comporta r"u pentru to!i utilizatorii ei: ea nu se opre#te pentru unii, n timp ce al!i utilizatori mai importan!i o monopolizeaz".

ARP

Address Resolution Protocol mapeaz" adresele Internet n adrese hardware. Numai anumite re!ele au nevoie de el.

RARP

Reverse Address Resolution Protocol mapeaz" adrese hardware n adrese Internet.

Rela!iile dintre aceste protocoale sunt ilustrate n figura urm"toare.

Componentele familiei de Protocoale Internet

Ca n cazul oric"rui protocol bazat pe mai multe nivele, fiecare nivel ncapsuleaz" datele nivelului inferior. Familia de protocoale TCP/IP a fost dezvoltat" de c"tre Defense Advanced Research Projects Agency (DARPA) n anii 1970.

Obiectivul principal al DARPA a fost de a dezvolta o tehnic" efectiv" pentru utilizare multiplexat" a re!elelor interconectate. Acest obiectiv a fost atins #i ast"zi mii de re!ele (conectate sau nu la faimosul Internet) folosesc familia de protocoale TCP/IP. n al doilea rnd ei au urm"rit urm"toarele obiective: comunica!iile trebuie s" continue n ciuda piederii de servicii; suport pentru tipuri multiple de servicii; arhitectura Internet trebuie s" se adapteze la o varietate de re!ele; s" permit" un management distribuit al resurselor; s" fie eficient" din punt de vedere al costului; #i s" permit" ad"ugarea de noi hosturi cu minimum de efort. n special un obiectiv, continuarea comunica!iilor n ciuda pierderii de servicii, a jucat un rol major n procesul de proiectare. Pentru a atinge acest obiectiv, informa!iile de stare care descriu conversa!ia n curs trebuie s" fie protejate. A#a c" aceste informa!ii sunt ob!inute la punctele finale de comunicare #i nici un packet care traverseaz" nodurile re!elei nu are nevoie de informa!iile de stare. Fiecare host are asignat" o adres! IP pe 32 de bi!i. Aceast" adres" identific" re!eaua la care este ata#at acel host. Detalii despre adresa IP vom afla mai tirziu.

Numere de Port Datagramele IP specific" doar host-ul destina!ie. Pentru a identifica aplica!ia c"reia i sunt destinate aceste datagrame TCP #i UDP folosesc numere de port pe 16 bi!i. Numerele de port sunt mai flexibile dect id-urile de proces, un proces poate avea, n acela#i timp, mai multe conexiuni distincte cu alte procese utiliznd mai multe porturi. De asemeni un port poate fi folosit pentru a recep!iona mesaje de la mai multe surse. Serverele a#teapt" cererile clien!ilor la porturi binecunoscute. De exemplu, HTTP (HyperText Transfer Protocol) are portul TCP #i UDP cu num"rul 80. Numerele de port binecunoscute cu numere ntre 1 #i 1023 sunt administrate de c"tre Internet Assigned Numbers Authority (IANA). Procesele client n mod normal nu trebuie s"-#i fac" griji n privin!a num"rului pe care l vor folosi deoarece pot primi n mod automat un port unic la nivelul hostului pe care ruleaz".

Multiplexare/Demultiplexare

Protocoalele de comunica!ie folosesc tehnici de multiplexare #i demultiplexare pe toate nivelele ierarhiei. Cnd trimitem un mesaj protocoalele diferitelor nivele ale stivei de protocoale TCP/IP de pe calculatorul surs", includ n acesta bi!i suplimentari prin care se specific" tipul mesajului, protocolul folosit etc. Calculatorul destina!ie folose#te aceste informa!ii n procesul de demultiplexare a mesajelor. Procesul de demultiplexare a mesajelor pentru frame-uri Ethernet este ilustrat mai jos.

Demultiplexarea mesajelor ntr-o re"ea Ethernet

PROTOCOLUL INTERNET

Internet Protocol (IP) este protocolul de baz" pentru TCP #i UDP. Comunica!iile IP sunt nesigure, n mod neconectat, #i mesajele protocolului IP sunt datagrame. Nesiguran!a protocolului IP se refer" la faptul c" datagramele pot fi pierdute, duplicate, sau pot sosi ntr-o alt" ordine dect cea n care au fost trimise. Nu se stabile#te o conexiune naintea nceperii schimbului de datagrame. Header-ul (antetul) unei datagrame IP, este prezentat n figura de mai jos:

Cmpurile header-ului unei Datagrame IP

lungime header reprezint" lungimea header-ului IP tipul serviciului indic" dac" aceast" datagram" necesit" sau nu o tratare special".

lungime total! stabile#te lungimea datagramei, inclusiv a header-ul. Lungimea maxim"

a unei datagrame IP este 65515 bytes. Dac" este necesar IP fragmenteaz" n mod automat mesajele ce trebuie transmise identificare identific" n mod unic fiecare datagram" trimis" de un host flaguri #i fragment offset sunt folosite n procesul de fragmentare a datagramelor timpul de via"! limiteaz" num"rul de rutere prin care datagrama poate trece protocol specific" tipul mesajului (e.g. UDP sau TCP), acest cmp este util n procesul

de demultiplexare a datagramelor IP sum! de control header suma de control a header-ului IP adres! IP surs! originea datagramei IP adres! IP destina"ie destina!ia datagramei IP

PROTOCOLUL U DP

User Datagram Protocol (UDP) vezi si figura de mai jos adaug" datagramelor IP informa!ii suplimentare astfel nct acestea s" poat" fi folosite de c"tre procese; pentru identificarea procesului destina!ie se folosesc num!rele de port. Suma de control UDP se refer" la header-ul UDP, unele cmpuri ale header-ului IP, #i la date. Cmpul length se refer" la num"rul de bytes al datagramei UDP inclusiv header-ul.

Datagram! UDP

UDP este doar o interfa!" care face datagramele IP folosibile de c"tre procese diferite. Deci UDP e la fel de nesigur ca #i IP, acest protocol negarantnd c" mesajele vor ajunge la destina!ie. Mai multe despre specifica!iile UDP pot fi g"site n RFC 768.

PROTOCOLUL TCP

Transmission Control Protocol, sau TCP, ofer" un flux de date sigur, orientatconexiune, #i full-duplex.. Folose#te protocolul IP pentru transmiterea datelor. TCP este protocolul, frecvent men!ionat mpreun" cu IP, care este folosit pentru a corecta problemele care pot ap"rea la transportul datelor. TCP preia informa!ia pe care vrem s" o transmitem #i o sparge n buc"!i. El numeroteaz" apoi fiecare pies" astfel nct cel care prime#te datele s" poat" verifica #i s" le pun" napoi n ordinea corect". Pentru a transmite secven!a de numere prin re!ea, el are un plic propriu cu informa!iile necesare. Acesta este, la rndul s"u, pus n interiorul unui plic IP #i transmis re!elei. Odat" pus ntr-un plic IP re!eaua poate s" l transporte. La recep!ie, un pachet de programe TCP colecteaz" plicurile, extrage datele #i le a#eaz" n ordinea corect". Dac" unele plicuri lipsesc, el cere emi!"torului s" le mai transmit" odat". Cnd are toat" informa!ia ordonat" corect, el trece datele c"tre acel program de aplica!ii care utilizeaz" serviciile sale.

Aceasta este o viziune pu!in utopic" a TCP-ului. n realitate pachetele nu numai c" se pierd, dar ele pot fi chiar alterate de c"tre erorile de pe liniile telefonice pe care le tranziteaz". TCP se ocup" #i de aceast" problem". Cnd pune datele ntr-un plic, el calculeaz" o sum" de control. O suma de control este un num"r care permite programului receptor s" detecteze erorile din pachet. Cnd pachetul ajunge la destina!ie, TCP-ul care face recep!ia pachetelor, recalculeaz" suma de control #i o compar" cu cea a emi!"torului. Dac" ele nu sunt egale, o eroare a ap"rut n timpul transmiterii. TCP-ul care recep!ioneaz" va anula pachetul #i va cere retransmiterea lui. nainte ca dou" aplica!ii s" transfere date via TCP, ntre acestea trebuie stabilit" o conexiune. Deoarece mesajele de control TCP nu sunt vizibile aplica!iilor, acestea folosesc fluxurile de date TCP similar cu apelurile I/O din UNIX. Siguran!a fluxului de date TCP e asigurat" prin: Datele sunt fragmentate n segmente.

TCP men!ine un timer pentru fiecare segment trimis. Dac" nu prime#te o confirmare n timpul indicat de timer atunci retransmite acel segment. Datele primite sunt confirmate.

Prin intermediul sumei de control se verific" corectitudinea datelor. Segmentele corupte sunt eliminate iar emi!"torul neprimind confirm"rile n timpul indicat de timer le va retransmite. Deoarece TCP se bazeaz" pe datagramele IP n realizarea schimbului de date, #i acestea pot sosi n alt" ordine dect cea n care au fost trimise, TCP resecven!ioneaz" datele n cazul n care e necesar. TCP detecteaz" #i elimin" duplicatele datagramelor IP.

Controlul fluxului de date e realizat de TCP: fiecare punct final de comunica!ie de!ine o mul!ime finit" de date care sunt expediate pn" sunt confirmate de c"tre cealalt" parte (acest procedeu se nume#te fereastr" glisant").

Headerul TCP

Header-ul TCP, prezentat n figura de mai sus, con!ine cel pu!in 20 de octe!i. Ca #i n cazul datagramelor UDP, segmentele TCP con!in numerele de port ale proceselor surs" #i destina!ie. mpreun" cu adresele IP surs" #i destina!ie acestea identific" n mod unic fiecare conexiune. Cmpul num!r de secven"! identific" pozi!ia acestei secven!e de date n segment. Num!r de confirmare co!ine num"rul urm"toarei secven!e de date pe care emi!"torul confirm"rii a#teapt" s" o primeasc". Lugime header lungimea header-ului TCP.

Se utilizeaz" diferite flaguri (biti) pentru stabilirea conexiunii #i controlul informa!iilor de stare. Dimensiunea ferestrei glisante indic" modulului TCP de la recep!ie num"rul de octe!i pe care emi!"torul poate s" l accepte. n mod normal, dimensiunea ferestrei glisante este de cteva mii de octe!i. Suma de control TCP include datele TCP n calcule. TCP cere ca emi!"torul s" calculeze suma de control #i s" o includ" n acest cmp. Modulul de recep!ie trebuie s" verifice sumele de control cnd prime#te datele. Pointerul de urgen"! specific" pozi!ia unui octet n zona de date TCP.

Scopul s"u este de a aten!iona modulul TCP receptor c" exist" date urgente #i de a indica pozi!ia acestora. Mai multe informa!ii despre specifica!iile TCP pot fi g"site n RFC 793. Pentru a garanta siguran!a #i secven!ialitatea pentru fluxul de octe!i, TCP folose#te confirm!ri (monitorizate de timere) #i sume de control.

IP orientat-conexiune numere de port sume de control confirm"ri timeout #i retransmisii detec!ia duplicatelor secven!iere controlul fluxului da nu nu nu nu nu nu nu

UDP nu da opt. nu nu nu nu nu

TCP da da da da da da da da

O compara"ie ntre protocoalele IP, UDP, $i TCP

M O D E L E D E C A L C U L D I S T R I BU I T

Modelul Client/Server

n cadrul modelului client/server dou" sau mai multe procese, eventual rulnd pe ma#ini diferite, coopereaz" n realizarea unui anumit task. Schema de comunicare este urm"toare: un proces (numit client) trimite o cerere (cere un serviciu) c"tre alte procese (numite servere). Serverele vor transmite un anumit r!spuns c"tre client. Aceste interac!iuni sunt ilustrate n figura urm"toare.

Modelul Client/Server

Exist" dou" tipuri de servere: servere concurente care pot rezolva mai multe cereri simultan, #i servere iterative care pot rezolva o singur" cerere la un moment dat.

Serverele concurente sunt folosite mai ales atunci cnd r"spunsul nu poate fi transmis napoi imediat sau cnd trebuie realizate comunica!ii suplimentare cu clientul. De obicei serverele concurente folosesc protocoale de comunica!ie orientate conexiune. Ele sunt implementate prin intermediul proceselor (via apelul fork() in sistemele UNIX, in limbajul C standard) sau al firelor de execu!ie (thread-uri, in sisteme de operare sau limbaje care permit aceasta). Serverele iterative sunt ideale n cazul n care cererile pot fi rezolvate rapid iar r"spunsul este scurt. n mod normal sunt construite cu ajutorul protocoalelor neorientate-conexiune.

Un scenariu de interac"iune Client/Server

Un client este o parte a aplica!iei care este rulat" de c"tre utilizator. Serverele, n mod normal, sunt demoni care sunt lansa!i n execu!ie la boot-area sistemului, sau cnd sose#te o cerere c"tre acel serviciu. Odat" lansa!i n execu!ie demonii r"mn n memorie pn" la reboot-area sistemului. Cele mai multe servere petrec majoritatea timpului n a#teptarea cererilor pe care sunt capabile s" le rezolve. Este posibil ca procesele client #i server s" ruleze pe acela#i computer, dar acest lucru nu este necesar dac" cele dou" procese folosesc facilit"!ile oferite de re!eaua de comunica!ie.

PARTEA 8

A S P E C T E P R AC T I C E L E G AT E D E I N T E R N E T
SISTEMUL DE NUMIRE A DOMENIILOR

Destul de devreme, s-a realizat c" adresele sunt bune pentru comunicarea dintre ma#ini, dar #i c" oamenii prefer" nume. Este dificil" discu!ia despre Internet folosind adrese numerice, dar #i mai greu sunt de !inut minte. De aceea calculatoarelor de pe Internet li s-au dat nume pentru u#urin!a folosirii lor, de c"tre utilizatorii umani. La nceput, cnd Internetul era o organiza!ie nu prea dezvoltat", utilizarea numelor era u#oar". NIC-ul (Network Informa!ion Center) !inea un registru (un fisier denumit hosts) pe care l actualiza mereu. Se putea trimite un formular, electronic desigur, #i NIC l ad"uga la lista de nume #i adrese pe care o ntre!inea. Acest fi#ier numit fi#ierul de calculatoare gazd", era distribuit regulat c"tre fiecare ma#in" gazd" de pe re!ea. Numele erau cuvinte simple, fiecare alese pentru a fi unice. Dac" cineva utiliza un nume, calculatorul l c"uta n fi#ier #i l substituia cu adresa corespunz"toare. Din nefericire, cnd Internetul s-a r"spndit #i a crescut, tot astfel s-a ntmplat #i cu acel fi#ier. Exista o ntrziere semnificativ" n ob!inerea unui nume deja nregistrat #i devenise dificil de g"sit nume care nu mai fuseser" nc" folosite. De asemenea, se pierdea prea mult timp n re!ea pentru a distribui acest fi#ier mare c"tre fiecare ma#in" care era cuprins" n acesta. Era clar c" era nevoie de un sistem distribuit, conectat direct la un sistem central care s" influen!eze n bine rata de schimb a fi#ierelor. Acest sistem este numit Sistemul de Numire a Domeniilor sau DNS (Domain Name System). DNS este o metod" de administrare a numelor prin trecerea c"tre grupuri diferite a responsabilit"!ii pentru subseturile care formeaz" acest nume. Fiecare nivel n acest sistem este numit domeniu. Domeniile sunt separate prin puncte:

ux.cso.uiuc.edu nic.ddn.mil

yoyodyne.com fenrir.infoiasi.ro

Dac" citim un astfel de nume, fiecare domeniu pe care l ntlnim este mai mare dect cel precedent. Pentru primul nume (ux.cso.uiuc.edu), ux este numele calculatorului gazd". Numele pentru acel calculator este creat #i ntre!inut de c"tre grupul cso. Departamentul cso este o parte a Universit"!ii Ilinois din Urbana Champaign (uiuc). Uiuc este o por!iune din grupul de institu!ii de educa!ie (edu) universitati, institute de cercetare. Deci domeniul edu con!ine toate calculatoarele din institutele educa!ionale ale SUA, domeniul uiuc.edu con!ine toate calculatoarele de la Univ. Ilinois #i a#a mai departe. Fiecare grup poate crea sau schimba tot ceea ce exist" n interiorul s"u. Dac" uiuc decide s" creeze un alt grup numit ncsa, el poate face asta f"r" s" cear" permisiunea nim"nui. Tot ce trebuie s" fac" este s" adauge noile nume n partea sa din baza de date mondial", iar mai devreme sau mai trziu to!i cei care au nevoie s" afle vor #ti de noul nume (nsca.uiuc.edu). Similar, cso poate cump"ra un nou calculator, s"-i dea un nume #i s"-l adauge n re!ea f"r" s" cear" permisiunea nim"nui. Dac" fiecare grup de la edu n jos va respecta regulile #i vor fi siguri c" numele pe care le dau sunt unice, atunci fiecare dou" sisteme de oriunde din Internet nu vor avea acela#i nume. Similar, pentru numele simbolic fenrir.infoiasi.ro. Este u#or s" ne d"m seama de unde vin numele #i domeniile dintr-o organiza!ie ca universitatea sau o companie. Domeniile de la cel mai nalt nivel (ca edu) au fost create atunci cnd a fost inventat sistemul domeniilor. La nceput, cele mai nalte nivele au fost n num"r de #ase: Domeniul Com Edu Gov Mil Org Net Utilizare pentru organiza!ii comerciale (www.amazon.com) organiza!ii educa!ionale (www.gmu.edu) organiza!ii guvernamentale, nemilitare (whitehouse.gov) organiza!ii militare (navy.mil) alte organiza!ii (www.w3.org) Resurse pentru re!ea (internic.net)

Cnd Internet a devenit o re!ea interna!ional", a fost necesar" o modalitate de a da celorlalte !"ri responsabilitatea pentru propriile nume. Acum exist" un set de domenii notate cu dou" litere (conform codului rutier), care corespund domeniilor de nivel cel mai nalt, pentru !"ri. De exemplu .ro pentru Romania, .fr pentru Franta, .jp pentru Japonia sau chiar .us pentru USA. Cnd se folose#te un nume ca fenrir.infoiasi.ro, calculatorul trebuie s" l transforme ntr-o adresa. Pentru aceasta el cere ajutorul serverelor DNS, ncepnd de la dreapta spre stnga numelui. Pentru nceput, el cere serverului local DNS s" caute adresa. n acest moment sunt trei posibilit"!i: Serverul local #tie adresa, pentru c" adresa este n por!iunea din baza de date mondial" a acestui server Serverul local #tie adresa pentru c" altcineva a ntrebat recent de aceea#i adres" Serverul local nu cunoa#te adresa, dar #tie cum s" o afle. Software-ul serverului contacteaz" un server r"d"cin". Acesta este serverul care #tie adresele serverelor pentru zona (ro) nivelului cel mai nalt (cel din dreapta). El cere serverului r"d"cin" adresa calculatorului responsabil cu zona infoiasi.ro. Programul contacteaz" apoi acel calculator #i i cere adresa serverului fenrir. n sfr#it, el contacteaz" acea ma#in" #i prime#te adresa lui fenrir, calculatorul gazd" care a fost scopul acestei aplica!ii. n concluzie, avantajul real al DNS este c" el mparte giganticul Internet ntr-un m"nunchi de piese mai u#or de st"pnit. De#i sunt sute de mii de calculatoare ele au un nume; iar numele sunt organizate ntr-o manier" convenabil", f"cnd mai u#or pentru utilizator de !inut minte cele de care are nevoie.

S E RV I C I I D E BA Z % N I N T E R N E T

Conectarea la distan"!
Telnet este protocolul Internetului de conectare la distan!a. El ne permite ca de la o tastatur" legat" la un calculator s" ne conect"m la un alt calculator aflat la distan!". Conectarea se poate face la o ma#in" care se afl" n aceea#i camer", n acela#i campus, sau ntr-un col! ndep"rtat al lumii. Atunci cnd suntem conecta!i e ca #i cum tastatura ar fi legat" direct la acel calculator. Putem accesa oricare din serviciile pe care acea ma#in" le ofer" pentru terminalele ei locale. Putem rula o sesiune interactiv" normal" (conectarea la sistem, executarea de comenzi) sau putem avea acces la o mul!ime de servicii speciale: putem citi un catalog al unei biblioteci, s" acces"m un text dintr-un ziar sau s" profit"m de multe alte servicii care sunt oferite de diferite sisteme din re!ea. De#i exist" un num"r mare de comenzi, avnd un num"r #i mai mare de subcomenzi, doar cteva sunt utilizate n general: close Termin" o conexiune care exista deja sau a fost creat". Ea deconecteaz" imediat utilizatorul de la sistemul aflat la distan!"; pate ie#i #i din Telnet dac" am specificat numele calculatorului direct n comanda telnet. Aceast" comand" este folositoare dac" am intrat intr-o leg"tur" cu un alt calculator #i vrem s" ie#im de acolo. open nume ncearc" sa creeze o conexiune cu ma#ina indicat". Este necesar numele sau adresa ma#inii. Majoritatea programelor Telnet vor cere explicit un nume de ma#in" dac" acesta nu este specificat. Re!inem c" trebuie s" d"m comanda close pentru a nchide o conexiune existent" nainte de a deschide o alta nou". set echo Activeaz" sau dezactiveaz" ecoul local. Ecoul este procesul prin care caracterele pe care le-am tastat apar pe ecran. De obicei, calculatorul aflat la distan!" este responsabil cu trimiterea caracterelor tastate napoi c"tre terminalul nostru dup" ce le-a recep!ionat. Acest lucru se nume#te ecou la distan!" #i este considerat mai sigur pentru c" atunci po!i #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. Deoarece ecoul la distant" este mai sigur Telnet ncepe cu ecoul local dezactivat. Comanda set echo func!ioneaz" ca un ntrerup"tor.

Cum #tim cnd trebuie activat sau dezactivat ecoul local? Dac" ecoul este dezactivat #i el ar trebui s" fie activ, caracterele tastate nu vor afi#ate; nu vom vedea comenzile pe care le trimitem sistemului aflat la distan!", dar vom vedea rezultatul acestor comenzi. Dac" ecoul local este activ #i el ar trebui s" fie dezactivat, vom vedea fiecare caracter pe care l tast"m de dou" ori. n ambele cazuri solu!ia este aceia#i: se intr" n linia de comand" #i se tasteaz" set echo. set escape car Atribuie caracterului escape (singurul caracter care nu poate fi transmis la distan!" de Telnet) valoarea caracterului specificat. E important ca acel caracter escape pe care l-am ales s" nu fie niciodat" nevoie s" l folosim ct timp lucr"m n mod normal. Acest lucru poate fi o problem", multe programe atribuie ac!iuni pentru aproape toate tastele. quit termin" programul Telnet ^z (CTRL+Z)

Suspend" temporar sesiunea Telnet pentru a permite altor comenzi s" fie executate pe sistemul local. Conexiunile #i alte op!iuni r"mn neschimbate la revenirea n program.

Transferul fi#ierelor: ftp


Adeseori, vom g"si informa!ie pe Internet pe care nu dorim s" o examin"m de pe un sistem aflat la distan!" avnd nevoie de o copie. Programul ftp se nume#te a#a dup" protocolul de aplica!ie pe care l folose#te: File Transfer Protocol (FTP). A#a cum spune #i numele, sarcina protocolului este s" transfere fi#iere de la un calculator la altul. Nu conteaz" unde sunt situate cele dou" calculatoare, cum sunt conectate #i nici chiar dac" folosesc acela#i sistem de operare. Vom prezenta n continuare cele mai folositoare comenzi ftp

ascii Intr" n modul ASCII, pentru transferarea fi#ierelor text. binary Intr" n modul binar, pentru transferarea fi#ierelor binare. cd director_la_distan"! Schimb" directorul de lucru pe ma#ina aflat" la distan!" close Termin" sesiunea ftp cu o anumit" ma#in" #i se ntoarce n modul comand" ftp. Dup" close, putem introduce open pentru a deschide o conexiune cu un nou sistem, sau quit pentru a ie#i din ftp. delete nume_fi#ier !terge fi#ierul numit de pe ma#ina aflat" la distan!". dir fi#ier_destina"ie Ofer" un listing complet al directorului curent de pe ma#ina aflat" la distan!". Fi#ier #i destina!ie sunt ambele op!ionale. fi#ier poate fi numele unui singur fi#ier sau o construc!ie de metacaractere. Listingul ofer" toate numele de fi#iere care satisfac specifica!ia. Dac" fi#ier este omis, listingul d" toate fi#ierele din directorul curent de pe ma#ina aflat" la distan!". Destina!ia specific" unde va fi pus rezultatul. Dac" destina!ie este omis, apare listingul pe ecran. hash Spune ftp-ului s" tip"reasc" un caracter diez (#) de fiecare dat" cnd este transferat un bloc de date, semnalndu-ne vizual dac" datele au fost transferate. help comand! Afi#eaz" o bucat" mic" din documenta!ia despre acea comand". lcd director Schimb" directorul implicit de pe ma#ina local" n directorul numit ls fi#ier_destina"ie

Ofer" un listing scurt al directorului de pe ma#ina aflat" la distan!". Argumentele sunt la fel ca la dir. mget list!_fi#iere Transfer" mai multe fi#iere de pe ma#ina accesat" mput list!_fi#iere Pune mai multe fi#iere pe ma#ina accesat" open nume_ma#in! Realizeaz" conexiunea cu ma#ina numit". Este folositoare dac" vrem s" ne conect"m la un nou sistem dup" ce am transferat fi#iere de pe un alt sistem. prompt Cu mget #i mput, comanda prompt spune ftp-ului s" cear" confirmarea naintea transfer"rii fiec"rui fi#ier. Este folositor dac" vrem s" fim siguri c" nu transfer"m fi#iere de care nu avem nevoie pwd Afi#eaz" numele directorului curent de pe ma#ina accesat". quit nchide conexiunea, dac" exist" una, #i iese din ftp. user nume_utilizator Trimite numele de utilizator c"tre ma#ina aflat" la distan!" pentru conectare. Este folositoare dac" am introdus numele de utilizator sau parola incorect. Dect s" nchidem conexiunea #i s" deschidem alta nou", putem ncerca din nou introducnd comanda user.

Sistemul de po#t! electronic!


Preliminarii Este unul din cele mai larg r"spndite servicii Internet. Pornind ini!ial ca un serviciu simplu capabil s" mute mesaje text (#ir de caractere) de pe un calculator pe altul #i s"-l adauge la un fi#ier numit c"su!a po#tal", e-mail a cunoscut o dezvoltare concomitent" cu dezvoltarea re!elelor de comunica!ie. n general, un mesaj e-mail este un text mpreun" cu informa!iile referitoare la destinatar, expeditor etc., informa!ii constituite n a#a-numitul header al mesajului. De obicei, header-ul unui mesaj este generat de aplica!ia e-mail folosit". Iat" n cele ce urmeaz" o list" a cmpurilor care formeaz" header-ul unui mesaj: From - con!ine adresa de e-mail a "expeditorului"(utilizatorul care trimite mesajul); To - con!ine adresa e-mail a destinatarului; aceasta trebuie sa fie cunoscut" de c"tre

expeditorul mesajului; Subject - este o descriere n cteva cuvinte a mesajului - nu este obligatorie; Date - este data la care mesajul a fost transmis - este comletat" automat de

programul client; Replay-to - este adresa la care expeditorul dore#te s" primeasc" r"spunsul la mesajul

respectiv.(este util atunci cnd acesta de!ine mai multe c"su!e po#tale #i dore#te ca r"spunsurile s" fie colectate ntr-una singur"); Message-ID - un #ir de identificare generat de agentul de transport la trimiterea

mesajului. Acest identificator este unic pentru fiecare mesaj; la destinatar; Cc (carbon copy - copie la indigo) - utilizatorii ale c"ror adrese sunt trecute n Received - fiecare calculator care prime#te mesajul #i l transmite mai departe adaug"

cte un astfel de cmp. n felul acesta se poate reconstitui drumul urmat de mesaj de la expeditor

acest cmp vor primi cte o copie a mesajului;

Bcc (blind carbon copy) - sunt copii trimise unei liste de cititori, la fel ca #i copiile

indigo obi#nuite (Cc). Totu#i linia de antet care listeaz" destinatarii este #tears" automat din mesajul trimis. De aceea , nici unul dintre destinatarii mesajului nu va #ti cine a mai primit "copii la indigo invizibile". Din moment ce nu exist" nici o nregistrare n mesajul recep!ionat c" aceste copii au fost trimise, ac!iunile ulterioare care folosesc date din antet, nu i vor include #i pe ace#ti destinatari; Fi#ierele semn"tur" .signature - sunt o cale de ad"ugare a unor informa!ii

suplimentare la mesajele trimise. Ele sunt adesea folosite pentru a include informa!ii despre utilizator #i cum poate fi el contactat Singurul indiciu pe care l are sistemul de e-mail pentru a livra un mesaj este adresa destinatarului. Acesta este de forma nume_utiliator@domeniu. Numele utilizatorului este numele contului pe care acel utilizator l de!ine sau, mai rar, poate fi un alias al utilizatorului, definit pe ma#ina acestuia. ntr-o re!ea n care conturile utilizator sunt dispuse pe mai multe ma#ini se pot specifica adrese de e-mail care s" ascund" numele ma#inii #i astfel din exterior s" apar" adrese cu acela#i domeniu pentru to!i utilizatorii. Facilit!"i e-mail generale La primul contact cu sistemul e-mail utilizatorul va compune (Compose) un mesaj. Cmpul To: poate con!ine mai multe adrese de destinatari. Este sarcina utilizatorului s"-#i actualizeze lista de adrese de e-mail a utilizatorilor cu care va schimba mesaje. Dar nu este singurul mod de a trimite mesaje: Reply - Odat" un mesaj primit el poate fi returnat expeditorului, eventual n

prealabil modificat. Mesajul returnat poate con!ine corpul mesajului original, sau nu. Mesajul original poart" numele de quoted text. Returnarea poate fi f"cut" doar expeditorului (Reply to sender) sau expeditorului #i tuturor celor care au primit mesajul (Reply to all recipients). Forward - mesajul primit pate fi "trimis mai departe" unor al!i utilizatori (care nu

se aflau n lista destinatarilor mesajului original). Mesajele sunt organizate n colec!ii numite foldere. Mesajele noi apar colec!ionate ntr-un folder numit de cele mai multe ori inbox (c"su!" de intrare). Dac" sistemul local de e-mail permite stocarea temporar" a mesajelor care urmeaz" s" fie trimise, aceasta poart" numele de outbox (c"su!" de ie#ire). De asemenea, odat" un mesaj compus #i trimis, o copie a acestuia r"mne stocat" ntr-un folder numit sent-mail.

Atunci cnd mesajul electronic nu poate fi distribuit, expeditorul prime#te o notificare n acest sens, care explic" #i cauzele insuccesului. Exist" trei motive obi#nuite pentru care po#ta electronic" e#ueaz": Sistemul de po#ta electronic" nu poate g"si ma#ina destinatarului - "Host

unknown" (acest lucru nseamn" c" domeniul din adresa destinatarului este inexistent); Destinatarul nu este cunoscut de acea ma#in" - "Unknown user" (domeniul este

corect, dar pe ma#ina respectiv" nu se afla un utilizator cu numele specificat n mesaj); Programul poate g"si att ma#ina ct #i destinatarul, dar nu poate transmite

mesajul. Iat" cteva motive posibile: distan!"; sistemul aflat la distan!" poate fi "mort" (poate avea de exemplu, re!eaua poate avea erori, f"cnd imposibil contactul cu ma#ina aflat" la

probleme hardware); sistemul aflat la distan!" poate fi gre#it configurat.

Agen"i de transport pentru po#ta electronic! Cu toate c" utilizatorul serviciului e-mail interac!ioneaz" nemijlocit doar cu clientul e-mail (programul care permite n esen!" trimiterea #i primirea mesajelor ), credem c" se impun cteva specifica!ii despre protocoalele care asigur" transferul mesajelor de pe un calculator pe altul. Aceste protocoale sunt protocoale la nivelul aplicatie in cadrul stivei de protocoale TCP/IP. SMTP (Simple Mail Transport Protocol) - este protocolul consacrat de

transport e-mail n Internet. n general, pentru trimiterea unui mesaj ntre dou" ma#ini din Internet se realizeaz" o conexiune de tip SMTP care const" ntr-o etap" de autentificare #i transferul efectiv. Din punctul de vedere al utilizatorului singura interac!iune cu acest protocol const" n specificarea numelui server-ului SMTP. Acest nume se ob!ine de la administratorul de sistem. POP (Post Office Protocol) - este un protocol care lucreaz" pe principiul unei

c"su!e po#tale: programul client se conecteaz" din timp n timp la serverul POP. La o conexiune

sunt trimise mesajele din outbox-ul clientului #i sunt aduse mesaje noi de pe pop-server. Autentificarea se realizeaz" la nivel de utilizator, cu parol". Numele POP-server-ului este de asemenea furnizat de administratorul de sistem, la fel ca #i numele contului POP.

Sistemul news (#tiri n re"ea)


Stirile n re!ea sunt echivalentul Internet al unui grp de discu!ii. Acestea permit utilizatorului s" consulte articole publicate (posted) n Internet, fiind grupate dup" tematic". %tirile n re!ea grupeaz" discu!iile sub un set larg de titluri, numite grupuri de #tiri (newsgroups). Un program de citire a news-urilr prezint" aceste discu!ii ntr-o modalitate ordonat". n fiecare grup de #tiri exista mai multe discu!ii despre anumite subiecte, astfel c" grupurile sunt organizate ierarhic, avnd numele celui mai larg grup la nceput, urmat de un num"r arbitrar de subgrupuri. Numele fiec"rui subgrup este separat de grupul p"rinte #i de subgrupurile sale printr-un punct ".". Majoritatea grupurilor de #tiri sunt parte a USENET, un set de grupuri considerate a fi de interes global #i care este disponibil n toat" lumea n mod gratuit. USENET nu este o re!ea de calculatoare, ci un set de reguli unanim acceptate pentru transferul #tirilor #i administrarea grupurilor de #tiri. Reguli pentru folosirea, crearea #i #tergerea grupurilor au existat nainte de Internet (USENET a precedat Internet-ul; n acele timpuri #tirile erau transmise prin conexiuni telefonice folosind un protocol de transfer numit uucp Unix to Unix Copy). Cele #apte categorii mari de grupuri de #tiri sunt: 1. comp - calculatoare, informatic" #i subiecte aflate n leg"tur" cu acest domeniu.

Include informatica pur", surse de programe, informa!ii despre sisteme software #i hardware, ca #i subiecte de interes general. 2. subgrupuri news - grupuri interesate de re!eaua de #tiri #i de programe de #tiri. Include importante ca news.newuser.questions (ntreb"ri de la utilizatori noi) #i

news.announce.newusers (informa!ii importante pentru noii utilizatori). 3. 4. 5. rec - aici se discut" despre hobby-uri, activit"!i recrea!ionale #i despre art". sci - aici se discut" despre cercet"ri #i programe #tiin!ifice. soc - grupuri care pun n discu!ie probleme sociale.

6.

talk - grupurile talk sunt un forum pentru dezbateri pe teme controversate.

Discu!iile tind s" devin" ntortocheate #i f"r" rezultat. 7. misc - tot ce nu intr" n categoriile de mai sus, sau intr" n mai multe categorii.

Serverele pot avea #i grupuri de #tiri locale. Orice administrator poate crea oricte grupuri de #tiri dore#te, corespunz"tor intereselor utilizatorilor locali. Grupurile locale pot deveni cu timpul grupuri globale cu acceptul larg al utilizatorilor. Astfel au ap"rut grupuri alternative (pe lng" USENET). De exemplu: alt - grupuri care discut" "moduri alternative de a vedea lucrurile". n unele din

aceste grupuri mesajele sufer" de o incoeren!" evident"; alte grupuri; de - discu!ii tehnice, recrea!ionale #i sociale n limba german". hepnet - discu!ii de interes n principal pentru comunitatea celor interesa!i de bionet - grupuri interesate de biologie; biz - discu!ii referitoare la afaceri. Aceast" ierarhie de grup de #tiri permite

trimiterea de reclame #i materiale de prospectare a pie!ei; astfel de activit"!i nu sunt permise n

fizica energiilor nalte; relcom - diferite grupuri originale din fosta URSS (unele pot necesita programe

speciale pentru a afi#a alfabetul chirilic).

RESURSE BIBLIOGRAFICE

Sabin Buraga, Gabriel Ciobanu Atelier de programare in retele de calculatoare, Ed. Polirom, Iasi, 2001

Arnaud Dufour - Internet, Computer Press Agora, Tg.Mures, 1997 A.Tanenbaum - Retele de calculatoare, Computer Press Agora, Tg.Mures, 1996 V.V.Patriciu et al. - Securitatea informatica n UNIX si Internet, Ed.Tehnica, Bucuresti, 1998 Mihai Jalobeanu - Acces in Internet, Ed. Promedia Plus, Cluj-Napoca, 1996 Douglas E. Comer and David L. Stevens - Internetworking with TCP/IP Vol. III, Client-Server Programming and Applications BSD Socket Version, Prentice Hall, 1996 J. Postel (Ed.), Internet Protocol - DARPA Internet Program Protocol Specification, http://cwis.auc.dk/rfc/rfc/rfc79'.html J. Postel, User Datagram Protocol, http://cwis.auc.dk/rfc/rfc/rfc768.html J. Postel (Ed.), Transmission Control Protocol - DARPA Internet Program Protocol Specification, http://cwis.auc.dk/rfc/rfc/rfc793.html * * - RPC Remote Procedure Call Specification Sun Microsystems Inc. http://cwis.auc.dk/rfc/rfc/rfc'057.html * * - Requests For Comments (RFCs): ftp://ftp.internic.net/rfc/

ANEXA - Interfa!a socket


".Crearea unui socket utiliznd socket() 2.Atribuirea unui nume pentru un socket - bind() 3.Specificarea unui socket pe ma#ina de la distan!$ - connect() 4.nchiderea unui socket close() 5.O detaliere: conexiuni Client-Server 6.Deschiderea unui socket numai pentru ascultare - listen() 7.Stabilirea conexiunii de partea server-ului - accept() 8.Transfer de date prin socket-uri conectate - send() and recv()
Socketurile sunt o facilitate generalizat! a re"elelor introdus! pentru prima dat! n BSD 4.#c $i mai apoi perfec"ionat! n versiunea curent! odat! cu BSD 4.2. Socketurile sunt disponibile n majoritatea versiunilor UNIX n prezent (Interfa"a straturilor de transport (TLI) se g!se$te n alternativa System V). Socketurile permit comunicarea ntre dou! procese diferite de pe aceea$i ma$in! sau de pe ma$ini diferite. Se utilizeaz! n mod implicit protocoalele internet pentru comunicarea ntre ma$ini; alte protocoale cum ar fi DECnet pot fi utilizate acolo unde sunt disponibile. Din punctul de vedere al programatorului, un socket arat! $i se comport! aproximativ ca un descriptor de fi$ier de nivel cobort. Aceasta deoarece comenzi cum ar fi read() $i write() lucreaz! cu socketurile n aceea$i manier! n care lucreaz! cu fi$iere $i pipe-uri. Diferen"ele dintre socketuri $i descriptorii normali de fi$iere apar la crearea unui socket $i la o serie de opera"iuni speciale de control al socketurilor. Aceste opera"iuni sunt diferite ntre socketuri $i descriptori normali de

fi$iere datorit! complexit!"ii suplimentare la stabilirea conexiunilor n re"ea comparativ cu accesul normal la disc. Pentru majoritatea opera"iilor ce utilizeaz! socketuri, rolurile clientului $i serverului trebuiesc atribuite. Un server este un proces care realizeaz! anumite func"ii la cererea unui client. A$a cum se va observa n aceast! discu"ie, rolurile nu sunt simetrice $i nu pot fi inversate f!r! un oarecare efort. Aceast! descriere a utiliz!rii socketurilor parcurge trei stadii: Utilizarea socketurilor intr-un mod neconectat sau mod datagram! ntre procese client $i server aflate pe aceea$i ma$in!. n aceast! situa"ie, clientul nu stabile$te n mod explicit o conexiune cu serverul. Clientul, binen"eles, trebuie s! cunoasc! adresa serverului. Serverul, n schimb, pur $i simplu a$teapt! un mesaj s! apar!. Adresa clientului este unul dintre parametrii cererii de recep"ionare a mesajului $i este utilizat! de c!tre server pentru a r!spunde. Utilizarea socketurilor n mod conectat ntre un client $i un server pe aceea$i ma$in!. n acest caz, rolurile clientului $i serverului sunt mai profund nt!rite n sensul c! socketul este stabilit $i utilizat. Acest model este adesea denumit model client-server orientat pe conexiune. Utilizarea socketurilor ntr-un mod conectat ntre client $i server pe ma$ini diferite. Aceasta este extensia cazului de re"ea descris! n stadiul 2 de mai sus. Modul neconectat sau datagram! ntre client $i server pe ma$ini diferite nu este discutat n mod explicit aici. Utilizarea acestuia poate fi dedus! din prezent!rile f!cute la stadiile # $i 3.

".Crearea unui socket utiliznd socket()


#include <sys/types.h> #include <sys/socket.h> int socket(int af, int type, int protocol)

socket() este foarte asem!n!toare cu socketpair() cu excep"ia faptului c! numai un socket este creat n loc de dou!. Aceasta este cel mai des utilizat! dac! procesul cu care dori"i s! comunica"i nu este un proces fiu. Cmpurile af, type $i protocol sunt utilizate exact ca $i n apelul sistem socketpair() n caz de succes, se returneaz! un descriptor de fi$ier ata$at socketului. n caz de eroare, se returneaz! # iar errno descrie problema. AF_UNIX este utilizat pentru comunica"ii ntre procese aflate pe un singur sistem; AF_INET pentru comunica"ii ntre procese aflate pe aceea$i ma$in! sau pe ma$ini diferite utiliznd protocoalele standard DARPA (IP/UDP/TCP). Tipul socketului se refer! la stilul comunic!rii. Cele mai utilizate dou! valori includ: SOCK_STREAM: un stream dedate f!r! limite ale nregistr!rilor. Livrarea ntr-un mediu de re"ea este garantat!; dac! livrarea este imposibil!, expeditorul prime$te un indicator de eroare. SOCK_DGRAM: un stream de nregistr!ri, fiecare de o dimensiune dat!. Livrarea ntr-un mediu de re"ea nu este garantat!. O valoare 0 a pentru familie $i tip. protocolului este foarte des ntlnit!. Aceasta permite

sistemului s! aleag! primul protocol permis cu perechea de valori specificate

2.Atribuirea unui nume pentru un socket - bind()


#include <sys/types.h> #include <sys/socket.h> int bind(int s, struct sockaddr *name, int namelen)

Utiliznd socketpair(), socketurile pot fi partajate numai ntre procese p!rinte $i fiu sau ntre fii aceluia$i p!rinte. Cu un nume ata$at socketului, orice proces de pe sistem n poate descrie sau utiliza. ntr-un apel la bind(), s este descriptorul de fi$ier pentru socket, ob"inut din apelul la socket() . name este un pointer la o structur! de tip sockaddr. Dac! familia de adrese este AF_UNIX (a$a cum se specific! la crearea socketului) structura este definit! dup! cum urmeaz!:
struct sockaddr { u_short sa_family; char sa_data[14]; };

name.sa_family trebuie s! fie AF_UNIX. name.sa_data trebuie s! con"in! cel mult #4 octe"i dintr-un nume de fi$ier care va fi ata$at socketului. namelen d! lungimea real! a numelui, adic! lungimea con"inutului ini"ializat al structurii de date. n caz de succes se returneaz! valoare 0. n caz de eroare se returneaz! valoarea #, cu descrierea erorii n errno. Exemplu:
struct sockaddr name; int s; name.sa_family = AF_UNIX; strcpy(name.sa_data, "/tmp/sock"); if((s = socket(AF_UNIX, SOCK_STREAM, 0) < 0) { printf("socket create failure %d\n", errno); exit(0); } if (bind(s, &name, strlen(name.sa_data) + sizeof(name.sa_family)) < 0) printf("bind failure %d\n", errno);

3.Specificarea unui socket pe ma#ina de la distan!$ - connect()


#include <sys/types.h> #include <sys/socket.h> int connect(int s, struct sockaddr *name, int namelen)

Apelul bind() permite numai specificarea unei adrese locale. Pentru specificarea cap!tului de la distan"! a unei conexiuni de adrese se va utiliza apelul connect(). n apelul la connect(), s este descriptorul de fi$ier pentru socket. Name este un pointer la o structur! de tip sockaddr:
struct sockaddr { u_short sa_family; char sa_data[14]; };

Ca

$i n cazul apelului sistem bind(), name.sa_family trebuie s! fie

AF_UNIX. name.sa_data trebuie s! con"in! maximum #4 octe"i dintr-un nume de fi$ier care va fi atribuit socketului. namelen d! lungimea real! a numelui. Returnarea valorii 0 indic! succesul, n timp ce o valoare de -# indic! e$ecul, cu descrierea erorii dat! de errno. O mostr! de fragment de cod:
struct sockaddr name; name.sa_family = AF_UNIX; strcpy(name.sa_data, "/tmp/sock"); if (connect(s, &name, strlen(name.sa_data) + sizeof(name.sa_family)) < 0) { printf("connect failure %d\n", errno); }

4.nchiderea unui socket close()


#include <stdio.h> void close(int s).

Apelul I/O close() va nchide descriptorul socketului s exact la fel cum nchide orice descriptor de fi$ier deschis. Exemplu - sendto() $i recvfrom()
/* receiver */ #include <sys/types.h> #include <sys/socket.h> struct sockaddr myname;

struct sockaddr from_name; char buf[80]; main() { int int

sock; fromlen, cnt;

sock = socket(AF_UNIX, SOCK_DGRAM, 0); if (sock < 0) { printf("socket failure %d\n", errno); exit(1); } myname.sa_family = AF_UNIX; strcpy(myname.sa_data, "/tmp/tsck"); if (bind(sock, &myname, strlen(myname.sa_data) + sizeof(name.sa_family)) < 0) { printf("bind failure %d\n", errno); exit(1); } cnt = recvfrom(sock, buf, sizeof(buf), 0, &from_name, &fromlen); if (cnt < 0) { printf("recvfrom failure %d\n", errno); exit(1); } buf[cnt] = '\0'; /* assure null byte */ from_name.sa_data[fromlen] = '\0'; printf("'%s' received from %s\n", buf, from_name.sa_data); }

/* sender */ #include <sys/types.h> #include <sys/socket.h> char buf[80]; struct sockaddr to_name; main() { int

sock;

sock = socket(AF_UNIX, SOCK_DGRAM, 0);

if (sock < 0) { printf("socket failure %d\n", errno); exit(1); } to_name.sa_family = AF_UNIX; strcpy(to_name.sa_data, "/tmp/tsck"); strcpy(buf, "test data line"); cnt = sendto(sock, buf, strlen(buf), 0, &to_name, strlen(to_name.sa_data) + sizeof(to_name.sa_family)); if (cnt < 0) { printf("sendto failure %d\n", errno); exit(1); } }

5.O detaliere: conexiuni Client-Server


Socketurile pot fi utilizate pentru a scrie aplica"ii client-server utiliznd o tehnic! client-server orientat! pe re"ea. Unele caracteristici ale aceste tehnici includ: Serverul poate manipula multiple cereri client pentru conexiuni $i servicii. Serverul r!spunde oric!ror cereri client independent de to"i ceilal"i clien"i Un client $tie cum s! stabileasc! o conexiune cu serverul. Conexiunea client-server, odat! stabilit!, r!mne valid! pn! ce fie clientul fie serverul o ntrerup n mod explicit, cam ca o conexiune telefonic! f!r! probleme. Socketul utilizat pentru aceast! conexiune se nume$te un socket orientat pe conexiune. Tipul socketului este specificat ca SOCK_STREAM. n consecin"!, procesul care prime$te un mesaj prelucreaz! acest mesaj dup! urm!toarele reguli: Datele transmise nu au limite.

To"i octe"ii dintr-un mesaj primit trebuie citi"i nainte de prelucrarea urm!torului mesaj. Octe"ii dintr-un mesaj primit pot fi citi"i ntr-o structur! de control cu program bucl! deoarece nu sunt pierdu"i octe"i de date. Serverul va crea un proces fiu cu ajutorul fork() la stabilirea unei conexiuni client. Acest proces fiu este proiectat s! comunice cu exact un proces client. Procesul fiu server execut! serviciile cerute pentru clientul s!u conectat. Procesul fiu server se termin! cnd serviciul cerut a fost ndeplinit. Func"iile listen() $i accept() permit serverului s! asculte cererile de servicii.. read() $i write() pot fi utilizate de client $i de server pentru a trimite/primi mesaje; send() $i recv() pot fi utilizate de asemenea.

6.Deschiderea unui socket numai pentru ascultare - listen()


#include <sys/types.h> #include <sys/socket.h> int listen(int s, int backlog)

listen stabile$te socket-ul ca un cap!t pasiv a unei conexiuni. Nu suspend! execu"ia procesului. Nu pot fi trimise mesaje prin acest socket. Pot fi recep"ionate mesaje. s este descriptorul de fi$ier asociat socket-ului creat folosind apelul de sistem socket(). backlog este m!rimea cozii de a$teptare a cererilor n timpul n care serverul este ocupat cu o cerere a unui serviciu. Sistemul curent impune maximul la 5. 0 este returnat n caz de succes, -# n caz de eroare $i errno indic! problema. Exemplu:
#include <sys/types.h> #include <sys/socket.h> int sockfd; /* socket file descriptor */

if(listen(sockfd, 5) < 0) printf ("listen error %d\n", errno);

7.Stabilirea conexiunii de partea server-ului - accept()


#include <sys/types.h> #include <sys/socket.h> int accept(int sockfd, struct sockaddr *name, int *namelen)

Apelarea accept() stabile$te o conexiune client-server de partea server-ului. (Cererea clientului se face utiliznd apelul de sistem connect().) Server-ul trebuie s! aibe creat socket-ul folosind socket(), s! aibe dat un nume folosind bind(), $i stabilind coada de ascultare folosind listen(). sockfd este descriptorul de fi$ier al socket-ului returnat la apelul de sistem socket(). name este un pointer la o structur! de tip sockaddr cum este descris mai jos
struct sockaddr { u_short sa_family; char sa_data[14]; };

n cazul ntoarcerii cu succes dup! apelul accept(), aceast! structur! va con"ine adresa de protocol a socket-ului clientului. Zona de date la care indic! namelen trebuie ini"ializat! la lungimea actual! a lui name. n cazul ntoarcerii cu succes dup! apelul accept(), zona de date la care indic! namelen va con"ine lungimea actual! a adresei de protocol a socket-ului clientului. n caz de succes, accept() creeaz! un nou socket cu acelea$i familie, tip, $i protocol ca sockfd. Descriptorul de fi$ier pentru acest nou socket este valoarea returnat! de accept(). Acest nou socket este folosit pentru toate comunica"iile cu clientul. Dac! nu exist! nici o cerere de conectare, accept() se va bloca pn! cnd cererea unui client este pus! n coad!.

accept() va e$ua mai ales dac! sockfd nu este un descriptor de fi$ier sau dac! tipul socket-ului nu este SOCK_STREAM. n acest caz, accept() returneaz! valoarea -# $i errno descrie problema.

8.Transfer de date prin socket-uri conectate - send() and recv()


Dou! apeluri de libr!rie pentru transferul datelor , numite send() $i recv(), sunt disponibile dac! socket-urile sunt conectate. Ele corespund foarte ndeaproape cu func"iile read() and write() folosite pentru I/O la descriptori de fi$iere obi$nui"i.
#include <sys/types.h> #include <sys/socket.h> int send(int sd, char *buf, int len, int flags) int recv(int sd, char * buf, int len, int flags)

n ambele cazuri, sd este descriptorul de socket. Pentru send(), buf indic! spre un tampon ce con"ine datele ce trebuie trimise, len este lungimea datelor $i flags va fi de obicei 0. Valoarea returnat! este num!rul de octe"i trimi$i n caz de succes. Dac! e$ueaz!, -# este returnat $i errno descrie eroarea. Pentru recv(), buf indic! la o zon! de date n care se vor copia datele recep"ionate, len este m!rimea acestor date n octe"i, $i flags este de obicei 0 sau setat la MSG_PEEK dac! datele recep"ionate trebuie re"inute n sistem dup! ce este recep"ionat. Valoarea returnat! este num!rul de octe"i recep"iona"i n caz de succes. Dac! e$ueaz!, -# este returnat $i errno descrie eroarea.

S-ar putea să vă placă și