Transferul Datelor pe Internet Securitatea Retelelor

Capitolul I

1. Retele de calculatoare

1.1 Introducere

Istoria relativ scurta a tehnicii de calcul a inceput in ultima perioada sa se aglomereze cu noi si noi denumiri, sisteme, protocoale, etc. Daca in urma cu doar citiva ani, performantele unor procesoare precum 486 si mai nou, Pentium sau Pentium Pro ( ca sa ne referim doar la lumea calculatoarelor “personale” ), cit si a sistemelor ce le inglobeaza pareau destul de indepartate ca realizare, acum aceste denumiri au devenit standardul de comparatie, iar sistemele bazate pe procesoare 486 vor intra foarte curind chiar in istorie.

Odata cu aceasta dezvoltare aproape miraculoasa a performantelor hardware se impunea o cursa similar de acerba si pe planul aplicatiilor in lumea producatorilor de soft. Noi sisteme de operare, care sa permita intrebuintarea cit mai aproape de maxim a capacitatilor hardware, aplicatii de prelucrari de date care sa beneficieze de vitezele sporite de calcul ale sistemelor intrebuintate, etc.

Cu toate acestea, dar nu in discrepanta cu cele afirmate mai sus, utilizarea acestor sisteme intr – un cadru “organizat”, mai mult decit ca sisteme de sine statatoare ( stand alone ) a cistigat un loc din ce in ce mai important in piata tehnicii de calcul. Acest cadru organizat la care facem referire este reteaua de calculatoare.

Ce este o retea de calculatoare ?

Care este structura unui astfel de sistem ?

Care sint componentele sistemului ?

Cum se realizeaza o retea de calculatoare ( hardware & software ) ?

Ce sisteme de operare pot rula intr – o retea ?

Ce aplicatii se pot realiza intr – un astfel de cadru ?

Acestea si multe inca alte intrebari vor fi clarificate in cadrul lucrarilor ce urmeaza.

In ciuda faptului ca un sistem stand alone, ca urmare a avansului tehnologic a devenit foarte performant, nevoile utilizatorilor tehnicii de calcul nu se rezuma la aceasta. Istoria conceperii si dezvoltarii retelelor de calculatoare porneste insa din perioada in care performantele acestor sisteme nu satisfaceau pe deplin cerintele utilizatorilor sau raportul performanta / pret nu era atit de scazut ( sau cel putin la un nivel acceptabil ). Primii utilizatori care s – au lovit de limitarile folosirii unui parc ( care putea sa fie destul de extins ) de tehnica de calcul au fost institutiile care au inceput sa lucreze computerizat.

“Necazurile” au inceput de la problemele legate de capacitatile de stocare reduse, de la capbilitatile de imprimare a datelor la fel de reduse, preturile exorbitante ale perifericelor. Astfel, ca un inceput de drum, au aparut comutatoarele de date.

Fig. 1: Cuplarea unei imprimante printr-un comutator de date la mai multi utilizatori. Principiul deservirii era primul venit – primul servit.

Aceste dispozitive, desi rezolvau problema utilizarii imprimantelor si a plotterelor, nu rezolvau nici pe departe problema spatiului de stocare a datelor – discurile ( HDD ). In plus se folosea o legatura dedicata intre computerele utilizatoare si comutator.

Analizindu – se cu seriozitate aceste necazuri, s – a reusit construirea primei “retele” de calculatoare. Aceasta se baza pe existenta unui computer dedicat ( disc – server ), conectat printr – o metoda oarecare ( cablu ) de alte computere ( clienti ), rulind un sistem de operare special ( Network Operating System – NOS ) care permitea accesul clientilor la discurile sale si la imprimanta / plotterul asociat lui.

Fig. 2: Structura unui sistem Disc Server.

Deficientele acestui sistem s – au relevat insa la scurt timp. In principal ele proveneau din doua directii si anume:

comenzile de preluare / scriere de date pe disc – server erau la latitudine clientilor, care se ocupau in plus de toate detaliile transferurilor. Se ridica astfel si problema securizarii accesului !

“dimiensiunea” relativ mica a “retelei” ce putea fi construita astfel si modalitatea greoaie, pe alocuri imposibila, de a mari performantele aparente ale computerelor componente.

Novell ofera in 1985 prima solutie – alternetiva la acest tip de retea. Rezolvarea consta in utilizarea unui computer dedicat, de inalta performanta la vremea aceea ( procesor Motorola initial, apoi 80286 Intel ), ce rula un sistem de operare de asemenea nou, NetWare. Accesul la fisierele de pe FileServer se realiza cu controlul acestuia, fiind rezolvate in primul rind problemele de securitate, apoi cele legate de siguranta datelor, prin restrictionarea accesului la anumite zone de disc, si nu in ultimul rind, partajarea mult mai simpla a fisierelor, datorita controlului executat de server.

1.2 Definitii si Clasificari

O retea de calculatoare este un ansamblu de calculatoare de diferite tipuri interconectate intre ele prin intermediul unor medii de comunicatie (linie telefonica ,cablu coaxial,fibre optice). O retea este componenta principala a Internet-ului (sau a oricarei inter-retele).In forma sa de baza, o retea de calculatoare este reprezentata de doua calculatoare care comunica intre ele. Desgur,majoritatea retelelor au mai mult de doua componente;totusi,principiile de comunicatie in retea sunt aceleasi pentru doua ,trei sau o mie de calculatoare

Simplificand putin definitia, putem privi reteaua ca fiind un grup de noduri interconectate, un nod putand sa contina:

calculator gazda sau host

terminal video

controler de comunicatie

echipament periferic

Folosirea unei retele determina urmatoarele avantaje:

Impartirea resurselor – toate programele, datele si echipamentele sunt disponibile pentru orice utilizator al retelei, indiferent de localizarea fizica a resursei sau a utilizatorului;

Fiabilitate sporita- prin accesul la mai multe echipamente de stocare alternative (fisierele pot fi stocate de doua-trei echipamente, asigurand accesul la date chiar daca unul dintre echipamente se defecteaza);

Extensibilitate -reteaua se poate extinde usor prin conectarea altor echipamente, iar realizarea unui up-grade intr-o zona a retelei nu influenteaza negativ schimbul de date in celelalte zone;

Economie financiara- o retea de calculatoare este mult mai fiabila si mai ieftina decat un supercalculator;

Mediu puternic de comunicatie :

Posta electronica (e-mail)

Videoconferinte

Divertisment interactiv

Clasificarea retelelor trebuie sa ia in considerare doua aspecte foarte importante: tehnologia de transmisie si scara la care opereaza reteaua.
Din punct de vedere al tehnologiei de transmisie, retelele sunt de doua feluri:
1. Retele cu difuzare

Un singur canal de comunicatie este partajat de toate masinile din retea

Comunicatia se realizeaza prin intermediul unor mesaje scurte, numite pachete, care au in structura lor, printre altele, un camp pentru desemnarea expeditorului si unul pentru desemnarea destinatarului

Se pot trimite pachete catre toate masinile din retea, acest mod de operare numindu-se difuzare

2. Retele punct-la-punct

Dispun de numeroase conexiuni intre perechile de masini individuale ce formeaza reteaua

Pentru a ajunge la destinatie, un pachet de date trebuie sa treaca prin mai multe masini intermediare, fiind nevoie de algoritmi pentru dirijarea pachetelor pe un drum optim

Este un model folosit pentru retelele mari, in timp ce difuzarea se foloseste pentru retelele mici

Dupa marimea retelei, distingem trei tipuri:

Retele locale (LAN- Local Area Network)- retele localizate intr-o singura cladire sau intr-un campus de cel mult cativa kilometri; conectarea se face de obicei cu ajutorul unui singur cablu, la care sunt legate toate masinile

Retele metropolitane (MAN)-retele care se pot intinde intr-o zona de pe suprafata unui intreg oras. Pentru conectare se folosesc doua cabluri unidirectionale la care sunt conectate toate calculatoarele, fiecare cablu avand un capat de distributie (dispozitiv care initiaza activitatea de transmisie)

Retele larg raspandite geografic (WAN- Wide Area Networks)- retele care ocupa arii geografice intinse, ajungand la dimensiunea unei tari sau a unui intreg continent;

1.3 Arhitectura si Topologii

Arhitectura = sistematizarea, interconectarea aranjamentul unui set complex de componente.

Un produs finit complex, ce consta din interconectarea mai multor componente necesita in vederea realizarii urmarirea unei schite, a unui proiect. Arhitectura ne dezvaluie modul in care trebuiesc conectate aceste componente astfel incit, la final, acestea sa “coopereze” intre ele si sa realizeze produsul functional dorit.Arhitecturile bine definite si care si – au dovedit valabilitatea in utilizare au devenit standarde.

In cazul retelelor, unul dintre cele mai viabile si recunoscute standarde este modelul ISO OSI ( International Standard Organization Open System Interconection ). Totusi el nu este respectat de toti producatorii, in special datorita faptului ca uneori nu satisface toate cerintele. Standardul arata doar ce trebuie facut, nu si cum trebuie indeplinit, aceasta raminind la alegerea producatorului, aceasta permitind si dezvoltarea de diferite tipuri de produse “respectind” acelasi standard.

Topologie = modul in care cablul va interconecta calculatoarele in retea. Ea este determinata de particularitatile geografice ale instalarii retelei, de optiunea privind modalitatea de acces in retea al unui computer sau de modul in care datele sint comunicate dintr – un punct al retelei in altul.

Sint utilizate trei topologii de baza, din care deriva alte multe organizari.

Topologia magistrala ( BUS ): calculatoarele sint conectate la un cablu ca trece “liniar” pe la toate, destinatarul unui pachet de date preluindu – le daca se regaseste in adresa asignata acestuia. Avantajele sint reprezentate de usurinta realizarii, fiabilitate, o relativa “simplitate”. Dezavantajel este reprezentat de utilizarea aceluiasi cablu pentru toate statiile si deci timp relativ indelungat ( posibil ) pina la obtinerea accesului la linie ).

Topologia inel ( RING ): dupa denumirea sugestiva, computerele sint organizate intr – un inel realizat de cablul care le conecteaza. Mesajele trec de la expeditor prin toate celelalte computere pina la destinatie. Dezavantaj: defectarea unei portiuni de cablu determina nefunctionarea intregii retele.

Topologia stea ( STAR ): este vorba de utilizarea unui calculator central care va directiona mesajele in functie de destinatia lor catre celelalte computere situate in virfurile unei stele. Dezavantaj: folosirea unei cantitati mari de cablu, incarcarea calculatorului central ( din punct de vederea al legaturilor ). Avantaje: viteze mari de lucru, fiabilitate ( defectarea unui cablu scaote din calcul doar computerul de pe acea legatura ).

Diverse si multe alte tipuri de topologii deriva din aceste trei topologii de baza.

Fig. 3: Topologia BUS.

Fig. 4:

Topologia Token

Ring.

.

Fig. 5: Topologia stea.

1.4 Ce reprezinta o Inter-Retea

Cand conectati doua sau mai multe calculatoare pentru ca acestea sa poata comunica, alcatuiti o retea.Puteti conecta doua sau mai multe retele pentru a forma o inter-retea ( sau internet adica prescurtare de la Inter Network

O inter-retea permite schimbul de date intre diferite retele de calculatoare. Cu alte cuvinte,puteti interconecta diverse tipuri de retele, cum ar fi retele de PC-uri sau bazate pe UNIX, pentru a schimba date sau a utiliza resurse comune.

Internetul este o retea de retele de calculatoare care cuprinde tot globul.In calitate de cea mai mare si cea mai cunoscuta inter-retea din lume,Internetul leaga peste 10 milioane de calculatoare din 150 de tari. Inter-reteaua cuprinde milioane de calculatoare de diverse tipuri, care utilizeaza o mare varietate de tipuri de software de retea.Din fericire, software-ul Internet ascunde cea mai mare parte din aceste diferente atunci cand utilizati sau programati Web-ul.

and utilizati sau programati Web-ul.

Desi Internetul a aparut la sfirsitul anilor '60, Web-ul nu a fost creat pana in martie 1989.Tim Berners-Lee, creatorul Web-ului, pe cand lucra la Consiliul European pentru Cercetare Nucleara (CERN), Laboratorul european pentru fizica particulelor de la Geneva, a fost nevoit sa gaseasca o cale de a transmite informatii catre cercetatorii din domeniul fizicii energiilor inalte aflati in diverse zone geografice.In acest scop, el a propus un "sistem hipertext" de comunicatie intre calculatoare. Sistemul propus urma sa lege documentele prin intermediul unei retele de calculatoare, pentru utilizarea in comun a rezultatelor stiintifice.(Aceasta retea poate fi comparata cu pinza unui paianjen care conecteaza sau leaga documentele prin firele sale).

1.5 Relatia Web-ului cu Internetul

Ani de zile,utilizatorii au stocat documente in fisiere aflate pe sisteme raspindite in intreg Internetul.Pentru accesul la aceste fisiere, utilizatorii folosesc un program special numit FTP (File Transfer Protocol-protocol pentru transfer de fisiere). Lucrind cu FTP-ul, utilizatorii pot transfera in mod rapid fisiere de la un sistem la altul. Din nefericire, pe masura ce creste numarul de fisiere, creste si gradul de dificultate al localizarii fisierelor necesare.Pe scurt, FTP nu a fost un program pentru utilizatorii obisnuiti. Ca urmare, Internetul contine milioane de documente despre care majoritatea utilizatorilor nu stiu nimic.Prin legarea documentelor, Web-ul faciliteaza localizarea acestora, precum si comutarea de la un document la altul.

Web-ul este asezat la nivelul superior al Internet-ului.Cu alte cuvinte, Web-ul utilizaeaza Internetul ca baza de comunicatie.Atunci cand utilizati un browser pentru vizualizarea documentelor Web,datele pe care le vedeti sunt transmise prin Internet. Deci Internet-ul este mecanismul de transport care permite browserului sa transmita si sa receptioneze date. Diferenta esentiala dintre Web si Internet este ca Web-ul va permite sa gasiti drumul printr-un numar aproape infinit de documente legate. Daca veti incerca sa localizati documente fara ajutorul Web-ului, utilizind numai instrumentele din Internet, veti avea nevoie de un index principal al informatiilor din Internet. Dar un astfel de index nu este realizabil deoarece lista ar trebui actualizata in mod continuu,pe masura ce utilizatorii adauga sau sterg documente.

1.6 Ce reprezinta o Intra-Retea

Dupa cum stiti "Internet" a fost cuvantul la moda al primei jumatati a anilor '90. Dezvoltarea exploziva a Internet-ului a oferit milioanelor de utilizatori o colectie nelimitata de informatii si resurse. Acum, afaceri, spectacole TV, filme, si diverse formatii sportive va ofera adresele lor din Web.Internet-ul este realmente omniprezent.

Ultima jumatate a anilor '90 va lansa un nou cuvant la moda, similar celuilat, si anume "intranet".Pe scurt, un intranet permite companiilor sa foloseasca instrumentele Internet cum ar fi posta electronica, navigatia in Web sau transferul de fisiere, in cadrul retelei private a unei companii. De exemplu, o companie poate utiliza site-uri Web proprii pentru afisarea documentelor specifice companiei (cum ar fi programarea productiei sau cartoteci de personal).In mod similar, angajatii pot schimba informatii utilizand programe Java. Cu alte cuvinte , in cadrul unui Intranet, utilizatorii lucreaza cu aceleasi instrumente ca in Internet. Diferenta intre un Intranet si Internet este va Intranet-urile se limiteaza la o companie si sunt private. Pe masura ce numarul Intranet-urilor creste (si acestea se dezvolta intr-un ritm rapid), va creste si numarul solicitarilor de programatori pentru Internet si Web care pot furniza solutii pentru retele intranet.

1.7 Selectarea unui furnizor de servicii

Conectarea calculatorului la Internet se face printr-o placa de retea sau printr-un modem.Pentru aceasta este nevoie de un furnizor de servicii Internet,care este o societate care are unul sau mai multe calculatoare conectate la Internet. Dupa conectarea la calculatorul furnizorului, programul browser va va permite accesul la Web.

De obicei, furnizorul de servicii Internet solicita o taxa lunara pentru furnizarea accesului la Internet.Furnizorul va poate cere si o taxa initiala de instalare si poate limita timpul de conectare lunar. Cautati un furnizor de servicii care ofera conexiuni SLIP sau PPP (PPP este mai rapida si ofera performante mai bune).Veti avea nevoie deo conexiune SLIP sau PPP pentru accesul la Internet din Windows.Intreabti furnizorul daca sunt disponibile conexiuni ISDN (Integrated Services Digital Network- retea digitala cu servicii integrate) in zona si care este pretul.Conexiunile ISDN sunt disponibile de la 56 Kbs la peste 1Mb si ofera cele mai bune performante, in sensul accesul cel mai rapid si al legaturilor de cea mai buna calitate.

In afara folosirii unui furnizor de servicii Internet, exista inca doua cai de conectare la Internet:

a) Un serviciu on-line

Serviciile comerciale on-line, cum ar fi CompuServe, Prodigy Si Amercia Online, va pemite sa va conectati la Internet si furnizeaza acces limitat la Web.Totusi aceste servicii on-line nu va pot oferi o conexiune SLIP (Protocol Internet pe Linie Seriala) sau PPP(Protocol Punct la Punct).In plus, transmisia si regasirea informatiilor printr-un serviciu on-line sunt in general mai lente decit in cazul utilizarii unui furnizor de servicii Internet. Mai mult, serviciile on-line pot utiliza seturi de reguli diferite de comunicatie(protocoale) pentru transportul datelor pe Internet si Web, pe cand furnizorii de servicii utilizeaza protocoale standard.

b) Un cont shell

Daca sunteti elev sau student la un colegiu sau la un institut de invatamant superior, puteti avea acces pe linie comutata la un calculator conectat la Internet.In aces caz, dupa ce v-ati conectat la calculator, trebuie

sa aveti acces la un cont shell.Aceasta va permite sa utilizati resurse furnizate de alt calculator pentru conectarea calculatorului dumneavoastra la Internet. Utilizati un calculator un calculator care este atasat la Internet, dar calculatorul dumneavoastra nu este legat. Cu alte cuvinte, acesta este un simplu dispozitiv de intrare/iesire (un terminal). De asemenea, un cont shell nu pemite flexibilitatea software necesara pentru dezvoltare de programe Web.

1.8 Placi de retea

Un computer stand alone se transforma intr – o statie de retea prin introducerea unei placi de retea si intalarea driverelor respective. Aceasta placa de retea se va “ocupa” in principiu de rezolvarea nivelelor 1 – 2 ( totusi depinzind foarte mult de complexitatea placii, deci de nivelul de integrare folosit ).

Fig. 6: Placa de retea.

Placile de retea sint realizate de o diversitate mare de producatori. Ele trebuie sa respecte standardele mentionate – pentru conectarea la retea – plus altele referitoare la tipul de magistrala ( ISA, EISA, PCI, VLBUS, etc. ). Ele pot permite sau nu accesul direct la memorie pentru transferul datelor, fara a mai apela la procesor. Dispunind de o astfel de optiune, trebuie stabilit canalul DMA la care va avea acces placa de retea.

Procesul de bootare a computerului se poate realiza de asemenea prin intermediul placii de retea, situatie necesara in cazul in care statia respectiva nu poseda hard disc si nu se doreste utilizarea unei diskete de boot la fiecare pornire a sistemului. Aceasta se poate realiza daca placa dispune de un soclu pentru instalarea unui BOOT ROM care contine datele si rutinele de initializare a operatiei, in functie de sistemul de operare in retea si configuratia sistemului.

Pentru accesul la procesor ( semnalizari, cereri de comunicatie ) se asigneaza placii de retea o anumita intrerupere prin intermediul careia se poate initializa o comunicatie cu procesorul sistemului. O asignare gresita a acestei intreruperi poate duce la conflicte pe magistrala sistemului ( mai multe placi semnalizind pe aceiasi IRQ ).

De asemenea este necesara stabilirea adresei de port prin intermediul caruia placa va efectua transferul de date ( bidirectional ). Aceasta nu trebiuie confundata cu adresa de apel a placii, asigurata de catre producator – adresa MAC.

In cazul placilor de retea mai vechi se poate seta si tipul cablului folosit la conectare.

Toate aceste setari ale placii pot fi realizate prin doua procedee:

hardware, si atunci placa este prevazuta cu switch – uri sau jumpere ( calareti ), care, aranjati intr-o anumita configuratie stabilesc datele referitoare la modul de lucru al placii

software, si atuci placa trebuie sa fie insotita de diskete continind programe de configurare a setarilor mentionate.

In ultima perioada produsele prezinta atit una cit si cealalta dintre posibilitati, tendinta fiind spre producerea de placi cu setare soft.

In continuare vom incerca sa studiem mai amanuntit tehnologia EtherNet, cel mai raspindit sistem de retea de astazi.

EtherNet este definit de standardul IEEE 802.3. La baza are definitiile si realizarile firmei XEROX.

Se pot folosi doua tipuri de cablu coaxial, gros sau subtire, pentru cel gros necesitindu-se si folosirea ubui transceiver, sau cablu torsadat. Retelele de tip EtherNet folosesc topologia BUS. In cazul depasirii numarului de statii permisibil ( limitari electrice sau depasirea numarului de adrese de retea ) se pot folosi routere, repetoare sau bridge – uri.

repetor = dispozitiv de regenerare de semnal ( amplificator – filtru ).

bridge ( “pod” ) = dispozitiv ce realizeaza conectarea intre ele a doua retele independente. Se copiaza toate mesajele de pe interfata 1 pe interfata 2 ( si reciproc ), chiar daca mesajele nu au ca destinatie o statie aflata pe cealalta interfata.

Fig. 7: Bridge !

router = dispozitiv ce realizeaza conectarea intre ele a doua retele independente, incluziv “traducerea” dintr-un tip de protocol folosit de una dintre ele in cel folosit de cealalta.

Caracteristice EtherNet – cablu subtire:

numar maxim de segmente ( retele legate prin intermediul repetoarelor ): 5

lungime maxima a unui segment: ~ 180 m.

lungime totala maxima: ~910 m.

numar maxim de statii: 30 pe segment, adica 142 in total, un repetor fiind privit ca o statie.

distanta minima intre doua conectoare: 48 cm.

folosirea de terminatoare la fiecare capat al retelei ( terminator = rezistenta folosita pentru adaptarea impedantei cablului ).

EtherNet foloseste CSMA/CD ( Carrier Sense Multiple Acces with Colision Detection ) pentru accesul la retea. Deci fiecare statie din retea, inainte de a o accesa, trebuie sa “asculte” reteaua astfel incit la momentul respectiv nici o alta statie sa nu foloseasca cablul, prin detectia purtatoarei. In cazul detectiei coliziunii – o alta statie doreste simultan accesul la retea – se asteapta o perioada aleatoare, dupa care se reasculta reteaua.

Procesoarele de pe placa de retea, cele care stabilesc tipul acesteia, sint legate si ele de topologia / tehnologia realizarii retelei. Vom analiza in continuare circuitul Am79C960, controller EtherNet pentru magistrale ISA.

Circuitul este configurat astfel incit sa permita accesul DMA ( in Bus Master Mode ) sau nu ( Shared Memory Mode ). Contine:

interfata ISA

DMA Buffer Management Unit

buffere FIFO de 136 biti pentru transmisie si de 128 de biti pentru receptie

interfata conform IEEE 802.3 – AUI, cablu gros / subtire

interfata pentru cablu torsadat.

comutare automata AUI – cablu torsadat.

capacilitati de bootare de la distanta ( PROM de 16 Kb sau mai putin, in spatiul de memorie al placii ).

