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 aprut INTERNETUL

Reeaua Internet a aprut la sfritul anilor '60 printr-un efort de conectare a reelei Departamentului Aprrii Statelor Unite (cunoscut sub numele de ARPAnet - Advanced Research Projects Agency) cu alte reele conectate prin dispozitive radio i satelit. ARPAnet a fost o reea experimental proiectat s asigure suportul pentru cercetarea militar - n particular cercetri privind construirea unor reele care puteau rezista cu succes unor ntreruperi pariale. n modelul ARPAnet comunicarea se face ntotdeauna ntre un calculator surs i unul destinaie. Reeaua se presupune a fi nesigur; orice poriune din ea poate dispare n orice moment. Noul tip de reea a fost conceput pentru a cere minimul de informaie de la calculatorul client. Pentru a trimite un mesaj (pachet de informaie) n reea 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 reeaua n ansamblul ei) aveau obligaia s verifice ncheierea comunicaiei. Avantajul era acela c orice calculator putea conversa n condiii egale cu alt calculator din reea. Drumul dintre calculatorul surs i cel destinaie nu trebuie s fie mereu acelai: dac intervine o modificare de structur n cadrul reelei 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 tranzaciile n cadrul acestei reele Pn n jurul anului 1993 s-a maturizat suficient de mult si tehnologia reelelor locale (LAN - Local Area Network). Majoritatea staiilor de lucru rulau Berkeley UNIX care includea software dezvoltat pe baza protocolului IP. A aprut o nou cerin: n locul conectrii unei staii de lucru la serverul unic ce deservea reeaua local se punea acum problema conectrii ntregilor reele la ARPAnet. n acelai timp multe companii si organizaii au nceput sa-i construiasc reele private folosind aceleai protocoale ca i n cazul ARPAnet. Era clar c dac aceste reele ar

putea comunica ntre ele(de pe orice calculator al unei reele de tip LAN se putea comunica cu orice calculator dintr-o alt reea) acest lucru ar nsemna un mare avantaj. Una din cele mai importante reele noi astfel aprute a fost NSFNET, nfiinat de NSF (National Science Foundation), o agenie guvernamental american. Spre sfritul anilor '80 aceast organizaie a creat cinci noduri de comunicare puternice n centrele universitare americane cele mai importante. Problema care aprea acum era datorat costului ridicat al serviciului prin linii telefonice nchiriate pe distane foarte mari. Soluia a constat n nfiinarea unor centre regionale. Astfel aproape fiecare campus universitar a fost conectat la centrul Internet cel mai apropiat. Aceste lanuri 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 informaie, dar lucrul cel mai important era faptul c aceast informaie putea fi accesat foarte uor de pe orice calculator conectat la unul din centrele regionale. Datorit creterii traficului de la an la an ,s-a ajuns la o suprancrcare a acestei reele, astfel nct n anul 1987 s-a impus o mbuntire a liniilor telefonice ,precum i a performanelor tehnice ale serverelor. Pe msur ce performanele au crescut ,cererea de servicii Internet a devenit tot mai mare. Cele mai multe dintre colegiile americane au fost conectate la Internet, impactul educaional fiind imens. Odat depit acest stadiu, atenia s-a ndreptat spre colile elementare i medii americane. Impactul acestei msuri pe scar larg s-a manifestat mai cu seam n domeniul companiilor i firmelor comerciale. Fotii absolveni ai colegiilor americane au convins marile corporaii din toate domeniile de utilitatea conectrii la Internet. Acest fapt a dus la o dezvoltare accelerat a acestei reele. n prezent majoritatea firmelor mici i mijlocii folosesc serviciile Internet pentru rezolvarea problemelor proprii legate de transferul de informaie.

Cine guverneaz reeaua INTERNET Dei cerinele de administrare ale unei astfel de reele sunt uriae, nu exist o autoritate suprem care s o guverneze. Exist n schimb un numr de organizaii constituite pe baz de voluntariat care au ca scop investigarea problemelor ce pot apare i care propun msuri de mbuntire. Internet Architecture Board (IAB) este o astfel de organizaie. Membrii acesteia se ntlnesc regulat pentru a se consulta n privina stabilirii standardelor, a alocrii resurselor, pentru a propune soluii pe termen mediu i lung. Odat un nou standard adoptat, este publicat pe Internet, urmnd ca pe baza acestuia s se construiasc noi aplicaii, scopul fiind acela al unei

compatibiliti ct mai mari ntre arhitecturi, sisteme de operare etc. Dei 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 organizaie numit Internet Engineering Task Force (IETF). Membrii acesteia se ntlnesc periodic pentru a discuta probleme de natur operaional pe termen scurt. Atunci cnd se prezint o problem se formeaz un grup de lucru care cerceteaz exclusiv acea problem i caut soluii ct mai performante. La sfritul unei astfel de cercetri se creeaz un raport. Dac soluia propus este valoroas poate fi trimis la IAB pentru a fi acceptat ca standard

Cine pltete pentru serviciile Internet Contrar ateptrilor, nimeni nu pltete pentru Internet n ansamblul su; nu exist nici o firm care s colecteze plile de la toate reelele Internet sau de la utilizatori. n schimb, toat lumea pltete pentru partea sa de acces. NSF pltete pentru NSFNET, NASA pltete pentru NASA Science Internet. Un colegiu sau o corporaie pltete pentru conectarea sa la o reea regional, care la rndul ei pltete un furnizor naional pentru accesul su la o reea internaional.

Ce nseamn i ce ofer Internetul pentru furnizorul individual

Faptul c Internet nu este o reea de calculatoare, ci o colecie de reele, nseamn foarte puin pentru utilizatorul final al resurselor sale. Pentru a rula un program sau pentru a accesa o anumit colecie de date nu este necesar cunoaterea modului de interaciune a acestor reele. Singura dat cnd acest lucru devine important este momentul cnd apar probleme . Fiecare reea are propriul su centru de operaiuni (NOC - Network Operation Center). Centrele discut ntre ele i tiu cum s-i rezolve problemele. Utilizatorul individual trebuie n acest caz s ia legtura cu furnizorul su de servicii Internet. Accesul Internet nseamn, n ultim instan, posibilitatea accesrii a milioane de servere situate pe tot cuprinsul globului. Astfel utilizatorul poate gsi rspuns la orice ntrebare pe care io pune, poate trimite mesaje n lume aproape instantaneu, poate transfera documente cu informaii din orice domeniu de activitate, poate efectua cumprturi, vizita galerii de art,

conversa on-line cu orice alt utilizator conectat, afl ultimile tiri ale ageniilor de pres sau poate aduce programe soft de pe arhivele publice. Reeaua Internet este adesea numit Autostrad Internaional. Acest concept de infrastructur informaional global sau "Information Superhighway" introdus de ex-vicepreedintele american Al Gore i preluat de Bill Gates are o structur similar Reeaua are posibiliti enorme pentru comunicarea global, rapid i ieftin i poate domina n scurt timp aria educaional. Dar canalele de comunicaii existente (n primul rnd accesul la liniile telefonice) impun restricii. nlocuirea acestora cu canale cu fibr optic i tehnologie digital permit faciliti superioare.

