Sunteți pe pagina 1din 8

8.

6 Protocolul Internet: serviciu de


livrare de datagrame, fără
conexiuni

1. Internet - o reţea virtuală


Structura unei internet, văzută ca mai multe reţele fizice interconectate prin
intermediul unor rutere, crează o imagine înşelătoare a conceptului de internet,
întrucât atenţia cea mai mare trebuie îndreptată către interfaţa pe care o internet o
oferă utilizatorilor şi nu către tehnologia de interconectare. Un utilizator consideră o
internet drept o unică reţea virtuală ce interconectează toate calculatoarele şi prin
care este posibilă comunicaţia; structura aferentă este mascată, dar mei ales
irelevantă. Într-un anumit sens, o internet este o abstractizare a reţelelor fizice,
întrucât, la niuvelul ei cel mai de jos, ea furnizează aceleaşi funcţiuni ca o reţea fizică:
acceptă pachete şi le trimite. Nivelurile superioare ale software-ului de internet sunt
cele ce contribuie cel mai mult la funcţionalitatea bogată percepută de utilizatori.

2. Arhitectura şi filozofia
internet
Din punct de vedere conceptual, o internet bazată pe protocoalele TCP/IP
oferă trei mulţimi de servicii, organizate pe niveluri ierarhice conceptuale
interdependente (vezi fig. de mai jos): la nivelul cel mai de jos, un serviciu de livrare
de unităţi de informaţie, fără conexiuni, constituie fundamentul pe care se construieşte
tot restul serviciilor. La următorul nivel se află un serviciu fiabil de transport, ce
furnizează o platformă de nivel superior de care depind aplicaţiile aflate la nivelul
superior.

SERVICII DE APLICAŢII
SERVICIU DE TRANSPORT FIABIL
SERVICIU DE LIVRARE DE PACHETE, FĂRĂ CONEXIUNI
3. Conceptul de livrare
nefiabilă de unităţi de
informaţie
Deşi putem asocia protocoalele cu fiecare din serviciile din nivelurile
evidenţiate, motivul identificării acestora din urmă drept părţi conceptuale ale internet
este acela că ele pun în evidenţă filozofia proiectării lor. Ideea centrală este
următoarea: programele pentru internet sunt proiectate în jurul a trei servicii
conceptuale de reţea de calculatoare, organizate ierarhic, într-o arhitectură pe
cât de robustă, pe atât de adaptabilă - ceea ce a dus la marele succes al internet.
Unul din cele mai importante avantaje ale acestei separări conceptuale îl
constituie faptul că ea face posibilă înlocuirea unui serviciu fără a le perturba pe
celelalte. Deci activitatea de cercetare şi dezvoltare se poate desfăşura concurent
pentru toate cele trei niveluri conceptuale de servicii.

4. Sistem de livrare de
pachete, fără conexiuni
Serviciul fundamental asigurat de internet constă în 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, fără conexiuni - asemănător cu
serviciul oferit de hardware-ul reţelelor fizice. Serviciul este considerat nefiabil pentru
că nu garantează livrarea corectă a pachetelor; pachetele pot fi pierdute, dublate,
întârziate sau recepţionate în altă ordine decât cea de la emisie, dar serviciul nu va
detecta astfel de situaţii şi, deci, nu va informa emiţătorul sau receptorul despre
apariţia lor. Serviciul este de tip fără conexiuni, întrucât 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 putând chiar fi pierdute. În fine, se zice că
acest serviciu este cu minim de effort întrucât software-ul de internet face o încercare
conştiincioasă de a livra pachetele destinatarului, adică internet nu înlătură în mod
capricios pachetele, lipsa de fiabilitate apărând doar atunci când resursele sunt
epuizate sau reţelele fizice aferente prezintă defecţiuni.

5. Scopul Protocolului internet