1.8.1 Bus Master Mode:

Optiunea nu este software selectabila. Adresa de memorie este intotdeauna relativa la adresa de I/O ( de exemplu 0x300H este asociata cu 0xC8000H ). Bufferele de date sint localizate in memoria sistemului si pot fi accesate cind chipul devine Bus Master.

Fig. 8: Diagrama blocurilor pentru modul BUS MASTER.

1.8.1.1 Bus Interface Unit

Aceasta unitate lucreaza pe un ceas de 20 Mhz, permitind si accesari asincrone. Modul de operare depinde de stadiul de master sau slave al chipului.

In mod slave semnalul IOCHRDY, de exemplu, este in mod asincron pus in LOW cind este nevoie de o stare de WAIT si readus in HIGH in mod sincron cind chipul este READY. In mod master, toate semnalele sint sincrone pe 20 Mhz.

1.8.1.2 Transferuri DMA

BIU va initializa transferurile DMA in functie de tipul acestora:

Transferuri DMA de tip bloc: – BIU fiind Bus Master va transfera datele in 4 cicluri de 8 biti dupa care va ceda controlul. Transferurile se vor realiza la adrese continue si reprezinta operatii de citire.

Transferuri DMA de descripori – BIU fiind Bus Master va transfera datele in atitea cicluri cite vor fi necesare dupa care va ceda controlul. Transferurile se vor realiza la adrese nu neaparat continue si vor fi de acelasi tip ( READ / WRITE ).

Transferuri Dma Burst – Cycle – BIU fiind Bus Master va trece la transferul de date in cicluri bine definite de acelasi tip ( READ / WRITE ), la adrese continue. Numarul acestor cicluri este programabila prin intermediul registrului CSR4, bit 14 – DMAPLUS ( DMAPLUS == 0 ==> se vor executa 16 cicluri, DMAPLUS == 1 ==> ciclurile vor continua pina cind bufferul FIFO este plin ).

1.8.2 Manchester Encoder / Decoder ( MENDEC )

MENDEC integrat pune la dispozitie functiile necesare pentru o aliniere la standardul IEEE 802.3. Realizeaza codarea / decodarea datelor pentru transmisia / preluarea lor pe / de pe retea, folosind oscilatorul de pe placa.sau un ceas extern. Necesitati de buna functionare: linie terminata de 78 Ohmi.

Blocul detecteaza sfirsitul de transmisie ( purtatoarea ). Decodarea se face prin intermediul unui comparator. Tot aici se realizeaza si detectia coliziunilor prin compararea nivelului semnalelor.

1.8.3 Transmisia datelor – pachetul de date 802.3

Pachetele transmise pe o retea 802.3 respecta o anumita configuratie ce contine atit datele de transmis cit si semnale de detectie, sincronizare si corectie. Structura acestui pachet este reprezentata in fig.11.

Caracteristicile transmisiei pot fi programate ( de exemplu retransmisia in cazul coliziunii, codarea pentru detectia si corectia erorilor, insertia in cimpul PAD, etc ). Punctul de intrare in transmisie este chiar momentul in care se acceseaza mediul de transmisie.

“Padding” – ul se refera la extensia pachetului de date la o dimensiune de 64 octeti (512 biti), care reprezinta minimul unui mesaj, fara date pentru controlul transmisiei.In urma acestei setari bitii pentru FCS sint transmisi automat Urmatorului etaj OSI ii revinesarcina sa interpreteze al 5 – lea cimp ( lungime ) si sa preia datele din LLC ( Link Level Control ).

Fig. 9: Pachetul 802.3, lungimile sectiunilor si

ordinea lor.

Inainte de a primi octetii FCS controller – ul de Ethernet testeaza primirea a 544 biti. Daca nu s – au trimis cei 544 de biti, automat se trece la completarea ( padding ) pina la aceasta valoare, apoi se adauga FCS.

Dimensiunea minima a unui pachet ( incluzind FCS, fara preambul ) -> 64 octeti, 512 biti.

Preambul + Sync -> 8 octeti, 64 biti.

Dimensiune FCS -> 4 octeti, 32 biti.

Deci, inaintea adaugarii FCS la receptie, pachetul trebuie sa contina:

Preambul + ( Dimensiunea minima – FCS ) = 64 + ( 512 – 32 ) = 544.

Dupa adaugarea FCS rezulta o lungime minima a unui pachet de 544 + 32 = 576 biti, 72 octeti.

Specificatia Ethernet presupune lungimea minima de 64 octeti !

1.8.4 Blocul de Receptie

Principala functie a acestuia este sa semnalizeze aparitia semnalelor ( datelor ) la intrare si separarea acestora, codate Manchester, in semnale de sincronizare ( ceas ) si date NRZ .

La receptie, in cazul cind la transmisie s – a realizat operatia de padding, bitii completati ( siruri de 0 ) pot fi automat exclusi din pachet, permitindu – se astfel o completare mai utila a FIFO. De asemenea, de acum fiind inutili se indeparteaza si bitii FCS.

Fig. 10: Blocul de Receptie

Numarul de biti de “sters” este calculat din lungime specificata pentru datele LLC. Unui pachet de date cu o lungime LLC mai mica de 46 octeti ii va fi sters cimpul PAD, pachete cu lungimea LLC mai mare de 46 octeti vor trece nemodificate.

Din cauza lungimii minime realizate de 72 de octeti, controller -ul nu va “sterge” in mod normal, nici un bit din pachetele valide receptionate !

La corectia automata a datelor cu ajutorul FCS, in cazul detectiei unei erori, aceasta va fi semnalizata prin bitul de CRC in registrul RMD1.

1.8.5 Erori corectabile si erori necorectabile

In cazul functionarii unei retele in mod automat la transmiterea datelor, din diverse motive obiective, pot aparea erori. Ele sint impartite in doua clase, in functie de constructia corecta sau nu a retelei in sine.

Astfel apar erori “normale”, recunoscute si corectate automat de controller, si sint reprezentate in marea lor masura de coliziuni in intervalul permis de timp.

Conditii “anormale” de lucru pot duce la:

erori la bitii FCS

erori de incadrare in pachet

biti schimbati

coliziuni in afara intervalului permis ( intirziate )

1.8.6 Tipuri de retele

Din punctul de vedere al modului de lucru si impartirea resurselor retelei se detaseaza ca fiind cele mai utilizate doua tipuri de retele:

retele peer – to – peer

retele cu server

Retelele peer – to – peer

Este un sistem care poate fi instalat cu real folos in cazul unor dimensiuni reduse ale retelei. Mai sint cunoscute ca sisteme fara server dedicat. Fiecare component al retelei poate fi, in acelasi timp atit server, cit si client din punct de vedere al alocarii resurselor. Costul unui astfel de sistem este mai redus decit in cazul construirii unui sistem cu server dedicat.

Dezavantaje ale retelelor peer – to peer:

lucreaza oarecum mai lent decit sistemele cu server dedicat. La transferul datelor de pe un computer devenit, temporar server pentru un numar ridicat de statii viteza de transmisie poate sa scada dramatic.

numar practic limitat de statii – desi teoretic acesta nu este limitat in nici un fel ( in afara conditiilor referitoare la distante, pentru conexiuni ). Aceasta limitare este si o consecinta a punctului anterior, dar este impus si de o ingreunare importanta a organizarii sistemului logic in cazul existentei mai multor statii.

securitatea datelor si a retelei este destul de scazuta.

Decizia pentru alegerea unui sistem peer – to peer poate fi luata dupa ce s- au constatat urmatoarele:

numarul de statii este relativ mic ( in principiu 10 statii ar pute deveni deja un numar mare ).

performantele necesitate nu se ridica la un nivel inalt.

exista restrictii in privinta costului.

nivelul cunostiintelor utilizatorilor este relativ scazut.

Sisteme de retele punct la punct au fost dezvoltate de urmatoarele firme:

Apple – Macintosh System 7.0

Artisoft – Lantastic

Novell – Novell Lite

Microsoft – Windows for Workgroups

DCA – 10 Net

In ultima perioiada de timp, cele mai raspindite sisteme de acest gen au fost Windows for Workgroups, Lantastic si Novell Lite. O dezvoltare de mare amploare probabil va avea loc o data cu reteaua de tip Windows 95, produs lansat curind de Microsoft.

Principii ale realizarii unei retele de tip peer – to – peer – exemplu de retea Windows 95

Ideea costruirii unei astfel de retele consta in partajarea resurselor statiilor de lucru, adica a mediilor de stocare, a imprimantelor, scannerelor, etc.

Sa consideram ca exemplu o retea alcatuita din 3 calculatoare.

Sistemul 1: statie cu harddisk, floppy disk, CD – ROM. Director pus la dipozitia retelei: C:\UTIL\DATECOMUNE1. De asemenea, la dipozitia retelei se pune si CD – ul. Se doreste accesul la imprimanta si la DATECOMUNE2.

Sistemul 2: statie cu harddisk, floppy disk, CD – ROM, imprimanta. Director pus la dipozitia retelei: C:\UTIL\DATECOMUNE2. De asemenea, la dipozitia retelei se pune si imprimanta. Se doreste accesul la DATECOMUNE1 si la CD – ul statiei 1.

Sistemul 3: statie cu harddisk, floppy disk. Se doreste accesul la imprimanta, la CD-ul primei statii, la DATECOMUNE1 si DATECOMUNE2.

Se selecteaza Add – Client. Se alege Client for Microsoft Networks. In cazul cuplarii si cu o retea Novell, se adauga si Client for Novell Networks.

Pentru setarea retelei se apeleaza item – ul Network din Control Panel.

Se selecteaza Add – Adapter. Se selecteaza un driver pentru placa de retea, de obicei unul compatibil NE2000. ( Daca placa nu este “cunoscuta” de Windows 95 si exista disc cu drivere, se vor prelua datele de pe acest disc ). In cazul exitentei unei legaturi de retea pe mediu telefonic se poate aduga si Dial – Up Adapter.

Se selecteaza Add – Protocol. Se alege NetBEUI ca protocol implicit. In cazul conectarii unei statii simultan si pe o retea de tip Novell ( cu server dedicat ) se aduga si protocolul IPX / SPX. In cazul existentei si unei legaturi pentru retele UNIX ( INTERNET ) se adauga si protocolul TCP / IP. Protocolul implicit este bine sa fie ales NetBEUI.

Se selecteaza Add – Service. Se alege File and Printer Sharing for Microsoft Networks si, eventual, File and Printer Sharing for Novell Networks.

Se trece la stabilirea datelor hardware necesare pentru cuplarea statiei in retea: intreruperea pe care lucreaza placa si adresa la care poate fi gasita.

Computerului i se asigneaza un nume si o apartenenta la un workgroup – denumirea unei retele in sine sau a unei subretele. Sa presupunem urmatorul exemplu:

Workgroup: GROUP1, nume statie: STATIE1.

Workgroup: GROUP1, nume statie: STATIE2.

Workgroup: GROUP1, nume statie: STATIE3.

Se trece la partajarea resurselor:

STATIE1:

in My Computer, pentru discul C, directorul C:\UTIL\DATECOMUNE1, la proprietati, se specifica Share As… Specificam un acces de tip FULL, fara parola si denumim resursa ST1_DATECOM1. In fereastra ce indica continutul discului C de pe statia STATIE1, directorul sus mentionat va aparea “impartit”.

Se repeta operatia de “impartire” si asupra CD – ului, intr – un mod similar. Se denumeste resursa ST1_CD.

STATIE2:

Se repeta similar operatiile de mai sus in privinta directorului Directorul C:\UTIL\DATECOMUNE1 si a imprimantei. Accesul la resursa director, numita ST2_DATECOM2 va fi READ ONLY si va depinde de o parola specificata de operatorul statiei STATIE2. Accesul la imprimanta va fi FULL si se va realiza fara parola. Denumirea imprimantei in retea va fi ST2_PRINTER.

STATIE3: nu are nimic de partajat !

Se restarteaza toate computerele !

In Desktop – ul statiei STATIE1 se ruleaza Network Neighborhood. La statia STATIE2 vor aparea ca partajate directorul ST2_DATECOM2, imprimanta ST2_PRINTER. In privinta directorului se va trece la operatia de mapare. Direcorul dorit de a fi vizualizat va trece pentru utilizator ca un nou harddisk. Deoarece la statia server in acest caz, s – a specificat o parola de acces, vom fi atentionati pentru introducerea parolei necesare. Pentru accesarea imprimantei se va trece la instalarea uneia din Control Panel. Se va specifica faptul ca se instaleaza o imprimanta de retea si se va localiza astfel: //STATIE2/ST2_PRINTER.

Se opereaza similar pentru cuplarea resurselor la celelalte statii.

Se observa si din aceasta scurta metodologie de realizare a unei retele peer – to peer inca un dezavantaj, si anume faptul ca, pentru ca o statie sa aiba acces la resursele alteia, evident aceasta din urma trebuie sa fie in functiune !!

O schema ilustrativa asupra retelei realizate pe baza pasilor de mai sus este prezentata in figura 11:

Fig. 11: Impartirea resurselor intr – o retea peer – to peer. ( Conexiunile din cadrul computereleor nu au mai fost reprezentate. )

1.9 Protocoalele Web

Popoarele lumii vorbesc limbi diferite.Daca ati dori sa comunicati direct cu lumea intreaga, ar trebui sa invatati fiecare limba in parte pentru a le vorbi si intelege pe toate. Acum, sa ne imaginam ca veti intimpina o dificultate similara daca veti incerca sa coordonati comunicatia de date pentru fiecare calculator din lume, astfel incit fiecare sa poata comunica direct cu toate celelalte. Cand cineva doreste sa utilizeze un limbaj pentru a comunica, limbajul trebuie sa respecte un set de reguli.

In mod similar, calculatoarele trebuie sa respecte un set de reguli, numite protocoale, pentru a comunica. Protocoalele sunt reguli standardizate care permit calculatoarelor sa utilizeze informatiile in comun.

1.9.1 Introducere in protocoale

Calculatoarele comunica printr-un limbaj universal compus din elemente binare care reprezinta 1 sau 0.Desi toate calculatoarele utilizeaza acest limbaj universal, nu seamana intre ele. Diverse calculatoare au diverse sisteme de operare si hardware diferit. Din nefericire, formatele de date nu sunt intotdeauna compatibile de la un sistem la altul. Pentru a acoperi aceasta incompatibilitate in comunicatia prin Internet, profesionistii utilizeaza un set de protocoale care permit definirea comunicatiei intre calculatoare eterogene sau similare.

Un protocol este o combinatie de reguli de comunicatie si formate de mesaje care trebuie respectate de calculatoarele legate in retea pentru a schimba date. Cand doua sau mai multe calculatoare sunt conectate, datele transmise de un calculator catre altul trebuie sa fie impachetate intr-un mesaj. Acest mesaj este descris in definitia protocolului. Aceste reguli descriu modul de manipulare al unui mesaj la aparitia unei erori, precum si modul de procesare al unui mesajfara eroare. Programul utilizeaza protocoale pentru orice comunicatie prin Internet.

1.9.2 Utilizarea protocoalelor

Protocoalele calculatoarelor definesc reguli specifice de comunicatie pentru informatiile transmise de programe printr-o retea sau prin Internet. Protocoalele sunt standarde care furnizeaza servicii de comunicatie intre calculatoare. Scopul primar al protocoalelor este de a permite comunicatia intre calculatoare, indiferent de retea sau de hardware-ul calculatoarelor utilizate in retea. Cu alte cuvinte, cel mai important aspect al unui protocol este faptul ca permite comunicarea intre diverse tipuri de calculatoare. Intrucat Internet-ul utilizeaza protocoale pentru a furniza comunicatia de date in retea, este important sa aveti cunostinte despre protocoalele Internet si de retea.

1.9.3 Componentele conceptuale ale unei retele

Internet-ul reprezinta vehiculul de comunicatie al Web-ului, sau, altfel spus, coloana vertebrala a Web-ului.Teoretic, proiectarea unei retele se realizeaza prin impartirea ei in doua componente fundamentale: aplicatiile de retea si subsistemul de comunicatie in retea.

Programele scrise pentru retea se numesc aplicatii de retea deoarece utilizeaza subsistemul de comunicatie al retelei pentru a transmite date prin retea. Un browser Web, de exemplu, este o aplicatie de retea "asezata" in partea superioara a subsistemului de comunicatie al Internet-ului. Subsistemul de comunicatie este vehiculul care livreaza datele aplicatiei dumneavoastra de retea. Una din sarcinile de programare consta in a invata cum sa comandati acest vehicul de livrare de date al retelei.

Sarcina principala a unui subsistem de comunicatie este trabsportul mesajelor (datelor) intre calculatoare si aplicatiile retelei.

1.9.4 Subsistemele de comunicatie

Subsistemele de comunicatie utilizeaza comutarea comunicatiei pentru a permite calculatoarelor si retelelor sa utilizeze in comun liniile fizice de comunicatie. Cele doua tipuri principale de subsisteme de comunicatie sunt: cu comutarea de circuite si cu comutare de pachete.

Comutarea de circuite creeaza o cale unica, indivizibila, intre doua dispozitive care incearca sa comunice intre ele. Pe durata comunicarii, calea respectiva nu poate fi utilizata de alte dispozitive. Totusi, cand cele doua dispozitive termina conversatia, ele elibereaza calea de comunicatie pentru a permite utilizarea acesteia de catre alte alte dispozitive. Pe scurt, comutarea de circuite permite dispozitivelor sa utilizeze in comun liniile fizice de comunicatie, dar fiecare dispozitiv trebuie sa isi astepte randul. Comutarea de circuite nu poate fi utilizata in Internet pentru ca ea ar impiedica mai multe calculatoare sa contacteze un altul.

Companiile telefonice formeaza o retea care utilizeaza comutarea de circuite. Acest subsistem de comunicatie cu comutare de circuite este radical diferit de subsistemele de comunicatie utilizate de retelele de calculatoare. Retelele de calculatoare utilizeaza aproape totdeauna subsisteme de comunicatie cu comutare de pachete si, din acest punct de vedere, nici Internet-ul nu face exceptie.

Retelele cu comutare de pachete constau din doua componente de baza: elementele de comutare si liniile de transmisie. O retea cu comutare de pachete transmite simultan mai multe mesaje (prin intreteserea mesajelor) prin liniile de transmisie. Procesul de transmisie este denumit multiplexare. Liniile de transmisie care transporta un mesaj de date pot diferi de la un mesaj emis la altul. Elementele de comutare ale retelei determina linia de transmisie care va fi utilizata pentru transportul eficient al fiecarui mesaj.

Elementele de comutare din cadrul subsistemului de comunicatie pot consta dintr-un calculator gazda sau un dispozitiv cum ar fi o punte sau un router. O punte (bridge) interconecteaza doua retele de acelasi tip si actioneaza ca un agent de circulatie, dirijand pachetele de date catre reteaua corespunzatoare. In schimb un router este un dispozitiv ce conecteaza doua sau mai multe retele care pot fi de tipuri diferite. Astfel, un router poate conecta doua sau mai multe retele care utilizeaza aceeasi tehnologie sau tehnologii diferite. In general, puteti considera ca un element de comutare poate fi orice dispozitiv care permite unui pachet de date sa-si gaseasca destinatia. Literatura Web si Internet pot utiliza oricare din urmatorii termeni pentru a referi elementele de comutare ale retelei: procesor de interfata-mesaj (IMP), calculator de comunicatie, comutator de pachete, nod sau schimb comutare-date.

Elementele fizice care conecteaza comutatoarele de pachete sunt denumite linii de transmisie.Literatura Web si Internet utilizeaza adesea termenul circuite sau canale de comunicatie de date (data stream). Termenul flux de date se refera la informatiile care trec, sau care sunt transferate, prin liniile de transmisie ale retelei.

1.10 Modelul de Retea in sapte straturi ISO/OSI

Vom lamuri pentru inceput intelesul unui cuvant, standard, care, alaturi de termeni precum contor, tutorial, implementare, specificatie… produc frisoane unei "anumite parti" a tineretului studios…
Odata cu aparitia unei noi tehnologii, se manifesta si un fenomen de proliferare a produselor ce utilizeaza tehnologia respectiva, fiecare producator dorind sa impuna pe piata propria realizare (mai buna sau mai proasta decat altele). Dupa un anumit timp, piata realizeaza o "selectie naturala", ramanand in competitie doar produsele de calitate (mai sunt si cateva exceptii, cum ar fi acea firma a carui nume incepe cu M, se termina cu T si are un produs W…). Acest interval de timp duce la "maturizarea" tehnologiei respective si reprezinta un test al utilitatii ei. Urmeaza interminabile discutii si controverse intre firmele combatante, iar o comisie internationala incearca sa stabileasca un set de reguli si conventii obligatorii pentru toti cei ce dezvolta produse bazate pe tehnologia in discutie. Astfel se naste un standard . "Fizic", standardul se prezinta sub forma unui "metru cub" de documentatie, prea putin accesibila omului de rand, continand recomandari pe care nu toti le respecta sau ar fi imposibil ca, respectandu-le, sa "iasa" un produs functional (sfarsitul glumei). Standardul este important pentru unificarea diverselor variante ale tehnologiei respective si defineste un set de reguli generale, universal acceptate, contribuind la aparitia de produse portabile (na, a mai aparut un termen !).