PARTEA 2

PRELIMINARII

Internet

reea de reele comunicarea : !"ntre 2 reele !"ntre 2 calculatoare ale unei reele

Reea format din conectarea fizic a dou sau mai multe calculatoare.

Comunicarea

transmisie de bii 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 acelai timp - full-duplex - pot exista fluxuri de bii n acelai timp ntre cele dou calculatoare

REEA = cabluri + set de protocoale, interfee 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 mulime de drumuri (chiar dac se ntrerupe undeva o legtur, pachetele circul pe toate rutele pn ajunge la B)

Trebuie tiute adresa destinatarului i a expeditorului.

Topologii (de reea) se refer la forma geometric a reelei, mai exact la forma geometric virtual Definiia topologiilor de reea forma geometric de amplasare a calcula-toarelor ntro reea bus(magistral) inel stea arbore

BUS: se folosete un mediu unic de transmisie a datelor

-Se folosete cablu coaxial -Este foarte rspndit Avantaje: datele circul n ambele sensuri Dezavantaje: orice defeciune fizic ntr-un loc oarecare al magistralei atrage dup sine

ntreruperea tuturor comunicaiilor n reea

al reelei)

securitatea datelor este extrem de redus (informaia trece pe la fiecare calculator

Inel (ring) :

calculatoarele sunt legate sub forma unui inel continuu ntr-o topologie inel informaia circul ntr-un singur sens orice defeciune a cablului atrage ntreruperea comunicrii n reea securitatea sczut

Stea :

Informaia circul trecnd printr-un nod central. Avantaje: Defectarea unui cablu nu afecteaz comunicarea n reea Securitatea este bun

Dezavantaje: Costuri ridicate la cderea nodului central

SCOPUL REELELOR

Partajarea resurselor: soft, fiiere, spaiu pe disc, imprimante Fiabilitate mai mare a reelelor Toleranta la defecte Sistemul bancar, reactoare, etc. Economia de bani

Ideea e de a mri puterea de calcul fr a renuna la calculatoarele vechi: mainframe (Felix C256, Felix 512, Felix1024) sau minicalculatoare (Independent I-100, I-102, I-108, Coral, PDP 11) Reeaua ca mediu de comunicare accesul la informaie de la distan, comunicaiile interpersonale, divertismentul interactiv.

PARTEA 3

MODELE DE COMUNICARE

Tipuri de reele : (dup mrime)

LAN (Local Area Network) la nivel de incapere, cladire MAN (Metropolitan Area Network) la nivelul unui ora WAN (World-Wide Area Network) reele larg rspndite (Internetul)

TEHNOLOGII DE TRANSMISIE

Reele cu difuzare (Broadcast) Reele point-to-point

Reele cu difuzare (Broadcast)


au un singur canal de transmisie care este partajat la toate nivelurile din reea; se emite pe canal pentru toate mainile; toate mainile aud dar numai cele

implicate rspund;

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

Reele punct-la-punct

se refer la comunicarea ntre maini, aflate la distan mare, iar comunicarea se

face prin acele conexiuni multiple ntre perechi de maini

ca s ajung de la o main la alta un pachet trece prin mai multe maini

intermediare (n cazul n care nu exist legtur direct)

pachetele sunt ghidate dup nite algoritmi numii algoritmi de rutare

Modul de transmisie poate fi sincron (negociere i transmisie) asemntor telefonului sau asincron mesajele postale.

modul sincron !"presupune existena unui orologiu (ceas) la fiecare main; !"discutm de dou maini care dispun de ceas propriu;
!" ceasurile trebuie s fie reglate la aceeai frecven; A B

ceas

sincron

ceas

modul asincron !"caracterele pot fi emise oricnd, iar intervalul ntre dou caractere transmise poate fi orict de mare; !"biii din fiecare caracter transmis sunt precedai i urmai de ctre un bit special de start i stop !"nu mai depinde de ceasul mainilor

Exist protocoale diferite care realizeaz comunicarea sincron i cea asincron La comunicarea n mod sincron, dup ce are loc o negociere care stabilete canalul de comunicare, comunicarea este extrem de fluid; La comunicarea n mod asincron transmii cnd vrei, dar preul pltit este c nu am o fluiditate a comunicrii 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:

Aceeai limb, acelai alfabet Aceeai limb, alfabete diferite Limbi diferite, acelai 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 atenurii mrete lungimea magistralei n LAN (cablu)

Bridge (punte)

joac rolul agentului de circulaie n termeni de reea, conecteaz dou reele care utilizeaz aceeai tehnologie

(Ethernet)

este n general un calculator, i el realizeaz urmtorul lucru: mpart reeaua n dou grupuri i pun un alt calculator(1) care realizeaz puntea

ntre ele; calculatorul (1) identific un pachet din reeaua a i transmite la reeaua B (micoreaz pachetele ce se plimb ntre cele dou reele) cnd este cazul Avantaj: crete performana, fiabilitatea i securitatea reea; securitatea: trafic de informaii pe reea i accesri autorizate sau nu performana : creterea din cauza eliminrii coliziunilor, ambuteiajelor de pachete fiabilitatea : ruperea la nivelul unui cablu nu afecteaz toate calculatoarele din calculatorul (1) examineaz pachetele din fiecare reea i le transfer doar atunci

Router

Direcioneaz datele ntre dou reele care au tehnologii diferite i protocoale

diferite: Ethernet, Token-Ring (IBM);


este un calculator ceva mai complicat; cunoate adresa tuturor calculatoarelor pe care le vede n reea; dirijeaz pachetele conform unor algoritmi de rutare (reuete s fac traducerea

dintr-un protocol n alt protocol);

orice router poate fi n acelai timp i Bridge;

Gateway(poart)

se refer n fapt la anumite aplicaii care sunt de-a lungul reelei (poart de

aplicaii);

PARADIGMELE COMUNICRII N REEA

modelul client-server

- n reea la nivelul aplicaiilor exist 2 actori importani server si client (noiuni software, extinse la noiuni hardware - serverul st n ateptare de a oferi nite servicii i aceste servicii le ofer doar printr-un anumit port - clientul acceseaz un port i apeleaz serviciul oferit de ctre server

RPC (Remote Procedure Call) apel de procedur la distan

PROTOCOALE I INTERFEE

In proiectarea retelelor de calculatoare aprut o abordare stratificat, fiind dat de complexitatea comunicrii n reea.
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

Traductor

Traductor

Cut.potal

Funcionar potal

Serv. Potale

Servicii potale

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 maini; este o transcriere n program a unor reguli; este un set de reguli care definesc conveniile de comunicare conforme unui nivel

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

ARHITECTUR DE REEA = niveluri + interfee + protocoale

Principiu: La nivelul n al destinatarului se primete exact acelai mesaj ca la nivelul n al emitorului.

In prezent exista doua ierarhii de protocoale:

Modelul ISO/OSI (Open Systems Interconection) o o model al reelei 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 Interfaa:
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 funcionalitatea nivelului n de care depinde nivelul n+1

Protocol i Serviciu corespunztor. serviciul definete funcionalitatea nivelului. fiecare nivel se conformeaz unui set de reguli (protocol) protocoalele definesc serviciile n felul urmtor: dau reguli pe care nivelul trebuie s le urmeze pentru a implementa serviciul

Modelul OSI din punct de vedere al programatorului:

7.nivelul aplicaie 6.nivelul prezentare 5.nivelul sesiune 4.nivelul transport 3.nivelul reea 2.nivelul leg. de date 1.nivelul fizic Host A

protocol de aplicaie protocol de prezentare protocol sesiune protocol de transport protocol de reea protocol leg de date protocol de comunicare efectiv

7.nivelul aplicaie 6.nivelul prezentare 5.nivelul sesiune 4.nivelul transport 3.nivelul reea 2.nivelul leg. de date 1.nivelul fizic Host B

model cu 7 niveluri; reprezint n fapt o reea ideal, un standard pentru o reea ideal; specificaie de proiectare pentru reele; suite de protocoale care implementeaz X.25 (CCITTX.25); protocoalele de la nivelele 2-6 realizeaz o comunicare virtual numele fiecrui nivel identific protocoalele corespunztoare asociate nivelului

respectiv i nivelurile corespondente din hosturile diferite se numesc procese pereche; comunicaia ntre procesele pereche este o comunicare virtual cci de fapt

comunicaia nu are loc dect la nivelul fizic; reelele nu transfer date n mod direct ntre procesele pereche; comunicarea virtual (conversaie virtual) dintre niveluri corespondente

simplific programarea n reea

Conversaia virtual la nivelul n se desfasoara astfel: Cererile de servicii i rspunsurile 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); indicaiile corespund notificrii transmise la un nivel la distan ce urmeaz unei

cereri de serviciu. rspunsurile clasa permite rspunsul la o indicaie. confirmrile permit unui productor de servicii s rspund la cererea unui client.

Clasificarea ne permite s distingem 2 clase de servicii: - serviciile confirmate (se utilizeaz toate cele 4 tipuri de primitive conform urmtoarei scheme)
host A cerere n+1 n transfer rspuns confirmare reeaua host B n n+1 indicaie

Exemplu: Serviciul de stabilire a conexiunii (TCP)

- servicii neconfirmate utilizeaz numai cereri i indicaii.

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

Funcionalitatea (serviciile) nivelurilor este urmatoarea:

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

multiplexri etc. Unitatea de informatie este bitul.

Nivelul 2: permite specificarea modului n care datele traverseaz distana dintre

dou maini. Unitatea cu care se lucreaz se numete cadru (frame). La nivelul 2 exist strategii diferite care fac posibil delimitarea acestor uniti de transmisie. La cadre se mai adaug o informaie suplimentar care ne ajut s detectm 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 conin pe lng datele care se schimb n mod normal un cmp care permite dialogul ntre entitile de date, respectiv de a transporta un cadru. Nivelul 2 lucreaz cu informaii 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 reea. la ocup maina B). de:

Determin ruta (calea) pe care o vor urma datele n drumul lor de la host A la host B (de la maina

o gestionarea datelor n reea o rezolvarea congestiilor o ratele de transfer de-a lungul reelei (viteza)

ntr-o reea cu comutare de pachete cum este Internetul, n fiecare pachet avem adresele destinatar i surs.

Protocoalele nivelului 3 definesc responsabilitile fiecrui element din reea n ceea ce privete rutarea datelor. Se garanteaz c hostul destinatar recepioneaz pachetele n mod corect. n modelul ISO/OSI nivelul reea asigur secvenialitatea pachetelor spre deosebire de TCP/IP unde acest lucru l realizeaz nivelul transport (nivelul 4). De asemeni, se face gestiunea traficului n reea, contorizarea traficului n reea.

Nivelul 4 (nivelul transport): este un mecanism de verificare a comunicrii

destinatar-expeditor, funcia 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 aplicaie): negociaz legtura ntre procese i aplicaii de pe

hosturi diferite gestioneaz entiti ca nume, cantitate, parole, autentificare.

Nivelul 6 (prezentare): este conceput n OSI astfel: unele funcii folosite n

comunicarea n reea sunt des folosite (interfaa cu imprimanta, interfaa cu monitorul); detaliile legate de interfee sunt gestionate la nivelul 6.

Nivelul 7: include programele care utilizeaz reeaua: 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 reelei, 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 numete Tehnologie Internet de fapt se refer la suita de protocoale TCP/IP. Astfel, putem defini Internetul ca fiind orice reea care folosete tehnologia Internet (Internet Technology).

Stiva de protocoale TCP/IP

Suita de protocoale TCP/IP asigur transmisia i gestionarea informaiilor/datelor care se deplaseaz n Internet. Ca programatori de reea trebuie s nelegem funcionarea 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.

aplicaie

aplicaie

F L U X U L D E DA T E

Exist 3 pai importani n transmiterea datelor n Internet:

1.

Transmiterea informaiei de la aplicaie la reea (cu ajutorul stivei de protocoale).

2.

Reeaua

trebuie

determine

unde

trebuie

ajung

datele

(determinnd adresa destinatarului).

3.

Reeaua trebuie s ruteze i s transporte datele la destinatar acolo unde cu

ajutorul stivei de protocoale informaia urc de la nivelul aplicaiei.

n transmiterea fluxului de informaii, informaia are diferite formate: - la nivelul aplicaie stream-uri (mesaje) de date - la nivelul TCP pachete - la nivelul reea cadre (frame-uri)

La nivelul fizic se folosesc cabluri coaxiale sau torsadat, iar la nivelul legtur 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) - funcia

sa este de a transforma adresele de nivel reea n adrese de nivel legtur de date (adica adrese fizice ale placilor de retea); RARP - Reverse Address Resolution Protocol operaia invers ARP

transform adresele de nivel legtur n adrese de nivel reea.

Nivel reea nivel aplicaie

Nivelul IP (nivel internet) se ocup de comunicarea la nivelul mainilor. Rolul lui este de a permite hosturilor s emit pachete n reea i face ca pachetele s circule independent de mainile 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 numete 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 aplicaie Reunete funcionalitile nivelurilor sesiune, prezentare, aplicaie 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