Protocolul care efectuează mecanismul de livrare nefiabilă, fără conexiuni, a
pachetelor se numeşte Protocolul internet [Internet Protocol (IP)]. IP se
bazează pe trei definiţii importante. Mai întâi, protocolul IP defineşte unitatea de
bază pentru transferul de date utilizată în internet cu TCP/IP - deci precizează
formatul exact al tuturor datelor vehiculate într-o internet. În al doilea rând, programul
IP efectuează funcţia de rutare, selectând traseul pe care vor fi trimise datele. În al
treilea rând, IP include şi un set de reguli care întruchipează ideea de livrare nefiabilă
de pachete; aceste reguli caracterizează modul în care calculatoarele şi ruterele trebuie
să proceseze pachetele, cum şi când trebuie generate mesaje de eroare, precum şi
condiţiile în care pot fi eliminate pachetele. Protocolul IP constituie o parte atât de
importantă a proiectării, încât se vorbeşte de o tehnologie pe bază de IP pentru
internet.
În cele ce urmează vom analiza formatul specificat de IP pentru unităţile de
informaţii vehiculate într-o internet bazată pe suita de protocoale TCP/IP (problemele
privitoare la rutare şi modul de tratare a erorilor vor face obiectul unor capitole
ulterioare).

6. Datagrama internet
Analogia dintre o reţea fizică şi internet bazată pe TCP/IP este puternică. Într-o
reţea fizică, unitatea de bază pentru transferul de date este cadrul. El conţine un antet
care dă informaţii precum adresele (fizice) ale sursei şi destinaţiei. În internet, unitatea
de bază în transferul informaţiilor este numită datagramă internet [internet
datagram] / datagramă IP [IP datagram] (sau, pur şi simplu, datagramă). Ca
şi la cadrele tipice din reţelele fizice, datagrama conţine un câmp de date şi un antet.
La fel ca în cadre, antetul conţine adresele sursei şi destinaţiei şi un câmp pentru tipul
datagramei, care identifică conţinutul acesteia. Desigur, diferenţa constă în faptul că
antetul datagramei conţine adresele IP, în timp ce antetul unui cadru conţine adresele
fizice. Forma generală a unei datagrame arată astfel:

ANTETUL DATAGRAMEI ZONA DE DATE A DATAGRAMEI

Protocoul IP nu precizează nimic în privinţa zonei de date a datagramei; ea