Standardele sunt aprobate de organizatii internationale, cum ar fi: OSI (International Standards Organisation), ECMA (European Computer Manufacturer's Association), IEEE (Institute of Electrical and Electronical Engineers), ANSI.

Elaborarea standardelor pentru retele a devenit necesara datorita diversificarii echipamentelor si serviciilor, care a condus la aparitia de retele eterogene din punctul de vedere al tipurilor de echipamente folosite. In plus, multitudinea de medii fizice de comunicatie a contribuit la decizia de a defini reguli precise pentru interconectarea sistemelor. ISO a elaborat un model arhitectural de referinta pentru interconectarea calculatoarelor, cunoscut sub denumirea de modelul arhitectural ISO-OSI (Open System Interconnection).

Modelul ISO-OSI imparte arhitectura retelei in sapte nivele, construite unul deasupra altuia, adaugand functionalitate serviciilor oferite de nivelul inferior. Modelul nu precizeaza cum se construiesc nivelele, dar insista asupra serviciilor oferite de fiecare si specifica modul de comunicare intre nivele prin intermediul interfetelor. Fiecare producator poate construi nivelele asa cum doreste, insa fiecare nivel trebuie sa furnizeze un anumit set de servicii. Proiectarea arhitecturii pe nivele determina extinderea sau imbunatatirea facila a sistemului. De exemplu, schimbarea mediului de comunicatie nu determina decat modificarea nivelului fizic, lasand intacte celelalte nivele.
In figura 2 puteti vedea cele sapte nivele ale modelului arhitectural OSI.

In cele ce urmeaza voi prezenta cate ceva despre fiecare nivel:

Nivelul fizic are rolul de a transmite datele de la un calculator la altul prin intermediul unui mediu de comunicatie. Datele sunt vazute la acest nivel ca un sir de biti. Problemele tipice sunt de natura electrica: nivelele de tensiune corespunzatoare unui bit 1 sau 0, durata impulsurilor de tensiune, cum se initiaza si cum se opreste transmiterea semnalelor electrice, asigurarea pastrarii formei semnalului propagat. Mediul de comunicatie nu face parte din nivelul fizic.

Nivelul legaturii de date corecteaza erorile de transmitere aparute la nivelul fizic, realizand o comunicare corecta intre doua noduri adiacente ale retelei. Mecanismul utilizat in acest scop este impartirea bitilor in cadre ( frame), carora le sunt adaugate informatii de control. Cadrele sunt transmise individual, putand fi verificate si confirmate de catre receptor. Alte functii ale nivelului se refera la fluxul de date (astfel incat transmitatorul sa nu furnizeze date mai rapid decat le poate accepta receptorul) si la gestiunea legaturii (stabilirea conexiunii, controlul schimbului de date si desfiintarea conexiunii).

Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si destinatie, trecand eventual prin noduri intermediare (routing ). Este foarte important ca fluxul de date sa fie astfel dirijat incat sa se evite aglomerarea anumitor zone ale retelei (congestionare ). Interconectarea retelelor cu arhitecturi diferite este o functie a nivelului retea.

Nivelul transport realizeaza o conexiune intre doua calculatoare gazda (host) detectand si corectand erorile pe care nivelul retea nu le trateaza. Este nivelul aflat in mijlocul ierarhiei, asigurand nivelelor superioare o interfata independanta de tipul retelei utilizate. Functiile principale sunt: stabilirea unei conexiuni sigure intre doua masini gazda, initierea transferului, controlul fluxului de date si inchiderea conexiunii.

Nivelul sesiune stabileste si intretine conexiuni (sesiuni) intre procesele aplicatie, rolul sau fiind acela de a permite proceselor sa stabileasca "de comun acord" caracteristicile dialogului si sa sincronizeze acest dialog.

Nivelul prezentare realizeaza operatii de transformare a datelor in formate intelese de entitatile ce intervin intr-o conexiune. Transferul de date intre masini de tipuri diferite (Unix-DOS, de exemplu) necesita si codificarea datelor in functie de caracteristicile acestora. Nivelul prezentare ar trebui sa ofere si servicii de criptare/decriptare a datelor, in vederea asigurarii securitatii comunicatiei in retea.

Nivelul aplicatie are rolul de "fereastra" de comunicatie intre utilizatori, acestia fiind reprezentati de entitatile aplicatie (programele). Nivelul aplicatie nu comunica cu aplicatiile ci controleaza mediul in care se executa aplicatiile, punandu-le la dispozitie servicii de comunicatie. Printre functiile nivelului aplicatie se afla:

identificarea partenerilor de comunicatie, determinarea disponibilitatii acestora si autentificarea lor

sincronizarea aplicatiilor cooperante si selectarea modului de dialog

stabilirea responsabilitatilor pentru tratarea erorilor

identificarea constrangerilor asupra reprezentarii datelor

transferul informatiei

Primele trei nivele de la baza ierarhiei (fizic, legatura de date, retea) sunt considerate ca formand o subretea de comunicatie . Subreteaua este raspunzatoare pentru realizarea transferului efectiv al datelor, pentru verificarea corectitudinii transmisiei si pentru dirijarea fluxului de date prin diversele noduri ale retelei. Acest termen trebuie inteles ca desemnand "subreteaua logica", adica multimea protocoalelor de la fiecare nivel care realizeaza functiile de mai sus. Termenul de subretea este utilizat si pentru a desemna liniile de transmisie si echipamentele fizice care realizeaza dirijarea si controlul transmisiei.

Modelul OSI nu este implementat in intregime de producatori, nivelele sesiune si prezentare putand sa lipseasca (unele din functiile atribuite acestora in modelul OSI sunt indeplinite de alte nivele). Modelul OSI este un model orientativ, strict teoretic, realizarile practice fiind mai mult sau mai putin diferite. Ei, va zice unul dintre voi, pai ce-am batut campii atata cu un model teoretic ? Mie nu-mi foloseste asta la nimic !
Lucrurile nu stau chiar asa. Intelegerea unui alt model este mult usurata de studierea modelului ISO-OSI, motiv pentru care orice carte serioasa il prezinta detaliat.

Sa vedem cum se realizeaza un transfer de date intre doua masini gazda. Cel mai bun exemplu este modul in care putem citi o pagina web aflata pe un calculator situat la mare distanta:

utilizatorul lanseaza un program pentru vizualizarea paginilor web (browser)

browserul este entitatea aplicatie care va "negocia" pentru noi obtinerea paginii

nivelul aplicatie va identifica existenta resursei cerute de client (clientul este browserul, care-l reprezinta pe utilizator in aceasta "tranzactie") si a posesorului acesteia (serverul-inteles ca fiind entitatea ce ofera resursa ceruta nu calculatorul central al unei retele; in cazul nostru avem de-a face cu un server de web). Se realizeaza autentificarea serverului (se verifica daca partenerul este intr-adevar cine pretinde ca este (cam ciudata chestie pentru o retea, nu ?)) si se stabileste daca acesta este disponibil (=poate si vrea sa ne satisfaca cererea).

Nivelul sesiune va stabili o conexiune intre procesul client si procesul server

Nivelul transport se va ocupa de intretinerea conexiunii si de corectarea erorilor netratate la nivelul retea

nivelul retea va asigura transferul datelor in secvente (pachete), stabilind drumul acestora intre server si client

Lucrurile sunt ceva mai complicate decat in cele prezentate mai sus. Datele sosesc prin intermediul mediului de comunicatie ca un flux de biti. La nivelul legaturii de date, bitii sunt transformati in cadre, iar la nivelul retea in pachete (vom vedea mai tarziu cum arata un pachet). In cele din urma, datele ajung la nivelul aplicatie unde sunt preluate de browser si ne sunt prezentate. Fiecare nivel adauga sau sterge o parte din informatiile de control atasate datelor de celelalte nivele:

1.10.1 Modelul arhitectural TCP/IP

Modelul TCP/IP a fost utilizat de reteaua ARPANET si de succesorul acesteia, INTERNET, numele provenind de la protocoalele care stau la baza modelului:

TCP (Transmission Control Protocol)

IP (Internet Protocol)

Obiectivul central avut in vedere la proiectarea retelei a fost acela de a se putea interconecta fara probleme mai multe tipuri de retele, iar transmisia datelor sa nu fie afectata de distrugerea sau defectarea unei parti a retelei. In plus, arhitectura retelei trebuia sa permita rularea unor aplicatii cu cerinte divergente, de la transferul fisierelor si pana la transmiterea datelor in timp real (videoconferinte).
Modelul TCP/IP are doar patru nivele:

Nivelul gazda-retea
Modelul nu spune mare lucru despre acest nivel, esentialul fiind acela ca, printr-un anumit protocol (nu se zice nimic despre el), gazda trimite prin intermediul retelei pachete IP. Acest protocol misterios difera de la o retea la alta si subiectul nu este tratat in literatura de specialitate.

Nivelul internet
Acest nivel este axul pe care se centreaza intreaga arhitectura, rolul sau fiind acela de a permite gazdelor sa emita pachete in retea si de a asigura transferul lor intre sursa si destinatie. Se defineste un format de pachet si un protocol (IP), nivelul trebuind sa furnizeze pachete IP la destinatie, sa rezolve problema dirijarii pachetelor si sa evite congestiile (lucreaza asemanator cu nivelui retea din modelul OSI).

Nivelul transport
Este proiectat astfel incat sa permita dialogul intre entitatile pereche din gazdele sursa si destinatie, pentru aceasta fiind definite doua protocoale capat-la-capat: TCP si UDP. Protocolul de control al transmisiei (TCP) permite ca un flux de octeti emis de o masina sa fie receptionat fara erori pe orice alta masina din retea. TCP fragmenteaza fluxul de octeti in mesaje discrete pe care le paseaza nivelului internet. La destinatie, procesul TCP receptor reasambleaza mesajele primite, reconstituind datele initiale. TCP realizeaza controlul fluxului de date pentru a evita situatia in care un transmitator rapid inunda un receptor lent cu mai multe mesaje decat poate acesta sa prelucreze. TCP este un protocol orientat pe conexiune
UDP ( User Datagram Protocol- protocolul datagramelor utilizator) este un protocol nesigur, fara conexiuni, destinat aplicatiilor care doresc sa utilizeze propria secventiere si control al fluxului si nu mecanismele asigurate de TCP. Este un protocol folosit in aplicatii pentru care comunicarea rapida este mai importanta decat acuratetea transmisiei, asa cum sunt aplicatiile de transmitere a sunetului si imaginilor video.

Nivelul aplicatie
Nivelul aplicatie contine protocoalele de nivel inalt, cum ar fi terminalul virtual (TELNET), transferul de fisiere (FTP) si posta electronica . Protocolul TELNET permite utilizatorului sa se conecteze pe o masina aflata la distanta si sa lucreze ca si cum s-ar afla intr-adevar langa aceasta. Pe parcurs s-au adaugat alte protocoale ca DNS (serviciul numelor de domenii), pentru stabilirea corespondentei dintre numele gazdelor si adresele retelelor, NNTP- folosit pentru transferul articolelor (stiri), HTTP-folosit pentru transferul paginilor web, e.t.c.

1.10.2 Sume de control

Inainte de a aprofunda cunoasterea straturilor unei retele, trebuie inteleasa terminologia utilizata pentru descrierea componentelor straturilor. O suma de control este o valoare (pentru Internet, o valoare pe 16 biti) care se formeaza prin insumarea datelor binare din program pentru un anume bloc de date. Programul este responsabil cu calculul acestei sume. Suma de control este transmisa odata cu datele catre un calculatro gazda receptor. Atunci cand calculatorul gazda receptor primeste datele, acesta calculeaza o noua suma. Daca rezultatul sumei calculate de receptor este egal cu suma de control transmisa catre acesta, intregul bloc de date transmise este considerat valid.

1.10.3 Secventierea Mesajelor

Internet-ul transmite si receptioneaza dat esub forma de pachete. Intrucat aceste pachete pot calatori independent prin subsistemul de comunicatie al Internet-ului pentru a ajunge la punctul final de destinatie (calculatorul gazda receptor), pachetele pot ajunge in alta ordine, sau secvente, decat cea in care au fost transmise. Secventierea este realizata direct de protocoale sau chiar de catre aplicatie, care reface mesajul mesajul cu ajutorul numerelor de secventa continuta in fiecare pachet.

1.10.4 Controlul erorilor

Mesajele electronice transmise prin retea pot fi denaturate sau pierdute. Aceste erori pot aparea din cauza zgomotului electronic pe firele de transmisie sau din cauza atenuarii (pierderea semnalului). Erorile datelor se pot concretiza in diverse forme, incepand de la modificarea unui singur bit de la 0 la 1 sau invers, pana la pierderea pachetelor de drum si nereceptionarea datelor transmise. Controlul erorilor asigura transportul datelor in perfecta stare pana la destinatia propusa. Ca si alte concepte de retea, garantia controlului este mai degraba virtuala decit reala. Practic a preveni modulele de retea ale calculatorului destinatie pot ajunge date deteriorate. Pentru a preveni utilizarea datelor de catre modulele de retea, reteaua trebuie sa implementeze un serviciu de control al erorilor. Arunci cand

serviciul de control al erorilor detecteaza o deteriorare a datelor receptionate, el cere in mod automat transmitatorului retransmiterea datelor. In consecinta, datele alterate nu ajung la aplicatia destinatie. Puteti referi acest proces ca un mod de serviciu cu controlul erorilor. Un mod de serviciu specifica pur si simplu faptul ca un strat executa o operatie. De exemplu, un mod de serviciu poate efectua controlul erorilor, pe cand altul, nu. Pe scurt, diversele straturi de retea au diverse moduri de serviciu.

Un mod de serviciu cu controlul erorilor trebuie sa detecteze si sa manipuleze doua forme de eroare: date deteriorate si date pierdute. Daca datele sunt modificate sau deteriorate pe durata transmisiei, controlul erorilor trebuie sa detecteze orice alterare posibila a datelor. Similar, controlul erorilor trebuie sa detecteze orice defectiune in canalul de comunicatie care poate provoca pierderea datelor pe durata transmisiei. In general, protocoalele detecteaza deteriorarea datelor prin sume de control (checksums) si Controale Ciclice ale Redundantei (CRC-uri).

Sumele de control si CRC-urile sunt valori intregi utilizate de program pentru verificarea existentei eventualelor erori in datele transmise. CRC-urile sunt similare sumelor de control, dar necesita un volum mai mare de operatii de calcul. CRC-urile sunt, de altfel, mult mai eficiente decat sumele de control in depistarea erorilor de comunicatie, dar sunt mult mai putin utilizate datorita complexitatii implementarii.

Pentru detectarea deteriorarii datelor in canalul de comunicatie, retelele pot utiliza si un sistem numit “handshacking” (strangere de mana). Intr-o retea care utilizeaza metoda handshaking, atat transmitatorului, cat si receptorul trebuie sa transmita si sa receptioneze mesaje de comfirmare care atesta receptia corecta a datelor. Figura de mai jos prezinta un sistem handshaking de comunicatie care consta din transmiterea a trei mesaje.

Fig. 12 Un exemplu de sistem handshaking simplu de comunicatie.

Pentru fiecare mesaj receptionat, receptorul transmite un mesaj de comfirmare, adesea cunoscut sub numele de mesaj ACK (acknowledgement = comfirmare). De obicei, receptorul are un rol pasiv in schimbul de mesaje. Cu alte cuvinte, transmitatorul initiaza toate schimburile de mesaje si receptorul doar raspunde la mesajele transmitatorului.

Dupa cum se vede in Figura de mai sus cand receptorul primeste MESAJUL 1, transmite ACK pentru MESAJULUI 1(un mesaj de comfirmare). Aceasta operatie este similara raspunsului la un apel telefonic; dumneavoastra comfirmati receptionarea comunicatiei. Dupa ce transmitatorul receptioneaza ACK pentru MESAJULUI 1, transmite MESAJULUI 2.Transmitatorul nu va incepe transmisia MESAJULUI 3 pana cand nu receptioneaza ACK pentru MESAJUL 2. In mod obisnuit, daca transmitatorul nu receptioneaza un mesaj ACK (confirmare) intr-un interval de timp predeterminat, numit perioada de time-out, emitatorul va transmite din nou mesajul neconfirmat.Receptorul poate pur si simplu sa rejecteze mesajul alterat, determinand trasmitatorului sa intre in time-out asteptand ACK pentru MESAJUl 2, si sa astepte retransmiterea mesajului. Totusi aceasta metoda de manipulare a erorilor nu se utilizeaza pentru ca provoaca intarzieri inacceptabile in comunicatia prin retea.

Majoritatea protocoalelor utilizeaza un mesaj NAK (Not Acknowledged – confirmare negata) pentru a indica faptul ca un mesaj a fost deteriorat in canalul de comunicatie. Utilizand analogia cu apelul telefonic, situatia este similara cu receptionarea unui semnal de ocupat. De exemplu, cand receptorul detecteaza o neconcordanta a sumei de control, transmite un NAK pentru MESAJUL 2. Cand transmitatorul primeste acest mesaj, recunoaste deteriorarea MESAJULUI 2 in canalul de comunicatie. Transmitatorul nu mai trebuie sa astepte intreaga perioada de time-out, ci poate incepe imediat retransmiterea MESAJULUI 2, evitand astfel o intarziere nedorita.

Nota: Protocoalele care furnizeaza controlul erorilor si secventiere se numesc protocoale sigure

1.10.5 Cadre de date

Stratul de legatura de date alcatuieste din sirurile de biti unitati de date, denumite generic cadre. Desi ISO considera aceste entitati drept unitati de date ale stratului fizic, cea mai mare parte a literaturii de retea le numeste cadre. Formatul unui cadru de date depinde de tehnologia de baza a retelei (stratul fizic).

Structura cadrului de date furnizeaza posibilitatea controlului erorilor. Trebuie sa intelegeti ca functia principala a stratului de legatura de date este prevenirea deteriorarii datelor. Incepatorii in domeniul retelelor considera deseori ca functia de baza a stratului de legatura de date este formatarea datelor in cadre, pierzand din vedere scopul real al acestui proces de formatare. Socpul final al stratului de legatura de date este prevenirea alterarii datelor in canalul de comunicatie

1.10.5.1 Asigurarea integritatii datelor

Retelele utilizeaza cadre de date pentru detectarea si corectarea deteriorarii datelor in canalul de comunicatie al retelei.Figura 2.1 prezinta formatul cadrului Ethernet.

Fig 13 Formatul unui cadru de date Ethernet.

Stratul de legatura de date al gazdei transmitatoare si cel al gazdei receptoare utilizeaza valoarea unui camp de control-ciclic-al redundantei (CRC) pentru detectarea deteriorarii datelor.

Un CRC este o valoare de 32 de Biti care rezulta dintr-un calcul complex realizat asupra datelor continute in cadru. Gazda transmitatoare calculeaza valoarea CRC-ului si o memoreaza la sfarsitul cadrului de date. Gazda receptoare recalculeaza in mod independent un CRC din cadru de date, pe care il compara cu cel stocat in cadru de date. Daca valoarea originala memorata in cadru corespunde cu cea calculata de gazda receptoare, probabilitatea ca datele receptionate sa corespunda cu datele originale transmise este extrem de mare. Deci, CRC-ul garanteaza efectiv integritatea datelor transmise.

Restul continutului cadrului de date este necesar pentru identificarea si dirijarea corespunzatoare a cadrului. De exemplu, campul Antet al cadrului de date Ethernet de 64 de biti permite sincronizarea intre gazda receptoare si gazda transmitatoare. Cu alte cuvinte, acest camp identifica fragmentul de date continut in cadru. Retelele pot fragmenta datele (le pot diviza in bucati mai mici). Deci, cadrele de date trebuie sa contina adresele de sursa si de destinatie pentru a asigura facilitati de dirijare si raportare de erori. Gazda receptoare foloseste campul Tip de cadru pentru identificarea tipului de date trimis in cadru. Apoi, pe baza tipului datelor transmise, sistemul de operare al gazdei receptoare selecteaza un protocol pentru prelucrarea datelor.

Pe scurt, functia de baza a stratului de legatura de date este detectarea si prevenirea deteriorarii datelor in canalul de comunicatie. Intrucat stratul de legatura de date necesita o unitate finita de date pentru a calcula o valoare CRC, stratul formateaza sau incapsuleaza datele pentru a crea o entitate finita (cadru). Deci, valoarea CRC asigura integritatea datelor in stratul fizic.

1.10.6 Contorizarea traficului in retea

Unele retele, cum este si Internet-ul, se extind peste granitele a doua sau mai multe tari.In unele cazuri, tarile respective trebuie sa monitorizeze utilizarea retelei din motive privind preturile si taxele. De exemplu, multe retele sunt disponibile 24 de ore pe zi. Intretinerea unui astfel de tip de retea necesita timp, bani si effort. Atunci cand un canal de comunicatie depaseste granitele nationale, tarile in cauza pot dori sa imparta aceste costuri de intretinere. Pentru astfel de retele, proiectantii creeaza software care furnizeaza informatii de contabilitate ce tin evidenta cantitatii de date vehiculate prin retea. Software-ul de retea poate inregistra aceste cantitati sub forma de numar de pachete, mesaje, caractere sau biti.

Intrucat stratul retea reprezinta sistemul principal de livrare dintr-o retea, functia de contorizare a informatiei vehiculate se afla in acest strat. Deci, proiectantii de retele trebuie sa implementeze la nivelul stratului de retea programe care furnizeaza, la cerere, informatii de contabilitate. Implementarea software-ului de strat de retea pentru pastrarea informatiilor de contabilitate poate deveni complicata atunci cand exista tarife diferite de fiecare parte a unei granite nationale. Binenteles, pentru rezolvarea acestor cerinte, priectantii trebuie sa creeze programe sofisticate pentru stratul de retea. Din fericire, Internetul nu necesita efectuarea unor calcule de contabilitate in privinta datelor care traverseaza granite internationale.

Capitolul II

2 Reteaua Internet

2.1 Scurt istoric al retelei Internet

Istoria Internetului, desi sub acest nume va aparea mult mai tarziu, incepe in 1966 odata cu crearea Agentiei pentru Proiecte de Cercetare Avansata (ARPA). Obiectivul agentiei era crearea unei retele de comanda a trupelor SUA, care sa poata ramane operationala chiar si in cazul unui atac nuclear (de unde se vede ca multe lucruri bune apar din ratiuni militare). Reteaua a fost denumita ARPAnet si a fost operationala in 1969, cand lega 4 calculatoare din laboratoarele unor universitati. Agentia ARPA a finantat proiecte de cercetare in domeniul retelelor ale universitatilor americane, pe baza carora s-a dezvoltat reteaua. Realizarea "practica" a retelei a fost incredintata firmei BBN (constructia subretelei de comunicatie). S-a hotarat ca subreteaua sa aiba ca router-e minicalculatoare IMP Honeywell DDP-316 special modificate (memorie de 12 KB, cuvant de 16 biti, fara discuri mobile considerate nesigure), conectate prin linii telefonice de 56 Kbps inchiriate de la diverse firme de telefoane. Fiecare nod al retelei era format dintr-un calculator gazda si un IMP (Interface Message Processors) aflate in aceeasi incapere. Pentru a spori siguranta comunicarii, fiecare IMP era conectat cu alte doua. Initial, ARPAnet a functionat experimental prin conectarea a patru universitati, iar in cativa ani s-a extins pe intreg teritoriul SUA. In 1983, ARPAnet a fost divizata in doua sisteme distincte: MILNET (retea destinata operatiunilor militare) si ARPAnet.

Reteaua ARPAnet a aratat cercetatorilor cat este de utila comunicarea rapida intre echipele de cercetatori aflate in diverse orase ale SUA si s-a dorit conectarea cat mai multor universitati. Procedura de conectare era restrictiva deoarece reteaua ARPAnet era finantata de ARPA (adica, pe scurt, de Pentagon). La sfarsitul anilor '70, din initiativa Fundatiei Nationale de Stiinta (NSF), a demarat proiectul de conectare a universitatilor care nu aveau contract de colaborare cu ARPA. Initial au fost oferite servicii de posta electronica. In 1986 a fost creata o subretea care conecta sase centre de supercalculatoare din sase orase americane, fiecare supercalculator conectat fiind legat de un minicalculator LSI-11 (FUZZBALL), numit si "fratele mai mic". Fuzzball-urile au format subreteaua la care au fost conectate, in timp, 20 de retele regionale. Reteaua a fost denumita NSFNET.

La mijlocul anilor '80, retelele ARPAnet si NSFNET au "fuzionat" si, odata cu marirea exponentiala a numarului cererilor de conectare, lumea a inceput sa perceapa colectia de retele ca fiind o uriasa conexiune de retele. Putem spune ca este momentul nasterii retelei Internet. Aceasta cuprindea, in 1990, 3000 de retele si 200 000 gazde pentru a ajunge astazi la cateva zeci de mii de LAN-uri si milioane de gazde. Expansiunea spectaculoasa a retelei a inceput in 1992, dupa ridicarea interdictiei de a desfasura activitati comerciale pe Internet si odata cu aparitia WWW. Una dintre activitatile profitabile este aceea de furnizor Internet (Internet provider= firma care ofera servicii de conectare la Internet.

2.2 Structura retelei Internet

In aceasta sectiune vom incerca sa aruncam o privire asupra structurii retelei Internet si sa lamurim anumiti termeni care apar foarte des, toata lumea ii foloseste dar mult prea putini stiu cu exactitate ce inseamna (desi nimeni n-ar recunoaste…). Fiindca Internetul este un conglomerat de retele, va fi util sa ne familiarizam si cu tipurile principale de retele locale conectate la Internet.

Dupa cum aminteam mai demult, o retea WAN este compusa dintr-o multime de noduri conectate prin intermediul unui mediu de comunicatie (cabluri coaxiale, cabluri torsadate, fibra optica, radio, satelit). Intr-un nod nu se afla neaparat un calculator gazda (host-sistem final), ci se poate amplasa un echipament periferic (display, imprimanta…) sau un controler de comunicatie (numit si nod de comutare sau ROUTER ). Gazdele sunt conectate printr-o subretea de comunicatie , a carei sarcina este sa transporte datele intre host-uri. In majoritatea retelelor WAN, subreteaua de comunicatie este formata din doua componente distincte:

liniile de transmisie ( circuite / canale )- transporta bitii de date intre masini;

elemente de comutare – echipamente folosite pentru a conecta doua sau mai multe linii de transmisie;

Daca va mai amintiti, primele trei nivele ale modelului arhitectural OSI formau subreteaua de comunicatie, iar in modelul TCP/IP acest rol era indeplinit de nivelul gazda-retea si nivelul internet. Datele ce trebuiesc transmise sunt divizate in "bucati" mai mici numite pachete. Cand un pachet este transmis de la un router la altul, prin intermediul unuia sau mai multor routere intermediare, pachetul este primit de fiecare router intermediar, este retinut acolo pina la eliberarea liniei cerute si apoi este retransmis mai departe. O subretea care functioneaza pa acest principiu se numeste subretea cu comutare de pachete sau subretea punct-la-punct sau subretea memoreaza si transmite . In figura de mai jos puteti vedea un fragment dintr-o retea WAN, fiind pusa in evidenta o parte a subretelei de comunicatie.

Topologia de interconectare a routerelor este una dintre cele amintite in sectiunile precedente (stea, arborem inel, neregulata…). Topologia retelelor WAN este de obicei neregulata, in timp ce topologia unei retele LAN este una simetrica.

2.3 Retele locale si interconectarea mai multor retele LAN

Pentru conectarea fizica intre calculatoare s-a folosit la inceput topologia de magistrala, la care pe segmentul de mediu fizic (cablu coaxial gros, de culoare galbena- comparat de multe ori cu un furtun pentru udat gradina), se puteau conecta pana la 29 de echipamente pe o lungime de maxim 500 m. Conectarea echipamentelor se facea prin intermediul unui dispozitiv numit transceiver . Nu se mai realizeaza astazi asemenea retele, topologia de magistrala avand un cablu coaxial subtire, iar conexiunile fiind facute prin mufe T. Este vorba despre LAN-uri Ethernet.
Numele Ethernet este legat de ipoteza vehiculata mult timp de oamenii de stiinta, potrivit careia intre corpurile ceresti se afla zone "umplute" de un "gaz" misterios numit eter. Creatorul Ethernetului si-a imaginat o retea in care nu este important unde se afla calculatoarele ci faptul ca acestea pot comunica fara restrictii si a ales, metaforic vorbind, eterul ca mediu de comunicatie.

Reteaua Ethernet a fost dezvoltata de Robert Metcalfe in 1973, pe vremea cand era angajat al companiei Xerox si a evoluat continuu, devenind cel mai popular tip de retea locala. Primele retele Ethernet au fost cele cu cablu coaxial gros si legatura prin transceivere, numite Thick Ethernet . Astazi se foloseste cablul coaxial subtire cu conexiuni T (Thin Ethernet), cablu torsadat sau fibra optica (Twisted Pair Ethernet, Fast Ethernet). Conexiunea cu mufe T are avantajul eliminarii transceiverului, mufa conectandu-se direct la placa de retea,"coada" T-ului, cablul continuind prin extremitatile T-ului catre calculatorul urmator.
Cea mai populara versiune Ethernet avea o viteza de transmisie a datelor de 10 Mb /s (Mb=mega bit pe secunda), iar Fast Ethernet de 100Mb/s. Se lucreaza astazi pentru realizarea unor retele cu viteza de transfer mai mare de 1000 Mb/s, numele vehiculat pentru acestea fiind Gigabit Ethernet.

Celelalte topologii, inel (ring) si stea (star sau hub) sunt mai putin raspandite la noi. Topologia de inel a fost utilizata de IBM pentru tipul de retea Token Ring , folosita astazi doar pentru conectari rapide la mare distanta cu fibra optica. Topologia stea s-a folosit in retelele Arcnet unde conectarile erau facute la un hub, in stea, fiind posibile si conexiuni intre hub-uri. Hub-ul este un dispozitiv in care intra un singur cablu si care are mai multe iesiri. (De exemplu, intr-un hub intra cablul ce pleaca de la server iar cablurile care ies conecteaza calculatoare sau alte hub-uri).

Retelele locale, indiferent de tipul lor, stabilesc o limita maxima a numarului echipamentelor ce se pot conecta la retea. Atunci cand este nevoie de conectarea mai multor calculatoare decat permite tipul de retea utilizat sau atunci cand avem mai multe retele locale, eventual de tipuri diferite, pe care dorim sa le conectam exista doua solutii: repetoarele si podurile. Un repetor (REPEATER ) este un amplificator electric, care preia semnalul dintr-o parte si il trece in cealalta parte marind puterea acestuia (semnalul se pierde daca nu este amplificat). Repetorul nu poate fi folosit decat pentru legarea a doua retele de acelasi tip, iar folosirea unui numar mare de repetoare duce la scaderea vitezei de transmisie a datelor.
Atunci cand dorim sa conectam doua retele, mai ales daca sunt de tipuri diferite, vom utiliza un pod ( BRIDGE ). Acesta este conectat la doua sau mai multe retele locale, simultan. Podul stie sa preia pachetele de date dintr-o retea si sa le transmita in cealalta, realizand si anumite conversii ale pachetelor (pachetul de date ce "trece pe pod" va trebui "inteles" de calculatoarele din reteaua destinatie, deci vor trebui facute conversiile de structura; fiecare tip de retea foloseste pachete diferite ca structura, deci, de exemplu, un pachet Ethernet nu va fi "inteles" de o retea Token Ring. Se spune ca un pod "vorbeste" un protocol diferit la fiecare capat (regulile de transmisie a datelor sunt diferite de la o retea la alta). Podul nu copiaza un pachet dintr-o parte in alta decat daca destinatia sa se afla in alta retea decat calculatorul care l-a expediat, prevenind aglomerarea inutila a retelei. Exista si poduri care au un algoritm care le permite sa invete cand sa preia un pachet si cand nu (algoritm de invatare). In finalul discutiei despre poduri, voi preciza ca podul nu este altceva decat un calculator specializat si nu cine stie ce echipament misterios.

2.4 Spatiul de nume in Internet (DNS)

Programele utilizate in mod curent se refera rareori la sistemele gazda, cutii postale si alte resurse prin adresa lor binara (IP), in locul acesteia fiind folosite siruri de caractere de forma:

nume_masina_gazda.subdomeniu1.subdomeniu2…subdomeniu_n.domeniu

Folosirea unor siruri de caractere in locul adreselor binare duce la utilizarea usoara a adreselor, fiind mult mai usor de retinut decat niste numere care nu spun mare lucru utilizatorilor obisnuiti. Va fi necesar un mecanism care sa permita convertirea unei adrese din format ASCII in format IP, singurul format recunoscut in retea. De exemplu, reteaua ARPANET avea un site ce continea un fisier text numit host.txt , care cuprindea toate sistemele gazda si adresele lor. Conversia intre adrese era realizata pe baza acestui fisier, insa aceasta modalitate este rezonabila doar intr-o retea ce contine cateva sute de masini gazda. In cazul Internetului s-a adoptat o alta solutie, numita DNS (Domain Name System- Sistemul Numelor de Domenii).

Internetul este divizat in cateva sute de zone de nivel superior, numite domenii, fiecare domeniu cuprinzand subdomenii sau/si sisteme gazda, rezultand o reprezentare arborescenta a DNS. Domeniile de pe nivelul unu al arborelui sunt de doua categorii:

generice:

com -comercial

edu -institutii de educatie

gov -guvernul SUA

mil -armata SUA

int -organizatii internationale

org -organizatii nonprofit

de tari : fiecare tara are alocat un domeniu ( ro -Romania)

Fiecare adresa este data de drumul parcurs in arbore de la masina respectiva si pana in radacina arborelui, componentele fiind separate prin punct. Componentele numelor pot avea maxim 64 de caractere, iar intregul nume nu poate depasi 255 de caractere. Fiecare domeniu controleaza cum sunt alocate adresele in subdomeniile sale. Pentru a creea un subdomeniu (sa zicem ca am dori sa facem inca o retea, separata de cea pe care o avem) se cere permisiunea domeniului in care va fi inclus subdomeniul, astfel fiind evitate conflictele de nume. Fiecare domeniu primeste un anumit numar de adrese care pot fi alocate subdomeniilor sale.

DNS consta intr-o schema ierarhica (arborescenta) de nume de domenii si dintr-un sistem de baze de date distribuite pentru implementarea schemei de nume. Spatiul de nume DNS este impartit in mai multe zone disjuncte, fiecare zona continand o parte a arborelul de adrese precum si numele serverelor care pastreaza informatiile referitoare la acea zona. O zona poate avea un server de nume (server DNS) primar, care preia informatiile dintr-un fisier de pe discul propriu, si mai multe servere de nume secundare, care iau informatia de pe discul serverului primar. Pentru mai multa siguranta, unele servere DNS sunt plasate in afara zonei pe care o administreaza.
Structura arborescenta a DNS permite utilizarea de domenii cu acelasi nume. Pentru a se stabili corespondenta intre nume si adresa IP se procedeaza astfel:

programul de aplicatie apeleaza o precedura de biblioteca (resolver), transferandu-i ca parametru numele de domeniu

resolver-ul trimite un pachet UDP la serverul local DNS, care cauta numele si returneaza adresa IP asociata acestuia

avand adresa IP, programul apelant poate stabili o conexiune TCP cu destinatia…

2.5 Nivelul retea si nivelul transport in Internet

Un lucru deosebit de important care trebuie precizat este acela ca Internetul nu conecteaza calculatoare ci retele. Daca mai punem la socoteal si faptul ca retelele au tipuri diferite, ne dam seama cat de importanta este stabilirea unor protocoale de comunicatie care sa permita conectarea fara probleme a diverselor tipuri de retele si echipamente. La nivelul retea, Internetul poate fi vazut ca o colectie de subretele sau sisteme autonome interconectate. Nu exista o structura reala precisa dar se pot pune in evidenta cateva segmente principale ("coloane vertebrale")

Coloanele vertebrale sunt construite din linii de mare capacitate si routere rapide, la care se conecteaza retelele regionale (de nivel mediu). Retelele regionale conecteaza LAN-uri din institutii, firme si ale furnizorilor de servicii Internet.

Liantul care tine Internetul la un loc este protocolul de nivel retea IP, special conceput pentru interconectarea retelelor. Sarcina sa este aceea de a oferi o cale de a transporta pachetele de date de la sursa la destinatie, fara a tine seama daca masinile expeditor si receptor ( SENDER si RECEIVER ) sunt de acelasi tip sau daca se afla in aceeasi retea ori mai sunt retele intre ele.
Comunicatia in Internet functioneaza astfel:

nivelul transport preia fluxul de date si il sparge in pachete cu lungimea teoretica de maxim 64kb (practic 1500 bytes)

fiecare pachet este transmis separat, putand fi fragmentat din nou pe drum

pachetele ajunse la destinatie sunt reasamblate pentru a obtine datele originale

datele reasamblate sunt pasate nivelului transport, care le insereaza in sirul de intrare al procesului receptor

Un pachet IP este compus dintr-un antet cu informatii de control si o parte de date, unde sunt stocate datele ce sunt transmise.
Antetul pachetului contine, printre altele, informatii despre:

versiunea protocolului care a creat pachetul

lungimea antetului

lungimea zonei de date

tipul derviciului dorit (fiabilitate si viteza)

timpul de viata al pachetului: este un contor care numara cate salturi a facut pachetul (salt=trecerea dintr-un nod in altul), valoarea maxima fiind 255. Cand un pachet are valoarea contorului 0 (adica a petrecut cam mult timp pe drum), acesta este distrus iar hostul sursa este avertizat de pierderea datelor. Protocolul care se ocupa de acest lucru este ICMP (Internet Control Message Protocol), un alt protocol al familiei TCP/IP.

ce protocol de transport trebuie sa preia pachetul

adresa sursei

adresa destinatiei

cat de secreta este informatia

Sa consideram cazul in care un host din reteaua A doreste sa transmita date unui host din reteaua B, dupa cum se vede in figura 4. Datele sunt transmise routerului A, care le trimite mai departe (salt) prin reteaua regionala la care este conectata reteaua locala, trece printr-o multime de routere intermediare din coloana vertebrala a SUA si Europei, ajunge in reteaua nationala si apoi in reteaua B, de unde vor fi dirijate catre hostul destinatie. Lucrurile par simple la prima vedere dar problemele care apar in transmiterea datelor de la sursa la destinatie sunt deosebit de complexe. Drumul ales de pachet de la sursa la destinatie se numeste ruta (route), iar operatia de alegere a unui drum dintre drumurile posibile la un moment dat se numeste rutare (routing). Nivelul retea trebuie sa aleaga drumul cel mai potrivit pentru fiecare pachet, astfel incat ruta sa fie cat mai ieftina si sa nu se produca aglomerari ale unor sectoare din retea (congestii). Sunt folositi diversi algoritmi pentru alegerea rutei optime, cum ar fi algoritmul lui Dijkstra (vedeti la ce sunt bune cunostintele despre grafuri ?) sau algoritmi ce se bazeaza pe anumite tabele actualizate dinamic (tabele de rutare).

Nu am luat inca in discutie un lucru foarte important: pentru a putea realiza transmisia datelor este nevoie sa identificam in mod unic fiecare gazda conectata in retea. Aceasta adresa va fi utilizata pentru localizarea gazdelor in Internet. O adresa IP este formata din patru numere intregi intre 0..255, despartite prin punct. De exemplu, adresa noastra este 192.168.1.1 . O adresa IP este formata dintr-un identificator al retelei (net ID) si un identificator (numar) de masina (host ID). Toate calculatoarele dintr-o anumita retea vor avea acelasi net ID
Adresele IP se pot clasifica in mai multe clase:

Clasa A: net ID de 8 biti, host ID de 24 biti

Clasa B: net ID de 16 biti, host ID de 16 biti

Clasa C: net ID de 24 biti, host ID de 8 biti

Formatul A permite adresarea a 126 retele cu 16 milioane de gazde fiecare (valoarea primului octet nu poate depasi 127). Formatul B permite adresarea a 16383 de retele cu pana la 65000 gazde fiecare si 16000 subretele (primul octet ia valori intre 128 si 191). Formatul C adreseaza aproximativ 2 milioane de retele LAN cu pana la 255 gazde fiecare. Primul octet ia valori intre 192 si 222. Valorile de la 223 pana la 255 sunt rezervate pentru utilizari ulterioare.

2.6 Transferul datelor in Internet (nivelul aplicatie)

2.6.1 Nivelul aplicatie-generalitati

Pana acum am discutat, mai mult sau mai putin amanuntit, despre subreteaua de comunicatie si despre nivelul transport, amintind cate ceva despre protocoalele care lucreaza la aceste nivele si care asigura stabilirea si intretinerea conexiunilor. Aceste nivele nu indeplinesc nici o functie concreta pentru utilizatori. Nivelul aplicatie, dupa cum spuneam in capitolele precedente, contine protocoale ce permit functionarea aplicatiilor reale, cele care interactioneaza cu utilizatorul.
Unul dintre aspectele de care trebuie sa se tina cont este securitatea retelei . Sunt necesare mecanisme care sa depisteze pe aceia care apeleaza la servicii pe care nu sunt autorizati sa le foloseasca si trebuie sa inlature posibilitatea ca, anumite persoane, curioase ori rauvoitoare, sa modifice sau sa poata citi mesajele adresate altor utilizatori. In momentul actual, securitatea datelor in Internet este doar un vis frumos. In ultimii ani s-au descoperit noi metode pentru criptarea datelor dar altii lucreaza pentru a "sparge" noile coduri, fie pentru a demonstra ca metodele descoperite nu sunt chiar eficiente, fie din motive mai putin morale (=furt). Furturile prin intermediul Internetului (caci nu se pot numi altfel) sunt principalul obstacol in calea dezvoltarii comertului electronic. Este foarte important sa denumim "actiunile" de obtinere a unor "foloase necuvenite" (cumpararea de bunuri prin utilizarea de carti de credit false ori sustrase, sustragerea datelor cu regim secret, efectuarea de convorbiri telefonice gratuite…)pur si simplu furt, desi unora li se pare a fi o distractie nevinovata. Legile sunt foarte aspre cu asemenea infractiuni (asta in tarile occidentale, fireste…) si, in curand, se vor introduce si la noi astfel de reglementari dure, deci, atentie !!!
In incheierea acestui paragraf cu tenta educativa, trebuie sa mai spun ca este bine sa nu folositi in mesajele electonice cuvinte si expresii care ar putea jigni pe cineva sau ar putea fi considerate calomnii sau probe intr-un proces…

Vom trece acum in revista cele mai importante protocoale ce activeaza la nivelul aplicatie, punand la dispozitia utilizatorilor un set complet de servicii de comunicare si transfer de date.

2.6.2 Conectarea pe o masina aflata la distanta

Conectarea la o masina aflata la distanta se realizeaza pe baza conceptului de terminal virtual. Senzatia utilizatorului este aceea ca se afla chiar langa host-ul apelat. Pentru a realiza o conexiune cu o masina ce lucreaza sub sistemul de operare Unix se foloseste comanda rlogin (remote login ). Toate resursele (discuri, fisiere,…) de care dispune o masina poarta numele de resurse locale ( local resource ). Daca o anumita resursa poate fi accesata numai prin intermediul retelei, atunci avem de-a face cu o resursa la distanta sau remote resource . Folosirea comenzii rlogin determina utilizarea terminalului local ca si cum acesta ar fi conectat direct la masina aflata la distanta. Spunem ca se realizeaza o sesiune de terminal virtual . Sintaxa comenzii este:

rlogin nume_masina optiuni

, unde este numele unei statii disponibil in fisierul /etc/hosts sau adresa Internet a unei statii. Se poate folosi optiunea -l pentru a specifica si un nume de utilizator.
Spre exemplu, daca aveti un cont pe hostul homer , cont numit mybox, va puteti conecta la acesta de la distanta, prin comanda:

rlogin homer.eminescu.edu.ro -l mybox

Terminarea conexiunii cu masina de la distanta se face prin comanda exit .

Daca dorim sa realizam o conexiune de terminal virtual cu o masina care nu lucreaza in sistemul Unix, vom folosi comanda telnet , avand ca parametru numele masinii sau adresa acesteia. Comanda telnet este utilizata de voi la fiecare conectare la contul Linux personal (se realizeaza conectarea prin terminal virtual dintre un PC si o masina Linux).

2.6.3 Posta electronica (E-mail)

Trimiterea de mesaje (scrisori) a fost unul dintre primele servicii puse la dispozitia utilizatorilor unei retele si a avut un succes imens. Posta electronica a facut posibila comunicarea rapida intre angajatii firmelor (mai ales cand exista echipe mari de cercetare, care lucreaza in diverse tari), realizindu-se mari economii de timp in dezvoltarea proiectelor. Astazi, posta electronica a devenit un mijloc foarte rapid si comod de comunicare, fiind chiar mai ieftin decat sistemul postal clasic. Au fost creeate o multime de "liste de discutii" unde participantii pot discuta problemele care ii intereseaza. Cele mai raspandite sunt listele de discutii ce folosesc posta electronica. Fiecare mesaj trimis la adresa unei astfel de liste va fi retrimis tuturor utilizatorilor inscrisi. De multe ori exista si un moderator, care dirijeaza discutiile si verifica respectarea regulilor stabilite pentru acea lista (exista reguli de "comportament" care nu trebuie incalcate, una dintre cele mai importante fiind adresarea civilizata si fara insulte sau trivialitati; fireste, pentru a fi admis in anumite "cluburi de discutii", purtarea grosolana si comportamentul de "ghetou" este chiar o conditie de baza…). In general, utilizatorul trebuie sa respecte cateva reguli de comportare, care formeaza asa numita NETicheta .

Pentru a putea trimite un mesaj, se utilizeaza un program specializat (in Linux exista programul PINE). Fiecare retea trebuie sa aiba un server de posta electronica. Regulile de transmitere a mesajelor intre serverele de posta au fost definite in protocolul SMTP (Simple Mail Transfer Protocol). Nu intru in amanunte privitoare la acest protocol si nici nu voi descrie programele folosite pentru scrierea mesajelor, acestea putand fi teme de studiu pentru voi sau pentru alti "fericiti" ce va vor urma…

2.6.4 Transferul fisierelor

Unul dintre marile avantaje ale retelelor este acela de a pastra informatii in diverse hosturi si de a putea transfera o parte dintre acestea atunci cand este nevoie. Pentru a realiza transferul de date intre doua masini Unix, se foloseste comanda rcp (remote copy), care este o extensie a comenzii Unix cp.
Cea mai folosita modalitate de a transfera de date este aceea de a utiliza comanda FTP, care implementeaza protocolul cu acelasi nume ( File Transfer Protocol ). Protocolul FTP este implementat pentru toate sistemele de operare (Unix, Dos, Windows).
Trebuie sa facem precizarea ca Internetul nu se reduce la World Wide Web (despre care vom vorbi ceva mai tarziu), care este doar o mica parte a acestuia. Inainte de aparitia navigatoarelor grafice si a sistemelor hipertext, informatia era pastrata in arhive ce puteau fi transferate prin intermediul comenzii ftp (arhive ftp), arhivele fiind accesibile si astazi. Accesul la informatie se face prin intermediul unui server FTP, care poate fi public sau privat. Serverul FTP public permite accesul oricarui utilizator, caruia i se cere ca nume "cuvantul " anonymous iar ca parola adresa E-mail. Toate arhivele disponibile sunt depuse intr-un director numit pub . Serverele private restrictioneaza accesul, fiind proiectate pentru utilizarea de catre un anumit grup de utilizatori (angajatii unei firme, de exemplu0.

Iata ce trebuie sa faceti pentru a transfera un fisier aflat intr-o arhiva FTP:

Se tasteaza comanda ftp, iar pe ecran veti obtine promptul ftp> , unde sunteti invitat sa introduceti comenzi specifice protocolului ftp.

Comanda open adresa va realiza conectarea cu masina specificata prin adresa. Urmeaza identificarea utilizatorului prin nume si parola.

Odata ce primiti accesul, puteti accesa structura de subdirectoare din "pub" prin comenzile obisnuite (cd ) pana ajungeti la fisierul dorit (toate serverele ftp contin si un index al fisierelor pe care le puteti gasi acolo).

Stabiliti modul de transfer al informatiei: ASCII sau BINAR (prin comenzile ascii si bin ). De multe ori este preferabila folosirea transferului binar.

Comanda get fisier transfera fisierul specificat pe masina locala (se foloseste mget daca transferam o lista de fisiere).
Daca dorim sa transferam un fisier de pe masina locala pe masina de la distanta, vom utiliza comenzile put fisier si mput fisier.

Pentru inchiderea conexiunii se tasteaza comanda close, iar pentru terminarea sesiunii ftp se foloseste quit.

Arhivele FTP sunt disponibile si astazi, ele continand milioane de fisiere de date. Accesul la acestea este ceva mai dificil pentru utilizatorii obisnuiti sau lenesi ==> este posibil accesul la zonele ftp din Internet si prin utilizarea unor aplicatii cu interfata grafica, ce usureaza transferul de fisiere si automatizeaza acest proces.

2.6.5 World Wide Web

Incepand cu momentul standardizarii protocoalelor din familia TCP/IP s-au putut dezvolta retele de mare intindere, ce conectau mii de calculatoare bazate pe platforme hardware diferite si lucrand sub diverse sisteme de operare. Notiunea de comunicare era pusa intr-o noua lumina.
Odata cu dezvoltarea exploziva a retelei Internet, cantitatea de informatie pusa la dispozitia utilizatorilor a crescut exponential. Accesul la informatie nu era insa chiar usor pentru ca se lucra mai mult in linia de comanda (am vorbit mai devreme despre utilizarea protocolului FTP).
In 1989, adica intr-o perioada in care se mai foloseau produse ca Wordstar, a aparut un concept care avea sa dea un nou impuls dezvoltarii Internetului: World Wide Web. Personajul principal al "povestirii" este Tim-Berners Lee, informatician la CERN (Institutul European de Fizica a Particulelor), care a cautat un mod mai simplu de structurare a informatiei necesare proiectelor de cercetare pe care le dezvolta laboratorul. El a dorit sa creeze un mediu de comunicare rapid si usor de utilizat, care sa permita accesul la informatie din orice colt al lumii, prin intermediul retelei Internet.
Conceptul care a stat la baza WWW este conceptul dehypertext . Prin hypertext se intelege o colectie de documente legate intre ele prin legaturi (intre documente diferite sau intre paragrafe ale aceluiasi document), permitand parcurgerea (navigarea ) documentelor de-a lungul acestor legaturi (link ), bidirectional.
Ideea parcurgerii documentelor pe trasee neliniare a aparut inca din 1945, cand un inginer numit V. Bush a propus un sistem ce permitea urmarirea informatiilor in baze de date. Cel care a definit conceptul de hypertext, asa cum este inteles astazi, este Ted Nelson autorul sistemului Xanadu , care era bazat pe noduri ce contin informatie si legaturi catre alte noduri.
Posibilitatea de a realiza legaturi catre fisiere cu imagini si sunete au determinat modificarea conceptului de hypertext, astazi vorbindu-se despre hypermedia . Tim-Berners Lee a avut ideea crearii unor sisteme hypertext independente de sistemul de operare folosit. Link-urile puteau lega nu numai documente locale ci si documente aflate pe masini de la distanta, realizandu-se o "tesatura" la nivel mondial (Web). Traversarea legaturilor dintre documente (navigare= browse) se realiza prin intermediul unui program special denumit browser (navigator Web).
La inceputul anilor '90 a aparut primul navigator grafic, Mosaic, dezvoltat de Marc Andreessen (student la Universitatea din Illinois) si Eric Bina (programator la NCSA (National Center of Supercomputing Applications), care functiona sub XWindows. In 1993, Marc Andreessen si James Clark (unul dintre fondatorii firmai Silicon Graphics) au intemeiat compania Mosaic Communications Corp. (devenita ulterior Netscape Communications).

2.6.6 Protocolul HTTP

Numele este acronimul pentru HyperText Transfer Protocol, protocol ce stabileste regulile de transfer a documentelor hypermedia. Aplicatiile care folosesc protocolul- cei doi parteneri de la capetele unei conexiuni- sunt considerate niste entitati abstracte, din punctul de vedere al protocolului. Entitatile trebuie sa poata formula cereri si/sau receptiona raspunsuri (modelul client-server). Protocolul defineste reguli de comunicare, care permit interpretarea corecta a cererilor si raspunsurilor.
Unul dintre conceptele de baza- preluat si de alte protocoale- este cel de resursa, desemnand un calculator, o baza de date, un document, in general un serviciu. Resursa trebuie sa poata fi referita corect si fara echivoc. Pentru referirea unei resurse in Internet, se foloseste termenul generic URI -Uniform Resource Identifier , care poate specifica o locatie, caz in care se vorbeste de un URL -Universal Resource Locator sau de un nume, caz in care avem de-a face cu un URN- Universal Resource Name . Protocolul se bazeaza pe paradigma cerere/raspuns. Clientul cere accesul la o resursa, aceasta fiind identificata prin URI, iar serverul raspunde printr-o linie de stare (contine, printre altele, un cod de succes sau eroare si, in primul caz, urmeaza datele cerute). Cel mai simplu caz este acela cand conexiunea client-server se realizeaza prin intermediul unei singure conexiuni. In general, exista mai multi intermediari de-a lungul conexiunii. Acestia pot fi de trei feluri:

proxy-este un intermediar sofisticat: primeste cereri adresate unei resurse identificate prin URI, rescrie anumite parti ale mesajului, dupa care retrimite cererea catre serverul adresat initial. El se substituie, practic, clientului initial, mesajul de raspuns va fi primit tot de el, iar proxy-ul trimite clientului raspunsul. Dinspre server nu se mai "vad" clientii adevarati, ei fiind reprezentati de serverul proxy. Serverul proxy poate realiza anumite verificari (de autentificare, de securitate,…), dificil de implementat pe toate masinile conectate la acel proxy. Serverul proxy trebuie inteles ca un reprezentant al unui grup intreg de clienti, negociind cererile acestora adresate "restului lumii".

gateway – este similar unui proxy, dar pe partea de server. Este un fel de camera de primire pusa in fata unui server sau a unui grup de servere. Serverele de "dupa gateway" nu sunt vizibile, ele fiind reprezentate de gateway. Cererile sosite la gateway sunt dirijate spre serverul care poate raspunde cererii, sau celui mai liber dintre serverele ce pot raspunde, in dorinta de a utiliza eficient puterea de calcul. Poarta realizeaza si o conversie de protocol, serverul nefiind obligat sa "cunoasca" protocolul "http"

tunnel – tunelul este un intermediar neinteligent: el transporta date pe care nu le intelege sau interpreteaza in nici un fel intre doua conexiuni. De obicei, la un capat al tunelului se afla un server gateway, iar la capatul celalalt un proxy.

Un mare avantaj al folosirii unui server proxy este acela ca, beneficiind de un cache intern, acesta poate memora cererile facute de clienti. Ulterior, la aparitia unei cereri care s-a mai facut, serverul proxy trimite raspunsul direct, daca acesta a ramas memorat in cache (nu se mai realizeaza conexiunea cu "detinatorul" resursei). Un proxy poate lucra cu mai multi clienti in acelasi timp, putand filtra cererile primite.

Adresarea unei resurse se face prin constructii de forma:

http://adresa_host [:port] /cale/subcale1/…/subcale_n/nume_document

unde:

http- numele protocolului utilizat

adresa_host identifica un server sau un gateway din retea, utilizand adresarea uzuala din DNS (vezi lectia precedenta)

:port specifica portul de date la care se face conexiunea, implicit :80

/cale/subcale1/…/subcale_n/ – calea absoluta pana la documentul nume_document de pe respectivul server

Observatie: resursa referita nu este neaparat un intreg document, ci poate fi doar o fractiune a documentului.

Serverul care raspunde cererilor privitoare la documente hypermedia se numeste server WWW si "cunoaste"

2.7 Nivelul rețea în Internet

La nivelul rețea, Internet-ul poate fi văzut ca o colecție de subrețele sau sisteme autonome (AS-uri – Autonomous Systems) care sunt conectate împreună. Nu există o structură reală, dar există câteva coloane vertebrale majore.

Fig. 14 Internet-ul este o colecție de mai multe rețele interconectate

Acestea sunt construite din linii de înaltă capacitate și rutere rapide. Atașate la coloana vertebrală sunt rețele regionale (de nivel mediu), iar la aceste rețele regionale sunt atașate LAN-urile din multe universități, companii și furnizori de servicii Internet. O schiță a acestei organizări cvasi-ierarhice este dată în figura 1.2.

Liantul care ține Internet-ul la un loc este protocolul de nivel rețea, numit IP (Internet Protocol – Protocolul Internet). Spre deosebire de protocoalele mai vechi de rețea, acesta a fost proiectat de la început având în vedere interconectarea rețelelor. O metodă bună de a gândi nivelul rețea este aceasta. Sarcina lui este de a oferi cu eforturi maxime o cale pentru a transporta datagrame de la surse la destinație, fără a ține seama dacă aceste mașini sunt sau nu în aceeași rețea sau dacă sunt sau nu alte rețele între ele.

Comunicația în Internet funcționează după cum urmează. Nivelul transport preia șiruri de date și le sparge în datagrame. În teorie, datagramele pot avea fiecare până la 64 Kocteți, dar în practică, ele sunt de obicei în jurul valorii de 1500 octeți. Fiecare datagramă este transmisă prin Internet, fiind eventual fragmentată în unități mai mici pe drum. Când toate bucățile ajung în sfârșit la mașina destinație, ele sunt reasamblate de nivelul rețea în datagrama originală. Datagrama este apoi pasată nivelului transport, care o inserează în șirul de intrare al procesului receptor.

2.7.1 Protocolul IP

Un loc potrivit pentru a porni studiul nostru despre nivelul rețea în Internet este însuși formatul diagramelor IP. O datagramă IP constă dintr-o parte de antet și o parte de text. Antetul are o parte fixă de 20 de octeți și o parte opțională cu lungime variabilă. Formatul antetului este prezentat în figura 1.3. El este transmis în ordinea big endian (cel mai semnificativ primul): de la stânga la dreapta, cu bitul cel mai semnificativ al câmpului Versiune trimis primul. (Procesorul SPARC este de tip big endian; Pentium este de tip little endian (cel mai puțin semnificativ primul)). Pe mașinile de tip little endian, este necesară o conversie prin program atât la transmisie cât și la recepție.

Fig. 15 Antetul IP (protocolul Internet)

Câmpul Versiune memorează cărei versiuni de protocol îi aparține datagrama. Prin includerea unui câmp versiune în fiecare datagramă, devine posibil ca tranziția dintre versiuni să țină luni, sau chiar ani, cu unele mașini rulând vechea versiune, iar altele rulând-o pe cea nouă.

Din moment ce lungimea antetului nu este constantă, un câmp din antet, IHL, este pus la dispoziție pentru a spune cât de lung este antetul, în cuvinte de 32 de octeți. Valoarea minimă este 5, care se aplică atunci când nu sunt prezente opțiuni. Valoarea maximă a acestui câmp de 4 biți este 15, ceea ce limitează antetul la 60 octeți și astfel, câmpul de opțiuni la 40 octeți. Pentru unele opțiuni, cum ar fi cea care înregistrează calea pe care a mers un pachet, 40 de octeți sunt mult prea puțini, făcând această opțiune nefolositoare.

Câmpul Tip serviciu permite gazdei să comunice subrețelei ce tip de serviciu dorește. Sunt posibile diferite combinații de fiabilitate și viteză. Pentru vocea digitizată, livrarea rapidă are prioritate față de transmisia corectă. Pentru transferul de fișiere, transmisia fără erori este mult mai importantă decât transmisia rapidă.

Câmpul însuși conține (de la stânga la dreapta), un câmp de 3 biți Precedență, trei indicatori (flags), D, T și R, plus 2 biți nefolosiți. Câmpul Precedență este o prioritate, de la 0 (normal) la 7 (pachet de control al rețelei). Cei trei biți indicatori permit gazdei să specifice ce o afectează cel mai mult din mulțimea Delay (Întârziere), Throughput (Productivitate), Reliability (Fiabilitate). În teorie, aceste câmpuri permit ruterelor să ia decizii între, de exemplu, o legătură prin satelit cu o productivitate mare și o întârziere mare sau o linie dedicată cu o productivitate scăzută și o întârziere mică. În practică, ruterele curente ignoră total câmpul Tip serviciu.

Lungimea totală include totul în datagramă – atât antet cât și date. Lungimea maximă este de 65535 octeți. În prezent, această limită superioară este tolerabilă, dar în viitoarele rețele cu capacități de gigaocteți vor fi necesare datagrame mai mari.

Câmpul Identificare este necesar pentru a permite gazdei destinație să determine cărei datagrame aparține un nou pachet primit. Toate fragmentele unei datagrame conțin aceeași valoare de Identificare.

Urmează un bit nefolosit și apoi două câmpuri de 1 bit. DF vine de la Don’t Fragment (A nu se fragmenta). Acesta este un ordin dat rutelor să nu fragmenteze datagrama pentru că destinația nu este capabilă să asambleze piesele la loc. De exemplu, când un calculator pornește, memoria sa ROM poate cere să i se trimită o imagine de memorie ca o singură datagramă. Prin marcarea datagramei cu bitul DF, emițătorul știe că aceasta va ajunge într-o singură bucată, chiar dacă aceasta înseamnă că datagrama trebuie să evite o rețea cu pachete mai mici pe calea cea mai bună și să aleagă o rută suboptimală. Este necesar ca toate mașinile să accepte fragmente de 576 octeți sau mai mici.

MF vine de la More Fragments (fragmente adiționale). Toate fragmentele, cu excepția ultimului, au acest bit activat. El este necesar pentru a ști când au ajuns toate fragmentele unei datagrame.

Deplasamentul fragmentului spune unde este locul fragmentului curent în cadrul datagramei. Toate fragmentele dintr-o datagramă, cu excepția ultimului, trebuie să fie multiplu de 8 octeți – unitatea de fragmentare elementară. Din moment ce sunt prevăzuți 13 biți, există un maxim de 8192 de fragmente pe datagramă, obținându-se o lungime maximă a datagramei de 65536 octeți, cu unul mai mult decât câmpul Lungime totală.

Câmpul Timp de viață este un contor folosit pentru a limita durata de viață a pachetelor. Este prevăzut să contorizeze timpul în secunde, permițând un timp maxim de viață de 255 secunde. El trebuie decrementat de mai multe ori când stă la coadă un timp îndelungat în ruter. În practică se contorizează doar salturile. Când ajunge la valoarea zero, pachetul este eliminat și se trimite înapoi la gazda sursă un pachet de avertisment. Această facilitate previne hoinăreala la infinit a datagramelor, ceea ce se poate întâmpla dacă tabelele de dirijare devin incoerente.

Când nivelul rețea a asamblat o datagramă completă, are nevoie să știe ce să facă cu ea. Câmpul Protocol spune cărui proces de transport trebuie să-l predea. TCP este o posibilitate dar tot așa sunt și UDP și alte câteva. Numerotarea protocoalelor este globală la nivelul întregului Internet și este definită în RFC 1700.

Suma de control a antetului verifică numai antetul. O astfel de sumă de control este utilă pentru detectarea erorilor generate de locații de memorie proaste din interiorul unui ruter. Algoritmul este de a aduna toate jumătățile de cuvinte, de 16 biți, atunci când acestea sosesc, folosind aritmetică în complement față de unu și păstrarea complementului față de unu al rezultatului. Pentru scopul acestui algoritm, suma de control a antetului este presupusă a fi zero după sosire. Acest algoritm este mai robust decât folosirea unei adunări normale. Observați că suma de control a antetului trebuie recalculată la fiecare salt, pentru că cel puțin un câmp se schimbă întotdeauna (câmpul timp de viață), dar se pot folosi trucuri pentru a accelera calculul.

Adresa sursei și Adresa destinației indică numărul de rețea și numărul de gazdă. Vom discuta adresele Internet în secțiunea următoare. Câmpul Opțiuni a fost proiectat pentru a oferi un subterfugiu care să permită versiunilor viitoare ale protocolului să includă informații care nu sunt prezente în proiectul original, pentru a permite cercetătorilor să încerce noi idei și pentru a evita alocarea unor biți din antet pentru informații folosite rar. Opțiunile sunt de lungime variabilă. Fiecare începe cu un cod de un octet care identifică opțiunea. Unele opțiuni sunt urmate de un câmp de un octet reprezentând lungimea opțiunii, urmat de unul sau mai mulți octeți de date. Câmpul Opțiuni este completat până la un multiplu de 4 octeți. În acest moment sunt definite cinci opțiuni, așa cum sunt listate în tabelul 1.1, dar nu toate ruterele le suportă pe toate.

Opțiunea Securitate menționează cât de secretă este informația. În teorie, un ruter militar poate folosi acest câmp pentru a menționa că nu se dorește o dirijare prin anumite țări pe care militarii le consideră a fi “băieții răi”. În practică, toate ruterele îl ignoră, deci singura sa funcție practică este să ajute spionii să găsească mai ușor lucrurile de calitate.

Tabelul 16 Opțiuni IP

Opțiunea Dirijare strictă pe baza sursei dă calea completă de la sursă la destinație ca o secvență de adrese IP. Datagrama este obligată să urmărească această cale precisă. Ea este deosebit de utilă pentru administratorii de sistem pentru a trimite pachete de urgență atunci când tabelele de dirijare sunt distruse sau pentru a realiza măsurători de timp.

Opțiunea Dirijare aproximativă pe baza sursei cere ca pachetul să traverseze o listă specificată de rutere și în ordinea specificată, dar este permisă trecerea prin alte rutere pe drum. În mod normal, această opțiune ar putea oferi doar câteva rutere, pentru a forța o anumită cale. De exemplu, pentru a forța un pachet de la Londra la Sydney să meargă spre vest în loc de est, această opțiune poate specifica rutere în New York, Los Angeles și Honolulu. Această opțiune este foarte utilă atunci când motive politice sau economice dictează trecerea prin anumite țări sau evitarea lor.

Opțiunea Înregistrează calea indică ruterelor de pe cale să-și adauge adresele lor IP la câmpul opțiune. Aceasta permite administratorilor de sistem să localizeze pene în algoritmii de dirijare. Când rețeaua ARPANET a fost înființată, nici un pachet nu trecea vreodată prin mai mult de nouă rutere, deci 40 de octeți pentru opțiuni au fost destui. Așa cum s-a menționat anterior, acum dimensiunea este prea mică.

În sfârșit, opțiunea Amprentă de timp este similară opțiunii Înregistrează ruta, cu excepția faptului că, în plus față de înregistrarea adresei sale de 32 de biți, fiecare ruter înregistrează și o amprentă de timp de 32 de biți. Și această opțiune este folosită în special pentru depanarea algoritmilor de dirijare

2.7.2 Adrese IP

Fiecare gazdă și ruter din Internet are o adresă IP, care codifică adresa sa de rețea și de gazdă. Combinația este unică: nu există două mașini cu aceeași adresă IP. Toate adresele IP sunt de 32 de biți lungime și sunt folosite în câmpurile Adresă sursă și Adresă destinație ale pachetelor IP. Formatele folosite pentru adrese IP sunt ilustrate în figura 1.4. Acele mașini care sunt conectate la mai multe rețele au adrese diferite în fiecare rețea.

Fig. 17 Formatul adreselor IP

Formatele de clasă A, B, C și D permit până la 126 rețele cu 16 milioane de gazde fiecare, 16.382 rețele cu până la 64K gazde, 2 milioane de rețele (de exemplu LAN-uri) cu până la 254 gazde fiecare și multicast (trimitere multiplă), în care fiecare datagramă este direcționată mai multor gazde. Adresele care încep cu 11110 sunt rezervate pentru o folosire ulterioară. Zeci de mii de rețele sunt conectate acum la Internet și numărul se dublează în fiecare an. Numerele de rețea sunt atribuite de NIC (Network Information Center – Centrul de Informații de Rețea) pentru a evita conflictele.

Adresele de rețea, care sunt numere de 32 de biți, sunt scrise în mod uzual în notația zecimală cu punct. În acest format, fiecare din cei 4 octeți este scris în zecimal, de la 0 la 255. De exemplu, adresa hexazecimală C0290614 este scrisă ca 192.41.6.20. Cea mai mică adresă IP este 0.0.0.0 și cea mai mare este 255.255.255.255.

Valorile 0 și –1 au semnificații speciale, așa cum se arată în figura 1.5. Valoarea 0 înseamnă rețeaua curentă sau gazda curentă. Valoarea –1 este folosită ca o adresă de difuzare pentru a desemna toate gazdele din rețeaua indicată.

Fig. 18 Adrese IP speciale

Adresa IP 0.0.0.0 este folosită de gazde atunci când sunt pornite, dar nu mai este folosită ulterior. Adresele IP cu 0 ca număr de rețea se referă la rețeaua curentă. Aceste adrese permit ca mașinile să refere propria rețea fără a cunoaște numărul de rețea (dar ele trebuie să cunoască clasa adresei pentru a ști câte zerouri să includă). Adresele care constau numai din 1-uri permit difuzarea în rețeaua curentă, în mod uzual LAN. Adresele cu un număr exact de rețea și numai 1-uri în câmpul gazdă permit mașinilor să trimită pachete de difuzare în LAN-uri la distanță, aflate oriunde în Internet. În final, toate adresele de forma 127.xx.yy.zz sunt rezervate pentru testări în buclă locală (loopback). Pachetele trimise către această adresă nu sunt trimise prin cablu; ele sunt prelucrate local și tratate ca pachete sosite. Aceasta permite pachetelor să fie trimise către rețeaua locală fără ca emițătorul să cunoască numărul său. Această facilitate este folosită de asemenea pentru depanarea programelor de rețea.

2.7.3 Subrețele

Așa cum am văzut, toate gazdele dintr-o rețea trebuie să aibă același număr de rețea. Această proprietate a adresării IP poate crea probleme când rețeaua crește. De exemplu, să considerăm o companie care intră în Internet cu un LAN de clasă C. Pe măsură ce timpul trece, poate achiziționa mai mult de 254 de mașini, deci are nevoie de o a doua adresă de clasă C. Ca o altă alternativă, compania poate achiziționa un al doilea LAN de un tip diferit și ar dori o adresă IP separată pentru rețea (LAN-urile pot fi interconectate prin punți pentru a forma o singură rețea IP, dar punțile au propriile probleme). În cele din urmă, se poate ajunge la multe LAN-uri, fiecare cu ruterul propriu și fiecare cu propriul număr de rețea de clasă C.

Pe măsură ce numărul de rețele locale distincte crește, administrarea lor poate deveni o adevărată durere de cap. De fiecare dată când este instalată o nouă rețea, administratorul de sistem trebuie să contacteze NIC pentru a obține un nou număr de rețea. Apoi acest număr trebuie anunțat în toată lumea. Mai mult, mutarea unei mașini dintr-un LAN în altul necesită schimbarea adresei sale IP, care poate însemna la rândul său modificarea fișierelor de configurare și de asemenea anunțarea în lume a noii adrese IP. Dacă vreunei alte mașini îi este dată adresa IP abia eliberată, acea mașină va primi poșta electronică și alte date destinate mașinii originale până când adresa s-a propagat în toată lumea.

Soluția acestor probleme este să se permită ca o rețea să fie divizată în mai multe părți pentru uz intern, dar pentru lumea exterioară să se comporte ca o singură rețea. În literatura Internet, aceste părți sunt numite subrețele. Această utilizare intră în conflict cu termenul “subrețea”, care înseamnă mulțimea tuturor ruterelor și liniilor de comunicație dintr-o rețea. Din fericire, va fi clar din context care semnificație este atribuită. În această secțiune, definiția folosită va fi cea nouă. Dacă această companie în dezvoltare pornea cu o adresă de clasă B în loc de una de clasă C, putea începe simplu prin numerotarea gazdelor de la 1 la 254. Când sosea al doilea LAN, se putea decide, de exemplu, să se împartă numărul de gazdă de 16 biți într-un număr de subrețea de 6 biți și un număr de gazdă de 10 biți, cum se arată în figura 1.6. Această împărțire permite 62 de LAN-uri (0 și –1 sunt rezervate), fiecare cu până la 1022 gazde.

Fig. 19 Una din căile de a crea o subrețea dintr-o rețea de clasă B

În afara rețelei, împărțirea în subrețele nu este vizibilă, astfel încât alocarea unei noi subrețele nu necesită contactarea NIC sau schimbarea unor baze de date externe. În acest exemplu, prima subrețea poate folosi adrese IP începând de la 130.50.4.1, cea de-a doua poate începe de la 130.50.8.1 și așa mai departe.

Pentru a vedea cum funcționează subrețelele, e necesar să explicăm cum sunt procesate pachetele IP într-un ruter. Fiecare ruter are o tabelă ce memorează un număr de adrese IP de forma (rețea, 0) și un număr de adrese IP de forma (această-rețea, gazdă). Primul tip indică cum se ajunge la rețelele la distanță. Al doilea tip spune cum se ajunge la gazdele locale. Cu fiecare tabelă este asociată interfața de rețea care se folosește pentru a ajunge la destinație și câteva alte informații.

Când sosește un pachet IP, adresa destinație este căutată în tabela de dirijare. Dacă pachetul este pentru o rețea aflată la distanță, el este trimis ruterului următor prin interfața specificată în tabelă. Dacă este o gazdă locală (de exemplu în LAN-ul ruterului), pachetul este trimis direct către destinație. Dacă rețeaua nu este prezentă, pachetul este trimis unui ruter implicit care are tabele mai extinse. Acest algoritm înseamnă că fiecare ruter trebuie să memoreze numai rețele și gazde, nu perechi (rețea, gazdă), reducând considerabil dimensiunea tabelelor de dirijare.

Când este introdusă împărțirea în subrețele, tabelele de dirijare sunt schimbate, adăugând intrări de forma (această-rețea, subrețea, 0) și (această-rețea, această-subrețea, gazdă). Astfel un ruter din subrețeaua k știe cum să ajungă la toate celelalte subrețele și, de asemenea, cum să ajungă la toate gazdele din subrețeaua k. El nu trebuie să știe detalii referitoare la gazde din alte subrețele. De fapt, tot ceea ce trebuie schimbat este de a impune fiecărui ruter să facă un ȘI logic cu masca de subrețea a rețelei (vezi figura 1.6), pentru a scăpa de numărul de gazdă și a căuta adresa rezultată în tabelele sale (după ce determină cărei clase de rețele aparține). De exemplu, asupra unui pachet adresat către 130.50.15.6 care ajunge la un ruter din subrețeaua 5 se face un ȘI logic cu masca de subrețea din figura 1.6 pentru a obține adresa 130.50.12.0. Această adresă este căutată în tabelele de dirijare pentru a se găsi cum se ajunge la gazdele din subrețeaua 3. Ruterul din subrețeaua 5 este astfel ușurat de munca de a memora toate adresele de nivel de legătură de date ale altor gazde decât cele din subrețeaua 5. Împărțirea în subrețele reduce astfel spațiul tabelelor de dirijare prin crearea unei ierarhii pe trei niveluri.

2.7.4 Modelul serviciului TCP

Serviciul TCP este obținut prin crearea atât de către emițător cât și de către receptor a unor puncte finale, numite socluri (sokets). Fiecare soclu are un număr de soclu (adresă) format din adresa IP a mașinii gazdă și un număr de 16 biți, local gazdei respective, numit port. Port este numele TCP pentru un TSAP. Pentru a obține o conexiune TCP, trebuie stabilită explicit o conexiune între un soclu de pe mașina emițătoare și un soclu de pe mașina receptoare. Apelurile de soclu sunt prezentate în tabelul 20.

Tabelul 20 Primitivele pentru socluri TCP

Un soclu poate fi folosit la un moment dat pentru mai multe conexiuni. Altfel spus, două sau mai multe conexiuni se pot termina la același soclu. Conexiunile sunt identificate prin identificatorii soclurilor de la ambele capete, adică (soclu 1, soclu 2). Nu este folosit nici un alt număr sau identificator de circuit virtual.

Numerele de port mai mici decât 256 se numesc porturi general cunoscute și sunt rezervate serviciilor standard. De exemplu, orice proces care dorește să stabilească o conexiune cu o mașină gazdă pentru a transfera un fișier utilizând FTP, se poate conecta la portul 21 al mașinii destinație pentru a contacta demonul său FTP. Similar, portul 23 este folosit pentru a stabili o sesiune de lucru la distanță utilizând TELNET. Lista porturilor general cunoscute este conținută în RFC 1700.

Toate conexiunile TCP sunt duplex integral și punct-la-punct. Duplex integral înseamnă că traficul se poate desfășura în ambele sensuri în același timp. Punct-la-punct indică faptul că fiecare conexiune are exact două puncte finale. TCP nu suportă difezarea parțială sau totală.

O conexiune TCP este un flux de octeți și nu un flux de mesaje. Dimensiunile mesajelor nu se conservă de la un capăt la celălalt. De exemplu, dacă procesul emițător execută patru scrieri de câte 512 octeți pe un canal TCP, aceste date pot fi livrate procesului receptor ca patru fragmente (chunks) de 512 octeți, două fragmente de 1024 octeți, un singur fragment de 2048 octeți sau în orice alt mod.

Nu există posibilitatea ca receptorul să determine numărul de unități în care a fost scrisă informația.

În UNIX, aceeași proprietate o au și fișierele. Cititorul unui fișier nu poate spune dacă fișierul a fost scris bloc cu bloc, octet cu octet sau tot dintr-o dată. Ca și un fișier UNIX, programele TCP nu au nici cea mai vagă idee despre semnificația octeților și nici cel mai mic interes pentru a afla acest lucru. Un octet este pur și simplu un octet.

Fig. 21 (a) Patru segmente de 512 octeți au fost trimise ca datagrame IP separate. (b) Livrarea celor 2048 octeți către aplicație, printr-un singur apel read

Atunci când o aplicație trimite date către TCP, TCP-ul le poate expedia imediat sau le poate reține într-un tampon (în scopul colectării unei cantități mai mari de informație pe care să o expedieze toată odată), după bunul său plac. Cu toate acestea, câteodată, aplicația dorește explicit ca informația să fie expediată imediat. De exemplu, să presupunem că un utilizator este conectat la o mașină la distanță. După ce a fost terminată o linie de comandă și s-a tastat Return, este esențial ca linia să fie imediat expediată către mașina de la distanță și să nu fie memorată până la terminarea următoarei lini. Pentru a forța expedierea, aplicația poate folosi indicatorul PUSH, care îi semnalează TCP-ului să nu întârzie procesul de transmisie.

Unele din primele aplicații foloseau indicatorul PUSH ca un fel de marcaj pentru a delimita marginile mesajelor. Deși acest truc funcționează câteodată, uneori el eșuează datorită faptului că, la recepție, nu toate implementările TCP-ului transmit aplicației indicatorul PUSH. Mai mult decât atât, dacă mai multe indicatoare PUSH apar înainte ca primul să fi fost transmis (de exemplu, pentru că linia de legătură este ocupată). TCP-ul este liber să colecteze toată informația referită de către aceste indicatoare într-o singură datagramă IP, fără să includă nici un separator între diferitele sale părți.

O ultimă caracteristică a serviciului TCP care merită menționată aici constă în informația urgentă. Atunci când un utilizator apasă tasta DEL sau CTRL-C pentru a întrerupe o prelucrare la distanță, aflată deja în execuție, aplicația emițător plasează o informație de control în fluxul de date și o furnizează TCP-ului împreună cu indicatorul URGENT. Acest eveniment impune TCP-ului întreruperea acumulării de informație și transmisia imediată a întregii informații disponibile deja pentru conexiunea respectivă.

Atunci când informația urgentă este recepționată la destinație, aplicația receptoare este întreruptă (de exemplu prin emisia unui semnal, în terminologie UNIX), astfel încât, eliberată de orice altă activitate, aplicația să poată citi fluxul de date și să poată regăsi informația urgentă. Sfârșitul informației urgente este marcat, astfel încât aplicația să știe când se termină informația. Începutul informației urgente nu este marcat. Este sarcina aplicației să determine acest început. Această schemă furnizează de fapt un rudiment de mecanism de semnalizare, orice alte detalii fiind lăsate la latitudinea aplicației.

2.7.5 Protocolul TCP

În această secțiune vom prezenta un punct de vedere general asupra protocolului TCP, pentru a ne concentra apoi, în secțiunea care îi urmează, asupra antetului protocolului, câmp cu câmp. Fiecare octet al unei conexiuni TCP are propriul său număr de secvență, reprezentat pe 32 biți. Pentru o mașină care utilizează la viteza maximă o rețea locală de 10Mbps, deși este teoretic posibil ca numerele de secvență să depășească valoarea maximă reprezentabilă pe 32 de biți într-o singură oră, în realitate durează mai mult. Numerele de secvență sunt utilizate atât pentru confirmări cât și pentru mecanismul de secvențiere, acesta din urmă utilizând câmpuri separate de 32 de biți din antet.

Entitățile TCP de transmisie și de recepție interschimbă informație sub formă de segmente. Un segment constă dintr-un antet de exact 20 de octeți (plus o parte opțională) urmat de zero sau mai mulți octeți de date. Programul TCP este cel care decide cât de mari trebuie să fie aceste segmente. El poate acumula informație provenită din mai multe scrieri într-un singur segment sau poate fragmenta informația provenind dintr-o singură scriere în mai multe segmente. Există două limite care restricționează dimensiunea unui segment. În primul rând, fiecare segment, inclusiv antetul TCP, trebuie să încapă în cei 65.535 de octeți de informație utilă IP. În al doilea rând, fiecare rețea are o unitate maximă de transfer sau MTU (Maximum Transfer Unit), deci fiecare segment trebuie să încapă în acest MTU. În realitate, MTU este în general de câteva mii de octeți, definind astfel o limită superioară a dimensiunii unui segment. Dacă un segment parcurge o secvență de rețele fără a fi fragmentat și ajunge apoi la o rețea al cărui MTU este mai mică decât dimensiunea segmentului, ruterul de la frontiera acelei rețele fragmentează segmentul în două sau mai multe segmente mai mici.

Un segment care este prea mare pentru o rețea pe care o tranzitează poate fi spart de către ruter în mai multe segmente. Fiecare nou segment obține propriile antete TCP și IP, astfel încât fragmentarea realizată de către rutere mărește încărcarea totală în rețea (deoarece fiecare segment este mărit cu antetul de 40 de octeți de informație suplimentară).

Protocolul de bază utilizat de către entitățile TCP este protocolul cu fereastră glisantă. Atunci când un emițător transmite un segment, el pornește un cronometru.

Atunci când un segment ajunge la destinație, entitatea TCP receptoare trimite înapoi un segment (cu informație utilă, dacă aceasta există sau fără, în caz contrar) care conține totodată și numărul de secvență următor pe care aceasta se așteaptă să-l recepționeze. Dacă cronometrul emițătorului depășește o anumită valoare înaintea primirii confirmării, emițătorul retransmite segmentul neconfirmat.

Deși acest protocol pare simplu, pot apărea multe situații particulare pe care le vom prezenta mai jos. De exemplu, având în vedere că segmentele pot fi fragmentate, este posibil ca o parte a segmentului să fie recepționată și confirmată de către entitatea TCP receptoare, în timp ce restul să fie pierdut. De asemenea, segmentele pot ajunge într-o ordine arbitrară, de exemplu, octeții 3072-4095 pot fi recepționați, dar nu pot fi confirmați datorită absenței octeților 2048-3071. Segmentele pot de asemenea întârzia pe drum un interval de timp suficient de mare pentru ca emițătorul să detecteze o depășire a cronometrului și să le retransmită. Dacă segmentul retransmis parcurge o cale diferită de cea parcursă de segmentul original și este fragmentat în mod diferit, atunci unii biți sau unele porțiuni, atât din segmentul original cât și din segmentul duplicat, pot fi recepționate sporadic, ceea ce impune o tratare atentă, astfel încât fluxul de octeți să fie fiabil. În sfârșit, cu atâtea rețele care compun Internetul, este posibil ca un segment să întâlnească în drumul său o rețea congestionată sau chiar temporar nefuncțională.

TCP trebuie să fie pregătit să facă față unor astfel de situații și să le rezolve într-o manieră eficientă. Un efort considerabil a fost dedicat optimizării performanțelor fluxurilor TCP, ținându-se cont inclusiv de probleme legate de rețea. În continuare vor fi prezentați un număr de algoritmi utilizați de numeroase implementări TCP.

2.7.6 Antetul segmentului TCP

În figura 1.8 este prezentată structura unui segment TCP. Fiecare segment începe cu un antet format dintr-o structură fixă de 20 de octeți. Antetul fix poate fi urmat de un set de opțiuni asociate antetului. În continuarea opțiunilor, dacă ele există, pot urma până la 65.535-20-20=65.515 de octeți de date, unde primii 20 reprezintă antetul IP, iar al doilea antetul TCP. Segmentele care nu conțin octeți de date sunt nu numai permise, dar și utilizate în mod frecvent pentru confirmări și mesaje de control.

Să disecăm acum structura antetului TCP, câmp cu câmp. Câmpurile Port sursă și Port destinație identifică punctele finale ale conexiunii. Fiecare mașină poate decide pentru sine modalitatea de alocare a porturilor sale mai mari de 256. Un port formează împreună cu adresa IP a mașinii sale un unic TSAP de 48 de biți. Conexiunea este identificată de ambele numere ale soclurilor sursă și destinație.

Fig. 22 Antetul TCP

Câmpurile Număr de secvență și Număr de confirmare au semnificația funcțiilor lor uzuale. Trebuie notat că cel din urmă indică octetul următor așteptat și nu ultimul octet recepționat în mod corect. Ambele câmpuri au lungimea de 32 de biți, deoarece într-un flux TCP fiecare bit de informație este numerotat.

Lungimea antetului TCP indică numărul de cuvinte de 32 de biți care sunt conținute în antetul TCP. Această informație este utilă, deoarece câmpul Opțiuni este de lungime variabilă, proprietate pe care o transmite astfel și antetului. Tehnic vorbind, acest câmp indică în realitate începutul datelor din segment, măsurat în cuvinte de 32 de biți, dar cum acest număr este identic cu lungimea antetului în cuvinte, efectul este același.

Urmează un câmp de șase biți care este neutilizat. Faptul că acest câmp a supraviețuit intact mai mult de un deceniu, este o mărturie despre cât de bine a fost proiectat TCP-ul. Protocoale mai prost concepute ar fi avut nevoie de el pentru a corecta erori ale proiectării inițiale.

Urmează acum șase indicatori de câte un bit. URG este poziționat pe 1 dacă Indicatorul Urgent este valid. Indicatorul Urgent este folosit pentru a indica deplasamentul în octeți față de numărul curent de secvență la care se găsește informația urgentă. O astfel de facilitate suplinește mesajele de întrerupere. Așa cum am menționat deja anterior, această facilitate suplinește mesajele de întrerupere. Așa cum am menționat deja anterior, această facilitate reprezintă esența modului în care emițătorul poate transmite un semnal receptorului fără ca TCP-ul în sine să fie cauza întreruperii.

Bitul ACK este poziționat pe 1 pentru a indica faptul că Numărul de confirmare este valid. În cazul în care ACK este poziționat pe 0, segmentul în discuție nu conține o confirmare și câmpul Număr de confirmare este ignorat.

Bitul PSH indică informația FORȚATĂ. Receptorul este rugat respectuos să livreze aplicației informația respectivă imediat ce este recepționată și să nu o memoreze în așteptarea umplerii tampoanelor de comunicație (lucru care, alminteri, ar fi făcut din rațiuni de eficiență).

Bitul RST este folosit pentru a desființa o conexiune care a devenit inutilizabilă datorită defecțiunii unei mașini sau oricărui alt motiv. El este de asemenea utilizat pentru a refuza un segment invalid sau o încercare de deschidere a unei conexiuni. În general, recepționarea unui segment având acest bit poziționat indică o problemă care trebuie tratată în funcție de context.

Bitul SYN este utilizat pentru stabilirea unei conexiuni. Cererea de conexiune conține SYN=1 și ACK=0 pentru a indica faptul că acel câmp suplimentar de confirmare nu este utilizat. Răspunsul la o astfel de cerere conține o confirmare, având deci SYN=1 și ACK=1. În esență, bitul SYN este utilizat pentru a indica o CERERE DE CONEXIUNE și o CONEXIUNE ACCEPTATĂ, bitul ACK făcând distincția între cele două posibilități.

Bitul FIN este folosit pentru a încheia o conexiune. El indică faptul că emițătorul nu mai are nici o informație de transmis. Cu toate acestea, după închiderea conexiunii, un proces poate recepționa în continuare date pe o durată nedefinită. Ambele segmente, SYN și FIN, conțin numere de secvență și astfel este garantat faptul că ele vor fi prelucrate în ordinea corectă.

În TCP, fluxul de control este tratat prin ferestre glisante de dimensiune variabilă. Câmpul Fereastră indică numărul de octeți care pot fi trimiși, începând de la octetul confirmat. Un câmp Fereastră de valoare 0 este perfect legal și spune că octeții până la Număr de confirmare –1 inclusiv au fost recepționați, dar receptorul dorește cu ardoare o pauză, așa că mulțumește frumos, dar pentru moment nu dorește continuarea transferului. Permisiunea de expediere poate fi acordată ulterior prin trimiterea unui segment având același Număr de confirmare, dar un câmp Fereastră cu o valoare nenulă.

Este de asemenea prevăzută o Sumă de control, în scopul obținerii unei fiabilități extreme. Această sumă de control este calculată pentru antet, informație și pseudo-antetul conceptual. În momentul calculului, Suma de control TCP este poziționată pe zero, iar câmpul de date este completat cu un octet suplimentar nul, dacă lungimea sa este un număr impar. Algoritmul de calcul al sumei de control este simplu, el adunând toate cuvintele de 16 biți în complement față de 1 și aplicând apoi încă o dată complementul față de 1 asupra sumei. În acest mod, atunci când receptorul aplică același calcul asupra întregului segment, inclusiv asupra Sumei de control, rezultatul ar trebui să fie 0.

Pseudo-antetul conține adresele IP ale mașinii sursă și destinație, de 32 de biți fiecare, numărul de protocol pentru TCP și numărul de octeți al segmentului TCP (incluzând și antetul). Prin includerea pseudo-antetului în calculul sumei de control TCP se pot detecta pachetele care au fost preluate eronat, dar procedând astfel, este negată însăși ierarhia protocolului, deoarece adresa IP aparține nivelului IP și nu nivelului TCP.

Fig. 23 Pseudo-antetul inclus în suma de control TCP

Câmpul Opțiuni a fost proiectat pentru a permite adăugarea unor facilități suplimentare neacoperite de antetul obișnuit. Cea mai importantă opțiune este aceea care permite fiecărei mașini să specifice încărcarea maximă de informație utilă TCP pe care este dispusă să o accepte. Utilizarea segmentelor de dimensiune mare este mai eficientă decât utilizarea segmentelor de dimensiune mică datorită amortizării antetului de 20 de octeți prin cantitatea mai mare de informație utilă. Cu toate acestea, este posibil ca mașini mai puțin performante să nu fie capabile să manevreze segmente foarte mari. În timpul inițializării conexiunii, fiecare parte anunță dimensiunea maximă acceptată și așteaptă de la partener aceeași informație. Câștigă cel mai mic dintre cele două numere. Dacă o mașină nu cunoaște această opțiune, valoarea implicită de informație utilă este de 536 octeți. Este de așteptat ca toate mașinile din Internet să accepte segmente de dimensiune 536+20=556 octeți.

O fereastră de 64K octeți reprezintă adesea o problemă pentru liniile cu o lărgime de bandă mare și/sau cu întârzieri mari. Pe o linie T3 (44.736 Mbps) trimiterea unei ferestre întregi de 64K octeți durează doar 12 msec. Dacă întârzierea propagării dus-întors este de 50 msec (valoarea tipică pentru o linie trans-continentală), emițătorul va aștepta confirmări fiind deci inactiv – ¾ din timp. Pe o conexiune prin satelit, situația este chiar mai rea. O fereastră de dimensiune mare ar permite emițătorului să continue pomparea informației, însă o astfel de dimensiune nu poate fi reprezentată în cei 16 biți ai câmpului Fereastră. În RFC 1323 se propune o opțiune Scală a ferestrei, permițând emițătorului și receptorului să negocieze un factor de scalare a ferestrei. Acest număr permite ambelor părți să deplaseze câmpul Fereastră cu până la 16 biți spre stânga, permițând astfel ferestre de până la 232 octeți. Această opțiune este suportată în prezent de cele mai multe implementări ale TCP-ului.

O altă opțiune propusă de RFC 1106, și care este în prezent implementată pe scară largă, constă în utilizarea unei repetări selective în locul unui protocol cu întoarcere de n pași. Dacă receptorul primește un segment eronat urmat de un număr mare de segmente corecte, protocolul TCP clasic va constata într-un final o depășire de timp și va retrimite toate segmentele neconfirmate, deci și pe acelea care au fost recepționate corect. RFC 1106 introduce NAK-urile pentru a permite receptorului să ceară un anumit segment (sau segmente). După obținerea acestora, el poate confirma toată informația memorată reducând astfel cantitatea de informație retransmisă.

Capitolul III

3. Securitatea rețelelor

Internet este o structură deschisă, la care se poate conecta un număr mare de calculatoare fiind deci greu de controlat. De aceea putem vorbi de vulnerabilitatea rețelelor manifestată pe variate planuri. Un aspect crucial al rețelelor de calculatoare, în special al comunicațiilor prin Internet îl constituie securitatea informațiilor.

Categorii de atacuri asupra rețelelor

Amenințările la adresa securității unei rețele de calculatoare pot avea următoarele origini: dezastre sau calamități naturale, defectări ale echipamentelor, greșeli umane de operare sau manipulare, fraude. Primele trei tipuri de amenințări sunt accidentale, în timp ce ultima este intenționată. Câteva studii de securitate a calculatoarelor estimează că jumătate din costurile implicate de incidente sunt datorate acțiunilor voit distructive, un sfert dezastrelor accidentale și un sfert greșelilor umane. Acestea din urmă pot fi evitate sau, în cele din urmă, reparate printr-o mai bună aplicare a regulilor de securitate (salvări regulate de date, discuri oglindite, limitarea drepturilor de acces).

În amenințările datorate acțiunilor voite, se disting două categorii principale de atacuri: pasive și active.

1) Atacuri pasive – sunt acelea în cadrul cărora intrusul observă informația ce trece -prin "canal", fără să interfereze cu fluxul sau conținutul mesajelor. Ca urmare, se face doar analiza traficului, prin citirea identității părților care comunică și "învățând" lungimea și frecvența mesajelor vehiculate pe un anumit canal logic, chiar dacă conținutul acestora este neinteligibil. Atacurile pasive au următoarele caracteristici comune:

Nu cauzează pagube (nu se șterg sau se modifică date);

Încalcă regulile de confidențialitate;

Obiectivul este de a "asculta" datele schimbate prin rețea; .

Pot fi realizate printr-o varietate de metode, cum ar fi supravegherea legăturilor telefonice sau radio, exploatarea radiațiilor electromagnetice emise, rutarea datelor prin noduri adiționale mai puțin protejate.

2) Atacuri active – sunt acelea în care intrusul se angajează fie în furtul mesajelor, fie -in modificarea, reluarea sau inserarea de mesaje false. Aceasta înseamnă că el _ poate șterge, întârzia sau modifica mesaje, poate să facă inserarea unor mesaje â false sau vechi, poate schimba ordinea mesajelor, fie pe o anumită direcție, fie pe -ambele direcții ale unui canal logic. Aceste atacuri sunt serioase deoarece modifică starea sistemelor de calcul, a datelor sau a sistemelor de comunicații. Există . următoarele tipuri de amenințări active:

Mascarada – este un tip de atac în care o entitate pretinde a fi o altă entitate. De exemplu, un utilizator încearcă să se substitue altuia sau un serviciu pretinde a fi un alt serviciu, în intenția de a lua date secrete (numărul cărții de credit, parola sau cheia algoritmului de criptare). O "mascaradă" este însoțită, de regulă, de o altă amenințare activă, cum ar fi înlocuirea sau modificarea mesajelor;

Reluarea – se produce atunci când un mesaj sau o parte a acestuia este reluată (repetată), în intenția de a produce un efect neautorizat. De exemplu, este posibilă reutilizarea informației de autentificare a unui mesaj anterior. În conturile bancare, reluarea unităților de date implică dublări și/sau alte. modificări nereale ale valorii conturilor;

Modificarea mesajelor – face ca datele mesajului să fie alterate prin modificare, inserare sau ștergere. Poate fi folosită pentru a se schimba beneficiarul unui credit în transferul electronic de fonduri sau pentru a modifica valoarea acelui credit. O altă utilizare poate fi modificarea câmpului destinatar/expeditor al poștei electronice;

Refuzul serviciului – se produce când o entitate nu izbutește să îndeplinească propria funcție sau când face acțiuni care împiedică o altă entitate de la îndeplinirea propriei funcții;

Repudierea serviciului – se produce când o entitate refuză să recunoască un serviciu executat. Este evident că în aplicațiile de transfer electronic de fonduri este important să se evite repudierea serviciului atât de către emițător, cât și de către destinatar.

În cazul atacurilor active se înscriu și unele programe create cu scop distructiv și care afectează, uneori esențial, securitatea calculatoarelor. Există o terminologie care poate fi folosită pentru a prezenta diferitele posibilități de atac asupra unui sistem. Acest vocabular este bine popularizat de "poveștile" despre "hackeri". Atacurile presupun, în general, fie citirea informațiilor neautorizate, fie (în cel mai frecvent caz) distrugerea parțială sau totală a datelor sau chiar a calculatoarelor. Ce este mai grav este posibilitatea potențială de infestare, prin rețea sau copieri de dischete, a unui mare număr de mașini. Dintre aceste programe distructive amintim următoarele:

Virușii – reprezintă programe inserate în aplicații, care se multiplică singure în alte programe din spațiul rezident de memorie sau de pe discuri; apoi, fie saturează complet spațiul de memorie/disc și blochează sistemul, fie, după un număr fixat de multiplicări, devin activi și intră într-o fază distructivă (care este de regulă exponențială);

Bomba software – este o procedură sau parte de cod inclusă intr-o aplicație "normală", care este activată de un eveniment predefinit. Autorul bombei anunță evenimentul, lăsând-o să "explodeze", adică să facă acțiunile distructive programate;

Viermii – au efecte similare cu cele ale bombelor și virușilor. Principala diferență este aceea că nu rezidă la o locație fixă sau nu se duplică singuri. Se mută în permanență, ceea ce îi face dificil de detectat. Cel mai renumit exemplu este Viermele INTERNET ului, care a scos din funcțiune o parte din INTERNET în noiembrie 1988;

Trapele – reprezintă accese speciale la sistem, care sunt rezervate în mod normal pentru proceduri de încărcare de la distanță, întreținere sau pentru dezvoltatorii unor aplicații. Ele permit însă accesul la sistem, eludând procedurile de identificare uzuale;

Calul Troian – este o aplicație care are o funcție de utilizare foarte cunoscută și care, intr-un mod ascuns, îndeplinește și o altă funcție. Nu creează copii. De exemplu, un hacker poate înlocui codul unui program normal de control "login" prin alt cod, care face același lucru, dar, adițional, copiază într-un fișier numele și parola pe care utilizatorul le tastează în procesul de autentificare. Ulterior, folosind acest fișier, hacker-ul va penetra foarte ușor sistemul.

3.1 Modelul de securitate în rețele

Modelul de securitate pentru un calculator seamănă cu o ceapă. Niveluri de securitate înconjoară subiectul ce trebuie protejat. Fiecare nivel izolează subiectul și îl face mai greu de accesat în alt mod decât în cel în care a fost planificat.

1) Securitatea fizică reprezintă nivelul exterior al modelului de securitate și constă, în general, în încuierea echipamentelor informatice într-un birou sau într-o altă incintă. Securitatea fizică merită o considerație specială. Problema cea mai mare o constituie salvările pentru copii de rezervă ale datelor și programelor și siguranța păstrării suporților de salvare. În aceste situații, rețelele locale sunt de mare ajutor: dacă toate fișierele schimbate frecvent rezidă pe un server, aceleași persoane (sigure și de încredere), care lansează salvările pentru mainframe-uri, pot face același lucru și la server. Calculatorul, ca orice piesă costisitoare, ar trebui să fie protejat și. de pericolul furtului. Păstrarea în afara zonelor publice este una dintre cele mai bune forme de protecție. Simpla încuiere a echipamentelor va preveni mutările ascunse precum și furtul. Într-un sistem în care prelucrarea este distribuită, prima măsură de securitate fizică care trebuie avută în vedere este prevenirea accesului la echipamente. Pentru a învinge orice alte măsuri de securitate, trebuie să se dispună de acces fizic la echipamente. Acest lucru este comun tuturor sistemelor de calcul, distribuite sau nu.

