Sunteți pe pagina 1din 109

P.C.

1. Nivelurile OSI (Open Systems Interconnection)


Nivelul fizic se ocup de transmiterea biilor printr-un canal de
comunicaie. Proiectarea trebuie s garanteze c atunci cnd unul din capete
trimite un bit 1, acesta e receptat n cealalt parte ca un bit 1, nu ca un bit 0.
Problemele tipice se refer la ci voli trebuie utilizai pentru a reprezenta un 1
i ci pentru un 0, dac transmisia poate avea loc simultan n ambele sensuri,
cum este stabilit conexiunea iniial i cum este ntrerupt cnd au terminat de
comunicat ambele pri, ci pini are conectorul de reea i la ce folosete
fiecare pin. Aceste aspecte de proiectare au o legtur strns cu interfeele
mecanice, electrice, funcionale i procedurale, ca i cu mediul de transmisie
situat sub nivelul fizic.
Nivelul legaturii de date trateaza erorile de transmisie produse la nivelul
fizic, realizand o comunicare corecta intre doua noduri adiacente. Mecanismul
utilizat in acest scop este impartirea sirului de biti in cadre, carora le sunt
adaugate informatii de control (coduri de verificare, numere de secventa etc).
Cadrele sunt transmise individual putand fi verificate si confirmate de catre
receptor. Alte functii ale nivelului se refera la: controlul fluxului datelor (astfel
incat transmitatorul sa nu furnizeze date mai rapid decat le poate accepta
receptorul) si gestiunea legaturii (stabilirea legaturii, controlul schimbului de date
si desfiintarea legaturii).
Nivelul retea asigura dirijarea unitatilor de date intre nodurile sursa si
destinatar, trecand eventual prin noduri intermediare. Decizia este luata astfel
incat sa nu existe in acelasi timp legaturi supraincarcate si legaturi neutilizate,
evitandu-se deci congestionarea retelei. O alta functie importanta a nivelului
retea este cea de interconectare a retelelor cu arhitecturi diferite.
Nivelul transport realizeaza o comunicare sigura intre doua calculatoare
gazda, detectand si corectand erorile pe care nivelul retea nu le trateaza. El este
important nu numai prin pozitia pe care o ocupa, la mijlocul ierarhiei de nivele,
dar si prin functia sa, de a furniza nivelelor superioare o interfata independenta

de tipul retelei utilizate. Functiile sunt realizate de entitati situate in sistemele


gazda, fara concursul altor entitati similare intermediare, motiv pentru care se
numesc functii "capat la capat" (capetele fiind cele doua entitati de transport
corespondente).
Nivelul sesiune ofera toate serviciile pentru gestiunea jetoanelor, lasand la
latitudinea utilizatorilor semnificatiile asociate acestora. Ele au la baza utilizarea
unui mesaj special, numit jeton (token), care poate fi trecut de la un utilizator la
altul si a carui posesie ofera detinatorului anumite privilegii: de a transmite date,
de a stabili puncte de sincronizare, de a stabili inceputul unei activitati etc.
Nivelul prezentare realizeaza transformari ale reprezentarii datelor, astfel
incat sa se pastreze semnificatia lor, rezolvandu-se totodata diferentele de
sintaxa. Functiile principale se refera la codificarea standard a datelor transmise
intre calculatoare cu conventii de reprezentare diferite, la comprimarea textelor,
precum si la criptarea/decriptarea acestora in vederea protectiei si securitatii lor.
Nivelul aplicatie, cel mai inalt nivel al arhitecturii, are rolul de fereastra de
comunicare prin care se fac toate schimburile de date intre utilizatori.
Fiind nivelul care furnizeaza servicii direct aplicatiilor, el cuprinde toate functiile
pe care acestea le pot solicita:
- identificarea utilizatorilor cooperanti, autentificarea lor si determinarea
disponibilitatii acestora,
- stabilirea calitatii serviciului,
- sincronizarea aplicatiilor cooperante si selectarea modului de dialog,
- stabilirea responsabilitatilor pentru tratarea erorilor,
- identificarea constrangerilor asupra sintaxei datelor,
- transferul informatiei.

2. Serviciile oferite de nivelul legatura de date nivelului retea.


Nivelul legtur de date poate fi proiectat s ofere diferite servicii. Serviciile
efective oferite pot varia de la sistem la sistem. Trei posibiliti de baz, oferite n
mod curent, sunt:
1. Serviciu neconfirmat fr conexiune.
2. Serviciu confirmat fr conexiune.
3. Serviciu confirmat orientat-conexiune.
Serviciul neconfirmat fr conexiune const din aceea c maina surs
trimite cadre independente ctre maina destinaie, fr ca maina destinaie s
trebuiasc s confirme primirea lor. n acest caz, nu sunt necesare stabilirea i
desfiinarea unei conexiuni logice. Dac un cadru este pierdut datorit zgomotului
de pe linie, la nivelul legtur de date nu se face nici o ncercare pentru
recuperarea lui. Aceast clas de servicii este adecvat atunci cnd rata de erori
este foarte sczut, nct recuperarea este lsat n sarcina nivelurilor superioare.
De asemenea, este adecvat pentru traficul de timp real, cum ar fi cel de voce,
unde a primi date cu ntrziere este mai ru dect a primi date eronate.
Majoritatea LAN-urilor utilizeaz la nivelul legturii de date servicii neconfirmate
fr conexiune.
Urmtorul pas n ceea ce privete sigurana este serviciul confirmat fr
conexiune. Atunci cnd este oferit acest serviciu, nc nu se utilizeaz conexiuni,
dar fiecare cadru trimis este confirmat individual. n acest mod, emitorul tie
dac un cadru a ajuns sau nu cu bine. Dac nu a ajuns ntr-un interval de timp
specificat, poate fi trimis din nou. Acest serviciu este folositor pentru canale
nesigure, cum ar fi sistemele fr fir.
Asigurarea confirmrii la nivelul legturii de date este doar o optimizare,
niciodat o cerin. Nivelul reea poate ntotdeauna s trimit un mesaj i s
atepte s fie confirmat. Dac confirmarea nu apare n timp util, atunci emitorul
poate retrimite ntregul mesaj. Problema cu aceast strategie este aceea c, de
obicei, cadrele au o lungime maxim impus de hardware, iar pachetele nivelului
reea nu au aceasta limitare. Dac pachetul mediu este spart n, s zicem, 10
cadre i 20% din totalul cadrelor sunt pierdute, transmiterea acestuia poate lua

foarte mult timp. n cazul n care cadrele individuale sunt confirmate i


retransmise, pachetele ntregi vor fi transmise mult mai rapid. Pe canale sigure,
precum fibra optic, costul suplimentar implicat de un astfel de protocol al
legturii de date poate fi nejustificat, dar pe canale fr fir, costul este pe deplin
justificat datorit nesiguranei acestora.
Cel mai sofisticat serviciu pe care nivelul legtur de date l pune la
dispoziia nivelului reea este serviciul orientat-conexiune. n cazul acestui
serviciu, mainile surs i destinaie stabilesc o conexiune nainte de a transfera
date. Fiecare cadru trimis pe conexiune este numerotat i nivelul legtur de date
garanteaz c fiecare cadru trimis este ntr-adevr recepionat. Mai mult,
garanteaz c fiecare cadru este recepionat exact o dat i toate cadrele sunt
recepionate n ordinea corect. n schimb, n cazul serviciului fr conexiune,
este posibil ca, datorit unei confirmri pierdute, un cadru s fie transmis de mai
multe ori i, prin urmare, recepionat de mai multe ori. Spre deosebire de acesta,
serviciul orientat conexiune furnizeaz proceselor de la nivelul reea echivalentul
unui flux de bii sigur.
Atunci cnd este utilizat serviciul orientat conexiune, transferurile au trei
faze distincte. n prima faz este stabilit conexiunea, ambele pri iniializnd
variabile i contoare, utilizate pentru a ine evidena cadrelor care au fost
recepionate i a celor care nu au fost. n a doua faz, sunt transmise unul sau mai
multe cadre. n a treia i ultima faz, conexiunea este desfiinat, elibernd
variabilele, tampoanele i alte resurse utilizate la meninerea conexiunii.

3. Incadrarea la nivelul legatura de date


Deoarece este prea periculos s ne bizuim pe timp pentru a marca
nceputul i sfritul fiecrui cadru, au fost elaborate alte metode. Vom analiza 3
metode:
1. Numrarea caracterelor.
2. Indicatori cu inserare de octei.
3. Indicatori de nceput i de sfrit, cu inserare de bii.
Prima metod de ncadrare utilizeaz un cmp din antet pentru a specifica
numrul de caractere din cadru. Atunci cnd nivelul legtur de date de la
destinaie primete contorul de caractere, tie cte caractere urmeaz i unde
este sfritul cadrului. Problema cu acest algoritm este c valoarea contorului
poate fi alterat de erori de transmisie. Chiar dac suma de control este incorect
i destinaia tie c a primit cadru eronat, nu exist nici o posibilitate de a
determina unde ncepe urmtorul cadru. Nu ajut nici trimiterea unui cadru
napoi la surs, cernd o retransmisie, deoarece destinaia nu tie peste cte
caractere s sar pentru a ncepe retransmisia. Din acest motiv, metoda
contorizrii caracterelor este rar utilizat.
A doua metod de ncadrare nltur problema resincronizrii dup o
eroare, prin aceea c fiecare cadru ncepe i se termin cu o secvena special de
octei. Iniial, octeii ce indicau nceputul, respectiv sfritul erau diferii, dar n
ultimii ani s-a trecut la utilizarea unui singur octet, numit octet indicator, att ca
indicator de nceput, ct i de sfrit. n acest fel, dac receptorul pierde
sincronizarea, acesta poate cuta octetul indicator pentru a gsi sfritul cadrului.
Doi octei indicatori consecutivi indic sfritul unui cadru i nceputul celui care
urmeaz.

O problem serioas cu aceast metod apare atunci cnd se transmit date


binare, cum ar fi un obiect sau numere n virgul mobil. Se poate ntmpla ca n
date s apar octetul folosit ca indicator.
Aceast situaie interfereaz cu procesul de ncadrare. O cale de rezolvare a
acestei probleme este ca nivelul legtur de date al emitorului s insereze un
octet special (ESC) naintea fiecrei apariii accidentale a indicatorului n date.
Nivelul legtur de date al receptorului va elimina acest octet special nainte de a
pasa datele nivelului reea. Aceast tehnic poart numele de inserare de octei
(eng.: byte stuffing) sau inserare de caractere (eng.: character stuffing) . Deci, un
octet indicator utilizat pentru ncadrare poate fi difereniat de unul prezent n
date prin faptul c este sau nu precedat de un octet special.
Bineneles, urmtoarea ntrebare este: Ce se ntmpl dac un octet
special apare n mijlocul datelor? Rspunsul este c pe lng el se insereaz nc
un octet special. Deci, un singur octet special face parte dintr-o secven special,
iar un octet special dublu indica faptul ca un singur octet de acest tip a aprut in
cadrul datelor. n toate cazurile, secvena de octei obinut dup eliminarea
octeilor inserai este exact secvena original.
Un dezavantaj major al utilizrii acestei metode de ncadrare este acela c
este limitat la utilizarea caracterelor de 8 bii. Nu toate codurile utilizeaz
caractere de 8 bii.
A treia metoda de incadrare permite cadrelor de date s conin un numr
arbitrar de bii i permite coduri de caractere cu un numr arbitrar de bii per
caracter. Funcioneaz astfel: fiecare cadru ncepe i se termin cu un ablon
special pe bii, 01111110, numit octet indicator (flag). De fiecare dat cnd nivelul
legtur de date al emitorului identific cinci de unu consecutivi n date,
insereaz automat un bit 0 n irul de bii de rezultai. Aceast inserare de bii (bit
stuffing) este similar inserrii de caractere, n care un octet escape este inserat n
irul de caractere de ieire, nainte de fiecare octet indicator din date.
Atunci cnd receptorul primete o succesiune de cinci bii 1, urmai de un bit 0,
extrage automat (adic terge) bitul 0. La fel ca i inserarea de caractere, care este

complet transparent pentru nivelul reea din ambele calculatoare, aa este i


inserarea de bii. Dac datele utilizator conin ablonul indicator, 01111110, acest
indicator este transmis ca 011111010, dar n memoria receptorului este pstrat ca
01111110.

4. Coduri corectoare de erori


Proiectanii de reele au dezvoltat dou strategii de baz pentru tratarea
erorilor. O modalitate este ca pe lng fiecare bloc de date trimis s se includ
suficient informaie redundant pentru ca receptorul s poat deduce care a fost
caracterul transmis. O alt soluie este s se includ suficient redundan pentru
a permite receptorului s constate c a aprut o eroare, dar nu care este eroarea,
i s cear o retransmisie. Prima strategie utilizeaz coduri corectoare de erori, iar
cea de-a doua utilizeaz coduri detectoare de erori. Folosirea codurilor corectoare
de erori este deseori referit sub numele de corectare de erori n avans (eng.:
forward error correction).
Fiecare dintre aceste tehnici se utilizeaz in situaii diferite. Pe canale cu
siguran mare, cum ar fi fibra optic, este mai eficient s utilizm un cod
detector de erori i s retransmitem blocul n care s-au detectat erori. In cazul
canalelor de comunicaie fr fir, este indicat sa adugm destul informaie
redundant fiecrui bloc, n loc s ne bazm pe retransmisie, care poate s fie la
rndul su afectat de erori.
Pentru a nelege cum pot fi tratate erorile, este necesar s privim cu
atenie la ceea ce este de fapt o eroare. n mod normal, un cadru conine m bii
de date (adic mesaj) i r bii redundani sau de control. S considerm lungimea
total n (adic, n = m + r ). O unitate format din n bii, care conine date i bii de
control, este numit frecvent cuvnt de cod de n bii (eng.: n-bit codeword).
Date fiind dou cuvinte de cod, s zicem, 10001001 i 10110001, este
posibil s determinm ci bii corespunztori difer. n acest caz difer 3 bii.
Pentru a determina ci bii difer, aplicm operatorul SAU EXCLUSIV ntre cele
dou cuvinte de cod i numrm biii 1 din rezultat.

Numrul de poziii binare n care dou cuvinte de cod difer se numete


distana Hamming (Hamming, 1950). Semnificaia sa este c dac dou cuvinte de
cod sunt desprite de o distan Hamming d, sunt necesare d erori de un singur
bit pentru a-l converti pe unul n cellalt.
n multe aplicaii de transmisie de date, toate cele 2m mesaje de date
posibile sunt corecte, dar, datorit modului n care sunt calculai biii de control,
nu sunt utilizate toate cele 2n cuvinte de cod posibile. Dat fiind algoritmul pentru
calculul biilor de control, este posibil s construim o list completa de cuvinte de
cod permise i din aceast list s gsim cele dou cuvinte de cod a cror distan
Hamming este minim. Aceast distan este distana Hamming a codului
complet.
Proprietile detectoare i corectoare de erori ale unui cod depind de
distana sa Hamming. Pentru a detecta d erori, este nevoie de un cod cu distan
d + 1, deoarece cu un asemenea cod nu exist nici o modalitate ca d erori de un
singur bit s poat modifica un cuvnt de cod corect ntr-un alt cuvnt de cod
corect. Atunci cnd receptorul vede un cuvnt de cod incorect, poate spune c s-a
produs o eroare de transmisie. Similar, pentru a corecta d erori, este nevoie de un
cod cu distan 2d + 1, deoarece n acest mod cuvintele de cod corecte sunt att
de distanate, nct, chiar cu d modificri, cuvntul de cod originar este totui mai
apropiat dect alte cuvinte de cod i va fi unic determinat.
S ne imaginm c dorim s proiectm un cod cu m bii de mesaj i r bii de
control care ne va permite s corectm toate erorile singulare. Pentru fiecare din
cele 2m mesaje corecte exist n cuvinte de cod eronate, aflate la distan 1 de el.
Acestea sunt formate prin inversarea sistematic a fiecruia dintre cei n bii din
cuvntul de cod de n bii format din el. Astfel, fiecare din cele 2m mesaje corecte
necesit n+1 abloane asociate. Cum numrul total de abloane este 2n, trebuie
s avem (n+1) 2m <= 2n. Utiliznd n=m+r, aceast condiie devine (m + r + 1)<= 2r.
Dndu-se m, acesta impune o limit inferioar asupra numrului de bii de control
necesari pentru a corecta erorile singulare.
Aceast limit inferioar teoretic poate fi, de fapt, atins utiliznd o
metod atribuit lui Hamming (1950). Biii cuvntului de cod sunt numerotai

consecutiv, ncepnd cu bitul 1 de la marginea din stnga, bitul 2 imediat la


dreapta sa, etc. Biii care sunt puteri ale lui 2 (1, 2, 4, 8, 16 etc.) sunt bii de
control. Restul (3, 5, 6, 7, 9 etc.) sunt completai cu cei m bii de date. Fiecare bit
de control foreaz ca paritatea unui grup de bii, inclusiv el nsui, s fie par (sau
impar).
Un bit poate fi inclus n mai multe calcule de paritate. Pentru a vedea la
care bii de control contribuie bitul de date din poziia k, rescriem k ca o sum de
puteri ale lui 2. De exemplu, 11= 1+2+8 i 29=1+4+8+16. Un bit este verificat de
acei bii de control care apar n dezvoltarea sa (de exemplu, bitul 11 este verificat
de biii 1, 2 i 8).
Cnd sosete un cuvnt de cod, receptorul iniializeaz un contor la 0.
Acesta examineaz apoi fiecare bit de control, k (k = 1, 2, 4, 8...) pentru a vedea
dac are paritatea corect. Dac nu, adaug k la contor. Dac, dup ce au fost
examinai toi biii de control, contorul este 0 (adic, dac toi biii au fost
coreci), cuvntul de cod este acceptat ca valid. Dac valoarea contorului este
nenul, ea reprezint numrul bitului incorect. De exemplu, dac biii de control
1, 2 i 8 sunt eronai, atunci bitul inversat este 11, deoarece este singurul verificat
de biii 1, 2 i 8.
Codurile Hamming pot corecta numai erori singulare. Totui, exist un
artificiu care poate fi utilizat pentru a permite codurilor Hamming s corecteze
erorile n rafal. O secven de k cuvinte de cod consecutive este aranjat ca o
matrice, avnd cte un cuvnt de cod pe fiecare linie. n mod normal, datele ar fi
transmise linie cu linie, de la stnga la dreapta. Pentru a corecta erorile n rafal,
datele vor trebui transmise pe coloane, ncepnd cu coloana cea mai din stnga.
Cnd au fost trimii toi cei k bii, este transmis a doua coloan i aa mai
departe, aa cum se arat in fig. 3-7. Atunci cnd un cadru ajunge la receptor,
matricea este reconstruit, coloan cu coloan. Dac a aprut o eroare n rafal,
de lungime k, va fi afectat cel mult un bit din fiecare dintre cele k cuvinte de cod,
dar codul Hamming poate corecta o eroare pe cuvnt de cod, aa nct ntregul
bloc poate fi refcut. Aceast metod utilizeaz kr bii de control pentru a face
blocuri de km bii de date imune la erorile n rafal de lungime k sau mai mic.

5. Coduri detectoare de erori


Codurile corectoare de erori sunt adesea utilizate pe canale fr fir, care
sunt cunoscute ca fiind predispuse la erori, n comparaie cu firele de cupru sau
fibra optic. Fr coduri detectoare de erori, comunicaia ar fi greu de realizat. In
cazul firelor de cupru sau a fibrei optice rata erorilor este mult mai mic, aa c
detectarea erorilor i retransmisia este de obicei mai eficient aici ca metod de
tratare a erorilor care apar ocazional.
Dac unui bloc i se adaug un singur bit de paritate i blocul este puternic
deformat de o eroare n rafal lung, probabilitatea ca eroarea s fie detectat
este de numai 0.5, ceea ce este greu de acceptat. ansele pot fi mbuntite
considerabil dac fiecare bloc transmis este privit ca o matrice dreptunghiular de
n bii lime i k bii nlime, dup cum am artat mai sus. Pentru fiecare coloan
este calculat un bit de paritate, care este adugat ntr-o nou linie de la sfritul
matricei. Matricea este apoi transmis linie cu linie. La sosirea blocului, receptorul
verific toi biii de paritate. Dac oricare din ei este greit, va cere o retransmisie
a blocului. Retransmisii succesive sunt cerute daca este nevoie, pn cnd ntregul
bloc este recepionat fr erori de paritate.
Aceast metod poate detecta o singur rafal de lungime n, cu numai un
bit pe coloan modificat. O rafal de lungime n+1 va trece totui nedetectat dac
primul i ultimul bit sunt inversai, iar toi ceilali bii sunt coreci (o eroare n
rafal nu nseamn c toi biii sunt greii, ci c cel puin primul i ultimul sunt
greii). Dac blocul este puternic deformat de o rafal lung sau de rafale scurte
multiple, probabilitatea ca oricare din cele n coloane s aib, accidental, paritatea
corect este 0.5, deci probabilitatea ca un bloc eronat s fie acceptat atunci cnd
nu ar trebui este 2 la -n.

Cu toate c schema de mai sus poate fi uneori adecvat, n practic este


larg utilizat o alt metod: codul polinomial (cunoscut i sub numele de cod cu
redundan ciclic, eng.: cyclic redundancy code). Codurile polinomiale sunt
bazate pe tratarea irurilor de bii ca reprezentri de polinoame cu coeficieni 0 i
1. Un cadru de k bii este vzut ca o list de coeficieni pentru un polinom cu k
termeni, de la xk-1 la x0. Se spune c un astfel de polinom este de gradul k-1. Bitul
cel mai semnificativ (cel mai din stnga) este coeficientul lui xk-1; urmtorul bit
este coeficientul lui xk-2 .a.m.d. De exemplu, 110001 are ase bii i ei reprezint
un polinom cu ase termeni cu coeficienii 1, 1, 0, 0, 0 i 1: x5+x4+x0. Aritmetica
polinomial este de tip modulo 2, n conformitate cu regulile teoriei algebrice. Nu
exist transport la adunare i nici mprumut la scdere. Att adunrile ct i
scderile sunt identice cu SAU EXCLUSIV. mprirea lung este fcut ca n binar
cu excepia faptului c scderea este realizat modulo 2, ca mai sus. Despre un
mpritor se spune c intr ntr-un demprit dac dempritul are tot atia
bii ca mpritorul.
Atunci cnd este utilizat metoda codului polinomial, emitorul i
receptorul se pun de acord n avans asupra unui polinom generator G(x). Att
bitul cel mai semnificativ ct i cel mai puin semnificativ trebuie s fie 1. Pentru a
calcula suma de control pentru un cadru cu m bii, corespunztor polinomului
M(x), cadrul trebuie s fie mai lung dect polinomul generator. Ideea este de a
aduga o sum de control la sfritul cadrului, astfel nct polinomul reprezentat
de cadrul cu sum de control s fie divizibil prin G(x). Cnd receptorul preia cadrul
cu suma de control, ncearc s-l mpart la G(x). Dac se obine un rest,
nseamn c a avut loc o eroare de transmisie.
Algoritmul pentru calculul sumei de control este urmtorul:
1. Fie r gradul lui G(x). Se adaug r bii 0 la captul mai puin semnificativ al
cadrului, aa nct acesta va conine acum n+r bii i va corespunde polinomului
xrM(x).
2. Se mparte irul de bii ce corespund lui G(x) ntr-un ir de bii corespunznd lui
xrM(x), utiliznd mprirea modulo 2.

3. Se scade restul (care are ntotdeauna r sau mai puini bii) din irul de bii
corespunznd lui xrM(x), utiliznd scderea modulo 2. Rezultatul este cadrul cu
sum de control ce va fi transmis. Numim polinomul su T(x).
S analizm puterea acestei metode. Ce tipuri de erori vor fi detectate? S
ne imaginm c apare o eroare de transmisie, aa nct n loc s soseasc irul de
bii pentru T(x), ajunge T(x) + E(X). Fiecare bit din E(x) corespunde unui bit care a
fost inversat. Dac n E(x) exist k bii 1, aceasta nseamn c au aprut k erori de
un singur bit.
La recepia cadrului cu sum de control, receptorul l mparte prin G(x);
aceasta nseamn c va calcula [T(x) + E(x)]/G(x). T(x)/G(x) este 0, aa nct
rezultatul calculului este pur i simplu E(x)/G(x). Acele erori care se ntmpl s
corespund unor polinoame care l au ca factor pe G(x) vor scpa; toate celelalte
vor fi detectate.

6. Protocoalele elementare ale legaturii de date


*Protocolul Start-Stop
-transmitorul trimite un nou cadru numai dup recepia confirmrii pozitive a
cadrulului precedent.
*Protocol simplex far restrictii.
Cea mai simpl variant de protocol are n vedere urmtoarele consideraii:
utilizatorul A vrea s transmit date lui B folosind o legtur sigur, simplex;
A reprezint o surs inepuizabil de date, astfel nct transmitorul nu trebuie
s atepte niciodat la preluarea datelor pentru transmisie;
B reprezint un consumator ideal, care preia imediat datele de la receptor ori de
cte ori acesta i le d;
canalul fizic de comunicaie este fr erori.
*Protocol simplex start-stop.
n a doua variant, considerm n continuare canalul fr erori, dar utilizatorul B
nu poate accepta date n orice ritm. Este necesar controlul fluxului, care n acest
caz se realizeaz printr-o reacie a receptorului ctre transmitor, permindu-i