poate fi utilizată pentru a transporta date arbitrare.
Fig. ce urmează prezintă în detaliu formatul unei datagrame, evidenţiind
câmpurile sale.
0 4 8 16 19 24 31
VERS LUNG TIP SERVICIU LUNGIMEA TOTALĂ
A
IDENTIFICARE FANIO OFFSET FRAGMENT
ANE
DURATA DE PROTOCOL SUMA DE CONTROL ANTET
VIAŢĂ
ADRESA IP A SURSEI
ADRESA IP A DESTINAŢIEI
OPŢIUNI IP (dacă există) UMPLUTURĂ
DATE
...
Întrucât procesarea datagramelor are loc în software, conţinutul şi formatul lor
nu sunt constrânse de nici un hardware.
Primul câmp al datagramei, pe 4 biţi, este VERS şi conţine versiunea
protocolului IP care a fost utilizată pentru crearea datagramei. Acest câmp serveşte la
faptului că emiţătorul, receptorul şi oricare ruter de pe traseul dintre ele acceptă
formatul datagramei. Întregul program IP necesită verificarea câmpului destinat
versiunii înainte de a procesa o datagramă, pentru a se asigura că aceasta corespunde
formatului la care programul se aşteaptă. Dacă standardele se modifică, maşinile vor
rejecta datagramele cu versiuni de protocol ce diferă de al lor, prevenind astfel
interpretarea greşită a conţinutului datagramei din cauza unui format ieşit din
circulaţie. În cele ce urmează se va presupune că avem de-a face cu versiunea 4 a
protocolului IP (dacă nuse precizează altfel).
Câmpul pentru lungimea antetului (LUNG A), tot pe 4 biţi, dă lungimea
antetului datagramei exprimată în cuvinte (32 biţi). După cum se va vedea, toate
câmpurile din antet au lungimi fixe, cu excepţia câmpului OPŢIUNI IP şi, evident, a
celui de UMPLUTURĂ. Cel mai întâlnit antet - cel care nu conţine nici opţiuni, nici
umplutură - are o lungime de 20 octeţi şi valoarea 5 în câmpul pentru lungimea
antetului.
Câmpul LUNGIME TOTALĂ dă lungimea întregii datagrame IP, măsurată în
octeţi. Lungimea zonei de date poate fi calculată scăzând valoarea LUNG A din
valoarea LUNGIME TOTALĂ. Cum câmpul LUNGIME TOTALĂ are 16 biţi,
dimensiunea maximă posibilă a unei datagrame va fi de 216 = 65 535 octeţi. Pentru
majoritatea aplicaţiilor, aceasta nu constituie o restricţie severă; dar va putea deveni
mai importantă pentru reţelele cu viteze mari de transmisie, la care apare firească o
lungime mai mare a pachetelor.
Câmpul TIP SERVICIU - numit neoficial şi Type Of Service (TOS) -
precizează în cei 8 biţi ai săi modul cum trebuie tratată datagrama. El este constituit
din 5 subcâmpuri, ca în fog. de mai jos:
0 1 2 3 4 5 6 7
PRIORITATEA D T R neutilizat
Cei 3 biţi ai subcâmpului PRIORITATEA indică prioritatea [precedence]
datagramei, cu valori de la 0 (prioritate normală) până la 7 (controlul reţelei),
permiţând emiţătorilor de mesaje să indice importanţa fiecărei datagrame. Deşi
software-ul din majoritatea calculatoarelor şi ruterelor ignoră tipul serviciului, el este
un concept important întrucât oferă un mecanism ce permite informaţiei de control să
aibă prioritate faţă de date. De exemplu, dacă toate calculatoarele şi ruterele dau curs
priorităţilor, este posibilă implementarea algoritmilor de rezolvare a aglomerărilor care
nu sunt afectaţi de aglomerările pe care ai încearcă să le stăpânescă.
Biţii D, T şi R indică tipul de transport pe care îl doreşte datagrama. Când
sunt setaţi, bitul D reclamă întârzieri mici, bitul T cere o viteză mare de transmisie,
iar bitul R impune o mare fiabilitate. Desigur, s-ar putea ca o internet să nu poată
asigura tipul de transport cerut (adică s-ar putea ca nici unul din traseele către
destinaţie să nu aibe proprietăţile cerute). Aşadar, vom privi aceste cerinţe de transport
ca nişte “sugestii” pentru algoritmii de rutare şi nu ca nişte imperative. Dacă, însă, un
ruter cunoaşte mai multe trasee posibile către o destinaţie dată, el poate utiliza câmpul
tipului de transport pentru a alege acel traseu care are caracteristicile cele mai
apropiate de cele dorite. De exemplu, să presupunem că un ruter poate alege între o
linie închiriată de capacitate joasă şi o conexiune prin satelit - cu lărgime mare de
bandă, dar cu întârzieri mari. Datagramele care poartă succesiuni de caractere
introduse de un utilizator de la tastatură şi destinate unui calculator aflat la distanţă ar
putea avea bitul D setat, cerând ca ele să fie livrate cât mai repede posibil, în timp ce
datagramele care transportă un transfer de fişier mare ar putea avea bitul T setat,
cerând ca ele să fie transportate pe trasee prin satelit, de mare capacitate de transmisie.
Este important să conştientizăm faptul că algoritmii de rutare trebuie să aleagă
între tehnologiile reţelelor fizice aferente, fiecare din ele având caracteristicile ei de
întârziere, viteză de transmisie şi fiabilitate. Adesea, o anumită tehnologie reprezintă
un compromis între aceste caracteristici (de exemplu, vitezele mari de transmisie se
plătesc cu întârzieri mai mari). Prin urmare, ideea constă în a da sugestii algoritmului
de rutare despre ceea ce este considerat mai important; şi este lipsit de sens să se
specifice toate cele trei tipuri de servicii.
Pentru a înţelege mai bine semnificaţia câmpului LUNGIMEA TOTALĂ (a
datagramei) vom încerca să vedem cât de mare poate fi o datagramă. Spre diferenţă d
cadrele din reţelele fizice, care trebuie recunoscute de către hardware, datagramele
sunt manipulate de către software. Ele pot avea orice lungime pe care proiectanţii
protocolului o pot decide. Chiar dacă versiunea 4 a protocolului IP acceptă o lungime
maximă de 65 535 octeţi pentru o datagramă, această limită poate fi schimbată în
versiuni ulterioare.
O limitare fundamentală a dimensiunii datagramelor apare, însă, în practică. Se
ştie că datagramele sunt transportate de la o maşină la alta pe reţelele fizice care
alcătuiesc internet. Pentru a face eficient transportul în internet, am dori ca fiecare
datagramă să circule într-un cadru fizic distinct. Adică am vrea ca pachetul din reţeaua
abstractă reprezentată de internet să corespundă exact unui pachet real, dacă este
posibil
Transportarea unei datagrame într-un singur cadru de reţea este, de fapt, o
încapsulare. Pentru reţeaua respectivă, o datagramă este ca oricare mesaj trimis de la o
maşină la alta. Hardware-ul nu recunoaşte formatul datagramei şi nici nu înţelege
adresa IP a destinaţiei. Reţeaua fizică tratează întreaga datagramă, inclusiv antetul ei,
drept date.
ANTET
CÂMPUL DE DATE AL DATAGRAMEI
DATAGRA