2) Securitatea logică constă din acele metode care asigură controlul accesului Ia resursele și serviciile sistemului. Ea are, la rândul ei, mai multe niveluri, împărțite în două grupe mari: niveluri de securitate a accesului (SA) și niveluri de securitate a serviciilor (SS).

3)

Securitatea accesului (SA) cuprinde:

accesul la sistem (AS), care este răspunzător de a determina dacă și când rețeaua este accesibilă utilizatorilor. EI poate fi, de asemenea, răspunzător pentru decuplarea unei stații, ca și de gestiunea evidenței accesului. AS execută, de asemenea, deconectarea forțată, dictată de supervizor. AS poate, de exemplu, să prevină conectarea în afara orelor de serviciu și să întrerupă toate sesiunile, după un anumit timp;

accesul la cont (AC), care verifică dacă utilizatorul care se conectează cu un anumit nume și cu o parolă există și are un profil utilizator valid;

drepturile de acces (DA), care determină ce privilegii de conectare are utilizatorul (de exemplu, contul poate avea sesiuni care totalizează 4 ore pe zi sau contul poate utiliza doar stația 27).

Securitatea serviciilor (SS), care se află sub SA, controlează accesul la serviciile sistem, cum ar fi fire de așteptare, I/O la disc și gestiunea server ului. Din acest nivel fac parte:

controlul serviciilor (CS), care este responsabil cu funcțiile de avertizare și de raportare a stării serviciilor; de asemenea, el activează și dezactivează diferitele servicii;

drepturile la servicii (DS), care determină exact cum folosește un anumit cont un serviciu dat; de exemplu, un cont poate avea numai dreptul de a adăuga fișiere la spooler-ul unei imprimante, dar are drepturi depline, de a adăuga și șterge fișiere, pentru o altă imprimantă.

O dată stabilită conexiunea, SA validează și definește contul. Operațiile ce trebuie executate sunt controlate de SS, care împiedică cererile ce nu sunt specificate în profilul utilizatorului. Accesul intr-un sistem de securitate perfect trebuie să se facă prin aceste niveluri de securitate, de sus în jos. Orice sistem care vă lasă să evitați unul sau mai multe niveluri ale modelului de securitate implică riscul de a fi nesigur.

3.2 Pericole pe Internet

3.2.1 Introducere

În seara zilei de 2 noiembrie 1988, după ora 17, un program ciudat era executat pe mai multe dintre calculatoarele Internet. Acest program aduna informații despre host-uri, rețele și utilizatori și folosea aceste informații pentru a stabili conexiuni rețea și pentru a pătrunde pe alte mașini. El folosea anumite defecte sau slăbiciuni prezente în anumite programe. După această pătrundere, programul se multiplica, iar copia sa încerca infectarea altor sisteme, în aceeași manieră. Chiar dacă programul nu a infectat decât sistemele Sun Microsystems Sun 3 și calculatoarele VAX pe care rulau variante ale lui 4 BSD UNIX, el s-a extins rapid, creând confuzie și consternare în rândul administratorilor de sistem și al utilizatorilor, atunci când aceștia au descoperit invazia produsă în sistemele lor. Deși se cunoștea că UNIX-ul are câteva slăbiciuni de securitate, în special în modul obișnuit de operare în medii deschise, totuși scopul și modul în care acestea au fost folosite a constituit o surpriză mare pentru toată lumea.