acestuia din urm s transmit urmtorul cadru. Reacia are forma unui cadru
fictiv.
*Protocol simplex pentru un canal cu erori.
S-ar prea c n cazul unui canal cu erori o uoar modificare a protocolului
anterior este suficient. Receptorul transmite un cadru de confirmare doar pentru
cadre corecte. n caz de eroare, transmitorul nu primete confirmarea ntr-un
timp prestabilit i ca urmare retransmite cadrul. Funcia de armare a ceasului i de
permisiune a evenimentului TimeOut este: void StartCeas(NrSecv); iar funcia de
dezarmare a ceasului este: void StopCeas (NrSecv);
Parametrul lor permite asocierea unui eveniment TimeOut cu cadrul avnd
un numr de secven specificat. Aceast variant prezint pericolul duplicrii
cadrelor, n cazul n care se pierde confirmarea mesajului i nu mesajul
(transmitorul retransmite cadrul precedent, pe care receptorul l ia drept cadru
nou). Evitarea acestei erori se face prin includerea unui numr de secven n
antetul cadrului. Deoarece n acest caz, numrul de secven trebuie s
diferenieze doar dou cadre succesive, este suficient un contor de un bit,
numerele de secvena 0 i 1 ale cadrelor succesive alternnd.
Pentru justificare, fie cadrele succesive m, m+1, m+2 cu numerele de
secven respectiv 0, 1 i 0. Dup transmisia cadrului m (0), poate urma m (0), sau
m+1 (1), dup cum s-a primit sau nu confirmarea. n nici un caz nu urmeaz m+2
(0), care presupune confirmarea corect a lui m (0). Deci dac receptorul a primit
corect m (0) i primete un nou cadru cu numr de secven 0, el nu poate fi dect
m (0) i n consecin l ignor.
*Protocol cu fereastra glisanta
-nu ateapt confirmarea cadrelor precedente pentru a transmite cadre noi.
Protocoalele anterioare snt simplex. Pentru o transmisie duplex ar fi
necesare dou legturi distincte, una pentru fiecare sens. Ca alternativ, putem
utiliza cadrele de confirmare pentru transmiterea datelor n sens opus. Dac nu
snt date, se transmite doar confirmarea. Apar deci mai multe feluri de cadre,
difereniabile printr-un cmp din antet (fel).

Aceste elemente snt cuprinse n protocoalele cu fereastr glisant. Esena


lor este prezentat n continuare. Transmitorul menine o list cu numerele de
secven ale cadrelor transmise dar neconfirmate, alctuind fereastra
transmitorului. Cnd trebuie transmis un cadru, i se ataeaz numrul de
secven urmtor (fereastra se mrete). Cnd se recepioneaz o confirmare,
marginea inferioar a ferestrei se deplaseaz cu o unitate. Cadrele se pstreaz
de transmitor pn la confirmarea lor.
Receptorul pstreaz o list cu numerele de secven ale cadrelor pe care
le poate accepta (fereastra receptorului). Cadrele din fereastr snt acceptate,
celelalte snt ignorate. Cnd sosete un cadru cu numr de secven egal cu
marginea inferioar, fereastra este deplasat cu o poziie (prin modificarea
ambelor margini), pstrndu-se dimensiunea constant.
*Protocol cu fereastr de dimensiune unu.
Ambele ferestre fiind unitare, transmitorul trebuie s atepte
confirmarea nainte de a transmite un nou cadru (la fel ca n cazul precedent).
Deoarece algoritmii transmitorului i receptorului snt aproape identici, dm o
singur descriere pentru ambele staii. Fiecare staie realizeaz ciclic urmtoarele
operaii:
recepia unui cadru,
prelucrarea irului de cadre recepionate,
prelucrarea irului de cadre transmise,
transmiterea sau retransmiterea unui cadru impreun cu confirmarea cadrului
recepionat corect.
O situaie necorespunztoare apare dac ambele staii transmit un cadru
iniial. Pentru a corecta acest neajuns, o staie trebuie s o precead pe cealalt
prin aciunile sale. Pentru aceasta, doar una trebuie s execute transmisia unui
cadru n afara buclei principale.
Cmpul conf conine numrul ultimului cadru recepionat corect. Dac el
corespunde cadrului aflat n transfer, transmitorul preia alt pachet pentru
transmisie. Altfel, se transmite acelai pachet.

Cmpul secv conine numrul de secven al cadrului. Dac el coincide cu


cel ateptat, se transmite un pachet nivelului reea. Staiile nu se blocheaz i nu
accept duplicate. S presupunem de exemplu c A ncearc s trimit cadrul 0 lui
B, iar B ncearc s trimit cadrul 0 lui A. Presupunem c timpul de ateptare
(timeout) al lui A este prea scurt, deci A trimite repetat cadre (0, 1, A0 ). Cnd
primul cadru valid ajunge la B, va fi acceptat, punndu-se CadruAsteptat pe 1.
Celelalte cadre snt ignorate, avnd secv=0. Mai mult, duplicatele au conf = 1, n
timp ce B ateapt conf = 0 pentru a scoate un nou pachet de la reea. Ca urmare,
B va continua s transmit repetat un cadru cu (0, 0,...). Unul din cadre ajunge la
A, care ncepe s transmit un nou pachet.
*Protocoale cu fereastr supraunitar de transmisie.
n cazul unor canale cu ntrzieri mari de transmisie, ateptarea confirmrii
fiecrui cadru nainte de transmiterea urmtorului poate conduce la o eficien
sczut. Astfel, la un canal cu o ntrziere de propagare dus-ntors de 500 msec i o
viteza de 50 Kbps, transmiterea unui cadru de 1000 de bii dureaz efectiv doar
20 de milisecunde din cele 520 necesare ciclului complet de transmitere i
recepie a confirmrii.
Performana se poate ameliora permind transmiterea unui cadru nainte
de a se primi confirmarea cadrelor anterioare. n exemplul precedent, dac
transmitorul trimite cadrele unul dup altul, el va recepiona confirmarea
primului cadru dup transmiterea celui de al 26-lea. Erorile nu pot fi sesizate i
corectate imediat de transmitor. De obicei, el afl despre producerea unei erori
dup ce a transmis i alte cadre. Receptorul, care trebuie s pstreze
secvenialitatea cadrelor pe care le livreaz utilizatorului, are dou posibiliti de
tratare a cadrelor primite dup eroare.
O cale este de ignorare a acestora, fr transmitere de confirmri. Ea
corespunde unei ferestre de recepie unitare. n acest caz, transmitorul va fi
obligat s retransmit toate cadrele ncepnd cu cel eronat. A doua cale este
memorarea cadrelor recepionate corect, urmnd a fi retransmise selectiv doar
cadrele eronate. Ea corespunde unei ferestre a receptorului mai mare ca unu.
*Protocol cu retransmitere neselectiv.

Fereastra maxim a transmitorului poate fi de MaxSecv cadre, dei exist


MaxSecv+1 numere de secven distincte. Justificm aceast restricie prin
urmtorul scenariu, n care presupunem c MaxSecv=7:
1. Transmitorul trimite cadrele 0..7;
2. Toate cadrele snt recepionate i confirmate;
3. Toate confirmrile snt pierdute;
4. Transmitorul retrimite la time-out toate cadrele;
5. Receptorul accept duplicatele.
n acest protocol renunm la presupunerea c utilizatorul este o surs
ideala de pachete i includem mecanismul de reglare a fluxului de date: cnd
utilizatorul are un pachet de transmis el provoac un eveniment "ReteaPregatita";
cnd o staie are MaxSecv cadre neconfirmate, ea interzice reelei s-i transmit
alte pachete prin procedura "DezactivRetea"; cnd numrul de pachete scade, ea
anuleaz restricia prin funcia "ActivRetea".
Transmitorul pstreaz cadrele neconfirmate pentru o eventual
retransmisie. Confirmarea cadrului n provoac automat confirmarea cadrelor n-1,
n-2,... anterioare, ceeace compenseaz eventualele pierderi ale confirmrilor
acestor cadre. Deoarece mai multe cadre i asteapt confirmarea, se utilizeaz
ceasuri separate pentru diferite mesaje. Fiecare ceas este pornit la transmiterea
unui cadru i este oprit la recepia confirmrii sale. La producerea unui eveniment
TimeOut, toate cadrele aflate n memoria tampon a transmitorului snt
retrimise.
*Protocol cu retransmitere selectiva.
n acest caz, fereastra receptorului este mai mare ca unu. Cnd se primete
un cadru avnd numr de secven n fereastr, el este acceptat i memorat de
nivelul legtur de date, nefiind comunicat utilizatorului dect dup livrarea
cadrelor dinaintea sa.
Fereastra receptorului nu poate fi egal cu cea a transmitorului aa cum
rezult din urmtorul scenariu, pentru MaxSecv = 7 :
1. Transmitorul trimite cadrele 0..6
2. Cadrele snt recepionate i fereastra receptorului devine 7,0, 1, 2, 3, 4, 5
3. Toate confirmrile snt pierdute
4. Transmitorul retrimite cadrul 0 la time-out
5. Receptorul accept cadrul 0 aflat n fereastra i cere cadrul 7

6. Transmitorul afl c toate cadrele sale au fost transmise corect i trimite


cadrele 7, 0, 1, 2, 3, 4, 5
7. Receptorul accept cadrele, cu excepia lui 0, pentru care are deja un cadru
recepionat. Ca urmare, ignor acest cadru, lund n locul lui dulpicatul cadrului 0
anterior.
Eroarea se produce deoarece ferestrele succesive ale receptorului au
numere de secven comune, neputndu-se face diferena ntre cadrele noi i
duplicatele celor vechi. Pentru a elimina aceste suprapuneri, fereastra
receptorului trebuie s fie cel mult jumtate din gama numerelor de secven.
Fereastra receptorului determin i numrul de tampoane de recepie, ca
de altfel i numrul de ceasuri necesare. Cnd canalul este puternic ncrcat,
confirmrile cadrelor transmise de la staia A la staia B pot fi comunicate odat
cu datele vehiculate de la B la A. Dac traficul de la B la A este sczut, se recurge
la transmiterea unor cadre speciale de confirmare. Transmiterea confirmrilor nu
se face imediat dup recepia unui cadru corect, ci dup un interval de timp
convenabil stabilit i numai dac n acest interval nu a aprut posibilitatea
transmiterii confirmrii ntr-un cadru de date de la B la A. Terminarea intervalului
de timp are drept corespondent evenimentul "ReteaLibera". Pentru a mbunti
eficiena transmisiei, dac receptorul detecteaz un cadru eronat, el poate
transmite o confirmare negativ "nak", care reprezint o cerere explicit de
retransmitere a cadrului specificat n "nak". Receptorul trebuie s evite
transmiterea mai multor cadre "nak" pentru acelai cadru ateptat.

7. HDLC - Controlul de nivel nalt al legturii de date


n aceast seciune vom examina un grup de protocoale strns legate, puin
mai vechi, dar care sunt nc foarte utilizate. Ele sunt toate derivate din protocolul
pentru legtura de date utilizat n lumea mainframe-urilor IBM, numit SDLC
(Synchronous Data Link Control, rom.: protocolul de control sincron al legturii de
date). Dup ce a dezvoltat SDLC, IBM l-a supus examinrii ANSI i ISO pentru
acceptare ca standard SUA i, respectiv, internaional. ANSI a modificat
protocolul, astfel nct acesta a devenit ADCCP (Advanced Data Communication
Control Procedure, rom.: procedur de control avansat al comunicaiilor de date),
iar ISO l-a modificat i a produs HDLC (High-level Data Link Control, rom.: control
de nivel nalt al legturii de date). CCITT a adoptat i modificat HDLC pentru al su

LAP (Link Access Procedure, rom.: procedur de acces la legtur) care este parte
a standardului pentru interfaa de reea X.25, dar, mai trziu l-a modificat din
nou, rezultnd LAPB, n scopul de a-l face mai compatibil cu o versiune ulterioar
de HDLC. Un lucru frumos n ceea ce privete standardele este c sunt multe,
dintre care poi alege. n plus, dac nu i place nici unul dintre ele, poi atepta
modelul care va aprea anul viitor.
Aceste protocoale se bazeaz pe aceleai principii. Toate sunt orientate pe
bii i folosesc inserarea de bii pentru transparena datelor. Ele difer doar n
puncte minore, i totui suprtoare. Discuia care urmeaz, despre protocoalele
orientate pe bii, intenioneaz a fi o introducere general. Pentru detaliile
specifice fiecrui protocol, consultai definiia corespunztoare.

Toate protocoalele orientate pe bii folosesc structura de cadru prezentat


n fig. 3-24. Cmpul Adres este primul ca importan pentru liniile cu terminale
multiple, unde el este folosit pentru a identifica unul dintre terminale. Pentru
liniile punct-la-punct, el este folosit uneori pentru a deosebi comenzile de
rspunsuri.
Cmpul Control este folosit pentru numere de secven, confirmri i alte
scopuri, dup cum se va arta n continuare.
Cmpul Date poate conine informaii arbitrare. Poate avea lungime
arbitrar, cu toate c eficiena sumei de control scade odat cu creterea lungimii
cadrului, datorit creterii probabilitii de apariie a erorilor n rafal.
Cmpul Suma de Control este o variant CRC (Cyclic Redundancy Code - cod
ciclic redundant).
Cadrul este delimitat cu o alt secven indicator (01111110). Pe liniile
punct-la-punct inactive secvenele indicator sunt transmise continuu. Un cadru
minim conine trei cmpuri i are n total 32 de bii, excluznd indicatorii de la
capete.

Exist trei tipuri de cadre: Informaie, Supervizor i Nenumerotat.


Coninutul cmpului Control pentru fiecare dintre aceste trei tipuri este prezentat
n fig. 3-25. Acest protocol folosete o fereastr glisant, cu un numr de secven
reprezentat pe 3 bii. n fereastr pot fi pstrate, la un moment dat, pn la apte
cadre neconfirmate.
Cmpul Secven din fig. 3-25(a) este numrul de secven al cadrului.
Cmpul Urmtor este o confirmare ataat. Oricum, toate protocoalele ader la
convenia c, n loc s ataeze numrul ultimului cadru recepionat corect, s
foloseasc numrul primului cadru nerecepionat (adic urmtorul cadru
ateptat). Opiunea pentru ultimul cadru primit sau urmtorul cadru recepionat
este arbitrar; nu are importan ce convenie este utilizat, dac este folosit cu
consecven.

Bitul P/F nseamn Test/Final (eng.: Poll/Final). El este folosit atunci cnd un
calculator (sau un concentrator) interogheaz un grup de terminale. Cnd este
folosit ca P, calculatorul invit terminalul s trimit date. Toate cadrele trimise de
terminal, cu excepia celui final, au bitul P/F setat pe P. Pentru cadrul final bitul
este setat la F.
n cteva dintre protocoale, bitul P/F este folosit pentru a fora cealalt
main s trimit imediat un cadru Supervizor, n loc s atepte fluxul invers la
care s se ataeze informaia despre fereastr. Bitul are de asemenea cteva
utilizri minore referitoare la cadrele nenumerotate.

Numeroasele tipuri de cadre Supervizor sunt difereniate prin cmpul Tip.


Tipul 0 este un cadru de confirmare (numit oficial RECEIVE READY) folosit pentru a
indica urmtorul cadru ateptat. Cadrul este folosit atunci cnd nu exist flux
invers care s poat fi folosit pentru ataare.
Tipul 1 este un cadru de confirmare negativ (oficial numit REJECT). Este
folosit pentru a indica detecia unei erori de transmisie. Cmpul Urmtor indic
primul cadru din secven ce nu a fost recepionat corect (deci cadrul ce trebuie
retransmis). Transmitorului i se cere s retransmit toate cadrele neconfirmate,
ncepnd cu Urmtor-ul.
Tipul 2 este RECEIVE NOT READY. El confirm toate cadrele, cu excepia lui
Urmtor, exact ca RECEIVE READY, dar spune transmitorului s opreasc
transmisia. RECEIVE NOT READY este destinat s semnaleze anumite probleme
temporare aprute la receptor, cum ar fi lipsa zonelor tampon, i nu ca o
alternativ la controlul fluxului cu fereastr glisant. Cnd problema a fost
rezolvat, receptorul trimite un RECEIVE READY, REJECT sau anumite cadre de
control.
Tipul 3 este SELECTIVE REJECT. El cere retransmiterea, ns doar pentru
cadrul specificat. Din acest punct de vedere este folositor atunci cnd
dimensiunea ferestrei transmitorului este jumtate sau mai puin din
dimensiunea spaiului secvenei. Astfel, dac receptorul dorete s pstreze cadre
care erau n afara secvenei pentru posibila folosire ulterioar, el poate s foreze
retransmiterea oricrui cadru, folosind SELECTIVE REJECT. HDLC i ADCCP permit
acest tip de cadru, dar SDLC i LAPB nu l permit (adic nu exist Selective Reject)
i cadrele de tipul 3 nu sunt definite.
Cea de-a treia clas o reprezint cadrul Nenumerotat. El este folosit uneori
n scopuri de control, dar poate fi folosit i pentru transportul datelor atunci cnd
se recurge la un serviciu nesigur, neorientat pe conexiune. Diversele tipuri de
protocoale orientate pe bii difer considerabil aici, spre deosebire de celelalte
dou tipuri, unde erau aproape identice. Pentru a indica tipul cadrului sunt
disponibili cinci bii, dar nu sunt folosite toate cele 32 de posibiliti.

Toate protocoalele furnizeaz o comand, DISC (DISConnect), care permite


ca o main s anune c se va opri. De asemenea exist o comand ce permite ca
o main, care tocmai s-a reconectat, s-i anune prezena i s foreze resetarea
tuturor numerelor de secven la zero. Aceast comand poart numele de SNRM
(Set Normal Response Mode - stabilete modul normal de rspuns). Din
nefericire, modul normal de rspuns numai normal nu este. Este un mod
neechilibrat (adic asimetric) n care unul din capetele liniei este master iar
cellalt este slave. SNRM dateaz din timpurile cnd comunicaia datelor
presupunea un terminal neinteligent comunicnd cu un calculator gazd puternic,
ceea ce este, evident, asimetric. Pentru a face protocolul mai potrivit cazurilor n
care cei doi parteneri sunt egali, HDLC i LAPB au o comand suplimentar, SABM
(Set Asynchronous Balanced Mode - stabilete modul asincron echilibrat), care
reseteaz linia i declar ambii parteneri ca fiind egali. De asemenea, aceste
protocoale au comenzile SABME i SNRME, care sunt identice cu SABM i,
respectiv, SNRM, cu excepia faptului c ele permit folosirea unui format extins
pentru cadru, care utilizeaz numere de secven pe 7 bii n locul unora pe 3 bii.
A treia comand prevzut de toate protocoalele este FRMR (FRaMe
Reject), folosit pentru a indica sosirea unui cadru cu suma de control corect, dar
cu semantic imposibil. Exemple de semantic imposibil sunt cadru de tipul 3
Supervizor n LAPB, un cadru mai scurt de 32 de bii, un cadru de control
nepermis, confirmarea unui cadru care a fost n afara ferestrei etc. Cadrele FRMR
conin un cmp de date de 24 de bii care arat ceea ce a fost eronat la cadrul
respectiv. Datele includ cmpul de control al cadrului eronat, parametrii ferestrei
i o colecie de bii folosii pentru a semnala erori specifice.
Cadrele de control pot fi pierdute sau deteriorate ca i cadrele de date, de
aceea i ele trebuie confirmate. n acest scop este furnizat un cadru special de
control, numit UA (Unnumbered Acknowledgement). Deoarece poate exista un
singur cadru de control neconfirmat, nu exist niciodat ambiguiti asupra
cadrului care este confirmat. Cadrele de control rmase sunt folosite pentru
iniializare, interogare i raportarea strii. Exist, de asemenea, un cadru de
control care poate conine informaii arbitrare, UI (Unnumbered Information).

Aceste date nu sunt livrate nivelului reea, ci sunt destinate a fi primite chiar de
nivelul legtur de date.

8. Servicii furnizate de nivelul retea nivelului transport


Nivelul reea furnizeaz servicii nivelului transport la interfaa dintre cele
dou niveluri. O ntrebare important este ce fel de servicii furnizeaz nivelul
reea nivelului transport. Serviciile nivelului reea au fost proiectate avnd n
vedere urmtoarele scopuri:
1. Serviciile trebuie s fie independente de tehnologia ruterului.
2. Nivelul transport trebuie s fie independent de numrul, tipul i topologia
ruterelor existente.
3. Adresele de reea disponibile la nivelul transport trebuie s foloseasc o
schem de numerotare uniform, chiar n cadrul reelelor LAN i WAN.
Obiectivele fiind stabilite, proiectantul nivelului reea are o mare libertate
n a scrie specificaiile detaliate ale serviciilor oferite nivelului transport. Aceast
libertate degenereaz adesea ntr-o aprig btlie ntre dou tabere opuse.
Problema central a discuiei este dac nivelul reea trebuie s furnizeze servicii
orientate pe conexiune sau servicii neorientate pe conexiune.

O tabr (reprezentat de comunitatea Internet) afirm c scopul ruterului


este de a transfera pachete i nimic mai mult. n viziunea lor (bazat pe
experiena a aproape 30 de ani de exploatare a unei reele de calculatoare n
funciune), subreeaua este inerent nesigur, indiferent cum ar fi proiectat. De
aceea calculatoarele gazd trebuie s accepte faptul c reeaua este nesigur i s
fac controlul erorilor (i.e., detecia i corecia erorii) i controlul fluxului ele
nsele.
Acest punct de vedere duce rapid la concluzia c serviciul reea trebuie s
fie neorientat pe conexiune, cu dou primitive SEND PACKET i RECEIVE PACKET
i cu foarte puin n plus. n particular, nu trebuie fcut nici o operaie pentru
controlul ordinii sau fluxului pachetelor pentru c oricum calculatorul gazd va
face acest lucru, i, de obicei, dublarea acestor operaii aduce un ctig
nesemnificativ. n continuare, fiecare pachet va trebui s poarte ntreaga adres
de destinaie, pentru c fiecare pachet este independent de pachetele
predecesoare, dac acestea exist.
Cealalt tabr (reprezentat de companiile de telefoane) afirm c
subreeaua trebuie s asigure un serviciu orientat pe conexiune sigur. Ei susin c
100 de ani de experien cu sistemul telephonic mondial reprezint un ghid
excelent. n aceast perspectiv, calitatea serviciului este elementul dominant, i
ntr-o subreea fr conexiuni, calitatea serviciului este dificil de obinut, n special
pentru trafic in timp real cum ar fi voce i imagine.

9. Subretea datagrama si subretea cu circuite virtuale


Dac este oferit un serviciu neorientat pe conexiune, atunci pachetele sunt
trimise in subreea individual i dirijate independent de celelalte. Nu este
necesar nici o iniializare prealabil. n acest context, pachetele sunt numite
frecvent datagrame (datagrams) (prin analogie cu telegramele), iar subreeaua
este numit subreea datagram (datagram subnet). Dac este folosit serviciul
orientat conexiune, atunci, nainte de a trimite pachete de date, trebuie stabilit o
cale de la ruterul surs la ruterul destinaie. Aceast conexiune este numit VC

(virtual circuit, circuit virtual), prin analogie cu circuitele fizice care se stabilesc n
sistemul telefonic, iar subreeaua este numit subreea cu circuite virtuale
(virtual-circuit subnet).
S vedem cum funcioneaz o subreea datagram. S presupunem c
procesul P1 din fig. 5-2 are un mesaj lung pentru procesul P2. El transmite mesajul
nivelului transport, cu instruciunile de livrare ctre procesul P2 aflat pe
calculatorul gazd H2. Codul nivelului transport ruleaz pe calculatorul gazd H1,
de obicei n cadrul sistemului de operare. Acesta insereaz la nceputul mesajului
un antet corespunztor nivelului transport i transfer rezultatul nivelului reea,
probabil o alt procedur din cadrul sistemului de operare.
S presupunem c mesajul este de patru ori mai lung dect dimensiunea
maxim a unui pachet, aa c nivelul reea trebuie s l sparg n patru pachete, 1,
2, 3, i 4 i s le trimit pe fiecare n parte ruterului A, folosind un protocol punctla-punct, de exemplu, PPP. Din acest punct controlul este preluat de compania de
telecomunicaii. Fiecare ruter are o tabel intern care i spune unde s trimit
pachete pentru fiecare destinaie posibil. Fiecare intrare n tabel este o pereche
compus din destinaie i linia de ieire folosit pentru acea destinaie. Pot fi
folosite doar linii conectate direct. De exemplu, n fig. 5-2, A are doar dou linii de
ieire ctre B i C astfel c fiecare pachet ce vine trebuie trimis ctre unul
dintre aceste rutere, chiar dac ultima destinaie este alt ruter. Tabela de rutare
iniial a lui A este prezentat n figur sub eticheta iniial.

Cum au ajuns la A, pachetele 1, 2 i 3 au fost memorate pentru scurt timp


(pentru verificarea sumei de control). Apoi fiecare a fost trimis mai departe ctre
C conform tabelei lui A. Pachetul 1 a fost apoi trimis mai departe ctre E i apoi
ctre F. Cnd a ajuns la F, a fost ncapsulat ntr-un cadru al nivelului legtur de
date i trimis ctre calculatorul gazd H2 prin reeaua LAN.
Totui, ceva diferit s-a ntmplat cu pachetul 4. Cnd a ajuns la A a fost
trimis ctre ruterul B, chiar dac i el este destinat tot lui F. Dintr-un motiv
oarecare, A a decis s trimit pachetul 4 pe o rut diferit de cea urmat de
primele trei. Poate c a aflat despre o congestie undeva pe calea ACE i i-a
actualizat tabela de rutare, aa cum apare sub eticheta mai trziu. Algoritmul ce
administreaz tabelele i ia deciziile de rutare se numete algoritm de rutare
(routing algorithm).
Pentru serviciile orientate conexiune, avem nevoie de o subreea cu
circuite virtuale. S vedem cum funcioneaz aceasta. Ideea care se st la baza
circuitelor virtuale este evitarea alegerii unei noi ci (rute) pentru fiecare pachet
trimis, ca n fig. 5-2. n schimb, atunci cnd se stabilete o conexiune, se alege o
cale ntre maina surs i maina destinaie, ca parte component a iniializrii
conexiunii i aceasta este memorat n tabelele ruterelor. Acea cale este folosit
pentru tot traficul de pe conexiune, exact n acelai mod n care funcioneaz
sistemul telefonic. Atunci cnd conexiunea este eliberat, este nchis i circuitul
virtual. n cazul serviciilor orientate conexiune, fiecare pachet poart un
identificator care spune crui circuit virtual i aparine.