ANTET
CÂMPUL DE DATE AL CADRULUI
CADRU
În cazul ideal, întreaga datagramă IP poate fi cuprinsă într-un singur cadru
fizic, făcând ca transmisia prin reţeaua fizică să fie eficientă *). Pentru a realiza o astfel
de eficienţă, proiectanţii IP ar fi trebuit să aleagă o astfel de dimensiune maximă a
datagramei încât să poată fi întotdeauna cuprinsă într-un singur cadru. Dilema o
constituia, însă, alegerea dimensiunii cadrelor. În fond, o datagramă poate traversa mai
multe tipuri de reţele fizice în drumul ei prin internet către destinaţia finală.
Se ştie că fiecare tehnologie hardware de comutare a pachetelor fixează o limită
superioară pentru cantitatea de date ce poate fi transferată cu ajutorul unui cadru fizic.
De exemplu, Ethernet limitează zona de date din cadru la 1 500 octeţi, în timp ce

* )
antetul cadrului are un câmp care identifică de obicei datele transportate; Ethernet
utilizează valoarea 080016 pentru a indica faptul că zona de date conţine o datagramă IP
încapsulată.
FDDI permite până la 4 470 octeţi. Această limită se numeşte unitatea maximă
de transfer [maximum transfer unit (MTU)] a reţelei Dimensiunile MTU pot
fi destul de mici: unele tehnologii hardware limitează datele transferate la 128 octeţi
sau chiar mai puţin. Limitarea dimensiunilor datagramelor astfel încât ele să poată fi
cuprinse în cele mai mici MTU posibile în internet face ca transferul de date să fie
ineficient atunci când datagramele respective străbat o reţea ce poate transporta cadre
de dimensiuni mai mari. Dar este clar că permiţând datagramelor să fie mai mari decât
cea mai mică MTU dintr-o reţea din internet ar însemna ca o datagramă să nu poată fi
întotdeauna încapsulată într-un singur cadru de reţea.
Soluţia este impusă de principiul proiectării internet care stipulează că trebuie
mascate tehnologiile reţelelor fizice aferente pentru a face comunicaţia convenabilă
pentru utilizator. Aşadar, în loc de a proiecta datagramele astfel încât să răspundă
restricţiilor impuse de reţelele fizice, pentru software-ul TCP/IP se alege o
dimensiune iniţială convenabilă a datagramei, găsindu-se o modalitate de a fragmenta
datagramele mari în părţi mai mici - numite fragmente [fragment] - atunci când
datagrama trebuie să traverseze reţele care au o MTU mică.
După cum se poate vedea în fig. de mai jos, fragmentarea apare, de obicei, la un
ruter de pe traseul dintre sursa datagramei şi destinaţia sa finală. Ruterul primeşte o
datagramă de la o reţea având o MTU mare şi trebuie să o trimită printr-o reţea în
care MTU este mai mică decât dimensiunea datagramei.

C a l c u la t o r u l C a l c u la t o r u l
A B

R ţe e a u a 1 R ţe e a u a 3
M T U = 1 5 0 0 M T U = 1 5 0 0
R ţe e a u a
R R2
1
M T U = 6 2 20

În exemplul prezentat în fig., ambele calculatoare sunt conectate direct la câte o