Programul era ciudat pentru utilizatori, în special din punctul de vedere al punctelor de apariție. Au fost introduse fișiere neobișnuite în directoarele lusrltmp, iar unele mesaje stranii au apărut în fișierele unor utilitare, cum ar fi sendmail. Totuși, cel mai notabil efect a fost faptul că sistemele au devenit din ce în ce mai încărcate cu procese datorită infectării multiple. Cu trecerea timpului, unele dintre mașini au devenit atât de încărcate, încât nu au mai fost capabile să lucreze; unele mașini au fost blocate complet, atunci când spațiul de evacuare (swaping) sau tabela de procese au fost saturate.

În dimineața zilei de 3 noiembrie, personalul de la Universitatea Berkeley din California și de la Institutul de Tehnologie Massachusetts au "capturat' copii ale programului și au început să le analizeze. Utilizatori din alte locuri au început, de asemenea, să studieze programul și au fost dezvoltate metode de eradicare a acestuia. O caracteristică a programului a ieșit în evidență: modifica resursele sistemului într-un fel care nu putea fi detectat rapid. Au fost alterate fișiere și distruse informațiile, ceea ce a impus căutarea unei soluții. După ora 5 am la mai puțin de 13 ore de la prima descoperire a programului, Computer Systems Research Group de la Berkeley a stabilit un set provizoriu de măsuri, în vederea opririi extinderii. Printre acestea se afla și o modificare la serviciul sendmail și sugestia de a redenumi compilatoarele C și încărcătorul, pentru a preveni utilizarea lor. Aceste sugestii au fost publicate în listele de poștă electronică și prin sistemul de știri din rețeaua Usenet, cu toate că extinderea viermelui a fost împiedicată, cel mai adesea prin deconetarea sistemelor de la INTERNET, în încercarea de a le dezinfecta ulterior.