ASEMNRI: 1. 2. 3. transport . Ambele se bazeaz pe stiv de protocoale (independente). Funcionalitatea nivelurilor este oarecum asemntoare. n topul stivelor de protocoale se afl nivelul aplicaie care se bazeaz pe nivelul

Se disting trei concepte importante: serviciu d funcionalitatea fiecrui strat (spune ce face), dar nu spune ce

folosete i cum funcioneaz. interfa spune protocolului aflat deasupra ce parametri trebuie s i dea i ce

rezultat va obine. serviciul). protocol explic regulile dup care se face comunicarea (cum se ndeplinete

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 / Sigurana comunicrii.

X.25 (suita de protocoale corespunztoare lui OSI) face detectarea i tratarea erorilor la fiecare

Nivelul 2: erori de transmisie

proceduri de acoperire se folosete 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, eficiena foarte slab Fiabilitatea n TCP/IP mai mic, eficiena mai bun

3. -

Unde este localizat decizia i controlul OSI controlul i decizia centralizat (rutri, control, de flux i trafic, confirmri de

transmisie) n dispecerat de reea TCP/IP - cere tuturor serverelor s participe aproape la toate operaiile reelei

(detectarea de erori, rutri, controlul fluxului n reea). Astfel reeaua 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 enuna PRINCIPIUL STRATIFICRII (funcioneaz independent de schema de stratificare i de funcionalitatea straturilor):

ENUN: Protocoalele sunt proiectate astfel nct stratul n la destinatar primete 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 comunicaiile interprocese de-a lungul unei reele sunt realizate prin intermediul familiei de protocoale TCP/IP. Dupa cum am vazut si mai sus, familia de protocoale TCP/IP const din urmtoarele protocoale: TCP

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

UDP

User Datagram Protocol comunicaii nesigure n mod neconectat

ICMP

Internet Control Message Protocol folosit pentru tratarea erorilor i controlul informaiilor. Folosete protocolul IP pentru realizarea schimbului de date. n mod normal procele utilizator nu au nevoie s aceseze ICMP, deoarece mesajele acestuia sunt procesate de ctre 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 reelele. Aceste reele sunt uneori Ethernet, uneori reele de tip inel, sau alteori reele telefonice. La nivelul protocolului IP, un router primete 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 numete protocol. Protocolul Internet (IP) trimite mesajele sau verific faptul c routerul tie ce s fac cu datele cnd acestea i sosesc funcionnd 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 pri. Deoarece Internet este o reea de reele, nceputul adresei spune routerului Internet reeaua la care suntem conectai. Sfritul 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 numra limitrile echipamentelor), informaia trimis de-a lungul reelelor IP este "spart" n piese de dimensiuni mai mici, numite pachete. Informaia din interiorul pachetelor are o lungime de regul ntre unul i aproximativ 1500 caractere. Asta pentru a prentmpina ca un utilizator s monopolizeze reeaua, permind tuturor s aib acces la ea. Totodat dac reeaua este suprancrcat, asta nseamn c ea se va comporta ru pentru toi utilizatorii ei: ea nu se oprete pentru unii, n timp ce ali utilizatori mai importani o monopolizeaz.

ARP

Address Resolution Protocol mapeaz adresele Internet n adrese hardware. Numai anumite reele au nevoie de el.

RARP

Reverse Address Resolution Protocol mapeaz adrese hardware n adrese Internet.

Relaiile dintre aceste protocoale sunt ilustrate n figura urmtoare.

Componentele familiei de Protocoale Internet

Ca n cazul oricrui protocol bazat pe mai multe nivele, fiecare nivel ncapsuleaz datele nivelului inferior. Familia de protocoale TCP/IP a fost dezvoltat de ctre 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 reelelor interconectate. Acest obiectiv a fost atins i astzi mii de reele (conectate sau nu la faimosul Internet) folosesc familia de protocoale TCP/IP. n al doilea rnd ei au urmrit urmtoarele obiective: comunicaiile trebuie s continue n ciuda piederii de servicii; suport pentru tipuri multiple de servicii; arhitectura Internet trebuie s se adapteze la o varietate de reele; s permit un management distribuit al resurselor; s fie eficient din punt de vedere al costului; i s permit adugarea de noi hosturi cu minimum de efort. n special un obiectiv, continuarea comunicaiilor n ciuda pierderii de servicii, a jucat un rol major n procesul de proiectare. Pentru a atinge acest obiectiv, informaiile de stare care descriu conversaia n curs trebuie s fie protejate. Aa c aceste informaii sunt obinute la punctele finale de comunicare i nici un packet care traverseaz nodurile reelei nu are nevoie de informaiile de stare. Fiecare host are asignat o adres IP pe 32 de bii. Aceast adres identific reeaua la care este ataat acel host. Detalii despre adresa IP vom afla mai tirziu.

Numere de Port Datagramele IP specific doar host-ul destinaie. Pentru a identifica aplicaia creia i sunt destinate aceste datagrame TCP i UDP folosesc numere de port pe 16 bii. Numerele de port sunt mai flexibile dect id-urile de proces, un proces poate avea, n acelai timp, mai multe conexiuni distincte cu alte procese utiliznd mai multe porturi. De asemeni un port poate fi folosit pentru a recepiona mesaje de la mai multe surse. Serverele ateapt cererile clienilor la porturi binecunoscute. De exemplu, HTTP (HyperText Transfer Protocol) are portul TCP i UDP cu numrul 80. Numerele de port binecunoscute cu numere ntre 1 i 1023 sunt administrate de ctre Internet Assigned Numbers Authority (IANA). Procesele client n mod normal nu trebuie s-i fac griji n privina numrului pe care l vor folosi deoarece pot primi n mod automat un port unic la nivelul hostului pe care ruleaz.

Multiplexare/Demultiplexare

Protocoalele de comunicaie 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 bii suplimentari prin care se specific tipul mesajului, protocolul folosit etc. Calculatorul destinaie folosete aceste informaii n procesul de demultiplexare a mesajelor. Procesul de demultiplexare a mesajelor pentru frame-uri Ethernet este ilustrat mai jos.

Demultiplexarea mesajelor ntr-o reea Ethernet

PROTOCOLUL INTERNET

Internet Protocol (IP) este protocolul de baz pentru TCP i UDP. Comunicaiile IP sunt nesigure, n mod neconectat, i mesajele protocolului IP sunt datagrame. Nesigurana 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 stabilete 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 stabilete 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 numrul 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 destinaie destinaia datagramei IP

PROTOCOLUL U DP

User Datagram Protocol (UDP) vezi si figura de mai jos adaug datagramelor IP informaii suplimentare astfel nct acestea s poat fi folosite de ctre procese; pentru identificarea procesului destinaie se folosesc numrele 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 numrul de bytes al datagramei UDP inclusiv header-ul.

Datagram UDP

