Structura reţelei Internet

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.


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.

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.

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")(vezi figura de mai jos).
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.

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 31692mrz17knm4i
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:
  1. generice:
    • com -comercial
    • edu -institutii de educatie
    • gov -guvernul SUA
    • mil -armata SUA
    • int -organizatii internationale
    • org -organizatii nonprofit
  2. 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...