Pe la orele 9 pm, în aceeași zi, a fost descoperită și publicată la Purdue University o altă metodă simplă pentru stoparea invaziei acestui program. Îmbunătățiri soft au fost anunțate și de către grupul Berkeley, pentru a "astupa" fisurile ce permiteau programului să invadeze sistemele. Tot ceea ce rămânea de făcut era de a se analiza codul care a generat aceste probleme și de a descoperi cine și de ce lansat viermele.

3.3 Cronologia evenimentelor

Este foarte interesant de remarcat viteza și profunzimea cu care Viermele s-a extins și este semnificativ de urmărit rapiditatea cu care a fost identificat și-a oprit utilizându-se aceeași rețea pentru comunicarea între specialiști a rezultatelor. Este, credem noi, foarte interesant și instructiv de urmărit desfășurarea în timp a răspândirii Viermelui, cel mai important eveniment de securitate din istoria INTERNET-ului, dar -este la fel de util de a vedea rapiditatea cu care s-a cristalizat riposta specialiștilor.

2 Noiembrie 1988

17.00. Viermele este executat pe o mașină la Cornell University;

18.00. Mașina prep.ai.mit.edu a lui MIT a fost infectată. Prep era o mașină cu acces public, utilizată pentru stocarea și distribuirea soft-ului prin proiectul GNU. Mașina a fost configurată cu câteva vulnerabilități de securitate de notorietate, care permiteau . utilizatorilor de la distanță să introducă fișiere în sistem;

18.30. Mașina infectată de la Pittsburgh Univerity a infectat o mașină a corporației RAND;

21.00. Viermele este descoperit pe mașinile de la Stanford University; 21.30. Este invadată o primă mașină la Minnesota University;

21.34. Mașina gateway a Universității Berkeley din California este invadată. Se descoperă o neobișnuită incărcare a mașinii cu procese de poștă;

22.34. Este infectată mașina gateway a Universitțăii Princeton;

22.40. Mașini de la Universitatea Norih Carolina sunt infectate și sunt încercări de a invada alte mașini;

22.48. Sunt infectate mașini ale SRI via sendmail (poștă);

22.52. Viemele incearcă să invadeze mașina andrew.cmu.edu de la Universitatea Carnegie-Mellon (poștă);

22.54. Calculatoarele gateway de la Universitatea din MaryJand sunt atacate prin . . procesul din fundal corespunzător programului fingerd;

22.59. Mașinile de la Universitatea din Pennsylvania sunt atacate, dar sunt "insen-sibile". Vor fi depistate 210 încercări de infectare în următoarele 13 ore, prin poștă; 23.48. Calculatorul mimsy.umd.edu de la Universitatea din Maryland este infectat via sendmail (poștă);

23.40. Cercetătorii de la Berkeley descoperă țintele de atac ca fiind sendmail și rsh. Ei incep să închidă serviciile pentru alte rețele, ca măsură de precauție;

23.45. Mașinile de la Dartmouth și Laboratorul de Cercetări Balistice al Armatei (BRL) sunt atacate și infectate (poștă, NCSC);

23.49. Gateway-urile de la Universitatea din Utah sunt infectate. În următoarea oră numărul încercărilor va ajunge la 100;

3 Noiembrie 1988

00.07. Este infectată mașina Univesității din Arizona, prin poștă;

00.21. Este infectată mașina principală a Universității Princeton (un VAX 8650). Numărul încercărilor ajunge la 68 și mașina clachează;

00.33. Este infectată mașina dewey.udel.edu a Universității din Delaware;

01.30. Mașinile de la UCLA sunt infectate;

02.00. Viermele este identificat pe mașinile de la Universitatea Harvard;

02.38. De la Berkeley se transmite un mesaj prin poștă cu conținutul: "Suntem atacați". Domeniile menționate ca fiind infectate sunt: U.C.Berkeley, U.C.San Diego, LLL, Stanford și NASA Ames;

03.15. Sunt infectate mașiniie de la Universitatea din Chicago. Una dintre mașinile de la Departamentuf de fizică suferă 225 de încercări de infectare, via fingerd, de la mașini din Cornell;

03.39. Avertismentul despre Vierme este transmis de la [anonimizat] sub forma: "Este probabil un virus pierdut prin INTERNET.". Urmau trei scurte fraze despre cum să fie oprit Viermele, urmate de "Sper că acestea ajută, dar mai mult, sper că este vorba de o farsă.". Cel ce transmitea s-a dovedit a fi Andy Sudduth de fG Narvard, care a fost sunat prin telefon de presupusul autor al Viermelui, Robert T Morris. Datorită încărcării rețelei și mașinilor, avertismentul nu este propagat ir următoarele 24 de ore;

04.00. Universitatea Colorado este și ea supusă atacului; 04.00. Mașinile de la Universitatea Purdue sunt infectate;

05.54. Se transmite prin poștă un avertisment cu privire la Virme și, în plus, c măsură de protecție minimală referitoare la programul sendmail. Mesajul său este preluat de grupul de știri Usenix;

06.45. Se sună la National Computer Security Center și se informează despre Vierme;

07.00. Mașini ale Institutului de Tehnologie din Georgia sunt infectate. Mașina gateway (un VAX 780) suferă peste 30 de încercări;

07.30. Se descoperă infectarea mașinilor de la Universitatea Purdue. Mașinile sun atât de încărcate, încât nu se puteau citi mesajele primite prin poștă, inclusiv mesajul despre Vierme;

08.07. La Berkeley se identifică atacul Viermelui prin intermediul programului fingerd, dar mesajul trimis prin poștă nu poate fi citit mai bine de 13 ore;

08.18. Se retransmite avertismentul despre Vierme grupului de știri Usene news.announce.important și altor 30 de site-uri. Acestea au fost primele informații despre Vierme, aflate de cei vizați în cursul întregii zile, acest grup a schimb de mesaje prin poștă cu privire la progresul și comportarea Viermelui;

10.36. Se transmite prima descriere cu privire la modul de lucru al Viermelui cele din lista nntp-managers. Atacul prin programul fingerd la această oră încă nu est cunoscut;

11.30. Defense Communications Agency inhibă bridge-urile de poștă între Arpane și Milnei;

13.00. Sunt blocate peste 130 de mașini ale SRI;'

14.50. Personalul de la Purdue descoperă mașini infectate cu variante noi de programe sendmail instalate. Se transmite un mesaj prin poștă referitor la faptul c noua versiune de sendmail nu constituie o măsură de protecție suficientă. Acel lucru era cunoscut deja în multe locuri, inclusiv la Berkeley și MIT de mai bine câte ore, dar nu se publicase încă nimic;

16.00. Administratorii de sisteme de la Purdue se întâlnesc pentru a stabili strateg locală. Versiunile de Vierme capturate au furnizat o variantă de prevenire a infecție prin crearea unui director cu numele sh în directorul lusr tmp;

18.00. La Purdue s-a descoperit cum lucrează Virmele, cu defecțiunea din program finger,

19.00. La MIT, s-a reconstituit atacul Viermelui prin intermediul programului fingerd' și s-a telefonat la Berkeley pentru a se anunța aceasta. Nu a fost transmis nimic prin poștă despre acest mod de atac;

19.19. S-au transmis noile îmbunătățiri aduse programelor sendmail și fingerd, dar aceste mesaje au fost recepționate abia a doua zi;

19.37. De la Universitatea din Rochester a fost trimisă prin poștă o descriere a atacului prin intermediul programului fingerd;

21.30. Grupul de la Berkeley începe decompilarea Viermelui, pentru a determina sursa în C.

4 Noiembrie 1988

00.50. Se trimite prin poștă o descriere a atacului prin intermediul fingerd. Se fac și primele comentarii referitoare la stilul de cod al autorului Viermelui;

05.00. Grupul MiT încheie decompilarea codului;

09.00. Grupul de la Berkeley încheie decompilarea codului;

11.00. Sunt reinstalate bridge-urile de poștă între Milnet-Arpanet;

14.20. Se retransmit prin poștă modificările aduse la programul fingerd;

15.36. De la MIT, se transmit clarificări asupra modului de operare a Viermelui; · 17.2d. Se transmite un set final de îmbunătățiri pentru sendmail și fingerd;

21.30. Autorul Viermelui este identificat din două surse independente ca fiind Robert T Morris, fiut directorului științific al Centrului Național de Securitate a Calcutatoarelor (GNSC), Robert Morris.

Până pe 8 noiembrie, marea majoritate a mașinilor au fost reconectate la INTERNET și traficul a revenit la normal. În aceeași dimineață, aproximativ 50 de cercetători s-au intâlnit cu oficialităti din Centru! National de Securitate. Cu această ocazie, au fost identificate direciiile ulterioare de acțiune în acest domeniu. Analizatorii de trafic al rețelei au continuat să identifice încercări de infectare încă existente pe mașinile INTERNET-ului. O ultimă încecare a fost identificată la începutul lunii decembrie 1988.

Despre autorul Viermelui

După ce Viermele a fost oprit, au fost puse, inevitabil, două întrebări: "cine?" și "de ce?".

La prima întrebare răspunsul a apărut rapid prin identificarea lui Robert T. Morris de către New York Times. Există multe elemente care susțin identificarea făcută. Multe oficialități federale au afirmat că au dovezi, obținute de la persoane distincte, prin care se specifică faptul că Morris a discutat cu aceste persoane despre Vierme și cercetările sale în această direcție. Ei susțin, de asemenea, că au înregistrări de pe calculatoarele de la Universitatea Cornell reprezentând versiuni de început ale codului Viermelui testate pe mașini din campus și, de asemenea, susțin că au copii ale Viermetui găsite în contul lui Morris. Raportut furnizat de Oficiul Rectoratului Universității din Cornelt îl indică de asemenea pe Morris ca fiind culpabil și prezintă motive convingătoare pentru a susține această concluzie.

Dar dacă autorul era stabilit, motivul acestei acțiuni rămânea neclar, plasat între un experiment greșit și până la un act inconștient de răzbunare a lui Morris împotriva tatălui său. Din studiul făcut de multe persoane asupra codului decompilat, au rezultat două concluzii:

O primă concluzie se referă la faptul că programul nu conține, în mod explicit, porțiuni de cod care ar provoca explicit distrugeri ale sistemelor pe care ar rula. Luând în considerare abilitatea și cunoștințele evidențiate de cod, pentru autor ar fi constituit o chestiune simplă introducerea unor astfel de comenzi, dacă aceasta ar fi fost intenția lui. În cele din urmă, eliberarea prematură în rețea a Viermelui arată că intenția autorului de a distruge sau perturba structuri și sisteme nu poate fi luată în considerare în mod explicit;

A doua concluzie se referă fa faptul că în cod nu este inclus un mecanism pentru a opri dezvoltarea Viermelui. Luând în considerare acest lucru, precum și complexitatea șirului utilizat ca argument, necesar pentru a declanșa Viermele, multe persoane care au examinat codul nu consideră că Viermele a fost declanșat accidental sau că intenția a fost de a nu fi propagat puternic. Având în vedere aceste lucruri, sunt ciudate încercările făcute pentru a justifica acțiunea lui Morris, susținându-se că intenția lui era de a demonstra ceva despre securitatea 7NTERNET ului sau că a fost un experiment nevinovat. Raportul Rectoratului Universității din Cornell nu încearcă să scuze comportamentul lui Morris. Această acțiune este etichetată ca fiind neetică și contrară standardelor profesionale. Acțiunea sa este considerată a fi îndreptată împotriva politicii Universității și practicii acceptate și ar fi fost de așteptat ca, având în vedere experiența pe care o are în acest domeniu, să cunoască că astfel de acțiuni sunt nepermise. Cei care cred că Viermele constituie un accident sau un experiment nefericit sunt de părere ca autorul să nu fie pedepsit, mergând până la a cere pedepsirea administratorilor și operatorilor de pe sistemele și mașinile afectate, pentru neglijența cu care au tratat aspectele ,de securitate. Ceilalți consideră că autorul trebuie să fie pedepsit sever, inclusiv cu privarea de libertate. Comisia de la Cornell a recomandat unele pedepse, dar nu atât de severe încât să afecteze cariera ulterioară a lui Morris. În acea recomandare este specificată suspendarea lui Morris din Universitate pentru minimum un an. Faptul că nu s-au întâmplat mari nenorociri poate constitui un accident și este posibil ca intenția autorului să fi fost de a supraîncărca lNTERNET-ul, așa cum s-a și întâmplat. Scuzarea unor astfel de acte de vandalism, sub declarația că autorii nu au vrut să creeze mari neajunsuri, nu poate conduce la descurajarea repetării unor astfel de încercări, ba chiar mai mult, acestea sunt încurajate.

Vulnerabilități exploatate de Vierme

Viermele utilizează o serie de defecte sau slăbiciuni existente în software-ul standard al multor sisteme UNIX. Unele dintre aceste defecte sunt descrise în continuare.

Programul Fingerd

Programul fingerd este un utilitar care permite obținerea de informații despre utilizatori. De obicei, este folosit pentru a identifica numele întreg sau numele de conectare (login) al unui utilizator, dacă acesta se află în sesiune și posibil, alte informații despre persoana respectivă, cum ar fi numerele de telefon etc. Acest program este rulat ca daemon sau proces în fundal (background), pentru rezolvarea cererilor de informații venite de la distanță, utilizându-se protocolul fingerd, Acest program acceptă conexiuni de. la programe ce rulează în altă parte, citește linia de intrare și trimite răspuns receptorului care a adresat întrebarea.

Punctul slab exploatat, prin care se "sparge" acest program, implică modificarea buffer ului de intrare folosit de acesta. Biblioteca f/0 a limbajului C are câteva rutine care citesc intrarea fără a verifica limitele buffer-ului implicat în această operațiune. În particular, apelul funcției gets preia datele de intrare într-un buffer, fără a face verificarea limitelor acestuia. Apelul acestei funcții a fost exploatat de Vierme. Rutina gets nu este singura care are acest neajuns. O întreagă familie de rutine din biblioteca C-ului face posibilă depășirea buffer ului, atunci când se decodifică intrarea sau când se formatează ieșirea, dacă utilizatorul nu specifică explicit numărul de caractere pentru conversie.

