|
Structura unei internet, vazuta ca mai multe retele fizice interconectate prin intermediul unor rutere, creaza o imagine inselatoare a conceptului de internet, intrucat atentia cea mai mare trebuie indreptata catre interfata pe care o internet o ofera utilizatorilor si nu catre tehnologia de interconectare. Un utilizator considera o internet drept o unica retea virtuala ce interconecteaza toate calculatoarele si prin care este posibila comunicatia; structura aferenta este mascata, dar mei ales irelevanta Intr-un anumit sens, o internet este o abstractizare a retelelor fizice, intrucat, la niuvelul ei cel mai de jos, ea furnizeaza aceleasi functiuni ca o retea fizica: accepta pachete si le trimite. Nivelurile superioare ale software-ului de internet sunt cele ce contribuie cel mai mult la functionalitatea bogata perceputa de utilizatori.
Din punct de vedere conceptual, o internet bazata pe protocoalele TCP/IP ofera trei multimi de servicii, organizate pe niveluri ierarhice conceptuale interdependente (vezi fig. de mai jos): la nivelul cel mai de jos, un serviciu de livrare de unitati de informatie, fara conexiuni, constituie fundamentul pe care se construieste tot restul serviciilor. La urmatorul nivel se afla un serviciu fiabil de transport, ce furnizeaza o platforma de nivel superior de care depind aplicatiile aflate la nivelul superior.
SERVICII DE APLICATII
SERVICIU DE TRANSPORT FIABIL
SERVICIU DE LIVRARE DE PACHETE, FARA CONEXIUNI
Desi putem asocia protocoalele cu fiecare din serviciile din nivelurile evidentiate, motivul identificarii acestora din urma drept parti conceptuale ale internet este acela ca ele pun in evidenta filozofia proiectarii lor. Ideea centrala este urmatoarea: programele pentru internet sunt proiectate in jurul a trei servicii conceptuale de retea de calculatoare, organizate ierarhic, intr-o arhitectura pe cat de robusta, pe atat de adaptabila - ceea ce a dus la marele succes al internet.
Unul din cele mai importante avantaje ale acestei separari conceptuale il constituie faptul ca ea face posibila inlocuirea unui serviciu fara a le perturba pe celelalte. Deci activitatea de cercetare si dezvoltare se poate desfasura concurent pentru toate cele trei niveluri conceptuale de servicii.
Serviciul fundamental asigurat de internet consta in sistemul de livrare de pachete. Sub aspect tehnic, serviciul este definit ca un sistem nefiabil [unreliable], cu minim de efort [best-effort] de livrare de pachete, fara conexiuni - asemanator cu serviciul oferit de hardware-ul retelelor fizice. Serviciul este considerat nefiabil pentru ca nu garanteaza livrarea corecta a pachetelor; pachetele pot fi pierdute, dublate, intarziate sau receptionate in alta ordine decat cea de la emisie, dar serviciul nu va detecta astfel de situatii si, deci, nu va informa emitatorul sau receptorul despre aparitia lor. Serviciul este de tip fara conexiuni, intrucat fiecare pachet este tratat independent de celelalte; o succesiune de pachete trimise de la un calculator la altul pot circula pe trasee diferite, unele din ele putand chiar fi pierdute. In fine, se zice ca acest serviciu este cu minim de effort intrucat software-ul de internet face o incercare constiincioasa de a livra pachetele destinatarului, adica internet nu inlatura in mod capricios pachetele, lipsa de fiabilitate aparand doar atunci cand resursele sunt epuizate sau retelele fizice aferente prezinta defectiuni.
Protocolul care efectueaza mecanismul de livrare nefiabila, fara conexiuni, a pachetelor se numeste Protocolul internet [Internet Protocol (IP)]. IP se bazeaza pe trei definitii importante. Mai intai, protocolul IP defineste unitatea de baza pentru transferul de date utilizata in internet cu TCP/IP - deci precizeaza formatul exact al tuturor datelor vehiculate intr-o internet. In al doilea rand, programul IP efectueaza functia de rutare, selectand traseul pe care vor fi trimise datele. In al treilea rand, IP include si un set de reguli care intruchipeaza ideea de livrare nefiabila de pachete; aceste reguli caracterizeaza modul in care calculatoarele si ruterele trebuie sa proceseze pachetele, cum si cand trebuie generate mesaje de eroare, precum si conditiile in care pot fi eliminate pachetele. Protocolul IP constituie o parte atat de importanta a proiectarii, incat se vorbeste de o tehnologie pe baza de IP pentru internet.
In cele ce urmeaza vom analiza formatul specificat de IP pentru unitatile de informatii vehiculate intr-o internet bazata pe suita de protocoale TCP/IP (problemele privitoare la rutare si modul de tratare a erorilor vor face obiectul unor capitole ulterioare).
Analogia dintre o retea fizica si internet bazata pe TCP/IP este puternica Intr-o retea fizica, unitatea de baza pentru transferul de date este cadrul. El contine un antet care da informatii precum adresele (fizice) ale sursei si destinatiei. In internet, unitatea de baza in transferul informatiilor este numita datagrama internet [internet datagram] / datagrama IP [IP datagram] (sau, pur si simplu, datagrama). Ca si la cadrele tipice din retelele fizice, datagrama contine un camp de date si un antet. La fel ca in cadre, antetul contine adresele sursei si destinatiei si un camp pentru tipul datagramei, care identifica continutul acesteia. Desigur, diferenta consta in faptul ca antetul datagramei contine adresele IP, in timp ce antetul unui cadru contine adresele fizice. Forma generala a unei datagrame arata astfel:
ANTETUL DATAGRAMEI
ZONA DE DATE A DATAGRAMEI
Protocoul IP nu precizeaza nimic in privinta zonei de date a datagramei; ea poate fi utilizata pentru a transporta date arbitrare.
Fig. ce urmeaza prezinta in detaliu formatul unei datagrame, evidentiind campurile sale.
0
4
8
16
19
24
31
VERS
TIP SERVICIU
LUNGIMEA TOTALA
IDENTIFICARE
OFFSET FRAGMENT
DURATA DE VIATA
PROTOCOL
SUMA DE CONTROL ANTET
ADRESA IP A SURSEI
ADRESA IP A DESTINATIEI
OPTIUNI IP (daca exista
UMPLUTURA
DATE
Intrucat procesarea datagramelor are loc in software, continutul si formatul lor nu sunt constranse de nici un hardware.
Primul camp al datagramei, pe 4 biti, este VERS si contine versiunea protocolului IP care a fost utilizata pentru crearea datagramei. Acest camp serveste la faptului ca emitatorul, receptorul si oricare ruter de pe traseul dintre ele accepta formatul datagramei. Intregul program IP necesita verificarea campului destinat versiunii inainte de a procesa o datagrama, pentru a se asigura ca aceasta corespunde formatului la care programul se asteapta. Daca standardele se modifica, masinile vor rejecta datagramele cu versiuni de protocol ce difera de al lor, prevenind astfel interpretarea gresita a continutului datagramei din cauza unui format iesit din circulatie. In cele ce urmeaza se va presupune ca avem de-a face cu versiunea 4 a protocolului IP (daca nuse precizeaza altfel).
Campul pentru lungimea antetului (LUNG A), tot pe 4 biti, da lungimea antetului datagramei exprimata in cuvinte (32 biti). Dupa cum se va vedea, toate campurile din antet au lungimi fixe, cu exceptia campului OPTIUNI IP si, evident, a celui de UMPLUTURA. Cel mai intalnit antet - cel care nu contine nici optiuni, nici umplutura - are o lungime de 20 octeti si valoarea 5 in campul pentru lungimea antetului.
Campul LUNGIME TOTALA da lungimea intregii datagrame IP, masurata in octeti. Lungimea zonei de date poate fi calculata scazand valoarea LUNG A din valoarea LUNGIME TOTALA. Cum campul LUNGIME TOTALA are 16 biti, dimensiunea maxima posibila a unei datagrame va fi de 216 = 65 535 octeti. Pentru majoritatea aplicatiilor, aceasta nu constituie o restrictie severa; dar va putea deveni mai importanta pentru retelele cu viteze mari de transmisie, la care apare fireasca o lungime mai mare a pachetelor.
Campul TIP SERVICIU - numit neoficial si Type Of Service (TOS) - precizeaza in cei 8 biti ai sai modul cum trebuie tratata datagrama. El este constituit din 5 subcampuri, ca in fog. de mai jos:
0
1
2
3
4
5
6
7
PRIORITATEA
T
R
neutilizat
Cei 3 biti ai subcampului PRIORITATEA indica prioritatea [precedence] datagramei, cu valori de la 0 (prioritate normala) pana la 7 (controlul retelei), permitand emitatorilor de mesaje sa indice importanta fiecarei datagrame. Desi software-ul din majoritatea calculatoarelor si ruterelor ignora tipul serviciului, el este un concept important intrucat ofera un mecanism ce permite informatiei de control sa aiba prioritate fata de date. De exemplu, daca toate calculatoarele si ruterele dau curs prioritatilor, este posibila implementarea algoritmilor de rezolvare a aglomerarilor care nu sunt afectati de aglomerarile pe care ai incearca sa le stapanesca
Bitii D, T si R indica tipul de transport pe care il doreste datagrama. Cand sunt setati, bitul D reclama intarzieri mici, bitul T cere o viteza mare de transmisie, iar bitul R impune o mare fiabilitate. Desigur, s-ar putea ca o internet sa nu poata asigura tipul de transport cerut (adica s-ar putea ca nici unul din traseele catre destinatie sa nu aibe proprietatile cerute). Asadar, vom privi aceste cerinte de transport ca niste "sugestii" pentru algoritmii de rutare si nu ca niste imperative. Daca insa, un ruter cunoaste mai multe trasee posibile catre o destinatie data, el poate utiliza campul tipului de transport pentru a alege acel traseu care are caracteristicile cele mai apropiate de cele dorite. De exemplu, sa presupunem ca un ruter poate alege intre o linie inchiriata de capacitate joasa si o conexiune prin satelit - cu largime mare de banda, dar cu intarzieri mari. Datagramele care poarta succesiuni de caractere introduse de un utilizator de la tastatura si destinate unui calculator aflat la distanta ar putea avea bitul D setat, cerand ca ele sa fie livrate cat mai repede posibil, in timp ce datagramele care transporta un transfer de fisier mare ar putea avea bitul T setat, cerand ca ele sa fie transportate pe trasee prin satelit, de mare capacitate de transmisie.
Este important sa constientizam faptul ca algoritmii de rutare trebuie sa aleaga intre tehnologiile retelelor fizice aferente, fiecare din ele avand caracteristicile ei de intarziere, viteza de transmisie si fiabilitate. Adesea, o anumita tehnologie reprezinta un compromis intre aceste caracteristici (de exemplu, vitezele mari de transmisie se platesc cu intarzieri mai mari). Prin urmare, ideea consta in a da sugestii algoritmului de rutare despre ceea ce este considerat mai important; si este lipsit de sens sa se specifice toate cele trei tipuri de servicii.
Pentru a intelege mai bine semnificatia campului LUNGIMEA TOTALA (a datagramei) vom incerca sa vedem cat de mare poate fi o datagrama. Spre diferenta d cadrele din retelele fizice, care trebuie recunoscute de catre hardware, datagramele sunt manipulate de catre software. Ele pot avea orice lungime pe care proiectantii protocolului o pot decide. Chiar daca versiunea 4 a protocolului IP accepta o lungime maxima de 65 535 octeti pentru o datagrama, aceasta limita poate fi schimbata in versiuni ulterioare.
O limitare fundamentala a dimensiunii datagramelor apare, insa in practica. Se stie ca datagramele sunt transportate de la o masina la alta pe retelele fizice care alcatuiesc internet. Pentru a face eficient transportul in internet, am dori ca fiecare datagrama sa circule intr-un cadru fizic distinct. Adica am vrea ca pachetul din reteaua abstracta reprezentata de internet sa corespunda exact unui pachet real, daca este posibil
Transportarea unei datagrame intr-un singur cadru de retea este, de fapt, o incapsulare. Pentru reteaua respectiva, o datagrama este ca oricare mesaj trimis de la o masina la alta. Hardware-ul nu recunoaste formatul datagramei si nici nu intelege adresa IP a destinatiei. Reteaua fizica trateaza intreaga datagrama, inclusiv antetul ei, drept date.
ANTET DATAGRAMA
CAMPUL DE DATE AL DATAGRAMEI
ANTET CADRU
CAMPUL DE DATE AL CADRULUI
In cazul ideal, intreaga datagrama IP poate fi cuprinsa intr-un singur cadru fizic, facand ca transmisia prin reteaua fizica sa fie eficienta *). Pentru a realiza o astfel de eficienta, proiectantii IP ar fi trebuit sa aleaga o astfel de dimensiune maxima a datagramei incat sa poata fi intotdeauna cuprinsa intr-un singur cadru. Dilema o constituia, insa, alegerea dimensiunii cadrelor. In fond, o datagrama poate traversa mai multe tipuri de retele fizice in drumul ei prin internet catre destinatia finala
Se stie ca fiecare tehnologie hardware de comutare a pachetelor fixeaza o limita superioara pentru cantitatea de date ce poate fi transferata cu ajutorul unui cadru fizic. De exemplu, Ethernet limiteaza zona de date din cadru la 1 500 octeti, in timp ce FDDI permite pana la 4 470 octeti. Aceasta limita se numeste unitatea maxima de transfer [maximum transfer unit (MTU)] a retelei Dimensiunile MTU pot fi destul de mici: unele tehnologii hardware limiteaza datele transferate la 128 octeti sau chiar mai putin. Limitarea dimensiunilor datagramelor astfel incat ele sa poata fi cuprinse in cele mai mici MTU posibile in internet face ca transferul de date sa fie ineficient atunci cand datagramele respective strabat o retea ce poate transporta cadre de dimensiuni mai mari. Dar este clar ca permitand datagramelor sa fie mai mari decat cea mai mica MTU dintr-o retea din internet ar insemna ca o datagrama sa nu poata fi intotdeauna incapsulata intr-un singur cadru de retea.
Solutia este impusa de principiul proiectarii internet care stipuleaza ca trebuie mascate tehnologiile retelelor fizice aferente pentru a face comunicatia convenabila pentru utilizator. Asadar, in loc de a proiecta datagramele astfel incat sa raspunda restrictiilor impuse de retelele fizice, pentru software-ul TCP/IP se alege o dimensiune initiala convenabila a datagramei, gasindu-se o modalitate de a fragmenta datagramele mari in parti mai mici - numite fragmente [fragment] - atunci cand datagrama trebuie sa traverseze retele care au o MTU mica
Dupa cum se poate vedea in fig. de mai jos, fragmentarea apare, de obicei, la un ruter de pe traseul dintre sursa datagramei si destinatia sa finala. Ruterul primeste o datagrama de la o retea avand o MTU mare si trebuie sa o trimita printr-o retea in care MTU este mai mica decat dimensiunea datagramei.
In exemplul prezentat in fig., ambele calculatoare sunt conectate direct la cate o retea Ethernet care au MTU = 1 500 octeti. Prin urmare, ambele calculatoare pot genera si trimite datagrame de lungimi de pana la 1 500 octeti. Totusi, traseul dintre ele contine o retea cu o MTU = 620. In cazul in care calculatorul A trimite calculatorului B o datagrama mai mare de 620 octeti, ruterul R1 va fragmenta datagrama. In mod similar, daca B trimite o datagrama mare lui A, ruterul R2 va fragmenta datagrama.
Dimensiunea fragmentului se alege astfel incat fiecare fragment sa poata fi expediat prin reteaua respectiva intr-un singur cadru. In plus, cum IP reprezinta deplasarea (offset) datelor prin multipli de 8 octeti, dimensiunea fragmentului trebuie aleasa ca multiplu de 8. Desigur, alegand multiplul lui 8 cel mai apropiat de MTU, datagrama nu se imparti, de regula, in parti toate egale, ci ultima va fi, adesea, mai scurta ca celelalte. Fragmentele trebuie reasamblate pentru a obtine o copie completa a datagramei originare inainte de a fi prelucrata la destinatie.
Protocolul IP nu limiteaza datagramele la dimensiuni
mici si nici nu garanteaza ca
datagramele mari vor fi livrate fara
fragmentare. Sursa poate alege dimensiunea care i se pare cea mai potrivita pentru datagrama; fragmentarea si reasamblarea se fac automat, fara ca sursa sa intreprinda vreo actiune speciala.
Specificatiile IP stipuleaza ca
ruterele trebuie sa accepte
datagrame avand
dimensiunea maxima cel mult egala
cu valorile MTU ale retelelor
la care sunt atasate. In plus, un ruter trebuie sa faca fata, intotdeauna, datagramelor de pana la
576 octeti (si calculatoarelor li se cere sa accepte si sa reasambleze, daca este necesar, datagrame de cel putin 576 octeti).
Desi fragmentarea inseamna, in esenta, divizarea datagramei in mai multe bucati, fiecare fragment va avea acelasi format ca si
datagrama originara. Fig. care urmeaza ilustreaza rezultatul fragmentarii (fig. b) unei datagrame ce transporta
1 400 octeti de date (fig. a); offset-urile indicate (in octeti) sunt
exprimate in zecimal (ele trebuie impartite prin 8 pentru a obtine valorile stocate in antetele fragmentelor).
ANTETUL
DATAGRAMEI
date1
600 octeti
date2
600 octeti
date3
200 octeti
(a)
ANTETUL
FRAGMENTULUI 1
date1
Fragmentul 1 (offset 0)
ANTETUL
FRAGMENTULUI 1
date2
Fragmentul 2 (offset 600)
ANTETUL
FRAGMENTULUI 1
date3
Fragmentul 3 (offset 1 200)
(b)
Fiecare fragment contine un antet de datagrama - care dubleaza majoritatea antetului datagramei originare (cu exceptia unui bit din campul FANIOANE care indica faptul ca avem de-a face cu un fragment) - urmat de un camp de date de dimensiune cat poate cuprinde fragmentul, dar mentinand lungimea totala mai mica decat MTU pentru reteaua prin care trebuie sa circule.
Apare urmatoarea problema: dupa trecerea printr-o retea, datagrama trebuie reasamblata sau trebuie ca fragmentele sa circule ca atare pana la calculatorul final inainte de a fi reasamblate? Intr-o internet TCP/IP s-a adoptat solutia ca, odata executata fragmentarea unei datagrame, fragmentele sa circule ca datagrame separate pe tot traseul pana la destinatia finala, urmand ca acolo sa fie reasamblate. Solutia prezinta doua dezavantaje. Mai intai, deoarece datagramele nu sunt reasamblate imediat dupa trecerea printr-o retea cu o MTU mica, micile fragmente trebuie transportate de la punctul de fragmentare pana la destinatia finala. Reasamblarea datagramelor la destinatia finala poate cauza ineficienta: chiar daca unele dintre retelele fizice intalnite dupa punctul de fragmentare au MTU de dimensiuni mari, ele vor fi traversate de fragmente mici. In al doilea rand, daca se pierd unele fragmente, datagrama nu poate fi reasamblata. Masina receptoare porneste un ceas de reasamblare [reassembly timer] atunci cand primeste un fragment initial. Daca timpul fixat expira inainte ca toate fragmentele sa fi sosit, masina receptoare elimina fragmentele supravietuitoare fara sa prelucreze datagrama. Prin urmare, probabilitatea pierderii datagramei creste cu gradul de fragmentare intrucat pierderea unui singur fragment provoaca pierderea intregii datagrame.
In pofida acestor mici dezavantaje, executarea reasamblarii la destinatia finala lucreaza destul de bine. Ea permite ca fiecarui fragment sa i se gaseasca in mod independent traseul si nu impune ruterelor intermediare sa stocheze sau sa reasambleze fragmente.