reţea Ethernet care au MTU = 1 500 octeţi. Prin urmare, ambele calculatoare pot
genera şi trimite datagrame de lungimi de până la 1 500 octeţi. Totuşi, traseul dintre
ele conţine o reţea cu o MTU = 620. În cazul în care calculatorul A trimite
calculatorului B o datagramă mai mare de 620 octeţi, ruterul R1 va fragmenta
datagrama. În mod similar, dacă B trimite o datagramă mare lui A, ruterul R2 va
fragmenta datagrama.
Dimensiunea fragmentului se alege astfel încât fiecare fragment să poată fi
expediat prin reţeaua respectivă într-un singur cadru. În plus, cum IP reprezintă
deplasarea (offset) datelor prin multipli de 8 octeţi, dimensiunea fragmentului trebuie
aleasă ca multiplu de 8. Desigur, alegând multiplul lui 8 cel mai apropiat de MTU,
datagrama nu se împărţi, de regulă, în părţi toate egale, ci ultima va fi, adesea, mai
scurtă ca celelalte. Fragmentele trebuie reasamblate pentru a obţine o copie completă a
datagramei originare înainte de a fi prelucrată la destinaţie.
Protocolul IP nu limitează datagramele la dimensiuni mici şi nici nu
garantează că datagramele mari vor fi livrate fără fragmentare. Sursa poate alege
dimensiunea care i se pare cea mai potrivită pentru datagramă; fragmentarea şi
reasamblarea se fac automat, fără ca sursa să întreprindă vreo acţiune specială.
Specificaţiile IP stipulează că ruterele trebuie să accepte datagrame având
dimensiunea maximă cel mult egală cu valorile MTU ale reţelelor la care sunt
ataşate. În plus, un ruter trebuie să facă faţă, întotdeauna, datagramelor de până la
576 octeţi (şi calculatoarelor li se cere să accepte şi să reasambleze, dacă este necesar,
datagrame de cel puţin 576 octeţi).
Deşi fragmentarea înseamnă, în esenţă, divizarea datagramei în mai multe
bucăţi, fiecare fragment va avea acelaşi format ca şi datagrama originară. Fig.
care urmează ilustrează rezultatul fragmentării (fig. b) unei datagrame ce transportă
1 400 octeţi de date (fig. a); offset-urile indicate (în octeţi) sunt exprimate în zecimal
(ele trebuie împărţite prin 8 pentru a obţine valorile stocate în antetele fragmentelor).
ANTETUL date1 date2 date3
DATAGRAME 600 octeţi 600 octeţi 200
I octeţi

(a)

ANTETUL
FRAGMENTU date1 Fragmentul 1 (offset
LUI 1 0)

ANTETUL
FRAGMENTU date2 Fragmentul 2 (offset
LUI 1 600)

ANTETUL
FRAGMENTU date3 Fragmentul 3 (offset
LUI 1 1 200)

(b)

Fiecare fragment conţine un antet de datagramă - care dublează majoritatea


antetului datagramei originare (cu excepţia unui bit din câmpul FANIOANE care
indică faptul că avem de-a face cu un fragment) - urmat de un câmp de date de
dimensiune cât poate cuprinde fragmentul, dar menţinând lungimea totală mai mică
decât MTU pentru reţeaua prin care trebuie să circule.
Apare următoarea problemă: după trecerea printr-o reţea, datagrama trebuie
reasamblată sau trebuie ca fragmentele să circule ca atare până la calculatorul final
înainte de a fi reasamblate? Într-o internet TCP/IP s-a adoptat soluţia ca, odată
executată fragmentarea unei datagrame, fragmentele să circule ca datagrame separate
pe tot traseul până la destinaţia finală, urmând ca acolo să fie reasamblate. Soluţia
prezintă două dezavantaje. Mai întâi, deoarece datagramele nu sunt reasamblate
imediat după trecerea printr-o reţea cu o MTU mică, micile fragmente trebuie
transportate de la punctul de fragmentare până la destinaţia finală. Reasamblarea
datagramelor la destinaţia finală poate cauza ineficienţă: chiar dacă unele dintre
reţelele fizice întâlnite după punctul de fragmentare au MTU de dimensiuni mari, ele
vor fi traversate de fragmente mici. În al doilea rând, dacă se pierd unele fragmente,
datagrama nu poate fi reasamblată. Maşina receptoare porneşte un ceas de
reasamblare [reassembly timer] atunci când primeşte un fragment iniţial. Dacă
timpul fixat expiră înainte ca toate fragmentele să fi sosit, maşina receptoare elimină
fragmentele supravieţuitoare fără să prelucreze datagrama. Prin urmare, probabilitatea
pierderii datagramei creşte cu gradul de fragmentare întrucât pierderea unui singur
fragment provoacă pierderea întregii datagrame.
În pofida acestor mici dezavantaje, executarea reasamblării la destinaţia finală
lucrează destul de bine. Ea permite ca fiecărui fragment să i se găsească în mod
independent traseul şi nu impune ruterelor intermediare să stocheze sau să
reasambleze fragmente.