De exemplu, s considerm situaia din fig. 5-3. Aici calculatorul gazd H1 a


stabilit conexiunea 1 cu calculatorul gazd H2. Aceasta este memorat ca prima
intrare n fiecare tabel de rutare. Prima linie a tabelei lui A spune c dac un
pachet purtnd identificatorul de conexiune 1 vine de la H1, atunci trebuie trimis
ctre ruterul C, dndu-i-se identificatorul de conexiune 1. Similar, prima intrare a
lui C dirijeaz pachetul ctre E, tot cu identificatorul de conexiune 1.
Acum s vedem ce se ntmpl dac H3 vrea, de asemenea, s stabileasc o
conexiune cu H2. Alege identificatorul de conexiune 1 (deoarece iniializeaz
conexiunea i aceasta este singura conexiune) i indic subreelei s stabileasc
circuitul virtual. Aceasta conduce la a doua linie din tabele. Observai c apare un
conflict deoarece dei A poate distinge uor pachetele conexiunii 1 de la H1 de
pachetele conexiunii 1 de la H3, C nu poate face asta. Din acest motiv, A asociaz
un identificator de conexiune diferit pentru traficul de ieire al celei de a doua
conexiuni. Pentru evitarea conflictelor de acest gen ruterele trebuie s poat
nlocui identificatorii de conexiune n pachetele care pleac. n unele contexte,
aceasta se numete comutarea etichetelor (label switching).
Comparaie ntre subreele cu circuite virtuale i subreele datagram

10. Algoritmi de dirijare


Algoritmul de dirijare (routing algorithm) este acea parte a software-ului
nivelului reea care rspunde de alegerea liniei de ieire pe care trebuie trimis un
pachet recepionat. Dac subreeaua folosete intern datagrame, aceast decizie
trebuie luat din nou pentru fiecare pachet recepionat, deoarece este posibil ca
cea mai bun rut s se fi modificat ntre timp. Dac subreeaua folosete circuite
virtuale, deciziile de dirijare sunt luate doar la iniializarea unui nou circuit virtual.
Dup aceea pachetele de date vor urma doar calea stabilit anterior. Acest ultim
caz este numit uneori dirijare de sesiune (session routing), deoarece calea rmne
n funciune pentru o ntreag sesiune utilizator (de exemplu o sesiune de
conectare de la un terminal -login- sau un transfer de fiiere).
Uneori este util s se fac distincia ntre dirijare, care nseamn alegerea
cii care va fi folosit, i retransmitere, care se refer la ceea ce se ntmpl atunci
cnd sosete un pachet. Se poate spune despre un ruter c ruleaz intern dou
procese. Unul dintre ele preia fiecare pachet care sosete, cutnd n tabela de

dirijare linia de ieire folosit pentru el. Acesta este procesul de retransmitere
(forwarding). Cellalt proces se ocup de completarea i actualizarea tabelei de
rutare. Aici intervine algoritmul de dirijare.
Indiferent dac ruta se alege independent pentru fiecare pachet sau doar la
stabilirea unei noi conexiuni, un algoritm de dirijare trebuie s aib anumite
proprieti: corectitudine, simplitate, robustee, stabilitate, echitate, optimalitate.
Algoritmii de dirijare pot fi grupai n dou mari clase: neadaptivi i
adaptivi. Algoritmii neadaptivi (nonadaptive algorithms) nu i bazeaz deciziile
de dirijare pe msurtori sau estimri ale traficului i topologiei curente. Astfel,
alegerea cii folosite pentru a ajunge de la nodul I la nodul J (oricare ar fi I i J) se
calculeaz n avans, off-line i parvine ruterului la iniializarea reelei. Aceast
procedur se mai numete i dirijare static (static routing).
Algoritmii adaptivi (adaptive algorithms), prin contrast, i modific
deciziile de dirijare pentru a reflecta modificrile de topologie i de multe ori i pe
cele de trafic. Algoritmii adaptivi difer prin locul de unde i iau informaia (de
exemplu local, de la un ruter vecin sau de la toate ruterele), prin momentul la
care schimb rutele (de exemplu la fiecare T secunde, cnd se schimb
ncrcarea sau cnd se schimb topologia) i prin metrica folosit pentru
optimizare (de exemplu distana, numrul de salturi sau timpul estimat pentru
tranzit).
Algoritmi statici:
- Algoritmul lui Dijkstra: Fiecare nod este etichetat (n paranteze) cu distana
de la nodul surs pn la el, de-a lungul celei mai bune ci cunoscute. Iniial
nu se cunoate nici o cale, aa c toate nodurile vor fi etichetate cu infinit.
Pe msur ce se execut algoritmul i se gsesc noi ci, etichetele se pot
schimba, reflectnd ci mai bune. O etichet poate fi fie temporar, fie
permanent. Iniial toate etichetele sunt temporare. Atunci cnd se
descoper c o etichet reprezint cea mai scurt cale posibil de la surs
ctre acel nod, ea devine permanent i nu se mai schimb ulterior.

- Inundarea: fiecare pachet recepionat este trimis mai departe pe fiecare


linie de ieire, cu excepia celei pe care a sosit. Este evident c inundarea
genereaz un mare numr de pachete duplicate, de fapt un numr infinit
dac nu se iau unele msuri pentru a limita acest proces.
o O astfel de msur este pstrarea unui contor de salturi n antetul
fiecrui pachet, contor care este decrementat la fiecare salt i care
face ca pachetul s fie distrus cnd contorul atinge valoarea zero.
Ideal ar fi ca acest contor s fie iniializat cu lungimea cii de la surs
la destinaie. Dac emitorul nu cunoate lungimea cii, poate
iniializa contorul la valoarea cea mai defavorabil, adic diametrul
subreelei.
o O metod alternativ pentru limitarea inundrii este identificarea
pachetelor care au fost deja inundate, pentru a prentmpina
trimiterea lor a doua oar. O cale pentru a realiza acest scop este ca
ruterul surs s plaseze un numr de secven n fiecare pachet pe
care l primete de la calculatorul gazd asociat. Fiecare ruter
necesit meninerea unei liste pentru fiecare ruter surs, cu
numerele de secven provenite de la acel ruter surs i care au fost
deja trimise mai departe. Dac sosete un pachet care se afl n list,
el nu mai este trimis mai departe. Pentru a limita creterea lungimii
listei, fiecare list trebuie nsoit de un contor, k, care semnific
faptul c toate numerele de secven pn la k au fost deja tratate.
La recepia unui pachet este uor s se verifice dac este un duplicat,
caz n care este distrus. Evident, lista cu numere mai mici dect k nu
este necesar, deoarece k o rezum.
- Inundarea selectiva: ruterele nu trimit fiecare pachet recepionat pe
fiecare legtur de ieire, ci doar pe acele linii care duc aproximativ n
direcia potrivit. De obicei sunt puine motive pentru a trimite un pachet
spre partea de vest a reelei folosind o legtur spre est, dect dac
topologia reelei este cu totul deosebit i ruterul este sigur de acest lucru.

Algoritmi dinamici:

- Algoritmul de dirijare cu vectori distan (distance vector routing)


o Presupune c fiecare ruter menine o tabel (de exemplu un vector)
care pstreaz cea mai bun distan cunoscut spre fiecare
destinaie i linia care trebuie urmat pentru a ajunge acolo. Aceste
tabele sunt actualizate prin schimbul de informaii ntre nodurile
vecine.
o Algoritmul de dirijare cu vectori distan este cunoscut i sub alte
nume, cel mai des algoritmul distribuit de dirijare Bellman-Ford i
algoritmul Ford-Fulkerson, dup numele cercettorilor care l-au
propus.
o n dirijarea pe baza vectorilor distan, fiecare ruter pstreaz o
tabel de dirijare coninnd cte o intrare pentru fiecare ruter din
subreea. Aceast intrare are dou pri: linia de ieire preferat care
se folosete pentru destinaia respectiv i o estimare a timpului sau
distanei pn la acea destinaie. Metrica folosit poate fi numrul de
salturi, ntrzierea n milisecunde, numrul total de pachete care
ateapt n cozi de-a lungul cii, sau ceva asemntor.
o Se presupune c ruterul cunoate distana spre fiecare dintre
vecinii si. Dac se folosete metrica salturilor, distana este doar de
un salt. Dac metrica folosit este cea a lungimii cozilor de ateptare,
ruterul examineaz pur i simplu lungimile acestor cozi. Dac metrica
este cea a ntrzierilor, ruterul o poate msura direct prin pachete
speciale ECHO, n care receptorul va marca doar timpul curent
(tampila de timp) i le va trimite napoi ct mai repede posibil.
o Ca exemplu, s presupunem c se folosete metrica ntrzierilor i c
ruterul cunoate ntrzierea spre fiecare dintre vecinii si. O dat la
fiecare T msec fiecare ruter trimite spre fiecare vecin o list a
estimrilor proprii spre fiecare destinaie. De asemenea el
recepioneaz o list similar de la fiecare vecin. S presupunem c
una dintre aceste tabele tocmai a sosit de la vecinul X, cu Xi fiind
estimarea lui X despre ct timp este necesar pentru a ajunge la
ruterul i. Dac ruterul tie c ntrzierea spre X este m msec, el tie
de asemenea c poate atinge ruterul i trecnd prin X n Xi + m msec.

Fcnd aceste calcule pentru fiecare vecin, un ruter poate stabili care
estimare pare a fi cea mai bun, pentru a folosi aceast estimare,
mpreun cu linia corespunztoare n noua tabel de dirijare. Este de
remarcat faptul c vechea tabel de dirijare nu intervine n calcule.
o Problema numararii la infinit
Dirijarea folosind vectori distan funcioneaz n teorie, ns n
practic are o limitare important: dei ea converge spre
rezultatul corect, o face foarte lent. n particular, ea
reacioneaz rapid la vetile bune, dar foarte lent la cele rele.
S considerm un ruter care are un cel mai bun drum spre
destinaia X foarte lung. Dac la urmtorul schimb de
informaii, vecinul su A raporteaz brusc o ntrziere mic
spre X, ruterul va comuta i va folosi linia spre A pentru a dirija
traficul spre X. Astfel, ntr-o singur schimbare a vectorului,
vestea bun a fost luat n considerare. ntr-o subreea avnd
calea cea mai lung de lungime N salturi, dup N schimburi
fiecare ruter va afla despre liniile i ruterele nou aprute.
S considerm acum situaia n care toate liniile i ruterele sunt
iniial n funciune. Ruterele B, C, D i E au distanele spre A
respectiv de 1, 2, 3, 4. Brusc, A se oprete sau, alternativ, linia
dintre A i B este ntrerupt, ceea ce reprezint efectiv acelai
lucru din punctul de vedere al lui B.
La primul schimb de pachete, B nu primete nimic de la A. Din
fericire, C spune: Nici o problem. Eu tiu o cale spre A de
lungime 2. ns B nu tie c aceast cale a lui C trece prin B
nsui. Dup cunotinele lui B, C ar putea avea zece linii, toate
cu ci separate de lungime 2 spre A. Prin urmare B va crede c
poate ajunge la A prin C pe o cale de lungime 3. D i E nu i
actualizeaz intrrile proprii pentru A la primul schimb.
La al doilea schimb, C remarc faptul c fiecare dintre vecinii
si pretinde a avea o cale de lungime 3 spre A. El va alege la
ntmplare unul dintre aceti vecini i va nregistra noua
distan spre A ca fiind 4.

Din aceast figur se poate deduce de ce vetile rele circul


mai lent: orice ruter va avea ntotdeauna o valoare cu cel mult
unu mai mare dect valoarea minim a vecinilor si. Treptat,
toate ruterele vor ajunge la infinit, ns numrul de schimburi
necesar depinde de valoarea numeric folosit pentru a
reprezenta valoarea infinit. Din aceast cauz este recomandat
s se aleag infinitul, ca fiind lungimea celei mai mari ci, plus
1. Dac metrica este ntrzierea n timp, atunci nu este definite
nici o limit superioar, astfel nct este necesar o valoare
mare pentru a preveni considerarea unui drum cu ntrziere
mare ca fiind un drum defect. Nu este deloc surprinztor c
aceast problem este numit problema numrrii la infinit (the
count to infinity problem).
Miezul problemei este c atunci cnd X i spune lui Y c are o
cale spre o destinaie, Y nu are de unde s tie dac se afl el
nsui pe acea cale.

- Dirijarea folosind starea legaturilor


o Ideea algoritmului bazat pe starea legturilor este simpl i poate fi
formulat n 5 puncte. Fiecare ruter trebuie s fac urmtoarele:
S descopere care sunt vecinii si i afle adresele de reea ale
acestora.
S msoare ntrzierea sau costul pn la fiecare din vecinii si.
S pregteasc un pachet prin care anun pe toat lumea c
tocmai a terminat de cules datele despre vecini.
S trimit acest pachet ctre toate celelalte rutere.
S calculeze cea mai scurt cale spre fiecare ruter.
o Ca urmare, ntreaga topologie i toate ntrzierile sunt msurate
experimental i distribuite spre fiecare ruter. Apoi se poate rula

algoritmul lui Dijkstra pentru a afla cea mai scurt cale ctre fiecare
ruter.
o Determinarea vecinilor: Cnd un ruter este pus n funciune, prima sa
sarcin este s afle care sunt vecinii si. El realizeaz aceasta prin
trimiterea unui pachet special HELLO pe fiecare linie prin care este
legat la alt ruter. Ruterul de la cellalt capt trebuie s rspund
anunnd ntr-un pachet identitatea sa. Aceste nume trebuie s fie
unice global, pentru c dac mai trziu un ruter afl c trei rutere
sunt conectate toate la F, este esenial ca acesta s poat determina
dac cele trei se refer la acelai F.
o Msurarea costului liniei:
Algoritmul de dirijare bazat pe starea legturilor cere ca fiecare
ruter s tie, sau cel puin s aib o estimare rezonabil, a
ntrzierii ctre fiecare dintre vecinii si. Cel mai direct mod de
a afla acest lucru este de a trimite un pachet special ECHO pe
linie, cernd ca ruterul partener s-l trimit napoi imediat.
Msurnd timpul n care pachetul se ntoarce (round-trip time)
i mprindu-l la doi, ruterul iniiator poate avea o estimare
rezonabil a ntrzierii. Pentru rezultate i mai bune, testul
poate fi repetat de mai multe ori, folosindu-se apoi valoarea
medie obinut. Bineneles, aceast metod presupune
implicit c ntrzierile sunt simetrice, dar nu mereu este aa.
O problem interesant este dac s se considere sau nu
ncrcarea reelei la msurarea ntrzierii. Pentru a ine cont de
ncrcare, timpul de revenire trebuie msurat din momentul n
care pachetul ECHO este pus n coad. Pentru a ignora
ncrcarea, ceasul se poate porni n momentul n care pachetul
ECHO ajunge pe prima poziie din coad.
o Construirea pachetelor cu starea legturilor:
De ndat ce a fost colectat informaia necesar pentru
realizarea schimbului, se poate trece la pasul urmtor, fiecare
ruter construind un pachet care conine toate datele. Pachetul
ncepe cu identitatea expeditorului, urmat de un numr de

secven, vrst i o list a vecinilor. Pentru fiecare vecin se


specific ntrzierea asociat.
Construirea pachetelor cu starea legturilor se face uor.
Partea mai dificil este s se determine cnd s fie construite
ele. O posibilitate este ca ele s fie construite periodic, adic la
intervale regulate. O alt posibilitate este atunci cnd se
produce un eveniment semnificativ, cum ar fi scoaterea din
funciune a unui vecin sau a unei linii, sau repunerea lor n
funciune, sau modificarea semnificativ a proprietilor lor.
o Distribuirea pachetelor cu starea legturilor:
Cea mai complicat parte a algoritmului este distribuirea sigur
a pachetelor cu starea legturilor. De ndat ce pachetele sunt
distribuite i instalate, ruterele care primesc primele pachete
i vor schimba rutele. n consecin, rutere diferite ar putea
folosi versiuni diferite ale topologiei, ceea ce poate duce la
apariia unor inconsistene, bucle, maini inaccesibile sau a
altor probleme.
Ideea fundamental este folosirea inundrii pentru a distribui
pachetele cu starea legturilor. Pentru a avea controlul
inundrii, fiecare pachet conine un numr de secven care
este incrementat la fiecare nou pachet trimis. Ruterele
pstreaz evidena tuturor perechilor (ruter surs, numr
secven) pe care le vd. La sosirea unui nou pachet cu starea
legturilor, el este cutat n lista pachetelor deja vzute. Dac
pachetul este nou, el este retrimis pe toate liniile, cu excepia
celei pe care a sosit. Dac este un duplicat, pachetul este
distrus. Dac pachetul sosit are un numr de secven mai mic
dect cel mai mare numr de secven detectat, atunci el este
rejectat ca fiind nvechit.
Acest algoritm are cteva probleme, dar ele sunt tratabile. n
primul rnd, dac numerele de secven ating valoarea
maxim posibil i rencep de la valori mici, se pot produce
confuzii. Soluia este folosirea numerelor de secven pe 32

bii. Considernd un pachet de starea legturilor pe secund,


ar trebui 137 ani pentru a se rencepe de la valori mici, astfel
nct aceast posibilitate poate fi ignorat.
n al doilea rnd, dac un ruter se defecteaz, el va pierde
evidena numerelor de secven. Dac va rencepe de la 0,
urmtorul pachet va fi rejectat ca duplicat.
n al treilea rnd, dac numrul de secven este alterat i se
recepioneaz 65540 n loc de 4 (eroare de modificare a unui
bit), pachetele de la 5 la 65540 vor fi rejectate ca fiind
nvechite, deoarece se consider c numrul de secven
curent este 65540.
Soluia tuturor acestor probleme este includerea vrstei
pachetului dup numrul de secven i decrementarea sa la
fiecare secund. Cnd vrsta ajunge la zero, informaia de la
ruterul respective este distrus. n mod normal un nou pachet
apare, s zicem, la fiecare 10 sec., astfel nct informaia de la
ruter expir doar dac ruterul este oprit (sau dac ase
pachete consecutive s-au pierdut, un lucru extrem de
improbabil). Cmpul Age este decrementat de asemenea de
fiecare ruter la nceputul procesului de inundare, pentru a se
asigura c nici un pachet nu se poate pierde sau nu poate
supravieui o perioad nelimitat (un pachet avnd vrsta zero
este distrus).
o Calcularea noilor rute:
De ndat ce un ruter a acumulat un set complet de pachete cu
starea legturilor, el poate construi graful ntregii subreele,
deoarece fiecare legtur este reprezentat. De fapt, fiecare
legtur este reprezentat de dou ori, o dat pentru fiecare
direcie. Cele dou valori pot fi mediate sau folosite separat.
Acum poate fi folosit local algoritmul lui Dijkstra, pentru a
construi cea mai scurt cale ctre toate destinaiile posibile.
Rezultatul acestui algoritm poate fi trecut n tabelele de
dirijare, iar apoi operaiile normale pot fi reluate.

11. Dirijarea prin difuzare


n unele aplicaii, calculatoarele gazd au nevoie s trimit mesaje ctre mai
multe sau ctre toate celelalte calculatoare gazd. De exemplu, un serviciu de
distribuire a rapoartelor meteorologice, de actualizare a cursului aciunilor sau
transmisiuni radio n direct ar putea funciona mai bine prin difuzarea datelor
ctre toate mainile, fiind la latitudinea celor interesate de date s le
recepioneze. Trimiterea simultan a unui pachet ctre toate destinaiile se
numete difuzare (broadcast); mai multe metode pentru realizarea ei au fost
propuse.
O metod de difuzare care nu are cerine speciale pentru subreea este ca
sursa s trimit un pachet distinct ctre fiecare destinaie. Metoda este nu numai
consumatoare de lime de band, dar ea cere ca sursa s dein o list complet
a tuturor destinaiilor. S-ar putea ca n practic aceasta s fie singura metod
utilizabil, ns ea este metoda cea mai puin dorit.
Inundarea este un alt candidat evident. Dei inundarea este nepotrivit
pentru comunicaia obinuit capt la capt, pentru difuzare ar trebui luat serios
n considerare, mai ales dac nici una dintre metodele ce vor fi descrise n
continuare nu este aplicabil. Problema folosirii inundrii ca metod de difuzare
este aceeai cu problema ivit la folosirea sa ca algoritm de dirijare capt la capt:
genereaz prea multe pachete i consum lime de band prea mare.
Al treilea algoritm este dirijarea multidestinaie (multidestination routing).
Dac se folosete aceast metod, fiecare pachet conine fie o list a destinaiilor,
fie o hart de bii care indic destinaiile dorite. Atunci cnd un pachet ajunge la
un ruter, ruterul verific toate destinaiile pentru adetermina setul liniilor de
ieire pe care trebuie trimis pachetul. (O linie de ieire este selectat dac este
calea cea mai bun pentru cel puin o destinaie.) Ruterul genereaz o nou copie
a pachetului pentru fiecare linie de ieire folosit i include n fiecare pachet doar
acele destinaii care folosesclinia respectiv. Efectul este partiionarea mulimii
destinaiilor ntre liniile de ieire. Dup un numr suficient de salturi, fiecare
pachet va conine o singur destinaie i poate fi tratat ca un pachet normal.
Dirijarea multidestinaie este asemntoare trimiterii separate a mai multor

pachete ctre adresele destinaie, cu excepia faptului c atunci cnd mai multe
pachete trebuie s urmeze aceeai cale, unul dintre ele pltete tot drumul, iar
celelalte cltoresc gratuit.
Al patrulea algoritm de difuzare utilizeaz explicit arborele de scufundare al
ruterului care iniiaz difuzarea sau orice alt arbore de acoperire util. Un arbore
de acoperire (spanning tree) este un subset al subreelei care include toate
ruterele i nu conine bucle. Dac fiecare ruter cunoate care din liniile sale
particip la arborele de acoperire, el poate copia un pachet de difuzare
recepionat pe toate liniile de ieire care fac parte din arborele de acoperire, cu
excepia celei pe care a fost recepionat. Aceast metod asigur o utilizare
deosebit de eficient a limii de band, genernd numrul minim de pachete
necesare pentru a rezolva problema. Singura problem este c, pentru a fi
aplicabil, fiecare ruter trebuie s dein cunotine despre un anume arbore de
acoperire. Uneori aceast informaie este disponibil (de exemplu la dirijarea
bazat pe starea legturilor), iar alteori nu este disponibil (de exemplu la
dirijarea cu vectori distan).
Ultimul nostru algoritm cu difuzare este o ncercare de a aproxima
comportamentul precedentului, chiar i atunci cnd ruterele nu tiu absolut nimic
despre arborele de acoperire. Ideea, numit trimiterea pe calea invers (reverse
path forwarding) este remarcabil de simpl odat ce a fost indicat. Cnd un
pachet de difuzare ajunge la un ruter, acesta verific dac pachetul a sosit pe linia
pe care se trimit de obicei pachete ctre sursa difuzrii. Dac este aa, este o
ans foarte mare ca nsui pachetul de difuzare s fi urmat cea mai bun cale,
fiind astfel prima copie care ajunge la ruter. Aceasta fiind situaia, ruterul trimite
pachetul pe toate liniile de ieire, cu excepia celei pe care a sosit. Dac ns
pachetul a sosit pe alt linie dect cea preferat pentru a ajunge la surs, pachetul
este distrus, fiind considerat un posibil duplicat.
12. Dirijarea cu trimitere multipla (multicast)
Unele aplicaii necesit ca procese aflate la mari distane unele de altele s
lucreze n grup, de exemplu, un grup de procese care implementeaz o baz de
date distribuit. n aceste situaii, este adesea necesar ca un proces s trimit un

mesaj ctre toi ceilali membri ai grupului. Dac grupul este mic, el poate trimite
fiecrui partener un mesaj capt la capt. Dac grupul este mare, aceast
strategie este costisitoare. Uneori se poate folosi difuzarea, dar folosirea difuzrii
pentru a anuna 1000 de maini dintr-o reea cu un milion de noduri este
ineficient, deoarece majoritatea receptorilor nu sunt interesai de mesaj (sau
chiar mai ru, sunt foarte interesai, dar nu trebuie s vad mesajul). De aceea,
avem nevoie de o modalitate de a trimite mesaje spre grupuri bine definite.
Trimiterea unui mesaj ctre un astfel de grup se numete multicasting, iar
algoritmul de dirijare asociat se numete dirijare multicast (multicast routing). n
aceast seciune, vom descrie o modalitate de a realiza dirijarea multicast.
Dirijarea multicast necesit managementul grupului. Trebuie s existe
modaliti de a crea i distruge grupuri i de a permite proceselor s intre n
grupuri sau s le prseasc. Cum se realizeaz aceste funcii nu este treaba
algoritmului de dirijare. Important pentru algoritmul de dirijare este c atunci
cnd un proces se ataeaz unui grup, el trebuie s informeze gazda sa despre
aceasta. Este important ca ruterele s tie cror grupuri le aparin calculatoarele
gazd asociate. Fie calculatoarele gazd trebuie s anune ruterul asociat la
producerea unei modificri n alctuirea grupurilor, fie ruterul trebuie s
interogheze periodic aceste calculatoare gazd. n ambele cazuri, ruterul afl din
ce grupuri fac parte calculatoarele gazd. Ruterele i informeaz vecinii, astfel c
informaia se propag prin subreea.
Pentru a realiza dirijarea multicast, fiecare ruter calculeaz arborele de
acoperire care acoper toate celelalte rutere din subreea. Atunci cnd un proces
trimite un pachet multicast ctre un grup, primul ruter i examineaz arborele de
acoperire i l reteaz, eliminnd toate liniile care nu conduc ctre calculatoare
gazd, membre ale grupului. Pachetele multicast sunt dirijate doar de-a lungul
arborelui de acoperire corespunztor.
Sunt posibile mai multe moduri de retezare a arborelui de acoperire. Cel
mai simplu se poate folosi dac se utilizeaz dirijarea bazat pe starea legturilor
i fiecare ruter cunoate ntreaga topologie a subreelei, inclusiv apartenena
calculatoarelor gazd la grupuri. Atunci arborele poate fi retezat pornind de la

