Sunteți pe pagina 1din 40

Retele de calculatoare

notite de curs
Radu-Lucian Lupsa
13 octombrie 2005

Cuprins
1 Introducere
1.1 Ce este o retea de calculatoare? . . .
1.2 Problemele abordate n curs . . . . .
1.3 Problemele infrastructurii retelei . . .
1.4 Tipuri de comunicatie . . . . . . . .
1.5 Arhitectura sistemului de comunicatii

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

5
5
5
5
6
6

2 Programarea n retea introducere


2.1 Interfata de programare socket BSD . .
2.1.1 Creare . . . . . . . . . . . . . . .
2.1.2 Utilizare socket stream . . . . . .
2.1.3 Utilizare socket pentru datagrame
2.2 Adresarea in internet . . . . . . . . . . .
2.3 Transmiterea mesajelor . . . . . . . . . .
2.3.1 Mesaje binare . . . . . . . . . . .
2.3.2 Mesaje text . . . . . . . . . . . .
2.4 Asigurarea concurentei . . . . . . . . . .

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

7
7
7
8
9
10
10
10
11
11

3 Nivelul fizic
3.1 Transmisia prin fir . . . . . . . . . . .
3.1.1 Marimi electrice . . . . . . . . .
3.1.2 Semnale . . . . . . . . . . . . .
3.1.3 Banda de trecere . . . . . . . .
3.1.4 Codarea n banda de baza . . .
3.1.5 Transmisia modulata . . . . . .
3.1.6 Multiplexarea n frecventa . . .
3.2 Transmisia prin unde radio . . . . . . .
3.2.1 Propagarea undelor . . . . . . .
3.2.2 Unde nedirijate si unde dirijate
3.3 Transmisia prin fibra optica . . . . . .
3.3.1 Propagarea semnalului . . . . .

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

13
13
13
14
15
16
16
17
18
18
19
19
19

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.

4 Codarea informatiei
21
4.1 Notiuni de teoria informatiei . . . . . . . . . . . . . . . . . . . . . 21
4.2 Problema codarii pe canale fara zgomote . . . . . . . . . . . . . . 22
4.3 Coduri detectoare si corectoare de erori . . . . . . . . . . . . . . . 26
5 Nivelul leg
aturii de date

29

6 Nivelul retea si nivelul transport


6.1 Algoritmi de dirijare . . . . . . . . .
6.2 Controlul congestiei . . . . . . . . . .
6.3 Protocolul IP si protocoalele auxiliare
6.4 Nivelul transport . . . . . . . . . . .
6.5 Retele eterogene si retele private . . .
6.6 Retele mobile . . . . . . . . . . . . .

CUPRINS

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

7 Metode si protocoale criptografice


7.1 Deziderate . . . . . . . . . . . . . . . . . . . . .
7.2 Asigurarea confidentialitatii . . . . . . . . . . .
7.2.1 Criptografia simetrica . . . . . . . . . .
7.2.2 Utilizarea practica a cifrurilor bloc . . .
7.2.3 Numere aleatoare . . . . . . . . . . . . .
7.2.4 Criptografie asimetrica (cu cheie publica)
7.3 Autentificarea originii si controlul integritatii . .
7.3.1 Functii de dispersie criptografice . . . . .
7.3.2 Autentificarea mesajelor . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.

31
31
32
32
32
33
33

.
.
.
.
.
.
.
.
.

35
35
35
35
36
37
38
38
38
39

Capitolul 1
Introducere
1.1

Ce este o retea de calculatoare?


Termenul retea de calculatoare are cel putin doua utilizari distincte:

1. mai multe calculatoare, impreuna cu un sistem (hard+soft) de comunicatii


2. un sistem de calcul, bazat pe o retea in sensul 1, dar comportandu-se ca un
sistem unitar (de exemplu, prezinta aceleasi conturi de utilizatori pe toate
calculatoarele)

1.2

Problemele abordate n curs

1. Realizarea infrastructurii pentru comunicatii;


2. Aplicatii (de comunicatie) in retea:
aplicatii existente,
principiile realizarii aplicatiilor n retea
3. Elemente de sisteme de operare in retea.

1.3

Problemele infrastructurii retelei

1. codarea fizica a informatiei;


2. detectarea si corectarea erorilor de transmisie;
3. controlul fluxului (asigurarea faptului ca emitatorul nu trimite mai repede
decat poate receptorul sa primeasca);
4. controlul coliziunilor si adresarea, pe medii de tip magistrala (adica n care
exista mai multe entitati prevazute cu emitatoare si receptoare care partajeaza acelasi mediu);
5. dirijarea comunicatiei n retea (astfel ncat doua calculatoare sa poata comunica, chiar daca nu exista legatura directa ntre ele, ci doar legaturi prin
intermediari);

Capitolul 1. Introducere