UDP este doar o interfa care face datagramele IP folosibile de ctre procese diferite. Deci UDP e la fel de nesigur ca i IP, acest protocol negarantnd c mesajele vor ajunge la destinaie. Mai multe despre specificaiile UDP pot fi gsite n RFC 768.

PROTOCOLUL TCP

Transmission Control Protocol, sau TCP, ofer un flux de date sigur, orientatconexiune, i full-duplex.. Folosete protocolul IP pentru transmiterea datelor. TCP este protocolul, frecvent menionat mpreun cu IP, care este folosit pentru a corecta problemele care pot aprea la transportul datelor. TCP preia informaia pe care vrem s o transmitem i o sparge n buci. El numeroteaz apoi fiecare pies astfel nct cel care primete datele s poat verifica i s le pun napoi n ordinea corect. Pentru a transmite secvena de numere prin reea, el are un plic propriu cu informaiile necesare. Acesta este, la rndul su, pus n interiorul unui plic IP i transmis reelei. Odat pus ntr-un plic IP reeaua poate s l transporte. La recepie, un pachet de programe TCP colecteaz plicurile, extrage datele i le aeaz n ordinea corect. Dac unele plicuri lipsesc, el cere emitorului s le mai transmit odat. Cnd are toat informaia ordonat corect, el trece datele ctre acel program de aplicaii care utilizeaz serviciile sale.

Aceasta este o viziune puin utopic a TCP-ului. n realitate pachetele nu numai c se pierd, dar ele pot fi chiar alterate de ctre 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 numr care permite programului receptor s detecteze erorile din pachet. Cnd pachetul ajunge la destinaie, TCP-ul care face recepia pachetelor, recalculeaz suma de control i o compar cu cea a emitorului. Dac ele nu sunt egale, o eroare a aprut n timpul transmiterii. TCP-ul care recepioneaz va anula pachetul i va cere retransmiterea lui. nainte ca dou aplicaii s transfere date via TCP, ntre acestea trebuie stabilit o conexiune. Deoarece mesajele de control TCP nu sunt vizibile aplicaiilor, acestea folosesc fluxurile de date TCP similar cu apelurile I/O din UNIX. Sigurana fluxului de date TCP e asigurat prin: Datele sunt fragmentate n segmente.

TCP menine un timer pentru fiecare segment trimis. Dac nu primete 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 emitorul neprimind confirmrile 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 resecvenioneaz 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 comunicaie deine o mulime finit de date care sunt expediate pn sunt confirmate de ctre cealalt parte (acest procedeu se numete fereastr glisant).

Headerul TCP

Header-ul TCP, prezentat n figura de mai sus, conine cel puin 20 de octei. Ca i n cazul datagramelor UDP, segmentele TCP conin numerele de port ale proceselor surs i destinaie. mpreun cu adresele IP surs i destinaie acestea identific n mod unic fiecare conexiune. Cmpul numr de secven identific poziia acestei secvene de date n segment. Numr de confirmare coine numrul urmtoarei secvene de date pe care emitorul confirmrii ateapt s o primeasc. Lugime header lungimea header-ului TCP.

Se utilizeaz diferite flaguri (biti) pentru stabilirea conexiunii i controlul informaiilor de stare. Dimensiunea ferestrei glisante indic modulului TCP de la recepie numrul de octei pe care emitorul poate s l accepte. n mod normal, dimensiunea ferestrei glisante este de cteva mii de octei. Suma de control TCP include datele TCP n calcule. TCP cere ca emitorul s calculeze suma de control i s o includ n acest cmp. Modulul de recepie trebuie s verifice sumele de control cnd primete datele. Pointerul de urgen specific poziia unui octet n zona de date TCP.

Scopul su este de a ateniona modulul TCP receptor c exist date urgente i de a indica poziia acestora. Mai multe informaii despre specificaiile TCP pot fi gsite n RFC 793. Pentru a garanta sigurana i secvenialitatea pentru fluxul de octei, TCP folosete confirmri (monitorizate de timere) i sume de control.