sfritul fiecrei ci, mergnd spre rdcin i eliminnd toate ruterele care nu
aparin grupului respectiv.
n cazul dirijrii folosind vectori distan, poate fi aplicat o alt strategie de
retezare a arborelui. Algoritmul de baz folosit este trimiterea pe calea invers.
Oricum, ori de cte ori un ruter fr nici un calculator gazd interesat de un
anume grup i fr nici o conexiune la alte rutere primete un mesaj multicast
pentru acel grup, el va rspunde cu un mesaj PRUNE (retezare), anunnd
expeditorul s nu i mai trimit mesaje multicast pentru acel grup. Cnd un ruter
care nu are printre calculatoarele gazd nici un membru al vreunui grup primete
astfel de mesaje pe toate liniile sale, el poate de asemenea s rspund cu un
mesaj PRUNE. n acest fel subreeaua este retezat recursiv.

13. Dirijarea pentru calculatoare gazd mobile


Calculatoarele gazd care nu se mic niciodat se numesc staionare. Ele
sunt conectate la reea prin fire de cupru sau fibre optice. Prin contrast, putem
distinge alte dou categorii de calculatoare gazd. Calculatoarele gazd
migratoare sunt de fapt calculatoare gazd staionare, dar care, din cnd n cnd,
se mut dintr-un loc fixat n altul i care folosesc reeaua doar atunci cnd sunt
conectate fizic. Calculatoarele gazd cltoare efectueaz calcule n timp ce se
deplaseaz i doresc s menin legtura n timpul deplasrii. Vom folosi termenul
gazd mobil pentru a desemna fiecare dintre ultimele dou categorii, adic toate
calculatoarele gazd care sunt departe de cas i doresc totui s fie conectate.
Fiecare domeniu are unul sau mai muli ageni pentru strini (foreign
agent), procese ce in evidena tuturor gazdelor mobile care viziteaz domeniul.
n plus, fiecare domeniu are un agent local (local agent) care ine evidena
calculatoarelor gazd cu domiciliul n domeniul respectiv, dar care momentan
viziteaz alte domenii.
Cnd un nou calculator gazd ptrunde ntr-un domeniu, fie prin
conectarea la acesta (ataarea fizic la LAN), fie prin plimbarea printr-o celul,

trebuie s se nregistreze la agentul pentru strini din domeniul respectiv.


Procedura de nregistrare se desfoar de obicei astfel:
- Periodic, fiecare agent pentru strini difuzeaz un pachet anunndu-i
existena i adresa. Un utilizator mobil nou sosit trebuie s atepte unul
dintre aceste mesaje, ns dac niciunul nu sosete ntr-un interval
rezonabil de timp, calculatorul mobil poate difuza un pachet care spune:
Este vreun agent pentru strini prin zon?
- Calculatorul mobil se nregistreaz la agentul pentru strini preciznd
adresa sa permanent, adresa actual a nivelului legtur de date, precum
i unele informaii de securitate.
- Agentul pentru strini contacteaz apoi agentul local al domeniului din care
provine utilizatorul mobil i i spune: Unul dintre calculatoarele tale gazd
se afl chiar aici. Mesajul agentului pentru strini ctre agentul local
conine adresa de reea a agentului pentru strini. El mai conine de
asemenea i informaia de securitate, pentru a convinge agentul local c
gazda mobil este ntr-adevr acolo.
- Agentul local examineaz informaia de securitate, care conine i o
tampil de timp, pentru a dovedi c a fost generat n ultimele cteva
secunde. Dac este mulumit, atunci anun agentul pentru strini c poate
trece la aciune.
- Cnd agentul pentru strini primete confirmarea de la agentul local, el
creeaz o nou intrare n tabela sa i anun utilizatorul mobil c a fost
nregistrat.
Ideal, atunci cnd un calculator gazd prsete un domeniu, acest lucru
trebuie anunat, pentru a fi scos din eviden, ns muli utilizatori pur i simplu
nchid calculatorul cnd termin.
Agentul local face dou lucruri cand primeste un pachet pentru gazda
mobila. n primul rnd, ncapsuleaz pachetul n cmpul de informaie util
(payload) al unui pachet de trimis, pe care l expediaz apoi ctre agentul pentru
strini. Acest mecanism se numete tunelare. Dup ce recepioneaz pachetul

ncapsulat, agentul pentru strini extrage pachetul iniial din cmpul payload i l
trimite ctre calculatorul gazd mobil drept cadru al nivelului legtur de date.
n al doilea rnd, agentul local anun expeditorul mesajului ca de acum
ncolo s trimit pachetele adresate gazdei mobile ncapsulndu-le n cmpul de
informaie util (payload) al unor pachete trimise explicit agentului pentru strini,
n loc s le trimit la adresa de domiciliu a calculatorului gazd mobil. Pachetele
urmtoare vor putea fi dirijate direct ctre utilizator, prin intermediul agentului
pentru strini, evitnd trecerea prin locaia de domiciliu.

14. Dirijarea n reele AD HOC


Reelele de noduri ce ntmpltor se afl aproape unul de cellalt sunt
numite reele ad hoc (ad hoc network) sau MANET (Mobile Ad hoc NETworks,
reele mobile ad hoc).
Au fost propui diferii algoritmi de dirijare pentru reelele ad hoc. Unul
dintre cei mai interesani este algoritmul de dirijare AODV (Ad hoc On-demand
Distance Vector, vectori distan ad hoc la cerere). Este o rud ndeprtat a
algoritmului cu vectori distan Bellman-Ford dar adaptat pentru un mediu mobil
i care ia n considerare limitele lrgimii de band i durata scurt de funcionare
a unei baterii n acest mediu. O alt caracteristic neobinuit este faptul c
acesta este un algoritm la cerere, adic determin o cale ctre o anumit
destinaie doar atunci cnd cineva dorete s trimit un pachet ctre acea
destinaie.
La orice moment de timp, o reea ad hoc poate fi descris de un graf de
noduri (rutere + gazde). Dou noduri sunt conectate (de exemplu, exist un arc ce
le unete n graf) dac pot comunica direct folosind radioul. Algoritmul AODV
menine o tabel n fiecare nod, n care cheia este destinaia, i care d informaii
despre acea destinaie, inclusiv crui vecin trebuie trimise pachetele pentru a
ajunge la destinaie. Operatii care se realizeaza in nodurile intermediare atat pe
ruta de la dus, cat si la intoarcere :

15. Protocolul IP
O datagram IP const dintr-o parte de antet i o parte de text. Antetul are
o parte fix de 20 de octei i o parte opional cu lungime variabil. Formatul
antetului este prezentat n fig. 5-53. El este transmis n ordinea big endian (cel mai
semnificativ primul): de la stnga la dreapta, ncepnd cu bitul cel mai
semnificativ al cmpului Versiune. (Procesorul SPARC este de tip big endian;
Pentium este de tip little endian - cel mai puin semnificativ primul). Pe mainile
de tip little endian, este necesar o conversie prin program att la transmisie ct
i la recepie.

Cmpul Versiune memoreaz crei versiuni de protocol i aparine


datagrama. Prin includerea unui cmp versiune n fiecare datagram, devine
posibil ca tranziia ntre versiuni s dureze ani de zile, cu unele maini rulnd
vechea versiune, iar altele rulnd-o pe cea nou. La ora actual are loc o tranziie
de la IPv4 la IPv6, care deja dureaz de civa ani i n nici un caz nu s-a apropiat
de final.

Din moment ce lungimea antetului nu este constant, un cmp din antet,


IHL, este pus la dispoziie pentru a spune ct de lung este antetul, n cuvinte de 32
de octei. Valoarea minim este 5, care se aplic atunci cnd nu sunt prezente
opiuni. Valoarea maxim a acestui cmp de 4 bii este 15, ceea ce limiteaz
antetul la 60 de octei i, astfel, cmpul de opiuni la 40 de octei. Pentru unele
opiuni, cum ar fi cea care nregistreaz calea pe care a mers un pachet, 40 de
octei sunt mult prea puini, fcnd aceast opiune nefolositoare.
Cmpul Tip serviciu este unul dintre puinele cmpuri care i-a schimbat
sensul (oarecum) dea lungul anilor. A fost i este n continuare menit s
diferenieze diferitele clase de servicii. Sunt posibile diferite combinaii de
fiabilitate i vitez. Pentru vocea digitizat, livrarea rapid are prioritate fa de
transmisia corect. Pentru transferul de fiiere, transmisia fr erori este mai
important dect transmisia rapid.
La nceput, cmpul de 6 bii coninea (de la stnga la dreapta), un cmp
Preceden de trei bii i trei indicatori, D, T i R. Cmpul Preceden reprezint
prioritatea, de la 0 (normal) la 7 (pachet de control al reelei). Cei trei bii
indicatori permiteau calculatorului gazd s specifice ce l afecteaz cel mai mult
din mulimea {Delay (ntrziere), Throughput (Productivitate), Reliability
(Fiabilitate)}. n teorie, aceste cmpuri permit ruterelor s aleag ntre, de
exemplu, o legtur prin satelit cu o productivitate mare i o ntrziere mare sau o
linie dedicat cu o productivitate sczut i o ntrziere mic. n practic, ruterele
curente ignor adesea ntregul cmp Tip serviciu.
Pn la urm, IETF a cedat i a modificat puin cmpul pentru a-l adapta la
servicii difereniate. ase dintre bii sunt folosii pentru a indica creia dintre
clasele de servicii descrise mai devreme i aparine pachetul. Aceste clase includ
patru prioriti de introducere n coad, trei probabiliti de respingere i clasele
istorice.
Lungimea total include totul din datagram - att antet ct i date.
Lungimea maxim este de 65535 octei. n prezent, aceast limit superioar este
tolerabil, dar n viitoarele reele cu capaciti de gigaoctei vor fi necesare
datagrame mai mari.

Cmpul Identificare este necesar pentru a permite gazdei destinaie s


determine crei datagrame i aparine un nou pachet primit. Toate fragmentele
unei datagrame conin aceeai valoare de Identificare.
Urmeaz un bit nefolosit i apoi dou cmpuri de 1 bit. DF nsemn Dont
Fragment (A nu se fragmenta). Acesta este un ordin dat ruterelor ca s nu
fragmenteze datagrama pentru c destinaia nu este capabil s reasambleze
piesele la loc. De exemplu, cnd un calculator pornete, memoria sa ROM poate
cere s i se trimit o imagine de memorie ca o singur datagram. Prin marcarea
datagramei cu bitul DF, emitorul tie c aceasta va ajunge ntr-o singur bucat,
chiar dac aceasta nseamn c datagrama trebuie s evite o reea cu pachete mai
mici pe calea cea mai bun i s aleag o rut suboptimal. Toate mainile trebuie
s accepte fragmente de 576 octei sau mai mici.
MF nsemn More Fragments (mai urmeaz fragmente). Toate fragmentele,
cu excepia ultimului, au acest bit activat. El este necesar pentru a ti cnd au
ajuns toate fragmentele unei datagrame.
Deplasamentul fragmentului spune unde este locul fragmentului curent n
cadrul datagramei. Toate fragmentele dintr-o datagram, cu excepia ultimului,
trebuie s fie un multiplu de 8 octei - unitatea de fragmentare elementar. Din
moment ce sunt prevzui 13 bii, exist un maxim de 8192 de fragmente pe
datagram, obinndu-se o lungime maxim a datagramei de 65536 octei, cu
unul mai mult dect cmpul Lungime total.
Cmpul Timp de via este un contor folosit pentru a limita durata de via
a pachetelor. Este prevzut s contorizeze timpul n secunde, permind un timp
maxim de via de 255 secunde. El trebuie s fie decrementat la fiecare salt (hop trecere dintr-o reea n alta) i se presupune c este decrementat de mai multe ori
cnd st la coad un timp ndelungat ntr-un ruter. n practic, el contorizeaz
doar salturile. Cnd ajunge la valoarea zero, pachetul este eliminat i se trimite
napoi la gazda surs un pachet de avertisment. Aceast facilitate previne
hoinreala la infinit a datagramelor, ceea ce se poate ntmpla dac tabelele de
dirijare devin incoerente.

Cnd nivelul reea a asamblat o datagram complet, trebuie s tie ce s


fac cu ea. Cmpul Protocol spune crui proces de transport trebuie s o predea.
TCP este o posibilitate, dar tot aa sunt i UDP i alte cteva. Numerotarea
protocoalelor este global la nivelul ntregului Internet.
Suma de control a antetului verific numai antetul. O astfel de sum de
control este util pentru detectarea erorilor generate de locaii de memorie
proaste din interiorul unui ruter. Algoritmul este de a aduna toate jumtile de
cuvinte, de 16 bii, atunci cnd acestea sosesc, folosind aritmetic n complement
fa de unu i pstrarea complementului fa de unu al rezultatului. Pentru scopul
acestui algoritm, se presupune c la sosire suma de control a antetului este zero.
Acest algoritm este mai robust dect folosirea unei adunri normale. Observai c
suma de control a antetului trebuie recalculate la fiecare salt, pentru c
ntotdeauna se schimb cel puin un cmp (cmpul timp de via), dar se pot
folosi trucuri pentru a accelera calculul.
Adresa sursei i Adresa destinaiei indic numrul de reea i numrul de
gazd. Vom discuta adresele Internet n seciunea urmtoare.
Cmpul Opiuni a fost proiectat pentru a oferi un subterfugiu care s
permit versiunilor viitoare ale protocolului s includ informaii care nu sunt
prezente n proiectul original, pentru a permite cercettorilor s ncerce noi idei i
pentru a evita alocarea unor bii din antet pentru informaii folosite rar. Opiunile
sunt de lungime variabil. Fiecare ncepe cu un cod de un octet care identific
opiunea. Unele opiuni sunt urmate de un cmp de un octet reprezentnd
lungimea opiunii, urmat de unul sau mai muli octei de date. Cmpul Opiuni
este completat pn la un multiplu de 4 octei.

16. Adrese IP
Fiecare gazd i ruter din Internet are o adres IP, care codific adresa sa de
reea i de gazd. Combinaia este unic: n principiu nu exist dou maini cu

aceeai adres IP. Toate adresele IP sunt de 32 de bii lungime i sunt folosite n
cmpurile Adres surs i Adres destinaie ale pachetelor IP. Este important de
observat c o adres IP nu se refer de fapt la o gazd. Se refer de fapt la o
interfa de reea, deci dac o gazd este n dou reele, trebuie s foloseasc
dou adrese IP. Totui n practic, cele mai multe gazde sunt conectate la o
singur reea i deci au o adres IP.
Timp de mai multe decenii, adresele IP erau mprite n cinci categorii
ilustrate n fig. 5-55. Acest model de alocare a fost denumit clase de adrese. Nu
mai este folosit, dar referinele la acest model sunt n continuare des ntlnite n
literatur.

Adresele de reea, care sunt numere de 32 de bii, sunt scrise n mod uzual
n notaia zecimal cu punct. n acest format, fiecare din cei 4 octei 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 semnificaii speciale. Valoarea 0 nseamn reeaua
curent sau gazda curent. Valoarea -1 este folosit ca o adres de difuzare
pentru a desemna toate gazdele din reeaua indicat.

Insuficienta adreselor IP este o problema. Soluia care a fost implementat


acum i care a dat Internet-ului un pic de spaiu de manevr este CIDR (Classless
InterDomain Routing - Dirijarea fr clase ntre domenii). Ideea de la baza CIDR,
este de a aloca adresele IP rmase, n blocuri de dimensiune variabil, fr a se
ine cont de clase. Dac un site are nevoie, s zicem, de 2000 de adrese, i este dat
un bloc de 2048 adrese la o grani de 2048 de octei.
Renunarea la clase face rutarea mai complicat. n vechiul sistem cu clase,
rutarea se efectua n felul urmtor. Atunci cnd un pachet ajungea la un ruter, o
copie a adresei IP era deplasat la dreapta cu 28 de bii pentru a obine un numr
de clas de 4 bii. O ramificaie cu 16 ci sorta pachetele n A, B, C i D (dac era
suportat), cu 8 cazuri pentru clasa A, patru cazuri pentru clasa B, dou cazuri
pentru clasa C i cte unul pentru D i E. Programul pentru fiecare clas masca
numrul de reea de 8, 16 sau 24 de bii i l alinia la dreapta ntr-un cuvnt de 32
de bii. Numrul de reea era apoi cutat n tabela pentru A, B sau C, de obicei
indexat pentru reelele A i B i folosind dispersia (hashing) pentru reelele C.
Odat intrarea gsit, se putea gsi linia de ieire i pachetul era retransmis.
Cu CIDR, acest algoritm simplu nu mai funcioneaz. n loc de aceasta,
fiecare intrare din tabela de rutare este extins cu o masc de 32 de bii. Din acest
motiv, acum exist o singur tabel de rutare pentru toate reelele, constituit
dintr-un un vector de triplete (adres IP, masc subreea, linie de ieire). Cnd
sosete un pachet IP, mai nti se extrage adresa IP a destinaiei. Apoi
(conceptual) tabela de rutare este scanat intrare cu intrare, mascnd adresa
destinaie i comparnd cu intrarea din tabel, n cutarea unei potriviri. Este
posibil ca mai multe intrri (cu mti de subreea de lungimi diferite) s se
potriveasc, caz n care este folosit cea mai lung masc. Astfel, dac exist
potrivire pentru o masc /20 i pentru o masc /24, este folosit intrarea cu /24.

17. NAT Translatarea adreselor de retea

Adresele IP sunt insuficiente. Un ISP ar putea avea o adres /16 (anterior de


clas B) oferindu-i 65.534 numere de staii. Dac are mai muli clieni, are o
problem.
Problema epuizrii adreselor IP nu este o problem teoretic care ar putea
aprea cndva n viitorul ndeprtat. A aprut aici i acum. Soluia pe termen lung
este ca tot Internetul s migreze la IPv6, care are adrese de 128 de bii. Tranziia
se desfoar ncet, dar vor trece ani pn la finalizarea procesului. n consecin,
anumite persoane au considerat c este nevoie de o rezolvare rapid pe termen
scurt. Rezolvarea a venit n forma NAT (Network Address Translation
Translatarea adreselor de reea).
Ideea de baz a NAT-ului este de a aloca fiecrei companii o singur adres
IP (sau cel mult un numr mic de adrese) pentru traficul Internet. n interiorul
companiei, fiecare calculator primete o adres IP unic, care este folosit pentru
traficul intern. Totui, atunci cnd un pachet prsete compania i se duce la ISP,
are loc o translatare de adres. Pentru a face posibil acest lucru, au fost declarate
ca fiind private trei intervale de adrese IP. Companiile le pot folosi intern aa cum
doresc. Singura regul este ca nici un pachet coninnd aceste adrese s nu apar
pe Internet. Cele trei intervale rezervate sunt :
10.0.0.0 - 10.255.255.255/8 (16.777.216 gazde)
172.16.0.0 - 172.31.255.255/12 (1 .048.576 gazde)
192.168.0.0 - 192.168.255.255/16 (65.536 gazde)
Primul interval pune la dispoziie 16.777.216 adrese (cu excepia adreselor
0 i 1, ca de obicei) i este alegerea obinuit a majoritii companiilor, chiar
dac nu au nevoie de aa de multe adrese.
n interiorul companiei fiecare main are o adres unic de forma 10.x.y.z.
Totui, cnd un pachet prsete compania, trece printr-o unitate NAT (eng.: NAT
box)care convertete adresa IP intern la adresa IP real a companiei.
Pn acum am trecut cu vederea un detaliu: atunci cnd vine rspunsul (de
exemplu de la un server Web), este adresat 198.60.42.12, deci de unde tie
unitatea NAT cu care adres s o nlocuiasc pe aceasta? Aici este problema NATului. Dac ar fi existat un cmp liber n antetul IP, acel cmp ar fi putut fi folosit
pentru a memora cine a fost adevratul emitor, dar numai 1 bit este nc
nefolosit. n principiu, o nou opiune ar putea fi creat pentru a reine adevrata
adres a sursei, dar acest lucru ar necesita schimbarea codului din protocolul IP
de pe toate staiile din ntregul Internet pentru a putea prelucra noua opiune.
Aceasta nu este o alternativ promitoare pentru o rezolvare rapid.

n cele ce urmeaz se prezint ceea ce s-a ntmplat cu adevrat.


Proiectanii NAT au observat c marea majoritate a pachetelor IP aveau coninut
TCP sau UDP. Ambele au antete ce conin un port surs i un port destinaie. n
continuare vom discuta doar despre porturi TCP, dar exact aceleai lucruri se
aplic i la UDP. Porturile sunt numere ntregi pe 16 bii care indic unde ncepe i
unde se termin o conexiune TCP. Aceste cmpuri pun la dispoziie cmpul
necesar funcionrii NAT.
Atunci cnd un proces dorete s stabileasc o conexiune TCP cu un proces
de la distan, se ataeaz unui port TCP nefolosit de pe maina sa. Acesta se
numete portul surs i spune codului TCP unde s trimit pachetele care vin i
aparin acestei conexiuni. Procesul furnizeaz i un port destinaie pentru a spune
cui s trimit pachetele n cealalt parte. Porturile 0-1023 sunt rezervate pentru
servicii bine cunoscute. De exemplu portul 80 este folosit de serverele Web, astfel
nct clienii s le poat localiza. Fiecare mesaj TCP care pleac conine att un
port surs ct i un port destinaie. Cele dou porturi permit identificarea
proceselor care folosesc conexiunea la cele dou capete.
Folosind cmpul Port surs rezolvm problema de coresponden. De
fiecare dat cnd un pachet pleac, el intr n unitatea NAT i adresa surs
10.x.y.z este nlocuit cu adresa real a companiei. n plus, cmpul TCP Port surs
este nlocuit cu un index n tabela de translatare a unitii NAT, care are 65.536
intrri. Aceast tabel conine adresa IP iniial i portul iniial. n final, sunt
recalculate i inserate n pachet sumele de control ale antetelor IP i TCP. Cmpul
Port surs trebuie nlocuit pentru c s-ar putea ntmpla, de exemplu, ca staiile
10.0.0.1 i 10.0.0.2 s aib amndou conexiuni care s foloseasc portul 5000,
deci cmpul Port surs nu este suficient pentru a identifica procesul emitor.
Atunci cnd la unitatea NAT sosete un pachet de la ISP, Portul surs din
antetul TCP este extras i folosit ca index n tabela de coresponden a unitii
NAT. Din intrarea localizat sunt extrase i inserate n pachet adresa IP intern i
Portul surs TCP iniial. Apoi sunt recalculate sumele de control TCP i IP i
inserate n pachet. Dup aceea pachetul este transferat ruterului companiei
pentru transmitere normal folosind adresa 10.x.y.z.
Multe persoane din comunitatea IP o consider un monstru pe faa
pmntului. Rezumate succint, iat cteva dintre obiecii :
- n primul rnd,NAT violeaz modelul arhitectural al IP-ului, care afirm c
fiecare adres IP identific unic o singur main din lume. ntreaga
structur software a Internetului este construit pornind de la acest fapt.
Cu NAT, mii de maini pot folosi (i folosesc) adresa 10.0.0.1.

- n al doilea rnd, NAT schimb natura Internetului de la o reea fr


conexiuni la un fel de reea cu conexiuni.
- n al treilea rnd, NAT ncalc cea mai fundamental regul a protocoalelor
pe niveluri: nivelul k nu poate face nici un fel de presupuneri referitor la
ceea ce a pus nivelul k+1 n cmpul de informaie util. Principiul de baz
este s se pstreze niveluri independente.
- n al patrulea rnd, procesele din Internet nu sunt obligate s foloseasc
TCP sau UDP.
- n al cincilea rnd, anumite aplicaii introduc adrese IP n corpul mesajului.
Receptorul extrage aceste adrese i le folosete. De vreme ce NAT nu tie
nimic despre aceste adrese, nu le poate nlocui, deci orice ncercare de a le
folosi de ctre cealalt parte va eua.
Acestea i alte probleme ale NAT sunt discutate n RFC 2993. n general,
opozanii NAT spun c rezolvnd problema insuficienei adreselor IP cu o soluie
temporar i urt, presiunea pentru a implementa soluia real, adic tranziia la
IPv6, este redus i acesta este un lucru ru.

18. Protocolul mesajelor de control din Internet


Operarea Internet-ului este strns monitorizat de ctre rutere. Atunci
cnd se ntmpl ceva neobinuit, evenimentul este raportat prin ICMP (Internet
Control Message Protocol protocolul mesajelor de control din Internet), care
este folosit i pentru testarea Internet-ului. Sunt definite aproape o duzin de
tipuri de mesaje ICMP. Cele mai importante sunt enumerate n fig. 5-61. Fiecare
tip de mesaj ICMP este ncapsulat ntr-un pachet IP.

Mesajul DESTINAIE INACCESIBIL (DESTINATION UNREACHABLE) este