6. livrarea sigura (mesajele sa nu se piarda, sa nu ajunga n multiplu exemplar,


si sa ajunga n ordinea n care au fost emise);
7. securitatea:
confidentialitate (un mesaj sa poata fi receptionat doar de catre destinatarul autorizat),
autentificarea (receptorul sa poata verifica identitatea emitatorului,
integritatea comunicatiei (nimeni sa nu poata modifica mesajele,
non-repudiabilitatea (destinatarul sa poata dovedi originea unui mesaj,
altfel spus, nici macar destinatarul sa nu poata falsifica identitatea autorului mesajului)

1.4

Tipuri de comunicatie
Dupa nr. de receptori:

punct la punct (unicast): un emitator si un receptor;


difuziune (broadcast sau multicast): un emitator si mai multi receptori.
Nota: broadcast este o comunicatie n care un mesaj este primit de toata
lumea; multicast desemneaza o comunicatie n care doar o parte din calculatoarele
din retea primesc mesajul.
Dupa existenta unei conexiuni:
comunicatie prin conexiune;
comunicatie prin datagrame.
Deziderate optionale:
livrare sigura (un mesaj sa fie livrat exact o data)
transmisie fara erori
pastratea ordinii relative a mesajelor
debit minim garantat
timp maxim de livrare garantat
confidentialitate
autentificare

1.5

Arhitectura sistemului de comunicatii

Capitolul 2
Programarea n retea
introducere
2.1

Interfata de programare socket BSD


socket = capat de cale de comunicatie
Presupuneri:

pe fiecare calculator pot rula mai multe procese, si fiecare proces poate avea
mai multe cai de comunicatie deschise, prin urmare pe un calculator trebuie
sa poata exista la un moment dat mai multe socket-uri active;
o comunicatie poate fi prin conexiune sau datagrame
pentru a identifica partenerul de comunicatie, initiatorul unei comunicatii
trebuie sa furnizeze o adres
a ; formatul acestei adrese poate sa depinda de
tipul retelei (IP, IPX, etc).
API-ul este conceput sa fie independent de tipul exact al retelei (poate
functiona pe retele IP, IPX, local pe unix, etc.)

2.1.1

Creare
socket(proto_family, type, protocol)
type: desemneaza tipul de servicii dorite:

SOCK STREAM: conexiune; punct la punct; flux de date bidirectional la nivel de


octet; livrare sigura, cu pastrarea ordinii, transmisie fara erori.
SOCK DGRAM: datagrame punct la punct sau difuziune transmisie fara erori; livrarea nu e sigura si nici ordinea garantata.
SOCK RAW: acces direct la infrastructura; ex. in implementarea comenzii ping.
proto family identifica tipul de retea cu care se lucreaza (IP, IPX, etc).
Se pune PF INET pentru conexiuni pe protocol Internet (IP).
protocol identifica protocolul particular de utilizat. Este intentionat a
fi folosit daca ar exista mai multe protocoale distincte pentru un tip de retea dat
si pentru un tip de serviciu dat. Implicit se va pune 0.

Capitolul 2. Programarea n ret


ea introducere

Functia returneaza identificatorul de socket, pe care aplicatia l va furniza


n apelurile ulterioare.

2.1.2

Utilizare socket stream

Un socket stream poate sa fie n una din doua stari: neconectat sau
conectat. Un socket neconectat poate avea o adresa fixata sau nu.
Orice socket care participa la o operatie de comunicare trebuie sa aiba o
adresa; daca adresa nu i se fixeaza explicit prin bind(), atunci sistemul i va da
o adresa aleatoare.
Conectarea, pe client:
connect(sock id, addr, addr len) conecteaza socket-ul local sock id cu socketul identificat prin adresa addr. Adresa addr trebuie sa corespunda unui
socket de tip stream neconectat
Conectarea, pe server:
bind(sock id, addr, addr len) fixeaza adresa socket-ului sock id.
listen(sock id, dim coada) fixeaza dimensiunea cozii de asteptare pentru conexiunile catre adresa socket-ului
accept(sock id, addr, addr len) asteapta o cerere de conexiune si returneaza
un nou socket conectat la socket-ul care a cerut conexiunea. Socket-ul original poate fi folosit ulterior pentru a astepta noi conexiuni. Parametrul addr
returneza adresa socket-ului
Comunicatia propriu-zisa:
send(sock id, buf, count, flags) trimite count octeti
recv(sock id, buf, count, flags) receptioneaza cel mult count octeti. Daca
nu exista nici un octet sosit, functia asteapta sosirea a cel putin un octet (este
blocanta). Apoi citeste minimul ntre numarul de octeti sositi si numarul de
octeti ceruti (count). Returneaza numarul de octeti cititi. Returneaza 0
daca emitatorul a nchis conexiunea.
Inchiderea conexiunii:
close(sock id) distruge socket-ul si nchide complet conexiunea atasata (daca
exista)
shutdown(sock id, how) nchide comunicatia, posibil doar ntr-unul singur sens
Structura unui program:
Clientul: #include <sys/socket.h>
#include <netinet/in.h>
...
struct sockaddr_in adr;
sd=socket(PF_INET, SOCK_STREAM, 0);

2.1. Interfat
a de programare socket BSD

memset(&adr, 0, sizeof(adr));
adr.sin_family = AF_INET;
adr.sin_port = htons(remote_port);
inet_addr(remote_ip, &adr.sin_addr);
if(-1==connect(sd, (struct sockaddr*)&adr,
sizeof(adr)) )
{
perror("connect()"); exit(1);
}
...
send(sd, ...); recv(sd, ...)
...
close(sd);
Serverul: #include <sys/socket.h>
#include <netinet/in.h>
...
struct sockaddr_in adr;
sd=socket(PF_INET, SOCK_STREAM, 0);
memset(&adr, 0, sizeof(adr));
adr.sin_family = AF_INET;
adr.sin_port = htons(remote_port);
adr.sin_addr = INADDR_ANY;
if(-1==bind(sd, (struct sockaddr*)&adr,
sizeof(adr)) )
{
perror("connect()"); exit(1);
}
listen(sd, 5);
...
struct sockaddr_in client_adr;
socklen_t client_adr_size;
sd_c = accept(sd, (struct sockaddr*)&client_adr,
&client_adr_size)
...
send(sd_c, ...); recv(sd_c, ...)
...
close(sd_c);
...
close(sd);

2.1.3

Utilizare socket pentru datagrame

Probabil cel putin unul din capete trebuie sa fixeze adresa socket-ului, la
o valoare cunoscuta de partener; pentru aceasta foloseste apelul bind(). Celalalt
capat primeste automat o adresa la prima trimitere de datagrama.
Functii:

Capitolul 2. Programarea n ret


ea introducere

10

bind(sock id, addr, addr len) fixeaza adresa socket-ului;


sendto(sock id, buf, count, flags, addr, addr len) trimite o datagrama
la adresa specificata;
recvfrom(sock id, buf, count, flags, addr, addr len) receptioneaza o datagrama, si pune n addr adresa de provenienta.

2.2

Adresarea in internet
Adresa IP:

identifica unic masina


32 biti; de obicei scrisa ca 4 numere zecimale separate prin puncte (ex.
193.226.40.130)
n principiu, fiecare interfata de retea (ex. placa de retea, linie seriala sau
modem folosit pentru o conexiune in retea) are o adresa IP
adresa 127.0.0.1 corespunde unei interete virtuale intr-o retea (virtuala) n
care calculatorul este singur. Altfel spus, 127.0.0.1 desemneaza intotdeauna
masina locala.
unele adrese sunt folosite pentru broadcast
Numarul portului:
serveste pentru a diferentia intre socket-ii de pe aceeasi masina
16 biti (165535)
porturile TCP (SOCK STREAM) sunt independente de porturile UDP (SOCK DGRAM)

2.3

Transmiterea mesajelor

Exemplu: clientul anunta scoaterea dintr-o magazie a unei anumite cantitati de marfa. Se trimite un mesaj continand denumirea si cantitatea.

2.3.1

Mesaje binare
Exemplu:

struct Cerere {
char denumire[30];
int cantitate;
};
Cerere c;
...
send(sd, &c, sizeof(c), 0);

2.4. Asigurarea concurent


ei

11

Probleme:
1. lungimea (numarul de octeti) pe care se reprezinta un int este dependenta
de platforma
2. ordinea octetilor este dependenta de platforma (little endian vs. big endian)
3. alinierea e dependenta de platforma (se poate ca adresa unui ntreg sa trebuiasca sa fie multiplu de 2, 4 sau 8 octeti)
Solutie:
1. se folosesc typedef-urile uint16 t, uint32 t definite n netinet/in.h ; lungimea reprezentarii lor e independenta de platforma;
2. se convertesc la o ordine a octetilor independenta de platforma: functiile
htons(), htonl(), ntohs(), ntohl();
3. se transmite individual fiecare membru al unei structuri.
Exemplu:
struct Cerere {
char denumire[30];
unit32_t cantitate;
};
Cerere c;
...
send(sd, c.denumire, 30, 0);
c.cantitate=htonl(c.cantitate);
send(sd, &c.cantitate);

2.3.2

2.4

Mesaje text

Asigurarea concurentei

12

Capitolul 2. Programarea n ret


ea introducere

13

Capitolul 3
Nivelul fizic
3.1
3.1.1

Transmisia prin fir


Marimi electrice
Reamintim din fizica de liceu urmatoarele marimi electrice:

Sarcina electric
a (Q) masoara cantitatea de electricitate. Este analoaga cantitatii de fluid. Putem masura cantitatea de electricitate (sarcina electrica)
ce trece printr-un conductor ntr-o perioada de timp. Se masoara n coulombi (C).
Intensitatea curentului (I) (numita pe scurt curentul ) masoara sarcina electrica ce trece printr-un conductor mpartita la timpul n care trece. Este
analoaga debitului de fluid printr-o conducta. Intensitatea curentului ce
trece printr-un conductor se masoara ntrerupand conductorul si intercaland
un instrument de masura numit ampermatru. Ampermetrul trebuie sa conduca foarte bine curentul (sa aiba impedanta vezi mai jos cat mai
mica) pentru a perturba cat mai putin circuitul n care masoara. Se masoara
n amperi (A). Intensitatea curentului prin circuite folosite la transmiterea
informatiei este de regula de ordinul zecilor de miliamperi.
Tensiunea electric
a (U) ntre doua conductoare masoara cat de puternic ar fi
impinsa o sarcina electrica aflata n primul conductor catre cel de-al doilea.
Este analoaga diferentei de presiune ntre doua conducte de fluid. Pentru a
masura tensiunea electrica ntre doua conductoare, montam un instrument
numit voltmetru cu o borna conectata la unul din conductoare si cu cealalta
borna legata la celalalt conductor. Voltmetrul trebuie sa fie cat mai aproape
de un izolator sa conduca cat mai putin curent de la o borna la alta
(aidca sa aiba impedanta cat mai mare). Tensiunea se masoara n volti (V).
Tensiunile intre conductoarele folosite pentru transmisia informatiei sunt de
ordinul catorva volti.
Puterea si energia electric
a (P) Un element de circuit la bornele caruia se
aplica o tensiune U si prin care trece un curent de intensitate I de acelasi sens
cu tensiunea primeste o putere P = U I. Daca intensitatea are sens invers
tensiunii, elementul livreaza puterea P = U I circuitului. Puterea se masoara
n watti (W).

14

Capitolul 3. Nivelul fizic

Energia electric
a (E) Energia masoara produsul dintre puterea primita sau
cedata de un element de circuit si timpul cat are loc fenomenul. Unitatea de
masura n Sistemul International este joule-ul (J), nsa frecvent se foloseste
kilowattora (kWh) (atentie, simbolul kW/h , citit kilowatt pe ora, nu este
corect, desi este folosit curent); un kilowattora este energia primita de un
consumator care primeste o putere de un kilowatt timp de o ora; n consecinta
1kWh = 3600000J.
Elemente de circuit si marimi caracteristice (Nota: fiecare element poate
fi construit n mod deliberat, ns
a comportamentul poate sa apar
a si acolo unde
nu este dorit):
rezistorul si rezistenta (R) Un rezistor este un element de circuit
condensatorul si capacitatea (C) .
bobina si inductanta (L) .
impedanta (Z) si conductanta (G)
surse si consumatori

3.1.2

Semnale

In general, prin semnal se nttelege valoarea unei marimi fizice, urmarie


ca functie de timp, folosite pentru transmiterea informatiei.
In cazul transmiterii prin conductoare electrice, semnalul este tensiunea
ntre cele doua conductoare; semnalul emis, notat Ue (t), este tensiunea masurata
la momentul t la bornele emitatorului, iar semnalul receptionat, notat Ur (t), este
tensiunea masurata la bornele receptorului.
In general, semnalul receptionat nu coincide cu semnalul emis. Apar mai
multe fenomene:
nt
arzierea face ca semnalul receptionat sa urmeza cu o anumita ntarziere semnalul emis. Ideal (adica n lipsa fenomenelor de mai jos), Ur (t) = Ue (t vl ),
unde l este lungimea liniei iar v este viteza de propagare a semnalului; aceasta
din urma depinde doar de materialul izolator dintre conductoarele liniei. In
practica, v 2/3c = 2 108 m/s, unde c este viteza luminii n vid.
atenuarea face ca semnalul receptionat sa aiba amplitudine mai mica decat
cel emis. Fiecare metru al liniei scoate la iasire un semnal egal cu un
anumit procent din semnalul intrat; ca urmare, amplitudinea semnalului
receptionat scade exponential cu cresterea lungimii liniei. Mai exact, neglijand ntarzierea, Ur (t) = g Ue (t), unde 0 < g < 1 si are forma g =
g0l . Se numeste factor de atenuare valoarea (1/g)2 ;aceasta arata raportul
ntre puterea semnalului emis si a celui receptionat (n general puterea este
proportionala cu patratul tensiunii, deoarece raportul tensiune/intensitate
este aproximativ constant). In practica, n loc sa scriem factorul de atenuare
(1/g)2 scriem atenuarea, care, data n decibeli (notat dB) este 10log10 (1/g)2 .
Astfel, daca o linie are atenuare de 10dB nseamna ca puterea receptionata

3.1. Transmisia prin fir

15

p
este 1/10 din puterea emisa si ca tensiunea receptionata este 1/ (10) din
tensiunea emisa.
Atenuarea unui cablu este proportionala cu lungimea, iar puterea si tensiunea
receptionate scad exponential cu lungimea. Daca un cablu are atenuarea
0.1dB/m nseamna ca pe 100m de cablu vom avea o atenuare de 10dB, adica
o reducere de 10 ori a puterii. Pe 30m din acelasi cablu, atenuarea va fi de
3dB, adica o reducere de aproximativ 2 ori a puterii (mai exact, factorul de
atenuare este de 100.3 1.9953).
Atenuarea depinde de materialele din care sunt facute conductoarele si izolatorul precum si de geometria cablului.
distorsiunile determina semnalul receptionat sa aiba o forma diferita fata de
semnalul emis.

3.1.3

Banda de trecere

Consideram un circuit electronic, care are o intrare si o iesire (fig. ??).


In particular, o pereche de fire folosite pentru transmisie poate fi considerata un
astfel de circuit, capetele dinspre emitator constituind intrarea, iar cele dinspre
receptor, iesirea.
Tensiunea de la iesire depinde de tensiunea de la intrare, nsa n general
depinde de tot istoricul ei. Altfel spus, comportamentul circuitului poate fi descris
de o functie care primeste ca argument functia tensiune-timp de la intrare si
ntoarce functia tensiune-timp de la iasire (o functie definita pe un spattiu de
functii cu valori tot ntr-un spatiu de functii). Scriem Ue = T (Ui ), unde Ui (t)
este valoarea tensiunii de intrare la momentul t, iar Ue (t) este tensiunea de iesire
la momentul t.
Multe circuite electronice au un comportament liniar, adica daca Ui (t)
poate fi scris ca
Ui (t) = Ui1 (t) + Ui2 (t) + + Uin (t),
atunci
Ue (t) = Ue1 (t) + Ue2 (t) + + Uen (t),
unde Ue1 = T (Ui1 ), Ue2 = T (Ui2 ), etc.
Circuitele liniare au proprietatea ca, daca semnalul de intrare este sinusoidal, adica
Ui (t) = U0 sin(t + )
atunci semnalul de iesire este tot sinusoidal, si, mai mult,
Ue (t) = g() U0 sin(t + ()
unde g() si () depind doar de cun este construit circuitul si de frecventa
( = 2f , unde f este frecventa semnalului).
Orice semnal se poate scrie unic ca o suma de semnale sinusoidale. (Nota:
scrierea unei functii ca suma de sinusoide este asa-numita transformata Fourier. Conditiile de existent
a depind de cadrul n care se scrie functie in L2 ,
distributie, etc. Prezentarea de fat
a are doar scop de suport intuitiv; lipsesc detaliile matematice si n consecint
a cele scrise aici nu pot fi folosite pentru a sprijini

16

Capitolul 3. Nivelul fizic

n mod fiabil rationamente). Transformata Fourier se mai numeste si spectrul


semnalului.
Ca urmare a liniaritatii, semnalul de iesire se poate calcula descompunand n sinusoide semnalul de intrare, calculand efectul circuitului asupra
fiecarei sinusoide n parte, si nsumand n final iesirile. Comportamentul unui
circuit liniar este deci complet definit de functiile g() si () de mai sus.
Un semnal este nedistorsionat daca si numai daca, pentru toate valorile
din spectrul semnalului (adica acelea pentru care amplitudinea sinusoidei corespunzatoare este nenula) g() are aceeasi valoare si () este proportional cu
.
In general, un circuit (inclusiv o linie de transmisie) va prezenta distorsiuni mici doar pentru semnale a caror spectru se ncadreaza ntre anumite valori
extreme fmin si fmax . Acest interval se numeste banda de trecere a circuitului.
Diferenta fmax fmin se numeste l
atimea de band
a a circuitului (sau a liniei).
De exemplu, banda de trecere a unui circuit de telefon este cuprinsa ntre
aproximativ 300Hz si 3kHz.

3.1.4

Codarea n banda de baz


a

Prin codare n acest context se ntelege regulile prin care unui sir de biti
de transmis i se asociaza semnalul emis. Codarea cea mai simpla este aceea n
care mpartim timpul n celule de durata fixata (pe care o numim lungimea unui
bit) si, pe durata fiecarui bit semnalul emis va avea o anumita valoare de
exemplu 12V daca bitul are valoarea 1 si 0V daca bitul are valoarea 0.
Receptorul va avea un ceas cu care va determina celulele corespunzatoare
bitilor, si va masura semnalul la mijlocul fiecarei celule de bit. Daca tensiunea
va fi mai mare de, sa zicem, 3V, va decide ca bitul respectiv are valoarea 1, altfel
0.

3.1.5

Transmisia modulat
a

Transmisia modulata se foloseste atunci cand este necesar ca spectrul


semnalului sa ocupe o banda departe de frecventa zero. Aceast poate fi necesar
fie pentru ca circuitele sau mediul de transmisie nu pot transmite frecventele
apropiate de zero, fie pentru a putea transmite mai multe semnale pe acelasi
mediu prin multiplexare n frecventa.
Modularea consta n a transmite un semnal de forma
U (t) = a sin(t + ),
unde unul din parametri a, sau sunt functie de semnalul ce s-ar transmite n
lipsa modulatiei.
Mai exact, putem avea:
modulatie n amplitudine (AM): semnalul transmis este de forma
U (t) = U0 s(t) sin(2fp t)
unde s(t) este semnalul de modulat, cel care poarta informatia utila, iar fp
este asa-numita frecvent
a purtatoare a semnalului.

3.1. Transmisia prin fir

17

Se observa ca modulatia n amplitudine este liniara (modulatia sumei a doua


semnale a + b este suma rezultatelor modulatiei independente pentru a si b)
si ca daca semnalul de modulat este sinusoidal
a(t) = sin(2fs t + )
atunci
U (t) = U0 s(t) sin(2fp t =
= U0 sin(2fs t + ) sin t =

1
1
= U0
cos (( 2f )t ) cos (( + 2f )t + )
2
2
adica n urma modulatiei n amplitudine a unui semnal sinusoidal se obtine o
suma de doua semnale sinusoidale avand ca frecvente suma dintre frecventa
semnalului de modulat si frecventa purtatoare si celalalt avand diferenta
celor doua frecvente. In conditii reale, frecventa purtatoare este cel putin de
cateva ori mai mare decat frecventele din spectrul semnalului de modulat.
Spectrul unui semnal modulat n amplitudine va contine frecventa purtatoare
si doua benzi laterale, stanga si dreapta, acestea cuprinzand diferentele, respectiv sumele, frecventelor din spectrul semnalului util cu frecventa purtatoare.
Intrucat spectrul semnalului modulat este simetric n jurul frecventei purtatoare,
de fapt doar una dintre benzile laterale poarta informatie utila. Din acest
motiv, adesea se suprima total sau partial de la transimisie una dintre benzile
laterale.
modulatie n frecvent
a (FM): semnalul transmis are forma

U (t) = U0 sin 2 (fp + s(t)) t


unde, din nou, fp este numita frecventa purtatoare si s(t) este semnalul util;
avem s(t) fp .
Analiza spectrului unui semnal modulat n frecventa este mult mai difcila
decat n cazul modulatiei n amplitudine.
modulatie n faz
a: semnalul transmis are forma

U (t) = U0 sin 2fp t + s(t)


Este evident ca, ntrucat receptorul nu are de obicei un reper absolut de
timp, el nu poate detecta decat variatiile de faza ale semnalului receptionat.
Ca urmare, o valoare constanta a lui s(t) nu poate fi deosebita de zero si,
mai mult, nici variatii lente ale lui s(t) nu pot fi detectate. In consecinta,
spectrul lui s(t) nu poate contine frecvente prea apropiate de 0.

3.1.6

Multiplexarea n frecvent
a

Daca modulam mai multe semnale s1 . . . sn folosind frecvente purtatoare


fp1 . . . fpn suficient de departate pentru ca spectrele semnalelor modulate sa nu se

18

Capitolul 3. Nivelul fizic

ntrepatrunda, putem transmite toate semnalele pe acelasi mediu de transmisie


fara ca semnalele sa interfereze.
Acest procedeu se numeste multiplexare n frecvent
a. Poate fi folosit atat
pentru a transmite doua sau mai multe semnale n acelasi sens, cat si pentru a
transmite semnale n ambele sensuri simultan (transmisie full-duplex ).
Emitatorul va suprapune pur si simplu semnalele modulate. Receptorul
va separa, cu ajutorul unor circuite capabile sa filtreze de pe o linie doar o anumita
banda de frecvente, semnalele modulate, dupa care le va demodula independent
pe fiecare.

3.2
3.2.1

Transmisia prin unde radio


Propagarea undelor

Proprietatile de propagare ale undelor radio depind de lungimea de unda


sub doua aspecte:
1. Orice unda ocoleste obstacolele mai mici decat o fractiune din lungimea de
unda, n vreme ce n spatele obstacolelor mai mari de catea lungimi de unda
,,ramane umbra. De aceea, undele lungi, cu lungime de unda de ordinul
kilometrilor sau sutelor de metri sunt capabile sa ocoleasca obstacole mari,
inclusiv curbura Pamantului pe distanta de cateva sute sau chiar mii de
kilometri. Prin contrast, undele cu lungime de unda sub cativa metri se
propaga aproape numai n linie dreapta, dealurile sau cladirile mai mari
putand provoca umbre.
2. Absorbtia si reflexia undelor pe diferite materiale depinde de lungimea de
unda; este similara cu absorbtia si reflexia diferita a luminii de diferite culori.
Ionosfera reflecta undele cu lungimi de unda de ordinul metrilor; prin reflexii
repetate ntre Pamant si ionosfera, aceste unde pot parcurge usor multe
mii de kilometri. Microundele (cca. 1cm20cm) si lumina vizibila (400nm
700nm) sunt singurele care pot traversa atmosfera terestra; nsa microundele
n jurul a 6GHz (5cm) sunt puternic absorbite de apa si ca urmare trec greu
prin nori si prin ploaie.
Puterea semnalului scade, pe masura ce ne ndepartam de emitator, din
doua cauze:
datorita extinderii frontului de unda, puterea pe unitatea de suprafata a
frontului de unda este mai mica. Scaderea este cu patratul distantei:
Pr = Pe

1
d2

unde este o constanta ce depinde de constructia antenelor de emisie si de


receptie, iar d este distanta ntre emitator si receptor.
datorita absorbtiei undelor n mediu. Aceasta scadere este exponentiala cu
distanta, ca si n cazul cablurilor, nsa de cele mai multe ori este neglijabila
fata de extinderea frontului de unda.

optica

3.3. Transmisia prin fibra

3.2.2

19

Unde nedirijate si unde dirijate

Exista antene directionale si antene nedirectionale. Antenele directionale


emit si receptioneaza unde aproape doar ntr-o singura directie; cele nedirectionale
emit aproape cu aceeasi putere (respectiv, receptioneaza cu aceeasi sensibilitate)
de jur mprejur. Antenele nedirectionale sunt de cele mai multe ori un simplu
baston metalic (de fapt, bastonul este un pol, iar carcasa aparatului sau, dupa
caz, Pamantul. este celalalt pol). Antenele directionale cele mai raspandite
pentru comunicatiile ce ne intereseaza au directivitatea asigurata de o oglinda
de forma unui paraboloid de rotatie, cu antena propriu-zisa plasata n focarul
paraboloidului. (asa-numitele antene parabolice).
O antena directionale trebuie sa fie orientata n permanenta catre partenerul de comunicatie. In schimb, ca avantaj fata de antenele nedirectionale,
puterea emisa poate fi mai mica, sensibilitatea receptorului poate fi mai scazuta
ntrucat o mai mare parte din energia emisa de emitator ajunge pe receptor
si pot exista n aceeasi zona mai multe instalatii ce folosesc aceeasi frecventa
fara sa interfereze.

3.3
3.3.1

Transmisia prin fibr


a optic
a
Propagarea semnalului

20

Capitolul 3. Nivelul fizic

21

Capitolul 4
Codarea informatiei
4.1

Notiuni de teoria informatiei

Teoria informatiei serveste la a putea evalua necesarul de informatie de


transmis de la emitator la receptor si de-a evalua eficienta si redundanta transmiterii informatiei.
Teoretic receptorul are nevoie de un mesaj de la emitator daca continutul
acelui mesaj (si eventual momentul n care este trimis) nu poate fi dedus de catre
receptor pe baza cunostintelor sale. Putem spune ca un mesaj contine informatie
daca aduce receptorului ceva ce acesta nu putea obtine singur. Prin urmare, un
mesaj contine informatie numai n masura n care receptorul are o incertitudine
pe care prin primirea mesajului o poate nlatura.
Informatia este deci nlaturarea unei incertitudini. Masura informatiei
trebuie sa masoare incertitudinea nlaturata prin dobandirea unei informatii.
Presupunem ca avem o multime completa de evenimente posibile, disjuncte: A = {x1 , x2 , . . . , xn } cu probabilitatile pi = P (xi ). Prin definitie, un
mesaj care nstiinteaza receptorul de producerea evenimentului xi aduce o cantitate de informatie i = log2 pi . Unitatea de masura se numeste bit. Observatie:
a nu se confunda bitul unitate da masur
a a informatiei, cu bitul cifra n baza 2.
Exist
a o leg
atur
a: presupun
and o codare ideal
a, o informatie de n biti poate fi
codat
a ca un sir de n biti.
La transmisia informatiei se pune n mod obisnuit problema urmatoare:
emitatorul are o multime de mesaje posibile M = {m1 , m2 , . . . , mn }. Dintre
acestea, el va trebui sa transmita unul. Pe de alta parte, emitatorul are la
dispozitie o multime de simboluri de cod S = {s1 , s2 , . . . , sk } pe care le poate
emite; el poate transmite un sir de astel de simboluri de cod. In general, S
are doua elemente, notate 0 si 1 (S = {0, 1}. Fiecare mesaj trebuie codificat ca
un sir de simboluri de cod, printr-o functie de codare c : M S ? . Functia c
trebuie sa fie injectiva, pentru ca orice cuvant de cod sa fie unic decodabil, si sa
fie cunoscuta receptorului pentru ca acesta sa poata decoda efectiv orice mesaj
primit.
Problema codarii informatiei este sa se aleaga o functie c potrivita.
Cerintele sunt sa minimizeze lungimea medie a cuvintelor de cod, si sa permita
decodarea n prezenta erorilor, adica daca receptorul primeste un cuvant de cod
usor modificat.
Modelul de lucru n problema codarii informatiei este urmatorul:

22

Capitolul 4. Codarea informat


iei

Figura 4.1: Codarea informatiei pentru transmitere


Exista o sursa de informatie, care produce n timp un sir de mesaje
dintr-o multime finita M .
Canalul de transmisie (mediul fizic) permite transmiterea unor simboluri
de cod dintro alta multime finita, S numita alfabetul canalului (n majoritatea
cazurilor S = {0, 1}).
Transmiterea informatiei prin canal presupune codarea mesajelor, astfel
ncat fiecarui mesaj i corespunde o secventa de simboluri de cod. Avem schema
din figura ??.
M
asurarea informatiei Este util uneori sa putem defini cantitatea de informatie
purtata de un mesaj. Pentru aceasta este necesar ca sa asignam fiecarui mesaj
posibil probabilitatea de-a fi emis.
Definitia 4.1 Cantitatea de informatie adusa de un mesaj m este log2 (pm ),
unde pm este probabilitatea emisiei mesajului m.
De remarcat ca, cantitatea de informatie este o masura a incertitudinii
nlaturate de mesaj. Daca primirea mesajul era aproape sigura (p ' 1) incertitudinea primirii este mica si cantitatea de informatie este de asemenea mica.

4.2

Problema cod
arii pe canale f
ar
a zgomote

Cod: o functie c : M S , unde M este multimea mesajelor posibile,


iar S este multimea simbolurilor de cod (simbolurile ce pot fi codate fizic direct
pe canal, de exemplu ca nivele de semnal).
Termeni:
mesaj obiectul trimis de sursa, apartinand multimii mesajelor posibile M
simbol de cod simbol ce poate fi trimis direct la nivel fizic (ce poate fi codat
direct ca nivel de tensiune pe linie, de exemplu);
alfabetul sursei multimea simbolurilor de cod posibile;
secvent
a de cod secventa oarecare de simboluri de cod;
cuv
ant de cod secventa de cod prin care se codeaza un mesaj.
Cod unic decodabil Pentru ca decodarea sa fie posibila, functia c este necesar sa fie injectiva. (Nota: surjectivitatea nu este nici necesara nici posibila;
imposibilitatea este datorata faptului ca M este finita si S este infinita).
Injectivitatea nu este suficienta. De exemplu: a 7 0, b 7 1, c 7 01 este
injectiva dar secventa de cod 01 poate proveni din ab sau din c.
Functia c se extinde la c : M S prin c(m1 m2 mk ) = c(m1 )
c(m2 ) c(mk ) (punctul reprezinta concatenarea).
Definitia 4.2 Codul este unic decodabil daca c este injectiv
a.

rii pe canale fa
ra
zgomote
4.2. Problema coda

23

Figura 4.2: Arborele atasat unui cod prefix


Conditii pentru unic decodabilitate
Teorema 4.3 Pentru orice cod unic decodabil are loc inegalitatea:
n
X

|S|lk 1

(4.1)

k=1

unde lk sunt lungimile cuvintelor de cod, iar |S| este numarul de simboluri de
cod.
Definitia 4.4 Un cod se spune ca are proprietatea de prefix (sau mai scurt, este
cod prefix) daca nici un cuvant de cod nu este prefix al altui cuvant de cod.
Exemplu:
a 7 0
b 7 101
c 7 11
d 7 100
Unui cod prefix i se poate atasa un arbore n care fiecarui mesaj i corespunde o frunza, muchiile descendente de la fiecare nod sunt etichetate cu simboluri de cod distincte, iar cuvantul de cod al unui mesaj este format din simbolurile
de cod ale muchiilor de pe lantul ce uneste radacina cu frunza atasata mesajului.
Exemplu: fig. 4.2
Teorema 4.5 Orice cod cu proprietatea de prefix este unic decodabil.
Teorema 4.6 Dac
a l1 . . . lk satisac inegalitatea 4.1, atunci exista un cod cu proprietatea de prefix avand lungimile cuvintelor de cod l1 . . . lk .
Constructia: Sortam crescator lungimile cuvintelor (lk ). Construim arborele atasat codului plecand de la radacina. La fiecare nivel, alegem dintre
varfurile de pe acel nivel un numar egal cu numarul cuvintelor de cod de acea
lungime si le acem frunze, atasate mesajelor corespunzatoare. Restul nodurilor
vor ramane noduri interne, si vor da descendenti pe nivelul urmator; fiecare nod
va da |S| descendenti, iar muchiile descendente se vor eticheta cu simboluri de

24

Capitolul 4. Codarea informat


iei

1
0

0
a

0
c

1
0
b

1
d

Figura 4.3: Constructia unui cod prefix cu lungimi fixate ale cuvintelor de cod
cod ntr-o ordine arbitrara. Inegalitatea 4.1 ne asigura ca vom avea la fiecare
nivel suficiente varfuri de atasat mesajelor a caror cuvinte de cod urmeaza sa
aiba acea lungime.
Exemplu: figura 4.3 arata etapa cu etapa constructia unui cod pentru
lungimile l1 = 1, l3 = 2, l2 = 3, l4 = 3. Cerculetele desemneaza nodurile
neatasate unor mesaje, care urmeaza sa produca descendenti pe nivelul urmator.
Observatie: din teoremele din acest paragraf rezulta ca daca avem un cod
unic decodabil pentru niste mesaje putem gasi un cod prefix cu aceleasi lungimi
ale cuvintelor de cod.
Coduri optimale Daca dorim codificarea unei secvente de mesaje sa fie cat mai
scurta, avem nevoie de un cod care sa minimizeze lungimea medie a cuvantului de
cod. Media lungimilor se va calcula ponderat, cu ponderile egale cu probabilitatile
de aparitie ale respectivelor cuvinte de cod.
Definitia 4.7 Un cod optimal este un cod unic decodabil care are cea mai mica
lungimea medie a cuvintelor de cod.
Presupunand ca avem la dispozitie doar doua cuvinte de cod, avem l
H(M ), adica lungimea medeie a cuvantului de cod nu poate fi mai mica decat
informatia medie pe simbol a sursei.
Algoritmul Huffman Daca facem presupunerea ca sursa este ergotic
a, adica
probabilitatea de-a emite un anumit mesaj nu depinde de mesajele precedente si
nici de timp, codul optimal se poate construi prin algoritmul lui Huffman.
Algoritmul Huffman (vezi fig. 4.4) este urmatorul (presupunem |S| = 2,
adica alfabetul canalului are doar doua simboluri):

rii pe canale fa
ra
zgomote
4.2. Problema coda

0.55

0.10

0.55

0.20

0.15

0.55

0.20

0
0
b

1.00
1

0.25

0.45

25

0
0
b

1
1

Figura 4.4: Functionarea algoritmului Huffman


Pentru nceput, se ataseaza fiecarui mesaj un arbore format dintr-un
singur varf, si i se ataseaza arborelui respectiv frecventa acelui mesaj.
In continuare, la fiecare pas se selecteaza cei doi arbori cu frecventele de
aparitie asociate cele mai mici. Se unesc cei doi arbori prin creerea unui nou nod
ce va deveni radacina si va avea subordonati cei doi arbori. Una din muchiile
nou introduse va fi etichetata cu 0, cealalta cu 1. Noului arbore i se asociaza
frecventa egala cu suma frecventelor celor doi arbori uniti.
Algoritmul se termina n momentul n care ramane un singur abrore.
Teorema 4.8 Codul obtinut prin algoritmul Huffman este optimal.
Aplicatii Codarea optimala este ceea ce face orice program de compresie a
informatiei. Algoritmul Huffman este folosit aproape de orice algoritm de compresie, nsa de regula nu direct asupra octetilor din datele de comprimat.
Algoritmii de compresie utilizati n practica se folosesc si de dependentele
ntre octetii succesivi.
Utilizarea oricarui cod presupune ca receptorul cunoaste codul folosit
de emitator. Transmiterea separata a codului catre receptor risca sa contrabalanseze castigul obtinut prin codare optimala. Metodele adaptative presupun ca
emitatorul ncepe emisia cu un cod standard, dupa care l modifica pentru a-l
optimiza conform frecventelor observate n date. Daca algoritmul de generare
a codului este fixat si codul folosit la un moment dat depinde doar de datele
trimise (codate) deja, atunci receptorul poate recalcula codul folosit de emitator
(folosind acelasi algoritm ca si emitatorul).
De notat ca nici un cod nu poate folosi mai putini biti pentru codare
decat cantitatea de informatie transmisa. In lipsa redundantei, nu e posibila
compresia. Ca o consecinta, nici un program de compresie nu poate comprima
un sir aleator de octeti.

26

4.3

Capitolul 4. Codarea informat


iei

Coduri detectoare si corectoare de erori

Detectia erorilor consta n a face receptorul sa-si dea seama n anumite


conditii daca au avut loc erori la transmisie (receptorul va cere probabil retransmiterea informatiei n acest caz).
Corectarea erorilor consta ntr-un mecanism care permite receptorului n
anumite conditii sa reconstituie mesajul trimis de emitator, chiar daca ceea ce a
receptionat este diferit din cauza erorilor.
In general, nu pot fi detectate sau corectate toate erorile posibile. In
practica se presupune un anumit numar maxim de erori ce pot afecta un bloc
de date, si schemele permit detectarea oricarei astfel de configuratii de erori.
Daca erorile se produc n numar mai mare, e posibil sa scape nedetectate, sau
corectarea sa functioneze gresit.
Presupunem n cele ce urmeaza ca alfabetul cananului este S = {0, 1}
Erorile pot fi:
erori individuale care schimba valoarea unui bit din 0 n 1 sau reciproc;
rafale de erori care schimba o parte dintr-un sir de bit (nu neaparat toti).
Lungimea rafalei este numarul de biti dintre primul si ultimul bit modificat;
erori de sincronizare care determina pierderea unui bit sau introducerea unui
bit, mpreuna cu decalarea corespunzatoare a bitilor urmatori.
Mai multe erori pot afecta acelsai bloc de biti.
Nu ne vom ocupa n cele ce urmeaza de erorile de sincronizare.
Presupunem cuvinte de cod de lungime n biti. Multimea cuvintelor de
cod este W V = {0, 1}n . Pentru a putea detecta erorile, trebuie ca eroarea sa
nu schimbe un cuvant de cod n alt cuvant de cod. ci sa schimbe cuvantul de
cod ntr-un cuvant invalid.
P
Punem d(v1 , v2 ) = ni=1 |v1i v2i | adica distanta ntre doua cuvinte este
numarul de erori individuale necesare pentru a schimba primul cuvant n al doilea.
Punem dmin (W ) =
min
d(v1 , v2 .
v1 ,v2 W,v1 6=v2

Un cod este capabil sa detecteze k erori individuale daca dmin k + 1.


Un cod este capabil sa corecteze k erori individuale daca dmin 2k + 1.
Coduri polinomiale F2 = ({0, 1}, , ) este corp ( este operatia sau exclusiv,
iar este operatia si).
Unui cuvant din V = {0, 1}n se asociaza poliniomul (de grad cel mult
n1) v1 X n1 v2 X n2 vn Acesta este un polinom peste F2 . Polinoamele
peste orice corp pastreaza multe din proprietatile polinoamelor obisnuite, n
particular se poate defini la fel adunarea, scaderea si nmultirea, si are loc teorema
mpartirii cu rest.
Pentru a defini W , se alege un asa-numit polinom generator g(X). W se
defineste ca multimea polinoamelor (din V ) divizibile cu g(X).
Daca m = grad(G(X)), un cuvant de cod poarta nm biti de informatie
si m biti redundanti (de control).

4.3. Coduri detectoare si corectoare de erori

27

Constructia cuvantului de cod se face: v(X) = i(X) X m r(X), unde


i(X) este polinomul corespunzator informatiei utile, iar r(X) este restul mpartirii
lui i(X) X m la g(X).
Verificarea cuvantului receptionat v 0 (X) se face prin mpartire la g(X)
si verificare daca restul este 0. Informatia utila este primii n m biti din v 0 (X).
Daca se doreste corectarea erorilor, se observa ca pozitiile erorilor nu
depind decat de restul mpartirii lui v 0 (X) la g(X).

28

Capitolul 4. Codarea informat


iei

29

Capitolul 5
Nivelul leg
aturii de date

30

turii de date
Capitolul 5. Nivelul lega

31

Capitolul 6
Nivelul retea si nivelul transport
Retele:
comutare de circuite
comutare de pachete
Retele cu comutare de pachete:
retele cu dirijare independenta a pachetelor
retele cu circuite virtuale

6.1

Algoritmi de dirijare
Criterii:

numar de noduri intermediare (hopuri)


distanta (geografica)
cost
ncarcare
Tehnici de calcul a tabelelor de dirijare
informare completa privitoare la legaturile existente
tabele de distante (v. pb. numararii la infinit)
dirijarea pentru multicast arbori de acoperire minimi
dirijare ierarhica
inundare

32

6.2

Capitolul 6. Nivelul retea si nivelul transport

Controlul congestiei

aruncarea pachetelor cele mai vechi sau cele mai noi?


limitarea traficului: galeata gaurita, galeata cu jeton
semnalizarea ncarcarii

6.3

Protocolul IP si protocoalele auxiliare


Antetul IP:

adresa sursa si destinatie cu prefix de retea


timp de viata (numar de salturi)
optiuni de inregistrare a salturilor (pentru traceroute)
protocolul de nivel superior (TCP, UDP, ICMP)
Forma tabelelor de dirijare statice O adresa IP se asociaza unei interfete
de retea
Tabela de dirijare are nregistrari de forma (IP, masca, ruta)
Rezolvarea adresei ARP Scop: gasirea adresei fizice corespunzatoare
unei adrese IP.
Modalitate: se trimite un pachet broadcast in reteaua Ethernet.
ICMP Scop: diagnostic si informare legat de rute.
Pachere ICMP mai des utilizate:
cerere ecou, raspuns ecou;
informare esec dirijare
redirectare (forma extrema de corectare a tabelelor de dirijare)
RARP, BOOTP, DHCP Scop: informare cu privire la propria adresa IP.

6.4

Nivelul transport

Rol: sa faca adaptarea de la primitivele de comunicatie prezentate aplicatiei


la posibilitatile retelei.
Problema: conexiune sigura peste retea bazata pe dirijare independenta
a pachetelor.
Solutia (TCP): se numeroteaza pachetele (octetii, n TCP), si se confirma
independent fiecare numar de pachet.
Numerele de secventa sunt independente pentru cele doua sensuri.
Probleme suplimentare:

6.5. Ret
ele eterogene si ret
ele private

nchiderea si redeschiderea conexiunii


caderea unuia din capete, si uitarea numrelor de secventa folosite

6.5

Retele eterogene si retele private

tunelarea
translatia adreselor

6.6

Retele mobile

redirectarea cu agenti locali si agenti pentru straini

33

34

Capitolul 6. Nivelul retea si nivelul transport

35

Capitolul 7
Metode si protocoale
criptografice
7.1

Deziderate

confidentialitate un mesaj sa nu poata fi nteles decat de catre destinatarul


dorit;
integritatea mesajelor destinatarul unui mesaj sa poata verifica daca mesajul
este identic cu cel emis de emitatorr (ca nu a fost modificat pe traseu);
autentificarea sursei destinatarul sa poata verifica identitatea emitatorului
unui mesaj;
nerepudiabilitate emitatorul unui mesaj sa nu poata nega ulterior emiterea
unui mesaj (destinatarul sa poata proba n justitie faptul ca emitatorul a
emis un anumit mesaj).
Note:
1. Verificarea integritatii si autentificarea au sens doar mpreuna.
2. Nerepudiabilitatea nu are sens fara verificarea integritatii si autentificarea
sursei.

7.2
7.2.1

Asigurarea confidentialit
atii
Criptografia simetric
a

Este cifrarea clasica, n care un mesaj dat, numit text clar (eng: plaintext), este transformat ntr-un asa-numit text cifrat (eng:ciphertext), astfel ncat
numai cineva care cunoaste un anumit secret sa poata reconstitui textul clar
avand la dispozitie doar textul cifrat.
In general, algoritmii folositi la cifrare si la descifrare sunt presupusi
cunoscuti de toata lumea; secretul este un parametru al algoritmului, numit
cheie (eng: key).

36

Capitolul 7. Metode si protocoale criptografice

Not
a: Ideea este ca elaborarea si implementarea unui algoritm nou cere
un efort intens si implica mai multe persoane; de aceea e greu de pastrat secretul
si e si mai greu de schimbat algoritmul oridec
ateori el devine cunoscut din afara.

In plus, publicand algoritmul, exista sanse mari ca, daca acesta este vulnerabil,
s
a aflam de la cineva care doreste doar gloria si eventual banii unei recompense,
nu secretele pazite de algoritm.
Cifrarea se scrie m = ck (p), unde p este textul clar, m este textul cifrat,
k este cheia, iar c este functia (algoritmul) de cifrare.
Descifrarea se scrie p = dk (m). Pentru ca descifrarea sa fie posibila,
trebuie ca dk (ck (p)) = p, p, ceea ce implica cerinta ca ck sa fie injectiva.
criptografia simetrica, adesea ck este bijectiv
Not
a: In
a (atunci ck si dk
sunt una inversa celeilalte) si dk este posibil de folosit pentru cifrare n locul lui
ck .
Atacuri posibile:
atac cu text cifrat: intrusul dispune de textul cifrat si doreste obtinerea textului clar corespunzator;
atac cu text clar cunoscut: intrusul dispune de perechi (pi , mi ) de text clar
si textul cifrat corespunzator, plus un text cifrat m 6= mi pentru care doreste
obtinerea textului clar corespunzator;
atac cu text clar ales: ca si n cazul precedent, dar n plus intrusul poate alege
pi .
In general, un sistem criptografic sigur trebuie sa reziste la atac cu text
clar ales. Ca o consecinta, functia de cifrare, vazuta ca fiind parametrata cu
textul clar si avand ca argument cheia, trebuie sa fie dificil inversabila (eng:
one-way), adica a gasi cheia cunoscand textul clar dat si textul cifrat rezultat sa
necesite cautare aproape exhaustiva n spatiul cheilor.
Exista si protocoale care prevad explicit chei de unica folosinta (cheia
se schimba la fiecare mesaj); la astfel de protocoale atacul cu text clar cunoscut
este imposibil.
Un astfel de sistem este cifrarea cu cheie acoperitoare: cheia este un
sir aleator de biti de lungime egala cu a mesajului, iar cifrarea este operatia
xor ntre fiecare bit din mesaj si bitul corespunzator din cheie. Un argument
probabilistic simplu arata ca cunoasterea textului cifrat nu aduce nici o informatie
asupra textului clar. Dezavantajul metodei este ca cheia este lunga si nu poate
fi refolosita (n cazul refolosirii cheii, mecanismul de cifrare este usor de spart).

7.2.2

Utilizarea practic
a a cifrurilor bloc

Unele din metodele de cifrare pot cifra doar blocuri de lungime fixa (de
ex. 64, 128 sau 256 de biti). Exista cateva metode standard de utilizare a unui
astfel de cifru pentru a cifra o cantitate arbitrara de text:
ECB Electronic Code Book: Textul clar se mparte n blocuri de lungime
egala cu blocul folosit de algoritmul de cifrare. Ultimul bloc se completeaza
cu biti aleatori. Fiecare bloc se cifreaza apoi independent de celelalte.
Este metoda cea mai simpla, dar are cateva dezavantaje:

t
7.2. Asigurarea confident
ialit
a
ii

37

pentru o cheie fixata, un fragment de text clar ncepand de la o pozitie


multiplu de lungimea blocului se cifreaza totdeauna la fel; acest fapt
poate permite atacuri cu text clar cunoscut daca exista fragmente de
text clar care se repeta frecvent;
un intrus care permuta blocurile de text cifrat va obtine permutarea blocurilor corespunzatoare de text clar, chiar daca nu ntelege nimic din
textul cifrat. Desi este citat frecvent, acesta nu este propriu-zis un dezavantaj al metodei ECB: un algoritm de cifrare are ca scop pastrarea
confidentialitatii mesajului, nu controlul integrit
atii.
CBC Cipher Block Chaining: Ca si la ECB, textul clar se mparte n
blocuri si ultimul bloc se completeaza cu biti aleatori. In plus, se alege un sir
de biti aleatori de lungimea unui bloc; acesta se numeste vector de initializare.
Vectorul de initializare se transmite separat sau se stabileste dupa o regula
oarecare. Se efectueaza xor pe biti ntre vectorul de initializare si primul bloc
de text clar; rezultatul se cifreaza si se trimite. Apoi, se face xor ntre fiecare
bloc de text clar si blocul precedent de text cifrat, si rezultatul se cifreaza si
se transmite destinatarului.

7.2.3

Numere aleatoare

Un sistem criptografic utilizeaza numere aleatoare, ntre altele pentru


generarea cheilor si pentru protocoale de autentificare de tip provocare-raspuns.
Spre deosebire de generatoarele de numere aleatoare pentru alte scopuri,
generatoarele de numere aleatoare pentru scopuri criptografice este necesar sa fie
imprevizibile, chiar pentru cineva care cunoaste metoda de generare si chiar o
parte din numerele generate.
Metode folosite:
Generatoare fizice: utilizeaza un fenomen fizic destul de aleator (este similar
aruncarii unui zar). Exemple: zgomotul termic pe un rezistor sau pe un semiconductor, dezintegrarea unei substante radioactive, curentii de aer formati
n interiorul carcasei unui harddisc.
In lipsa unui generator fizic adevarat, se utilizeaza actiunile utilizatorilor
asupra tastaturii sau mouse-ului, ncarcarea sistemului, sosirea pachetelor pe
interfata de retea. Sunt necesare diverse prelucrari pentru a putea obtine
din aceste surse un sir de numere aleatoare de calitate; de asemenea, trebuie
ca cel putin o parte din sursele enumerate mai sus sa nu fie controlate sau
observate de inamic.
Numere pseudoaleatoare: pentru alte aplicatii decat cele criptografice, se genereaza numere pseudo-aleatoare dupa urmatoarea schema: exista o variabila
s care tine starea interna a generatorului. Cand aplicatia are nevoie de un
numar aleator, numarul aleator este extras din starea interna: rt = f (st );
de obicei se extrag o parte din biti. Apoi, starea interna este actualizata cu
ajutorul unei functii care amesteca bine starea interna: st+1 = g(st ). Un
astfel de generator se spune ca este generator de numere pseudoaleatoare.
Pentru a folosi un generator de numere pseudoaleatoare n scopuri criptgrafice
este necesar sa fie indeplinite mai multe conditii:

38

Capitolul 7. Metode si protocoale criptografice

1. Starea initiala (eng: seed) trebuie generata cu un generator fizic, altfel


intreg sirul este previzibil;
2. Starea interna trebuie sa aiba un numar suficient de mare de biti pentru
a rezista unui atac prin forta bruta;
3. Functiile f si g sa fie dificil inversabile, altfel cineva care ar obtine o parte
din numerele din sir ar putea fi capabil sa afle restul sirului. De obicei este
necesar de asemenea ca cineva care reuseste sa obtina (de exemplu, dintrun core dump) starea interna, sa nu fie capabil sa calculeze numerele ce
au fost generate pana n acel moment.

7.2.4

Criptografie asimetric
a (cu cheie public
a)
Criptografia asimetrica presupune urmatoarele:

Cifrarea si descifrarea nu folosesc aceeasi cheie, ci folosesc chei diferite, n


pereche. Vom avea m = ckc (p) si p = dkd (m).
Din cheia folosita la descifrare se poate genera usor cheia corespunzatoare
pentru cifrare; transformarea inversa este nsa foarte dificila: kc = f (kd ),
f bijectiva, si a calcula x = f 1 (y) implica a verifica pentru aproape toate
valorile posibile pentru x daca f (x) = y.
Gasirea lui p cunoscand doar m si kc este la fel de dificila ca si gasirea lui kd
cunoscand kc .
In aceste conditii, receptorul va genera o pereche kd , kc si va putea face
publica kc . Emitatorul poate cifra un mesaj folosind kc , si numai posesorul lui
kd l va putea descifra. De notat ca, daca se doreste comunicatie bidirectionala,
este necesara cate o pereche de chei (kc , kd ) pentru fiecare sens.
Not
a: Algoritmii criptografici asimetrici sunt mult mai lenti dec
at cei
simetrici; din acest motiv, comunicatia propriu-zis
a se cifreaz
a de obicei cu o
metod
a simetrica, si doar cheia de cifrare (sau alte obiecte mici, impuse de protocoale de autentificare) se cifreaza folosind metode asimetrice.

7.3
7.3.1

Autentificarea originii si controlul integrit


atii
Functii de dispersie criptografice

O functie de dispersie (eng: hash function) este n general o functie h care


asociaza unui sir de biti m de o lungime oricate de mare, o valoare ntreaga ntrun interval de forma [0, 2n ) cu n fixat (sau echivalent, un sir de biti de lungime
n); n plus, se cere ca pentru sirurile care apar in problema unde se foloseste
functia de dispersie, doua siruri distincte sa nu aiba aceeasi valoare a functiei de
dispersie cu probabilitate semnificativ mai mare de 2n .
De la o functie de dispersie criptografica se cere n plus:
1. dandu-se h(m), sa fie dificil de regasit m. Eventual, dificultatea sa se pastreze
chiar n cazul cunoasterii unei parti din m.

t
7.3. Autentificarea originii si controlul integrita
ii

39

2. dandu-se un sir m, sa fie dificil de gasit un al doilea sir, m0 6= m astfel ncat


h(m) = h(m0 ).
3. sa fie dificil de gasit m1 6= m2 cu h(m1 ) = h(m2 ).
De remarcat ca cele trei conditii sunt diferite, desi conditia 3 o include
pe 2.
Exemple de functii: md5 (iesire 128 biti), sha1 (iesire 160 biti)

7.3.2

Autentificarea mesajelor

Pentru a putea trimite mesaje autentificate, trebuie ca fie emitatorul si


receptorul sa partajeze o cheie secreta k folosita ntr-un algoritm simetric, fie
emitatorul sa aiba o cheie secreta kd a carei cheie publica corespunzatoare kc sa
o aiba receptorul.
Intr-o prezentare simplificata, emiterea de mesaje autentificate merge pe
una din schemele (m desemneaza mesajul de trimis, h desemneaza o functie de
dispersie criptografica:
Emitatorul trimite (m, s), unde s = ck (h(m)); receptorul primeste (m, s) si
verifica daca s = ck (h(m)).
Mai adesea, se foloseste o varianta n care functia de dispersie criptografica
nglobeaza si cifrarea; o asemenea functie se numeste cod de autentificare
(eng: hash message authentication code HMAC). In varianta aceasta,
emitatorul calculeaza s = hk (m), unde hk este functia cod de autentificare
cu cheia k; el trimite (m, s). Receptorul primeste (m, s) si verifica daca
s = hk (m).
Presupunand ca functia de cifrare a unui sistem asimetric este si surjectiva
(pe o multime cunoscuta), emitatorul calculeza s = dkd (h(m)) si trimite
(m, s). Receptorul primeste (m, s) si verifica daca ckc (s) = h(m).

40

Index
A
AM, Vezi modulatie n amplitudine
B
banda
laterala, 17
F
FM, Vezi modulatie, n frecventa
frecventa
purtatoare, 1617
M
modulatie
n amplitudine, 16
n faza, 17
n frecventa, 17
P
purtatoare, Vezi frecventa, purtatoare