IP orientat-conexiune numere de port sume de control confirmri timeout i retransmisii detecia duplicatelor secveniere 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 comparaie 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 maini diferite, coopereaz n realizarea unui anumit task. Schema de comunicare este urmtoare: un proces (numit client) trimite o cerere (cere un serviciu) ctre alte procese (numite servere). Serverele vor transmite un anumit rspuns ctre client. Aceste interaciuni sunt ilustrate n figura urmtoare.

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 rspunsul nu poate fi transmis napoi imediat sau cnd trebuie realizate comunicaii suplimentare cu clientul. De obicei serverele concurente folosesc protocoale de comunicaie orientate conexiune. Ele sunt implementate prin intermediul proceselor (via apelul fork() in sistemele UNIX, in limbajul C standard) sau al firelor de execuie (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 rspunsul este scurt. n mod normal sunt construite cu ajutorul protocoalelor neorientate-conexiune.

Un scenariu de interaciune Client/Server

Un client este o parte a aplicaiei care este rulat de ctre utilizator. Serverele, n mod normal, sunt demoni care sunt lansai n execuie la boot-area sistemului, sau cnd sosete o cerere ctre acel serviciu. Odat lansai n execuie demonii rmn n memorie pn la reboot-area sistemului. Cele mai multe servere petrec majoritatea timpului n ateptarea cererilor pe care sunt capabile s le rezolve. Este posibil ca procesele client i server s ruleze pe acelai computer, dar acest lucru nu este necesar dac cele dou procese folosesc facilitile oferite de reeaua de comunicaie.

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 maini, dar i c oamenii prefer nume. Este dificil discuia 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 uurina folosirii lor, de ctre utilizatorii umani. La nceput, cnd Internetul era o organizaie nu prea dezvoltat, utilizarea numelor era uoar. NIC-ul (Network Informaion Center) inea un registru (un fisier denumit hosts) pe care l actualiza mereu. Se putea trimite un formular, electronic desigur, i NIC l aduga la lista de nume i adrese pe care o ntreinea. Acest fiier numit fiierul de calculatoare gazd, era distribuit regulat ctre fiecare main gazd de pe reea. Numele erau cuvinte simple, fiecare alese pentru a fi unice. Dac cineva utiliza un nume, calculatorul l cuta n fiier i l substituia cu adresa corespunztoare. Din nefericire, cnd Internetul s-a rspndit i a crescut, tot astfel s-a ntmplat i cu acel fiier. Exista o ntrziere semnificativ n obinerea unui nume deja nregistrat i devenise dificil de gsit nume care nu mai fuseser nc folosite. De asemenea, se pierdea prea mult timp n reea pentru a distribui acest fiier mare ctre fiecare main care era cuprins n acesta. Era clar c era nevoie de un sistem distribuit, conectat direct la un sistem central care s influeneze n bine rata de schimb a fiierelor. Acest sistem este numit Sistemul de Numire a Domeniilor sau DNS (Domain Name System). DNS este o metod de administrare a numelor prin trecerea ctre grupuri diferite a responsabilitii 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 ntreinut de ctre grupul cso. Departamentul cso este o parte a Universitii Ilinois din Urbana Champaign (uiuc). Uiuc este o poriune din grupul de instituii de educaie (edu) universitati, institute de cercetare. Deci domeniul edu conine toate calculatoarele din institutele educaionale ale SUA, domeniul uiuc.edu conine toate calculatoarele de la Univ. Ilinois i aa mai departe. Fiecare grup poate crea sau schimba tot ceea ce exist n interiorul su. Dac uiuc decide s creeze un alt grup numit ncsa, el poate face asta fr s cear permisiunea nimnui. Tot ce trebuie s fac este s adauge noile nume n partea sa din baza de date mondial, iar mai devreme sau mai trziu toi cei care au nevoie s afle vor ti de noul nume (nsca.uiuc.edu). Similar, cso poate cumpra un nou calculator, s-i dea un nume i s-l adauge n reea fr s cear permisiunea nimnui. 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 acelai nume. Similar, pentru numele simbolic fenrir.infoiasi.ro. Este uor s ne dm seama de unde vin numele i domeniile dintr-o organizaie 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 numr de ase: Domeniul Com Edu Gov Mil Org Net Utilizare pentru organizaii comerciale (www.amazon.com) organizaii educaionale (www.gmu.edu) organizaii guvernamentale, nemilitare (whitehouse.gov) organizaii militare (navy.mil) alte organizaii (www.w3.org) Resurse pentru reea (internic.net)

Cnd Internet a devenit o reea internaional, 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 folosete 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 posibiliti: Serverul local tie adresa, pentru c adresa este n poriunea din baza de date mondial a acestui server Serverul local tie adresa pentru c altcineva a ntrebat recent de aceeai adres Serverul local nu cunoate adresa, dar tie cum s o afle. Software-ul serverului contacteaz un server rdcin. Acesta este serverul care tie adresele serverelor pentru zona (ro) nivelului cel mai nalt (cel din dreapta). El cere serverului rdcin adresa calculatorului responsabil cu zona infoiasi.ro. Programul contacteaz apoi acel calculator i i cere adresa serverului fenrir. n sfrit, el contacteaz acea main i primete adresa lui fenrir, calculatorul gazd care a fost scopul acestei aplicaii. n concluzie, avantajul real al DNS este c el mparte giganticul Internet ntr-un mnunchi de piese mai uor de stpnit. Dei sunt sute de mii de calculatoare ele au un nume; iar numele sunt organizate ntr-o manier convenabil, fcnd mai uor 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 distana. El ne permite ca de la o tastatur legat la un calculator s ne conectm la un alt calculator aflat la distan. Conectarea se poate face la o main care se afl n aceeai camer, n acelai campus, sau ntr-un col ndeprtat al lumii. Atunci cnd suntem conectai e ca i cum tastatura ar fi legat direct la acel calculator. Putem accesa oricare din serviciile pe care acea main le ofer pentru terminalele ei locale. Putem rula o sesiune interactiv normal (conectarea la sistem, executarea de comenzi) sau putem avea acces la o mulime de servicii speciale: putem citi un catalog al unei biblioteci, s accesm un text dintr-un ziar sau s profitm de multe alte servicii care sunt oferite de diferite sisteme din reea. Dei exist un numr mare de comenzi, avnd un numr 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 iei i din Telnet dac am specificat numele calculatorului direct n comanda telnet. Aceast comand este folositoare dac am intrat intr-o legtur cu un alt calculator i vrem s ieim de acolo. open nume ncearc sa creeze o conexiune cu maina indicat. Este necesar numele sau adresa mainii. Majoritatea programelor Telnet vor cere explicit un nume de main dac acesta nu este specificat. Reinem c trebuie s dm 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 ctre terminalul nostru dup ce le-a recepionat. Acest lucru se numete ecou la distan i este considerat mai sigur pentru c atunci poi ti dac sistemul aflat la distan a recepionat corect ceea ce am tastat. Ecoul local

nseamn c afiarea, pe ecran, a ceea ce tastm, este responsabilitatea calculatorului local. Deoarece ecoul la distant este mai sigur Telnet ncepe cu ecoul local dezactivat. Comanda set echo funcioneaz ca un ntreruptor.

Cum tim cnd trebuie activat sau dezactivat ecoul local? Dac ecoul este dezactivat i el ar trebui s fie activ, caracterele tastate nu vor afiate; 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 tastm de dou ori. n ambele cazuri soluia este aceiai: 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 lucrm n mod normal. Acest lucru poate fi o problem, multe programe atribuie aciuni 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 opiuni rmn neschimbate la revenirea n program.

Transferul fiierelor: ftp


Adeseori, vom gsi informaie pe Internet pe care nu dorim s o examinm de pe un sistem aflat la distan avnd nevoie de o copie. Programul ftp se numete aa dup protocolul de aplicaie pe care l folosete: File Transfer Protocol (FTP). Aa cum spune i numele, sarcina protocolului este s transfere fiiere de la un calculator la altul. Nu conteaz unde sunt situate cele dou calculatoare, cum sunt conectate i nici chiar dac folosesc acelai sistem de operare. Vom prezenta n continuare cele mai folositoare comenzi ftp

ascii Intr n modul ASCII, pentru transferarea fiierelor text. binary Intr n modul binar, pentru transferarea fiierelor binare. cd director_la_distan Schimb directorul de lucru pe maina aflat la distan close Termin sesiunea ftp cu o anumit main 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 iei din ftp. delete nume_fiier terge fiierul numit de pe maina aflat la distan. dir fiier_destinaie Ofer un listing complet al directorului curent de pe maina aflat la distan. Fiier i destinaie sunt ambele opionale. fiier poate fi numele unui singur fiier sau o construcie de metacaractere. Listingul ofer toate numele de fiiere care satisfac specificaia. Dac fiier este omis, listingul d toate fiierele din directorul curent de pe maina aflat la distan. Destinaia specific unde va fi pus rezultatul. Dac destinaie este omis, apare listingul pe ecran. hash Spune ftp-ului s tipreasc un caracter diez (#) de fiecare dat cnd este transferat un bloc de date, semnalndu-ne vizual dac datele au fost transferate. help comand Afieaz o bucat mic din documentaia despre acea comand. lcd director Schimb directorul implicit de pe maina local n directorul numit ls fiier_destinaie

Ofer un listing scurt al directorului de pe maina aflat la distan. Argumentele sunt la fel ca la dir. mget list_fiiere Transfer mai multe fiiere de pe maina accesat mput list_fiiere Pune mai multe fiiere pe maina accesat open nume_main Realizeaz conexiunea cu maina numit. Este folositoare dac vrem s ne conectm la un nou sistem dup ce am transferat fiiere de pe un alt sistem. prompt Cu mget i mput, comanda prompt spune ftp-ului s cear confirmarea naintea transferrii fiecrui fiier. Este folositor dac vrem s fim siguri c nu transferm fiiere de care nu avem nevoie pwd Afieaz numele directorului curent de pe maina accesat. quit nchide conexiunea, dac exist una, i iese din ftp. user nume_utilizator Trimite numele de utilizator ctre maina 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 pot electronic


Preliminarii Este unul din cele mai larg rspndite servicii Internet. Pornind iniial ca un serviciu simplu capabil s mute mesaje text (ir de caractere) de pe un calculator pe altul i s-l adauge la un fiier numit csua potal, e-mail a cunoscut o dezvoltare concomitent cu dezvoltarea reelelor de comunicaie. n general, un mesaj e-mail este un text mpreun cu informaiile referitoare la destinatar, expeditor etc., informaii constituite n aa-numitul header al mesajului. De obicei, header-ul unui mesaj este generat de aplicaia e-mail folosit. Iat n cele ce urmeaz o list a cmpurilor care formeaz header-ul unui mesaj: From - conine adresa de e-mail a "expeditorului"(utilizatorul care trimite mesajul); To - conine adresa e-mail a destinatarului; aceasta trebuie sa fie cunoscut de ctre

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 dorete s primeasc rspunsul la mesajul

respectiv.(este util atunci cnd acesta deine mai multe csue potale i dorete ca rspunsurile 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 cror adrese sunt trecute n Received - fiecare calculator care primete 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 obinuite (Cc). Totui 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 recepionat c aceste copii au fost trimise, aciunile ulterioare care folosesc date din antet, nu i vor include i pe aceti destinatari; Fiierele semntur .signature - sunt o cale de adugare a unor informaii

suplimentare la mesajele trimise. Ele sunt adesea folosite pentru a include informaii 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 deine sau, mai rar, poate fi un alias al utilizatorului, definit pe maina acestuia. ntr-o reea n care conturile utilizator sunt dispuse pe mai multe maini se pot specifica adrese de e-mail care s ascund numele mainii i astfel din exterior s apar adrese cu acelai domeniu pentru toi utilizatorii. Faciliti e-mail generale La primul contact cu sistemul e-mail utilizatorul va compune (Compose) un mesaj. Cmpul To: poate conine 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 conine corpul mesajului original, sau nu. Mesajul original poart numele de quoted text. Returnarea poate fi fcut 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 ali utilizatori (care nu

se aflau n lista destinatarilor mesajului original). Mesajele sunt organizate n colecii numite foldere. Mesajele noi apar colecionate ntr-un folder numit de cele mai multe ori inbox (csu de intrare). Dac sistemul local de e-mail permite stocarea temporar a mesajelor care urmeaz s fie trimise, aceasta poart numele de outbox (csu de ieire). De asemenea, odat un mesaj compus i trimis, o copie a acestuia rmne stocat ntr-un folder numit sent-mail.

Atunci cnd mesajul electronic nu poate fi distribuit, expeditorul primete o notificare n acest sens, care explic i cauzele insuccesului. Exist trei motive obinuite pentru care pota electronic eueaz: Sistemul de pota electronic nu poate gsi maina destinatarului - "Host

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

corect, dar pe maina respectiv nu se afla un utilizator cu numele specificat n mesaj); Programul poate gsi att maina ct i destinatarul, dar nu poate transmite

mesajul. Iat cteva motive posibile: distan; sistemul aflat la distan poate fi "mort" (poate avea de exemplu, reeaua poate avea erori, fcnd imposibil contactul cu maina aflat la

probleme hardware); sistemul aflat la distan poate fi greit configurat.

Ageni de transport pentru pota electronic Cu toate c utilizatorul serviciului e-mail interacioneaz nemijlocit doar cu clientul e-mail (programul care permite n esen trimiterea i primirea mesajelor ), credem c se impun cteva specificaii 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 maini 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 interaciune cu acest protocol const n specificarea numelui server-ului SMTP. Acest nume se obine de la administratorul de sistem. POP (Post Office Protocol) - este un protocol care lucreaz pe principiul unei

csue potale: 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 reea)


Stirile n reea sunt echivalentul Internet al unui grp de discuii. Acestea permit utilizatorului s consulte articole publicate (posted) n Internet, fiind grupate dup tematic. tirile n reea grupeaz discuiile sub un set larg de titluri, numite grupuri de tiri (newsgroups). Un program de citire a news-urilr prezint aceste discuii ntr-o modalitate ordonat. n fiecare grup de tiri exista mai multe discuii despre anumite subiecte, astfel c grupurile sunt organizate ierarhic, avnd numele celui mai larg grup la nceput, urmat de un numr arbitrar de subgrupuri. Numele fiecrui subgrup este separat de grupul printe 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 reea 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 legtur cu acest domeniu.

Include informatica pur, surse de programe, informaii despre sisteme software i hardware, ca i subiecte de interes general. 2. subgrupuri news - grupuri interesate de reeaua de tiri i de programe de tiri. Include importante ca news.newuser.questions (ntrebri de la utilizatori noi) i

news.announce.newusers (informaii importante pentru noii utilizatori). 3. 4. 5. rec - aici se discut despre hobby-uri, activiti recreaionale i despre art. sci - aici se discut despre cercetri i programe tiinifice. soc - grupuri care pun n discuie probleme sociale.

6.

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

Discuiile tind s devin ntortocheate i fr 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 dorete, corespunztor intereselor utilizatorilor locali. Grupurile locale pot deveni cu timpul grupuri globale cu acceptul larg al utilizatorilor. Astfel au aprut 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 - discuii tehnice, recreaionale i sociale n limba german. hepnet - discuii de interes n principal pentru comunitatea celor interesai de bionet - grupuri interesate de biologie; biz - discuii referitoare la afaceri. Aceast ierarhie de grup de tiri permite

trimiterea de reclame i materiale de prospectare a pieei; astfel de activiti nu sunt permise n

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

speciale pentru a afia 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/rfc791.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/rfc1057.html * * - Requests For Comments (RFCs): ftp://ftp.internic.net/rfc/

ANEXA - Interfaa socket


1.Crearea unui socket utiliznd socket() 2.Atribuirea unui nume pentru un socket - bind() 3.Specificarea unui socket pe maina 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 reelelor introdus pentru prima dat n BSD 4.1c i mai apoi perfecionat n versiunea curent odat cu BSD 4.2. Socketurile sunt disponibile n majoritatea versiunilor UNIX n prezent (Interfaa straturilor de transport (TLI) se gsete n alternativa System V). Socketurile permit comunicarea ntre dou procese diferite de pe aceeai main sau de pe maini diferite. Se utilizeaz n mod implicit protocoalele internet pentru comunicarea ntre maini; 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 fiier de nivel cobort. Aceasta deoarece comenzi cum ar fi read() i write() lucreaz cu socketurile n aceeai manier n care lucreaz cu fiiere i pipe-uri. Diferenele dintre socketuri i descriptorii normali de fiiere apar la crearea unui socket i la o serie de operaiuni speciale de control al socketurilor. Aceste operaiuni sunt diferite ntre socketuri i descriptori normali de

fiiere datorit complexitii suplimentare la stabilirea conexiunilor n reea comparativ cu accesul normal la disc. Pentru majoritatea operaiilor ce utilizeaz socketuri, rolurile clientului i serverului trebuiesc atribuite. Un server este un proces care realizeaz anumite funcii la cererea unui client. Aa cum se va observa n aceast discuie, rolurile nu sunt simetrice i nu pot fi inversate fr un oarecare efort. Aceast descriere a utilizrii socketurilor parcurge trei stadii: Utilizarea socketurilor intr-un mod neconectat sau mod datagram ntre procese client i server aflate pe aceeai main. n aceast situaie, clientul nu stabilete n mod explicit o conexiune cu serverul. Clientul, bineneles, trebuie s cunoasc adresa serverului. Serverul, n schimb, pur i simplu ateapt un mesaj s apar. Adresa clientului este unul dintre parametrii cererii de recepionare a mesajului i este utilizat de ctre server pentru a rspunde. Utilizarea socketurilor n mod conectat ntre un client i un server pe aceeai main. n acest caz, rolurile clientului i serverului sunt mai profund ntrite 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 maini diferite. Aceasta este extensia cazului de reea descris n stadiul 2 de mai sus. Modul neconectat sau datagram ntre client i server pe maini diferite nu este discutat n mod explicit aici. Utilizarea acestuia poate fi dedus din prezentrile fcute la stadiile 1 i 3.

1.Crearea unui socket utiliznd socket()


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

socket() este foarte asemntoare cu socketpair() cu excepia faptului c numai un socket este creat n loc de dou. Aceasta este cel mai des utilizat dac procesul cu care dorii s comunicai 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 fiier ataat socketului. n caz de eroare, se returneaz 1 iar errno descrie problema. AF_UNIX este utilizat pentru comunicaii ntre procese aflate pe un singur sistem; AF_INET pentru comunicaii ntre procese aflate pe aceeai main sau pe maini diferite utiliznd protocoalele standard DARPA (IP/UDP/TCP). Tipul socketului se refer la stilul comunicrii. Cele mai utilizate dou valori includ: SOCK_STREAM: un stream dedate fr limite ale nregistrrilor. Livrarea ntr-un mediu de reea este garantat; dac livrarea este imposibil, expeditorul primete un indicator de eroare. SOCK_DGRAM: un stream de nregistrri, fiecare de o dimensiune dat. Livrarea ntr-un mediu de reea 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 printe i fiu sau ntre fii aceluiai printe. Cu un nume ataat socketului, orice proces de pe sistem n poate descrie sau utiliza. ntr-un apel la bind(), s este descriptorul de fiier pentru socket, obinut din apelul la socket() . name este un pointer la o structur de tip sockaddr. Dac familia de adrese este AF_UNIX (aa 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 conin cel mult 14 octei dintr-un nume de fiier care va fi ataat socketului. namelen d lungimea real a numelui, adic lungimea coninutului iniializat al structurii de date. n caz de succes se returneaz valoare 0. n caz de eroare se returneaz valoarea 1, 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 maina 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 captului de la distan a unei conexiuni de adrese se va utiliza apelul connect(). n apelul la connect(), s este descriptorul de fiier 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 conin maximum 14 octei dintr-un nume de fiier care va fi atribuit socketului. namelen d lungimea real a numelui. Returnarea valorii 0 indic succesul, n timp ce o valoare de -1 indic eecul, 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 fiier 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 aplicaii client-server utiliznd o tehnic client-server orientat pe reea. Unele caracteristici ale aceste tehnici includ: Serverul poate manipula multiple cereri client pentru conexiuni i servicii. Serverul rspunde oricror cereri client independent de toi ceilali clieni Un client tie cum s stabileasc o conexiune cu serverul. Conexiunea client-server, odat stabilit, rmne valid pn ce fie clientul fie serverul o ntrerup n mod explicit, cam ca o conexiune telefonic fr probleme. Socketul utilizat pentru aceast conexiune se numete un socket orientat pe conexiune. Tipul socketului este specificat ca SOCK_STREAM. n consecin, procesul care primete un mesaj prelucreaz acest mesaj dup urmtoarele reguli: Datele transmise nu au limite.

Toi octeii dintr-un mesaj primit trebuie citii nainte de prelucrarea urmtorului mesaj. Octeii dintr-un mesaj primit pot fi citii ntr-o structur de control cu program bucl deoarece nu sunt pierdui octei 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 su conectat. Procesul fiu server se termin cnd serviciul cerut a fost ndeplinit. Funciile 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 stabilete socket-ul ca un capt pasiv a unei conexiuni. Nu suspend execuia procesului. Nu pot fi trimise mesaje prin acest socket. Pot fi recepionate mesaje. s este descriptorul de fiier asociat socket-ului creat folosind apelul de sistem socket(). backlog este mrimea cozii de ateptare 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, -1 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() stabilete 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 fiier 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 conine adresa de protocol a socket-ului clientului. Zona de date la care indic namelen trebuie iniializat la lungimea actual a lui name. n cazul ntoarcerii cu succes dup apelul accept(), zona de date la care indic namelen va conine lungimea actual a adresei de protocol a socket-ului clientului. n caz de succes, accept() creeaz un nou socket cu aceleai familie, tip, i protocol ca sockfd. Descriptorul de fiier pentru acest nou socket este valoarea returnat de accept(). Acest nou socket este folosit pentru toate comunicaiile 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 eua mai ales dac sockfd nu este un descriptor de fiier sau dac tipul socket-ului nu este SOCK_STREAM. n acest caz, accept() returneaz valoarea -1 i errno descrie problema.

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


Dou apeluri de librrie pentru transferul datelor , numite send() i recv(), sunt disponibile dac socket-urile sunt conectate. Ele corespund foarte ndeaproape cu funciile read() and write() folosite pentru I/O la descriptori de fiiere obinuii.
#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 conine datele ce trebuie trimise, len este lungimea datelor i flags va fi de obicei 0. Valoarea returnat este numrul de octei trimii n caz de succes. Dac eueaz, -1 este returnat i errno descrie eroarea. Pentru recv(), buf indic la o zon de date n care se vor copia datele recepionate, len este mrimea acestor date n octei, i flags este de obicei 0 sau setat la MSG_PEEK dac datele recepionate trebuie reinute n sistem dup ce este recepionat. Valoarea returnat este numrul de octei recepionai n caz de succes. Dac eueaz, -1 este returnat i errno descrie eroarea.

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