folosit atunci cnd subreeaua sau un ruter nu pot localiza destinaia, sau un
pachet cu bitul DF nu poate fi livrat deoarece o reea cu pachete mici i st n
cale.
Mesajul TIMP DEPIT (TIME EXCEEDED) este trimis cnd un pachet este
eliminat datorit ajungerii contorului su la zero. Acest mesaj este un simptom al
buclrii pachetelor, al unei enorme congestii sau al stabilirii unor valori prea mici
pentru ceas.
Mesajul PROBLEM DE PARAMETRU (PARAMETER PROBLEM) indic
detectarea unei valori nepermise ntr-un cmp din antet. Aceast problem indic
o eroare n programele IP ale gazdei emitoare sau eventual n programele unui
ruter tranzitat.
Mesajul OPRIRE SURS (SOURCE QUENCH) a fost folosit pe vremuri pentru
a limita traficul gazdelor care trimiteau prea multe pachete. Cnd o gazd primea
acest mesaj, era de ateptat s ncetineasc ritmul de transmisie. Este folosit
arareori, deoarece cnd apare congestie, aceste pachete au tendina de a turna
mai mult gaz pe foc.
Mesajul REDIRECTARE (REDIRECT) este folosit atunci cnd un ruter observ
c un pachet pare a fi dirijat greit. Este folosit de ruter pentru a spune gazdei
emitoare despre eroarea probabil.
Mesajele CERERE ECOU (ECHO REQUEST) i RSPUNS ECOU (ECHO REPLY)
sunt folosite pentru a vedea dac o anumit destinaie este accesibil i activ.
Este de ateptat ca la recepia mesajului ECOU, destinaia s rspund printr-un
mesaj RSPUNS ECOU.
Mesajele CERERE AMPRENT DE TIMP (TIMESTAMP REQUEST) i RSPUNS
AMPRENT DE TIMP (TIMESTAMP REPLY) sunt similare, cu excepia faptului c n
rspuns sunt nregistrate timpul de sosire a mesajului i de plecare a rspunsului.
Aceast facilitate este folosit pentru a msura performanele reelei.

19. Protocolul de rezoluie a adresei: ARP


Dei fiecare main din Internet are una sau mai multe adrese IP, acestea
nu pot fi folosite de fapt pentru trimiterea pachetelor deoarece hardware-ul
nivelului legturii de date nu nelege adresele Internet. Actualmente, cele mai
multe gazde sunt ataate la un LAN printr-o plac de interfa care nelege numai
adresele LAN. De exemplu, fiecare plac Ethernet fabricat pn acum vine cu o
adres Ethernet de 48 bii. Fabricanii plcilor Ethernet cer un spaiu de adrese de
la o autoritate central pentru a se asigura c nu exist dou plci cu aceeai
adres (pentru a evita conflictele care ar aprea dac cele dou plci ar fi n
acelai LAN). Plcile trimit i primesc cadre pe baza adresei Ethernet de 48 bii. Ele
nu tiu absolut nimic despre adresele IP pe 32 de bii.

Se pune atunci ntrebarea: Cum sunt transformate adresele IP n adrese la


nivelul legturii de date, ca de exemplu Ethernet? S ncepem prin a vedea cum
trimite un utilizator de pe gazda 1 un pachet unui utilizator de pe gazda 2.
Presupunem c expeditorul tie numele destinatarului, ceva de genul
ary@eagle.cs.uni.edu. Primul pas este aflarea adresei IP a gazdei 2, cunoscut ca
eagle.cs.uni.edu. Aceast cutare este fcut de sistemul numelor de domenii
(DNS) care ntoarce adresa IP a gazdei 2 (192.31.65.5).

Programele de la nivelurile superioare ale gazdei 1 construiesc un pachet cu


192.31.65.5 n cmpul adresa destinatarului, pachet care este trimis programelor
IP pentru a-l transmite. Programele IP se uit la adres i vd c destinatarul se
afl n propria reea, dar au nevoie de un mijloc prin care s determine adresa
Ethernet a destinatarului. O soluie este s avem undeva n sistem un fiier de
configurare care transform adresele IP n adrese Ethernet. Aceast soluie este
posibil, desigur, dar pentru organizaii cu mii de maini, meninerea fiierelor
actualizate este o aciune consumatoare de timp i care poate genera erori.
O soluie mai bun este ca gazda 1 s trimit un pachet de difuzare n
reeaua Ethernet ntrebnd: Cine este proprietarul adresei IP 192.31.65.5?.
Pachetul de difuzare va ajunge la toate mainile din reeaua Ethernet 192.31.65.0
i fiecare i va verifica adresa IP. Numai gazda 2 va rspunde cu adresa sa
Ethernet (E2). n acest mod gazda 1 afl c adresa IP 192.31.65.5 este pe gazda cu
adresa Ethernet E2. Protocolul folosit pentru a pune astfel de ntrebri i a primi
rspunsul se numete ARP (Address Resolution Protocol - Protocolul de rezoluie
a adresei). Aproape toate mainile din Internet l folosesc. Avantajul folosirii ARP
fa de fiierele de configurare l reprezint simplitatea. Administratorul de sistem
nu trebuie s fac prea multe, dect s atribuie fiecrei maini o adres IP i s
hotrasc mtile subreelelor. ARP-ul face restul.
n acest punct, programele IP de pe gazda 1 construiesc un cadru Ethernet adresat
ctre E2, pun pachetul IP (adresat ctre 193.31.65.5) n cmpul informaie util i
l lanseaz pe reeaua Ethernet. Placa Ethernet a gazdei 2 detecteaz acest cadru,
recunoate c este un cadru pentru ea, l ia repede i genereaz o ntrerupere.
Driverul Ethernet extrage pachetul IP din informaia util i l trimite programelor
IP, care vd c este corect adresat i l prelucreaz.
Pentru a face ARP-ul mai eficient sunt posibile mai multe optimizri. Pentru
nceput, la fiecare execuie a ARP, maina pstreaz rezultatul pentru cazul n care
are nevoie s contacteze din nou aceeai main n scurt timp. Data viitoare va
gsi local corespondentul adresei, evitndu-se astfel necesitatea unei a doua
difuzri. n multe cazuri, gazda 2 trebuie s trimit napoi un rspuns, ceea ce o

foreaz s execute ARP, pentru a determina adresa Ethernet a expeditorului.


Aceast difuzare
ARP poate fi evitat oblignd gazda 1 s includ n pachetul ARP corespondena
dintre adresa sa IP i adresa Ethernet. Cnd pachetul ARP ajunge la gazda 2,
perechea (192.31.65.7, E1) este memorat local de ARP pentru o folosire
ulterioar. De fapt, toate mainile din reeaua Ethernet pot memora aceast
relaie n memoria ARP local.
Alt optimizare este ca fiecare main s difuzeze corespondena sa de
adrese la pornirea mainii. Aceast difuzare este realizat n general printr-un
pachet ARP de cutare a propriei adrese IP. Nu ar trebui s existe un rspuns, dar
un efect lateral al difuzrii este introducerea unei nregistrri n memoria ascuns
ARP a tuturor. Dac totui sosete un rspuns (neateptat), nseamn c dou
maini au aceeai adres IP. Noua main ar trebui s-l informeze pe
administratorul de sistem i s nu porneasc.

20. DHCP
Ca i RARP i BOOTP, DHCP este bazat pe ideea unui server special care
atribuie adrese IP gazdelor care cer una. Acest server nu trebuie s se afle n
acelai LAN cu gazda care face cererea. Deoarece serverul DHCP s-ar putea s nu
fie accesibil prin difuzare, este nevoie ca n fiecare LAN s existe un agent de
legtur DHCP (DHCP relay agent), aa cum se vede n fi fig. 5-63.

Fig. 5-63. Funcionarea DHCP.

Pentru a-i afla adresa IP, o main tocmai pornit difuzeaz un pachet
DHCP DISCOVER. Agentul de legtur DHCP din LAN intercepteaz toate difuzrile
DHCP.
Atunci cnd gsete un pachet DHCP DISCOVER, l trimite ca pachet unicast
serverului DHCP, posibil ntr-o reea deprtat. Singura informaie de care are
nevoie agentul este adresa IP a serverului DHCP.
O problem care apare cu atribuirea automat a adreselor IP dintr-o
rezerv comun este ct de mult ar trebui alocat o adres IP . Dac o gazd
prsete reeaua i nu returneaz adresa sa IP serverului DHCP, acea adres va fi
pierdut permanent. Dup o perioad de timp vor fi pierdute multe adrese.
Pentru a preveni aceasta, atribuirea adresei IP va fi pentru o perioad fix de
timp, o tehnic numit nchiriere. Chiar nainte ca perioada de nchiriere s expire,
gazda trebuie s i cear DHCP-ului o rennoire. Dac nu reuete s fac cererea
sau dac cererea este respins, gazda nu va mai putea folosi adresa IP care i
fusese dat mai devreme.

21. Protocolul de dirijare folosit de porile interioare: OSPF


Internet-ul este construit dintr-un numr mare de sisteme autonome(AS).
Fiecare AS este administrat de o organizaie diferit i poate folosi propriul
algoritm de dirijare n interior. De exemplu, reelele interne ale companiilor X, Y i
Z ar fi vzute ca trei AS-uri dac toate ar fi n Internet. Toate trei pot folosi intern
algoritmi de dirijare diferii. Cu toate acestea, existena standardelor, chiar i
pentru dirijarea intern, simplific implementarea la graniele dintre AS-uri i
permite reutilizarea codului. OSPF (Open Shortest Path First - protocol public
(deschis) bazat pe calea cea mai scurt) a devenit un standard n 1990. Muli
productori de rutere ofer support pentru el i acesta a devenit principalul
protocol de pori interioare.
OSPF suport trei tipuri de conexiuni i reele:
1. Linii punct-la-punct ntre exact dou rutere.
2. Reele multiacces cu difuzare (de exemplu, cele mai multe LAN-uri).
3. Reele multiacces fr difuzare (de exemplu, cele mai multe WAN-uri cu
comutare de pachete).

OSPF funcioneaz prin abstractizarea coleciei de reele, rutere i linii reale


ntr-un graf orientat n care fiecrui arc i este atribuit un cost (distan, ntrziere
etc.). Apoi calculeaz cea mai scurt cale bazndu-se pe ponderile arcelor. O
conexiune serial ntre dou rutere este reprezentat de o pereche de arce, cte
unul n fiecare direcie. Ponderile lor pot fi diferite. O reea multiacces este
reprezentat de un nod pentru reeaua nsi plus cte un nod pentru fiecare
ruter. Arcele de la nodul reea la rutere au pondere 0 i sunt omise din graf.
Un sistem autonom :

Multe din AS-urile din Internet sunt foarte mari i nu sunt simplu de
administrat. OSPF le permite s fie divizate n zone numerotate, unde o zon este
o reea sau o mulime de reele nvecinate. Zonele nu se suprapun i nu este
necesar s fie exhaustive, n sensul c unele rutere pot s nu aparin nici unei
zone. O zon este o generalizare a unei subreele. n afara zonei, topologia i
detaliile sale nu sunt vizibile.
Orice AS are o zon de coloan vertebral, numit zona 0. Toate zonele
sunt conectate la coloana vertebral, eventual prin tunele, astfel nct este posibil

s se ajung din orice zon din AS n orice alt zon din AS prin intermediul
coloanei vertebrale. Un tunel este reprezentat n graf ca un arc i are un cost.
Fiecare ruter care este conectat la dou sau mai multe zone aparine coloanei
vertebrale. Analog cu celelalte zone, topologia coloanei vertebrale nu este vizibil
din afara coloanei vertebrale.
n interiorul unei zone, fiecare ruter are aceeai baz de date pentru starea
legturilor i folosete acelai algoritm de cea mai scurt cale. Principala sa
sarcin este s calculeze cea mai scurt cale de la sine la fiecare alt ruter din zon,
incluznd ruterul care este conectat la coloana vertebral, din care trebuie s
existe cel puin unul. Un ruter care conecteaz dou zone are nevoie de bazele de
date pentru ambele zone i trebuie s foloseasc algoritmul de cale ct mai scurt
separat pentru fiecare zon.
n timpul operrii normale pot fi necesare trei tipuri de ci: intrazonale,
interzonale i interASuri. Rutele intrazonale sunt cele mai uoare, din moment ce
ruterul surs tie ntotdeauna calea cea mai scurt spre ruterul destinaie.
Dirijarea interzonal se desfoar ntotdeauna n trei pai: drum de la surs la
coloana vertebral; drum de-a lungul coloanei vertebrale pn la zona destinaie;
drum la destinaie. Acest algoritm foreaz o configuraie de tip stea pentru OSPF,
coloana vertebral fiind concentratorul (hub), iar celelalte zone fiind spiele.
Pachetele sunt dirijate de la surs la destinaie ca atare. Ele nu sunt ncapsulate
sau trecute prin tunel, cu excepia cazului n care merg spre o zon a crei unic
conexiune la coloana vertebral este un tunel.

Cnd un ruter pornete, trimite mesaje HELLO pe toate liniile sale punct-lapunct i trimite multiplu (multicast) n LAN-urile grupului compus din toate
celelalte rutere. n WAN-uri, are nevoie de anumite informaii de configuraie,
pentru a ti pe cine s contacteze. Din rspunsuri, fiecare ruter afl care sunt
vecinii si. Ruterele din acelai LAN sunt toate vecine.

OSPF funcioneaz prin schimb de informaii ntre rutere adiacente, care nu


este acelai lucru cu schimbul de informaii ntre ruterele vecine. n particular,
este ineficient ca fiecare ruter dintr-un LAN s discute cu fiecare alt ruter din LAN.
Pentru a evita aceast situaie, un ruter este ales ca ruter desemnat. Se spune c
el este adiacent cu toate celelalte rutere din LAN-ul su i schimb informaii cu
ele. Ruterele vecine care nu sunt adiacente nu schimb informaii ntre ele. De
asemenea, este actualizat n permanen i un ruter desemnat de rezerv pentru
a uura tranziia dac ruterul desemnat primar se defecteaz i trebuie s fie
nlocuit imediat.
n timpul funcionrii normale, fiecare ruter inund periodic cu mesaje
ACTUALIZARE STARE LEGTUR (Link State Update) fiecare ruter adiacent. Acest
mesaj indic starea sa i furnizeaz costurile folosite n baza de date topologic.
Mesajele de inundare sunt confirmate pentru a le face sigure. Fiecare mesaj are
un numr de secven, astfel nct un ruter poate vedea dac un mesaj
ACTUALIZARE STARE LEGTUR este mai vechi sau mai nou dect ceea ce are
deja. De asemenea, ruterele trimit aceste mesaje cnd o linie cade sau i revine
sau cnd costul acesteia se modific.
Mesajele DESCRIERE BAZA DE DATE (Database Description) dau numerele
de secven pentru toate intrrile de stare a liniei deinute actual de emitor.
Prin compararea valorilor proprii cu acelea ale emitorului, receptorul poate
determina cine are cea mai recent valoare. Aceste mesaje sunt folosite cnd o
linie este refcut.
Fiecare partener poate cere informaii de stare a legturii de la cellalt
folosind mesaje CERERE STARE LEGTUR (Link State Request). Rezultatul concret
al acestui algoritm este c fiecare pereche de rutere adiacente verific s vad
cine are cele mai recente date i astfel, noua informaie este rspndit n zon.
Toate aceste mesaje sunt trimise ca simple pachete IP.

22. Protocolul de dirijare pentru pori externe: BGP


n cadrul unui singur AS, protocolul de dirijare recomandat este OSPF (dei,
desigur, nu este singurul folosit). ntre AS-uri se folosete un protocol diferit, BGP
(Border Gateway Protocol Protocolul porilor de grani). ntre AS-uri este
necesar un protocol diferit pentru c scopurile unui protocol pentru pori
interioare i ale unui protocol pentru pori exterioare sunt diferite. Tot ce trebuie
s fac un protocol pentru pori interioare este s mute pachetele ct mai eficient
de la surs la destinaie. El nu trebuie s-i fac probleme cu politica.
Ruterele ce folosesc protocolul de pori exterioare trebuie s in cont ntro mare msur de politic. De exemplu, un AS al unei corporaii poate dori
facilitatea de a trimite pachete oricrui site Internet i s recepioneze pachete de
la orice site Internet. Cu toate acestea, poate s nu doreasc s asigure
tranzitarea pentru pachetele originare dintr-un AS strin destinate unui AS strain
diferit, chiar dac prin AS-ul propriu trece cea mai scurt cale dintre cele dou ASuri strine (Asta este problema lor, nu a noastr.). Pe de alt parte, poate fi
dispus s asigure tranzitarea pentru vecinii si, sau chiar pentru anumite AS-uri
care au pltit pentru acest serviciu.
Protocoalele pentru pori externe, n general i BGP n particular, au fost
proiectate pentru a permite forarea multor tipuri de politici de dirijare pentru
traficul ntre AS-uri. Politicile tipice implic consideraii politice, de securitate sau
economice. Cteva exemple de constrngeri de dirijare sunt:
1. Nu se tranziteaz traficul prin anumite AS-uri.
2. Nu se plaseaz Irak-ul pe o rut care pornete din Pentagon.
3. Nu se folosesc Statele Unite pentru a ajunge din Columbia Britanic n Ontario.
4. Albania este tranzitat numai dac nu exist alt alternativ ctre destinaie.
5. Traficul care pleac sau ajunge la IBM nu trebuie s tranziteze Microsoft.

n mod obinuit politicile sunt configurate manual n fiecare ruter BGP (sau
sunt incluse folosind un anumit tip de script). Ele nu sunt parte a protocolului
nsui.
23. IPv6
IPv6 menine caracteristicile bune ale IP-ului, le elimin sau atenueaz pe
cele rele i adaug unele noi acolo unde este nevoie. n general, IPv6 nu este
compatibil cu IPv4, dar el este compatibil cu celelalte protocoale Internet
auxiliare, incluznd TCP, UDP, ICMP, IGMP, OSPF, BGP i DNS, cteodat fiind
necesare mici modificri (majoritatea pentru a putea lucra cu adrese mai lungi).
n primul rnd i cel mai important, IPv6 are adrese mai lungi dect IPv4. Ele
au o lungime de 16 octei, ceea ce rezolv problema pentru a crei soluionare a
fost creat IPv6: s furnizeze o surs efectiv nelimitat de adrese Internet.
A doua mare mbuntire a lui IPv6 este simplificarea antetului. El conine
numai 7 cmpuri (fa de 13 n IPv4). Aceast schimbare permite ruterelor s
prelucreze pachetele mai rapid, mbuntind astfel productivitatea i ntrzierea.
A treia mare mbuntire a fost suportul mai bun pentru opiuni. Aceast
schimbare a fost esenial n noul antet, deoarece cmpurile care erau necesare
anterior sunt acum opionale. n plus, modul n care sunt reprezentate opiunile
este diferit, uurnd ruterelor saltul peste opiunile care nu le sunt destinate.
Aceast caracteristic accelereaz timpul de prelucrare a pachetelor.
Un al patrulea domeniu n care IPv6 reprezint un mare progres este n
securitate. IETF a avut poria sa de poveti de ziar despre copii precoce de 12 ani
care i folosesc calculatoarele personale pentru a sparge bnci sau baze militare
n tot Internet-ul. A existat un sentiment puternic c ar trebui fcut ceva pentru a
mbunti securitatea. Autentificarea i confidenialitatea sunt trsturi cheie ale
noului IP. Ulterior ele au fost adaptate i n IPv4, astfel c n domeniul securitii
diferenele nu mai sunt aa de mari.

n final, a fost acordat o mai mare atenie calitii serviciilor. n trecut s-au
fcut eforturi, fr prea mare tragere de inim, dar acum, o dat cu creterea
utilizrii multimedia n Internet, presiunea este i mai mare.

Antetul IPv6

Cmpul Versiune este ntotdeauna 6 pentru IPv6 (i 4 pentru IPv4).


Cmpul Tip de trafic (Traffic class) este folosit pentru a distinge ntre
pachetele care au diverse cerine de livrare n timp real. Un cmp cu acest scop a

existat n IP de la nceput, dar a fost implementat sporadic de ctre rutere. n


acest moment se desfoar experimente pentru a determina cum poate fi
utilizat cel mai bine pentru transmisii multimedia.
Cmpul Eticheta fluxului este nc experimental, dar va fi folosit pentru a
permite unei surse i unei destinaii s stabileasc o pseudo-conexiune cu
proprieti i cerine particulare. De exemplu, un ir de pachete de la un proces de
pe o anumit gazd surs ctre un anumit proces pe o anumit gazd destinaie
poate avea cerine de ntrziere stricte i din acest motiv necesit capacitate de
transmisie rezervat. Fluxul poate fi stabilit n avans i poate primi un
identificator. Cnd apare un pachet cu o Etichet a fluxului diferit de zero, toate
ruterele pot s o caute n tabelele interne pentru a vedea ce tip de tratament
special necesit. Ca efect, fluxurile sunt o ncercare de a combina dou moduri:
flexibilitatea unei subreele cu datagrame i garaniile unei subreele cu circuite
virtuale. Fiecare flux este desemnat de adresa surs, adresa destinaie i numrul
de flux, aa nct, ntre o pereche dat de adrese IP pot exista mai multe fluxuri
active n acelai timp . De asemenea, n acest mod, chiar dac dou fluxuri venind
de la gazde diferite, dar cu acelai numr de flux trec prin acelai ruter, ruterul va
fi capabil s le separe folosind adresele surs i destinaie. Se ateapt ca
numerele de flux s fie alese aleator, n loc de a fi atribuite secvenial ncepnd cu
1, pentru c se ateapt ca ruterele s le foloseasc n tabele de dispersie.
Cmpul Lungimea informaiei utile spune ci octei urmeaz dup antetul
de 40 de octei din fig. 5-68. Numele a fost schimbat fa de cmpul Lungime
total din IPv4 deoarece semnificaia este uor modificat: cei 40 de octei nu mai
sunt parte a lungimii (aa cum erau nainte).
Cmpul Antetul urmtor d de gol proiectanii. Motivul pentru care antetul
a putut fi simplificat este c exist antete de extensie suplimentare (opionale).
Acest cmp spune care din cele ase antete (actuale) de extensie, dac exist
vreunul, urmeaz dup cel curent. Dac acest antet este ultimul antet IP, cmpul
Antetul urmtor spune crui tip de protocol (de exemplu TCP, UDP) i se va
transmite pachetul.

Cmpul Limita salturilor este folosit pentru a mpiedica pachetele s


triasc venic. El este, n practic, identic cu cmpul Timp de via din IPv4, i
anume un cmp care este decrementat la fiecare salt dintr-o reea n alta. n
teorie, n IPv4 era un timp n secunde, dar nici un ruter nu-l folosea n acest mod,
aa nct numele a fost modificat pentru a reflecta modul n care este de fapt
folosit.
Apoi urmeaz cmpurile Adres surs i Adres destinaie.
24. Stabilirea si eliberarea conexiunii la nivelul transport

Deoarece TPDU-urile de control pot i ele s fie ntrziate, pot aprea


probleme atunci cnd entitile de transport ncerc s cad de acord asupra
numrului iniial de secven. S presupunem, de exemplu, c, pentru a stabili o
conexiune, gazda 1 trimite un mesaj CONNECTION REQUEST coninnd numrul
de secven iniial propus i portul destinaie gazdei 2. Acesta va confirma mesajul
trimind napoi un TPDU CONNECTION ACCEPTED . Dac TPDU-ul CONNECTION
REQUEST este pierdut, dar un duplicat ntrziat al unui alt CONNECTION REQUEST
va ajunge la gazda 2, atunci conexiunea nu va fi stabilit corect.
Pentru a rezolva aceasta problem, Tomlinson (1975) a introdus stabilirea
conexiunii cu nelegere n trei pai (three-way handshake). Acest protocol nu
necesit ca ambele pri s nceap s trimit acelai numr de secven, deci
poate fi utilizat i mpreun cu alte metode de sincronizare dect ceasul global.
Procedura normal de iniiere a conexiunii este exemplificat n fig. 6-11(a).
Gazda 1 alege un numr de secven x i trimite un TPDU CONNECTION REQUEST
care conine x gazdei 2. Gazda 2 rspunde cu CONNECTION ACK, confirmnd x i
anunnd numrul su iniial de secven, y. n cele din urm gazda 1 confirm
alegerea lui y gazdei 2 n primul mesaj de date pe care l trimite.

Eliberarea unei conexiuni este mai uoar dect stabilirea ei. Totui, exist
mai multe dificulti dect ne-am atepta. Aa cum am mai amintit, exist dou
moduri de a termina o conexiune: eliberare simetric i eliberare asimetric.
Sistemul telefonic folosete eliberarea asimetric: atunci cnd unul din
interlocutori nchide, conexiunea este ntrerupt. Eliberarea simetric privete
conexiunea ca pe dou conexiuni separate unidirecionale i cere ca fiecare s fie
eliberat separat.
Eliberarea asimetric este brusc i poate genera pierderi de date. S
considerm scenariul din fig. 6-12. Dup stabilirea conexiunii, gazda 1 trimite un
TPDU care ajunge corect la gazda 2. Gazda 1 mai trimite un TPDU dar, nainte ca
acesta s ajung la destinaie, gazda 2 trimite DISCONNECT REQUEST . n acest
caz, conexiunea va fi eliberat i vor fi pierdute date.
Evident, pentru a evita pierderea de date, este necesar un protocol de
eliberare a conexiunii mai sofisticat. O posibilitate este utilizarea eliberrii
simetrice: fiecare direcie este eliberat independent de cealalt; un calculator
gazd poate s continue s primeasc date chiar i dup ce a trimis un TPDU de
eliberare a conexiunii.

Eliberarea simetric este util atunci cnd fiecare proces are o cantitate fix
de date de trimis i tie bine cnd trebuie s transmit i cnd a terminat. n alte