Cu toate că programatorii experimentați sunt cunoscători ai acestor probleme, mulți dintre ei continuă să folosească aceste rutine. Necazul este că orice server de rețea sau program privilegiat, care utilizează aceste funcții, poate fi compromis datorită utilizării unei intrări improprii. Interesant este că recent, au mai fost descoperite încă două comenzi în standardul BSD UNIX, care au această problemă.

După atacul asupra INTERNET-ului au fost relevate mai multe probleme potențiale și mai multe modalități de a le înlătura, dar cu toate acestea, biblioteca cu aceste rutine continuă să fie utilizată.

3.4 Programul Sendmail

Programul sendmail este un serviciu de poștă electronică, destinat să ruteze scrisorile într-o rețea eterogenă. Programul are mai multe moduri de operare, dar unul dintre acestea este exploatat de Vierme și implică lansarea serviciului ca proces în background (daemon). În acest mod de lucru, procesul se află în starea de "ascultare" la un port TCP (25), pentru a face distribuirea poștei sosite prin protocolul standard INTERNET, SMTP (Simple Mail Transfer Protocon. Când o astfel de situație este detectată, procesul intră într-un dialog cu un alt proces de la distanță, pentru a determina expeditorul, destinatarul, instrucțiunile de distribuire și conținutul mesajului.

Punctul slab exploatat în sendmail este legat de o opțiune de depanare a codului. Viermele transmite comanda DEBUG la sendmail și apoi specifică destinatarul mesajului, ca un set de comenzi și nu ca o adresă utilizator. Într-o operațiune normală, acest lucru nu este permis; însă, în activitatea de depanare a codului este posibilă verificarea poștei sosite pentru un anumit destinatar, fără a se apela rutinele de adresare. Prin utilizarea acestei opțiuni, testele pot rula programe care să afișeze starea sistemului de poștă, fără trimiterea de mesaje sau stabilirea unei conexiuni. Această opțiune de depanare este adesea utilizată tocmai datorită complexității configurării lui sendmail.

Programul sendmail este de mare importanță, mai ales pentru sisteme UNIX derivate din BSD, deoarece mânuiește procese complexe de rutare și distribuire a poștei. Totuși, în ciuda importanței mari și a utilizării largi, cea mai mare parte a administratorilor de sisteme știu puțin despre felul în care lucrează sendmail. Deși sunt relatate multe apariții de driver e scrise de administratori de sisteme sau modificări aduse Kernel-ului, nimeni nu a adus încă modificări la sendmail sau la configurația fișierelor sale. În concluzie, punctele slabe prezentate în sendmail sunt puțin cunoscute, iar unele dintre ele sunt depistate și comunicate pe măsura descoperirii lor.

3.5 Parole

Una din "piesele de rezistență" ale Viermelui implică încercarea de a descoperi parolele utilizatorilor. În sistemele UNIX, utilizatorul furnizează o parolă ca semn de verificare a identității. Parola este criptată, utilizând o versiune a algoritmului DES, iar rezultatul este comparat cu rezultatul criptării anterioare, prezent în fișierul letclpasswd. Dacă acestea coincid, accesul este permis. În acest fișier nu sunt incluse parolele în clar și algoritmul se presupune a fi neinversabil; deci, fără cunoașterea parolei nu avem acces.

Organizarea parolelor în UNIX permite unor comenzi neprivilegiate să utilizeze informații din fișierul /etc/passwd și să acceseze schema de autentificare a parolelor. Deci se permite un atac prin criptarea unei liste cu parole posibile și compararea rezultatelor cu fișierul letclpasswd, fără a se face apel la o funcție sistem, special dedicată. De fapt, securitatea parolelor este asigurată în principal prin numărul mare de încercări ce trebuie efectuate pentru a le determina, cu toate combinațiile de caractere posibile. Din nefericire, există mașini care lucrează rapid și costul unei astfel de acțiuni este în continuă descreștere, datorită rapidității dezvoltării produselor hard.

Divizând procesul pe mai multe procesoare, se reduce mult timpul necesar determinării unei parole. Astfel de atacuri sunt ușurate mult, atunci când utilizatorul alege drept parolă un cuvânt comun sau des folosit. În acest caz, toată căutarea se rezumă la determinarea parolei prin verificarea unor cuvinte comune, existente într-o astfel de listă (vezi capitolul 2).

Viermele utilizează pentru spargerea parolei un astfel de tip de atac. În acest sens se folosește o listă de cuvinte standard, cuvinte care sunt considerate a fi parole posibile. Viermele asigură criptarea lor prin intermediul unei versiuni rapide a algoritmului de cifrare și apoi, compară rezultatul cu conținutul fișierului /etc/passwd. Deci Viermele exploatează accesul la acest fișier, cuplat cu tendința utilizatorilor de a alege cuvinte comune drept parole.

Un defect discutat în prezent și care a fost exploatat de Vierme implică utilizarea sesiunilor de încredere. Una din facilitățile utile ale soft-ului de rețea al lui BSD UNIX este suportul de execuție a proceselor pe mașini aflate la distanță. Pentru a se evita repetarea tipăririi parolelor pentru accesul în conturi aflate la distanță, se asigură posibilitatea unui utilizator de a specifica o listă cu perechi gazdă/cont, care sunt considerate a fi de încredere, în sensul că un acces la distantă de la calculatorul gazdă la acel cont se face fără a utiliza parola contului respectiv. Acest aspect este responsabil de numeroasele accese neautorizate la calculatoare, dar continuă să fie utilizat, fiind convenabil. Viermele a exploatat acest mecanism prin încercarea de a localiza host-urile de încredere și a determina perechile corespunzătoare. Acest lucru a fost realizat prin examinarea de către Vierme a fișierului de pe host-ul curent, care conține perechile host/conturi. Odată ce Viermele găsește astfel de candidați, va încerca, în modul cel mai rapid, să se autoinstaleze pe aceste mașini, folosind facilitatea execuției la distanță, copiindu-se pe sine pe mașina de la distanță, ca și cum ar fi un utilizator autorizat, care efectuează o operație standard de la distanță. Pentru a inlătura astfel de încercări în viitor, este necesar ca actualul mecanism de acces la distanță să fie anulat și înlocuit cu ceva nou. Un mecanism nou creat, care se apropie de cerințele de mai sus, este server ul de autentificare Kerberos.

3.6 Descrierea Viermelui

Viermele INTERNET este constituit din două părți: un program principal și un program vector (bootstrap).

Programul principal, o dată instalat pe o mașină, va colecta informații despre alte mașini din rețea, cu care calculatorul gazdă poate fi conectat. Va face această colectare prin citirea fișierelor de configurare și prin lansarea proceselor corespunzătoare programelor utilitare de sistem, care furnizează informații despre -starea curentă a conexiunilor din rețea. Apoi, va încerca să profite de fisurile din soft, descrise mai sus, pentru a instala programul său vector pe fiecare din aceste calculatoare aflate la distanță;

Programul vector are 99 de linii de cod C, care vor fi compilate și rulate pe mașina de la distanță. Sursa acestui program va fi transferată la "victimă", folosind una dintre metode4e care vor fi prezentate în continuare. Apoi, sursa va fi apelată pe mașina victimă, prin intermediul unei linii de comandă, cu trei argumente: adresa de rețea a calculatorului infectat, numărul port-ului de rețea pentru conectarea la această mașină (pentru a se copia fișierele programului principal al Viermelui) și un număr magic, care acționează efectiv ca o parolă cu o singură utilizare.

Dacă Viermele "server", de pe mașina de la distanță, nu recepționează înapoi același număr magic (cel trimis de programul vector) înainte de începerea transferului, va fi deconectat imediat de la programul vector. Acest lucru este realizat pentru a preveni încercările de capturare a fișierelor binare prin înșelarea Viermelui "server".

Codul vectorului acționează pentru ascunderea sa și prin punerea pe 0 a vectorului său de argumente (imaginea liniei de comandă), și prin utilizarea mecanismului fork pentru crearea unui proces fiu identic. Dacă se întâmplă o defecțiune în timpul transferului de fișiere, codul determină ștergerea fișierelor deja transferate și apoi, face ieșirea.

O dată instalat pe o mașină, programul vector se va conecta cu calculatorul pe care se execută procesul Vierme original și va executa transferul unor fișiere binare (cod precompilat) către mașina locală. Fiecare fișier binar reprezintă o versiune a programului Vierme principal, compilat corespunzător unei anumite arhitecturi de calculator și unei anumite versiuni de sistem de operare. Programul vector va transfera, de asemenea, o copie a sursei sale folosită pentru infectarea altor sisteme. Una dintre trăsăturile mai curioase ale programului vector a generat multe întrebări: programul are alocate structuri de date pentru transferul a 20 de fișiere, din care au fost folosite doar 3. Acest lucru a condus la speculația că a fost planificată, probabil pentru a fi lansată la o dată ulterioară, o versiune extinsă a Viermelui, cu alte fișiere de comandă, fișiere de parole, viruși locali și programe de tip "cai troieni".

Odată ce fișierele binare au fost transferate, programul vector încarcă fișierele corespunzător versiunii locale a bibliotecilor standard, pe care le leagă cu programele aduse. Ulterior, aceste programe vor fi apelate. Dacă unul dintre acestea rulează cu succes, citește în memoria proprie copiile programului vector și ale fișierelor binare și apoi șterge originalele de pe disc.

În pasul următor, va încerca să forțeze pătrunderea pe alte mașini. Dacă nici una dintre versiuni nu rulează cu succes, atunci mecanismul de rulare a programului vector (un fișier de comenzi) va șterge toate fișierele de pe disc create pe durata încercării de infectare, lăsând sistemul curat.

3.7 Securitatea accesului in Internet

In cadrul operatiunilor (tranzactiilor on line) ce se efectueaza in Internet se impun masuri de securitate deosebite, ce trebuie sa limiteze accesul la informatii, asigurand in principal caracterul privat al datelor, integritatea si imposibilitatea deteriorarii datelor.

Fig. 24 Securitatea datelor in Internet

Accesul este controlat prin intermediul certificatelor digitale. Certificatul digital se obtine prin informarea unei autoritati de certificare C A privind datele personale. O data autentificat se poate incepe sesiune de lucru cu criptare si securitate Vezi fig. 24.

3.7.1 Sistemele Firewall

Firewall (parafoc – zid de protectie) reprezinta o procedura de securitate care plaseza un calculator special programat, intre reteaua locala (LAN) a unei organizatii si Internet.Calculatorul Firewall impiedica accesul spargatorilor de coduri la reteaua interna (intranet).

Din pacate nu permite nici utilizatorilor retelei locale obtinerea accesului direct la Internet, permitand doar un acces indirect, controlat de programe numite servere delegate.

Sistemele Firewall utilizeaza de cele mai multe ori utilizeaza una din urmatoarele doua metode:

Filtrarea pachetelor

Servicii proxy

Sistemele firewall cu filtrarea pachetelor de date examineaza fiecare pachet care “vrea” sa intre sau sa iasa in/din retea si-l compara cu o lista programata de criterii. Pachetele sunt blocate, daca nu sunt marcate specific ca “libere”.

Sistemele firewall proxy actioneaza ca intermediari la cererile retelei, necesitand ca fiecare client sa fie astfel configurat incat sa ceara serviciile proxy sa se conecteze la un server inainte de a apela serviciile retelei.

In acest domeniu, programele CyberGuard Firewall si CheckPoint Firewall, ofera in prezent o teleadministrare sigura si eficienta a tranzactiilor si operatiunilor on line

3.7.2 Semnaturi digitale

Semnaturile digitale asigura un nivel de integritate si imposibilitatea de repudiere pentru oricine este ingrijorat de folosirea datelor si accesul neautorizat la informatii in cadrul diferitelor servicii Internet

Exista multi algoritmi de semnatura digitala in literatura de specialitate. Practic s-au impus trei dintre acestia:

Standardul de semnatura digitala (DDS) a guvernului SUA

Semnatura pe baa de hash

Semnatura RSA creata prin utilizarea algoritmului clasic dezvoltat de Don Rivest

Fiecare dintre altgoritmi are utilizare diferita si cerinte diferite

Capitolul IV

4. Aplicatie Client Server pentru deschidere fisier text

Este o aplicatie de retea.Este formata din 2 subprograme facute in DLPHI.

Primul este o aplicatie server si se instaleaza pe un calculator SERVER.In fereastra de sus avem o lista de fisiere text.Daca da-m click pe unul din ele,in fereastra de jos va apare sursa lor.

AL doilea subprogram este o aplicatie client care se instaleaza pe calculatoarele celor conectate la SERVER.In fereastra programului e un buton Client On.I se da click pt a se conecta la SERVER si apoi in fereastra de jos se pot vizualiza fisierele text de pe server.

E o plicatie care are la baza Pascal-ul.

In directorul Executabile se gasesc cele 2 fisiere executabile,cel Client si cel Server.

Fisierele sursa si fisierele le vom vedem mai jos cind vom da o descriere mai amanuntita a aplicatiei.

4.1 Software-ul Server

Software-ul Server face posibil accesul utilizatorilor de pe alte calculatoare la resursele partajate ale serverului, adica la date sau echipamente, plotere sau discuri.

De obicei toate calculatoarele dintr-un domeniu Windows NT contin atat software pentru client cit si pentru client (fig 26).

Chiar daca statiile de lucru Windows NT joaca rolul de clienti, ele inglobeaza software care permite sa se comporte ca si servere.

Fig. 25. Redirectarea comenzilor clientului catre serverului retelei

4.2 Software-ul client

Intr-un mediu de retea, atunci cand utilizatorul initiaza o solicitare pentru o resursa aflata pe un server dintr-o alta parte a retelei, solicitarea trebuie sa fie retransmisa sau redirectata de pe magistrala locala a calculatorului client, catre retea, si anume spre serverul care contine resursa solicitata.

Redirectorul are sarcina de a retransmite solicitarea clientului catre server. In functie de software-ul retelei, redirectorul mai poate fi numit si program shell sau solicitant (requester). El este de fapt o mica sectie de cod din cadrul sistemului de operare care:

Intercepteaza solicitarile din calculator

Stabileste daca acestea trebuie lasate sa-si continue drumul pe magistrala calculatorului local sau trebuie redirectate in retea, spre alt server

Activitatea redirectoului incepe de la calculatorul client, atunci cand utilizatorul

lanseaza o solicitare catre o sursa sau un serviciu de retea. In acest caz calculatorul utilizatorului este numit si client (fig 27) deoarece este cel care initiaza o solicitare.Cererea este interceptata de redirector si transmisa mai departe in retea.

In Windows NT, serverul se ocupa de conexiunile solicitate de redirectorul client, oferindu-le acces la resursele respective.Cu alte cuvinte Serverul “serveste” clientii raspunzand solicitarilor acestora.

Fig. 26. Redirectoul retransmite solicitarile de resurse de retea aflate la distanta

4.3 Aplicatia Server

Fereastra aplicatiei arata astfel:

Fig. 27 Fereastra aplicatiei Server

In fereastra din stinga sus avem partitia hardului si sub el este o lista cu directoarele ce le contine. In fereastra din dreapta sus avem o lista cu fisierele ce le contine fiecare director in parte.Depinde unde pozitionam prompterul.

Daca dam clic pe directorul Server ne apare lista cu fisiere a aplicatiei Server.

Ele sunt:

Project1.~dpr

Project1.cfg

Project1.dof

Project1.dpr

Project1.exe

Project1.res

Unit1.~ddp

Unit1.~dfm

Unit1.~pas

Unit1.dcu

Unit1.ddp

Unit1.dfm

Unit1.pas

In fereastra de jos putem vizualiza sursa fisierelor. De exemplu

fisierul Project1.exe este executabilul aplicatiei Server. Sursa programului in Pascal este fiserul Unit1.pas:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, ScktComp, StdCtrls, FileCtrl, ComCtrls;

type

TForm1 = class(TForm)

ServerSocket1: TServerSocket;

FileListBox1: TFileListBox;

DirectoryListBox1: TDirectoryListBox;

RichEdit1: TRichEdit;

DriveComboBox1: TDriveComboBox;

procedure Button2Click(Sender: TObject);

procedure FileListBox1Click(Sender: TObject);

procedure DriveComboBox1Change(Sender: TObject);

procedure DirectoryListBox1Change(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ServerSocket1ClientConnect(Sender: TObject;

Socket: TCustomWinSocket);

procedure ServerSocket1ClientDisconnect(Sender: TObject;

Socket: TCustomWinSocket);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

ok:boolean;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

//FileListBox1.Directory := form1.DirectoryListBox1.Directory;

end;

procedure TForm1.FileListBox1Click(Sender: TObject);

var StrFile: String;

begin

RichEdit1.Lines.clear;

StrFile:=form1.DirectoryListBox1.Directory+'\'+ fileListBox1.Items.Strings[filelistbox1.itemindex];

RichEdit1.Lines.Add(strfile);

RichEdit1.Lines.LoadFromStream(TFileStream.Create(StrFile,fmOpenRead or fmShareDenyWrite));

if ok then form1.ServerSocket1.Socket.Connections[0].SendStream(TFileStream.Create(StrFile,fmOpenRead or fmShareDenyWrite));

end;

procedure TForm1.DriveComboBox1Change(Sender: TObject);

begin

form1.DirectoryListBox1.Drive:=Form1.DriveComboBox1.Drive;

end;

procedure TForm1.DirectoryListBox1Change(Sender: TObject);

begin

Form1.FileListBox1.Directory:=form1.DirectoryListBox1.Directory;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

ok:=false;

end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

ok:=true;

end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

ok:=true;

end;

end.

4.4 Aplicatie Client

Fereastra aplicatiei arata astfel:

Fig. 28 Fereastra aplicatiei Client

Sus avem un buton client Client Off.Daca ii dam click atunci se conecteaza la aplicatia Server si ne va apare scris Client conectat.In dreapta sus avem Ip-ul calculatorului Server.In cazul cind amindoua programe Server si Client ruleaza pe acelasi calculator atunci la Ip se scrie 127.0.0.1.Reprezinta Ip-ul oricarui calculator.

Fisierele directorului aplicatiei sunt:

– Project1.~dpr

Project1.cfg

Project1.dof

Project1.dpr

Project1.exe

Project1.res

Unit1.~ddp

Unit1.~dfm

Unit1.~pas

Unit1.dcu

Unit1.ddp

Unit1.dfm

Unit1.pas

In fereastra de jos putem vizualiza sursa fisierelor. De exemplu

fisierul Project1.exe este executabilul aplicatiei Server. Sursa programului in Pascal este fiserul Unit1.pas:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ExtCtrls, ToolWin, ComCtrls, FileCtrl, ScktComp,

Psock, NMFtp;

type

TCliStatus = (csText, csBitmap, csList, csIdle);

TForm1 = class(TForm)

ClientSocket1: TClientSocket;

Label1: TLabel;

AddressTxt: TEdit;

Button5: TButton;

Label5: TLabel;

RichEdit1: TRichEdit;

procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);

procedure Button5Click(Sender: TObject);

procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;

ErrorEvent: TErrorEvent; var ErrorCode: Integer);

procedure ClientSocket1Connecting(Sender: TObject;

Socket: TCustomWinSocket);

procedure ClientSocket1Disconnect(Sender: TObject;

Socket: TCustomWinSocket);

private

end;

var

Form1: TForm1;

Buffer: Array[0..9999] of char;

implementation

{$R *.dfm}

procedure TForm1.ClientSocket1Read(Sender: TObject;

Socket: TCustomWinSocket);

var

StrCommand: String;

begin

Form1.RichEdit1.Clear;

StrCommand := Socket.ReceiveText;

Form1.RichEdit1.Text:=StrCommand ;

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

ClientSocket1.Address := AddressTxt.Text;

if Form1.Button5.Caption='Client On' then

begin

Form1.Button5.Caption:='Client Off';

form1.ClientSocket1.Active:=true;

end

else

begin

Form1.Button5.Caption:='Client On';

form1.ClientSocket1.Active:=false;

end;

end;

procedure TForm1.ClientSocket1Error(Sender: TObject;

Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

var ErrorCode: Integer);

begin

ErrorCode:=0;

Form1.Label5.Font.Color:=clRed;

Form1.Label5.Caption:='Client deconectat';

Form1.Button5.Caption:='Client On';

end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;

Socket: TCustomWinSocket);

begin

Form1.Label5.Font.Color:=clNavy;

Form1.Label5.Caption:='Client conectat';

Form1.Button5.Caption:='Client Off';

end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;

Socket: TCustomWinSocket);

begin

Form1.Button5.Caption:='Client On';

Form1.Label5.Font.Color:=clRed;

Form1.Label5.Caption:='Client deconectat';

ClientSocket1.Address := AddressTxt.Text;

form1.ClientSocket1.Active:=false;

end;

end.

CONCLUZII

Internet-ul este o retea de retele de calculatoare care cuprinde tot globul. In calitate de cea mai mare si cea mai cunoscuta inter-retea din lume, Internet-ul leaga peste 20 000 de retele din 150 de tari. Inter-reteaua cuprinde mii de calculatoare de diverse tipuri, care utilizeaza o mare varietate de tipuri de software de retea. Desi Internet-ul a aparut la sfarsitul anilor ’60, Web-ul nu a fost creat pana in martie 1989. Tim Berners-Lee, creatorul Web-ului, pe cand lucra la Consiliul European pentru Cercetare Nucleara (CERN), Laboratorul european pentru fizica a fost nevoit sa gaseasca o cale de a transmite informatii catre cercetatorii din domeniul fizicii energiilor inalte aflati in diverse zone geografice.

Modelul de referinta ISO/OSI defineste sapte straturi functionale pentru proiectarea retelelor.Totusi,modelul de referinta ISO/OSI este doar un ghid si nu o structura de retea in sine.De exemplu, Internet-ul utilizeaza Protocolul de Control al Transportului/Protocolul Internet (TCP/IP) ca masina de protocol, iar structura retelei TCP/IP utilizeaza numai cinci straturi din cele sapte ISO/OSI.

Intrucat Internet-ul este sistemul de transport pentru comunicatia prin Web, comunicatia de date in Web imita comunicatia de date din Internet.De exemplu, cand un server Web trimite date unui client, acestea circula prin Internet cu ajutorul unui protocol sigur orientat pe conexiune, de tipul flux de octeti (TCP).

Finalitatea lucrării constă în aceea că s-a realizat o aplicație de retea;. Este formata din 2 subprograme facute in DLPHI.

Primul este o aplicatie server si se instaleaza pe un calculator SERVER.In fereastra de sus avem o lista de fisiere text.Daca da-m click pe unul din ele,in fereastra de jos va apare sursa lor.

AL doilea subprogram este o aplicatie client care se instaleaza pe calculatoarele celor conectate la SERVER.In fereastra programului e un buton Client On.I se da click pt a se conecta la SERVER si apoi in fereastra de jos se pot vizualiza fisierele text de pe server.

BIBLIOGRAFIE

Paraschiv, N.: Sisteme cu microprocesoare, Note de Curs, Ploiești 2003

Cristian Crumlish: Primii pasi in Internet Editura ALL EDUCATION S.A 1995

Kris Jamsa: Programarea in Web Editura ALL EDUCATION S.A. 1997

Piscitello, M.: David: Open system networking: TCP/IP and OSI, August 1993

Gibbs, Mark: Rețele de calculatoare pentru începători, Editura Teora, București 1996

Andrew, S. Tanenbaum: Rețele de calculatoare, Editura Computer Press AGORA, Tg. Mureș, 1998

Similar Posts