situaii ns, nu este deloc uor de determinat cnd trebuie eliberat conexiunea
i cnd a fost trimis tot ce era de transmis. S-ar putea avea n vedere un protocol
de tipul urmtor: atunci cnd 1 termin, trimite ceva de tipul: Am terminat. Ai
terminat i tu? Dac gazda 2 rspunde: Da, am terminat. nchidem! conexiunea
poate fi eliberat n condiii bune.
Din nefericire, acest protocol nu merge ntotdeauna. Binecunoscuta
problem a celor dou armate este similar acestei situaii: s ne imaginm c
armat alb i-a pus tabra ntr-o vale. Pe amndou crestele care mrginesc
valea sunt armatele albastre. Armata alb este mai mare dect fiecare din cele
dou armate albastre, dar mpreun armatele albastre sunt mai puternice. Dac
oricare din armatele albastre atac singur, ea va fi nfrnt, dar dac ele atac
simultan, atunci vor fi victorioase.
Armatele albastre vor s-i sincronizeze atacul. Totui singura lor
posibilitate de comunicaie este s trimit un mesager care s strbat valea.
Mesagerul poate fi capturat de armata alb i mesajul poate fi pierdut (adic vor
trebui s utilizeze un canal de comunicaie nesigur). Problema este urmtoarea:
exist vreun protocol care s permit armatelor albastre s nving?
S presupunem c comandantul primei armate albastre trimite un mesaj:
Propun s atacm pe 29 martie, mesajul ajunge la armata 2 al crei comandant
rspunde: De acord iar rspunsul ajunge napoi la armata 1. Va avea loc atacul
n acest caz? Probabil c nu, deoarece comandantul armatei 2 nu tie dac
rspunsul su a ajuns sau nu la destinaie. Dac nu a ajuns, armata 1 nu va ataca,
deci ar fi o prostie din partea lui s intre n lupt. S ncercm s mbuntim
protocolul, transformndu-l ntr-unul cu nelegere n trei pai. Iniiatorul
propunerii de atac trebuie s confirme rspunsul. Presupunnd c nici un mesaj
nu este pierdut, armata 2 va avea confirmarea, dar comandantul armatei 1 va
ezita acum. Pn la urm, el nu tie dac confirmarea sa a ajuns la destinaie i
este sigur c dac aceasta nu a ajuns, armata 2 nu va ataca. Am putea s ncercm
un protocol cu confirmare n patru timpi, dar ne-am lovi de aceleai probleme. De
fapt, poate fi demonstrat c nu exist un protocol care s funcioneze.

Pentru a vedea legtura problemei celor dou armate cu problema


eliberrii conexiunii este suficient s nlocuim atac cu deconectare. Dac
niciuna din pri nu se deconecteaz pn nu este sigur c cealalt parte este
gata s se deconecteze la rndul ei, atunci deconectarea nu va mai avea loc
niciodat.
n practic suntem dispui s ne asumm mai multe riscuri atunci cnd este
vorba de eliberarea conexiunii dect atunci cnd este vorba de atacarea armatei
albe, aa nct situaia nu este ntru totul fr speran. Fig. 6-14 prezint patru
scenarii de eliberare a conexiunii folosind un protocol cu confirmare n trei timpi.
Dei acest protocol nu este infailibil, el este n general adecvat.

25. Protocolul UDP


Setul de protocoale Internet suport un protocol de transport fr
conexiune, UDP (User Datagram Protocol Protocol cu Datagrame Utilizator).
UDP ofer aplicaiilor o modalitate de a trimite datagrame IP ncapsulate i de a le
transmite fr a fi nevoie s stabileasc o conexiune. UDP este descris n RFC 768.
UDP transmite segmente constnd ntr-un antet de 8 octei urmat de
informaia util . Antetul este prezentat n fig. 6-23. Cele dou porturi servesc la
identificarea punctelor terminale ale mainilor surs i destinaie. Cnd ajunge un
pachet UDP, coninutul su este predat procesului ataat portului destinaie.
Aceast ataare are loc atunci cnd se folosete o simpl procedur de nume sau
ceva asemntor, aa cum am vzut n fig. 6-6 pentru TCP (procesul de legtur
este acelai pentru UDP). De fapt, valoarea cea mai important dat de existena
UDP-ului fa de folosirea doar a IPului simplu, este aceea a adugrii porturilor
surs i destinaie. Fr cmpurile portului, nivelul de transport nu ar ti ce s fac
cu pachetul. Cu ajutorul lor, segmentele se livreaz corect.

Portul surs este n primul rnd necesar atunci cnd un rspuns trebuie
transmis napoi la surs. Prin copierea cmpului port surs din segmentul care
sosete n cmpul port destinaie al segmentului care pleac, procesul ce trimite
rspunsul specific ce proces de pe maina de trimitere urmeaz s-l primeasc.

Cmpul lungime UDP include antetul de 8 octei i datele. Cmpul sum de


control UDP este optional i stocat ca 0 (zero) dac nu este calculat (o valoare de
adevr 0 rezultat n urma calculelor este memorat ca un ir de bii 1).
Dezactivarea acestuia este o prostie, excepie fcnd cazul n care calitatea
informaiei chiar nu conteaz (de exemplu, transmisia vocal digitalizat).
Merit probabil menionate, n mod explicit, unele dintre lucrurile pe care
UDP-ul nu le face. Nu realizeaz controlul fluxului, controlul erorii, sau
retransmiterea unui segment incorect primit. Toate acestea depind de procesele
utilizatorului. Ceea ce face este s ofere protocolului IP o interfa cu faciliti
adugate de demultiplexare a mai multor procese, folosind porturi. Aceasta este
tot ceea ce face UDP-ul. Pentru aplicaiile care trebuie s aib un control precis
asupra fluxului de pachete, controlului erorii sau cronometrarea, UDP-ul
furnizeaz doar ceea ce a ordonat doctorul.
Un domeniu unde UDP-ul este n mod special util este acela al situaiilor
client-server. Deseori, clientul trimite o cerin scurt server-ului i ateapt
napoi un rspuns scurt. Dac se pierde ori cererea ori rspunsul, clientul poate
pur i simplu s ncerce din nou dup ce a expirat timpul. Nu numai c va fi mai
simplu codul, dar sunt necesare i mai puine mesaje (cte unul n fiecare direcie)
dect la un protocol care solicit o iniializare iniial.
O aplicaie care folosete UDP-ul n acest fel este DNS (Domain Name
System, rom: Sistem de rezolvare de nume). Pe scurt, un program care trebuie s
caute adresele de IP ale unor nume gazd, de exemplu www.cs.berkley.edu ,
poate trimite un pachet UDP, coninnd numele gazd, ctre un server DNS.
Serverul rspunde cu un pachet UDP coninnd adresa de IP a gazdei. Nu este
necesar nici o iniializare n avans i nici o nchidere de sesiune. Doar dou
mesaje traverseaz reeaua.

26. Protocolul de transport n timp real Real-Time Transport Protocol


RPC-ul client-server este un domeniu n care UDP este mult folosit. Un alt
domeniu este Acela al aplicaiilor multimedia n timp real. n particular, avnd n

vedere c radioul pe internet, telefonia pe Internet, muzica la cerere, videoconferinele, video la cerere i alte aplicaii multimedia au devenit mai rspndite,
oamenii au descoperit c fiecare aplicaie a folosit, mai mult sau mai puin, acelai
protocol de transport n timp real. Treptat a devenit clar faptul c un protocol
generic de transport n timp real, pentru aplicaii multimedia, ar fi o idee bun.
Aa a luat natere RTP-ul (Real-time Transport Protocol, rom: Protocol de
transport n timp real).
Poziia RTP-ului n stiva de protocoale este oarecum ciudat. S-a hotrt s
se pun RTP-ul n spaiul utilizator i s se ruleze (n mod normal) peste UDP. El
funcioneaz dup cum urmeaz. Aplicaiile multimedia constau n aplicaii audio,
video, text i posibil alte fluxuri. Acestea sunt trimise bibliotecii RTP, care se afl n
spaiul utilizator mpreun cu aplicaia. Apoi, aceast bibliotec multiplexeaz
fluxurile i le codeaz n pachete RTP, pe care apoi le trimite printr-un soclu. La
cellalt capt al soclului (n nucleul sistemului de operare), pachete UDP sunt
generate i ncapsulate n pachete IP. Dac computer-ul se gsete ntr-o reea
Ethernet, pachetele IP sunt puse apoi n cadre Ethernet, pentru transmisie.
Ca o consecin a acestei proiectri, este cam dificil de spus n ce nivel este
RTP-ul. Cum ruleaz n spaiul utilizator i este legat la programul aplicaie, n mod
cert arat ca un protocol de aplicaie. Pe de alt parte, este un protocol generic
independent de aplicaie, care doar furnizeaz faciliti de transport, astfel nct
arat totodat ca un protocol de transport. Probabil c cea mai potrivit descriere
este aceea c este un protocol de transport care este implementat la nivelul
aplicaie.
Funcia de baz a RTP-ului este multiplexarea mai multor fluxuri de date n
timp real ntr-un singur flux de pachete UDP. Fluxul UDP poate fi transmis ctre o
singur destinaie (unicasting) sau ctre destinaii multiple (multicasting).
Deoarece RTP-ul folosete numai UDP normal, pachetele sale nu sunt tratate n
mod special de ctre rutere, dect dac sunt activate anumite faciliti de
calitatea serviciilor din IP. n particular, nu exist garanii speciale referitoare la
livrare, bruiaj etc. Fiecrui pachet trimis n fluxul RTP i se d un numr cu unu mai
mare dect al predecesorului su. Aceast numerotare permite destinaiei s

stabileasc dac lipsesc unele pachete. Dac un pachet lipsete, cea mai bun
decizie ce poate fi luat de ctre destinaie este de a aproxima valoarea lips prin
interpolare. Retransmiterea nu este o opiune practic avnd n vedere c
pachetul retransmis va ajunge probabil prea trziu pentru a fi util. Ca o
consecin, RTP-ul nu are control al fluxului, control al erorii, nu are confirmri i
nu are mecanism pentru a cere retransmiterea.

Antetul RTP este ilustrat n fig. 6-26. Acesta const din trei cuvinte de 32 bii
i eventual unele extensii. Primul cuvnt conine cmpul Versiune, care este deja
la 2.
Bitul P indic faptul c pachetul a fost extins la un multiplu de 4 octei.
Ultimul octet extins ne spune ci octei au fost adugai. Bitul X indic prezena
unui antet extins. Formatul i semnificaia antetului extins nu sunt definite.
Singurul lucru care este definit este acela c primul cuvnt al extensiei d
lungimea. Aceasta este o cale de scpare pentru orice cerine neprevzute.
Cmpul CC arat cte surse contribuabile sunt prezente, de la 0 la 15. Bitul
M este un bit de marcare specific aplicaiei. Poate fi folosit pentru a marca
nceputul unui cadru video, nceputul unui cuvnt ntr-un canal audio sau altceva
ce aplicaia nelege. Cmpul Tip informaie util indic ce algoritm de codare a
fost folosit (de exemplu 8 bii audio necompresai, MP3, etc). Din moment ce

fiecare pachet transport acest cmp, codarea se poate schimba n timpul


transmisiei.
Numrul de secven este doar un contor care este incrementat pe fiecare
pachet RTP trimis. Este folosit pentru a detecta pachetele pierdute. Amprenta de
timp este stabilit de ctre sursa fluxului pentru a se ti cnd este fcut primul
eantion din pachet. Aceast valoare poate s ajute la reducerea bruiajului la
receptor prin separarea redrii de momentul ajungerii pachetului. Identificatorul
sursei de sincronizare spune crui flux i aparine pachetul. Este metoda utilizat
pentru a multiplexa i demultiplexa mai multe fluxuri de date ntr-un singur flux
de pachete UDP. n sfrit, dac exist, identificatorii sursei care contribuie sunt
folosii cnd n studio exist mixere. n acest caz, mixerul este sursa de
sincronizare i fluxurile, fiind amestecate, apar aici.

27. TCP - Transport Communication Protocol


TCP (Transport Communication Protocol - protocol de comunicaie de nivel
transport) a fost proiectat explicit pentru a asigura un flux sigur de octei de la un
capt la cellalt al conexiunii ntr-o inter-reea nesigur. O inter-reea difer de o
reea propriu-zis prin faptul c diferite pri ale sale pot diferi substanial n
topologie, lrgime de band, ntrzieri, dimensiunea pachetelor i ali parametri.
TCP a fost proiectat s se adapteze n mod dinamic la proprietile inter-reelei i
s fie robust n ceea ce privete mai multe tipuri de defecte.

O conexiune TCP este un flux de octei i nu un flux de mesaje.


Dimensiunile mesajelor nu se conserv de la un capt la cellalt. Atunci cnd o
aplicaie trimite date ctre TCP, TCP-ul le poate expedia imediat sau le poate
reine ntr-un tampon (n scopul colectrii unei cantiti mai mari de informaie pe
care s o expedieze toat odat), dup bunul su plac. Cu toate acestea,
cteodat, aplicaia dorete ca informaia s fie expediat imediat. De exemplu,
s presupunem c un utilizator este conectat la o main de la distan. Dup ce a
fost terminat o linie de comand i s-a tastat Return, este esenial ca linia s fie
imediat expediat ctre maina de la distan i s nu fie memorat pn la
terminarea urmtoarei linii. Pentru a fora expedierea, aplicaia poate folosi
indicatorul PUSH, care i semnaleaz TCP-ului s nu ntrzie procesul de
transmisie.
O ultim caracteristic a serviciului TCP care merit menionat aici const
n informaia urgent. Atunci cnd un utilizator apas tasta DEL sau CTRL-C pentru
a ntrerupe o prelucrare la distan, aflat deja n execuie, aplicaia emitor
plaseaz o informaie de control n fluxul de date i o furnizeaz TCP-ului
mpreun cu indicatorul URGENT. Acest eveniment impune TCP-ului ntreruperea
acumulrii de informaie i transmisia imediat a ntregii informaii disponibile
deja pentru conexiunea respectiv. Atunci cnd informaia urgent este
recepionat la destinaie, aplicaia receptoare este ntrerupt astfel nct,
eliberat de orice alt activitate, aplicaia s poat citi fluxul de date i s poat
regsi informaia urgent. Sfritul informaiei urgente este marcat, astfel nct
aplicaia s tie cnd se termin informaia. nceputul informaiei urgente nu este
marcat. Este sarcina aplicaiei s determine acest nceput.
Protocolul de baz utilizat de ctre entitile TCP este protocolul cu
fereastr glisant. Atunci cnd un emitor transmite un segment, el pornete un
cronometru. Atunci cnd un segment ajunge la destinaie, entitatea TCP
receptoare trimite napoi un segment (cu informaie util, dac aceasta exist sau
fr, n caz contrar) care conine totodat i numrul de secven urmtor pe care
aceasta se ateapt s-l recepioneze. Dac cronometrul emitorului depete o
anumit valoare naintea primirii confirmrii, emitorul retransmite segmentul
neconfirmat.

n fig. 6-29 este prezentat structura unui segment TCP. Fiecare segment
ncepe cu un antet format dintr-o structur fix de 20 de octei. Antetul fix poate
fi urmat de un set de opiuni associate antetului. n continuarea opiunilor, dac
ele exist, pot urma pn la 65.535 - 20 - 20 = 65.495 de octei de date, unde
primul 20 reprezint antetul IP, iar al doilea antetul TCP. Segmente care nu conin
octei de date sunt nu numai permise, dar i utilizate n mod frecvent pentru
confirmri i mesaje de control.

Cmpurile Port surs i Port destinaie identific punctele finale ale


conexiunii. Porturile general cunoscute sunt definite la www.iana.org, dar fiecare
gazd le poate aloca pe celelalte dup cum dorete. Un port formeaz mpreun
cu adresa IP a mainii sale un unic punct de capt (eng.: end point) de 48 de bii.
Conexiunea este identificat de punctele de capt ale sursei i destinaiei.
Cmpurile Numr de secven i Numr de confirmare au semnificaia
funciilor lor uzuale. Trebuie observat c cel din urm indic octetul urmtor
ateptat i nu ultimul octet recepionat n mod corect. Ambele cmpuri au
lungimea de 32 de bii, deoarece ntr-un flux TCP fiecare bit de informaie este
numerotat.
Lungimea antetului TCP indic numrul de cuvinte de 32 de bii care sunt
coninute n antetul TCP. Aceast informaie este util, deoarece cmpul Opiuni

este de lungime variabil, proprietate pe care o transmite astfel i antetului.


Tehnic vorbind, acest cmp indic n realitate nceputul datelor din segment,
msurat n cuvinte de 32 de bii, dar cum acest numr este identic cu lungimea
antetului n cuvinte, efectul este acelai.
Urmeaz un cmp de ase bii care este neutilizat. Faptul c acest cmp a
supravieuit intact mai mult de un sfert de secol este o mrturie despre ct de
bine a fost proiectat TCP-ul. Protocoale mai prost concepute ar fi avut nevoie de
el pentru a corecta erori ale proiectrii iniiale.
Urmeaz acum ase indicatori de cte un bit. URG este poziionat pe 1 dac
Indicatorul Urgent este valid. Indicatorul Urgent este folosit pentru a indica
deplasamentul n octei fa de numrul curent de secven la care se gsete
informaia urgent. O astfel de facilitate ine locul mesajelor de ntrerupere. Aa
cum am menionat deja anterior, aceast facilitate reprezint esena modului n
care emitorul poate transmite un semnal receptorului fr ca TCP-ul n sine s
fie cauza ntreruperii.
Bitul ACK este poziionat pe 1 pentru a indica faptul c Numrul de
confirmare este valid. n cazul n care ACK este poziionat pe 0, segmentul n
discuie nu conine o confirmare i cmpul Numr de confirmare este ignorat.
Bitul PSH indic informaia FORAT. Receptorul este rugat respectuos s
livreze aplicaiei informaia respectiv imediat ce este recepionat i s nu o
memoreze n ateptarea umplerii tampoanelor de comunicaie (lucru care,
altminteri, ar fi fcut din raiuni de eficien).
Bitul RST este folosit pentru a desfiina o conexiune care a devenit
inutilizabil datorit defeciunii unei maini sau oricrui alt motiv. El este de
asemenea utilizat pentru a refuza un segment invalid sau o ncercare de
deschidere a unei conexiuni. n general, recepionarea unui segment avnd acest
bit poziionat indic o problem care trebuie tratat n funcie de context.
Bitul SYN este utilizat pentru stabilirea unei conexiuni. Cererea de
conexiune conine SYN = 1 i ACK = 0 pentru a indica faptul c acel cmp
suplimentar de confirmare nu este utilizat. Rspunsul la o astfel de cerere conine

o confirmare, avnd 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
fcnd distincia ntre cele dou posibiliti.
Bitul FIN este folosit pentru a ncheia o conexiune. El indic faptul c
emitorul nu mai are nici o informaie de transmis. Cu toate acestea, dup
nchiderea conexiunii, un proces poate recepiona n continuare date pe o durat
nedefinit. Ambele segmente, SYN i FIN, conin 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. Cmpul Fereastr indic numrul de octei care pot fi trimii, ncepnd
de la octetul confirmat. Un cmp Fereastr de valoare 0 este perfect legal i spune
c octeii pn la Numr de confirmare - 1 inclusiv au fost recepionai, dar
receptorul dorete cu ardoare o pauz, aa c mulumete frumos, dar pentru
moment nu dorete continuarea transferului. Permisiunea de expediere poate fi
acordat ulterior de ctre receptor prin trimiterea unui segment avnd acelai
Numr de confirmare, dar un cmp Fereastr cu o valoare nenul.
Este de asemenea prevzut o Sum de control, n scopul obinerii unei
fiabiliti extreme. Aceast sum de control este calculat pentru antet,
informaie i pseudo-antetul conceptual prezentat n fig. 6-30. n momentul
calculului, Suma de control TCP este poziionat pe zero, iar cmpul de date este
completat cu un octet suplimentar nul, dac lungimea sa este un numr impar.
Algoritmul de calcul al sumei de control este simplu, el adunnd toate cuvintele
de 16 bii n complement fa de 1 i aplicnd apoi nc o dat complementul fa
de 1 asupra sumei. n acest mod, atunci cnd receptorul aplic acelai calcul
asupra ntregului segment, inclusiv asupra Sumei de control, rezultatul ar trebui
s fie 0.
Pseudo-antetul conine adresele IP ale mainii surs i destinaie, de 32 de
bii fiecare, numrul de protocol pentru TCP (6) i numrul de octei al
segmentului TCP (incluznd i antetul). Prin includerea pseudo-antetului n
calculul sumei de control TCP se pot detecta pachetele care au fost preluate

eronat, dar procednd astfel, este negat nsi ierarhia protocolului, deoarece
adresa IP aparine nivelului IP i nu nivelului TCP.

Cmpul Opiuni a fost proiectat pentru a permite adugarea unor faciliti


suplimentare neacoperite de antetul obinuit. Cea mai important opiune este
aceea care permite fiecrei maini s specifice ncrcarea maxim de informaie
util TCP pe care este dispus s o accepte. Utilizarea segmentelor de dimensiune
mare este mai eficient dect utilizarea segmentelor de dimensiune mica datorit
amortizrii antetului de 20 de octei prin cantitatea mai mare de informaie util.
Cu toate acestea, este posibil ca maini mai puin performante s nu fie capabile
s manevreze segmente foarte mari. n timpul iniializrii conexiunii, fiecare parte
anun dimensiunea maxim acceptat i ateapt de la partener aceeai
informaie. Ctig cel mai mic dintre cele dou numere. Dac o main nu
folosete aceast opiune, cantitatea implicit de informaie util este de 536
octei. Toate mainile din Internet trebuie s accepte segmente de dimensiune
536 + 20 = 556 octei. Dimensiunea maxim a segmentului nu trebuie s fie
aceeai n cele dou direcii.
n TCP conexiunile sunt stabilite utiliznd nelegerea n trei pai. Pentru a
stabili o conexiune, una din pri - s spunem serverul - ateapt n mod pasiv o
cerere de conexiune prin execuia primitivelor LISTEN i ACCEPT, putnd specifica
o surs anume sau nici o surs n mod particular.
Cealalt parte - s spunem clientul - execut o primitiv CONNECT, indicnd
adresa IP i numrul de port la care dorete s se conecteze, dimensiunea maxim

a segmentului TCP pe care este dispus s o accepte i, opional, o informaie


utilizator (de exemplu o parol). Primitiva CONNECT trimite un segment TCP
avnd bitul SYN poziionat i bitul ACK nepoziionat, dup care ateapt un
rspuns.
Atunci cnd sosete la destinaie un segment, entitatea TCP receptoare
verific dac nu cumva exist un proces care a executat LISTEN pe numrul de
port specificat n cmpul Port destinaie. n caz contrar, trimite un rspuns cu bitul
RST poziionat, pentru a refuza conexiunea.
Dac exist vreun proces care ascult la acel port, segmentul TCP
recepionat va fi dirijat ctre procesul respectiv. Acesta poate accepta sau refuza
conexiunea. Dac o accept, trimite napoi expeditorului un segment de
confirmare. n fig. 6-31(a) este reprezentat secvena de segmente TCP
transferate n caz de funcionare normal. De notat c un segment SYN consum
un octet din spaiul numerelor de secven, astfel nct confirmarea s poat fi
fcut fr ambiguiti.

Dei conexiunile TCP sunt bidirecionale, pentru a nelege cum sunt


desfiinate conexiunile, cel mai bine este s ni le imaginm sub forma unei perechi
de legturi unidirecionale. Fiecare legtur unidirecional este eliberat
independent de perechea sa. Pentru eliberarea unei conexiuni, orice partener

poate expedia un segment TCP avnd bitul FIN setat, lucru care indic faptul c
nici o informaie nu mai urmeaz s fie transmis. Atunci cnd FIN-ul este
confirmat, sensul respectiv de comunicare este efectiv oprit pentru noi date. Cu
toate acestea, informaia poate fi transferat n continuare, pentru un timp
nedefinit, n cellalt sens. Conexiunea este desfiinat atunci cnd ambele direcii
au fost oprite. n mod normal, pentru a elibera o conexiune sunt necesare patru
segmente TCP: cte un FIN i un ACK pentru fiecare sens. Cu toate acestea, este
posibil ca primul ACK i cel de-al doilea FIN s fie cuprinse n acelai segment
reducnd astfel numrul total la trei.
Pentru a evita problema celor dou armate, sunt utilizate cronometre. Dac
un rspuns la un FIN nu este recepionat pe durata a cel mult dou cicluri de
maxime de via ale unui pachet, emitorul FIN-ului elibereaz conexiunea.
Cealalt parte va observa n final c nimeni nu mai pare s asculte la cellalt capt
al conexiunii, i va elibera conexiunea n urma expirrii unui interval de timp.
Aceast soluie nu este perfect, dar avnd n vedere faptul c o soluie perfect
este teoretic imposibil, va trebui s ne mulumim cu ce avem. n realitate astfel
de probleme apar foarte rar.
Administrarea ferestrei n TCP nu este direct legat de confirmri, aa cum
se ntmpl la cele mai multe protocoale de nivel legtur de date. De exemplu,
s presupunem c receptorul are un tampon de 4096 octei, aa cum se vede n
fig. 6-34. Dac emitorul transmite un segment de 2048 de octei care este
recepionat corect, receptorul va confirma segmentul. Deoarece acum tamponul
acestuia din urm mai are liberi doar 2048 octei (pn cnd aplicaia terge nite
date din acest tampon), receptorul va anuna o fereastr de 2048 octei ncepnd
de la urmtorul octet ateptat. Acum, emitorul transmite ali 2048 octei, care
sunt confirmai, dar fereastra oferit este 0. Emitorul trebuie s se opreasc
pn cnd procesul aplicaie de pe maina receptoare a ters nite date din
tampon, moment n care TCP poate oferi o fereastr mai mare.
Atunci cnd fereastra este 0, n mod normal emitorul nu poate s
transmit segmente, cu dou excepii. n primul rnd, informaia urgent poate fi
trimis, de exemplu pentru a permite utilizatorului s opreasc procesele rulnd

pe maina de la distan. n al doilea rnd, emitorul poate trimite un segment


de un octet pentru a determina receptorul s renune urmtorul octet ateptat i
dimensiunea ferestrei. Standardul TCP prevede n mod explicit aceast opiune
pentru a preveni interblocarea n cazul n care se ntmpl ca anunarea unei
ferestre s fie vreodat pierdut.
TCP Tranzacional
Mai devreme n acest capitol am analizat apelul de proceduri la distan ca
modalitate de a implementa sistemele client-server. Dac att cererea, ct i
rspunsul sunt suficient de mici nct s se potriveasc n pachete simple i
operaia este idempotent, UDP-ul poate fi uor utilizat. Totui, dac aceste
condiii nu sunt ndeplinite, utilizarea UDP-ului este mai puin atractiv. De
exemplu, dac rspunsul este unul lung, atunci datagramele trebuie sa fie
secveniate i trebuie iniiat un mechanism pentru a retransmite datagramele
pierdute. De fapt, aplicaiei i este cerut s reinventeze TCP-ul.
n mod cert, acest lucru nu este atractiv, dar nici utilizarea TCP-ului n sine
nu este atractiv. Problema este eficiena. Secvena normal a pachetelor pentru
a face un RPC peste TCP este prezentat n fig. 6-40(a). n cel mai bun caz sunt
necesare nou pachete. A se reine c acesta este cazul ideal. n cazul cel mai ru,
cererea clientului i FIN-ul sunt confirmate separat, precum sunt rspunsul serverului i FIN-ul.
ntrebarea care apare imediat este dac exist vreo posibilitate de a
combina eficiena RPC-ului folosind UDP (doar 2 mesaje) cu fiabilitatea TCP-ului.
Rspunsul este: aproape c da. Se poate realiza cu o variant experimental de
TCP numit T/TCP (Transactional TCP, rom: TCP tranzacional).
Ideea principal este aceea de a modifica secvena standard de iniializare a
conexiunii astfel nct s permit, la nivel nalt, transferul de date n timpul
iniializrii. Protocolul T/TCP este prezentat n fig. 6-40(b). Primul pachet al
clientului conine bitul SYN, cererea n sine i FIN-ul. De fapt acesta spune: vreau
s stabilesc o conexiune, aici sunt datele i am terminat Cnd serverul primete
cererea, caut sau calculeaz rspunsul i alege modul n care s rspund.

Dac rspunsul ncape ntr-un pachet, d rspunsul din fig. 6-40(b), care
spune: confirm FIN-ul tu, iat rspunsul, iar eu am terminat. Clientul confirm
apoi FIN-ul server-ului i protocolul ia sfrit n (dup) trei mesaje.
n orice caz, dac rezultatul este mai mare de 1 pachet, serverul are de
asemenea i opiunea de a nu seta bitul FIN, caz n care poate trimite pachete
multiple nainte de a-i nchide direcia.

28. DNS

nc de la ARPANET exista un fiier host.txt care cuprindea toate sistemele


gazd i adresele lor IP. n fiecare noapte, toate gazdele l preluau de la site-ul
unde era pstrat. Pentru o reea format din cteva sute de maini mari, cu
divizarea timpului, aceast abordare era destul de rezonabil.
Totui, atunci cnd la reea au fost conectate mii de staii de lucru, toi i-au
dat seama c aceast abordare nu putea s funcioneze la nesfrit. n primul
rnd dimensiunea fiierului ar deveni prea mare. Cu toate acestea i chiar mai
important, conflictele de nume de sisteme gazd ar aprea n permanen dac
nu ar fi administrate centralizat, ceva de negndit ntr-o reea internaional de
dimensiuni uriae din cauza ncrcrii i a latenei. Pentru a rezolva aceste
probleme, a fost inventat DNS (Domain Name System - Sistemul numelor de
domenii).
Esena DNS-ului const ntr-o schem ierarhic de nume de domenii i a
unui sistem de baze de date distribuite pentru implementarea acestei scheme de
nume. n principal este utilizat pentru a pune n coresponden numele sistemelor
gazd i adresele destinaiilor de e-mail cu adresele IP, dar poate fi utilizat i
pentru alte scopuri.
Foarte pe scurt, DNS este utilizat dup cum urmeaz. Pentru a stabili
corespondena dintre un nume i o adres IP, programul de aplicaie apeleaz o
procedur de bibliotec numit resolver, transferndu-i numele ca parametru.
Resolver-ul trimite un pachet UDP la serverul DNS local, care caut numele i
returneaz adresa IP ctre resolver, care o returneaz apelantului. narmat cu
adresa IP, programul poate stabili o conexiune TCP cu destinaia sau i poate
trimite pachete UDP.
Spaiul de nume DNS
Conceptual, Internetul este divizat n peste 200 domenii de nivel superior,
fiecare domeniu cuprinznd mai multe sisteme gazd. Fiecare domeniu este
partiionat n subdomenii i acestea sunt, la rndul lor, partiionate .a.m.d. Toate
aceste domenii pot fi reprezentate ca un arbore. Frunzele arborelui reprezint
domenii care nu au subdomenii (dar, bineneles, conin sisteme). Un domeniu

frunz poate conine un singur sistem gazd sau poate reprezenta o firm, deci s
conin mii de sisteme gazd.
Domeniile de pe primul nivel se mpart n dou categorii: generice i de ri.
Domeniile generice sunt com (comercial), edu (instituii educaionale), gov
(guvernul federal al SUA), int (organizaii internaionale), mil (forele armate ale
SUA), net (furnizori Internet) i org (organizaii nonprofit). Domeniile de ri includ
o intrare pentru fiecare ar.
Fiecare domeniu este identificat prin calea n arbore de la el la domeniul
(fr nume) rdcin. Componentele sunt separate prin puncte (pronunat dot).
Astfel, departamentul tehnic de la Sun Microsystems ar putea fi eng.sun.com, n
loc de numele n stil UNIX /com/sun/eng. De notat c aceast numire ierarhic
face ca eng.sun.com s nu intre n conflict cu posibila utilizare a lui eng din
eng.yale.edu, care ar putea fi folosit pentru departamentul de limba englez de la
Yale.
Numele de domenii pot fi absolute sau relative. Un nume absolut de
domeniu se termin cu un punct (de exemplu, eng.sun.com.), n timp ce unul
relativ nu. Numele relative trebuie interpretate n context pentru a le determina
nelesul adevrat. n ambele cazuri, un nume de domeniu se refer la un anumit
nod din arbore i la toate nodurile de sub el.
Numele de domenii nu fac distincie ntre litere mici i litere mari, astfel
edu, Edu, sau EDU nseamn acelai lucru. Componentele numelor pot avea o
lungime de cel mult 63 caractere, iar ntreaga cale de nume nu trebuie s
depeasc 255 de caractere.
nregistrri de resurse
Fiecrui domeniu, fie c este un singur calculator gazd, fie un domeniu de
nivel superior, i poate fi asociat o mulime de nregistrri de resurse (resource
records). Pentru un singur sistem gazd, cea mai obinuit nregistrare de resurs
este chiar adresa IP, dar exist multe alte tipuri de nregistrri de resurse. Atunci
cnd un resolver trimite un nume de domeniu ctre un DNS, ceea ce va primi ca
rspuns sunt nregistrrile de resurse asociate acelui nume. Astfel, adevrata

funcie a DNS este s realizeze corespondena dintre numele de domenii i


nregistrrile de resurse.
O nregistrare de resurs este un 5-tuplu. Cu toate c, din raiuni de
eficien, nregistrrile de resurse sunt codificate binar, n majoritatea expunerilor
ele sunt prezentate ca text ASCII, cte o nregistrare de resurs pe linie. Formatul
pe care l vom utiliza este urmtorul: Nume_domeniu Timp_de_via Clas Tip
Valoare
Nume_domeniu (domain_name) precizeaz domeniul cruia i se aplic
aceast nregistrare. n mod normal exist mai multe nregistrri pentru fiecare
domeniu i fiecare copie a bazei de date pstreaz informaii despre mai multe
domenii. Acest cmp este utilizat ca cheie de cutare primar pentru a satisface
cererile. Ordinea nregistrrilor n baza de date nu este semnificativ.
Cmpul Timp_de_via (time_to_live) d o indicaie despre ct de stabil
este nregistrarea. Informaia care este foarte stabil are asigurat o valoare
mare, cum ar fi 86400 (numrul de secunde dintr-o zi). Informaiei instabile i este
atribuit o valoare mic, cum ar fi 60 (1 minut).
Al treilea cmp dintr-o nregistrare de resurs este Clasa (class). Pentru
informaiile legate de Internet este tot timpul IN. Pentru alte informaii pot fi
folosite alte coduri, ns n practic acestea se ntlnesc rar.
Cmpul Tip (type) precizeaz tipul nregistrrii. Cele mai importante tipuri
sunt prezentate n fig. 7-2.

n final ajungem la cmpul Valoare. Acest cmp poate fi un numr, un nume


de domeniu sau un ir ASCII. Semantica depinde de tipul de nregistrare.
Servere de nume
Teoretic, un singur server de nume poate conine ntreaga baz de date
DNS i poate s rspund tuturor cererilor. n practic, acest server poate fi att
de ncrcat, nct s devin de neutilizat. n afar de aceasta, dac se defecteaz,
va fi afectat ntregul Internet.
Pentru a evita problemele asociate cu existena unei singure surse de
informaie, spaiul de nume DNS este mprit n zone care nu se suprapun.
Fiecare zon conine cte o parte a arborelui precum i numele serverelor care
pstreaz informaia autorizat despre acea zon. n mod normal, o zon va avea
un server de nume primar, care preia informaia dintr-un fiier de pe discul
propriu i unul sau mai multe servere de nume secundare, care iau informaiile de
pe serverul primar. Pentru a mbunti fiabilitatea, unele servere pentru o zon
pot fi plasate n afara zonei.
Plasarea limitelor unei zone este la latitudinea administratorului ei. Aceast
decizie este luat n mare parte bazndu-se pe cte servere de nume sunt dorite
i unde s fie plasate.
Atunci cnd un resolver are o cerere referitoare la un nume de domeniu, el
transfer cererea unuia din serverele locale de nume. Dac domeniul cutat este
sub jurisdicia serverului de nume, cum ar fi ai.cs.yale.edu, care este sub
cs.yale.edu, el rentoarce nregistrri de resurse autorizate. O nregistrare
autorizat (authoritative record) este cea care vine de la autoritatea care
administreaz nregistrarea i astfel este ntotdeauna corect. nregistrrile
autorizate se deosebesc de nregistrrile din memoria ascuns, care pot fi
expirate.
Dac, totui, domeniul se afl la distan, iar local nu este disponibil nici o
informaie despre domeniul cerut, atunci serverul de nume trimite un mesaj de
cerere la serverul de nume de pe primul nivel al domeniului solicitat. Apoi se

merge din subdomeniu in subdomeniu pana se gaseste inregistrarea cautata care


e returnata pe traseul invers.
Odat ce aceste nregistrri de resurse ajung napoi la serverul de nume
initial, ele vor fi depuse n memoria ascuns, pentru a fi folosite ulterior. Totui,
aceast informaie nu este autorizat, deoarece orice schimbare fcut la un
domeniu nu se va propaga spre toate serverele care au folosit-o. Din acest motiv
intrrile n memoria ascuns nu ar trebui s aib via prea lung. Acesta este
motivul pentru care cmpul Timp_de_via este inclus n fiecare nregistrare de
resurs. El informeaz serverele de nume aflate la distan ct timp s menin
nregistrrile n memoria ascuns. Dac o anumit main are de ani de zile
aceeai adres IP, aceast informaie ar putea fi pstrat timp de o zi. Pentru
informaii mai volatile este mai sigur ca nregistrrile s fie eliminate dup cteva
secunde sau un minut.
De menionat c metoda de interogare descris aici este cunoscut ca
metoda de interogare recursiva (recursive query), deoarece fiecare server care
nu are informaia cerut o caut n alt parte i raporteaz. Este posibil i o alt
variant. n acest caz, atunci cnd o cerere nu poate fi rezolvat local, cererea
eueaz, dar este ntors numele urmtorului server de pe calea ce trebuie
ncercat. Unele servere nu implementeaz interogarea recursiv i ntorc
ntotdeauna numele urmtorului server la care s se ncerce.
De asemenea merit menionat faptul c atunci cnd un client DNS nu
reuete s primeasc un rspuns nainte de expirarea timpului de cutare, data
viitoare va ncerca un alt server. Se presupune c serverul este probabil
nefuncional, nu c cererea sau rspunsul s-au pierdut.

29. Posta electronica


Arhitectur i servicii
n aceast seciune vom furniza o prezentare de ansamblu a ceea ce pot
face sistemele de pot electronic i cum sunt ele organizate. Aceste sisteme
constau de obicei din dou subsisteme: agenii-utilizator, care permit utilizatorilor
s citeasc i s trimit scrisori prin pota electronic i agenii de transfer de
mesaje, care transport mesajele de la surs la destinaie. Agenii-utilizator sunt
programe locale, care furnizeaz o metod de a interaciona cu sistemul de e-mail
bazat pe comenzi, meniuri sau grafic. Agenii de transfer de mesaje sunt, de
regul, demoni de sistem, adic procese care se execut n fundal. Sarcina lor este
s transfere mesajele prin sistem.
n general, sistemele de pot electronic pun la dispoziie cinci funcii de
baz. S aruncm o privire asupra lor.
Compunerea se refer la procesul de creare a mesajelor i a rspunsurilor.
Dei pentru corpul mesajului poate fi folosit orice editor de texte, sistemul nsui
poate acorda asisten la adresare i la completarea numeroaselor cmpuri antet
ataate fiecrui mesaj. De exemplu, cnd se rspunde la un mesaj, sistemul poate
extrage adresa iniiatorului din mesajul primit i o poate insera automat n locul
potrivit din cadrul rspunsului.
Transferul se refer la deplasarea mesajului de la autor la receptor. n
mare, aceasta necesit stabilirea unei conexiuni la destinaa, sau la o main
intermediar, emiterea mesajului i eliberarea conexiunii. Sistemul de pot ar
trebui s fac acest lucru singur, fr a deranja utilizatorul.

Raportarea se refer la informarea iniiatorului despre ce s-a ntmplat cu


mesajul. A fost livrat? A fost respins? A fost pierdut? Exist numeroase aplicaii n
care confirmarea livrrii este important i poate avea chiar semnificaie juridic.
Afiarea mesajelor primite este necesar pentru ca utilizatorii s-i poat
citi pota. Uneori sunt necesare conversii sau trebuie apelat un program de
vizualizare special; de exemplu, dac mesajul este un fiier PostScript, sau voce
digitizat. Se mai ncearc uneori i conversii simple i formatri.
Dispoziia este pasul final i se refer la ceea ce face receptorul cu mesajul,
dup ce l-a primit. Posibilitile includ eliminarea sa nainte de a-l citi, aruncarea
sa dup citire, salvarea sa .a.m.d. Ar trebui de asemenea s fie posibil regsirea
i recitirea de mesaje deja salvate, trimiterea lor mai departe, sau procesarea lor
n alte moduri.
Majoritatea sistemelor permit utilizatorilor s-i creeze cutii potale
(mailboxes) pentru a pstra mesajele sosite. Sunt necesare comenzi de creare i
distrugere a cutiilor potale, de inspectare a coninutului acestora, de inserare i
de tergere de mesaje din cutii potale .a.m.d.
Managerii de companii au adesea nevoie s trimit un acelai mesaj fiecrui
subordonat, client sau furnizor. Acest lucru d natere ideii de list de pot
(mailing list), care este o list de adrese de pot electronic. Cnd un mesaj este
trimis la lista de pot, copii identice ale sale sunt expediate fiecruia dintre cei de
pe list.
Alte caracteristici evoluate sunt copii la indigo, pot de prioritate mare,
pot secret (criptat), receptori alternativi, dac cel primar nu este disponibil, i
posibilitatea de a permite secretarelor s se ocupe de pota primit de efii lor.
O idee fundamental n toate sistemele moderne de e-mail este distincia
dintre plic i coninutul su. Plicul ncapsuleaz mesajul. Conine toat informaia
necesar pentru transportul mesajului, cum ar fi destinaia, adresa, prioritatea,
nivelul de securitate, toate acestea fiind distincte de mesajul n sine.

Agenii de transfer de mesaje folosesc plicul pentru rutare (dirijare), aa


cum face i oficiul potal. Mesajul din interiorul plicului conine dou pri:
antetul i corpul. Antetul conine informaie de control pentru agenii utilizator.
Corpul mesajului se adreseaz n ntregime utilizatorului uman.

Trimiterea potei electronice


Pentru a trimite un mesaj prin pota electronic, un utilizator trebuie s
furnizeze mesajul, adresa destinaie, i eventual ali civa parametri. Mesajul
poate fi produs cu un editor de texte de sine stttor, cu un program de procesare
de text sau, eventual, cu un editor de texte specializat, construit n interiorul
agentului utilizator. Adresa de destinaie trebuie s fie ntr-un format cu care
agentul utilizator s poat lucra. Muli ageni-utilizator solicit adrese de forma
utilizator@adres-dns.
Majoritatea sistemelor de e-mail accept liste de pot, astfel c un
utilizator poate trimite, cu o singur comand, un acelai mesaj tuturor
persoanelor dintr-o list. Dac lista de pot este pstrat local, agentul-utilizator
poate pur i simplu s trimit cte un mesaj separat fiecruia dintre receptorii
dorii. Dac lista este pstrat la distan, atunci mesajele vor fi expandate acolo.
Citirea potei electronice
n mod obinuit, cnd este lansat un agent-utilizator, nainte de a afia ceva
pe ecran, el se va uita n cutia potal a utilizatorului dup mesajele care sosesc.
Apoi poate anuna numrul de mesaje din cutie, sau poate afia pentru fiecare
mesaj cte un rezumat de o linie, pentru ca apoi s atepte o comand.
Continutul unei cutii postale poate avea mai multe campuri: primul cmp
reprezint numrul mesajului. Al doilea cmp, Marcaje, poate conine un K,
nsemnnd c mesajul nu este nou, dar a fost citit anterior i pstrat n cutia
potal; un A, nsemnnd c deja s-a rspuns la acest mesaj; i/sau un F,
nsemnnd c mesajul a fost trimis mai departe altcuiva. Sunt de asemenea

posibile i alte marcaje. Al treilea cmp specific lungimea mesajului i al patrulea


spune cine a trimis mesajul. Din moment ce el este pur i simplu extras din mesaj,
acest cmp poate conine prenume, nume complete, iniiale, nume de cont, sau
orice altceva i-a ales transmitorul s pun. n sfrit, cmpul Subiect specific
despre ce este mesajul, ntr-un scurt rezumat. Persoanele care omit s includ un
camp Subiect adesea descoper c rspunsurile la scrisorile lor tind s nu obin
prioritate maxim.
Formatele mesajelor
Mesajele constau dintr-un plic simplu (descris n RFC 821), un numr de
cmpuri antet, o linie goal i apoi corpul mesajului. Fiecare cmp antet se
compune (din punct de vedere logic) dintr-o singur linie de text ASCII, coninnd
numele cmpului, dou puncte, i, pentru majoritatea cmpurilor, o valoare.
La o utilizare normal, agentul-utilizator construiete un mesaj i l
transmite agentului de transfer de mesaje, care apoi folosete unele dintre
cmpurile antet pentru a construi plicul efectiv, o combinaie oarecum demodat
de mesaj i plic.
Principalele cmpuri antet, legate de transportul de mesaje: Cmpul To:
ofer adresa DNS a receptorului primar. Este permis de asemenea existena de
receptori multipli. Cmpul Cc: d adresa oricrui receptor secundar. n termenii
livrrii, nu este nici o diferen ntre un receptor primar i unul secundar. Este n
ntregime o deosebire psihologic, ce poate fi important pentru persoanele
implicate, dar este neimportant pentru sistemul de pot. Cmpul Bcc: (Blind
carbon copy - copie confidenial la indigo) este la fel ca Cc:, cu excepia c
aceast linie este tears din toate copiile trimise la receptorii primari i
secundari. Acest element permite utilizatorilor s trimit copii unei a treia
categorii de receptori, fr ca cei primari i secundari s tie acest lucru.
Urmtoarele dou cmpuri, From: i Sender:, precizeaz cine a scris i respectiv
cine a trimis mesajul. Acestea pot s nu fie identice.
O linie coninnd Received: este adugat de fiecare agent de transfer de
mesaje de pe traseu. Linia conine identitatea agentului, data i momentul de

timp la care a fost primit mesajul i alte informaii care pot fi utilizate pentru
gsirea defeciunilor n sistemul de dirijare.
Cmpul Return-Path: este adugat de agentul final de transfer de mesaje i
are n intenie s indice cum se ajunge napoi la transmitor. n teorie, aceast
informaie poate fi adunat din toate antetele Received: (cu excepia numelui
cutiei potale a transmitorului), dar rareori este completat aa i de obicei
conine chiar adresa transmitorului. Cmpul Reply-To: este uneori utilizat cnd
nici persoana care a compus mesajul, nici cea care l-a trimis nu vrea s vad
rspunsul.
MIME - Multipurpose Internet Mail Extensions
Ideea fundamental a MIME este s continue s foloseasc formatul RFC
822, dar s adauge structur corpului mesajului i s defineasc reguli de
codificare pentru mesajele non-ASCII. Deoarece respect RFC 822, mesajele MIME
pot fi trimise utiliznd programele i protocoalele de pot existente. Tot ceea ce
trebuie modificat sunt programele de transmitere i recepie, pe care utilizatorii le
pot face ei nii.
MIME definete cinci noi antete de mesaje, aa cum se arat n fig. 7-11.

Transferul mesajelor
SMTP Simple Mail Transfer Protocol(Protocol simplu de transfer de
pot)
n cadrul Internetului pota electronic este livrat prin stabilirea de ctre
maina surs a unei conexiuni TCP la portul 25 al mainii de destinaie. La acest

port se afl un demon de e-mail care tie SMTP (Simple Mail Transfer Protocol).
Acest demon accept conexiunile i copiaz mesajele de la ele n cutiile potale
corespunztoare. Dac mesajul nu poate fi livrat, se returneaz transmitorului
un raport de eroare coninnd prima parte a mesajului nelivrat.
SMTP este un protocol simplu de tip ASCII. Dup stabilirea conexiunii TCP la
portul 25, maina transmitoare, opernd n calitate de client, ateapt ca
maina receptoare, opernd ca server, s vorbeasc prima. Serverul ncepe prin a
trimite o linie de text, declarndu-i identitatea i spunnd dac este pregtit sau
nu s primeasc mesaje. Dac nu este, clienii elibereaz conexiunea i ncearc
din nou mai trziu.
Dac serverul este dispus s primeasc e-mail, clientul anun de la cine
vine scrisoarea i cui i este adresat. Dac un asemenea receptor exist la
destinaie, serverul i acord clientului permisiunea s trimit mesajul. Apoi
clientul trimite mesajul i serverul l confirm. n general nu este necesar
ataarea unei sume de control deoarece TCP furnizeaz un flux sigur de octei.
Dac mai exist i alte mesaje, acestea sunt trimise tot acum. Cnd schimbul de
mesaje, n ambele direcii, s-a ncheiat, conexiunea este eliberat.
Chiar dac protocolul SMTP este bine definit, mai pot aprea cteva
probleme. O problem este legat de lungimea mesajelor. Unele implementri mai
vechi nu pot s lucreze cu mesaje mai mari de 64KB. O alt problem se refer la
expirri de timp (timeout). Dac acestea difer pentru server i client, unul din ei
poate renuna, n timp ce cellalt este nc ocupat, ntrerupnd conexiunea n
mod neateptat. n sfrit, n unele situaii, pot fi lansate schimburi infinite de
mesaje.
Pentru a atinge cteva dintre aceste probleme, n RFC 2821 s-a definit
protocolul SMTP extins (ESMTP). Clienii care doresc s-l utilizeze trebuie s
trimit iniial un mesaj EHLO n loc de HELO. Dac acesta este rejectat, atunci
serverul este unul standard de tip SMTP i clientul va trebui s se comporte n
modul obinuit. Dac EHLO este acceptat, nseamn ca sunt permise noile
comenzi i noii parametri.

Livrarea final
Pn acum, am presupus c toi utilizatorii lucreaz pe maini capabile s
trimit i s primeasc e-mail. Dup cum am vzut, e-mail-ul este livrat prin
stabilirea unei conexiuni TCP ntre expeditor i destinatar i apoi prin trimiterea email-ului prin ea. Acest model a funcionat bine zeci de ani, att timp ct toate
calculatoarele din ARPANET (i mai trziu din Internet) erau, de fapt, conectate la
reea i gata s accepte conexiuni TCP.
Totui, odat cu apariia celor care acceseaz Internet-ul folosind un
modem cu care se conecteaz la ISP-ul lor, acest lucru nu mai ine. Problema este
urmtoarea: Ce se ntmpl cnd Elinor vrea s-i trimit Carolynei un e-mail i
Carolyn nu este conectat la reea n acel moment? Elinor nu va putea s
stabileasc o conexiune TCP cu Carolyn i astfel, nu va putea utiliza protocolul
SMTP.
O soluie este ca agentul de transfer de mesaje de pe o main ISP s
accepte e-mail-ul pentru clienii si i s-l stocheze n cutiile lor potale pe o
main a ISP-ului. Din moment ce acest agent poate fi conectat la reea tot
timpul, se poate trimite e-mail 24 de ore pe zi.
POP3
Din nefericire, aceast soluie d natere altei probleme: cum i ia
utilizatorul e-mail-ul de la agentul de transfer de mesaje al ISP-ului? Soluia
acestei probleme este crearea unui alt protocol care s permit agenilor de
transfer mesaje (aflai pe calculatoarele clienilor) s contacteze agentul de
transfer mesaje (de pe o main ISP) i s fac posibil copierea e-mail-ului de la
ISP la utilizator. Un astfel de protocol este POP3 (Post Office Protocol Version 3Protocol de pot, versiunea 3).
POP3 ncepe cnd utilizatorul pornete programul cititor de pot (mail
reader). Acesta sun la ISP (n caz c nu exist deja o conexiune) i stabilete o
conexiune TCP cu agentul de transfer de mesaje, prin portul 110. Odat ce
conexiunea a fost stabilit, protocolul POP3 trece succesiv prin urmtoarele trei
stri:

1. Autorizare se refer la admiterea utilizatorului n sistem (login).


2. Tranzacionare trateaz colectarea e-mail-urilor i marcarea lor pentru
tergere din cutia potal.
3. Actializare se ocup cu tergerea efectiv a mesajelor.
Dei este adevrat c protocolul POP3 are abilitatea de a descrca un anumit
mesaj sau un anumit grup de mesaje pstrndu-le pe server, cele mai multe
programe de e-mail descarc tot i golesc cutia potal. Ca urmare, practic singura
copie rmne nregistrat pe discul utilizatorului. Dac acesta se stric, toate email-urile pot fi pierdute definitiv.

IMAP
Pentru un utilizator cu un singur cont de e-mail, la un singur ISP, care este tot
timpul accesat de la un singur PC, POP3 este bun i larg folosit datorit simplitii
i robusteii sale. Totui, exist n industria calculatoarelor un adevr bine
nrdcinat, acela c imediat ce un lucru funcioneaz bine, cineva va ncepe s
cear mai multe faciliti (i s aib mai multe probleme). Asta s-a ntmplat i cu
e-mail-ul. De exemplu, mult lume are un singur cont de e-mail la serviciu sau la
coal i vrea sl acceseze de pe PC-ul de acas, de pe calculatorul portabil n
cltoriile de afaceri i din Internet caf-uri n vacane. Cu toate c POP3 permite
asta, din moment ce n mod normal el descarc toate mesajele la fiecare
conectare, rezultatul const n rspndirea e-mail-ului utilizatorului pe mai multe
maini, mai mult sau mai puin la ntmplare, unele dintre ele nefiind ale
utilizatorului.
Acest dezavantaj a dat natere unei alternative a protocolului de livrare final,
IMAP (Internet Message Access Protocol Protocol pentru accesul mesajelor n
Internet). Spre deosebire de POP3, care n mod normal presupune c utilizatorul
i va goli csua potal la fiecare conectare i va lucra deconectat de la reea
(off-line) dup aceea, IMAP presupune c tot email-ul va rmne pe server orict
de mult, n mai multe csue potale.

IMAP prevede mecanisme extinse pentru citirea mesajelor sau chiar a prilor
de mesaje, o facilitate folositoare cnd se utilizeaz un modem ncet pentru
citirea prii textuale a unui mesaj cu mai multe pri audio i video de mari
dimensiuni. ntruct premisa de folosire este c mesajele nu vor fi transferate pe
calculatorul utilizatorului n vederea stocrii permanente, IMAP asigur
mecanisme pentru crearea, distrugerea i manipularea mai multor cutii potale pe
server. Astfel, un utilizator poate pstra o cutie potal pentru fiecare
corespondent i poate muta aici mesajele din inbox dup ce acestea au fost citite.
IMAP are multe faciliti, ca de exemplu posibilitatea de a se referi la un mesaj
nu prin numrul de sosire, ca n fig. 7-8, ci utiliznd atribute (de exemplu, d-mi
primul mesaj de la Bobbie). Spre deosebire de POP3, IMAP poate de asemenea s
accepte att expedierea mesajelor spre destinaie ct i livrarea mesajelor venite.
Stilul general al protocolului IMAP este similar cu cel al POP3-ului, cu excepia
faptului c exist zeci de comenzi. Serverul IMAP ascult pe portul 143. n fig. 7-17
este prezentat o comparaie ntre POP3 i IMAP. E bine de notat, totui, c nu
toate ISP-urile ofer ambele protocoale i c nu toate programele de e-mail le
suport pe amndou. Aadar, atunci cnd alegei un program de e-mail, este
important s aflai ce protocoale suport i s v asigurai c ISP-ul ofer cel puin
unul din ele.

30. HTTP HyperText Transfer Protocol


Conexiuni
Modul uzual prin care un program de navigare contacteaz un server este
de a stabili o conexiune TCP pe portul 80 pe maina serverului, dei aceast
procedur nu este cerut formal. Avantajul de a folosi TCP este c nici programele
de navigare i nici serverele nu trebuie sa se preocupe de mesajele pierdute,
mesajele duplicate, mesajele lungi, sau mesajele de confirmare. Toate aceste
aspect sunt tratate de implementarea TCP.
n HTTP 1.0, dup ce conexiunea era stabilit, o singur cerere era transmis i un
singur rspuns era primit napoi. Apoi conexiunea TCP era eliberat. ntr-o lume n
care pagina tipic Web consta n ntregime din text HTML, aceast metod era
adecvat. n civa ani ns, o pagin medie Web coninea un numr mare de
iconie, imagini i alte lucruri plcute vederii, astfel c stabilirea unei conexiuni
TCP pentru a prelua o singur iconi a devenit un mod foarte costisitor de a
opera.
Aceast observaie a dus la apariia HTTP 1.1, care suport conexiuni persistente.
Cu ele, este posibil stabilirea unei conexiuni TCP, trimiterea unei cereri i

obinerea unui rspuns, apoi trimiterea unor cereri adiionale i obinerea de


rspunsuri adiionale. Prin distribuirea pornirii i eliberrii unei conexiuni TCP
peste mai multe cereri, suprancrcarea relativ datorat TCP-ului este mult mai
mic pe fiecare cerere. Este de asemenea posibil trimiterea cererilor prin
mecanismul pipeline, adic trimiterea cererii 2 nainte ca rspunsul la cererea 1 s
fi sosit.
Metode
Cu toate c HTTP a fost proiectat pentru utilizarea n Web, el a fost creat
intenionat mai general dect era necesar n perspectiva aplicaiilor orientate pe
obiecte. Pentru aceasta sunt suportate operaiile, denumite metode, care fac mai
mult dect cele care doar cer o pagin Web. Aceast consideraie general a
permis apariia SOAP. Fiecare cerere const din una sau mai multe linii de text
ASCII, n care primul cuvnt din prima linie este numele metodei cerute. Metodele
incorporate sunt listate n fig. 7-41. Pentru accesarea unor obiecte generale,
metode adiionale specifice obiectelor pot fi de asemenea disponibile.

Metoda GET cere serverului s trimit pagina (prin care noi nelegem
obiect, n cel mai general caz, dar n practic de obicei doar un fiier). Pagina este
codat corespunztor n MIME. Marea majoritate a cererilor ctre servere Web
sunt metode GET. Forma uzual a metodei GET este: GET fiier HTTP-1.1, unde
fiier denumete resursa (fiierul) ce va fi adus, i 1.1 este versiunea de protocol
utilizat.

Metoda HEAD cere doar antetul mesajului, fr s cear i pagina propriuzis. Aceast metod poate s fie utilizat pentru a afla cnd s-a fcut ultima
modificare, pentru a obine informaii pentru indexare, sau numai pentru a
verifica corectitudinea unui URL.
Metoda PUT este inversa metodei GET: n loc s citeasc o pagin, o scrie.
Aceast metod permite crearea unei colecii de pagini de Web pe un server la
distan. Corpul cererii conine pagina. Pagina poate s fie codificat utiliznd
MIME, caz n care liniile care urmeaz dup PUT pot include Content-Type i
antete de autentificare, pentru a demonstra c ntr-adevr cel care face
cerereaare dreptul de a realiza operaia cerut.
Similar metodei PUT este metoda POST. i ea conine un URL, dar n loc s
nlocuiasc date existente, noile date se vor aduga ntr-un mod generalizat. De
exemplu, se poate transmite un mesaj la un grup de tiri sau aduga un fiier la un
sistem de informare n reea. n practic, nici PUT i nici POST nu sunt utilizate
prea mult.
Metoda DELETE realizeaz ce era de ateptat: tergerea unei pagini. Ca i la
PUT, autentificarea i drepturile de acces joac aici un rol important. Nu exist nici
o garanie asupra succesului operaiei DELETE, deoarece chiar dac serverul
dorete s execute tergerea, fiierul poate s aib attribute care s interzic
serverului HTTP s l modifice sau s l tearg.
Metoda TRACE este pentru verificarea corectitudinii. Ea cere serverului s
trimit napoi cererea. Aceast metod este util cnd cererile nu sunt procesate
corect i clientul vrea s tie ce fel de cerere a ajuns de fapt la server.
Metoda CONNECT nu este utilizat n prezent. Este rezervat pentru
utilizri ulterioare.
Metoda OPTIONS asigur o modalitate pentru client de a interoga serverul
despre proprietile acestuia sau despre cele ale unui anumit fiier.
Fiecare cerere obine un rspuns ce const din linia de stare i posibile
informaii suplimentare (de exemplu, o parte sau toat pagina Web). Linia de

stare conine un cod de stare de trei cifre, indicnd dac cererea a fost satisfcut
i dac nu, cauza. Prima cifr este utilizat pentru mprirea rspunsurilor n cinci
mari grupuri, ca n fig. 7-42.

Antete de mesaje
Linia de cerere (de exemplu linia cu metoda GET) poate fi urmat de linii
adiionale cu mai multe informaii. Acestea poart numele de antete de cerere.
Aceast informaie poate fi comparat cu parametrii unui apel de procedur.
Rspunsurile pot avea de asemenea antete de rspuns. Anumite antete pot fi
folosite n orice sens. O selecie a celor mai importante este dat n fig. 7-43.

31. FTP
Descriere :
Standard pentru transfer de fisiere (RFC959). Precede TCP/IP, dar a fost adaptat
ulterior la TCP/IP. Este un protocol general, cu urmatoarele caracterisitci:
Independent de SO si de hardware
Transfera fisiere oarecare
Gestioneaza drepturile asupra fisierelor si restrictiile de acces
- Poate rula fie interactiv fie automat.
Protocol permite actiuni de:
Listarea continutului unui director
Modificarea directorului curent
Aducerea unui fisier
Trimiterea unui fisier

Modelul FTP

Modelul FTP foloseste doua conexiuni: una de control si una de date. PI


Protocol Interpreter implementeaza protocolul FTP, iar DTP - Data Transfer
Process DTP realizeaza transferul. User PI (Protocol Interpreter) initiaza
conexiunea de control (lucreaza dupa protocolul telnet). Dupa stabilirea ei,
comenzile generate de User PI sunt transmise serverului, care transmite
raspunsuri standard generate de Server PI.
Comenzile FTP specifica parametrii pentru conexiunea de date, cum ar fi
portul de date, modul de transfer (stream, block, compressed), tipul reprezentarii

(text, binar etc.). De regula, User DTP (User Data Transfer Protocol) trebuie sa
asigure un "listen" la portul desemnat. Acest port poate fi in acelasi sistem cu
User PI sau in alt sistem unde se asigura ascultarea. Conexiunea de date poate fi
folosita pentru transmitere si receptie simultana de date.
Cateva Comenzi / Raspunsuri FTP
Comanda Descriere
ABOR Abort proces de conexiune de date
ALLO <bytes> Aloca spatiu fisier pe server
CWD <dir path> Schimba director de lucru pe server
DELE <filename> Sterge fisier specificat, pe server
MODE <mode> Mod de transfer (S=stream, B=block, C=compressed).
MKD <directory> Creaza director specificat, pe server
QUIT De-logheaza de pe server
TYPE <data type> Tip date (A-ASCII, E-EBCDIC, B-binar)
USER <username> username pentru login
PASS <password> parola pentru login
Raspuns Descriere
150 Deschide conexiunea
200 OK
220 Serviciu pregatit
221 De-logare retea
226 Inchide conexiunea de date
250 Actiune terminata
Conexiuni :
Conexiunea de date
Serverul la distanta accepta stabilirea unei conexiuni de control de la client, dupa
care se stabileste conexiunea de date. Se pot folosi doua metode:
- Activa serverul se conecteaza la client, clientul specifica o adresa si un
port;
serverul initiaza conexiunea (ex. port 1931, adresa 192.168.1.2)
Client: PORT 192,168,1,2,7,139
Server: 200 PORT command successful.
- Pasiva clientul initiaza conexiunea, clientul cere serverului sa asculte la o
adresa si un port (care nu este portul sau standard); serverul comunica
adresa si portul (ex. port 4023, adresa 172.16.62.36);

Client: PASV
Server: Entering Passive Mode (172,16,62,36,133,111)
Interactiune server-server
Un User PI poate stabili conexiuni de control pentru a face transferul de date intre
alte doua servere, nici unul local. Mecanismul se numeste transfer "third party"
sau transfer "proxy". Utilizatorul din C poate initia o conexiune de control primara
cu serverul A si o conexiune de control secundara cu serverul B. Apoi, utilizatorul
din C stabileste o conexiune de date intre A si B, prin care se transfera datele
direct intre cele doua servere. Controlul se face prin intermediul lui C care joaca
rolul de intermediar. Cand trebuie transferate date intre A si B, User PI din C
seteaza conexiunile de control si apoi transmite lui A o comanda de conectare
pasiva PASV prin care-i spune sa asculte la portul sau de date (nu sa initieze o
conexiune). Cand User PI primeste o confirmare la PASV (care specifica identitatea
lui A si portul la care asculta), User PI din C transmite catre B portul lui A intr-o
comanda PORT si primeste de la B un raspuns. User PI din C transmite comenzile
de transfer de date catre A si B. B initiaza conexiunea si transferul incepe.

32. Algoritmi cu cheie secreta


DES Data Encryption Standard

O prezentare general a DES este fcut n fig. 8-7(a). Textul clar este
criptat n blocuri de cte 64 de bii, rezultnd blocuri de 64 de bii de text cifrat.
Algoritmul, care este parametrizat cu o cheie de 56 de bii, are 19 runde distincte.
Prima rund este o transpoziie independent de cheie, aplicat asupra textului
clar de 64 de bii. Ultima rund este exact inversa acestei transpoziii. Penultima
rund schimb cei mai din stnga 32 de bii cu cei mai din dreapta 32 de bii. Cele
16 runde rmase sunt funcional identice dar sunt parametrizate de funcii de
cheie diferite. Algoritmul a fost proiectat pentru a permite ca decriptarea s se
fac cu aceeai cheie ca i criptarea, o proprietate necesar n orice algoritm cu
cheie secret. Paii sunt parcuri n ordine invers.
Funcionarea unuia dintre paii intermediari este ilustrat n fig. 8-7(b).
Fiecare rund ia dou intrri de 32 de bii i produce dou ieiri de 32 de bii.
Ieirea din stnga este o simpl copie a intrrii din dreapta. Ieirea din dreapta
rezult n urma unui SAU exclusiv (XOR) bit cu bit ntre intrarea din stnga i o
funcie depinznd de intrarea din dreapta i de o cheie pentru aceast rund, Ki.
Toat complexitatea rezid n aceast funcie.

Funcia const din patru pai, parcuri n secven. n primul rnd, este
construit un numr de 48 de bii, E, prin expandarea celor 32 de bii ai lui Ri-1 n
concordan cu o regul de transpoziie fix i de duplicare. n al doilea rnd, E i
Ki sunt combinate prin XOR. Ieirea este apoi mprit n opt grupuri de cte 6
bii i fiecare dintre acestea este introdus ntr-o cutie S diferit. Fiecare dintre cele
64 de intrri posibile ntr-o cutie S este pus n coresponden cu o ieire de 4 bii.
n final, aceti 8 4 bii sunt trecui printr-o cutie P.
n fiecare din cele 16 iteraii este folosit o cheie diferit. nainte de
nceperea algoritmului este aplicat o transpoziie de 56 de bii asupra cheii. Chiar
nainte de nceperea fiecrei iteraii, cheia este partiionat n dou uniti de
cte 28 de bii, fiecare dintre ele este rotit la stnga cu un numr de bii
depinznd de numrul iteraiei. Ki este derivat din aceast cheie rotit prin
aplicarea unei transpoziii pe 56 de bii asupra ei. La fiecare rund este extras i
permutat o alt submulime de 48 de bii din cei 56 de bii.

Triplu DES
nc din 1979, IBM a realizat c lungimea cheii DES era prea mic i a
conceput un mod de a o crete efectiv, folosind tripla criptare (Tuchman, 1979).
Metoda aleas, care de atunci a fost ncorporat n Standardul Internaional 8732,
este ilustrat n fig. 8-8. Aici sunt folosite dou chei i trei runde.
n prima rund textul clar este n mod obinuit criptat cu K1. n a doua
rund, este rulat DES n mod de decriptare, folosind cheia K2. n final, este
efectuat o alt criptare cu K1.

Aceast proiectarea d natere imediat la dou ntrebri. Prima, de ce sunt


folosite doar dou chei n loc de trei? A doua, de ce este folosit succesiunea de
transformri EDE (eng.: Encrypt Decrypt Encrypt, rom.: Criptare Decriptare
Criptare), n loc de EEE (eng.: Encrypt Encrypt Encrypt, rom.: Criptare Criptare
Criptare)? Motivul pentru care sunt utilizate dou chei este Acela c chiar i cei
mai paranoici criptografi admit c 112 bii sunt suficieni pentru aplicaiile
comerciale de rutin, la momentul actual. A extinde la 168 de bii nseamn a
aduga o suprancrcare inutil pentru gestiunea i transportul unei alte chei cu
un ctig real redus.
Motivul pentru criptare, decriptare i apoi iar criptare este compatibilitatea
cu produsele existente ce folosesc sisteme DES cu o singur cheie. Att funcia de
criptare ct i cea de decriptare sunt corespondene ntre mulimi de numere pe
64 de bii. Din punct de vedere criptografic, cele dou corespondene sunt la fel
de puternice. Totui, folosind EDE n locul EEE, un calculator ce utilizeaz tripla
criptare poate comunica cu unul ce folosete criptarea simpl, folosind K1=K2.

AES Advanced Encryption Standard (Rijndael)


Rijndael permite lungimi de chei i mrimi de blocuri de la 128 de bii la 256
de bii n pai de cte 32 bii. Lungimea cheii i lungimea blocului pot fi alese n
mod independent. Cu toate acestea, AES specific faptul c mrimea blocului
trebuie s fie de 128 de bii i lungimea cheii trebuie s fie de 128, 192, sau 256
de bii. E ndoielnic c cineva va folosi vreodat cheile de 192 de bii, astfel c de
fapt, AES are dou variante: bloc de 128 de bii cu cheie de 128 de bii i bloc de
128 de bii cu cheie de 256 de bii.
Ca i DES, Rijndael folosete substituie i permutri, ca i runde multiple.
Numrul de runde depinde de mrimea cheii i de mrimea blocului, fiind 10
pentru o cheie de 128 de bii cu blocuri de 128 bii i mrindu-se pn la 14
pentru cheia cu cea mai mare dimensiune i blocul cu cea mai mare dimensiune.
Totui, spre deosebire de DES, toate operaiile sunt la nivel de octet, pentru a
permite implementri eficiente hardware i software. Codul este dat n fig. 8-9.

Funcia rijndael are trei parametri. Acetia sunt: plaintext, un vector de 16


octei coninnd datele de intrare, ciphertext, un vector de 16 octei n care va fi
introdus rezultatul cifrat, i key, cheia de 16 octei. Pe durata calculelor, starea
curent a datelor e pstrat ntr-un vector de octei, state, a crui mrime este
NROWS NCOLS. Pentru blocuri de 128 de octei, acest vector este de 4 4
octei. ntregul bloc de date de 128 de bii poate fi stocat n 16 octei.
Vectorul state este iniializat cu textul clar i este modificat la fiecare pas al
calculului. n anumii pai, este realizat substituia octet-cu-octet. n alii, octeii
sunt permutai n interiorul vectorului. Sunt folosite i alte transformri. La sfrit,
coninutul lui state reprezint textul cifrat.
Codul ncepe prin expandarea cheii n 11 vectori de aceeai lungime cu
starea. Acetia sunt memorai n rk, care este un vector de structuri, fiecare
structur coninnd un vector stare. Unul dintre acetia va fi folosit la nceputul
calculului i ceilali 10 vor fi folosii n timpul celor 10 runde, cte unul n fiecare
rund. Calculul cheilor de runde din cheia de criptare este prea complicat pentru a

fi prezentat aici. Este de ajuns s spunem c cheile de runde sunt produse prin
rotiri repetate i aplicarea de operaii XOR asupra unor grupuri de bii din cheie.
Urmtorul pas este acela de a copia textul clar n vectorul state astfel nct
s poat fi procesat pe perioada rundelor. Acesta este copiat n ordinea
coloanelor, cu primii patru octei n coloana 0, urmtorii patru octei n coloana 1
i aa mai departe. Att coloanele ct i liniile sunt numerotate pornind de la 0,
dei rundele sunt numerotate pornind de la 1.
Mai este un pas nainte de a ncepe calculul principal: rk[0] este combinat
prin XOR n state, octet cu octet. Cu alte cuvinte fiecare octet din cei 16 aflai n
state este nlocuit cu rezultatul aplicrii operaiei XOR asupra sa i asupra
octetului corespunztor din rk[0].
i acum urmeaz partea cea mai interesant. Bucla execut 10 iteraii, cte
una pe rund, transformnd state la fiecare iteraie. Fiecare rund const n patru
pai. Pasul 1 realizeaz o substituie octet-cu-octet asupra lui state. Pe rnd,
fiecare octet este folosit ca index ntr-o cutie S pentru a-I nlocui valoarea prin
coninutul corespunztor din acea cutie S. Acest pas este un cifru de substituie
monoalfabetic direct. Spre deosebire de DES, care are mai multe cutii S,
Rijndaek are doar o cutie S.
Pasul 2 rotete la stnga fiecare din cele 4 rnduri. Rndul 0 este rotit cu 0
octei (nu e schimbat), rndul 1 este rotit cu 1 octet, rndul 2 este rotit cu 2 octei
i rndul 3 este rotit cu 3 octei. Acest pas difuzeaz coninutul datelor curente n
jurul blocului.
Pasul 3 amestec fiecare coloan independent de celelalte. Aceast
amestecare este realizat prin nmulire de matrice, n care noua coloan este
produsul dintre vechea coloan i o matrice constant, multiplicarea fiind
realizat folosind cmpul finit Galois, GF(28). Dei acest lucru poate prea
complicat, exist un algoritm care permite fiecrui element al noii coloane s fie
calculat folosind dou cutri n tabele i trei operaii XOR.
n fine, pasul 4 aplic operaia XOR pentru cheia din runda curent i
vectorul stare.

Deoarece fiecare pas e reversibil, decriptarea poate fi realizat prin rularea


algoritmului de la coad la cap. Oricum, este posibil i o schem prin care
decriptarea poate fi realizat prin rularea algoritmului de criptare nemodificat,
dar folosind tabele diferite.
Algoritmul a fost proiectat nu doar pentru o securitate foarte solid, dar i
pentru o vitez foarte mare. O bun implementare software pe o main la 2 GHz
ar trebui s ating o rat de criptare de 700 Mbps, ceea ce este suficient de rapid
pentru a criptarea peste 100 de fiiere video MPEG-2 n timp real. Implementrile
hardware sunt chiar mai rapide.

33. Algoritmi cu cheie publica - RSA


Datorit posibilelor avantaje ale criptografiei cu chei publice, muli
cercettori au lucrat din greu la acest subiect i au fost deja publicai civa
algoritmi. O metod bun a fost descoperit de un grup de la MIT (Rivest et. al,
1978). Ea este cunoscut prin iniialele numelor celor trei descoperitori (Rivest,
Shamir, Adelman): RSA. Metoda a supravieuit tuturor ncercrilor de a o sparge
timp de mai mult de un sfert de secol i este considerat foarte puternic. Multe
aplicaii de securitate se bazeaz pe ea. Dezavantajul major al acesteia este c
necesit chei de cel puin 1024 de bii pentru o securitate bun (spre deosebire
de 128 bii pentru algoritmii cu cheie simetric), ceea ce o face destul de lent.
Metoda RSA este bazat pe cteva principii din teoria numerelor. Vom
rezuma mai jos modul n care se folosete aceast metod:
1. Se aleg dou numere prime, p i q, (de obicei de 1024 bii).
2. Se calculeaz n = p q i z = (p - 1)(q-1).

3. Se alege un numr relativ prim cu z i este notat cu d.


4. Se gsete e astfel nct e d = 1 mod z.
Cu aceti parametri calculai n avans, suntem gata s ncepem criptarea.
mprim textul clar (privit ca ir de bii) n blocuri, astfel nct fiecare mesaj de
text clar, P, s intre n intervalul 0 P < n. Aceasta poate fi fcut grupnd textul
clar n blocuri de cte k bii, unde k este cel mai mare numr ntreg pentru care
inegalitatea 2k < n este adevrat.
Pentru a cripta mesajul P, se calculeaz C = Pe (mod n). Pentru a decripta C,
se calculeaz P = Cd (mod n). Se poate demonstra c pentru toi P din intervalul
specificat, criptarea i decriptarea sunt funcii inverse una alteia. Pentru a realiza
criptarea este nevoie de e i n. Pentru a realiza decriptarea este nevoie de d i n.
De aceea, cheia public const din perechea (e, n) iar cheia private din perechea
(d, n).
Securitatea metodei este bazat pe dificultatea factorizrii numerelor mari.
Dac un criptanalist ar putea factoriza numrul n (public cunoscut), el ar putea
gsi p i q, iar din acestea pe z. Cu z i e cunoscui, criptanalistul l poate calcula pe
d folosind algoritmul lui Euclid. Din fericire, matematicienii au ncercat s
factorizeze numere mari de cel puin 300 de ani i experiena acumulat
sugereaz c aceasta este o problem mai mult dect dificil.
Trebuie subliniat c folosirea RSA n modul descris este similar folosirii
unui algoritm simetric n modul ECB - blocuri de intrare identice conduc la blocuri
de ieire identice. De aceea este necesar o anumit form de nlnuire pentru
criptarea datelor. Totui, n practic, cele mai multe sisteme bazate pe RSA
folosesc criptografia cu cheie public n principal pentru distribuirea cheilor de
sesiune de unic folosin utilizate pentru un algoritm simetric ca AES sau triplu
DES. RSA este prea lent pentru a cripta eficient volume mari de date, dar este
folosit mult la distribuia de chei.

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