Sunteți pe pagina 1din 410

Ret ele de calculatoare

Principii

Radu-Lucian Lup sa

Aceasta este edit ia electronic a a c art ii Ret ele de calculatoare, publicat a la Casa C art ii de S tiint a, n 2008, ISBN: 978-973-133-377-9. Drepturile de autor apart in subsemnatului, Radu-Lucian Lup sa. Subsemnatul, Radu-Lucian Lup sa, acord oricui dore ste dreptul de a copia cont inutul acestei c art i, integral sau part ial, cu condit ia atribuirii corecte autorului si a p astr arii acestei notit e. Cartea poate desc arcat a gratuit de la adresa http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf

c 2008, Radu-Lucian Lup sa


5

Cuprins

Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de ret ea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei ret ele de calculatoare . . . . . . . . . . 1.3 Premise generale n elaborarea si implementarea protocoalelor n ret ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Not iuni de teoria informat iei 2.1 Problema codic arii informat iei pentru un canal discret . . 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a a codurilor prex . . . . . 2.2.2 Decodicarea n cazul codurilor prex . . . . . . . . . 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informat ie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia sierelor . . . . . . . . . . . . . . . . . . . 2.4 Coduri detectoare si corectoare de erori . . . . . . . . . . . 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare si corectoare de erori . 2.4.3 C ateva coduri detectoare sau corectoare de erori . . . 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii si coloane . . . . . . . . . . . . . 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare si corectoare de erori n alte domenii 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


6 3 Nivelul zic 3.1 Problema transmisiei informat iei la nivelul zic . . . . . . . 3.2 Transmiterea semnalelor . . . . . . . . . . . . . . . . . . . . 3.2.1 Modic arile suferite de semnale . . . . . . . . . . . . . . 3.2.2 Analiza transmiterii semnalelor cu ajutorul transformatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Codicarea informat iei prin semnale continue . . . . . . . . 3.3.1 Scheme de codicare . . . . . . . . . . . . . . . . . . . . 3.3.2 Modulat ia . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Multiplexarea n frecvent a . . . . . . . . . . . . . . . . 3.3.4 Capacitatea maxim a a unui canal de comunicat ie . . . . 3.4 Transmisia prin perechi de conductoare . . . . . . . . . . . . 3.4.1 Construct ia cablului . . . . . . . . . . . . . . . . . . . . 3.4.2 Propriet a ti ale mediului . . . . . . . . . . . . . . . . . . 3.4.3 Leg atur a magistral a . . . . . . . . . . . . . . . . . . . . 3.4.4 Considerente practice . . . . . . . . . . . . . . . . . . . 3.5 Transmisia prin unde radio . . . . . . . . . . . . . . . . . . . 3.5.1 Propagarea undelor . . . . . . . . . . . . . . . . . . . . 3.5.1.1 Polarizarea . . . . . . . . . . . . . . . . . . . . . . 3.5.1.2 Absorbt ia si reexia . . . . . . . . . . . . . . . . . 3.5.1.3 Difract ia . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1.4 Interferent a undelor . . . . . . . . . . . . . . . . . 3.5.1.5 Divergent a undelor . . . . . . . . . . . . . . . . . . 3.5.2 Antene . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2.1 Directivitatea . . . . . . . . . . . . . . . . . . . . . 3.5.2.2 Polarizarea . . . . . . . . . . . . . . . . . . . . . . 3.5.2.3 Tipuri de antene . . . . . . . . . . . . . . . . . . . 3.5.3 Raza de act iune a unei leg aturi radio . . . . . . . . . . 3.5.3.1 Obstacolele . . . . . . . . . . . . . . . . . . . . . . 3.5.3.2 Linia orizontului . . . . . . . . . . . . . . . . . . . 3.5.3.3 Utilizarea satelit ilor articiali ai P am antului . . . . 3.5.3.4 Zgomotul . . . . . . . . . . . . . . . . . . . . . . . 3.5.3.5 Sc aderea puterii cu distant a . . . . . . . . . . . . . 3.5.3.6 Emisia direct ionat a si polarizat a . . . . . . . . . . 3.5.4 Spectrul radio si alocarea lui . . . . . . . . . . . . . . . 3.5.5 Particularit a ti ale sistemelor de comunicat ie prin radio 3.5.5.1 Topologia leg aturii . . . . . . . . . . . . . . . . . . 3.5.5.2 Fiabilitatea . . . . . . . . . . . . . . . . . . . . . . 3.5.5.3 Securitatea . . . . . . . . . . . . . . . . . . . . . . 3.6 Transmisia optic a . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Construct ia mediului . . . . . . . . . . . . . . . . . . . 3.6.1.1 Conectarea brelor optice . . . . . . . . . . . . . . 3.6.2 Propagarea semnalului optic . . . . . . . . . . . . . . . 3.6.2.1 Moduri de propagare . . . . . . . . . . . . . . . . . Cuprins 59 59 60 60 62 65 65 68 71 71 72 72 74 75 76 77 78 78 79 79 80 80 80 81 83 83 83 83 84 84 85 86 86 86 88 88 89 89 89 90 91 91 91

. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

c 2008, Radu-Lucian Lup sa


Cuprins 3.6.2.2 Caracteristici ale mediului . . . . . . . . . . . . . . . . . . . 3.6.2.3 Multiplexarea n lungimea de und a . . . . . . . . . . . . . . 3.6.3 Considerente practice . . . . . . . . . . . . . . . . . . . . . . . . 4 Nivelul leg aturii de date 4.1 Detectarea si corectarea erorilor . . . . . . . . . . . . . . . . . . . . 4.2 Controlul accesului la mediu . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Protocoale bazate pe asigurarea unui interval exclusiv de emisie 4.2.2 Protocoale bazate pe coliziuni si retransmitere . . . . . . . . . 4.2.3 Protocoale mixte . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Retransmiterea pachetelor pierdute . . . . . . . . . . . . . . . . . . 4.3.1 Principiul conrm arilor pozitive si retransmiterilor . . . . . . . 4.3.2 Trimiterea n avans a mai multor pachete . . . . . . . . . . . . 4.3.3 Spat iul numerelor de conrmare . . . . . . . . . . . . . . . . . 4.4 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cereri de suspendare si de continuare . . . . . . . . . . . . . . 4.4.2 Mecanismul pas cu pas . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Mecanism combinat cu retransmiterea pachetelor pierdute . . . 4.5 Multiplexarea n timp . . . . . . . . . . . . . . . . . . . . . . . . . . Nivelul ret ea si nivelul transport 5.1 Retransmiterea datelor de c atre nodurile intermediare . . . . . . . . 5.1.1 Retransmiterea n ret ele bazate pe datagrame . . . . . . . . . . 5.1.2 Retransmiterea n ret ele bazate pe conexiuni . . . . . . . . . . 5.2 Algoritmi de dirijare . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Calculul drumurilor cu informat ii complete despre graful ret elei 5.2.2 Calculul drumurilor optime prin schimb de informat ii de distant a 5.2.3 Dirijarea ierarhic a . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 Metode particulare de dirijare . . . . . . . . . . . . . . . . . . 5.2.4.1 Inundarea . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4.2 Inv a tarea rutelor din adresele surs a ale pachetelor . . . . 5.2.5 Metode de difuziune . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Funct ionarea la trac ridicat . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Alegerea pachetelor de transmis . . . . . . . . . . . . . . . . . 5.3.2 Controlul congestiei . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Formarea (limitarea) tracului . . . . . . . . . . . . . . . . . . 5.3.4 Rezervarea resurselor . . . . . . . . . . . . . . . . . . . . . . . 5.4 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Interconectarea ret elelor . . . . . . . . . . . . . . . . . . . . . . . . Metode si protocoale criptograce 6.1 Asigurarea condent ialit a tii . . . 6.1.1 Introducere . . . . . . . . . . 6.1.2 Refolosirea cheilor . . . . . . 6.1.3 Problema spargerii unui cifru 7 92 92 93 95 96 97 98 99 101 102 103 108 109 114 115 115 116 117 119 120 122 122 125 127 128 136 139 139 140 140 141 142 143 144 145 146 147 149 151 151 154 155

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

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

c 2008, Radu-Lucian Lup sa


8 6.1.4 Algoritmi de criptare utilizat i n practic a . . . . . . . . . . 6.1.5 Criptograe asimetric a (cu cheie public a) . . . . . . . . . . 6.1.5.1 Utilizarea criptograei asimetrice . . . . . . . . . . . . 6.2 Autenticarea mesajelor . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Funct ii de dispersie criptograce . . . . . . . . . . . . . . . 6.2.1.1 Utilizarea funct iilor de dispersie . . . . . . . . . . . . . 6.2.2 Funct ii de dispersie cu cheie . . . . . . . . . . . . . . . . . . 6.2.3 Semn atura digital a . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Vericarea prospet imii mesajelor . . . . . . . . . . . . . . . 6.2.5 Combinarea cript arii, autentic arii si veric arii prospet imii 6.3 Stabilirea cheilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Stabilirea cheilor n prezent a unui adversar pasiv . . . . . . 6.3.1.1 Stabilirea cheilor prin criptograe asimetric a . . . . . 6.3.1.2 Stabilirea cheii prin metoda Die-Hellman . . . . . . 6.3.1.3 Atacul man-in-the-middle . . . . . . . . . . . . . . . . 6.3.2 Stabilirea cheilor n prezent a unui adversar activ . . . . . . 6.3.3 Stabilirea cheilor cu ajutorul unui tert de ncredere . . . . . 6.3.4 Certicarea cheilor publice . . . . . . . . . . . . . . . . . . 6.3.5 Transportul prin utilizatori umani . . . . . . . . . . . . . . 6.4 Numere aleatoare . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Generatoare zice . . . . . . . . . . . . . . . . . . . . . . . 6.4.2 Generatoare de numere pseudoaleatoare . . . . . . . . . . . 6.4.3 Generatoare utilizate n practic a . . . . . . . . . . . . . . . 6.5 Autenticarea utilizatorilor . . . . . . . . . . . . . . . . . . . . . 6.5.1 Stocarea parolelor . . . . . . . . . . . . . . . . . . . . . . . 6.5.2 Parole de unic a folosint a . . . . . . . . . . . . . . . . . . . Cuprins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 163 164 165 166 167 168 169 171 173 173 176 176 177 178 178 180 182 183 185 186 186 188 188 188 189

Protocoale
Cuprins 7 Codic ari de interes practic 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezent ari pe bit i . . . . . . . . . . . . . . . . . . . . . . 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 S iruri de bit i . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe bit i a numerelor ntregi . . . . . . . 7.1.2 Reprezent ari pe octet i . . . . . . . . . . . . . . . . . . . . . 7.1.2.1 Octet i . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 S iruri de octet i . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un num ar ntreg de octet i 7.1.2.4 Reprezentarea numerelor pe un sir arbitar de bit i . . . 7.1.3 Probleme privind reprezentarea lungimii sirurilor . . . . . . 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214

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

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

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

c 2008, Radu-Lucian Lup sa


Cuprins 7.2 Codicarea textelor . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Codicarea ASCII . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Codic arile ISO-8859 . . . . . . . . . . . . . . . . . . . . 7.2.3 Codic arile Unicode . . . . . . . . . . . . . . . . . . . . . 7.2.3.1 Codicarea UTF-8 . . . . . . . . . . . . . . . . . . . 7.2.3.2 Codic arile UTF-16 . . . . . . . . . . . . . . . . . . 7.2.3.3 Codic arile UTF-32 . . . . . . . . . . . . . . . . . . 7.3 Reprezentarea datei si orei . . . . . . . . . . . . . . . . . . . . 7.3.1 M asurarea timpului . . . . . . . . . . . . . . . . . . . . . 7.3.2 Obiectivele n alegerea reprezent arii timpului n calculator 7.3.3 Formate utilizate n practic a . . . . . . . . . . . . . . . . 7.3.3.1 Formatul utilizat de po sta electronic a . . . . . . . . 7.3.3.2 ISO-8601 si RFC-3339 . . . . . . . . . . . . . . . . . 7.3.3.3 Timpul POSIX . . . . . . . . . . . . . . . . . . . . . 7.3.3.4 TAI 64 . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Recodic ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.1 Codicarea hexazecimal a . . . . . . . . . . . . . . . . . . 7.4.2 Codicarea n baza 64 . . . . . . . . . . . . . . . . . . . . 7.4.3 Codic ari bazate pe secvent e de evitare . . . . . . . . . . 8 Programarea n ret ea introducere 8.1 Interfat a de programare socket BSD . . . . . . . . . . 8.1.1 Comunicat ia prin conexiuni . . . . . . . . . . . . 8.1.1.1 Deschiderea conexiunii de c atre client . . . 8.1.1.2 Deschiderea conexiunii de c atre server . . . 8.1.1.3 Comunicat ia propriu-zis a . . . . . . . . . . 8.1.1.4 Inchiderea conexiunii . . . . . . . . . . . . . 8.1.2 Comunicat ia prin datagrame . . . . . . . . . . . 8.1.3 Principalele apeluri sistem . . . . . . . . . . . . 8.1.3.1 Funct ia socket() . . . . . . . . . . . . . . . 8.1.3.2 Funct ia connect() . . . . . . . . . . . . . . 8.1.3.3 Funct ia bind() . . . . . . . . . . . . . . . . 8.1.3.4 Funct ia listen() . . . . . . . . . . . . . . . 8.1.3.5 Funct ia accept() . . . . . . . . . . . . . . . 8.1.3.6 Formatul adreselor . . . . . . . . . . . . . . 8.1.3.7 Interact iunea dintre connect(), listen() si 8.1.3.8 Funct iile getsockname() si getpeername() 8.1.3.9 Funct iile send() si recv() . . . . . . . . . 8.1.3.10 Funct iile shutdown() si close() . . . . . . 8.1.3.11 Funct iile sendto() si recvfrom() . . . . . 8.1.4 Exemple . . . . . . . . . . . . . . . . . . . . . . 8.1.4.1 Comunicare prin conexiune . . . . . . . . . 8.1.4.2 Comunicare prin datagrame . . . . . . . . . 8.2 Formatarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 215 216 217 218 220 220 221 221 222 224 225 225 226 227 227 228 228 229 229 231 231 232 233 233 234 234 235 237 237 237 238 239 239 240 242 242 243 245 245 246 246 249 252

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

c 2008, Radu-Lucian Lup sa


10 8.2.1 Formate binare . . . . . . . . . . . . . . . 8.2.1.1 Tipuri ntregi . . . . . . . . . . . . . 8.2.1.2 S iruri de caractere si tablouri . . . . 8.2.1.3 Variabile compuse (struct-uri) . . . 8.2.1.4 Pointeri . . . . . . . . . . . . . . . . 8.2.2 Formate text . . . . . . . . . . . . . . . . 8.2.3 Probleme de robustet e si securitate . . . 8.2.4 Probleme privind costul apelurilor sistem 8.3 Probleme de concurent a n comunicat ie . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cuprins . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 252 254 255 257 257 257 258 260 263 263 266 272 274 277 279 279 279 280 280 281 281 282 283 283 285 286 286 291 291 292 293 294 294 295 296 298 298 300 300 301 301

Ret ele IEEE 802 9.1 Ret ele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Leg aturi punct la punct prin perechi de conductoare 9.1.2 Leg aturi prin bre optice . . . . . . . . . . . . . . . 9.1.3 Leg aturi prin cablu magistral a . . . . . . . . . . . . 9.1.4 Repetoarele si comutatoarele . . . . . . . . . . . . . 9.1.5 Dirijarea efectuat a de comutatoare (switch-uri) . . . 9.1.6 Facilit a ti avansate ale switch-urilor . . . . . . . . . . 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz a de adrese MAC . . . . . . . . 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Leg aturi redundante . . . . . . . . . . . . . . . 9.1.6.5 Ret ele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei ret ele . . . . . 9.2 Ret ele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea ret elelor 802.11 . . . . . . . . . . . . . .

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

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

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

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

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

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

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

10 Internetul 10.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirij arii pachetelor IP . . . . . . . . 10.2.2.1 Subret ele si interfet e . . . . . . . . . . 10.2.2.2 Prexul de ret ea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor si prexelor . . 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de ret ea . . . . . . . 10.2.4 Alocarea adreselor IP si prexelor de ret ea 10.2.4.1 Alocarea pe utiliz ari . . . . . . . . . . 10.2.4.2 Alocarea adreselor si dirijarea ierarhic a

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

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

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

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

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

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

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


Cuprins 10.2.5 Erori la dirijare si protocolul ICMP . . . . . . . . . . . . . . . . 10.2.5.1 Pachete nelivrabile . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.2 Diagnosticarea funct ion arii rutelor . . . . . . . . . . . . . . 10.2.5.3 Ciclarea pachetelor IP . . . . . . . . . . . . . . . . . . . . . 10.2.5.4 Congestia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.5 Redirect ionarea . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 Alte chestiuni privind dirijarea pachetelor . . . . . . . . . . . . . 10.2.6.1 Dimensiunea maxim a a pachetelor si fragmentarea . . . . . 10.2.6.2 Calitatea serviciului . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Congurarea si testarea unei ret ele IP locale . . . . . . . . . . . 10.2.7.1 Alegerea parametrilor . . . . . . . . . . . . . . . . . . . . . 10.2.7.2 Congurarea parametrilor de ret ea pe diverse sisteme de operare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7.3 Testarea si depanarea ret elelor . . . . . . . . . . . . . . . . 10.3 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Conexiuni cu livrare garantat a: protocolul TCP . . . . . . . . . 10.3.1.1 Principiul conexiunii TCP . . . . . . . . . . . . . . . . . . . 10.3.1.2 Comunicat ia bidirect ional a . . . . . . . . . . . . . . . . . . 10.3.1.3 Deschiderea si nchiderea conexiunii . . . . . . . . . . . . . 10.3.1.4 Alegerea num arului init ial de secvent a . . . . . . . . . . . . 10.3.1.5 Inchiderea fort at a a conexiunii . . . . . . . . . . . . . . . . 10.3.1.6 Identicarea aplicat iei destinat ie . . . . . . . . . . . . . . . 10.3.1.7 Corespondent a ntre funct iile socket() si act iunile modulului TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.8 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.9 Stabilirea time-out-ului pentru retransmiterea pachetelor . . 10.3.1.10Algoritmul lui Nagle si optimizarea num arului de pachete . 10.3.1.11Trimiterea datelor speciale (out of band) . . . . . . . . . . . 10.3.2 Datagrame nesigure: UDP . . . . . . . . . . . . . . . . . . . . . 10.4 Identicarea nodurilor dup a nume: sistemul DNS . . . . . . . . . . . 10.4.1 Numele de domeniu . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Structura logic a a bazei de date DNS . . . . . . . . . . . . . . . 10.4.3 Imp art irea n domenii de autoritate . . . . . . . . . . . . . . . . 10.4.4 Mecanismul de interogare a serverelor . . . . . . . . . . . . . . . 10.4.5 Sincronizarea serverelor pentru un domeniu . . . . . . . . . . . . 10.4.6 C autarea numelui dup a IP . . . . . . . . . . . . . . . . . . . . . 10.5 Leg aturile directe ntre nodurile IP . . . . . . . . . . . . . . . . . . . 10.5.1 Rezolvarea adresei ARP . . . . . . . . . . . . . . . . . . . . . 10.6 Congurarea automat a a stat iilor DHCP . . . . . . . . . . . . . . 10.7 Situat ii speciale n dirijarea pachetelor . . . . . . . . . . . . . . . . . 10.7.1 Filtre de pachete (rewall) . . . . . . . . . . . . . . . . . . . . . 10.7.2 Ret ele private . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.3 Translat ia adreselor (NAT) . . . . . . . . . . . . . . . . . . . . . 10.7.3.1 Translat ia adresei surs a . . . . . . . . . . . . . . . . . . . . 11 302 303 305 305 306 306 307 307 308 309 309 312 313 314 314 315 320 320 323 324 325 326 327 327 328 328 329 330 330 332 333 334 335 336 337 337 339 341 341 346 347 347

c 2008, Radu-Lucian Lup sa


12 Cuprins 10.7.3.2 Translat ia adresei destinat ie . . . . . . . . . . . . . . . . . . 350 10.7.4 Tunelarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 11 Aplicat ii n ret ele 11.1 Po sta electronic a . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1 Formatul mesajelor . . . . . . . . . . . . . . . . . . . 11.1.1.1 Antetul mesajelor . . . . . . . . . . . . . . . . . . 11.1.1.2 Extensii MIME . . . . . . . . . . . . . . . . . . . 11.1.1.3 Ata sarea sierelor si mesaje din mai multe p art i 11.1.1.4 Codicarea corpului mesajului si a ata samentelor 11.1.2 Transmiterea mesajelor . . . . . . . . . . . . . . . . . 11.1.2.1 Protocolul SMTP . . . . . . . . . . . . . . . . . . 11.1.2.2 Determinarea urm atorului MTA . . . . . . . . . 11.1.2.3 Congurarea unui MTA . . . . . . . . . . . . . . 11.1.3 Securitatea po stei electronice . . . . . . . . . . . . . . 11.2 Sesiuni interactive la distant a . . . . . . . . . . . . . . . . 11.2.1 Protocolul ssh . . . . . . . . . . . . . . . . . . . . . . 11.2.1.1 Conexiunea ssh protejat a criptograc . . . . . . 11.2.1.2 Metode de autenticare n ssh . . . . . . . . . . . 11.2.1.3 Multiplexarea conexiunii, tunelarea si aplicat ii . 11.2.2 Sistemul X-Window . . . . . . . . . . . . . . . . . . . 11.3 Transferul sierelor n ret ea . . . . . . . . . . . . . . . . . 11.3.1 Protocolul ftp . . . . . . . . . . . . . . . . . . . . . . 11.3.2 Protocolul HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.1 Structura cererilor si a r aspunsurilor . . . . . . . 11.3.2.2 URL-urile . . . . . . . . . . . . . . . . . . . . . . 11.3.2.3 Alte facilit a ti HTTP . . . . . . . . . . . . . . . . 11.3.2.4 Proxy HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.5 Conexiuni securizate: SSL/TLS . . . . . . . . . . 11.3.2.6 Utilizarea TLS pentru web . . . . . . . . . . . . 11.4 PGP/GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.1 Structura cheilor GnuPG . . . . . . . . . . . . . . . . 11.4.1.1 Chei primare si subchei . . . . . . . . . . . . . . 11.4.1.2 Utilizatori si identit a ti . . . . . . . . . . . . . . . 11.4.1.3 Generarea si modicarea cheilor . . . . . . . . . . 11.4.1.4 Controlul perioadei de valabilitate a cheilor . . . 11.4.1.5 Gestiunea cheilor secrete . . . . . . . . . . . . . . 11.4.2 Transmiterea si certicarea cheilor publice . . . . . . . 11.4.2.1 Transmiterea cheilor publice . . . . . . . . . . . . 11.4.2.2 Vericarea autenticit a tii cheilor . . . . . . . . . . 11.4.3 Transmiterea mesajelor criptate sau semnate . . . . . Bibliograe Index 353 353 354 355 358 359 360 362 362 365 366 368 371 373 373 376 379 379 380 381 382 383 384 385 386 387 389 390 390 391 392 392 393 395 395 395 397 399 401 405

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


13

Prefat a

In contextul prezent al dezvolt arii ret elelor de calculatoare, este inutil s a mai subliniem important a acestui domeniu. Lucrarea de fat a se adreseaz a n principal programatorilor de aplicat ii n ret ea si administratorilor de ret ele complexe. Sunt presupuse, din partea cititorului, cuno stint e de baz a de programare, precum si privind funct ionarea sistemelor de operare. Ca un avertisment pentru programatori, ment ion am c a, de si lucrarea trateaz a chestiuni de nivel mult mai cobor at dec at cel al platformelor si bibliotecilor utilizate n mod normal n aplicat iile n ret ea, este totu si util a n vederea unei bune nt elegeri a acestor platforme si biblioteci. Tot ceea ce are leg atur a ntr-un fel sau altul cu calculatoare are dou a caracteristici: se dezvolt a foarte repede si est foarte complex. Ret elele de calculatoare nu fac except ie. Ca urmare, este extrem de u sor pentru oricine s a se piard a n nenum aratele detalii n permanent a schimbare. Consider am c a, n orice domeniu, o bun a prezentare trebuie s a porneasc a de la principiile de baz a. Principiile de baz a se sunt (relativ) simple si evolueaz a mult mai lent dec at construct iile tehnice elaborate pe baza lor. In consecint a, prima parte a lucr arii de fat a, principii, este dedicat a studierii problemelor ce trebuie rezolvate de o ret ea de calculatoare, precum si a principiilor construct iei posibilelor solut ii ale acestor probleme. Partea a doua a lucr arii, protocoale, prezint a c ateva dintre cele mai r asp andite protocoale si mecanisme utilizate n ret elele de calculatoare. Ea este construit a pentru a oferi cititorului o privire de ansamblu asupra protocoalelor studiate. Aceast a privire de ansamblu poate sucient a pentru unii cititori, n caz contrar ind probabil necesar a citirea efectiv a a standardelor. Lucrarea de fat a este rodul experient ei autorului n activit a ti legate de administrarea ret elei de calculatoare a Departamentului de Informatic a al Facult a tii de Matematic a si Informatic a din cadrul Universit a tii Babe s-Bolyai Cluj-Napoca, n predarea unui curs de Ret ele de calculatoare la aceast a fac-

c 2008, Radu-Lucian Lup sa


14 Prefat a

ultate, precum si din activitatea de cercetare desf a surat a de-a lungul anilor, n special de nevoile practice din cadrul contractului de cercetare PNII 11003/2007 - Sistem decizional bazat pe tehnici de tip multi-agent pentru generarea, optimizarea si managementul registrelor nationale de boli cronice netransmisibile CRONIS. Seturile mari de date ce se vehiculeaz a n sistemul medical, precum si nevoia de condent ialitate si securitate a lor, cer o foarte bun a cunoa stere si punere n practic a a not iunilor legate de codicarea informat iei, de metode si protocoale criptograce, de aplicat ii n ret ele etc.

c 2008, Radu-Lucian Lup sa


15

Capitolul 1

Introducere

Prin ret ea de calculatoare nt elegem un sistem (const and din componente hard si soft) care interconecteaz a ni ste calculatoare, permit and unor programe ce se execut a pe aceste calculatoare s a comunice ntre ele. De notat c a, n uzul comun, termenul de ret ea de calculatoare mai are si sensul de sistem de calcul, construit din mai multe calculatoare interconectate ntr-o ret ea, care se comport a ca un sistem unitar, de exemplu, prezint a acelea si conturi de utilizatori pe toate calculatoarele.

1.1. Serviciile oferite de ret ea


Se spune c a orice problem a bine formulat a este pe jum atate rezolvat a. Prin urmare, pentru nceput, vom stabili mai exact ce se dore ste de la o ret ea de calculatoare. Intr-o ret ea de calculatoare avem mai multe calculatoare pe care se execut a procese utilizator. Rolul ret elei este de-a oferi acestor procese posibilitatea de-a comunica ntre ele. Din punctul de vedere al programatorului acestor procese, ret eaua ofer a ni ste funct ii, din nucleul sistemului de operare sau din biblioteci standard, apelabile de c atre aceste procese (g. 1.1). Ansamblul acestor funct ii constituie interfat a de programare (engl. API Application Programming Interface ) a ret elei. Principalele funct ii oferite de ret ea, apelabile de c atre un proces utilizator, sunt o funct ie care trimite date de la procesul curent spre partenerul sau partenerii de comunicat ie si o funct ie care recept ioneaz a datele trimise spre procesul curent. In aceste funct ii este necesar a desemnarea destinatarului spre care procesul emit ator dore ste transmiterea datelor, respectiv a emit atorului dinspre care procesul receptor solicit a s a primeasc a date. In acest scop, ecare

c 2008, Radu-Lucian Lup sa


16 Proces surs a calculator 1.1. Serviciile oferite de ret ea Proces destinat ie calculator recv()

interfat a de programare (API) send()

Ret ea

Figura 1.1: Ret eaua de calculatoare, din punctul de vedere al proceselor aplicat ie. Funct ionalitatea ret elei este oferit a prin funct ii apelabile din procesele utilizator. Ret eaua ofer a o aplicat iilor o cale de transmisie a datelor (linia punctat a). Construct ia efectiv a a ret elei nu este vizibil a aplicat iilor.

entitate ce poate comunica n ret ea trebuie s a aib a asociat a o adres a (un sir de bit i, construit dup a anumite reguli, identic and unic o anumit a entitate). Pe l ang a aceste funct ii de baz a, ret eaua mai ofer a funct ii pentru congurarea diferit ilor parametrii. O parte dintre ace sti parametri xeaz a rolul si locul diverselor componente n cadrul ret elei (de exemplu, ecare calculator trebuie s a- si cunoasc a propria adres a). Alt i parametrii sunt legat i de calitatea serviciilor oferite de ret ea (debit de transfer de date, timp de propagare, etc). Datele transmise de procesele utilizator sunt de obicei siruri arbitrare de octet i. Rolul ret elei este de-a transmite ntocmai sirul de octet i trimis de procesul surs a c atre procesul destinat ie. Semnicat ia, pentru procesul destinat ie, a unui sir de octet i transmis face obiectul unei nt elegeri (protocol ) ntre procesele utilizator. La proiectarea ret elei nu ne intereseaz a ce fac procesele utilizator cu datele transferate; la proiectarea programelor utilizator nu ne intereseaz a cum lucreaz a ret eaua pentru a transmite datele. In continuare vom trece n revist a principalele caracteristici ale serviciului oferit de ret ea proceselor de aplicat ie. O comunicat ie poate , dup a num arul destinatarilor: punct la punct , dac a exist a un singur destinatar. In mod obi snuit, destinatarul este select ionat explicit de c atre procesul emit ator; o astfel de comunicat ie este numit a unicast . Uneori ns a, de exemplu n cazul n care un serviciu este oferit de mai multe servere, echivalente din punctul de vedere al clientului, este favorabil ca ret eaua s a aleag a destinatarul comunicat iei, n funct ie de distant a fat a de emit ator, dintr-o mult ime

c 2008, Radu-Lucian Lup sa


Capitolul 1. Introducere 17

specicat a de destinatari posibili. Un astfel de comunicat ie se nume ste anycast . difuziune , dac a exist a mai mult i destinatari. Distingem difuziune complet a (engl. broadcast ), n care destinatari sunt toate calculatoarele dintro ret ea, si difuziune selectiv a (engl. multicast ), n care destinatarii sunt o submult ime aleas a a calculatoarelor din ret ea. Serviciul de comunicat ie oferit de ret ea poate de tip conexiune sau de tip transport de datagrame : In cazul conexiunilor, n cadrul comunicat iei ntre dou a procese se disting trei faze: - deschiderea conexiunii, n cadrul c areia sunt f acute ni ste preg atiri, inclusiv alocarea unor resurse pentru comunicat ie; - comunicat ia propriu-zis a, n care unul sau ambele procese transmite un sir de pachete sau de bit i celuilalt proces; - nchiderea conexiunii, n cadrul c areia se elibereaz a resursele alocate la deschidere. In cazul transportului de datagrame, procesul emit ator preg ate ste un ansamblu, numit datagram a (prin analogie cu telegram a ), cuprinz and un sir de bit i destinat procesului receptor si anumite informat ii necesare livr arii (adresa destinatarului). Apoi transmite datagrama ret elei de calculatoare, care o transmite procesului receptor. Mai multe datagrame trimise de acela si proces surs a c atre acela si proces destinat ie sunt transmise independent una de alta, ceea ce duce, n general, la posibilitatea invers arii ordinii de recept ie fat a de ordinea de emisie a datagramelor. Principalii parametri de calitate ai serviciului oferit de ret ea sunt: Capacitatea de transport oferit a de ret ea, sau debitul maxim acceptat , este raportul dintre num arul de bit i transportat i n cadrul unei comunicat ii si timpul n care ace stia sunt transmi si. Echivalent, capacitatea este inversul duratei medii ntre trecerea, printr-un punct dat al ret elei, a doi bit i consecutivi ai unei comunicat ii. Timpul de transfer a unui bloc de date este timpul scurs de la trecerea, printr-un punct dat, a primului bit al blocului p an a la trecerea, prin acela si punct, a ultimului bit. Timpul de transfer este egal cu raportul dintre dimensiunea blocului si debitul cu care se face transferul. Capacitatea oferit a de ret ea unei leg aturi poate s a varieze datorit a variat iei debitului altor comunicat ii care partajeaz a acelea si echipamente.

c 2008, Radu-Lucian Lup sa


18 1.1. Serviciile oferite de ret ea

Exist a aplicat ii, de exemplul legate de transfer de siere, pentru care este important ca ret eaua s a ofere o capacitate medie c at mai mare. Penttru alte aplicat ii, cum ar telefonia, transmisia video (de exemplu pentru teleconferint e) sau alte aplicat ii n timp real, este important s a nu scad a niciodat a capacitatea leg aturii sub o anumit a valoare minim a, ns a o capacitate mai mare nu este util a. Timpul de propagare ntre dou a entit a ti este timpul scurs ntre momentul n care entitatea surs a emite un bit si momentul n care acel bit ajunge la destinat ie. Timpul de propagare rezult a din nsumarea timpului de propagare a semnalului de-a lungul mediului de comunicat ie cu diver sii timpi de a steptare a datelor n diverse zone tampon. De remarcat c a timpul de propagare a semnalului este egal cu distant a de la emit ator la receptor mp art it a la viteza de propagare a semnalului, iar viteza de propagare nu poate dep a si viteza luminii n vid; din acest motiv, de exemplu, timpul de propagare prin leg aturi prin satelit nu poate mai scurt de c ateva zecimi de secund a. Timpul scurs de la nceputul transmisiei unui bloc de date de c atre emit ator p an a la nalul recept iei blocului de c atre receptor este egal cu suma dintre timpul de transfer si timpul de propagare. Uneori, n loc de timpul de propagare se utilizeaz a o alt a m arime, timpul dus- ntors , care este timpul scurs de la transmiterea unui mesaj de c atre o partenerul de comunicat ie p an a la primirea r aspunsului din partea acestuia. Timpul dus- ntors este suma dintre timpii de propagare pentru cele dou a sensuri si timpul de procesare pentru crearea r aspunsului. Evident, timpul de propagare e bine s a e c at mai scurt, ns a diferite aplicat ii au cerint e diferite: - La unele aplicat ii timpul de propagare nu este prea important. De exemplu, la transferul unui sier mare, la care oricum timpul de transfer este mare, timpul de propagare inuent eaz a foarte put in timpul total necesar transmiterii sierului. - La difuzarea de materiale audio sau video, un timp de propagare mare nu este deranjant, ns a este important ca el s a e constant n timp. Aceasta pentru c a nu este deranjant dac a o transmisie de televiziune este cu c ateva secunde n nt arziere fat a de evenimentele transmise, ns a este important s a nu e momente n care imaginea ,, ngheat a datorit a cre sterii timpului de propagare si momente n care imaginea ,,sare nainte datorit a scurt arii timpului de propagare.

c 2008, Radu-Lucian Lup sa


Capitolul 1. Introducere 19

- Timpul de propagare (sau, echivalent, timpul dus- ntors) este important s a e scurt n special pentru aplicat ii n care entit a tile ce comunic a transmit mesaje scurte si trebuie s a a stepte r aspunsul la mesajul precedent pentru a putea genera mesajul urm ator. Exemple de astfel de aplicat ii sunt: telefonie, videoconferint e, sesiuni interactive la distant a. Posibilitatea existent ei erorilor de transmisie: Erorile de transmisie apar ca urmare a diverselor perturbat ii ce afecteaz a transmiterea semnalelor. Exist a metode de-a mic sora oric at de mult probabilitatea ca un mesaj s a e afectat de erori, ns a niciodat a aceast a probabilitate nu poate f acut a zero (probabilitatea unei erori poate f acut a ns a mai mic a dec at, de exemplu, probabilitatea unui cataclism devastator care s a distrug a toat a ret eaua). Metodele de reducere a probabilit a tii erorilor de transmisie sunt studiate n 2.4 si 4.1. Transmisia sigur a nseamn a ca ecare mesaj al entit a tii surs a s a ajung a exact ntr-un singur exemplar la destinat ie (s a nu se piard a si s a nu e duplicat) si mai multe mesaje transmise de c atre o aceea si surs a spre o aceea si destinat ie s a ajung a la destinat ie n ordinea n care au fost transmise de surs a. Mesajele se pot pierde datorit a erorilor de transmisie, a supraaglomer arii sau a defect arii unor echipamente din ret ea sau chiar din cauz a c a emit atorul transmite cu debit mai mare dec at este capabil receptorul s a preia informat ia transmis a. Duplicarea sau inversarea mesajelor pot cauzate de modic ari ale conguratiei sau nc arc arii ret elei n timpul trecerii pachetelor prin ret ea. Realizarea transmisiei sigure este studiat a n 4.3 si 4.4. Transmisia sigur a este evident util a, ns a vine cu un anumit cost. Cel mai adesea, costul este cre sterea si uctuat ia timpului de propagare, deoarece mesajele pierdute trebuie retransmise. La o transmisie audiovideo, este adesea preferabil a p astrarea unui timp de propagare redus, cu pret ul pierderii, din c and n c and, a unor fract iuni de secund a de material audio-video. Securitatea comunicatiei nseamn a c a un adversar care controleaz a o parte din ret ea s a nu poat a obt ine informat ia transmis a, s a nu poat a modica datele transmise f ar a ca acest lucru s a e detectat de c atre receptor si s a nu poat a impersona vreuna dintre entit a tile ce comunic a. Securitatea comunicat iei se obt ine prin metode criptograce, studiate n capitolul 6.

c 2008, Radu-Lucian Lup sa


20 1.2. Principalele elemente ale unei ret ele de calculatoare

1.2. Principalele elemente ale unei ret ele de calculatoare


Pentru ca dou a dispozitive aate la distant a unul de cel alalt s a poat a comunica, este nevoie ca cele dou a dispozitive s a e legate printr-un mediu de comunicat ie care permite propagarea variat iei unei m arimi zice. Mediul zic, mpreun a cu dispozitivele de adaptare ntre reprezentarea local a a informat iei si reprezentarea pe mediul de transmisie constituie nivelul zic al ret elei. Nivelul zic este deci un modul care permite transmisia unui sir de bit i ntre dou a dispozitive legate direct unul de cel alalt. Constructiv, nivelul zic este constituit din: cablul electric, bra optic a sau, dup a caz, antenele de emisierecept ie, eventuale amplicatoare sau repetoare, pl acile de ret ea din calculatoare si driver -ele pl acilor de ret ea. Construct ia nivelului zic este studiat a n capitolul 3. De obicei, serviciul oferit de nivelul zic sufer a de anumite neajunsuri, cum ar probabilitatea mare a erorilor si transmisia nesigur a. Pentru contracararea acestora, de-o parte si de alta a nivelului zic se plaseaz a c ate un modul de adaptare; aceste dou a module constituie nivelul leg aturii de date. Nivelul leg aturii de date este construit part ial prin hard (parte a pl acii de ret ea) si part ial prin soft (parte a driver -ului pl acii de ret ea). Construct ia nivelului leg aturii de date este studiat a n capitolul 4. Nivelul zic mpreun a cu nivelul leg aturii de date ofer a o leg atur a bun a ntre dou a calculatoare conectate direct printr-un mediu zic. Ar neeconomic s a cerem s a existe o leg atur a direct a ntre oricare dou a calculatoare; este preferabil s a putem transmite date prin intermediul unui lant de calculatoare (sau alte dispozitive) legate zic ecare cu urm atorul din lant . Realizarea unei astfel de leg aturi cade n sarcina nivelului ret ea, constituit din c ate un modul n ecare calculator al ret elei. Modulul de ret ea este construit prin soft, n nucleul sistemului de operare al ec arui calculator din ret ea. Construct ia si funct ionarea nivelului ret ea este studiat a n capitolul 5. De obicei, serviciul oferit direct de c atre nivelul ret ea nu poate utilizat direct de c atre programele utilizator. De aceea, ntre modului de ret ea si programul utilizator se mai interpune un modul, constituind ( mpreun a cu modulul omolog de pe calculatorul partener de comunicat ii) nivelul transport. Nivelul transport este constituit din p art i ale nucleului sistemului de operare si, uneori, biblioteci legate n programele utilizator. Relat iile dintre aceste componente sunt reprezentate n gura 1.2. Fiecare dintre nivele ofer a nivelului superior o interfat a care cuprinde n principal funct ii de trimitere si de recept ie a datelor. Aceste funct ii sunt

c 2008, Radu-Lucian Lup sa


Capitolul 1. Introducere Nod nal Aplicat ie Modul transport Modul de ret ea Modul legatur a de date Modul leg atur a zic a Modulul de ret ea Modul legatur a de date Modul leg atur a zic a Modul legatur a de date Modul leg atur a zic a Nod intermediar Nod nal Aplicat ie Modul transport Modul de ret ea Modul legatur a de date Modul leg atur a zic a Nivelul aplicat ie Nivelul transport Nivelul ret ea Nivelul leg aturii de date 21

Nivelul zic

Mediu zic

Mediu zic

Figura 1.2: Componentele unei p art i dintr-o ret ea de calculatoare. Sunt gurate doar componentele implicate n comunicat ia dintre dou a aplicat ii. Cele dou a aplicat ii se execut a pe dou a calculatoare ntre care nu exist a o leg atur a direct a, dar exist ao leg atur a printr-un nod intermediar.

similare celor oferite de ret ea aplicat iilor (a sa cum am v azut n 1.1), dar serviciile oferite sunt mai primitive. Astfel, nivelul zic ofer a nivelului leg aturii de date servicii de transfer de date, dar numai ntre calculatoare conectate direct si cu riscul ca datele s a e alterate n timpul transferului sau s a se piard a complet. Nivelul leg aturii de date ofer a nivelului ret ea servicii de transfer de date mai sigure, dar n continuare cu restrict ia c a transferul este posibil doar ntre calculatoare conectate direct. Nivelul ret ea ofer a nivelului transport servicii de transfer de date ntre orice dou a calculatoare din ret ea, dar nc a neadecvate utiliz arii directe de c atre aplicat ii (lipsa transmisiei sigure, comunicat ie posibil a doar pentru un singur proces aplicat ie la un moment dat, etc.). Construct ia ec aruia dintre nivele este independent a de construct ia celorlalte (conteaz a doar interfat a dintre ele si parametrii de calitate a serviciului oferit de un nivel celui imediat superior). De exemplu, n proiectarea nivelului ret ea, nu ne intereseaz a nici ce aplicat ii vor utiliza ret eaua (acela si nivel ret ea din Internet este utilizat de aplicat ii de po sta electronic a, web, telefonie prin Internet si videoconferint e), nici cum este construit nivelul zic (perechi de conductoare, bre optice sau leg aturi radio prin satelit). Modulele, de pe acela si nivel, din noduri diferite si transmit unul altuia (utiliz and n acest scop serviciile oferite de nivelul inferior) dou a tipuri

c 2008, Radu-Lucian Lup sa


22 1.2. Principalele elemente ale unei ret ele de calculatoare

de date: datele utile a c aror transfer este cerut de nivelul superior si date de control necesare coordon arii activit a tilor modulelor din cadrul nivelului. Regulile de reprezentare a acestor date, de organizare a acestora n mesaje, precum si regulile dup a care se trimit mesajele ntre modulele aceluia si nivel alc atuiesc protocolul de comunicat ie al nivelului respectiv. Funct ionarea corect a a unei ret ele necesit a respectarea, de c atre toate modulele implicate, a protocoalelor de comunicat ie stabilite.

1.3. Premise generale n elaborarea si implementarea protocoalelor n ret ele


Pe l ang a rat iunile pur funct ionale, studiate pe larg n capitolele urm atoare, n elaborarea si implementarea protocoalelor intervin rat iuni practice, pe care le vom n sira pe scurt n continuare: Deoarece o ret ea este format a din multe componente, frecvent a cu care se nt ampl a ca cel put in o component a a unei ret ele s a nu funct ioneze corect este mare. Este necesar ca o defect iune s a afecteze c at mai put in din ret ea, iar componentele a c aror defectare duce la c aderea ntregii ret ele trebuie s a e c at mai put ine, eventual nici una. G asirea unei pene ntr-un sistem complex este, n general, dicil a. Ret eaua trebuie s a ofere mecanisme prin care orice defect iune s a e u sor de localizat. Implement ari diferite ale unui protocol se pot abate n moduri diferite de la specicat ia protocolului. Este bine ca mici abateri ale partenerului de comunicat ie s a e tolerate. Rezult a de aici principiul c a o implementare trebuie s a e strict a cu ceea ce transmite si tolerant a cu ceea ce recept ioneaz a. Ret eaua trebuie s a funct ioneze ast azi, sau, un plan bun azi este mai bun dec at un plan perfect m aine (maxim a atribuit a generalului american George Patton, circa 1944). Momentul standardiz arii unui protocol este extrem de delicat: dac a este standardizat nainte ca problema de rezolvat s a e bine nt eleas a si solut iile posibile bine analizate, rezult a un protocol prost; dac a standardizarea apare prea t arziu, dup a ce s-a r asp andit deja un protocol acceptabil, exist a riscul creerii unui protocol perfect, dar pe care nu-l folose ste nimeni deoarece nlocuirea sistemelor existente ar mai scump a dec at avantajul adus de protocolul mai bun. Protocoalele totu si evolueaz a, iar oprirea ntregii ret ele n vederea schimb arii echipamentelor afectate de schimbarea protocolului nu este rezonabil a.

c 2008, Radu-Lucian Lup sa


Capitolul 1. Introducere 23

Ca urmare, la o schimbare de protocol trebuie avut n vedere existent a unei perioade de tranzit ie n timpul c areia echipamentele noi trebuie s a poat a comunica cu cele vechi. Tranzit ia este mult u surat a dac a protocolul vechi prevede anumite facilit a ti. O posibilitate este ca n protocol s a se prevad a o faz a de negociere n care ecare entitate anunt a ce versiuni de protocol si ce extensii de protocol cunoa ste, iar apoi comunicat ia decurge conform versiunii celei mai recente si cu cele mai multe extensii suportate de ambii parteneri. Alt a posibilitate este stabilirea, de la prima versiune a protocolului, a act iunilor unui dispozitiv, ce implementeaz a o versiune veche a protocolului, la primirea unui mesaj neprev azut n acea versiune. Cerint e diferite ale diferitelor aplicat ii duc la tendint a de-a elabora protocoale complexe, care s a satisfac a pe toat a lumea. Protocoale complexe duc la implement ari scumpe si cu riscuri mari de-a avea erori. Este preferabil un protocol care s a ofere c ateva operat ii simple care s a poat a combinate dup a dorint a aplicat iei ce-l utilizeaz a. Dac a o astfel de abordare nu este fezabil a, duc and la un protocol prea complex, se recurge la protocoale ce au posibilitatea de-a implementate doar part ial; metodele utilizabile n acest scop sunt similare cu cele descrise mai sus pentru facilitarea evolut iei protocoalelor.

c 2008, Radu-Lucian Lup sa


24 Capitolul 1. Introducere

c 2008, Radu-Lucian Lup sa


25

Capitolul 2

Not iuni de teoria informat iei

Teoria informat iei se ocup a cu studiul metodelor de codicare a informat iei n vederea transmiterii sau stoc arii acesteia. In cadrul teoriei informat iei se studiaz a si cum se poate m asura cantitatea de informat ie transmis a ntr-un mesaj si cum se poate m asura ecient a unei anumite codic ari. Prin informat ie nt elegem cuno stint ele unei entit a ti. In cele ce urmeaz a, ne va interesa problema transmiterii unei informat ii de la o surs a la o destinat ie . Informat ia de transmis nu este cunoscut a init ial nici de destinat ie, nici de sistemul de transmitere. Ca urmare, a priori informat ia de transmis poate v azut a ca o variabil a aleatoare. Comunicat ia dintre surs a si destinat ie se desf a soar a prin intermediul unui canal de comunicat ie . Canalul de comunicat ie este capabil s a transmit a e o m arime variabil a n timp, numit a semnal ( n esent a, o funct ie real a continu a), caz n care canalul este numit continuu , e un sir de simboluri dintr-o mult ime nit a, caz n care canalul este numit discret . Deoarece canalul nu poate transmite direct informat ia sursei, ntre surs a si canal avem nevoie de un dispozitiv, numit emit ator , care transform a informat ia util a, produs a de surs a, ntr-un semnal sau, dup a caz, ntr-un sir de simboluri. Similar, ntre canal si destinat ie se plaseaz a un dispozitiv, numit receptor , al c arui rol este de-a efectua operat ia invers a, si anume de-a extrage din semnal sau din sirul de simboluri informat ia util a pentru destinat ie (g. 2.1).

Surs a

Emit ator

Canal

Receptor Destinat ie

Figura 2.1: Transmisia informat iei de la surs a la destinat ie

c 2008, Radu-Lucian Lup sa


26 Capitolul 2. Not iuni de teoria informat iei

Semnalul sau, dup a caz, sirul de simboluri ce tranziteaz a canalul se nume ste reprezentarea informat iei . Regulile de corespondent a dintre informa tia util a si reprezentarea sa poart a denumirea de schem a de reprezentare a informat iei, schem a de codicare a informat iei sau cod . Ca exemplu, o limb a scris a este o schem a de reprezentare a informat iei, pentru un canal discret a c arui mult ime de simboluri cont ine literele alfabetului limbii respective, precum si spat iul si semnele de punctuat ie. Un text scris ntr-o limb a este o reprezentare a informat iei, iar conceptele din textul respectiv sunt efectiv informat ia cont inut a n text. Ca un al doilea exemplu, limba vorbit a este o alt a schem a de reprezentare a informat iei, canalul pentru care este construit a ind de tip continuu. Schema de codicare a informat iei se presupune c a este stabilit a n prealabil si este cunoscut a at at emit atorului c at si receptorului. De asemenea, n construct ia schemei de reprezentare a informat iei se tine cont de caracteristicile canalului si de caracteristici generale ale informat iilor ce trebuie s a se poat a transmite, ns a la elaborarea ei nu se cunosc informat iile ce trebuiesc efectiv transmise. De exemplu, la elaborarea unei scheme de codicare a literelor dintr-un text utiliz and un canal ce poate transmite doar simbolurile 0 si 1 se poate tine cont de frecvent a obi snuit a a literelor ntr-un text, dar nu si de textul efectiv de transmis. Restul capitolului trateaz a scheme de reprezentare a informat iei pentru canale discrete. Vom studia n continuare: propriet a ti generale ale codurilor, problema minimiz arii num arului de simboluri necesare a transmise prin canal, precum si m asurarea cantit a tii de informat ie, problema codic arii n cazul n care canalul altereaz a sirul de simboluri pe care l transmite (canal cu perturbat ii).

2.1. Problema codic arii informat iei pentru un canal discret


In cazul unui canal discret, canalul poate transmite un sir de simboluri dintr-o mult ime S , numit a mult imea simbolurilor de cod sau alfabetul canalului. Elementele lui S se numesc simboluri de cod sau, scurt, simboluri. Mult imea S este nit a si are cel put in dou a elemente. De regul a S = {0, 1}. Pentru sirurile de simboluri de cod vom utiliza urm atoarele notat ii: S reprezint a mult imea sirurilor nite de elemente din S . u v reprezint a concatenarea sirurilor u si v .

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 27

|u| reprezint a lungimea sirului u; avem |u v | = |u| + |v |, u, v S . este sirul vid; avem || = 0 si u = u = u, u S . Informat ia transmis a de c atre surs a const a dintr-un sir de mesaje . Fiecare mesaj este un element dintr-o mult ime M de mesaje posibile. Mesajele provin din universul utilizatorului sistemului; ele pot propozit ii, litere, numere, etc. Mult imea de mesaje M este nevid a si cel mult num arabil a. De cele mai multe ori M este nit a. Denit ia 2.1 Numim funct ie de codicare sau cod orice funct ie injectiv a c : M S , unde M este mult imea de mesaje, cel mult num arabil a, iar S este mult imea simbolurilor de cod, nit a si av and cel put in dou a elemente. Fiecare mesaj m M va codicat prin sirul c(m) S . Denit ia 2.2 Numim cuv ant de cod orice sir de simboluri de cod w S cu proprietatea c a exist a un mesaj m M astfel nc at w = c(m). Numim mult imea cuvintelor de cod mult imea W = c(M ). Un sir de mesaje (m1 , . . . , mk ) M (unde M desemneaz a mult imea sirurilor nite de mesaje din M ) va codicat prin sirul format prin concatenarea codic arilor mesajelor: c(m1 ) c(m2 ) . . . c(mk ). De remarcat c a n urma concaten arii se pierd delimit arile dintre codic arile mesajelor individuale. Ca urmare, pentru ca receptorul s a poat a decodica f ar a ambiguit a ti orice transmisie a emit atorului este necesar a o proprietate suplimentar a a codului, aceea de-a unic decodabil: Denit ia 2.3 Un cod c : M S se nume ste: cod unic decodabil, dac a funct ia c : M S dat a prin c (m1 , m2 , . . . , mk ) = c(m1 ) c(m2 ) c(mk ) este injectiv a. cod cu proprietatea de prex sau cod prex, dac a nu exist a m1 , m 2 M , cu m1 = m2 , astfel nc at c(m1 ) s a e prex pentru c(m2 ) si n plus c(m) = , m M . (2.1)

c 2008, Radu-Lucian Lup sa


28 rii informat 2.1. Problema codifica iei pentru un canal discret

cod de lungime x a, dac a exist a o constant a l I N \ {0} astfel nc at |c(m)| = l, m M ; valoarea l se nume ste lungimea codului; Propozit ia 2.4 Au loc urm atoarele propriet a ti: 1. Orice cod de lungime x a este cod prex. 2. Orice cod prex este unic decodabil. Demonstrat ia este imediat a. Exemplul 2.1: Consider am mult imea mesajelor M = {a, b, c, d} si mult imea simbolurilor de cod S = {0, 1}. Urm atorul cod are proprietatea de prex. a 0 b 101 c 11 d 100

Exemplul 2.2: Urm atorul cod, obt inut prin oglindirea cuvintelor codului din exemplul anterior, este unic decodabil dar nu are proprietatea de prex: a 0 b 101 c 11 d 001 Codul nu este prex ntruc at cuv antul de cod 0 care este codicarea mesajului a este prex al cuv antului de cod 001 care este codicarea mesajului d. De notat c a un cod obt inut prin oglindirea cuvintelor unui cod prex se nume ste cod sux si ntotdeauna este unic decodabil. Exemplul 2.3: Codul de mai jos nu este unic decodabil: a 0 b 1 c 01 Codul nu este unic decodabil ntruc at sirul de simboluri de cod 01 poate codifcarea mesajului c sau a sirului de mesaje ab.

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 29

2.2. Coduri cu proprietatea de prex


De si simple, codurile de lungime x a nu sunt adecvate n urm atoarele dou a cazuri: pentru obt inerea unui cod ecient, adic a av and cuvinte c at mai scurte, dac a probabilit a tile diverselor mesaje din M sunt diferite (M este mul timea mesajelor sursei); dac a M nu este nit a (de exemplu, M este mult imea numerelor naturale). In aceste situat ii, trebuie s a ne extindem la clase mai largi dec at cea a codurilor de lungime x a. A sa cum vom vedea n continuarea paragrafului de fat a, clasa codurilor prex este sucient a n situat iile enumerate mai sus si, n acela si timp, permite decodicarea destul de simpl a a transmisiei.

2.2.1. Reprezentarea arborescent a a codurilor prex

Unui cod prex c : M S i se poate ata sa un arbore n care: pentru ecare nod intern, muchiile descendente sunt cel mult n num ar de |S | si sunt etichetate cu simboluri distincte din S ; ecare frunz a este etichetat a cu c ate un mesaj distinct din M ; cuv antul de cod al unui mesaj este format din simbolurile de cod ale muchiilor de pe lant ul ce une ste r ad acina cu frunza ata sat a mesajului. Construct ia arborelui se face conform algoritmului 2.1 (Genereaz a ar-

bore ). Exemplul 2.4: Pentru codul din exemplul 2.1 arborele este reprezentat n gura 2.2.
0 a 0 0 d 1 b 1 1 c

Figura 2.2: Arborele ata sat unui cod prex

Exemplul 2.5: Fie codul prex pentru mult imea mesajelor M = {a, b, c, d, e, f , g, h}

c 2008, Radu-Lucian Lup sa


30 2.2. Coduri cu proprietatea de prefix

Algoritmul Genereaz a arbore intrarea: M mult ime nit a nevid a c : M S cod prex ie sirea: T arborele asociat codului c algoritmul: creeaz a T format doar din r ad acin a r:=r ad acina lui T pentru m M execut a (s1 , . . . , sl ):=c(m) x:=r pentru i:=1, l execut a dac a nu exist a muchie descendent a de la x etichetat a cu si atunci dac a x are asociat un mesaj atunci eroare: c nu este cod este prex sf ar sit dac a creaz a y descendent al lui x si eticheteaz a (x, y ) cu si sf ar sit dac a x:=descendentul lui x pe muchia etichetat a si sf ar sit pentru dac a x nu e frunz a atunci eroare: c nu este cod este prex sf ar sit dac a asociaz a m nodului x sf ar sit pentru sf ar sit algoritm
Algoritmul 2.1: Generarea arborelui asociat unui cod prex

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 31

si mult imea simbolurilor de cod S = {0, 1, 2}: a 0 b 10 c 11 d 12 e 200 f 201 g 21 h 22

Arborele ata sat este reprezentat n gura 2.3.


2

0 a 0 b c

2 d 0 e

1 g

2 h

1 f

Figura 2.3: Arborele ata sat codului prex din exemplul 2.5.

2.2.2. Decodicarea n cazul codurilor prex


Dac a avem un sir de mesaje codicat printr-un cod prex, decodicarea se poate face prin algoritmul 2.2. Acesta ruleaz a n timp proport ional cu num arul de simboluri de cod din reprezentarea datelor de decodicat. De remarcat c a ecare mesaj este decodicat de ndat a ce ultimul simbol din reprezentarea sa a fost citit si prelucrat. Acest lucru este posibil numai pentru codurile prex; din acest motiv, codurile prex se mai numesc si coduri instantanee . Exemplul 2.6: Fie codul prex din exemplul 2.5 (vezi g. 2.3) si e sirul de decodicat: s = 0112000

c 2008, Radu-Lucian Lup sa


32 2.2. Coduri cu proprietatea de prefix

Algoritmul Decodeaz a intrarea: T arborele unui cod prex c : M S s = (s1 , s2 , . . . , sl ) S un sir nit de simboluri de cod ie sirea: m = (m1 , m2 , . . . , mk ) M sirul mesajelor a c aror codicare este s1 , . . . , sl algoritmul: m:= x:=r ad acina lui T pentru i:=1, l execut a dac a nu exist a muchie descendent a de la x etichetat a cu si atunci eroare: s nu este concatenare de cuvinte de cod sf ar sit dac a x:=descendentul ui x pe muchia etichetat a cu si dac a x este frunz a atunci adaug a la m mesajul asociat lui x x:=r ad acina lui T sf ar sit dac a sf ar sit pentru dac a x nu este r ad acina lui T atunci eroare: s nu este concatenare de cuvinte de cod sf ar sit dac a sf ar sit algoritm
Algoritmul 2.2: Decodicarea unei reprezent ari printr-un cod prex

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 33

Decodicarea se face astfel: La nceput x este r ad acina arborelui. Lu am din sirul s primul element; acesta are valoarea 0. Cobor am n arbore de-a lungul muchiei etichetate cu 0 si ajungem la frunza etichetat a ,,a. Deoarece am ajuns la o frunz a, punem mesajul din eticheta frunzai adic a ,,a n sirul de mesaje decodicat si revenim la r ad acin a. Urmeaz a simbolul de cod 1; cobor am de-a lungul muchiei 1 si ajungem n nodul p arinte ale nodurilor ,,b, ,,c si ,,d. Urmeaz a simbolul 1; cobor am de-a lungul muchiei 1 si ajungem la frunza ,,c; ad aug am ,,c la sirul de mesaje si revenim la r ad acin a. Continu and n acela si fel, vom obt ine n continuare mesajele ,,e si ,,a. S irul de mesaje transmis este deci ,,acea.

2.2.3. Lungimile cuvintelor unui cod prex


In cele ce urmeaz a, vom examina o condit ie necesar a si sucient a pentru existent a unui cod prex cu lungimi date ale cuvintelor, iar apoi vom ar ata c a aceast a condit ie este de asemenea necesar a pentru existent a unui cod unic decodabil. Teorema 2.5 Fiind dat a o mult ime de mesaje M cel mult num arabil a si o mult ime de simboluri S nit a av and cel put in 2 elemente distincte, pentru orice cod c : M S cu proprietatea de prex, lungimile cuvintelor de cod li = |c(i)|, i M , satisfac urm atoarea inegalitate (inegalitatea lui Kraft): |S |li 1
iM

(2.2)

si, reciproc, dac a numerele naturale (li )iM satisfac inegalitatea (2.2) atunci exist a un cod prex c : M S av and lungimile cuvintelor |c(i)| = li , i M .
Demonstrat ie. Vom nota n continuare d = |S | si K = mM dlm . Vom demonstra nt ai prima implicat ie, pentru cazul n care mult imea mesajelor M este nit a. Demonstrat ia va construit a prin induct ie dup a maximul k al lungimilor cuvintelor de cod (k = maxmM lm ). Pentru k = 1, nseamn a c a toate cuvintele de cod sunt de lungime 1 si n consecint a sunt n num ar de cel mult d. Ca urmare K=
mM

d1 = |M | d1 d d1 = 1.

Presupun and inegalitatea lui Kraft adev arat a pentru coduri de lungime maxim a k = k0 , pentru un k0 I N arbitrar, s a demonstr am c a are loc si pentru coduri de lungime maxim a k = k0 + 1. Pentru aceasta, s a construim mult imile de mesaje Mx = {m M : primul simbol din c(m) este x} , x S.

c 2008, Radu-Lucian Lup sa


34 2.2. Coduri cu proprietatea de prefix Se observ a imediat c a (Mx )xS sunt disjuncte dou a c ate dou a si c a reuniunea lor este M . Ca urmare K=
xS mMx

dlm .

Pentru ecare x M , restrict ia lui c la Mx , c|Mx , este de asemenea un cod prex. Distingem n continuare trei cazuri: Dac a Mx are cel put in 2 elemente, rezult a c a toate cuvintele de cod ale elementelor din Mx au lungime mai mare sau egal a cu 2, deoarece n caz contrar singurul cuv ant de cod de lungime 1, anume x, ar prex pentru toate celelalte. Elimin and din toate cuvintele de cod primul simbol obt inem un nou cod prex pentru Mx . Acest cod prex are toate cuvintele de cod lungime cel mult k0 si ca urmare, conform ipotezei de induct ie, satisface inegalitatea lui Kraft, adic a d(lm 1) 1,
mMx

de unde dlm
mMx

1 . d

Dac a Mx are un singur element, cuv antul de cod asociat acestui element are lungime cel put in 1 si ca urmare din nou dlm
mMx

1 . d

Dac a Mx = , avem

mMx

1 dlm = 0 d .

Insum and acum pentru toate submult imile Mx , obt inem: K=


xS mMx

d(lm )
xS

1 = 1. d

In cazul unei mult imi M num arabile, construim Ml = {m M : |c(m)| l} , l I N si not am Kl =


mMk

d(lm ) .

Deoarece, pentru ecare l I N, c|Ml este un cod prex, rezult a Kl 1, l I N. Dar (Kl )lIN este un sub sir al sirului sumelor part iale ale unei

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 35

Algoritmul Construie ste cod intrarea: (lm )mM I N satisf ac and (2.2) ie sirea: c : M S cod prex cu |c(m)| = lm , m M algoritmul: E :={} pentru l=1,maxmM lm execut a E := pentru w E execut a pentru x S execut a E :=E {w x} sf ar sit pentru sf ar sit pentru E :=E pentru m M : lm = l execut a c(m):= o valoare arbitrar a din E E :=E \ {c(m)} sf ar sit pentru sf ar sit pentru sf ar sit algoritm
Algoritmul 2.3: Construct ia unui cod prex cu lungimi date ale cuvintelor de cod

c 2008, Radu-Lucian Lup sa


36 2.2. Coduri cu proprietatea de prefix permut ari a seriei cu termeni pozitivi mM dlm . De aici rezult a c a seria este convergent a si suma ei K este la r andul ei mai mic a sau egal a cu 1. S a demonstr am acum reciproca, si anume c a inegalitatea lui Kraft implic a existent a unui cod prex. Construct ia codului va realizat a de algoritmul 2.3. Demonstr am n continuare corectitudinea acestui algoritm. Vom nota n cele ce urmeaz a cu Ek valoarea lui E n cadrul iterat iei l = k imediat dup a execut ia instruct iunii E :=E . Mai nt ai, pentru a demonstra c a lungimile cuvintelor de cod sunt ntr-adev ar cele dorite, s a ar at am c a toate cuvintele din Ek au lungime k . Intr-adev ar, la prima iterat ie cuvintele din E1 se obt in prin concatenarea c ate unui simbol din S la sirul vid. Apoi, cuvintele din Ek+1 se obt in din cuvintele r amase din Ek dup a atribuirea unora ca si cuvinte de cod prin ad augarea la nal a c ate unui simbol din S . Ca urmare, cuvintele din Ek+1 sunt de lungime k . S a ar at am acum c a se obt ine un cod prex. Dac a un cuv ant din Ek este atribuit unui mesaj, cuv antul de cod respectiv este eliminat din Ek . Cuvintele ce vor atribuite n continuare pot avea prexe de lungime k doar dintre cuvintele r amase n Ek . Mai trebuie ar atat c a exist a ntotdeauna n E o valoare de atribuit lui c(m). Pentru aceasta, vom ar ata c a dklm |Ek |
mM lm k

(2.3)

La prima iterat ie, |Ek | = d si dklm = d K d = |E |


mM lm k

Presupun and c a (2.3) are loc la iterat ia cu l = k , la iteratia urm atoare, n care l = k + 1, avem dk+1lm = d
mM lm k+1

dklm =
mM lm k+1

= d

dklm =
mM lm = k

dklm

mM lm k

d(|Ek | |{m M : lm = k }|) = = |Ek+1 | unde ultima egalitate rezult a din modul de construct ie a lui Ek+1 din Ek prin eliminarea unui num ar de elemente egal cu num arul de cuvinte de

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei cod de lungime k urmat a de nlocuirea ec arui cuv ant r amas cu d cuvinte obt inute prin ad augarea ec arei litere posibile din S . Observ am acum c a suma din inegalitatea (2.3) are un num ar de termeni de valoare 1 egal cu num arul de cuvinte de lungime k de obt inut si, ca urmare, exist a n Ek suciente cuvinte. 37

Exemplul 2.7: Dorim construirea unui cod prex pentru mult imea M = {a, b, c, d, e} si mult imea de simboluri de cod S = {0, 1} cu urm atoarele lungimi ale cuvintelor de cod: la = 3, lb = 1, lc = 3, ld = 3, le = 3. Rezolvare: mai nt ai veric am dac a este satisf acut a inegalitatea lui Kraft: |S |lm = 23 + 21 + 23 + 23 + 23 = 1 1,
mM

inegalitatea este satisf acut a si prin urmare exist a un cod prex. Construct ia propriu-zis a este ar atat a n gura 2.4. Cerculet ele desemneaz a nodurile corespunz atoare elementelor din mult imea E .
0 R ad acina arborelui
(a) Init ializarea: E = {}

0 b

(b) Iterat ia l = 1: E = {1} si a fost plasat ,,b

(c) Iterat ia l = 2: E = {10, 11}

0 b 0 0 a

1 1 1 c 0 d 1 e

(d) Ultima iterat ie, l = 3: E = si codul este complet generat

Figura 2.4: Construct ia unui cod prex cu lungimi xate ale cuvintelor de cod (exemplul 2.7)

c 2008, Radu-Lucian Lup sa


38 2.2. Coduri cu proprietatea de prefix

Vom ar ata n continuare c a inegalitatea lui Kraft este o condit ie necesar a pentru existent a codurilor unic decodabile, nu doar a celor prex. Avem: Teorema 2.6 (McMillan) Pentru orice cod unic decodabil c : M |S | are loc inegalitatea:
n

dlm 1
mM

(2.4)

unde lm = |c(m)|, m M si d = |S |.
Demonstrat ie. Consider am mai nt ai cazul c and M este nit a. S a not am n cu E = mM dlm . S a lu am un k I N arbitrar si s a calcul am: Ek =
(m1 ,...,mk )M k

dlm1 . . . dlmk d(lm1 +...+lmk )


(m1 ,...,mk )M k

(2.5)

Regrup am acum termenii din (2.5) dup a valorile sumei lm1 + . . . + lmk . Pentru aceasta, vom nota cu N (k, l) num arul de termeni din dezvoltarea (2.5) pentru care lm1 + . . . + lmk = l. Cu alte cuvinte, N (k, l) = Mai observ am c a k lm1 + . . . + lmk lmax k unde lmax este maximul lungimii cuvintelor de cod (lmax = maxmM lm ). Obt inem: lmax k Ek = N (k, l) dl . (2.6)
l =k

(m1 , . . . , mk ) M k : lm1 + . . . + lmk = l

S a observ am acum c a N (k, l) este num arul de siruri de k mesaje pentru care lungimea codic arii sirului este l. Deoarece codul este unic decodabil, aceste codic ari sunt distincte si ca urmare N (k, l) este cel mult egal cu num arul de siruri distincte de l simboluri de cod, adic a N (k, l) dl . Inlocuind n (2.6), obt inem: E
k lmax k l=k

dl dl = lmax k k + 1 lmax k,

(2.7)

adic a E k lmax k. (2.8)

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei Aceast a inegalitate are loc pentru orice k I N . Dac a am avea E > 1, atunci pentru un k sucient de mare am avea E k > lmax k ; prin urmare E 1. Dac a M este num arabil a, construim mult imile Mk = {m M : |c(m) k } , k I N

39

N, Mk este nit a si c|Mk si not am Ek = mMk dlm . Pentru ecare k I este un cod unic decodabil. Ca urmare, Ek 1 pentru ecare k I N. Observ am acum c a E = limk Ek 1.

Corolarul 2.7 Pentru orice cod unic decodabil, exist a un cod prex cu acelea si lungimi ale cuvintelor de cod.

2.3. Coduri optime


Deoarece stocarea sau transmiterea ec arui simbol de cod implic a un cost (timp necesar transmisiei, spat iu zic pe suportul de informat ie, etc), este natural s a c aut am un cod pentru care num arul de simboluri de cod necesare transmiterii sirului de mesaje al sursei este c at mai mic. Se impun ns a c ateva preciz ari cu privire la aceast a minimizare. Mai nt ai, codul trebuie elaborat necunosc and informat ia particular a pe care urmeaz a s-o trimit a sursa. Prin urmare, nu se poate cere minimizarea lungimii reprezent arii informat iei transmise efectiv de surs a. Se va minimiza deci num arul mediu de bit i necesari reprezent arii unui mesaj al sursei. In al doilea r and, acest num ar mediu de bit i se consider a n sens probabilistic, de valoare medie a unei variabile aleatoare. Anume, ecare mesaj al sursei poate considerat o variabil a aleatoare cu valori din mult imea M de mesaje ale sursei. Lungimea reprezent arii mesajului este de asemenea o variabil a aleatoare, a c arei valoare medie este ceea ce dorim s a minimiz am. Probabilit a tile diferitelor mesaje ale sursei se pot estima pe diverse c ai e analiz and teoretic fenomenele pe baza c arora funct ioneaz a sursa, e analiz and statistic siruri de mesaje trimise de surs a. Ca exemplu, dac a mesajele sursei sunt litere ce alc atuiesc un text ntr-o anumit a limb a, se poate determina statistic frecvent a ec arei litere, precum si frecvent ele unor succesiuni de litere.

c 2008, Radu-Lucian Lup sa


40 2.3. Coduri optime

2.3.1. Cantitatea de informat ie


Cantitatea de informat ie purtat a de un mesaj este o m asur a a incertitudinii pe care destinatarul o avea imediat nainte de primirea mesajului si care este eliminat a n urma primirii mesajului. Cantitatea de informat ie purtat a de un mesaj trebuie deci s a e mic a dac a pentru destinatar evenimentul anunt at de mesaj era aproape sigur si mare dac a este un eveniment total nea steptat. Este de dorit, de asemenea, ca m asura informat iei s a e aditiv a, n sensul c a privind ca un singur mesaj o succesiune de dou a mesaje, cantitatea de informat ie purtat a de mesajul compus s a e suma cantit a tilor de informat ie purtate de cele dou a mesaje separat. A sa cum vom vedea n continuare, cantitatea de informat ie purtat a de un mesaj va xa o limit a inferioar a teoretic a a num arului de simboluri de cod necesare codic arii mesajului. De notat c a cantitatea de informat ie nu are nici o leg atur a cu utilitatea informat iei. Denit ia 2.8 Fie o surs a care emite un sir de mesaje m1 , m2 , . . . , mt M . Cantitatea de informat ie adus a de mesajul mt este info(mt ) = log2 Pr(mt |m1 , m2 , . . . , mt1 ). Altfel spus, cantitatea de informat ie adus a de un mesaj mt n contextul (adic a urm and dup a) m1 , m2 ,. . . ,mt1 este minus logaritmul probabilit a tii ca al t-lea mesaj s a e mt , condit ionat a de faptul c a mesajele precedente au fost m1 , m2 ,. . . ,mt1 . In cazul unei surse ergotice, adic a pentru care probabilitatea ca un mesaj s a aib a o anumit a valoare este independent a de mesajele anterioare si de pozit ia (num arul de ordine) mesajului n sirul de mesaje, putem, pentru ecare m M , s a not am cu pm probabilitatea ca un anumit mesaj din sirul de mesaje s a aib a valoarea m. Atunci cantitatea de informat ie adus a de un mesaj m este info(m) = log2 pm . Unitatea de m asur a pentru cantitatea de informat ie este bitul. A nu se confunda bitul cu sensul de unitate de m asur a pentru cantitatea de informat ie cu bitul cu sensul de cifr a binar a. Exist a o leg atur a ntre aceste not iuni, si anume, a sa cum vom vedea, pentru a transmite un bit de informat ie avem nevoie cel put in de un bit (cifr a binar a). Exemplul 2.8: Dac a emit atorul anunt a receptorului rezultatul arunc arii unei monede, mesajul a c azut cu fat a n sus poart a o cantitate de informat ie egal a 1 cu log2 2 = (1) = 1bit.

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 41

Exemplul 2.9: In textul acestei lucr ari, 10,7% dintre litere sunt ,,a, si doar 1,1% sunt ,,b. Cu aceste cuno stint e, receptorul se va a stepta de la ecare liter a s a e ,,a cu probabilitate de 10,7% si ,,b cu probabilitate de 1,1%. In aceste condit ii, ecare liter a ,,a poart a log2 0,107 3,224 bit i de informat ie, si ecare liter a ,,b poart a log2 0,011 6,5 bit i. Exemplul 2.10: Presupunem c a emit atorul informeaz a receptorul asupra rezultatului arunc arii unui zar. Dac a emit atorul trimite mesajul num arul este ntre 1 si 4 cantitatea de informat ie este log2 4 0 , 58 bit i. Dac a emit atorul 6 anunt a acum c a num arul este 3, probabilitatea acestui caz, cu informat iile 1 , de unde cantitatea de informat ie purtat a disponibile imediat nainte, este 4 1 de mesajul num arul este 3 este log2 4 = 2 bit i. S a observ am c a, dac a emit atorul ar spus de la nceput num arul este 3, cantitatea de informat ie transmis a ar fost log2 1 i. 6 2,58 bit Denit ia 2.9 Fie o surs a de informat ie ce emite mesaje dintr-o mult ime M , ecare mesaj m M av and o probabilitate pm de-a emis. Se nume ste entropia sursei de informat ie cantitatea H=
mM

pm log pm

(2.9)

Cu alte cuvinte, entropia este cantitatea medie de informat ie per mesaj.

2.3.2. Lungimea medie a cuvintelor de cod


Denit ia 2.10 Fie o surs a ce emite mesaje dintr-o mult ime M . Pentru ecare m M , e pm probabilitatea mesajului m si e c : M S un cod unic decodabil. Se nume ste lungimea medie a cuvintelor codului c valoarea l=
mM

pm |c(m)|.

Denit ia 2.11 Un cod unic decodabil c : M S se nume ste cod optim dac a lungimea medie a cuvintelor sale este mai mic a sau egal a dec at lungimea medie a cuvintelor oric arui cod unic decodabil c : M S . Exist a urm atoarea limit a inferioar a pentru lungimea medie a cuvintelor de cod:

c 2008, Radu-Lucian Lup sa


42 2.3. Coduri optime

Teorema 2.12 Fie o surs a ce emite mesaje dintr-o mult ime M , e H entropia sursei si e c : M S un cod unic decodabil. Atunci lungimea medie l a cuvintelor codului c satisface l H . log2 |S | (2.10)

In particular, dac a |S | = 2, atunci rezult a l H . Cu alte cuvinte avem nevoie cel put in de un simbol binar (un bit) pentru a transmite un bit de informat ie. Denit ia 2.13 Se nume ste ecient a unui cod raportul =
H , l log2 |S |

unde H

este entropia sursei, l este lungimea medie a cuvintelor de cod, iar S este mult imea simbolurilor de cod. Se nume ste redundant a relativ a valoarea 1 . Ecient a si redundant a relativ a sunt numere cuprinse ntre 0 si 1. Valoarea minim a, dat a teorema 2.12, pentru lungimea medie a cuvintelor de cod poate atins a efectiv, adic a se poate obt ine ecient a = 1, doar n anumite cazuri. Motivul pentru care ea nu poate ntotdeauna atins a este dat a de natura discret a a simbolurilor de cod. Ideal, lungimea cuvintelor de cod ar trebui s a e lm = log|S | pm . Pentru aceste valori inegalitatea lui Kraft este satisf acut a: |S |lm =
mM mM

|S |( log|S| pm ) =
mM

pm = 1 1 ,

prin urmare ar exista un cod unic decodabil si limita din teorema 2.12 ar atins a: l=
mM

pm log|S | pm =
mM

pm =

log2 pm log2 |S |

1 log2 |S |

mM

pm log2 pm

H . log2 |S |

Acest lucru se poate realiza ns a numai dac a lm = log|S | pm sunt toate ntregi. In cazul general putem doar s a alegem ca lungimi ale cuvintelor de cod valorile mai mari, lm = log|S | pm . Pentru aceste valori avem log|S | pm lm < log|S | pm + 1 de unde rezult a:

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 43

Teorema 2.14 Fie o surs a ergotic a ce emite mesaje dintr-o mult ime M , e H entropia sursei si e S o mult ime de simboluri de cod. Atunci exist a un cod c : M S unic decodabil a c arui lungime medie l a cuvintelor de cod satisface H H l< + 1. (2.11) log2 |S | log2 |S | Rezultatul teoremei precedente poate mbun at a tit dac a n loc s a consider am mesajele sursei ca ind mesajele din M consider am succesiuni de mesaje din M , construim un cod pentru acestea din urm a si determin am raportul dintre lungimea medie a cuv antului de cod si num arul de mesaje din M codicate prin acesta. In detaliu, construct ia este urm atoarea: Fix am k I N. Consider am o a doua surs a, ale c arei mesaje vor succesiuni de k mesaje ale sursei originale. Mult imea de mesaje ale noii surse este prin urmare M k . Probabilit a tile mesajelor sunt p(m1 ,...,mk ) = pm1 . . . pmk . Vom nota cu Hk entropia noii surse. Avem Hk =
(m1 ,...,mk )M k

p(m1 ,...,mk ) log2 p(m1 ,...,mk ) = pm1 . . . pmk (log2 pm1 + . . . + log2 pmk ) =
(m1 ,...,mk k )M k

=
i=1 (m1 ,...,mk k

pm1 . . . pmk log2 pmi =


(m1 ,...,mi1 ,mi+1 ,...,mk )M k

pm1 . . . pmi1 pmi+1 . . . pmk


)M k1

=
i=1


mi M k

pmi log2 pmi =

=
i=1

1H =

=k H Conform teoremei 2.14, exist a un cod c : M k S pentru care lungimea medie a cuvintelor de cod, l(k) , satisface Hk Hk l(k) < + 1. log2 |S | log2 |S |

c 2008, Radu-Lucian Lup sa


44 2.3. Coduri optime

Num arul mediu de simboluri de cod utilizate pentru a transmite un mesaj din (k ) M este l k , care este delimitat de H l(k) H 1 < + . log2 |S | k log2 |S | k Prin urmare, pentru orice > 0, putem alege un k I N astfel nc at codic and c ate k mesaje succesive din M s a obt inem un num ar de simboluri pe mesaj ncadrat ntre H l(k) H < + . log2 |S | k log2 |S |

2.3.3. Generarea codului optim prin algoritmul lui Human


Ne vom ocupa n continuare de generarea efectiv a a unui cod optim pentru o surs a cu probabilit a ti cunoscute ale mesajelor. Algoritmul cel mai utilizat pentru aceasta este algoritmul lui Human (algoritmul 2.4). Ca idee de baz a, algoritmul lui Human construie ste arborele unui cod prex n modul urm ator: pleac a de la n arbori (n ind num arul de mesaje) ecare const and doar din r ad acin a, dup a care une ste c ate |S | arbori (|S | ind num arul de simboluri de cod) ca subarbori ai unui nod nou creat. La ecare unire, se iau arborii cu sumele probabilit a tilor mesajelor asociate cele mai mici; n caz de egalitate ntre probabilit a ti, se iau oricare dintre arborii de probabilit a ti egale. Algoritmul se termin a n momentul n care r am ane un singur arbore. Dac a |S | > 2 si n nu este de forma (|S | 1)k + 1 cu k I N, astfel c a nu s-ar putea uni de ecare dat a exact |S | arbori, la prima unire se vor uni (n 2) mod (|S | 1) + 2 arbori, astfel nc at la toate celelalte uniri s a se uneasc a c ate |S | arbori si n nal s a r am an a exact un arbore. Exemplul 2.11: Fie o surs a av and mult imea mesajelor posibile M = {a, b, c, d, e} cu probabilit a tile corepsunz atoare pa = 0,35, pb = 0,15, pc = 0,15, pd = 0,15, pe = 0,20 si e alfabetul canalului S = {0, 1}. Generarea codului optim se face astfel (vezi g. 2.5): In prima faz a creem noduri izolate corespunz atoare mesajelor sursei (g. 2.5(a)); Alegem dou a noduri cu cele mai mici probabilit a ti si le unim. Acestea pot ,,b cu ,,c, ,,b cu ,,d sau ,,c cu ,,d. Oricare dintre alegeri duce la un

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 45

Algoritmul Human intrarea: M mult ime nit a de mesaje pm (0, 1), m M , probabilit a tile mesajelor; mM pm = 1 S = {s1 , s2 , . . . , sd } mult ime nit a de simboluri de cod, d 2 ie sirea: c : M S cod prex algoritmul: E :=M d :=(|M | 2) mod (|S | 1) + 2 c at timp |E | > 1 execut a alege e1 , . . . , ed E cu pei pe , i {1, . . . , d } , e E \ {e1 , . . . , ed } creaz a t unic pentru i {1, . . . , d } execut a pune ei ca u al lui t s(t,ei ) :=si sf ar sit pentru pt := d i=1 pei E :=(E \ {e1 , . . . , ed }) {t} d :=d sf ar sit c at timp c:=codul prex asociat unicului arbore din E sf ar sit algoritm
Algoritmul 2.4: Algoritmul lui Human

c 2008, Radu-Lucian Lup sa


46 2.3. Coduri optime

cod optim. S a alegem ,,b cu ,,c. Calcul am si probabilitatea arborelui rezultat: 0,15 + 0,15 = 0,3. (g. 2.5(b)). In continuare unim din nou arborii de probabilit a ti minime; acum ace stia sunt ,,d si ,,e (g. 2.5(c)). Avem acum dou a posibilit a ti: arborele ce cont ine pe ,,b si pe ,,c poate unit e cu arborele format din ,,a, e cu arborele format din ,,d si ,,e. Alegem a doua variant a. In nal unim cei doi arbori r ama si. Avem acum codurile mesajelor: c(a) = 0, c(b) = 100, c(c) = 101, c(d) = 110, c(e) = 111. Lungimea medie a cuvintelor de cod este l = 0,35 1 + 0,15 3 + 0,15 3 + 0,15 3 + 0,2 3 = 2,3 Pentru comparat ie, entropia este H = 0,35 log2 0,35 + 0,15 log2 0,15 + 0,15 log2 0,15+ + 0,15 log2 0,15 + 0,2 log2 0,2 2,226121

0.35 0.35 a 0.15 b 0.15 c


(a) Pasul 1

0.30

0.15 d

0.20 e

0.15 d

0.20 e

a b c

(b) Pasul 2

0.35 0.35 a b c d e 0.30 0.35 a

0.65 a

0 0 0

1 1 1 0 1

b c

d e

b c

d e

(c) Pasul 3

(d) Pasul 4

(e) Arborele nal

Figura 2.5: Funct ionarea algoritmului Human, exemplul 2.11

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 47

Dac a la pasul 4 s-ar ales cealalt a posibilitate, ar rezultat mult imea de arbori din gura 2.6(a) si n nal arborele asociat codului prex din gura 2.6(b). S a observ am c a se obt ine exact aceea si lungime medie a cuvintelor de cod: l = 0,35 2 + 0,15 3 + 0,15 3 + 0,15 2 + 0,2 2 = 2,3

0.65

0.35 0

0 1 0

1 0 1

a b c

d e

1 d e

b c
(b) Arborele nal

(a) Pasul 4

Figura 2.6: Variant a alternativ a pentru pa sii 4 si 5 (exemplul 2.11)

Exemplul 2.12: Fie o surs a av and mult imea mesajelor posibile M = {a, b, c, d, e, f } cu probabilit a tile corepsunz atoare pa = 0,4, pb = 0,15, pc = 0,15, pd = 0,1, pe = 0,1, pf = 0,1 si e alfabetul canalului S = {0, 1, 2}. Construct ia codului prin algoritmul lui Human este prezentat a n gura 2.7. Lungimea medie a cuvintelor de cod este l = 1,6, entropia este H 2,346439 si avem H 2,346439 1,4804382 1,6 = l log2 |S | 1,5849625 Teorema 2.15 Codul obt inut prin algoritmul Human este optim. Pentru demonstrat ie avem nevoie de c ateva leme ce descriu pro priet a ti ale unui cod optim. In cele ce urmeaz a vom nota cu L(c) lungimea medie a cuvintelor unui cod c. Lema 2.16 Fie M mult imea mesajelor sursei, e pm , m M , probabilit a tile mesajelor sursei, e S alfabetul canalului si e c : M S un cod optim. Pentru orice mesaje m1 , m2 M , dac a pm1 < pm2 atunci |c(m1 )| |c(m2 )|.

c 2008, Radu-Lucian Lup sa


48 0.4 0.4 0.15 0.15 0.1 0.1 0.1 2.3. Coduri optime 0.15 0.15 0.2 0.1

c d
(b) Pasul 2

f e

(a) Pasul 1

0.4

0.4

0.2

1 0 1 2

2 0 1

a b c f d e

(c) Pasul 3

(d) Arborele nal

Figura 2.7: Funct ionarea algoritmului lui Human, exemplul 2.12 Demonstrat ie. Presupunem contrariul: m1 , m2 M , pm1 < pm2 si |c(m1 )| < |c(m2 )|. Construim atunci un alt cod, c : M S , prin interschimbarea cuvintelor de cod asociate mesajelor m1 si m2 : c(m2 ) , m = m1 c(m1 ) , m = m2 c (m) = c(m) , m M \ { m1 , m 2 } Avem L(c ) =
mM

pm |c (m)| =

=L(c) pm1 |c(m1 )| pm2 |c(m2 )| + pm1 |c(m2 )| + pm2 |c(m1 )| = =L(c) + (pm1 pm2 )(|c(m2 )| |c(m1 )|) < <L(c) adic a c are lungimea cuvintelor de cod mai mic a dec at c, de unde rezult a c a c nu este cod optim.

Lema 2.17 Fie M mult imea mesajelor sursei, |M | 2, e S alfabetul canalului, e c : M S un cod optim si e lmax lungimea celui mai lung cuv ant al codului c (lmax = maxmM |c(m)|). Atunci exist a cel put in (n 2) mod (|S | 1) + 2 cuvinte de cod de lungime lmax .
Demonstrat ie. Conform corolarului 2.7, exist a un cod prex cu acelea si lungimi ale cuvintelor de cod ca si codul c. Deoarece ne intereseaz a doar

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei lungimile cuvintelor de cod, putem, f ar a a restr ange generalitatea, s a presupune c a c este cod prex. Consider am arborele asociat codului c. Vom numi num arul de pozit ii libere ale unui nod intern (un nod ce are cel put in un u) valoarea |S | minus num arul de i. Observ am urm atoarele: Cu except ia penultimului nivel, ecare nod intern are zero pozit ii libere Intr-adev ar, n caz contrar s-ar putea muta o frunz a de pe ultimul nivel ca descendent al nodului cu cel put in o pozit e liber a; prin aceast a operat ie ar sc adea lungimea cuv antului de cod corespunz ator si ca urmare ar sc adea lungimea medie a cuvintelor de cod, contrazic and ipoteza c a c este optim. Suma numerelor pozit iilor libere ale nodurilor penultimului nivel este cel mult |S | 2. Dac a arborele are n alt ime 1, atunci unicul nod intern este r ad acina, aceasta are cel put in 2 i, deoarece |M | 2, si, n consecint a, num arul pozit iilor libere este cel mult |S | 2. Consider am acum un arbore de n alt ime cel put in 2 si s a presupun and prin absurd c a am avea |S | 1 pozit ii libere. Fie t un nod intern de pe penultimul nivel si e k num arul de descendent i ai s ai. Nodul t are |S | k pozit ii libere, deci mai r am an cel put in k 1 pozit ii libere la celelalte noduri. Mut am k 1 dintre descendent ii lui t pe pozit ii libere ale altor noduri ale penultimului nivel; lungimile cuvintelor de cod se p astreaz a. Acum t are un singur descendent. Putem elimina nodul t subordon and unicul s au descendent direct parintelui lui t; n acest fel lungimea cuv antului de cod corespunz ator scade cu 1 si lungimea medie a cuv antului de cod scade cu o valoare nenul a, ceea ce contrazice din nou ipoteza c a c e optim. Pentru un arbore cu k noduri interne si cu num arul total de pozit ii libere 0, num arul de frunze, care este egal cu num arul n de mesaje, este n = k (|S | 1)+1. Acest lucru se demonstreaz a imediat prin induct ie dup a k . Dac a arborele are n total j pozit ii libere, prin completarea acestora cu frunze ar rezulta un arbore cu 0 pozit ii libere si n + j frunze; prin urmare n = k (|S | 1) + 1 j Not and q = |S | j 2, avem n = k (|S | 1) + q |S | + 3 = (k 1) (|S | 1) + 2 + q Deoarece 0 j |S | 2 rezult a 0 q |S | 2 de unde q = (n 2) mod (|S | 1) Penultimul nivel contine cel put in un nod intern, de unde rezult a c a pe ultimul nivel exist a cel put in |S | j frunze. Cum |S | j = q + 2 rezult a c a pe ultimul nivel avem cel put in q + 2 = (n 2) mod (|S | 1) + 2 49

c 2008, Radu-Lucian Lup sa


50 frunze. Demonstrat ia teoremei 2.15. Fie n num arul de mesaje. Vom demonstra n1 prin induct ie dup a num arul k = |S . |1 2.3. Coduri optime

Pentru k = 1, adic a n |S |, algoritmul lui Human face o singur a unicare, rezult and cuvinte de cod de lungime 1 pentru toate mesajele. Un astfel de cod este optim, deoarece cuvinte de cod de lungime mai mic a dec at 1 nu sunt permise. Presupunem acum c a algoritmul Human genereaz a codul optim pentru un k dat si s a-i demonstr am optimalitatea pentru k + 1. S a lu am deci o mult ime de mesaje M cu k (|S | 1) + 1 |M | (k + 1)(|S | 1), s a not am cu pm , m M , probabilit a tile mesajelor, s a not am cu ch codul generat de algoritmul lui Human si cu co un cod prex optim pentru aceea si mult ime de mesaje si acelea si probabilit a ti si s a not am cu L(ch ), respectiv L(co ) lungimile medii ale cuvintelor de cod corespunz atoare. Avem de demonstrat c a L(ch ) L(co ). Deoarece co este un cod optim, aplic and lema 2.17 deducem c a co are cel put in (n 2) mod (|S | 1) + 2 cuvinte de lungime maxim a. Din lema 2.16, deducem c a acestea sunt cuvintele corespunz atoare mesajelor cu probabilit a tile cele mai mici, adic a e mesajele e1 , . . . , ed alese de algoritmul lui Human pentru prima unicare, e mesaje de acelea si probabilit a ti; n al doilea caz putem, prin interschimb ari de cuvinte de cod, s a facem ca cele (n 2) mod (|S | 1)+2 cuvinte de lungime maxmim a din co s a e cele alese n prima etap a a algoritmului lui Human, f ar a ca prin aceasta s a pierdem optimalitatea lui co . De asemenea, prin interschimb ari de cuvinte de cod, putem face ca celor (n 2) mod (|S | 1) + 2 mesaje alese de algoritmul lui Human s a le corespund a prin co cuvinte de cod ce difer a doar prin ultimul simbol. Creem acum un cod co : (M \ {e1 , . . . , ed }) {t} S , unde t este un obiect nou introdus, d and ca valoare pentru c(t) prexul comun al lui c(e1 ),. . . ,c(ed ). In acela si mod, creem un cod ch pornind de la ch . Observ am d si analog, L(ch ) = acum c a, not and pt = i=1 pei , avem L(co ) = L(co ) pt L(ch ) pt . S a mai remarc am c a ch este codul produs de algoritmul lui Human pentru mult imea de mesaje (M \ {e1 , . . . , ed }) {t} si, conform ipotezei de induct ie, el este optim; prin urmare L(ch ) L(co ). De aici rezult a L(ch ) L(co ), deci codul obtinut prin algoritmul lui Human este optim.

2.3.4. Compresia sierelor


Codarea optimal a este ceea ce face orice program de compresie a sierelor. Algoritmul Human este folosit aproape de orice algoritm de compresie, ns a de regul a nu direct asupra octet ilor din datele de comprimat.

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 51

Algoritmii de compresie utilizat i n practic a se folosesc si de dependent ele ntre octet ii succesivi. Utilizarea oric arui cod presupune c a receptorul cunoa ste codul folosit de emit ator. Transmiterea separat a a codului c atre receptor risc a s a contrabalanseze c a stigul obt inut prin codare optimal a. Metodele adaptative presupun c a emit atorul ncepe emisia cu un cod standard, dup a care l modic a pentru a-l optimiza conform frecvent elor observate n date. Dac a algoritmul de generare a codului este xat si codul folosit la un moment dat depinde doar de datele trimise (codate) deja, atunci receptorul poate recalcula codul folosit de emit ator (folosind acela si algoritm ca si emit atorul). De notat c a nici un cod nu poate folosi mai put ini bit i pentru codare dec at cantitatea de informat ie transmis a. In lipsa redundant ei, nu e posibil a compresia. Ca o consecint a, nici un program de compresie nu poate comprima un sir aleator de octet i.

2.4. Coduri detectoare si corectoare de erori


Vom studia n cele ce urmeaz a problema transmisiei informat iei n situat ia unui canal discret, dar care altereaz a sirul de simboluri de cod transmise. In practic a, o astfel de alterare este efectul zgomotelor ce se suprapun peste semnalul transmis de nivelul zic (vezi capitolul 3); din acest motiv un astfel de canal se nume ste canal cu zgomot sau canal cu perturbat ii . Pentru transmiterea corect a a datelor printr-un canal cu perturbat ii este necesar un mecanism care s a permit a e detectarea e corectarea erorilor de transmisie. Ambele mecanisme permit receptorului s a determine dac a un cuv ant de cod a fost transmis corect sau a fost alterat de c atre canal. In cazul unui cuv ant alterat: detectarea erorilor presupune c a receptorul informeaz a destinat ia de acest lucru; corectarea erorilor presupune c a receptorul determin a cuv antul de cod cel mai probabil s a fost transmis de c atre emit ator si d a sursei mesajul corespunz ator acelui cuv ant. Ca principiu, at at detectarea c at si corectarea erorilor se bazeaz a pe un cod n care nu orice secvent a (de lungime adecvat a) de simboluri de cod este cuv ant de cod si, ca urmare, alter arile cele mai probabile ale sirului de simboluri transmis conduc la secvent e de simboluri de cod care nu constituie cuvinte de cod. Desigur, ntotdeauna r am ane posibilitatea ca erorile de transmisie s a transforme un cuv ant de cod n alt cuv ant de cod si, ca urmare, erorile

c 2008, Radu-Lucian Lup sa


52 2.4. Coduri detectoare si corectoare de erori

s a scape nedetectate. Cu un cod bine ales, ns a, probabilitatea unei erori nedetectate poate f acut a sucient de mic a. Evident, pentru aceasta este necesar ca mult imea cuvintelor de cod s a e o submult ime ,,rar a a mult imii secvent elor de simboluri de cod. Prin urmare, posibilit a tile de detectare a erorilor tin de construct ia codului. De aici denumirea de cod detector de erori , respectiv cod corector de erori . Deoarece la orice cod detector sau corector de erori mult imea sirurilor de cuvinte de cod este o submult ime strict a a mult imii sirurilor arbitrare de simboluri de cod, rezult a c a orice cod detector sau corector de erori are redundant a. In cele ce urmeaz a vom considera alfabetul canalului S = {0, 1}.

2.4.1. Modelul erorilor


Construct ia codului detector sau corector de erori trebuie f acut a n a sa fel nc at s a fac a sucient de mic a probabilitatea unei erori nedetectate. Este deci esent ial a construct ia unui model probabilistic al erorilor, adic a determinarea, pentru ecare modicare a sirului de simboluri transmis de canal, a probabilit a tii corespunz atoare. Distingem urm atoarele tipuri de erori: erori individuale, care schimb a valoarea unui bit din 0 n 1 sau reciproc; rafale de erori, care schimb a o parte dintr-un sir de bit (nu neap arat tot i). Lungimea rafalei este num arul de bit i dintre primul si ultimul bit modicat; erori de sincronizare, care determin a pierderea unui bit sau introducerea unui bit, mpreun a cu decalarea corespunz atoare a bit ilor urm atori. Transmisia unui sir de bit i poate afectat a simultan de mai multe erori distincte. O modelare simpl a a erorilor este aceea n care se presupune c a exist a doar erori individuale si c a probabilitatea ca o eroare s a afecteze un bit este aceea si pentru tot i bit ii si independent a de valorile bit ilor si de pozit iile celorlalte erori. Cu alte cuvinte, ecare bit are o probabilitate p s a e inversat (dac a emit atorul a transmis un 1 receptorul s a primeasc a0 si dac a emit atorul a transmis 1 receptorul s a primeasc a 0) si 1 p s a e transmis corect. Erorile ind independente, probabilitatea ca o secvent a de l bit i s a n se transmit a corect este p0 = (1 p) , probabilitatea ca acea secvent a s a e afectat a de exact o eroare este p1 = lp(1 p)l1 lp, probabilitatea s a se l(l1) 2 l 2 si, n general, probabilitatea produc a dou a erori este p2 = 2 p (1 p)

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 53

s a se produc a exact k erori este pk = l! pk (1 p)lk , k !(l k )!

conform distribut iei binomiale. Observ am c a, ntruc at p 1, pentru l sucient de mic avem p0 p1 p2 . . ., adic a probabilitatea de-a avea mai mult de c ateva erori este extrem de mic a.

2.4.2. Principiile codurilor detectoare si corectoare de erori


Vom analiza doar cazul codurilor de lungime x a pentru mult imea de simboluri S = {0, 1}. Not am cu l lungimea cuvintelor de cod. Prin urmare, mult imea cuvintelor de cod, W , este o submult ime a mult imii sirurilor de simboluri de cod de lungime l: W {0, 1}l . Ca model al erorilor, consider am c a avem doar erori individuale, independente (cazul studiat n paragraful anterior). Deoarece nu avem erori de sincronizare si deoarece toate cuvintele de cod au aceea si lungime l, receptorul poate departaja cuvintele de cod succesive, independent de erorile de transmisie survenite. Ne vom pune deci doar problema detect arii sau corect arii erorilor ce afecteaz a un cuv ant de cod de lungime x a l. Intruc at probabilitatea de-a avea k sau mai multe erori scade foarte repede o dat a cu cre sterea lui k , se alege o valoare k astfel nc at probabilitatea de-a avea k sau mai multe erori este neglijabil de mic a si se construie ste codul presupun and c a nu se produc mai mult de k 1 erori. Denit ia 2.18 Spunem despre codul c : M {0, 1}l c a detecteaz a k erori individuale dac a, pentru orice cuv ant de cod w W = c(M ), prin transformarea lui w ca urmare a k sau mai put ine erori, cuv antul rezultat w nu este cuv ant de cod: w W . Pentru a determina num arul de erori detectate de un cod, denim urm atoarele: Denim pe {0, 1}l o funct ie distant a:
l

d(u, v ) =
i=1

|ui vi |,

unde u = (u1 , u2 , . . . , ul ) si v = (v1 , v2 , . . . , vl ). Astfel, distant a ntre dou a cuvinte este num arul de erori individuale necesare pentru a transforma primul cuv ant n cel de-al doilea.

c 2008, Radu-Lucian Lup sa


54 2.4. Coduri detectoare si corectoare de erori

Not am acum dmin (W ) = min d(u, v ),


u,v W u=v

unde W este mult imea cuvintelor de cod ale codului considerat. Propozit ia 2.19 Fie codul c : M {0, 1}l si W = c(M ). Codul c detecteaz a k erori dac a si numai dac a dmin (W ) k + 1. S a examin am acum codurile corectoare de erori. Denit ia 2.20 Spunem despre codul c : M {0, 1}l c a corecteaz a k erori individuale dac a, pentru orice cuv ant de cod w W = c(M ), prin transformarea lui w ca urmare a k sau mai put ine erori cuv antul rezultat w are proprietatea c a w este cel mai apropiat cuv ant de w din W : ws W , d(w , ws ) d(w , w). Propozit ia 2.21 Fie codul c : M {0, 1}l si W = c(M ). Codul c corecteaz a k erori dac a si numai dac a dmin (W ) 2k + 1. S a analiz am acum ecient a codului. De obicei, datele utile pentru un cod detector sau corector de erori sunt siruri de bit i, obt inut i prin codicarea datelor din universul aplicat iei. Ca urmare, mult imea mesajelor este mult imea sirurilor de n bit i, M = {0, 1}n , pentru o valoare n dat a. Mesajele sunt 1 n , echiprobabile, probabilitatea oric arui mesaj ind aceea si: pm = |M | = 2 m M . Ca urmare, ecient a codului este n H = . l l S a mai not am c a |M | = |W | = 2n . Construct ia efectiv a a unui cod detector sau corector de erori cuprinde dou a aspecte: construct ia unei multimi W {0, 1}l cu dmin (W ) sucient de mare pentru num arul de erori de detectat sau corectat si, totodat a, av and log2l|W | c at mai mare pentru o ecient a c at mai mare a codului. g asirea unor algoritmi ecient i pentru codicare si pentru detectarea erorilor (adic a vericarea apartenent ei unui sir de l bit i la W ) si eventual corectarea erorilor (adic a g asirea celui mai apropiat cuv ant din W fat a de un sir de l bit i dat).

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 55

2.4.3. C ateva coduri detectoare sau corectoare de erori


Descriem n continuare, pe scurt, c ateva coduri detectoare sau corectoare de erori. In descrierea lor vom utiliza notat iile din paragraful precedent. In general, mult imea cuvintelor de cod W este astfel aleas a nc at sirul primilor n dintre cei l bit i s a poat a lua oricare dintre cele 2n valori posibile, iar ultimii l n bit i sunt unic determinat i de primii n bit i. Primii n bit i din cuv antul de cod poart a denumirea de informat ie util a, iar ultimii l n bit i poart a numele de bit i de control. Pentru un astfel de cod, emit atorul prime ste de la surs a n bit i ce constituie informat ia util a, calculeaz a cei l n biti de control aplic and un algoritm asupra informat iei utile si transmite prin canal informat ia util a urmat a de bit ii de control. Receptorul cite ste informat ia util a si bit ii de control; pentru detectarea erorilor aplic a acela si algoritm ca si emit atorul asupra informat iei utile citite si veric a dac a rezultatul coincide cu bit ii de control citit i. 2.4.3.1. Bitul de paritate La codul cu bit de paritate se alege l = n + 1. Exist a dou a sisteme, paritate par a (engl. even parity ), n care W este denit a ca ind mult imea sirurilor de l bit i cont in and num ar par de valori 1, si paritate impar a (engl. odd parity ), n care W este mult imea sirurilor de l bit i cont in and un num ar impar de valori 1. Unicul bit de control se mai nume ste bit de paritate. Se vede imediat c a dmin (W ) = 2 si prin urmare bitul de paritate detecteaz a o eroare si nu poate corecta nici o eroare. Bitul de paritate se calculeaz a num ar and bit ii cu valoare 1 din informat ia util a si veric and dac a este par sau impar. Exemplul 2.13: Pentru codul cu paritate par a si n = 7, sirul de bit i 1010110 (informat ie util a) se codic a 10101100 (bitul de control este 0). S irul 1110110 se codic a 11101101 (bit de control 1). S irul 11001100 este cuv antul de cod corespunz ator informat iei utile 1100110. S irul 11001101 nu este cuv ant de cod valid. Exemplul 2.14: Pentru codul cu paritate impar a si n = 7, sirul de bit i 1010110 se codic a 10101101 (bitul de control este 1). S irul 1110110 se codic a 11101100 (bit de control 1). S irul 11001100 nu este cuv ant de cod valid. S irul 11001101 este cuv antul de cod corespunz ator informat iei utile 1100110. 2.4.3.2. Paritate pe linii si coloane La un astfel de cod informat ia util a se consider a a o matrice n1 n2 de bit i, cu n1 si n2 xat i. Ca urmare n = n1 n2 . Codul are l = (n1 + 1) (n2 +

c 2008, Radu-Lucian Lup sa


56 2.4. Coduri detectoare si corectoare de erori

1). Cuvintele de cod sunt v azute ca ind matrici (n1 + 1) (n2 + 1) n care ultima linie si ultima coloan a cuprind bit ii de control. Mult imea cuvintelor de cod este mult imea matricilor (n1 + 1) (n2 + 1) n care pe ecare linie si pe ecare coloan a num arul de valori 1 este par. Se poate ar ata u sor c a dmin (W ) = 4, prin urmare codul detecteaz a3 erori sau corecteaz a 1 eroare. Codicarea si detectarea erorilor se face calcul and bitul de paritate pentru ecare linie si pentru ecare coloan a. De remarcat c a ultimul bit din matrice trebuie calculat e ca bit de paritate al bit ilor de paritate ai liniilor, e ca bit de paritate ai bit ilor de paritate ai coloanelor; ambele variante duc la acela si rezultat. Exemplul 2.15: Pentru n1 = n2 = 4, sirul 1011010111001111 se codic a astfel: 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 Astfel, cuv antul de cod rezultat este sirul: 1011101010110001111011011. Pentru corectarea erorilor, se caut a mai nt ai liniile si coloanele care ncalc a paritatea. Presupun and c a s-a produs o singur a eroare, va exista exact o linie si o coloan a. Bitul eronat este la intersect ia liniei si coloanei g asite. Exemplul 2.16: S irul 101001101011010011000111111101 nu este cuv ant de cod: 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 Se observ a c a paritatea nu este respectat a de linia a 2-a si de prima coloan a. Prin urmare, primul bit de pe linia a 2 este eronat, ind 0 n original. Datele utile sunt deci: 1010010101100111. 2.4.3.3. Coduri polinomiale Oric arui sir de bit i v = (v1 , . . . , vk ) {0, 1}k i se asociaz a un polinom de grad cel mult k 1: v (X ) = v1 X k1 + v2 X k2 + . . . + vk1 X + vk .

c 2008, Radu-Lucian Lup sa


Capitolul 2. Not iuni de teoria informat iei 57

Coecient i acestui polinom sunt considerat i ca elemente ale corpului F2 = ({0, 1}, +, ), unde + este operat ia sau exclusiv, iar este operat ia si, cu tabelele de mai jos: + 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 De remarcat c a polinoamele peste orice corp p astreaz a multe din propriet a tile polinoamelor ,,obi snuite, n particular se poate deni la fel adunarea, sc aderea si nmult irea si are loc teorema mp art irii cu rest. Pentru construct ia unui cod polinomial, se alege un a sa-numit polinom generator g (X ) de grad l n (reamintim c a l este lungimea cuvintelor de cod, iar n este num arul de bit i ai informatiei utile; n < l). Mult imea cuvintelor de cod W se dene ste ca mult imea sirurilor de l bit i cu proprietatea c a polinomul asociat sirului este divizibil cu g (X ). S irul bit ilor de control se calculeaz a astfel: se construie ste polinomul i(X ) asociat informat iei utile, se calculeaz a r(X ) ca ind restul mp art irii lui i(X ) X ln la g (X ) sirul bit ilor de control este sirul de l n bit i al c arui polinom asociat este r(X ). Pentru a ne convinge de corectitudinea algoritmului de mai sus, s a observ am c a obt inem ca si cuv ant de cod un sir de forma i1 , . . . , in , r1 , . . . , rln al c arui polinom asociat este v (X ) =i1 X l1 + . . . + in X ln + r1 X ln1 + . . . + rln = =i(X ) X ln + r(X ). Deoarece r(X ) este restul mp art irii lui i(X ) X ln la g (X ), rezult a c a polil n nomul i(X ) X r(X ) este divizibil cu g (X ). Deoarece n F2 avem c a 1 + 1 = 0 rezult a c a r(X ) = r(X ). De aici rezult a c a v (X ) este divizibil cu g (X ). Codurile polinomiale sunt mult utilizate datorit a simplit a tii construc tiei unor circuite (hardware) care calculeaz a bit ii de control. Dac a se dore ste corectarea erorilor, se observ a c a pozit iile erorilor nu depind dec at de restul mp art irii polinomului asociat sirului de bit i recept ionat, v (X ), la g (X ).

2.4.4. Coduri detectoare si corectoare de erori n alte domenii


Ne nt alnim cu coduri detectoare sau corectoare de erori si n situat ii mai put in legate de calculatoare.

c 2008, Radu-Lucian Lup sa


58 2.4. Coduri detectoare si corectoare de erori

Limbajul natural cont ine mult a redundant a; ca urmare permite detetcarea si coerctarea multor ,,erori de tipar, dup a cum v a putet i convinge uo sr citind aceast a fraz a. Din p acate ns a, nu garanteaz a detectarea nici m acar a unei singure erori; sunt cazuri n care o singur a eroare poate schimba radial sensul unei fraze. Transmisia vocii prin radio sau prin telefonie analogic a este n general zgomotoas a si adesea cu distorsiuni puternice. Ca urmare, riscul erorilor de transmisie este ridicat. Cum, pe de alt a parte, diverse indicative cum ar numere de telefon, numere de nmatriculare, s.a.m.d. nu cont in redundant a, la transmiterea acestora cifrele se pronunt a cu anumite modic ari, iar pentru litere se pronunt a un cuv ant ntreg, dintr-un set standardizat, care ncepe cu litera ce se dore ste a transmis a. De exemplu, 2 minute se va pronunt a doi minute, pentru a evita confuzia dou a -nou a ; de asemenea 7 se pronunt a septe. Ca un alt exemplu, n englez a, indicativul ROT209 se va pronunt a Romeo Oscar Tango Two Zero Niner. In sf ar sit, codul numeric personal (CNP), codul IBAN, ISBN-ul de pe c art i si alte asemenea coduri de identicare ce sunt transmise frecvent prin intermediul unor operatori umani au o cifr a de control.

c 2008, Radu-Lucian Lup sa


59

Capitolul 3

Nivelul zic

3.1. Problema transmisiei informat iei la nivelul zic


Sarcina nivelului zic este aceea de-a transmite un sir de bit i (sau, n general, un sir de simboluri) produs de o surs a c atre o destinat ie . Sursa si destinat ia se a a la distant a una fat a de cealalt a. Sursa si destinat ia sunt ,,client ii sistemului de comunicat ie; nivelul zic trebuie s a e capabil s a transmit a datele n folosul acestora. S irul de bit i ce trebuie transmis poart a denumirea de date utile . Pentru ndeplinirea scopului s au, nivelul zic dispune de un mediu de transmisie . Mediul de transmisie se ntinde de la amplasamentul sursei p an a la amplasamentul destinat iei si este capabil s a transmit a la distant a o anumit a act iune zic a. Nivelul zic cuprinde trei elemente: mediul de transmisie, emit a torul si receptorul (vezi g. 3.1). Emit atorul prime ste bit ii de la surs a si, n conformitate cu valorile lor, act ioneaz a asupra mediului. Receptorul sesizeaz a act iunile emit atorului asupra mediului si reconstituie sirul de bit i produs de surs a. S irul de bit i reconstituit este livrat destinat iei. M arimea zic a ce m asoar a act iunea produs a de emit ator si transmis a de c atre mediu p an a la receptor si care este utilizat a efectiv ca purt atoare a informat iei se nume ste semnal . Semnalul este ntotdeauna analizat ca o funct ie continu a de timp. M arimea zic a utilizat a ca semnal este aleas a de proiectantul sistemului de comunicat ii dintre acele m arimi pe care mediul ales le poate propaga n condit ii bune. De exemplu, pentru transmisia prin perechi de conductoare, semnalul poate tensiunea electric a dintre conductoare sau intensitatea curentului prin conductoare.

c 2008, Radu-Lucian Lup sa


60 3.1. Problema transmisiei informat iei la nivelul fizic

Nivelul zic Sursa Emit ator S ir de bit i Semnal Mediu Receptor Semnal Destinatie S ir de bit i

Figura 3.1: Modelarea transmisiei la nivel zic

Emit atorul transform a sirul de bit i recept ionat ntr-un semnal adecvat transmiterii prin mediul de comunicat ie. Receptorul efectueaz a operat ia invers a. Corespondent a dintre sirurile de bit i posibile si semnalele corespunz atoare poart a denumirea de schem a de codicare a informat iei prin semnal continuu. Schema de codicare utilizat a trebuie s a e aceea si pentru emit ator si receptor. Mediul de transmisie modic a n general semnalul transmis, astfel c a semnalul primit de receptor de la mediu nu este identic cu semnalul aplicat de emit ator asupra mediului. Vom ar ata n 3.2 care sunt transform arile suferite de semnal n timpul propag arii. Schema de codicare a informat iei trebuie s a tin a cont de aceste modic ari. O parte din schemele folosite vor studiate n 3.3. In continuarea acestui capitol vom trece n revist a problemele specice legate de transmiterea semnalelor si de codicarea informat iei prin semnale. O analiz a riguroas a a acestor probleme dep a se ste cu mult cadrul acestei lucr ari. Prezentarea de fat a are ca scop familiarizarea cu not iunile si problemele respective, n vederea nt elegerii solut iilor existente, limit arilor lor, parametrilor specicat i n documentat iile privind echipamentele folosite si, mai ales, posibilit a tii comunic arii cu speciali stii n domeniul electronicii si comunicat iilor.

3.2. Transmiterea semnalelor


3.2.1. Modic arile suferite de semnale
Pentru a studia modic arile suferite de semnale n timpul propag arii prin mediul de transmisie, vom considera n principal cazul transmiterii tensiunii electrice printr-o pereche de conductoare. Semnalul m asurat la jonct iunea dintre emit ator si mediu se nume ste semnal emis si l vom nota cu Ue (t), unde t este timpul. Semnalul m asurat

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 61

la jonct iunea dintre mediu si receptor se nume ste semnal recept ionat si l vom nota cu Ur (t). Transform arile suferite de semnal sunt urm atoarele: nt arziereaconst a n faptul c a semnalul recept ionat urmeaz a cu o anumit a nt arziere semnalul emis. Cu notat iile de mai sus si neglij and fenomenele ce vor descrise la punctele urm atoare, avem Ur (t) = Ue (t t). Durata t se nume ste nt arziere (de propagare) sau timp de propagare. l , unde l este lungimea mediului iar Int arzierea are valoarea t = v v este viteza de propagare a semnalului. Viteza de propagare a semnalului depinde de natura mediului de transmisie. La transmisia prin conductoare, v depinde numai de materialul izolator dintre conductoare si, pentru materialele folosite n mod curent, are valoarea aproximativ a v 2/3c = 2 108 m/s, unde c este viteza luminii n vid. atenuarea const a n faptul c a semnalul recept ionat are amplitudine mai mic a dec at cel emis. Neglij and nt arzierea, are loc Ur (t) = g Ue (t), cu 0 < g < 1. T in and cont si de nt arziere, avem Ur (t) = g Ue (t t). Num arul 1/g se nume ste factor de atenuare n tensiune. De cele mai multe ori atenuarea unui semnal este exprimat a prin factorul de atenuare n putere, numit pe scurt factor de atenuare , denit ca raportul dintre puterea semnalului emis si a celui recept ionat. In cazul perechii de conductoare, deoarece puterea este proport ional a cu p atratul tensiunii (raportul tensiune/intensitate ind aproximativ constant), factorul de atenuare n putere este egal cu 1/g 2 . Prin conectarea unul dup a cel alalt a mai multor medii de transmisie, factorul de atenuare a mediului rezultat este produsul factorilor de atenuare ai componentelor. Din acest motiv, n loc de factorul de atenuare se folose ste adesea logaritmul s au: logaritmul factorului de atenuare rezultat este suma logaritmilor, n aceea si baz a, ai factorilor de atenuare ai componentelor. Logaritmul factorului de atenuare se nume ste pe scurt atenuare . Valoarea logaritmului depinde de baza utilizat a, baze diferite duc and la valori proport ionale. Deoarece schimbarea bazei de logaritmare are un efect similar cu schimbarea unit a tii de m asur a pentru o m arime zic a, dup a valoarea logaritmului se scrie o pseudo-unitate de m asur a ce arat a de fapt baza de logaritmare utilizat a. Pentru logaritmul n baza zece, pseudo-unitatea de m asur a folosit a este bel ul, av and simbolul B. Pseudo-unitatea de m asur a utilizat a curent este decibel ul, av and simbolul dB. Avem 1 B=10 dB. O valoare exprimat a n decibeli (dB) o putem vedea, echivalent, e ca valoarea logaritmului n baza

c 2008, Radu-Lucian Lup sa


62 3.2. Transmiterea semnalelor

10 nmult it a cu 10, e ca valoarea logaritmului n baza 101/10 . De exemplu, dac a factorul de atenuare este (1/g 2 ) = 10, logaritmul s au este 1 B = 10 dB. Dac a factorul de atenuare este 2, logaritmul s au (atenuarea) este log10 2 B 0,3 B = 3 dB. Puterea semnalului emis se m asoar a n watti (W) sau miliwatti (mW). Adesea, este specicat a nu puterea ci logaritmul puterii: se ia num arul ce reprezint a puterea, n miliwatti, si logaritmul s au se exprim a n decibeli. Pseudo-unitatea de m asur a corespunz atoare reprezent arii de mai sus se nume ste decibel-miliwatt, av and simbolul (neconform regulilor Sistemului Internat ional de Masuri si Unit a ti) dBm. Ca exemple: o putere de emisie de 1 mW poate scris a si 0 dBm, o putere de 1 W se scrie 30 dBm, iar 0,1 mW se scrie ca 10 dBm. Puterea minim a a semnalului recept ionat, pentru care receptorul este capabil s a decodice corect semnalul, se nume ste pragul de sensibilitate al receptorului. Ca si puterea emit atorului, pragul de sensibilitate se poate exprima n miliwatti sau n decibel-miliwatti. distorsiunea este o modicare determinist a a semnalului recept ionat fat a de cel emis, diferit a de nt arziere si atenuare. (O modicare este determinist a dac a, oridec ateori transmitem un acela si semnal, modicarea se manifest a identic.) Mai multe detalii despre distorsiuni vor date n 3.2.2. zgomotele sunt modic ari nedeterministe ale semnalului recept ionat, cauzate de factori externi sistemului de transmisie (fulgere, ntrerup atoare electrice, alte sisteme de transmisie de date, alte echipamente electronice) sau de factori interni cu manifestare aleatoare (mi scarea de agitat ie termic a a atomilor din dispozitivele electornice). Zgomotul se exprim a ca diferent a dintre semnalul recept ionat efectiv si semnalul ce ar recept ionat n lipsa zgomotului. Raportul semnal/zgomot este raportul dintre puterea semnalului si puterea corespunz atoare zgomotului. Uneori termenul de raport semnal/zgomot este utilizat si pentru logaritmul raportului semnal/zgomot; de obicei nu este pericol de confuzie deoarece logaritmul este exprimat n decibeli, n timp ce raportul semnal/zgomot nu are unitate de m asur a. O categorie special a de zgomot este diafonia , care este un zgomot provenit din semnalul transmis pe un mediu de transmisie vecin.

3.2.2. Analiza transmiterii semnalelor cu ajutorul transformatei Fourier


Consider am un dispozitiv electronic, care are o intrare si o ie sire

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 63

(g. 3.2). In particular, o pereche de conductoare folosit a pentru transmisie poate considerat a un astfel de dispozitiv, capetele dinspre emit ator constituind intrarea, iar cele dinspre receptor, ie sirea.

Ui

Ue

Figura 3.2: Un dispozitiv cu o intrare si o ie sire

Tensiunea de la ie sire depinde de tensiunea de la intrare, ns a n general depinde de tot istoricul ei. Altfel spus, comportamentul dispozitivului poate descris de un operator L (reamintim c a un operator este o funct ie denit a pe un spat iu de funct ii cu valori tot ntr-un spat iu de funct ii). Acest operator prime ste ca argument funct ia timp-tensiune Ui care caracterizeaz a semnalul de intrare. Valoarea operatorului este funct ia timp-tensiune Ue = L(Ui ) care caracterizeaz a semnalul de ie sire. Multe dispozitive electronice au un comportament liniar, adic a operatorul L care le caracterizeaz a este un operator liniar. Reamintim c a un operator L este liniar dac a, pentru orice funct ii f si g si pentru orice scalari si , are loc L(f + g ) = L(f ) + L(g ). Pentru un dispozitiv liniar, dac a semnalul de intrare Ui (t) poate descompus ca o sum a de forma Ui (t) = 1 Ui1 (t) + 2 Ui2 (t) + + n Uin (t), atunci pentru semnalul de ie sire avem Ue (t) = L(Ui )(t) = 1 Ue1 (t) + 2 Ue2 (t) + + n Uen (t), unde Ue1 = L(Ui1 ), Ue2 = L(Ui2 ),. . . ,Uen = L(Uin ). Dispozitivele liniare au proprietatea c a, dac a semnalul de intrare este sinusoidal , adic a Ui (t) = U0 cos (2f t + ) , atunci semnalul de ie sire este tot sinusoidal si, mai mult, Ue (t) = g (f ) U0 cos(2f t + (f )),

c 2008, Radu-Lucian Lup sa


64 3.2. Transmiterea semnalelor

unde g (f ) si (f ) depind doar de cum este construit dispozitivul si de frecvent a f a semnalului. Orice semnal se poate scrie unic ca o sum a de semnale sinusoidale. (Nota: condit iile matematice asupra semnalului, si alte detalii se g asesc n lucr arile de specialitate, de exemplu [Crstici et al. 1981]; aici facem doar o prezentare semi-intuitiv a). Un semnal periodic de perioad a T se poate descompune n a sa-numita serie Fourier :

U (t) =
k=0

ak cos

2k t + k . T

Un semnal limitat n timp, adic a nul n afara unui interval nit [0, T ], se poate descompune sub forma:

U (t) =
0

a(f ) cos (2f t + (f )) df.

(3.1)

Not a: relat ia (3.1) este dat a de obicei sub forma numit a transformata Fourier invers a: U (t) =
I R

(f ) e2if t df, U

(3.2)

este o funct unde U ie complex a care se nume ste transformata Fourier a funct iei U. Relat ia (3.1) spune c a semnalul U se poate scrie ca o sum a de sinusoide cu diferite frecvent e f av and amplitudinile a(f ) si defazajul (decalajul sinusoidei de-a lungul axei Ox) egal cu (f ). Frecvent ele f pentru care amplitudinile corespunz atoare a(f ) sunt nenule alc atuiesc spectrul semnalului. Pentru un dispozitiv liniar, semnalul de ie sire se poate calcula descompun and n sinusoide semnalul de intrare, calcul and efectul dispozitivului asupra ec arei sinusoide n parte si nsum and n nal ie sirile:

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 65

Ue (t) = L(Ui (t)) = = L


0

ai (f ) cos(2f t + i (f ))df = (3.3)

=
0

L(ai (f ) cos(2f t + i (f )))df =

=
0

ai (f ) g (f ) cos(2f t + i (f ) (f ))df,

unde ai (f ) si i (f ) sunt funct iile a(f ) si (f ) din descompunerea, conform relat iei (3.1), a semnalului de intrare Ui . Comportamentul unui dispozitiv liniar este deci complet denit de funct iile g (f ) si (f ). Un semnal este nedistorsionat dac a si numai dac a, pentru toate frecvent ele f din spectrul semnalului, g (f ) este constant a si (f ) este proport ional cu f , adic a exist a constantele g0 si 0 astfel nc at g (f ) = g0 (f ) = 0 f (3.4)

pentru toate frecvent ele f din spectrul semnalului. In practic a, condit ia (3.4) este satisf acut a, cu o aproximat ie acceptabil a, doar pentru frecvent e care se ncadreaz a ntr-un anumit interval f [fmin , fmax ]. Acest interval se nume ste banda de trecere a dispozitivului. In consecint a, dac a spectrul semnalului de intrare se ncadreaz a n banda de trecere a dispozitivului, semnalul de ie sire va prezenta distorsiuni acceptabil de mici. Diferent a fmax fmin se nume ste l a timea de band a a dispozitivului. De exemplu, banda de trecere a unei linii telefonice este cuprins a ntre aproximativ 300 Hz si 3 kHz.

3.3. Codicarea informat iei prin semnale continue


3.3.1. Scheme de codicare
Cea mai simpl a codicare este aceea n care mp art im timpul n intervale de durat a xat a t (pe care o numim lungimea unui bit ) si, pe durata

c 2008, Radu-Lucian Lup sa


66 3.3. Codificarea informat iei prin semnale continue

ec arui bit, semnalul emis va avea o anumit a valoare de exemplu 12 V dac a bitul are valoarea 1 si o alt a valoare de exemplu 0 V dac a bitul are valoarea 0 (vezi g. 3.3).

Figura 3.3: Codicarea direct a

Receptorul determin a intervalele corespunz atoare bit ilor si m asoar a semnalul la mijlocul ec arui interval. Dac a tensiunea este mai mare dec at o valoare numit a prag pentru exemplul nostru se poate lua ca prag 3 V receptorul decide c a bitul respectiv are valoarea 1, iar n caz contrar decide c a bitul are valoarea 0. Valoarea pragului poate x a sau poate stabilit a dinamic n funct ie de amplitudinea semnalului recept ionat pentru a tine cont de atenuare. S a observ am c a receptorul trebuie s a e sincronizat cu emit atorul, adic a s a examineze semnalul recept ionat la mijlocul intervalului corespunz ator unui bit. Acest lucru se poate face ns a este adesea nepractic transmit and un al doilea semnal, de sincronizare, pe un mediu separat (adic a folosind o alt a pereche de re). Sincronizarea se poate face si pe baza semnalului util, dac a receptorul dispune de un ceas sucient de precis. In acest scop, receptorul va m asura timpul c at semnalul este ,,sus (peste prag) si va determina de c ate ori se cuprinde n acest interval durata unui bit. Num arul de bit i consecutivi identici trebuie s a e limitat, c aci receptorul nu va putea distinge ntre n bit i si n + 1 bit i consecutivi av and aceea si valoare, dac a n este prea mare. Limitarea num arului de bit i identici consecutivi se poate face n mai multe feluri: Codicarea Manchester. Semnalul are una sau dou a tranzit ii pentru ecare interval corespunz ator unui bit. O tranzit ie la mijlocul intervalului arat a valoarea bitului: tranzit ia este n sus pentru 1 si n jos pentru 0. Pentru a face posibil ca doi bit i consecutivi s a aib a aceea si valoare, la nceputul intervalului corespunz ator unui bit mai poate s a apar a o tranzit ie (g. 3.4).

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 67

Ret elele Ethernet de 10 Mbit/s utilizeaz a codicarea Manchester.

Figura 3.4: Codicarea Manchester

Codicarea Manchester diferent ial a. Semnalul are o tranzit ie la nceputul ec arui interval de bit. Dac a bitul este 1 atunci semnalul mai are o tranzit ie la mijlocul intervalului (g. 3.5).

Figura 3.5: Codicarea Manchester diferent ial a

Codurile de grup sunt o familie de coduri construite dup a urm atoarea schem a: Se xeaz a un num ar n (valori uzuale: n = 4 sau n = 8); sirul transmis trebuie s a aib a ca lungime un multiplu de n bit i. Se xeaz a o tabel a de corespondent a care asociaz a ec aruia dintre cele 2n siruri de n bit i posibile un sir de m bit i, unde m > n este xat, cu restrict ia ca ntre cei m bit i s a nu e prea multe valori egale consecutive. Codul este determinat de numrele n si m si de aceast a tabel a. S irul de bit i de codicat se codic a astfel: mai nt ai, ecare grup de n bit i consecutivi se nlocuie ste cu sirul de m bit i asociat. Apoi sirul de bit i astfel obt inut se codic a direct, un bit 0 ind reprezentat printr-o valoare a tensiunii si un bit 1 prin alt a valoare. Ret elele Ethernet de 100 Mbit/s utilizeaz a un cod de grup cu n = 4 si m = 5.

c 2008, Radu-Lucian Lup sa


68 3.3. Codificarea informat iei prin semnale continue

S a examin am acum cerint ele privind banda de trecere a mediului necesar a pentru transmiterea semnalelor de mai sus. Semnalele de form a rectangular a descrise mai sus au spectru innit (spectrul lor nu este m arginit superior). Trecute printr-un mediu de comunicat ie care are o l a time de band a nit a, semnalele vor ,,rotunjite mai mult sau mai put in. S a not am cu durata elementar a a unui palier al semnalului ideal (durata minim a n care semnalul ideal are o valoare constant a). Pentru codicarea direct a, = t; pentru codicarile Manchester si Manchester t . diferent ial a, = 1 2 Dac a banda de trecere a mediului include intervalul 0, 21 , atunci mediul p astreaz a sucient din forma semnalului pentru ca receptorul s a poat a decodica informat ia transmis a. Dac a frecvent a maxim a a benzii de trecere este mai mic a dec at 21 , atunci un semnal rectangular care are, alternativ, un timp o valoare si urm atorul timp cealalt a valoare va distorsionat at at de mult nc at ,,urcu surile si ,,cobor a surile semnalului nu vor mai putea identicate de c atre receptor si ca urmare informat ia purtat a nu mai poate obt inut a. Pentru un mediu dat, cu o band a de trecere dat a, exist a, prin urmare, o valoare minim a a lui pentru care receptorul poate extrage informat ia util a din semnalul recept ionat. Dac a limita superioar a a benzii de trecere este fmax , 1 . valoarea minim a este = 2fmax Diversele codic ari studiate mai sus au diferite rapoarte k ntre durata medie a unui bit si valoarea lui . La codicarea direct a, durata unui bit este egal a cu si deci k = 1. La codic arile Manchester si Manchester diferent ial a, durata unui bit este 2 si avem k = 2. La codurile de grup, durata m s i avem k = unui bit util este m n n . Debitul maxim cu care se pot transmite fmax datele este k .

3.3.2. Modulat ia
Exist a situat ii n care este necesar ca spectrul semnalului s a ocupe o band a departe de frecvent a zero. Aceasta se poate nt ampla e pentru c a circuitele sau mediul de transmisie nu pot transmite frecvent ele apropiate de zero (este de exemplu cazul transmiterii prin unde radio), e pentru a putea transmite mai multe semnale pe acela si mediu prin multiplexare n frecvent a (vezi 3.3.3). In aceste situat ii, semnalul rezultat direct n urma uneia dintre schemele de codicare descrise n paragraful precedent nu poate transmis direct. O posibil a solut ie este modulat ia , descris a n continuare.

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 69

Semnalul transmis efectiv este de forma: U (t) = a sin(2f t + ), unde unul dintre parametri a, f sau variaz a n timp, n funct ie de semnalul original, rezultat direct din codicare. Semnalul original l numim semnal primar sau semnal modulator. Semnalul sinusoidal, rezultat pentru valorile ,,de repaus ale parametrilor a, f si , se nume ste semnal purt ator, iar frecvent a f de repaus se nume ste frecvent a purt atoare si o vom nota n continuare cu fp . Semnalul rezultat n urma modulat iei se nume ste semnal modulat . Operat ia de construct ie a semnalului modulat pornind de la semnalul primar se nume ste modulat ie. Operat ia invers a, de obt inere a semnalului primar d andu-se semnalul modulat, se nume ste demodulat ie. Dup a parametrul modicat, avem: modulat ia de amplitudine (prescurtat MA, engl. amplitude modulation, AM ), care const a n modicarea amplitudinii a. Semnalul transmis este deci: U (t) = U0 s(t) sin(2fp t), unde s(t) este semnalul modulator. Pentru ca amplitudinea a = U0 s(t) s a e mai mare dec at 0, asupra semnalului s(t) se impune restrict ia s(t) > 0. Se observ a c a modulat ia n amplitudine este liniar a (modulat ia sumei a dou a semnale a + b este suma rezultatelor modulat iei independente pentru a si b). Dac a semnalul modulator este sinusoidal s(t) = 1 + m sin(2fs t + ) atunci U (t) =U0 s(t) sin(2fp t) = =U0 (sin(2fp t) + m sin(2fs t + ) sin(2fp t)) = =U0 + sin(2fp t)+ (3.5)

m m cos(2 (fp fs )t ) cos(2 (fp + fs )t + ) 2 2

c 2008, Radu-Lucian Lup sa


70 3.3. Codificarea informat iei prin semnale continue

adic a n urma modulat iei n amplitudine cu un semnal sinusoidal de frecvent a fs se obt ine o sum a de trei semnale sinusoidale av and frecven tele fp fs , fp si fp + fs . Din liniaritatea modulat iei n amplitudine si din relat ia (3.5) deducem c a, pentru un semnal modulator av and un anumit spectru, spectrul semnalului modulat cont ine frecvent a purt atoare si dou a benzi laterale , st ang a si dreapt a, acestea cuprinz and diferent ele, respectiv sumele, dintre frecvent a purt atoare si frecvent ele din spectrul semnalului primar. Intruc at spectrul semnalului modulat este simetric n jurul frecvent ei purt atoare, de fapt doar una dintre benzile laterale poart a informat ie util a. Din acest motiv, adesea se suprim a total sau part ial de la transimisie una dintre benzile laterale. modulat ia de frecvent a (prescurtat MF, engl. frequency modulation, FM ), care const a n modicarea frecvent ei f n jurul frecvent ei purt atoare fp . Semnalul transmis are forma U (t) = U0 sin 2 (fp + m s(t)) t unde, din nou, fp este frecvent a purt atoare, s(t) este semnalul modulator, iar m este o constant a. Semnalul modulator trebuie s a respecte restrict ia m s(t)s0 fp . Analiza spectrului unui semnal modulat n frecvent a este mult mai difcil a dec at n cazul modulat iei n amplitudine. modulat ia de faz a, care const a n modicarea fazei . Semnalul transmis are forma U (t) = U0 sin 2fp t + m s(t) Este evident c a, ntruc at receptorul nu are de obicei un reper absolut de timp, el nu poate detecta dec at variat iile de faz a ale semnalului recept ionat. Ca urmare, o valoare constant a a lui s(t) nu poate deosebit a de zero si, mai mult, nici variat ii lente ale lui s(t) nu pot detectate. In consecint a, spectrul lui s(t) nu poate cont ine frecvent e prea apropiate de 0. Exist a si posibilitatea de-a varia simultan doi sau chiar tot i cei trei parametri. Modulat ia n cuadratur a const a n varierea simultan a a amplitudinii a si a fazei , pentru a transmite simultan dou a semnale utile s1 si s2 .

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 71

Semnalul modulat are forma U (t) = U0 s1 (t) s2 (t) = U0 ((s1 (t)) cos(2fp t) + (s2 (t)) sin(2fp t)) s1 (t)2 + s2 (t)2 sin 2fp t + arctg

3.3.3. Multiplexarea n frecvent a


Multiplexarea, n general, const a n transmiterea mai multor semnale independente prin acela si mediu de transmisie. Dou a semnale ale c aror spectre se ncadreaz a n benzi disjuncte pot separate cu ajutorul unor dispozitive numite ltre (de frecvent a). Multiplexarea n frecvent a const a n transmiterea simultan a prin acela si mediu a unor semnale av and spectre ncadrate n benzi disjuncte. Emit atoarele produc semnale cu spectre disjuncte prin modulat ie utiliz and frecvent e purt atoare diferite. De notat c a diferent ele ntre frecvent ele purt atoare trebuie s a e mai mari dec at l a timile de band a necesare transmisiei semnalelor corespunz atoare. Fiecare receptor trebuie s a e dotat cu un ltru care s a lase s a treac a doar banda utilizat a de emit atorul coresunz ator.

3.3.4. Capacitatea maxim a a unui canal de comunicat ie


Banda de trecere a mediului de transmisie mpreun a cu raportul semnal/zgomot determin a o limit a superioar a a debitului transmisiei. Limitarea este independent a de schema de codicare utilizat a pentru transmisie si ca urmare este valabil a pentru orice schem a de codicare ne-am putea imagina. Este util s a avem n vedere existent a acestei limite, n acela si fel n care cunoa sterea principiului conserv arii energiei ne folose ste pentru a nu ncerca construct ia unui perpetuum mobile ncercare din start sortit a e secului. Pentru un mediu cu l a timea de band a f si cu raportul semnal/zgomot s/n, debitul maxim de informat ie ce poate transmis este proport ional cu f log(s/n + 1). Acest rezultat provine din urm atoarele dou a observat ii: 1. Teorema de e santionare a lui Shannon spune c a un semnal al c arui spectru se ncadreaz a ntr-un interval [0, fmax ) este unic determinat de 1 valorile sale la momente de timp situate la intervale egale cu t = 2fmax unul de altul. Ca urmare, un semnal al c arui spectru este inclus n intervalul [0, fmax ) nu poate purta mai mult a informat ie dec at e santioanele sem1 nalului luate la interval 2fmax unul de altul.

c 2008, Radu-Lucian Lup sa


72 3.3. Codificarea informat iei prin semnale continue

2. In prezent a zgomotului, receptorul nu poate distinge ntre dou a valori posibile ale semnalului la un anumit moment de timp dec at dac a diferent a dintre cele dou a valori este mai mare dec at amplitudinea zgomotului. Ca urmare, cantitatea de informat ie purtat a de un e santion este limitat a la o valoare proport ional a cu log(s/n + 1). Deoarece pentru o schem a de codicare xat a exist a o relat ie de proport ionalitate ntre l a timea de band a a mediului si debitul maxim al transmisiei, debitul maxim al transmisiei unui echipament de comunicat ie se nume ste uneori n mod impropriu tot l a time de band a sau band a de trecere .

3.4. Transmisia prin perechi de conductoare


La transmisia prin perechi de conductoare, mediul const a din dou a conductoare izolate ntre ele. Semnalul este considerat a tensiunea electric a ntre conductoare.

3.4.1. Construct ia cablului


Conductoarele trebuie realizate dintr-un material cu conductivitate electric a ridicat a. Aproape n toate cazurile materialul folosit este cuprul. Izolat ia dintre conductoare trebuie s a nu absoarb a mult a energie dac a este plasat a ntr-un c amp electric variabil. In acest scop doar anumite substant e sunt potrivite. Materialele utilizate cel mai frecvent sunt polietilena si politetrauoretilena (cunoscut a sub numele de Teon TM ). Policlorura de vinil (PVC), utilizat a adesea la izolarea conductoarelor de alimentare cu energie electric a, absoarbe prea mult din puterea unui semnal de frecvent a mare; din aceast a cauz a nu se poate folosi n circuite de semnal. Aerul este cel mai bun izolator, dar nu ofer a sust inere mecanic a. Ca form a si dispunere relativ a, exist a trei construct ii utilizate: Perechea simpl a, n care conductoarele sunt paralele unul fat a de cel alalt. Conductoarele pot alc atuite dintr-o singur a s arm a de cupru, sau pentru a mai exibile dintr-un m anunchi de s arme subt iri. Fiecare conductor este nvelit ntr-un strat izolator. Adesea, mai multe perechi de conductoare sunt duse mpreun a, n paralel, form and un cablu. In cadrul unui cablu, este posibil ca un conductor s a e comun, partajat ntre dou a sau mai multe circuite de semnalizare. In acest caz, n circuite utilizeaz a n + 1 conductoare, n loc de 2n c ate sunt n cazul n care perechile sunt complet separate.

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 73

Avantajul este, evident, reducerea costului, iar dezavantajul este m arirea diafoniei ntre circuite. Din cauza diafoniei si sensibilit a tii la zgomote, perechea simpl a se utilizeaz a doar pe distant e mici. Perechea torsadat a (engl. twisted pair ), n care conductoarele sunt r asucite unul n jurul celuilalt. Rolul r asucirii este de-a mic sora interact iunea cu c ampul electromagnetic nconjur ator, adic a mic sorerea zgomotului indus de un c amp electromagnetic nconjur ator si, totodat a, mic sorarea c ampului electromagnetic produs de semnalul ce trece prin perechea de conductoare. Acest lucru este important n special pentru mic sorarea diafoniei cu celelalte perechi de conductoare din acela si cablu. In afar a de r asucire, restul construct iei este identic a cu perechea simpl a. Cablurile formate din perechi torsadate nu au niciodat a un conductor comun pentru mai multe circuite. Este important ca, n cazul unui cablu ce cont ine mai multe perechi torsadate, ecare circuit de comunicat ie s a utilizeze conductoarele din aceea si pereche si nu un conductor dintr-o pereche si un conductor din alt a pereche. In caz contrar, apare diafonie foarte puternic a ntre circuite (mai mare dec at la perechea simpl a). De remarcat c a aceast a gre seal a este u sor de comis n urma unei identic ari gre site a conductoarelor dintr-un cablu si nu este pus a n evident a de dispozitivele simple de testare, care veric a doar continuitatea n curent continuu a conductoarelor cablului. Perechea coaxial a are unul din conductoare n forma unui cilindru gol n interior, iar cel alalt conductor este dus prin interiorul primului conductor si izolat electric fat a de acesta. Conductorul exterior este format de obicei dintr-o plas a format a din s arme subt iri de cupru, nf a surate elicoidal, o parte din re ind nf a surate ntr-un sens si alt a parte n cel alalt sens. Cablul coaxial este si mai protejat de interferent e dec at perechea torsadat a. Are de obicei atenuare mai mic a dec at perechea simpl a sau cea torsadat a. Costul este ns a mai ridicat. In oricare dintre variante, pentru a reduce suplimentar interferent ele cu c ampul electromagnetic nconjur ator, perechea de conductoare poate ecranat a , adic a nvelit a ntr-un strat conductor continuu. Pentru ca ecranul s a e ecient, trebuie s a aib a continuitate de jur mprejurul conductoarelor (dac a este realizat prin nf a surarea unei foit e metalice, marginile foit ei trebuie s a fac a contact ferm ntre ele) si pe lungime (s a aib a leg atur a prin conectoare

c 2008, Radu-Lucian Lup sa


74 3.4. Transmisia prin perechi de conductoare

c atre elemente de ecranare ale echipamentelor la care este conectat cablul). Ecranul unui cablu poate colectiv, mbr ac and ntreg cablul, sau individual pentru ecare pereche de conductoare. Pe l ang a elementele cu rol electric, un cablu cont ine elemente cu rol de protect ie. Orice cablu este nf a surat cel put in ntr-o manta de protect ie, care tine la un loc si protejeaz a mecanic conductoarele. Mantaua de protect ie este fabricat a de obicei din PVC. Un cablu destinat mont arii aerian trebuie s a e prev azut cu un cablu de ot el pentru sust inere mecanic a. Un cablu destinat mont arii subteran trebuie prev azut cu un scut metalic contra roz atoarelor.

3.4.2. Propriet a ti ale mediului


In cele ce urmeaz a vom presupune c a lungimea cablului este e de acela si ordin de m arime e mai mare dec at raportul dintre viteza luminii n vid si frecvent a maxim a din spectrul semnalului. In aceste condit ii, perechea de conductoare are comportament de linie lung a, adic a semnalul se propag a din aproape, sub forma unei unde, de-a lungul perechii de conductoare. Propriet a tile electrice mai importante ale mediului sunt: Viteza de propagare a semnalului prin mediu. Este identic a cu viteza de propagare a undelor electromagnetice n materialul dielectric dintre conductoare. Se specic a de obicei prin raportare la viteza luminii n vid (notat a c, c 3 108 m/s). In mod tipic v 0,67 c 2 108 m/s Banda de trecere a mediului. Se ntinde de la zero p an a la o frecvent a maxim a de ordinul a c ateva sute de megahertzi sau c a tiva gigahertzi. Limit arile sunt date de dou a fenomene independente, pierderile n dielectric (la frecvent e mari dielectricul absoare o parte din energia c ampului electric dintre conductoare) si efectul pelicular (la frecvent e mari curentul electric din conductoare nu circul a uniform n toat a masa acestora ci doar n vecin atatea suprafet ei). Imb atr anirea izolat iei cablului duce la mic sorarea frecvent ei maxime a benzii de trecere. Atenuarea semnalului. Factorul de atenuare cre ste exponent ial cu lungimea mediului. In consecint a, logaritmul factorului de atenuare cre ste liniar cu lungimea mediului. Ca urmare, pentru un tip de cablu se specic a raportul dintre logaritmul factorului de atenuare si lungimea corespunz atoare, n decibeli pe kilometru. Cu titlu de exemplu, d am c ateva valori tipice: 17 dB/km pentru cablu coaxial ,,Ethernet gros; 120 dB/km pentru cablu torsadat Ethernet. Impedant a caracteristic a a mediului. S a presupunem c a ata s am la un cap at al unei buc a ti innite de cablu o surs a de tensiune alternativ a. Se

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 75

observ a c a intensitatea curentului ce trece prin surs a si prin cap atul dinspre surs a al cablului este proport ional a cu tensiunea. Raportul dintre tensiune si intensitate se nume ste impedant a caracteristic a a cablului. Receptorul se caracterizeaz a si el printr-o impedant a de intrare , denit a ca raportul dintre tensiunea aplicat a la bornele receptorului si intensitatea curentului absorbit de receptor. Emit atorul se caracterizeaz a printr-o impedant a de ie sire , denit a ca raportul dintre sc aderea tensiunii la borne cauzat a de absorbt ia unui curent de c atre un dispozitiv montat la bornele emit atorului si intensitatea curentului absorbit. Dac a la un cap at de cablu de o anumit a impedant a leg am un cablu de alt a impedant a sau dac a emit atorul sau receptorul ata sat are alt a impedant a dec at impedant a caracteristic a a cablului, spunem c a avem o neadaptare de impedant a. In acest caz, jonct iunea respectiv a reect a o parte din semnalul incident (este analog reexiei luminii la trecerea din aer n sticl a, sau n general ntre medii cu indice de refract ie diferit). Reexia produce dou a neajunsuri: pe de o parte scade puterea semnalului util ce ajunge la receptor, iar pe de alt a parte un semnal ce sufer a dou a reexii succesive se poate suprapune peste semnalul util si, ind nt arziat fat a de acesta, l distorsioneaz a. Impedant a se m asoar a n ohmi (simbol ). Cablul pentru televiziune are impedant a de 75 . Cablul coaxial pentru ret ea Ethernet are impedant a de 50 . Cablul torsadat Ethernet are 100 .

3.4.3. Leg atur a magistral a


La o pereche de conductoare pot conectate mai multe emit atoare sau receptoare. O astfel de interconectare poate avea dou a scopuri: pentru a realiza simplu o comunicat ie de tip difuziune (un emit ator transmite simultan c atre mai multe receptoare) sau pentru a permite mai multor calculatoare s a comunice ecare cu ecare. O astfel de pereche de conductoare la care se leag a mai multe dispozitive se nume ste magistral a. Realizarea mediului zic, n acest caz, este complicat a de necesitatea de a avea adaptare de impedant a n ecare punct al mediului. In general, la simpla conectare a trei perechi de conductoare sau, echivalent, la ramicarea unei perechi apare, n punctul de ramicat ie, o neadaptare de impedant a. Exist a dispozitive mai complicate (cont in and transformatoare de semnal) care permit ramicarea unei perechi de conductoare f ar a a introduce o

c 2008, Radu-Lucian Lup sa


76 3.4. Transmisia prin perechi de conductoare

neadaptare de impedant a, ns a nu permit propagarea semnalului de la ecare ramur a spre toate celelalte. O alt a solut ie de conectare a mai multor dispozitive (emit atoare sau receptoare) la un cablu const a n realizarea unei ramicat ii foarte scurte, astfel nc at s a nu aib a comportament de linie lung a (la frecvent ele cu care se lucreaz a uzual, aceasta nseamn a cel mult c a tiva centimetri), la cap atul c areia se conecteaz a emit atorul sau receptorul. Emit atorul sau receptorul astfel conectat trebuie s a aib a impedant a de ie sire, respectiv de intrare, mult mai mare dec at impedant a perechii de conductoare la care se conecteaz a. O astfel de conectare se utilizeaz a, de exemplu, n ret elele Ethernet vechi (vezi 9.1.3 si g. 9.1). Dac a un cap at de pereche de conductoare este l asat liber (neconectat), el produce reexii. De fapt, un cap at neconectat poate v azut ca o jonct iune de la perechea ce are o anumit a impedant a la un dispozitiv av and impedant a innit a. Pentru evitarea reexiilor, la cap atul unei perechi de conductoare trebuie montat un dispozitiv numit terminator . Terminatorul este un simplu rezistor, av and rezistent a egal a cu impedant a cablului. El absoarbe integral semnalul incident, neproduc and nici un fel de reexie. Not am c a terminatoarele sunt utilizate n mod normal doar pe leg aturi magistral a; pe leg aturile punct la punct, emit atorul si receptorul au, n mod obi snuit, impedant a necesar a, astel nc at joac a si rol de terminator.

3.4.4. Considerente practice


Transmisia prin conductoare electrice este cea mai simplu de realizat deoarece calculatoarele nsele folosesc intern semnale electrice pentru transmiterea, stocarea si prelucrarea informat iei. De asemenea, t aierea la dimensiune a cablurilor si montarea conectoarelor se pot realiza cu unelte relativ ieftine si f ar a a necesita prea mult a calicare din partea lucr atorilor. Aceste motive fac ca, n majoritatea situat iilor practice, perechile de conductoare s a e nc a cea mai potrivit a solut ie pentru comunicat ii pe distant e mici. Faptul c a mediul de transmisie este conductor ridic a ns a probleme speciale, n situat iile n care prin conductoarele mediului de transmisie ajung s a curg a curent i din alte surse. Astfel, ntre carcasele, legate la p am antarea ret elei electrice, a dou a calculatoare sau alte echipamente, poate apare o tensiune electric a de ordinul c atorva volt i; dac a echipamentele sunt conectate la ret elele electrice a dou a cl adiri diferite, tensiunea dintre carcase de propagarele lor poate chiar mai mare. Pentru ca aceasta s a nu perturbe semnalul util, n construct ia pl acilor de ret ea trebuie luate m asuri speciale de izolare. Dac a unul dintre conduc-

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 77

toare este expus atingerii cu m ana (este cazul la ret elele Ethernet cu cablu coaxial, unde conductorul exterior este legat la partea metalic a exterioar aa conectoarelor), standardele de protect ie la electrocutare cer legarea la p am ant a conductorului respectiv; legarea la p am ant trebuie ns a f acut a ntr-un singur punct pentru a evita suprapunerea peste semnalul util a tensiunilor dintre diverse puncte ale ret elei de p am antare. O alt a surs a de tensiuni parazite ntre conductoarele de semnal sunt desc arc arile electrice din atmosfer a (fulgerele si tr aznetele). Deoarece n mod normal conductoarele ret elei sunt izolate fat a de ret eaua de p am antare, fenomenele atmosferice pot induce tensiuni ridicate ntre conductoarele ret elei si carcasele echipamentelor, put and duce la distrugerea echipamentelor ret elei. Ca urmare, n cazul unor cabluri de ret ea duse prin exteriorul cl adirilor, este necesar a e ecranarea cablului si legarea ecranului la p am ant, e amplasarea unor desc arc atoare care s a limiteze tensiunea dintre conductoarele ret elei si p am ant.

3.5. Transmisia prin unde radio


Undele electromagnetice sunt oscilat ii ale c ampului electromagnetic. Aceste oscilat ii se propag a din aproape n aproape. Frecvent a unei unde electromagnetice este frecvent a de oscilat ie a c ampului electromagnetic ntr-un punct xat din spat iu. Lungimea de und a a unei unde este distant a parcurs a de und a n timpul unei oscilat ii complete. Lungimea de und a se noteaz a cu si are v , unde f este frecvent a si v este viteza de propagare. Viteza de valoarea = f propagare depinde de mediul n care se propag a unda. Ca urmare, lungimea de und a se modic a la trecerea dintr-un mediu n altul. Lungimea de und a se utilizeaz a adesea n locul frecvent ei pentru a caracteriza unda. In acest caz lungimea de und a se calculeaz a pentru viteza de propagare a undelor electromagnetice n vid v = c = 3 108 m/s. Viteza de propagare n aer este foarte apropiat a de viteza n vid; pentru majoritatea scopurilor cele dou a viteze pot considerate egale. Undele radio sunt unde electromagnetice av and frecvent e la care pot s a lucreze dispozitivele electronice; n funct ie de autori, limita de jos a frecvent elor undelor radio este cuprins a ntre 30 Hz ( = 10000 km) si 3 kHz ( = 100 km), iar limita de sus a frecvent elor este cuprins a ntre 1 GHz ( = 30 cm) si 300 GHz ( = 1 mm), cu observat ia c a undele electromagnetice din intervalul 1 GHz 300 GHz se numesc microunde si unii autori consider a c a microundele nu fac parte dintre undele radio ci sunt o categorie separat a de acestea.

c 2008, Radu-Lucian Lup sa


78 3.5. Transmisia prin unde radio

De interes practic n ret elele de calculatoare sunt undele radio n intervalul 300 MHz 30 GHz, sau echivalent, cu lungimile de und a cuprinse ntre 1 m si 1 cm. La transmisia prin unde radio, m arimile zice utilizate ca semnal sunt intensitatea c ampului electric si induct ia magnetic a. Cele dou a m arimi sunt proport ionale n modul si au direct ii perpendiculare una pe cealalt a si pe direct ia de propagare a undei. Intr-un sistem de transmisie prin unde radio, emit atorul cuprinde dou a blocuri distincte: un dispozitiv electronic, care produce un semnal de tip tensiune si intensitate electric a, si antena , care converte ste semnalul din tensiune si intensitate electric a n c amp electromagnetic. Receptorul const a de asemenea dintr-o anten a, care plasat a n calea undelor electromagnetice transform a semnalul din c amp electromangetic n tensiune si intensitate electric a, si un dispozitiv electronic, care decodic a semnalul electric. Orice anten a poate servi at at la emisie c at si la recept ie. (Singura diferent a ce apare ntre antene este c a antenele de emisie de putere mare trebuie construite astfel nc at s a suporte tensiunile si curent ii mari ce apar n elementele lor.) Mai multe propriet a ti ale sistemului de transmisie fac ca l a timea benzii de trecere a ntregului sistem s a e ngust a n raport cu frecvent ele ntre care se ncadreaz a banda de trecere; raportul ntre l a timea benzii si limita inferioar a a benzii este n mod tipic de cel mult c ateva procente. Din aceast a cauz a, transmisia prin unde radio este ntotdeauna cu modulat ie, iar frecvent a purt atoare este cel put in de c ateva zeci de ori mai mare dec at l a timea de band a. De exemplu, pentru o vitez a de transmisie de 10 Mbit/s avem n mod tipic nevoie de o l a time de band a apropiat a de 10 MHz, pentru care frecvent a purt atoare va de cel put in 200 MHz.

3.5.1. Propagarea undelor


3.5.1.1. Polarizarea C ampul electromagnetic se caracterizeaz a prin dou a m arimi vectoriale, denite pentru ecare punct din spat iu: intensitatea c ampului electric, notat a cu E , si induct ia magnetic a, notat a cu B . Intr-un fascicul de unde electromagnetice, paralel si mult mai lat dec at lungimea de und a, vectorii E si B sunt ntotdeauna perpendiculari unul pe cel alalt si pe direct ia de deplasare a undelor. Dac a E are direct ie constant a si i variaz a doar sensul si modulul,

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 79

fasciculul se nume ste polarizat liniar. Un fascicul polarizat liniar se caracterizeaz a prin direct ia vectorului E , numit a direct ia de polarizare. Dac a E are modul constant si direct ia lui se rote ste uniform, n plan perpendicular pe direct ia de deplasare a undei, fasciculul se nume ste polarizat circular. Se distinge polarizare circular a st ang a dac a, privind n direct ia de propagare a undelor, dinspre emit ator spre receptor, direct ia lui E se rote ste n sens invers acelor de ceas; si polarizare circular a dreapt a dac a E se rote ste n sensul acelor de ceas. Un fascicol cu polarizare circular a rezult a de fapt prin suprapunerea a dou a fascicole, de amplitudine egal a, polarizate perpendicular unul pe cel alalt, deplas andu-se n aceea si direct ie si cu un decalaj de un sfert de ciclu ntre ele. Dac a cele dou a fascicole au amplitudini diferite, rezult a ceea ce se nume ste polarizare eliptic a ; polarizarea liniar a si polarizarea circular a sunt de fapt cazuri particulare de polarizare eliptic a. 3.5.1.2. Absorbt ia si reexia Absorbt ia undelor radio n aer este neglijabil a. Pic aturile de ap a (din ploaie, nori, ceat a) absorb destul de puternic undele radio, n special microundele. Apa absoarbe puternic toate undele radio; de aceea este greu de obt inut leg atur a radio sub ap a. Absorbt ie moderat a se produce n p am ant si n diferite materiale de construct ie. Sc aderea puterii undelor radio datorit a absorbt iei este exponent ial a cu distant a, ca si n cazul propag arii semnalelor prin cabluri. Metalele reect a undele radio. Plasele metalice care au contact bun ntre rele componente si au ochiurile mult mai mici dec at lungimea de und a se comport a ca o suprafat a metalic a compact a. Arm aturile cl adirilor din beton armat nu fac contact electric prea bun ntre ele, ns a perturb a serios propagarea undelor radio. Ionosfera reect a undele cu lungimi de und a de ordinul metrilor; prin reexii repetate ntre P am ant si ionosfer a, aceste unde pot parcurge u sor multe mii de kilometri. 3.5.1.3. Difract ia Orice und a ocole ste obstacolele mai mici dec at o fract iune din lungimea de und a, n vreme ce n spatele obstacolelor mai mari de c atea lungimi de und a ,,r am ane umbr a. De aceea, undele lungi, cu lungime de und a de ordinul kilometrilor sau sutelor de metri sunt capabile s a ocoleasc a obstacole mari, inclusiv curbura P am antului pe distant a de c ateva sute sau chiar mii de kilometri. Prin contrast, undele cu lungime de und a sub c a tiva metri se propag a aproape numai n linie dreapt a, dealurile sau cl adirile mai mari put and provoca umbre.

c 2008, Radu-Lucian Lup sa


80 3.5. Transmisia prin unde radio

3.5.1.4. Interferent a undelor Dac a ntr-un punct ajung unde pe mai multe c ai, de exemplu o cale direct a si o cale prin reexia pe un obstacol, unda recept ionat a n acel punct este suma undelor ce ajung pe toate c aile. Dac a diferent a de drum ntre dou a c ai este un num ar ntreg de lungimi de und a, dar mult mai mic a dec at lungimea unui bit, undele se suprapun n faz a si se adun a, semnalul recept ionat ind mai puternic. Dac a diferent a de drum este apropiat a de un num ar impar de lungimi de und a, undele se suprapun n antifaz a si se anuleaz a reciproc, semnalul recept ionat ind slab sau nul. In aceste situat ii, deplasarea receptorului (sau emit atorului) pe o distant a de la un sfert din lungimea de und a si p an a la de c ateva ori lungimea de und a poate modica mult calitatea semnalului (reaminitim c a n transmisiile de date se utilizeaz a lungimi de und a cuprinse ntre 1 cm si 1 m). Schimbarea lungimii de und a pe care se face transmisia poate de asemenea modica mult efectul. Dac a diferent a de drum ntre semnalele recept ionate pe c ai diferite este comparabil a sau mai mare dec at lungimea unui bit si puterile semnalului pe cele dou a c ai sunt apropiate, semnalele propagate pe cele dou a c ai se bruiaz a reciproc. Situat ia apare mult mai rar dec at cea prezentat a mai sus, ns a nu poate corectat a dec at prin mutarea stat iilor fat a de obstacolele ce produc reexiile. 3.5.1.5. Divergent a undelor Pe m asur a ce ne dep art am de emit ator, puterea semnalului scade datorit a extinderii frontului de und a. Densitatea puterii este invers proport ional a cu suprafat a frontului de und a, care la r andul ei este proport ional a cu p atratul distant ei fat a de emit ator. Ca urmare, puterea recept ionat a Pr este invers proport ional a cu p atratul distant ei d dintre emit ator si receptor: Pr = Pe 1 d2

unde este o constant a ce depinde de construct ia antenelor de emisie si de recept ie, iar Pe este puterea emit atorului. Sc aderea puterii datorit a extinderii frontului de und a este independent a de eventuala absorbt ie a undelor n mediu; aceasta din urm a duce la o sc adere exponent ial a cu distant a a puterii semnalului.

3.5.2. Antene
O anten a este un dispozitiv care realizeaz a conversia ntre un semnal electric (tensiune si intensitate electric a) pe o pereche de conductoare si

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 81

oscilat iile electromagnetice n mediul nconjur ator antenei. Orice anten a este reversibil a: dac a i se aplic a un semnal electric la borne, va radia unde electromagnetice si, reciproc, dac a este plasat a n calea undelor electromagnetice, va produce semnal electric la borne. In general o anten a este optimizat a pentru o anumit a band a de trecere. O anten a are un anumit randament, denit ca raportul dintre puterea undei electromagnetice radiate si puterea absorbit a din semnalul electric primit. 3.5.2.1. Directivitatea O anten a nu radiaz a uniform de jur mprejur. Prin c a stigul (engl. gain ) unei antene pe o direct ie se nt elege raportul dintre puterea radiat a pe acea direct ie si puterea radiat a de o anten a etalon, n acelea si condit ii. Ca etalon se utilizeaz a de obicei o anten a ipotetic a care ar radia egal n toate direct iile si ar avea randamentul 100%. Deoarece energia se conserv a, c a stigul este pe unele direct ii supraunitar si pe altele subunitar, integrala lui pe ntreaga sfer a ind 4 (unde reprezint a randamentul antenei). C a stigul este dat uneori direct, alteori este dat logaritmul c a stigului, exprimat n decibeli. C a stigul antenei pe diverse direct ii este reprezentat grac prin diagramele de c a stig . O astfel de diagram a este o reprezentare a c a stigului ca funct ie de unghi pe toate direct iile dintr-un plan. O direct ie de maxim local al c a stigului, mpreun a cu direct iile apropiate, se nume ste lob . Lobul care cuprinde maximul global al c a stigului se nume ste lobul principal al antenei. Ceilalt i lobi se numesc lobi secundari sau lobi laterali. Valoarea maxim a, pentru toate direct iile posibile, a c a stigului este numit a c a stigul antenei. O anten a optimizat a s a aib a c a stig c at mai mare pe o direct ie, n detrimentul celorlalte direct ii, se nume ste anten a directiv a. O anten a optimizat a pentru a avea c a stig c at mai uniform, cel put in n planul orizontal, se nume ste anten a nedirectiv a. O anten a cu c a stig perfect uniform de jur mprejur (radiator izotrop) este imposibil de realizat. Exist a o leg atur a ntre dimensiunea antenei, directivitatea si lungimea de und a la care funct ioneaz a. Anume, raza unghiular a a lobului principal (m asurat a n radiani) nu poate mai mic a dec at raportul dintre diametrul antenei si lungimea de und a. Ca exemplu, pentru a obt ine un lob principal de 3 ( 0,05 rad) la o lungime de und a de 6 cm (f = 5 GHz) avem nevoie de o anten a de cel put in 1,2 m diametru. Limitarea aceasta este legat a de fenomenele de difract ie a undelor si nu poate ocolit a.

c 2008, Radu-Lucian Lup sa


82 3.5. Transmisia prin unde radio

O anten a de recept ie plasat a n calea undelor recept ioneaz a o putere proport ional a cu densitatea de putere a undei incidente. Raportul dinte puterea disponibil a la bornele antenei si densitatea de putere a undei incidente se nume ste aria efectiv a sau apertura antenei. Apertura poate privit a ca suprafat a, transversal a pe direct ia de propagare a undelor, de pe care antena preia ntreaga energie. Apertura depinde de direct ia considerat a a undei incidente. Apertura fat a de o anumit a direct ie a undei incidente este proport ional a cu c a stigul antenei pe acea direct ie. Relat ia este: S=G 2 4 (3.6)

unde S este aria efectiv a, G este c a stigul, iar este lungimea de und a. Utiliz and relat ia (3.6), se poate calcula puterea recept ionat a, dac a distant a dintre emit ator si receptor este mult mai mare dec at dimensiunile antenelor: Pr = Pe Ge 1 Sr = 4d2 2 = Pe Ge Gr 16 2 d2

unde Pr este puterea disponibil a la bornele antenei receptoare, Pe este puterea aplicat a la bornele antenei emit atoare, d este distant a dintre emit ator si receptor, Ge este c a stigul emit atorului pe direct ia spre receptor, iar Gr si Sr sunt respectiv c a stigul si apertura antenei receptoare pe direct ia spre emit ator. Exemplul 3.1: Consider am un emit ator (de exemplu, un calculator dintr-o ret ea IEEE 802.11 wireless ) care emite un semnal cu puterea Pe = 100 mW (sau, echivalent, +20 dBm) si frecvent a f = 2,4 GHz (lungimea de und a este atunci = 0,125 m). Mai presupunem c a receptorul se g ase ste la o distant a d = 100 m fat a de emit ator, c a absorbt ia semnalului este neglijabil a (emit atorul si receptorul se g asesc n c amp deschis si nu plou a) si c a ambele antene au un c a stig Ge = Gr = 2 pe direct ia spre partenerul de comunicat ie. Rezult a puterea semnalului recept ionat: Pr = 101 W 2 adic a aproximativ 84 dBm. (0,125 m)2 2 3,9 109 W, 16 2 (100 m)2

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 83

3.5.2.2. Polarizarea Antenele cele mai simple au polarizare liniar a: unda emis a este polarizat a liniar, pe o direct ie stabilit a prin construct ia antenei. Rotirea antenei emit atorului fat a de cea a receptorului duce la variat ia semnalului recept ionat ntre un maxim (c and direct iile polariz arilor celor dou a antene sunt paralele) si un minim (teoretic zero) c and direct iile sunt perpendiculare. O anten a polarizant a liniar va recept iona ntotdeauna, indiferent de direct ia de polarizare, o transmisie polarizat a circular; reciproc, o anten a polarizant a circular va recept iona o emisie polarizat a liniar. O anten a polarizant a circular va recept iona o transmisie polarizat a circular numai dac a are acela si sens al polariz arii. Rotirea antenelor n jurul dreptei ce le une ste nu are efect. 3.5.2.3. Tipuri de antene Antenele nedirective sunt de cele mai multe ori un simplu baston metalic (de fapt, bastonul este un pol, iar carcasa aparatului sau, dup a caz, P am antul. este cel alalt pol). O astfel de anten a are c a stig maxim n planul orizontal (perpendicular pe baston) si zero pe direct ie vertical a ( n lungul bastonului). Undele produse sunt polarizate vertical. Antenele directive cele mai r asp andite pentru comunicat ii de date sunt a sa-numitele antene parabolice (denumire improprie, pentru c a forma parabolic a este a reectorului antenei). O asrfel de anten a este alc atuit a dintro oglind a n form a de paraboloid de rotat ie, n focarul c areia este plasat a an tena propriu-zis a. (In alte construct ii, antena propriu-zis a este plasat a n alt a parte, iar unda electromagnetic a este adus a n focarul reectorului parabolic printr-un tub metalic numit ghid de und a.)

3.5.3. Raza de act iune a unei leg aturi radio


Spre deosebire de leg aturile prin perechi de conductoare sau prin bre optice, leg aturile prin unde radio nu pot delimitate net la un anumit domeniu. D am n continuare factorii care inuent eaz a raza de act iune a unei leg aturi radio. Uneori vom dori s a i contracar am, pentru a extinde domeniul de act iune, alteori dimpotriv a, i vom dori s a ne ment in a o leg atur a radio ntrun domeniu spat ial limitat pentru a nu interfera cu leg aturi radio din apropiere. Cabluri electrice sau optice putem duce c ate dorim; c amp electromagnetic este numai unul. . . 3.5.3.1. Obstacolele Obstacolele limiteaz a raza de act iune a leg aturii radio. Mai mult, din cauza interferent ei dintre undele reectate pe diferite c ai, este dicil de analizat

c 2008, Radu-Lucian Lup sa


84 3.5. Transmisia prin unde radio

exact punctele n care este posibil a recept ia unei emisii radio si punctele n care emisia este obstruct ionat a. 3.5.3.2. Linia orizontului Unul dintre obstacolele ce limiteaz a raza de act iune a undelor radio este nsu si P am antul, prin curbura suprafet ei sale. O stat ie aat a la o anumit a n alt ime poate comunica cu o stat ie aat a la nivelul solului dac a si numai dac a stat ia de pe sol se a a mai aproape dec at linia orizontului celeilalte stat ii. Dou a stat ii pot comunica dac a exist a cel put in un punct comun orizontului celor dou a stat ii. In c ampie, distant a p an a la linia orizontului este (r desemneaz a raza P am antului, iar h este n alt imea antenei deasupra suprafet ei P am antului): m asurat a de-a lungul curburii, de la baza turnului n care se a a obserr vatorul: d = r arccos h+r ; m asurat a n linie dreapt a de la observator: d= (r + h)2 r2 = h(2r + h);

dac ah r, d 2rh. De remarcat c a dac a exprim am numeric 2r n 3 mii de kilometri (2r 12,7 10 km) si h n metri, distant a d rezult a n kilometri. Exemple: Distant a p an a la linia orizontului pentru un observator aat la 1,6 m deasupra p am antului (de exemplu un radiotelefon tinut n m an a) este d = 12,7 1,6 km 4,5 km. Un turn cu n alt imea de 20 m (obi snuit pentru un releu GSM) are linia orizontului la 16 km. O stat ie aat a ntr-un astfel de turn poate comunica cu un radiotelefon tinut n m an a la o distant a de 16 km+4,5 km = 20,5 km (de regul a raza de act iune a unui releu GSM este limitat a de alte considerente). De pe un turn cu n alt imea de 50 m, distant a la linia orizontului este d = 12,7 50 km 25 km. Dou a relee de telecomunicat ii av and 50 m n alt ime ecare pot comunica direct dac a sunt la mai put in de 50 km unul de altul. Distant a la linia orizontului cre ste ncet cu n alt imea; dac a se dubleaz a n alt imea, distant a la linia orizontului cre ste cu un factor de 2 1,4. 3.5.3.3. Utilizarea satelit ilor articiali ai P am antului Satelit ii articiali ai P am antului sunt utilizat i ca echivalentul unor turnuri nalte pentru montarea unor stat ii radio. Dup a altitudinea la care

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 85

sunt plasat i, distingem trei categorii de satelit i: satelit i de joas a altitudine aat i ntre 200 . . . 1000 km, cu perioada de rotat ie de 1,5 . . . 1,8 h; satelit i de altitudine medie ntre 10000 . . . 15000 km (raza orbitei de 34 ori raza P am antului), cu perioada de rotat ie de 6 . . . 9 h; satelit i geostat ionari aat i la 35800 km deasupra ecuatorului, au perioada de rotat ie de exact o zi si ca urmare apar c si fat a de P am ant. Un satelit are o arie de acoperire incomparabil mai mare fat a de o stat ie terestr a. La 200 km altitudine, un satelit acoper a o raz a de 1500 km, iar un satelit de medie altitudine acoper a o raz a de peste 7000 km. Din cauza distant elor mari, comunicat ia cu satelit ii necesit a e puteri mari, e antene cu directivitate foarte bun a. Este de remarcat faptul c a distant a de la un satelit la o stat ie terestr a este de la c ateva zeci la c ateva sute de ori mai mare dec at distant a de la un releu amplasat ntr-un turn la o stat ie terestr a. Ca urmare, pentru acelea si antene, puterile necesare sunt de la cateva sute la c ateva sute de mii de ori mai mari. La comunicat ia ntre satelit i geostat ionari si stat ii xe de pe sol se pot utiliza relativ u sor antene cu directivitate bun a, deoarece antenele de pe sol sunt xe. Orbita geostat ionar a este ns a destul de ,,aglomerat a: presupun and c a avem antene ce dau un fascicul cu diametrun unghiular de 6 , (vezi exemplul n care rezulta, pentru f = 5 GHz, un diametru al antenei de peste 1,2 m) putem distinge doar ntre 60 de satelit i distinct i. Pentru satelit ii care nu sunt geostat ionari, utilizarea antenelor directive necesit a un sistem foarte complicat de urm arire a satelitului. 3.5.3.4. Zgomotul Zgomotul n transmisiile radio provine din multe surse, ntre altele aparatur a electronic a, ntrerup atoare electrice (inclusiv colectoarele motoarelor de curent continuu). Transmisiile radio sunt mult mai sensibile la zgomot dec at transmisiile prin conductoare electrice, deoarece la conductoare electrice undele radio p atrund accidental n semnal, din cauza ecran arii imperfecte, pe c at a vreme la transmisiile radio semnalul util se amestec a direct cu zgomotul radio ambiant. Nivelul zgomotului radio ambiant este un factor important care limiteaz a inferior pragul de sensibilitate al receptorului si, n consecint a, xeaz a puterea minim a pentru o anumit a distant a emit ator-receptor. Nivelul de zgomot scade n general o dat a cu cre sterea frecvent ei.

c 2008, Radu-Lucian Lup sa


86 3.5. Transmisia prin unde radio

3.5.3.5. Sc aderea puterii cu distant a Densitatea de putere a undelor electromagnetice scade cu p atratul distant ei de la emit ator. Ca urmare, la o sensibilitate xat a a receptorului, pentru a dubla raza de act iune a emit atorului trebuie s a-i cre stem puterea de 4 ori. Pe de alt a parte, dac a dou a emit atoare radio funct ioneaz a n aceea si regiune geograc a si emit pe frecvent e identice sau foarte apropiate, atunci transmisia mai puternic a ,,acoper a transmisia mai slab a. Aceasta se nt ampl a deoarece semnalele celor dou a emit atoare se suprapun. Dac a, n punctul n care este plasat receptorul, puterea unuia dintre emit atoare este mult mai mare dec at puterea celuilalt, atunci receptorul va recept iona doar transmisia mai puternic a, chiar dac a, singur a, transmisia mai slab a ar putea recept ionat a corect. Dac a puterile sunt apropiate, receptorul nu va putea ,, nt elege nici una dintre transmisii. 3.5.3.6. Emisia direct ionat a si polarizat a Domeniul de act iune a unui emit ator sau receptor poate restr ans n mod voit dot and emit atorul sau receptorul (de obicei ambele) cu antene directive. Trebuie ns a calculate cu atent ie divergent a lobului principal, puterea emis a pe lobii secundari ai antenei si reexiile de teren. Polarizarea se poate utiliza pentru a separa dou a transmisii pe aceea si direct ie si pe aceea si lungime de und a. In cazul utiliz arii polariz arii liniare, cele dou a transmisii trebuie s a utilizeze direct ii de polarizare perpendiculare; n cazul polariz arii circulare se vor folosi cele dou a sensuri (st anga si dreapta). Lobii secundari ai antenelor, precum si undele reectate de diverse corpuri, au polariz ari greu de controlat.

3.5.4. Spectrul radio si alocarea lui


Incepem cu o precizare de terminologie: n general c and este vorba de semnale, termenul de frecvent a se utilizeaz a cu sensul de frecvent a unei componente n descompunerea Fourier a semnalului, iar termenul de band a se folose ste cu sensul de interval de frecvent e ntre care se ncadreaz a spectrul Fourier al unui semnal. In comunicat ii radio, termenul de frecvent a se utilizeaz a adesea si cu sensul de interval de frecvent e n care se ncadreaz a o transmisie (efectiv, band a n sensul de la semnale). Frecvent e diferite, n acest sens, nseamn a de fapt benzi disjuncte. Valoarea numeric a a frecvent ei, specicat a n acest context, este frecvent a purt atoare utilizat a. Limitele efective ale benzii se determin a din standardul de transmisie folosit.

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 87

Not iunea de band a n care se face transmisia specic a n acest context un interval de frecvent e alocat pentru o anumit a categorie de transmisii radio. Benzile, n acest sens, se specic a e printr-o anumit a frecvent a sau lungime de und a, din interiorul benzii, si av and o valoare ,,rotund a, e printr-un nume. Limitele benzii se g asesc n standarde. Dou a transmisii radio ce se fac pe frecvent e diferite, sau mai precis, a c aror benzi de trecere sunt disjuncte, pot separate n general u sor. Separarea n frecvent a este mult mai u sor controlabil a dec at separarea spat ial a studiat a n 3.5.3. Dou a transmisii pe aceea si frecvent a si n aceea si zon a geograc a sunt practic imposibil de separat, dac a au puteri apropiate, sau transmisia mai slab a este imposibil de recept ionat ind ,,acoperit a de cea mai puternic a. Pentru evitarea suprapunerilor ntre utilizatori, utilizarea diverselor benzi de frecvent e face obiectul unor reglement ari legale n ecare tar a, precum si a unor acorduri internat ionale. Emiterea unui semnal radio, pe o frecvent a pentru care operatorul emit atorului nu este autorizat sau de o putere mai mare dec at cea autorizat a, poate duce la sanct ionarea contravent ional a sau chiar penal a a operatorului. In majoritatea cazurilor, un utilizator de comunicat ii radio care dore ste s a opereze un emit ator trebuie s a obt in a o autorizat ie n care se specic a frecvent a de lucru, puterea maxim a, zona geograc a n care opereaz a, etc. Exist a frecvent e alocate posturilor de radio, sistemelor de comunicat ii radio ale diferitelor institut ii (polit ie, controlorii de trac aerian, dispecerate de taxiuri, operatori de telefonie mobil a, etc.). Tot n aceast a categorie, ns a cu un statut aparte sunt radioamatorii: frecvent ele sunt alocate activit a tii de radioamator si nu unei persoane sau institut ii, ns a radioamatorii trebuie s a se nregistreze pentru a putea emite. Exist a ns a benzi pentru care nu este necesar a o autorizare expres aa emit atorului, cu condit ia ca emit atorul s a nu dep a seasc a o anumit a putere. In aceast a categorie intr a frecvent ele folosite de: ret elele IEEE 802.11 (Wireless Ethernet) si Bluetooth, tastaturi si mau si f ar a r, telefoanele f ar a r, microfoanele f ar a r, walkie-talkie-urile de juc arie, juc arii cu telecomand a prin radio, telecomenzi pentru deschis garajul. Utilizatorul unor astfel de echipamente trebuie totu si s a e atent la eventualele diferent e ntre reglement arile din diferite t ari: un echipament poate funct iona legal f ar a autorizat ie n tara de origine, dar s a necesite autorizat ie n alt a tar a. Echipamentele care lucreaz a pe frecvent e pentru care nu trebuie autorizat ie ajung s a interfereze dac a sunt plasate n apropiere. Unele dintre acestea permit selectarea frecvent ei de lucru dintre 24 frecvent e predenite. Utilizatorul va selecta o frecvent a diferit a dac a constat a o funct ionare proast a

c 2008, Radu-Lucian Lup sa


88 3.5. Transmisia prin unde radio

si suspecteaz a interferent e cu echipamente vecine. Alt a solut ie este schimbarea repetat a a frecvent ei de lucru, dup a o schem a convenit a ntre emit ator si receptor, si tolerarea unui num ar de ciocniri ale transmisiilor pe perioadele n care echipamentele vecine se nimeresc aceea si frecvent a. Tehnica se nume ste frequency hopping (salturi ale frecvent ei). Mai ment ion am c a, printre produc atorii de semnale radio parazite intr a si alte dispozitive, av and alte scopuri dec at comunicat iile. Ca fapt divers, enumer am c ateva: Sursele de alimentare de la aproape toate aparatele electronice moderne (a sa-numitele surse n comutat ie ), precum si blocul de baleiaj de linii de la televizoarele si monitoarele cu tub catodic, emit semnicativ pe frecvent e p an a la c ateva sute de kilohert i (a sa-numitele armonice, adic a frecvent e care sunt multipli ai frecvent ei de lucru a circuitului). Funct ionarea acestora bruiaz a adesea posturile de radio pe unde lungi si uneori chiar medii. Radioemit atoarele emit si pe frecvent e ce sunt multipli ai frecvent ei purt atoare (armonice). Din acest motiv, se nt ampl a uneori ca un post de televiziune s a apar a, cu semnal foarte slab, si pe un canal superior celui pe care este transmis normal (dar atent ie, uneori acest efect este datorat recept iei de la un alt releu de televiziune, mai ndep artat).

3.5.5. Particularit a ti ale sistemelor de comunicat ie prin radio


3.5.5.1. Topologia leg aturii Leg aturile ntre releele de comunicat ie radio, amplasate n turnuri si dotate cu antene parabolice, sunt n general punct la punct, ca n cazul leg aturilor prin perechi de conductoare. Leg aturile ntre satelit ii geostat ionari si stat iile terestre sunt astfel c a emisia satelitului este recept ionat a de mai multe stat ii de pe P am ant, si reciproc, satelitul recept ioneaz a emisia de la mai multe stat ii de pe P am ant; stat iile de pe P am ant nu comunic a ns a direct ntre ele. O astfel de comunicat ie poate prezenta riscul ca emisiile stat iilor de pe P am ant s a se ciocneasc a f ar a ca stat iile s a observe direct acest lucru. La echipamente mobile exist a mai multe posibilit a ti. Pentru distant e mari, una din stat ii este x a si se plaseaz a ntr-un turn de unde poate comunica direct cu toate celelalte. Celelalte stat ii nu se ,,v ad direct una pe alta si de cele mai multe ori nici dac a ,,se v ad protocoalele folosite nu permit comunicat ii directe ntre ele (exemplu: telefoanele GSM). Stat ia central a prime ste rol de arbitraj al transmisiilor.

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 89

Pentru distant e mici, se poate adopta o organizare mai ,,democratic a (exemplu IEEE 802.11): stat iile comunic a direct ntre ele, iar arbitrarea mediului se face prin mijloace asem an atoare cu cele utilizate pe cabluri magistral a ( 4.2). Spre deosebire ns a de cablurile magistral a, unde un pachet emis de o stat ie de pe cablu este recept ionat de toate celelalte si, ca urmare, ciocnirea la recept ie a dou a pachete este sesizat a si de c atre emit atoare, la leg aturile radio este posibil ca dou a transmisii s a se ciocneasc a la receptor dar nici una din stat iile care le-au emis s a nu recept ioneze transmisia celeilalte. 3.5.5.2. Fiabilitatea Fiabilitatea unei leg aturi radio este n general mai sc azut a dec at a unei leg aturi pe cablu: Rata de erori este mult mai mare. La o leg atur a radio, probabilitatea unei erori de un bit este n mod normal de 103 . . . 105 . Pentru comparat ie, la transmisia prin perechi de conductoare, probabilitatea unei erori de un bit este de 107 . . . 1010 , iar la brele optice, erorile sunt si mai rare, 10 12 10 . . . 10 . La frecvent e peste 10 GHz, datorit a absorbt iei n pic aturile de ap a, starea leg aturii poate depinde de starea vremii. Umbrele provocate de cl adiri si relief, precum si interferent ele ntre undele reectate, sunt imposibil de calculat n mod practic. O stat ie ce ajunge n umbr a va pierde leg atura n mod imprevizibil. 3.5.5.3. Securitatea La comunicat iile prin cablu pe distant a scurt a, securitatea comunica tiei poate asigurat a p azind cablul. Din acest motiv ret elele locale pe cablu pot s a nu prevad a m asuri contra intru silor. Undele radio nu pot p azite, analog cablului. Ret elele f ar a r este esent ial s a aib a incorporate m asuri de securitate. Acestea presupun metode criptograce (vezi capitolul 6) ce previn ascultarea sau contrafacerea unui mesaj, si eventual schimbarea frecvent ei (metoda frequency hopping ) pentru a preveni bruiajul.

3.6. Transmisia optic a


Transmisia optic a este de fapt tot o transmisie prin unde electromagnetice, dar cu frecvent e mult mai mari, anume din intervalul cuprins ntre 1,6 1014 Hz ( = 1,8 m) si 3,7 1014 Hz ( = 0,8 m). Aceste unde electromagnetice fac parte din categoria undelor infraro sii. Vom folosi termenul de

c 2008, Radu-Lucian Lup sa


90 3.6. Transmisia optica

lumin a pentru aceste unde, de si nu se ncadreaz a n domeniul luminii vizibile ( = 780 nm . . . 380 nm). M arimea considerat a ca semnal este puterea luminoas a. Am putea considera, n mod echivalent, c a semnalul transmis de mediu este intensitatea c ampului electric sau induct ia magnetic a si c a utiliz am modulat ie n amplitudine pentru a transmite semnalul util. Emisia si recept ia se realizeaz a cu dispozitive semiconductoare capabile s a emit a raze infraro sii la trecerea curentului prin ele (LED-uri, asem an atoare celor de pe panourile de aparate, sau, dup a caz, diode laser) si, respectiv, care permit trecerea curentului doar n prezent a luminii. Pentru unele aplicat ii, presupun and comunicat ie pe distant a de cel mult c a tiva metri (de exemplu, pentru telecomenzi de televizoare sau pentru dispozitive IrDA), raza de lumin a se propag a direct prin aer de la emit ator la receptor. Metoda este dicil de extins la distant e mai mari. Raza de lumin a poate ns a foarte u sor ghidat a printr-o br a optic a. O br a optic a este n esent a un r dintr-un material transparent, prin interiorul c aruia trece lumina. Dac a raza de lumin a love ste peretele lateral al brei, se ntoarce napoi n br a. In acest fel, lumina ce intr a printr-un cap at al brei iese prin cel alalt cap at chiar dac a bra nu este perfect dreapt a. Fibra optic a se mai nume ste si ghid de und a optic (engl. optical waveguide ), deoarece este identic ca si scop si foarte asem an ator funct ional cu ghidul de und a utilizat pentru microunde. Lungimea brei, ntre emit ator si receptor, poate atinge c ateva zeci de kilometri. Lucrurile care fac posibil a atingerea unor distant e at at de mari sunt atenuarea mic a (sub 1 dB/km) si imunitatea aproape perfect a la zgomot.

3.6.1. Construct ia mediului


Constructiv, o br a optic a este alc atuit a dintr-un miez (engl. core ) din silica (bioxid de siliciu, SiO2 , amorf), nconjurat de un nveli s (engl. cladding ), tot din silica, dar cu un indice de refract ie put in mai mic. Diametrul miezului este principalul parametru dat la o br a optic a; este cuprins ntre 8 m si 62,5 m. Diametrul nveli sului este n mod curent de 125 m. Pentru comparat ie, diametrul rului de p ar uman este de 20 . . . 30 m. Intre miez si nveli s poate o discontinuitate net a, sau se poate ca indicele de refract ie s a scad a gradual. Fibrele cu discontinuitate net a se numesc bre optice cu discontinuitate (engl. step index ber ) iar brele cu trecere gradual a de la miez la nveli s se numesc bre optice graduale (engl. grade index ber ). Fibra propriu-zis a ind extrem de subt ire si fragil a, ea este nvelit a

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 91

n mai multe straturi cu rol de protect ie mecanic a. Ideea de baz a a conducerii semnalului prin br a este c a o raz a de lumin a ce se propag a oblic prin miez si atinge suprafat a de contact dintre miez si nveli s s a se reecte napoi n miez. Reexia trebuie s a e cu pierderi extrem de mici, deoarece o raz a se va reecta de multe ori de la un cap at la cel alalt al brei. 3.6.1.1. Conectarea brelor optice Problemele legate de conectarea brelor optice reprezint a principalul dezavantaj al brelor optice fat a de perechile de conductoare. Conectarea cap la cap a dou a tronsoane de br a se poate face: prin lipire, nc alzind bra p an a la temperatura de topire a sticlei si av and grij a ca s a se lipeasc a capetele dar s a nu se amestece miezul cu nveli sul. Conectarea prin lipire necesit a echipamente mai scumpe, este nedemontabil a, dar perturb a cel mai put in transmiterea semnalului prin br a. O lipitur a produce o atenuare a semnalului n jur de 0,1 dB, din cauza reexiei unei p art i a luminii incidente. prin conectoare optice. Fiecare cap at de br a se slefuie ste foarte bine si se prinde ntr-o pies a metalic a cu rol de ghidaj. Piesele metalice ata sate capetelor de br a se str ang una fat a de cealalt a, realiz and alinierea fat a n fat a a capetelor de br a. Eventual, spatiul dintre capetele de br a se poate umple cu un gel transparent cu indice de refract ie apropiat de cel al brei, reduc and astfel reexia la cap atul brei.

3.6.2. Propagarea semnalului optic


3.6.2.1. Moduri de propagare Dac a diametrul brei nu este mai mare de c ateva zeci de ori lungimea de und a a luminii, modelul opticii geometrice propagarea luminii sub forma de raze nu mai este o aproximare acceptabil a a fenomenelor ce au loc. Din studiul ecuat iei undelor rezult a doar un num ar nit de solut ii, numite moduri de propagare . Intuitiv, un mod este un posibil traseu al razei de lumin a, travers and n mod repetat, n zig-zag, axul brei si p astr and un unghi xat fat a de acesta; n bre sucient de subt iri, doar anumite unghiuri sunt permise. Dac a o br a permite existent a mai multor moduri de propagare a luminii, bra se nume ste multimod . Modurile diferite se propag a n general cu viteze put in diferite. Intuitiv, acest lucru se nt ampl a deoarece viteza de propagare a semnalului n br a este egal a cu valoarea componentei longitudinale a vitezei de propagare a luminii, care depinde de unghiul dintre direct ia

c 2008, Radu-Lucian Lup sa


92 3.6. Transmisia optica

de propagare a luminii si axa brei. Datorit a vitezelor diferite, semnalul emis de la un cap at al brei este distorsionat, ind recept ionat la cel alalt cap at ca mai multe copii put in decalate n timp. Acest fenomen de distorsionare a semnalului se nume ste dispersie intermodal a. Opusul brei multimod este bra monomod , n care ecuat ia undelor admite o singur a solut ie. Existent a unui singur mod elimin a dispersia intermodal a, mbun at a tind calitatea propag arii semnalului. Pentru a admite un singur mod, bra trebuie s a e mult mai subt ire, diametrele standard ind 10 m sau 8 m. Diametrul mai mic al brei atrage dou a dicult a ti: pe de o parte, cerint ele de aliniere mecanic a a brei fat a de surs a sunt mai stricte, iar pe de alt a parte densitatea de putere luminoas a emis a prin br a trebuie s a e mai mare. Acest din urm a fapt duce la necesitatea utiliz arii diodelor laser ca surs a de lumin a (LED-urile nu mai sunt adecvate) si, n consecint a, la cre sterea pret urilor echipamentelor. 3.6.2.2. Caracteristici ale mediului D am n continuare caracteristicile principale ale propag arii: viteza de propagare este viteza luminii n silica, aproximativ 0,67 c; atenuarea este, a sa cum am v azut, foarte mic a, de ordinul c atorva decibeli pe kilometru sau chiar c ateva zecimi de decibel pe kilometru. distorsiunile apar sub forma de dispersie, adic a l a tirea impulsurilor. Sunt cauzate de mai multe fenomene, si au ca si consecint a limitarea practic a a produsului dintre frecvent a maxim a ce se poate transmite si distant a dintre emit ator si receptor. Acest produs se nume ste (impropriu) banda de trecere si se m asoar a n megahertzi kilometru (MHz km). Valorile tipice, pentru o br a multimod, sunt de ordinul a 500 MHz km. zgomotul n transmisia prin br a optic a apare aproape exclusiv datorit a fotodiodei receptoare (zgomot termic); acesta limiteaz a inferior sensibilitatea receptorului si, la atenuare dat a a brei, puterea emit atorului. Captarea de parazit i de-a lungul brei, si n particular diafonia, sunt neglijabile.

3.6.2.3. Multiplexarea n lungimea de und a Consider and ca semnal intensitatea c ampului electric, observ am c a prin bra optic a se transmite un semnal modulat n amplitudine. Frecvent a purt atoare este frecvent a undelor infraro sii. Semnalul modulator este r ad acina p atrat a a puterii luminoase emise.

c 2008, Radu-Lucian Lup sa


Capitolul 3. Nivelul fizic 93

Ca urmare, este posibil a realizarea multiplex arii n frecvent a a mai multor semnale pe aceea si br a optic a. Emit atoarele sunt diode laser sau LEDuri de culori diferite. Receptoarele sunt dotate cu c ate un ltru de culoare corespunz atoare plasat n fat a elementului fotosensibil. Aceast a metod a de multiplexare se nume ste multiplexare n lungimea de und a (engl. wavelength division multiplexing WDM). Subliniem c a diferent a ntre multiplexarea n lungime de und a si multiplexarea n frecvent a este doar de terminologie, nu una principial a. Diferent a provine doar din faptul c a, n cazul transmisiei optice, n lipsa mijloacele de-a analiza direct semnalul electromagnetic (asupra c aruia opereaz a multiplexarea n frecvent a ), analiz am doar puterea semnalului electromagnetic. Este posibil a si transmisia duplex pe o singur a br a optic a. Pentru aceasta se realizeaz a o construct ie cu oglinzi semitransparente care permite ca raza de lumin a emis a s a p atrund a n br a, iar raza de lumin a ce iese din br a s a ajung a pe elementul receptor. Pentru a preveni diafonia ntre cele dou a sensuri de propagare, este necesar ca reexiile pe capetele brei s a e extrem de reduse sau s a se aplice o multiplexare n lungimea de und a ntre cele dou a sensuri.

3.6.3. Considerente practice


Realiz and o transmisie ghidat a prin cablu, brele optice concureaz a direct cu perechile de conductoare. Fibrele optice au c ateva avantaje: sunt izolatoare din punct de vedere electric, sunt foarte put in sensibile la zgomot, este dicil de interceptat comunicat ia prin ele (f ar a a le t aia este aproape imposibil de interceptat semnalul, iar t aierea brei poate u sor detectat a), au atenuare mic a si, n sf ar sit, sunt mult mai u soare (cont in mult mai put in material) dec at perechile de conductoare. Toate aceste avantaje fac brele optice s a e extrem de atractive pentru comunicat ia pe distant e mari, precum si pentru echipamente ce lucreaz a n condit ii mai speciale, de exemplu la tensiuni electrice mari sau n medii cu radiat ii electromagnetice puternice. Principalele dicult a ti la utilizarea brelor optice sunt legate de cablare. De si puterea luminii transportate prin bra optic a este foarte mic a, sect iunea extrem de mic a a brei face ca densitatea de putere s a e sucient de mare pentru a periculoas a. Riscul principal este ca, n cazul n care lumina de la emit atorul optic p atrunde n ochi, s a produc a leziuni ireparabile ale retinei. Riscul de accident este m arit prin faptul c a lumina nu este vizibil a. Ca m asur a de protect ie, se pot utiliza ochelari speciali prev azut i cu ltre care

c 2008, Radu-Lucian Lup sa


94 3.6. Transmisia optica

las a s a treac a lumina vizibil a, dar blocheaz a infraro siile transmise prin bre. Lipirea brelor sau montarea conectoarelor pe bre necesit a echipamente scumpe (zeci de mii de dolari pentru un dispozitiv de lipire si n jur de o mie de dolari pentru setul de unelte necesare mont arii conectoarelor) si personal calicat. Din acest motiv, se comercializeaz a cabluri, de diferite lungimi, cu conectoare gata ata sate. Un r de praf ajuns pe cap atul unei bre optice obstruct ioneaz a serios trecerea luminii. De aceea, conectoarele necuplate se acoper a cu capace protectoare.

c 2008, Radu-Lucian Lup sa


95

Capitolul 4

Nivelul leg aturii de date

Nivelul leg aturii de date are ca rol realizarea unei comunicat ii stabile ntre calculatoare sau echipamente ntre care exist a o leg atur a direct a la nivel zic (exist a deci un mediu de comunicat ie ntre ele). In general, leg atura de date ofer a servicii de transport de pachete. Nivelul zic ofer a servicii de transport de pachete, ns a aceste servicii sufer a de urm atoarele lipsuri: Pachetele pot alterate sau chiar distruse complet din cauza zgomotului. Dac a un acela si mediu de transmisie este utilizat de mai multe emit atoare (ceea ce se nt ampl a adesea la transmisia prin unde radio, dar uneori si la transmisia prin perechi de conductoare) si mai multe dintre aceste emit atoare transmit simultan, pachetele transmise se altereaz a reciproc. Dac a destinat ia nu poate prelucra datele n ritmul n care sunt transmise de c atre emit ator, o parte din date se vor pierde. Construct ia leg aturii zice este scump a; mai mult, exist a un cost independent de capacitate. Ca urmare, este de dorit s a putem construim mai multe leg aturi logice, care s a transmit a uxuri independente de pachete, partaj and aceea si leg atur a zic a. Ca urmare, nivelul leg aturii de date are sarcina de-a realiza urm atoarele: detectarea sau corectarea erorilor de transmisie; controlul accesului la mediu n cazul n care exist a mai multe emit atoare ce partajeaz a acela si mediu de transmisie; retransmiterea pachetelor pierdute din cauza erorilor de transmisie, a ciocnirilor ntre pachete transmise de mai multe emit atoare simultan sau a incapacit a tii destinat iei de-a le prelua la timp;

c 2008, Radu-Lucian Lup sa


96 turii de date Capitolul 4. Nivelul lega

controlul uxului de date, adic a fr anarea emit atorului n cazul n care destinat ia nu este capabil a s a proceseze sucient de repede informat ia primit a; multiplexarea mai multor leg aturi logice prin aceea si leg atur a zic a.

Surs a (modulul ret ea)

Emit ator leg atur a de date

Nivel zic

Receptor leg atur a de date

Destinat ie (modulul ret ea)

Calculator emit ator

Calculator receptor

Figura 4.1: Alc atuirea nivelului leg aturii de date si locul s au ntre nivelele ret elei.

Constructiv, nivelul leg aturii de date este un modul interpus ntre nivelul superior ( n mod normal, nivelul ret ea) si nivelul zic (g. 4.1). Pentru realizarea funct iilor lor, modulele nivelului leg aturii de date ale dispozitivelor ce comunic a si transmit unul altuia, utiliz and serviciile nivelului zic, dou a tipuri de informat ii: datele utile, ce trebuie transmise de c atre nivelul leg aturii de date n folosul nivelelor superioare; informat ii de control, pentru uzul strict al nivelului leg aturii de date. Informat iile de control sunt transmise e mpreun a cu datele utile, n acela si pachet transmis prin nivelul zic, e separat, n pachete de sine st at atoare. In primul caz, informat iile de control sunt plasate e n fat a datelor utile, sub forma unui antet, e dup a acestea. In cazul transmiterii datelor de control ntr-un pachet separat, un astfel de pachet se nume ste pachet de control.

4.1. Detectarea si corectarea erorilor


In vederea detect arii sau, dup a caz, corect arii erorilor, emit atorul de la nivelul leg aturii de date adaug a, la ecare pachet generat de nivelul superior, un num ar de bit i de control. Bit ii de control sunt calculat i conform unui mecanism de codicare pentru canale cu perturbat ii (vezi 2.4). Bit ii de control sunt ad augat i, de regul a, la nalul pachetului. Receptorul recalculeaz a bit ii de control conform cont inutului pachetului recept ionat si-i compar a cu cei de la nalul pachetului recept ionat. In caz de nepotrivire, receptorul deduce c a s-a produs o eroare de transmisie. In cazul utiliz arii unui cod corector de erori, receptorul reconstituie cont inutul

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 97

cel mai probabil al pachetului original. In cazul unui cod detector de erori, pachetul nu poate recuperat; n acest caz, eventuala retransmitere a datelor cade n sarcina unui mecanism de tipul celui ce va studiat n 4.3.

4.2. Controlul accesului la mediu


Problema controlului accesului la mediu se pune n situat ia n care pe un acela si mediu zic act ioneaz a mai multe emit atoare, a c aror emisie simultan a interfereaz a n a sa fel nc at un receptor nu poate recept iona corect oricare dintre transmisii. In aceste condit ii, problema accesului la mediu const a n a elabora un protocol care s a evite transmisia simultan a. In practic a, problema accesului la mediu apare n urm atoarele ipostaze: la transmisia semi-duplex , adic a n cazul comunicat iei bidirect ionale, ntre dou a entit a ti, utiliz and acela si mediu zic pentru ambele sensuri. la comunicat ia prin unde radio, dac a exist a mai multe stat ii care emit pe aceea si lungime de und a. In general, emisia unei stat ii este recept ionat a de toate stat iile pe o anumit a raz a. Este cazul aproape tuturor ret elelor f ar a r: IEEE 802.11 (wireless Ethernet ), Bluetooth, GSM, etc. dac a stat iile sunt conectate ,,tip magistral a, adic a mediul de comunicat ie n general o pereche de conductoare trece pe la toate stat iile. Este cazul ret elelor Ethernet mai vechi. Exist a dou a strategii de control al accesului la mediu: asigurarea unui interval exclusiv de emisie, pe r and, pentru ecare stat ie; acceptarea posibilit a tii coliziunilor si retransmisia pachetelor distruse n coliziuni. Asigurarea unui interval exclusiv de emisie permite garantarea, pentru ecare stat ie, a unui debit minim cu care poate emite si a unui interval maxim de a steptare din momentul n care are ceva de transmis si p an a la intrarea n emisie; metoda cu coliziuni si retransmiteri este nedeterminist a si ca atare asigur a un anumit debit si un anumit timp de a steptare doar cu o anumit a probabilitate strict mai mic a dec at unu. In schimb, n sistemele ce asigur a un interval exclusiv de emisie, intrarea si ie sirea unei stat ii din ret ea, precum si revenirea dup a o pan a a unei stat ii, sunt complicate. In cazul asigur arii unui interval exclusiv de emisie, o parte din capacitatea de transmisie a mediului este consumat a de mesajele de sincronizare necesare stabilirii intervalelor ec arei stat ii; n cazul accept arii coliziunilor, o parte din capacitate este pierdut a datorit a pachetelor distruse n coliziuni.

c 2008, Radu-Lucian Lup sa


98 4.2. Controlul accesului la mediu

In general, asigurarea unui interval exclusiv de emisie este favorabil a n sistemele n timp real, cum ar ret elele utilizate pentru automatiz ari industriale transmisie audio-video. Detectarea coliziunilor si retransmiterea pachetelor distruse n coliziuni este favorabil a n sistemele interactive, cum ar ret elele ,,obi snuite de calculatoare. Aproape n orice sistem n care mai multe dispozitive sunt conectate la acela si mediu zic este necesar ca ecare dispozitiv s a aib a un identicator unic. Acest identicator se nume ste adres a zic a sau adres a MAC (de la Media Access Control controlul accesului la mediu ) sau, dac a nu e pericol de confuzie, adres a. Alocarea adresei zice se face n mod normal prin mecanisme exterioare ret elei, adic a adresele sunt alocate e manual, de c atre administratorul ret elei, e n cadrul procesului de fabricat ie al dispozitivului conectat la ret ea.

4.2.1. Protocoale bazate pe asigurarea unui interval exclusiv de emisie


Cea mai simpl a metod a din aceast a categorie este s a existe o stat ie desemnat a ca arbitru, care s a anunt e de ecare dat a ce stat ie prime ste dreptul de emisie. Anunt ul se face printr-un pachet emis de arbitru si cont in and adresa zic a a stat iei ce poate emite. Stat ia anunt at a de arbitru are la dispozit ie un interval de timp n care poate s a emit a ceea ce are de transmis. Dac a stat ia nu are nimic de transmis, protocolul poate prevede e c a stat ia nu emite nimic, e c a emite un pachet special. Incheierea perioadei alocate unei stat ii se poate face e la expirarea unei durate de timp prestabilite, e prin anunt ul explicit al stat iei c a a ncheiat transmisia. Dup a ncheierea perioadei alocate unei stat ii, arbitrul anunt a stat ia urm atoare. Arbitrul trebuie s a aib a lista tuturor stat iilor din ret ea. Ie sirea unei stat ii se face simplu prin anunt area arbitrului; ie sirea arbitrului nu este posibil a (dec at eventual prin desemnarea unui alt arbitru). Intrarea unei stat ii noi necesit a un mecanism special de anunt are a arbitrului. Un astfel de mecanism este n general bazat pe coliziuni si prevede ca arbitrul s a ntrebe, periodic, dac a exist a stat ii ce vor s a intre n ret ea. Dac a o stat ie, alta dec at arbitrul, se defecteaz a, stat ia e este v azut a ca o stat ie ce nu are nimic de transmis, e este detectat a de c atre arbitru c a nu r aspunde si este scoas a de pe lista stat iilor din ret ea. Defectarea arbitrului duce la c aderea ntregii ret ele.

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 99

Metoda cu arbitru este utilizat a, de exemplu, n cadrul ec arei celule GSM. O alt a metod a de control al accesului este metoda cu jeton. In cadrul acestei metode, n loc s a existe un arbitru central care det ine lista complet a a stat iilor, lista este distribuit a, ecare stat ie cunosc and adresa stat iei urm atoare. In acest fel, n intervalul de emisie alocat, ecare stat ie emite datele utile, dup a care anunt a stat ia urm atoare. Metoda cu jeton a fost utilizat a n ret elele IEEE 802.4.

4.2.2. Protocoale bazate pe coliziuni si retransmitere


Cel mai simplu mecanism bazat pe coliziuni si retransmitere presupune ca o stat ie ce are date de transmis s a le transmit a imediat. In cazul unei coliziuni, stat ia emit atoare va repeta ulterior pachetul, p an a la o transmitere cu succes. Detectarea unei coliziuni, de c atre ecare dintre stat iile emit atoare, se poate face prin dou a metode: prin ascultarea mediului pentru a detecta o eventual a transmisie simultan a. Datorit a nt arzierilor de propagare diferite, este posibil ca dou a pachete s a e n coliziune pentru o stat ie receptoare si s a nu e n coliziune pentru alt a stat ie (g 4.2). Din acest motiv, un emit ator trebuie s a considere coliziune orice situat ie n care detecteaz a o transmisie prea apropiat a n timp de o transmisie proprie. Din acela si motiv, nt arzierea maxim a datorat a propag arii n ret ea trebuie limitat a prin standard, ceea ce impune o limit a asupra ntinderii geograce a ret elei.
A
a

B
c

A
a

B
c

A
c

B
a

(a) A si C emit simultan c ate un pachet scurt. Fiecare dintre ei termin a emisia propriului pachet cu mult naintea sosirii pachetului celuilalt.

(b) Ceva mai t arziu, ambele pachete ajung la B , unde se produce coliziune.

(c) S i mai t arziu, A prime ste pachetul lui C si C prime ste pachetul lui A.

Figura 4.2: Dou a pachete emise simultan, n condit iile n care timpul de propagare este mai mare dec at timpul de transfer. Coliziunea nu este detectat a de nici unul dintre emit atoare, ns a este detectat a de o stat ie aat a la jum atatea distant ei dintre acestea.

La leg aturile radio poate s a mai apar a un fenomen, si anume, da-

c 2008, Radu-Lucian Lup sa


100 4.2. Controlul accesului la mediu

torit a atenu arilor diferite, este posibil ca pentru un receptor s a apar a coliziune ntre dou a pachete, n timp ce pentru alt receptor unul dintre pachete s a e at at de puternic atenuat nc at s a nu perturbe deloc recept ia celui de-al doilea pachet (g. 4.3). Din acest motiv, la transmisia radio este imposibil ca emit atorul s a detecteze ntotdeauna coliziunile propriei transmisii cu alte transmisii simultane.

Figura 4.3: Este posibil ca dou a emit atoare radio, A si C , s a e situate prea departe pentru a- si recept iona una transmisia celeilalte, dar s a existe o a treia stat ie, B , care s a recept ioneze transmisiile ambelor emit atoare (liniile punctate delimiteaz a zona n care transmisia unei stat ii poate recept ionat a). In acest caz, A si C pot emite simultan f ar a a detecta coliziune, ns a pentru B se produce coliziune ntre transmisiile lui A si C.

prin lipsa conrm arii, din partea receptorului, a primirii pachetului. Pentru aceasta, este necesar a utilizarea unui cod detector de erori, cu ajutorul c aruia receptorul s a detecteaze disturgerea pachetului n urma coliziunii. De asemenea, mai este necesar ca receptorul s a conrme pachetele primite cu succes (astfel de mecanisme de conrmare vor studiate n 4.3). Repetarea unui pachet distrus de o coliziune se face dup a un interval de timp aleator. Dac a intervalul de timp p an a la retransmitere ar x, dou a stat ii ce au emis simultan vor emite simultan si retransmiterile, ciocnindu- si la innit pachetele. Mai mult, dac a apar frecvent coliziuni, este bine ca timpul p an a la urm atoarea retransmitere s a e m arit. Acest protocol simplu de acces la mediu se nume ste Aloha pur . O variant a mbun a t a tit a a protocolului Aloha este protocolul numit Aloha cuanticat (engl. slotted Aloha ). In acest protocol, toate pachetele au aceea si lungime. Inceperea transmisiei unui pachet nu poate avea loc oric and, ci doar la momente xate, aate la o durat a de pachet unul de altul. Alte mbun a t a tiri ce pot aduse protocolului Aloha pur (nu ns a si la Aloha cuanticat ) sunt: detectarea purt atoarei (CSMA Carrier Sense Multiple Access ): o stat ie

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 101

care dore ste s a emit a ascult a mai nt ai mediul; dac a detecteaz a emisia altei stat ii, am an a emisia proprie p an a dup a nalul emisiei celeilalte stat ii. O prim a posibilitate este ca stat ia s a nceap a emisia proprie imediat dup a terminarea emisiei celeilalte stat ii. Dezavantajul este c a, pe durata unui pachet lung, este probabil s a se adune mai multe stat ii care ar vrut s a emit a; ca urmare la nalul transmisiei acelui pachet toate stat iile vor emite simultan, rezult and coliziuni. O solut ie mai bun a este ca o stat ie, care dore ste s a emit a si constat a c a mediul este ocupat, s a a stepte un interval de timp aleator, dup a care s a verice din nou dac a mediul este liber. Dac a mediul este liber, ncepe emisia proprie; dac a nu, a steapt a un nou interval de timp aleator s. a. m. d. oprirea transmisiei la detectarea unei coliziuni (numit a, oarecum impropriu, detectarea coliziunii collision detection, CSMA/CD ): dac a o stat ie, n timpul emisiei proprii, detecteaz a o coliziune, abandoneaz a datele r amase de transmis, transmite un semnal de o form a special a pentru a anunt a c a pachetul este invalid si apoi opre ste transmisia. In acest fel, se economise ste timpul necesar transmisiei datelor r amase, transmisie oricum compromis a.

4.2.3. Protocoale mixte


Exist a si protocoale de control al accesului la mediu care combin a metode de asigurarea accesului exclusiv cu metode bazate pe coliziuni. O posibilitate este s a se negocieze, prin intermediul unor pachete de control de mici dimensiuni, accesul exclusiv la mediu n vederea transmiterii pachetelor de date, de dimensiuni mai mari. O astfel de metod a este metoda CSMA/CA (carrier sense multiple access with collision avoidance, rom. acces multiplu cu detectarea purt atoarei si evitarea coliziunilor ), utilizat a n ret elele IEEE 802.11. O stat ie A care dore ste s a transmit a un pachet de date unei stat ii B i va trimite nt ai un pachet de control, numit RTS (request to send, cerere de transmisie ), n care specic a timpul necesar transmiterii pachetului (sau, echivalent, lungimea pachetului). B r aspunde printr-un alt pachet de control, CTS (clear to send, liber la transmisie ), destinat lui A dar recept ionat de toate stat iile, n care pune si durata transmisiei copiat a din pachetul RTS. La primirea pachetului CTS, stat ia A transmite pachetul de date. O stat ie care recept ioneaz a un CTS adresat altei stat ii nu are voie s a transmit a nici date, nici pachete de control, pe durata anunt at a n CTS si rezervat a astfel destinatarului CTS-ului.

c 2008, Radu-Lucian Lup sa


102 4.2. Controlul accesului la mediu

Aceast a metod a este foarte favorabil a n ret ele f ar a r deoarece rezolv a si a sa-numita problema stat iei ascunse : este posibil s a existe trei stat ii, A, B si C , cu B situat a geograc aproximativ la mijlocul distant ei ntre A si C , cu distant a dintre A si C put in peste raza de act iune a transmisiei, astfel nc at A nu recept ioneaz a transmisia lui C si nici reciproc, dar cu B sucient de aproape de A si de C astfel nc at s a poat a comunica cu ecare dintre ele. In aceast a situat ie, dac aA si C emit simultan, din punctul de vedere al lui B se produce o coliziune, dar nici A nici C nu pot detecta acest lucru. Protocolul CSMA, descris n paragraful precedent, nu permite lui C s a detecteze dac a A transmitea deja c atre B n momentul n care C dore ste s a transmit a la r andul lui; ca urmare, CSMA se comport a exact ca Aloha pur. In protocolul CSMA/CA, n schimb, C recept ioneaz a CTS-ul adresat de B lui A si am an a transmisia proprie. Alt a posibilitate de combinare a celor dou a strategii o constituie pro tocolalele cu conict limitat. In cazul acestor protocoale, stat iile sunt mp art ite n grupuri. Fiec arui grup i se aloc a intervale exclusive de emisie (ca n cazul protocoalelor bazate pe intervale exclusive de emisie, dar cu diferent a c a ecare interval se aloc a unui ntreg grup, nu unei stat ii). In cadrul ec arui grup se aplic a un protocol cu coliziuni si retransmitere. Imp art irea n grupuri poate f acut a dinamic: dac a n cadrul unui grup apar frecvent coliziuni, grupul este scindat n dou a; dac a dou a grupuri au transmisii sucient de rare, pot recombinate ntr-unul singur.

4.3. Retransmiterea pachetelor pierdute


Dac a un pachet de date se pierde (de exemplu datorit a unei erori de transmisie, eroare detectat a dar nu si corectat a de receptor), este necesar a retransmiterea acelui pachet. Evident, emit atorul nu are cum s a ,,ghiceasc a dac a un anumit pachet ajunge intact la destinat ie sau este pierdut; ca urmare, trebuie stabilit a o comunicat ie napoi dinspre receptor spre emit ator. Principial, exist a dou a strategii: receptorul conrm a (engl. acknowledge , ACK) primirea corect a a pachetelor receptorul inrm a (engl. negative acknowledge, NAK) un pachet eronat. Evident, conrm arile sau inrm arile sunt si ele pachete si deci sunt la r andul lor supuse eventualelor erori de transmisie. Rolul unui protocol de retransmitere este s a asigure c a la destinat ie ajung toate pachetele emise, n ordinea n care sunt emise si f ar a duplicate.

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 103

Aceste trei condit ii mpreun a formeaz a dezideratul de transmitere sigur a (engl. reliable ).

4.3.1. Principiul conrm arilor pozitive si retransmiterilor


Ideea de baz a a mecanismului de retransmitere este urm atoarea: la primirea cu succes a ec arui pachet de date, receptorul trimite emit atorului c ate un pachet cu rol de conrmare. Dac a emit atorul prime ste conrmarea, trece la urm atorul pachet. Dac a emit atorul nu prime ste conrmarea unui pachet n timpul dus- ntors normal, repet a pachetul ce nu a fost conrmat (vezi gura 4.4).
Surs a Emit ator Receptor Destinat ie

Un mesaj Un mesaj Un mesaj ACK al doilea al doilea

timeout

al doilea al doilea ACK

Figura 4.4: Retransmiterea pachetelor pierdute

S a examin am acum protocolul din punctul de vedere al ec arui participant (emit atorul si receptorul) si s a nu uit am c a ecare are viziunea lui despre sistem, dat a de acele informat ii care i sunt accesibile. Algoritmul emit atorului este urm atorul: pentru ecare pachet al sursei, c at timp nu a primit conrmare de la receptor, trimite pachetul si a steapt a p an a c and e prime ste conrmarea, e trece un timp egal cu durata dus- ntors normal a.

c 2008, Radu-Lucian Lup sa


104 4.3. Retransmiterea pachetelor pierdute

Algoritmul receptorului este urm atorul: pentru ecare pachet primit de la emit ator, trimite un pachet de conrmare spre emit ator si livreaz a destinat iei pachetul primit. Exist a o problem a cu algoritmul de mai sus. Intrebare pentru cititor: ce se nt ampl a dac a un pachet ajunge la destinat ie ns a conrmarea lui se pierde?
Surs a Emit ator Receptor Destinat ie

Un mesaj Un mesaj Un mesaj ACK al doilea al doilea al doilea timeout ACK

al doilea al doilea ACK

Figura 4.5: In lipsa unor m asuri adecvate, pierderea unei conrm ari conduce la dublarea unui pachet.

Rezultatul se vede n gura 4.5 (pachetul ce cont ine textul ,,al doilea este livrat n dublu exemplar destinat iei). S a observ am (comparat i si cu gura 4.4) c a receptorul nu are cum s a disting a ntre trimiterea urm atorului pachet de date si retrimiterea unui pachet datorit a pierderii conrm arii. Pentru a obt ine un algoritm corect, trebuie s a furniz am receptorului sucient a informat ie pentru ca acesta s a disting a ntre repetarea pachetului precedent si pachetul urm ator. O solut ie este ca emit atorul s a pun a n ecare pachet trimis num arul s au de ordine n cadrul uxului de date; acest num ar de ordine se nume ste num arul de secvent a al pachetului. In acest fel, receptorul va ret ine num arul ultimului pachet recept ionat si va capabil s a verice dac a urm atorul pachet primit este repetarea acestuia sau este urm atorul pachet al

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 105

sursei. Intrebare pentru cititor: dac a receptorul prime ste un duplicat al pachetului precedent, trebuie s a-l conrme sau nu? S a vedem rat ionamentul ce ne duce la r aspuns: Emit atorul nu are de unde s a stie dac a un pachet de date a ajuns sau nu la receptor. Dac a prime ste conrmarea unui pachet, poate sigur c a pachetul conrmat a ajuns la receptor; dac a ns a a trimis un pachet si nu a primit ( nc a) conrmarea acestuia, este posibil (conform informat iilor emit atorului) ca pachetul s a ajuns ( si eventual s a se pierdut conrmarea) sau ca pachetul s a nu ajuns deloc. El insist a n retransmiterea pachetului p an a la primirea conrm arii. Prin urmare, receptorul trebuie s a conrme ecare pachet primit, chiar dac a este un duplicat al unui pachet anterior (vezi gura 4.6).
Surs a Emit ator Receptor Destinat ie

Un mesaj 1 Un mesaj Un mesaj ACK al doilea 2 al doilea al doilea timeout ACK

2 al doilea timeout

. . .

2 al doilea

Figura 4.6: Neconrmarea duplicatelor determin a emit atorul s a repete la innit un pachet a c arui conrmare s-a pierdut.

Suntem acum n m asur a s a d am algoritmii corect i pentru emit ator si pentru receptor: funct ionarea emit atorului este descris a n algoritmul 4.1, iar cea a receptorului n algoritmul 4.2. Un exemplu de funct ionare a acestora

c 2008, Radu-Lucian Lup sa


106 4.3. Retransmiterea pachetelor pierdute

este dat n gura 4.7 Algoritmul Emit ator pas cu pas algoritmul: n:=0 c at timp sursa mai are pachete de trimis execut a e d urm atorul pachet al sursei p:=(n, d) execut a trimite p recept ioneaz a n , f ar a a a stepta o durat a mai mare de t c at timp n = n sau a expirat durata t sf ar sit c at timp sf ar sit algoritm
Algoritmul 4.1: Algoritmul emit atorului n protocolul simplu cu conrm ari si retransmiteri. Parametrul t este ales put in mai mare dec at durata dus- ntors a nivelului zic.

Algoritmul Receptor pas cu pas algoritmul: n:=0 c at timp mai exist a pachete de primit execut a recept ioneaz a (n , d) de la nivelul zic dac a n = n atunci n:=n + 1 livreaz a d destinat iei sf ar sit dac a trimite n spre nivelul zic sf ar sit c at timp sf ar sit algoritm
Algoritmul 4.2: Algoritmul receptorului n protocolul simplu cu conrm ari si retransmiteri.

In ace sti algoritmi am presupus c a num arul de secvent a n poate cre ste oric at de mult. In practic a, n se reprezint a pe un num ar x de bit i si ca urmare are o valoare maxim a dup a care revine la 0. Vom vedea n 4.3.3 n ce condit ii acest lucru afecteaz a corectitudinea algoritmului.

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 107

Surs a

Emit ator

Receptor

Destinat ie

Un mesaj 1 Un mesaj Un mesaj ACK al doilea 2 al doilea al doilea timeout ACK

2 al doilea

ACK al treilea 3 al treilea al treilea timeout ACK

3 al treilea

ACK

Figura 4.7: Funct ionarea corect a a unui algoritm de retrasnmisie.

c 2008, Radu-Lucian Lup sa


108 4.3. Retransmiterea pachetelor pierdute

4.3.2. Trimiterea n avans a mai multor pachete


De si corect, algorimul pas cu pas din paragraful precedent este inecient n situat ia n care timpul dus- ntors ntre emit ator si receptor este mult mai mare dec at timpul necesar emiterii unui pachet. Acest lucru se nt ampl a n cazul transmiterii unor pachete mici prin leg aturi de debit mare si la distant a mare. In aceast a situat ie, emit atorul emite repede un pachet, dup a care a steapt a (cea mai mare parte a timpului) propagarea pachetului spre destinatar si ntoarcerea conrm arii. Pentru cre sterea ecient ei, ar util ca emit atorul s a poat a trimite unul dup a altul mai multe pachete, f ar a a a stepta conrmarea primului pentru a-l trimite pe urm atorul. Timpul maxim de a steaptare pentru conrmarea unui pachet r am ane neschimbat, ns a permitem trimiterea mai multor pachete n acest timp. Trimiterea mai multor pachete n avans schimb a c ateva lucruri fat a de cazul trimiterii unui singur pachet: Deoarece la un anumit moment pot exista mai multe pachete trimise de emit ator si neconrmate, pentru a putea corela conrm arile cu pachetele de date, este necesar ca si conrm arile s a e numerotate. Exist a dou a strategii posibile: - Fiecare pachet de date este conrmat printr-un pachet de conrmare distinct, cont in and num arul de secvent a al pachetului conrmat. - Un pachet de conrmare cont ine num arul de secvent a p an a la care receptorul a primit toate pachetele. Cu alte cuvinte, un pachet de conrmare conrm a toate pachetele de date cu num ar de secvent a mai mic sau egal cu valoarea din pachetul de conrmare. Aceast a strategie permite trimiterea unui singur pachet de conrmare pentru o serie de c ateva pachete de date sosite imediat unul dup a altul. De ment ionat c a alegerea ntre aceste variante trebuie consemnat a ca parte a protocolului stabilit ntre emit ator si receptor. In urma pierderii unui pachet, receptorul poate ajunge n situat ia de-a primi un pachet f ar a s a primit mai nt ai pachetul anterior. In aceast a situat ie, receptorul nu poate livra imediat acel pachet destinat iei. Exist a dou a act iuni posibile pentru receptor: - Receptorul ignor a complet pachetul ( n consecint a, nici nu trimite conrmare). - Receptorul memoreaz a pachetul, urm and s a-l livreze destinat iei dup a primirea pachetului (sau pachetelor) anterioare.

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 109

Alegerea uneia sau a celeilate variante prive ste doar receptorul, nu este parte a protocolului de comunicat ie. Mai mult, decizia de-a memora sau de-a ignora pachetul poate luat a independent pentru ecare pachet primit de receptor, n funct ie de memoria disponibil a n acel moment. O metod a utilizat a frecvent este ca receptorul s a xeze o fereastr a de recept ie, adic a un interval de numere de secvent a acceptabile. Pentru aceasta, receptorul xeaz a la nceput un num ar k . Dac a la un moment dat toate pachetele p an a la num arul de secvent a n inclusiv au fost recept ionate si livrate destinat iei, receptorul accept a doar pachetele cu numere de secvent a situate ntre n + 1 si n + k ; acest interval constituie fereastra de recept ie. Un pachet cu num ar de secvent a mai mic sau egal cu n este sigur un duplicat, un pachet ntre n + 1 si n + k este memorat (dac a nu a fost primit deja) si conrmat, iar un pachet cu num ar de secvent a strict mai mare dec at n + k este ignorat. La primirea pachetului n + 1, fereastra este avansat a p an a la primul num ar de secvent a ce nu a fost nc a primit. Este esent ial ca un pachet, ce nu este nici memorat de receptor, nici transmis destinat iei, s a nu e conrmat. In cazul conrm arii unui astfel de pachet, este probabil ca emit atorul s a nu-l mai retransmit a niciodat a, ca urmare receptorul nu va putea s a-l furnizeze destinat iei. Emit atorul trebuie s a tin a si el evident a unei ferestre de emisie, cont in and pachete, primite de la surs a n vederea trimiterii spre receptor, dar nc a neconrmate de c atre receptor. Not and cu n primul num ar de secvent a neconrmat si cu k dimensiunea ferestrei emit atorului, fereastra emit atorului poate cont ine pachetele cu numere de la n la n + k 1. Emit atorul trimite, n mod repetat, pachetele din fereastr a, p an a ce prime ste conrm ari pentru ele. In momentul n care pachetul n este conrmat, fereastra emit atorului avanseaz a p an a la urm atorul pachet neconrmat. Din cauza ferestrelor emit atorului si receptorului, protocolul acesta se nume ste protocolul ferestrei glisante. Dac a fereastra emit atorului este de dimensiune 1, protocolul ferestrei glisante funct ioneaz a exact ca si protocolul pas cu pas din paragraful precedent. Funct ionarea protocolului ferestrei glisante, n diverse variante, este ilustrat a n gurile 4.84.10.

4.3.3. Spat iul numerelor de conrmare


Evident, n practic a, numerele de secvent a nu pot cre ste la innit. In general, numerele de secvent a sunt reprezentate pe un num ar xat de bit i si, ca urmare, au o valoare maxim a dup a care se reiau de la 0.

c 2008, Radu-Lucian Lup sa


110 4.3. Retransmiterea pachetelor pierdute

Surs a Unu

Emit ator 1 Unu

Receptor

Destinat ie

doi

2 doi ACK=1

Unu

trei

3 trei

patru

4 patru

nu e pachetul a steptat; se ignor a

2 doi

nu e pachetul a steptat; se ignor a

3 trei ACK=2 4 patru ACK=3

doi

trei

patru ACK=4

Figura 4.8: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este 1 si dimensiunea ferestrei de emisie este cel put in 3.

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 111

Surs a Unu

Emit ator 1 Unu

Receptor

Destinat ie

doi

2 doi ACK=1

Unu

trei

3 trei

patru

4 patru ACK=3 2 doi ACK=4

memoreaz a pachetul, dar nc a nu-l livreaz a destinat iei memoreaz a pachetul, dar nc a nu-l livreaz a destinat iei

doi ACK=2 trei

patru Figura 4.9: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este cel put in 3 si protocolul prevede conrmarea individual a a pachetelor.

c 2008, Radu-Lucian Lup sa


112 4.3. Retransmiterea pachetelor pierdute

Surs a Unu

Emit ator 1 Unu

Receptor

Destinat ie

doi

2 doi

Unu

trei

3 trei ACK=2

doi
conrm a dou a pachete printr-o singur a conrmare

patru

4 patru

memoreaz a pachetul, dar nc a nu-l livreaz a destinat iei

3 trei

trei ACK=4 patru

Figura 4.10: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este cel put in 2 si protocolul prevede c a un pachet de conrmare conrm a toate pachetele de date p an a la num arul de secvent a cont inut n pachet. De remarcat posibilitatea de optimizare a num arului de pachete de conrmare prin combinarea mai multor conrm ari ntr-un singur pachet (conrmarea cu num arul 2).

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 113

Pentru a preciza lucrurile, vom numi num ar de secvent a teoretic num arul de secvent a pe care l-ar avea un pachet dac a numerele de secvent a nu ar limitate si num ar de secvent a transmis num arul transmis efectiv. Num arul de secvent a transmis are ca valoare num arul de secvent a teoretic modulo n, unde n este num arul de numere de secvent a distincte disponibile. Pentru ca mecanismele de conrmare si retransmitere, descrise n 4.3.1 si 4.3.2, s a funct ioneze corect, ele trebuie modicate n a sa fel nc at s a compare efectiv numerele de secvent a teoretice. Pentru aceasta, este necesar ca, n orice moment, at at receptorul c at si emit atorul s a poat a, pe baza informat iilor pe care le au, s a deduc a univoc num arul de secvent a teoretic din num arul de secvent a transmis. Vom analiza n continuare ce relat ie trebuie s a existe ntre num arul n de valori distincte pe care le poate lua num arul de secvent a transmis si num arul de pachete trimise n avans pentru a nu exista ambiguit a ti privitor la num arul de secvent a teoretic al unui pachet de date sau de conrmare. Propozit ia 4.1 Dac a dimensiunea ferestrei emit atorului este k si dac a pachetele se pot doar pierde, f ar a s a- si poat a schimba ordinea, atunci sunt necesare si suciente 2k numere de secvent a distincte pentru identicarea univoc a a pachetelor.
Demonstrat ie. Trebuie s a ar at am trei lucruri: c a exist a ntotdeauna un interval de lungime 2k , calculabil cu datele receptorului, n care se ncadreaz a num arul de secvent a al urm atorului pachet primit de receptor, c a exist a un interval de lungime 2k n care se ncadreaz a urm atoarea conrmare primit a de emit ator si, n nal, c a dac a utiliz am doar 2k 1 numere de secvent a distincte putem da un exemplu n care apare o ambiguitate. Presupunem c a cel mai mare num ar de secvent a primit de c atre receptor este n. Deoarece emit atorul a trimis deja pachetul n, rezult a c a pachetele p an a la n k inclusiv au fost deja conrmate si deci nu vor mai trimise. Pe de alt a parte, deoarece pachetul n + 1 nc a nu a ajuns la receptor, rezult a c a acest pachet nu a fost conmat si deci receptorul nu poate trimite pachete cu numere de secvent a strict mai mari dec at n + k . Ca urmare, dac a la un moment dat cel mai mare num ar de secvent a primit de receptor este n, urm atorul num ar de secvent a primit va n intervalul [n k 1, n + k ]. S a privim acum din perspectiva emit a torului. Fie n cel mai mare num ar de secvent a trimis. Deoarece n a fost deja trimis, rezult a c a toate pachetele p an a la n k inclusiv au fost deja conrmate. In momentul primei transmiteri a pachetului n k , pachetele p an a la n 2k inclusiv erau deja conrmate. Ca urmare, nici unul dintre pachetele cu numere de secvent a mai mici sau egale cu n 2k nu a mai fost trimis ulterior primei trimiteri a

c 2008, Radu-Lucian Lup sa


114 4.3. Retransmiterea pachetelor pierdute pachetului n k . Ca urmare, dup a primirea conrm arii pachetului n k nu mai pot sosi la emit ator conrm ari ale pachetelor cu numere mai mici sau egale cu n 2k . Prin urmare, num arul urm atoarei conrm ari se va ncadra n intervalul [n 2k + 1, n]. S a ar at am acum c a 2k numere de secvent a distincte sunt ntr-adev ar necesare. Consider am dou a scenarii: 1. Emit atorul transmite pachetele de la 1 la k, toate acestea ajung la receptor, dar toate conrm arile se pierd. Emit a torul retransmite pachetul 1, care ajunge la receptor. 2. Emit atorul transmite pachetele de la 1 la k, acestea ajung la receptor, sunt conrmate si conrm arile ajung napoi la emit ator. In continuare, emit atorul transmite pachetele de la k + 1 la 2k , dar toate se pierd cu except ia pachetului 2k . Consider and doar informat iile receptorului, observ am c a n ambele cazuri acesta prime ste pachetele de la 1 la k , dup a care, n primul caz prime ste pachetul 1, iar n al doilea caz prime ste pachetul 2k . Pentru ca receptorul s a poat a distinge aceste pachete, este necesar ca acestea s a aib a numere de secvent a transmise distincte. Ca urmare, trebuie s a existe cel put in 2k valori distincte pentru num arul de secvent a transmis.

4.4. Controlul uxului


Prin controlul uxului (engl. ow control ) se nt elege procesul ( si mecanismul ce-l realizeaz a) prin care o surs a de date este fr anat a astfel nc at s a nu transmit a date cu debit mai mare dec at este capabil a destinat ia s a le prelucreze. In lipsa controlului uxului, dac a sursa emite date mai rapid dec at este capabil a destinat ia s a le prelucreze, o parte din date se pierd. De remarcat c a stocarea datelor ntr-o memorie tampon a destinat iei nu rezolv a problema, ci doar permite destinat iei s a preia, pe durat a scurt a de timp (p an a la umplerea memoriei tampon), un debit mai ridicat de date. Vom presupune n cele ce urmeaz a c a transmisia ntre emit ator si receptor este sigur a (f ar a erori si f ar a pierderi, duplic ari sau inversiuni de pachete). Forma cea mai simpl a de control al uxului este standardizarea unui debit x de transmitere a datelor si proiectarea tuturor componentelor sistemului de comunicat ie n a sa fel nc at s a poat a opera la acel debit. O astfel de abordare poate adecvat a n sisteme n timp real, cum ar de exemplu telefonia digital a. In astfel de sisteme, capacitatea de prelucrare a informat iei,

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 115

necesar a sistemului, poate anticipat a, iar surplusul de capacitate nu poate valoricat. Dac a solut ia unui debit x de transmisie nu este satisf ac atoare, este necesar un mecanism prin care receptorul s a informeze emit atorul asupra posibilit a tii sale de preluare a datelor. Pentru aceasta este necesar un al doilea canal de comunicat ie, napoi, dinspre receptor spre emit ator.

4.4.1. Cereri de suspendare si de continuare


Un mecanism primitiv de control al uxului prevede ca receptorul s a poat a trimite emit atorului cereri de suspendare a transmisiei si cereri de continuare a transmisiei. Astfel, receptorul este prev azut cu o memorie tampon. Dac a memoria tampon a receptorului este aproape plin a, receptorul trimite emit atorului un mesaj prin care cere acestuia s a suspende transmisia de date. Ulterior, c and destinat ia consum a datele din memoria tampon a receptorului, receptorul cere emit atorului s a continue transmisia. Acest mecanism este utilizat la transmisia prin linie serial a, sub numele de software ow control sau de xon/xo. Cererea de suspendare a transmisiei se face prin trimiterea unui caracter, numit uneori xo, av and codul ASCII 19. Reluarea transmisiei se cere prin transmiterea unui caracter, numit uneori xon, av and codul 17. De la un terminal text, clasic, caracterul xo se transmite tast and combinat ia ctrl-S, iar xon se transmite tast and ctrl-Q. Astfel, un utilizator lucr and la un terminal text poate tasta ctrl-S pentru a cere calculatorului oprirea trimiterii de date spre a sare si, dup a ce cite ste datele a sate, va tasta ctrl-Q pentru continuarea transmisiei. Evident, cu acest mecanism de control al uxului, caracterele cu codurile 17 si 19 nu pot utilizate pentru a transmite informat ie util a. Acela si principiu, implementat put in diferit, este mecanismul numit hardware ow control. In acest caz, semnalizarea de suspendare si reluare a transmisiei se face printr-o pereche de conductoare separat a de cea utilizat a pentru transmiterea datelor. Deoarece din momentul n care receptorul cere suspendarea transmisiei si p an a n momentul n care receptorul nu mai prime ste pachete trece o anumit a durat a de timp egal a cu durata dus- ntors pe leg atur a este necesar ca receptorul s a aib a o memorie tampon sucient de mare pentru primirea pachetelor trimise n acest interval de timp.

4.4.2. Mecanismul pas cu pas


Un alt mecanism de control al uxului presupune ca receptorul s a semnalizeze emit atorului c and este preg atit s a accepte urm atorul pachet. E-

c 2008, Radu-Lucian Lup sa


116 4.4. Controlul fluxului

mit atorul trimite un singr pachet, apoi a steapt a semnalizarea receptorului c a este preg atit s a primeasc a urm atorul pachet, apoi trimite urm atorul pachet s. a. m. d. Mecanismul este asem an ator cu mecanismul de retransmitere a pachetelor pierdute ( 4.3), ns a cu diferent a c a emit atorul a steapt a primirea ,,conrm arii f ar a a retransmite pachetul de date dac a aceast a a steptare dep a se ste o anumit a durat a. Ca si la mecanismul de retransmitere a pachetelor pierdute, trimiterea a c ate unui singur pachet urmat a de a steptarea permisiunii de a-l trimite pe urm atorul conduce la inecient a dac a durata dus- ntors este semnicativ mai mare dec at durata de transfer a unui pachet. In acest caz, se poate stabili ca receptorul s a comunice periodic emit atorului num arul de pachete pentru care mai are spat iu n memoria tampon. Emit atorul poate trimite cel mult num arul de pachete anunt at de receptor nainte de-a primi un nou anunt de disponibilitate de la acesta. Deoarece anunt ul de disponibilitate al receptorului ajunge la emit ator cu o anumit a nt arziere, timp n care emit atorul a putut trimite un num ar de pachete, este necesar ca emit atorul s a scad a din disponibilitatea anunt at a de receptor num arul de pachete trimise ntre timp. Pentru aceasta este necesar ca pachetele s a e numerotate si anunt ul de disponibilitate s a cont in a si num arul de ordine al ultimului pachet de date primit. In acest fel, dac a emit atorul prime ste un anunt de disponibilitate prin care este informat c a receptorul tocmai a primit pachetul n si are memorie pentru nc a k pachete, atunci emit atorul poate trimite cel mult pachetul n + k nainte de-a primi un nou anunt de la receptor.

4.4.3. Mecanism combinat cu retransmiterea pachetelor pierdute


S a observ am acum c a orice mecanism de retransmitere a pachetelor pierdute poate folosit, f ar a modic ari, si cu rolul de mecanism de control al uxului. Intr-adev ar, receptorul nu trebuie dec at s a ignore complet orice pachet pe care nu l poate prelua ( n particular, s a nu-i conrme primirea). In acest fel, la umplerea memoriei receptorului, pachetele trimise n continuare de emit ator nu vor conrmate. In consecint a, ele vor retransmise p an a c and destinat ia va consuma o parte dintre datele sosite la receptor, receptorul va putea prelua noi pachete de la emit ator si va conrma emit atorului primirea acestor pachete. Mecanismul este ns a destul de inecient, deoarece emit atorul repet a pachete care ajung corect la receptor. Este posibil a combinarea controlului uxului cu retransmiterea pachetelor pierdute, combin and n acela si pachet conrmarea unui pachet de date cu anunt ul de disponibilitate si utiliz and acela si num ar de secvent a pen-

c 2008, Radu-Lucian Lup sa


turii de date Capitolul 4. Nivelul lega 117

tru ambele mecanisme. Un exemplu clasic de astfel de mecanism combinat este protocolul TCP, descris pe larg n 10.3.1.

4.5. Multiplexarea n timp


In general, prin multiplexare se nt elege un procedeu prin care printrun acela si canal zic de comunicat ie se stabilesc mai multe comunicat ii care decurg relativ independent una de alta. Serviciul oferit ec arei comunicat ii este numit canal logic ; ecare comunicat ie ocup a deci c ate un canal logic si toate canalele logice sunt construite pe acela si canal zic. In 3.3.3 si 3.6.2.3 am v azut mecanisme de multiplexare ( n frecvent a, respectiv n lungime de und a) construite la nivelul zic. La nivelul leg aturii de date se poate construi un al treilea mecanism de multiplexare: multiplexarea n timp . Ideea multiplex arii n timp este de-a transmite intercalat, prin canalul zic, pe r and, pachete sau siruri de bit i apart in and ec arui canal logic. Evident, intercalarea trebuie f acut a n a sa fel nc at receptorul s a poat a separa datele corespunz atoare ec arui canal logic. De asemenea, emit atorul trebuie s a asigure o mp art ire echitabil a a capacit a tii canalului zic ntre canalele logice. Separarea datelor corespunz atoare canalelor logice se poate face prin dou a metode: Fiecare canal logic are asociat un identicator unic. Fiecare pachet are, n antet, identicatorul canalului logic c aruia i apart in datele utile (g. 4.11(b)). Se stabile ste o ordine de succesiune ntre canalele logice. Prin canalul zic se transmite, pe r and, c ate un pachet apart in and ec arui canal logic (g. 4.11(c)). De notat c a, dac a sursa unui canal logic nu transmite pachete o perioad a mai lung a de timp, trebuie ca emit atorul de la nivelul leg aturii de date s a trimit a pachete vide n contul acelui canal (pentru a permite celorlalte canale logice s a transmit a pachete f ar a a ncurca evident ele receptorului).

c 2008, Radu-Lucian Lup sa


118 4.5. Multiplexarea n timp

Surs a1

Surs a2 Multiplexor 1 D 3 Z 1 C 3 Y 2 N 1 B 3 X 2 M 1 A Demultiplexor

Surs a3

Surs a1 D C B A

Surs a2

Surs a3 Z

N M

Y X

Destinat ie 1 Destinat ie 2 Destinat ie 3


(a) Transmisie f ar a multiplexare

Destinat ie 1 Destinat ie 2 Destinat ie 3


(b) Multiplexare cu etichetarea pachetelor

Surs a1

Surs a2 Multiplexor D C Z B NY A MX Demultiplexor

Surs a3

Destinat ie 1 Destinat ie 2 Destinat ie 3


(c) Multiplexare cu ordine x a a canalelor logice

Figura 4.11: Funct ionarea mecanismelor de multiplexare n timp

c 2008, Radu-Lucian Lup sa


119

Capitolul 5

Nivelul ret ea si nivelul transport

Dac a ni ste dispozitive, relativ numeroase sau ntinse pe distant e mari, trebuie s a poat a comunica ecare cu ecare, este adesea prea costisitor s a se construiasc a c ate o leg atur a zic a ntre ecare dou a dispozitive. Este necesar n acest caz s a se poat a stabili comunicat ii ntre dispozitive ntre care nu exist a o leg atur a zic a direct a dar exist a leg aturi indirecte prin intermediul unui sir de dispozitive legate zic ecare cu urm atorul. O ret ea de comunicat ie este un ansamblu de dispozitive care permit stabilirea de comunicat ii indirecte. Intr-o ret ea de comunicat ie numim: nod: orice dispozitiv ce particip a activ n ret ea. leg atur a direct a: orice leg atur a ntre noduri, utilizabil a de c atre nivelul ret ea; dou a noduri ntre care exist a o leg atur a direct a se numesc vecini . nod nal sau stat ie (engl. host ): un nod care este surs a sau destinat ie pentru date; nod intermediar sau ruter (engl. router ): un nod ce poate tranzitat de trac ce nu are ca surs a sau destinat ie acel nod; uneori este numit, n mod incorect, server. adres a de ret ea sau, simplu, adres a : un identicator (un sir de simboluri) ce identic a unic un nod al ret elei. Fiecare nod terminal trebuie s a aib a cel put in o adres a; nodurile intermediare nu au ntotdeauna adrese. drum sau rut a : o secvent a de noduri, ecare vecin cu urm atorul, mpreun a cu leg aturile directe dintre ele. Not am c a n unele ret ele exist a o distinct ie net a ntre nodurile nale si nodurile intermediare: de exemplu n ret eaua telefonic a, aparatele telefonice

c 2008, Radu-Lucian Lup sa


120 Capitolul 5. Nivelul ret ea si nivelul transport

sunt noduri nale iar centralele telefonice sunt noduri intermediare. In alte ret ele, unele sau toate nodurile sunt simultan noduri nale si noduri intermediare. Unei ret ele i se asociaz a un graf, construit astfel: ec arui nod al ret elei i se asociaz a un v arf al grafului, iar ec arei leg aturi directe i se asociaz a o muchie (sau un arc, dac a leg aturile sunt asimetrice). Ret eaua trebuie s a e astfel construit a nc at graful asociat ei s a e conex (respectiv tare conex), altfel, evident, vor exista perechi de noduri ce nu vor putea comunica. Funct ia principal a a nodurilor ret elei este aceea de-a retransmite datele, asigur and continuitatea transportului lor de la nodul surs a la nodul destinat ie. Realizarea acestei funct ii va studiat a n 5.1. Pentru retransmiterea datelor spre destinat ie, ecare nod trebuie s a decid a c arui vecin s a retransmit a datele; problema lu arii aceastei decizii se nume ste problema dirij arii (engl. routing ) si va studiat a n 5.2. In nal, n 5.3 vom studia problemele ce apar atunci c and solicitarea ret elei este ridicat a (nu este neglijabil a fat a de capacitatea nodurilor si leg aturilor utilizate).

5.1. Retransmiterea datelor de c atre nodurile intermediare


Vom studia n cele ce urmeaz a, pe scurt, activitatea nodurilor ntr-o ret ea. Problema determin arii urm atorului nod de pe drumul spre o anumit a destinat ie (problema dirij arii) va studiat a mai t arziu, n 5.2. Constructiv, ntr-un nod al unei ret ele trebuie s a existe urm atoarele componente (vezi gura 5.1): Adaptarea spre leg atura zic a, pentru ecare leg atur a zic a ce pleac a din nod, este o component a care realizeaz a transmisia si recept ia datelor prin acea leg atur a. Aceasta este format a din modulul nivelului leg aturii de date si din modulul nivelului zic. Adaptarea spre aplicat ie, pentru nodurile terminale, este o component a ce realizeaz a intermedierea ntre serviciile oferite direct de nivelul ret ea si nevoile aplicat iilor ce se execut a pe acel nod. Aceasta este, de principiu, modulul nivelului transport. Modulul de ret ea este componenta care dirijeaz a uxul de date prin nod, ind responsabil de alegerea vecinului c aruia trebuie s a-i e transmise datele, precum si de transmiterea efectiv a a acestora c atre modulul de adaptare spre mediul zic ( n nodurile intermediare) sau, respectiv, c atre modulul de adaptare spre aplicat ie ( n nodul destinat ie).

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 121

Nivelul ret ea este ansamblul modulelor de ret ea ale nodurilor ret elei.
Nod nal Aplicat ie Adaptare aplicat ie Modul de ret ea Adaptare legatur a zic a Modulul de ret ea Adaptare Adaptare legatur a legatur a zic a zic a Nod intermediar Nod nal Aplicat ie Adaptare aplicat ie Modul de ret ea Adaptare legatur a zic a Nivelul aplicat ie Nivelul transport Nivelul ret ea Nivelul leg aturii de date si nivelul zic

Legatur a zic a

Legatur a zic a

Figura 5.1: Modulele nodurilor unei ret ele. Sunt gurate doar modulele din trei noduri, de-a lungul traseului datelor ntre dou a aplicat ii.

Un ansamblu de calculatoare constituie o ret ea dac a si numai dac a graful nodurilor si leg aturilor directe este conex (tare conex, dac a leg aturile pot asimetrice), si n plus modulele de ret ea ale tuturor nodurilor pot comunica printr-un protocol comun. In lipsa unui protocol comun ntre modulele de ret ea nu se poate stabili comunicat ia ntre oricare dou a noduri nale ntr-un mod uniform, f ar a ca aplicat ia client s a trebuiasc a s a aibe cuno stint e despre nodurile intermediare. Din acest punct de vedere spunem c a nivelul ret ea, si n special protocolul utilizat de nivelul ret ea, este liantul ntregii ret ele. Dup a serviciul oferit, o ret ea poate cu datagrame (numite uneori pachete ) sau cu conexiune : datagrame: Intr-o ret ea ce ofer a serviciu tip datagrame, aplicat ia surs a creaz a o datagram a cont in and datele de transmis si o paseze modulului ret ea, specic and totodat a adresa nodului destinat ie. Datagrama este transmis a din aproape n aproape p an a la nodul destinat ie, unde este pasat a aplicat iei (vezi 5.1.1). De remarcat c a dou a datagrame distincte generate de acela si nod surs a si adresate aceluia si nod destinat ie sunt prelucrate, de c atre ret ea, complet independent una de alta. Funct ionarea ret elelor ce ofer a servicii de tip datagrame este similar a sistemului de po st a (po sta obi snuit a). conexiune: Intr-o ret ea ce ofer a serviciu de tip conexiune, o aplicat ie ce dore ste s a comunice cu o aplicat ie dintr-un alt nod ncepe prin a so-

c 2008, Radu-Lucian Lup sa


122 tre nodurile intermediare 5.1. Retransmiterea datelor de ca

licita modulului ret ea deschiderea unei conexiuni c atre acel nod. Nivelul ret ea informeaz a nodul destinat ie despre cererea de deschidere a conexiunii si, dac a aplicat ia destinat ie accept a, conexiunea este deschis a si nodul init iator este informat de acest lucru. Dup a deschiderea conexiunii, unul sau ambele noduri ( n funct ie de tipul conexiunii deschise, unidirect ional a sau bidirect ional a) poate transmite celuilalt pachete de date prin conexiunea deschis a. La terminarea comunicat iei, una dintre aplicat ii solicit a nivelului ret ea nchiderea conexiunii. Ca efect, nivelul ret ea informeaz a nodul partener cu privire la nchiderea conexiunii si elibereaz a resursele alocate conexiunii. Funct ionarea ret elelor ce ofer a serviciu de tip conexiune este descris a n 5.1.2. Un model tipic de ret ea ce ofer a conexiuni este sistemul telefonic.

5.1.1. Retransmiterea n ret ele bazate pe datagrame


Vom studia n cele ce urmeaz a activitatea unui nod ntr-o ret ea ce ofer a transport de datagrame. O datagram a este format dintr-un antet si datele utile. Antetul cuprinde mai multe informat ii utile n vederea dirij arii. Informat ia ce nu poate lipsi din antet este adresa destinatarului. Modulul de ret ea al nodului prime ste o datagram a e de la nivelul superior (dinspre aplicat ie), e de la nivelul inferior (de pe o leg atur a direct a). Modulul de ret ea memoreaz a temporar datagrama primit a. In continuare, el are de f acut dou a lucruri: s a determine dac a datagrama este destinat a nodului curent, iar dac a nu, care este urm atorul vecin direct pe ruta spre destinat ie; s a init ieze efectiv transmisia datagramei. Dac a leg atura prin care trebuie trimis a datagrama este nc a ocupat a cu transmiterea unei datagrame anterioare, datagrama trebuie pus ntr-o coad a de a steptare. Se poate nt ampla ca memoria utilizabil a pentru coada de a steptare s a se epuizeze, caz n care este necesar a sacricarea unora dintre datagramele din coad a sau refuzul primirii unor datagrame noi. Detalii cu privire la operarea ret elei n acest caz sunt date n 5.3.

5.1.2. Retransmiterea n ret ele bazate pe conexiuni


Intr-o ret ea bazat a pe conexiuni, activitatea este mp art it a n dou a sarcini: stabilirea si desfacerea conexiunilor, pe de o parte, si transmiterea efectiv a a datelor pe conexiuni, pe de alt a parte. Deschiderea conexiunii ncepe print trimiterea, de c atre nodul terminal ce dore ste init ierea conexiunii, a unei cereri c atre primul nod intermediar.

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 123

Fiecare nod intermediar, pe r and, determin a nodul urm ator prin care trebuie s a treac a conexiunea si-i trimite mai departe cererea de deschidere a conexiunii. Determinarea nodului urm ator se face la fel ca si n cazul ret elelor bazate pe datagrame (vezi 5.2). Dup a determinarea nodului vecin, nodul curent memoreaz a n tabela conexiunilor deschise nodul astfel ales. Conexiunea este deschis a n momentul n care cererea de deschidere a conexiunii ajunge si este acceptat a de nodul destinat ie. Odat a conexiunea deschis a, drumul corespunz ator ntre cele dou a noduri nale este xat pe toat a durata conexiunii. In faza de comunicare prorpiu-zis a, exist a dou a metode prin care se poate realiza tranzitarea tracului prin ecare nod intermediar: Comutare de circuite zice : In acest caz, mediul prin care intr a datele n nod este conectat zic (de exemplu, cu ajutorul unui ntrerup ator electric) la mediul prin care trebuie trimise mai departe datele (vezi g. 5.2). Aceasta metod a, amintit a aici doar pentru completudine, nu se mai utilizeaz a n prezent (a fost utilizat a n ret elele telefonice vechi, analogice).
X A B C
1 2 1 2 1 2 3

Y A

B Figura 5.2: O ret ea cu comutare de circuite zice. Cercurile mari reprezint a nodurile intermediare, iar liniile punctate reprezint a interconect arile mediilor zice. De remarcat necesitatea mai multor leg aturi zice ntre c ate dou a noduri.

Comutare de circuite virtuale : Fiecare pachet ce sose ste printr-o leg atur a de date este memorat temporar si apoi retransmis prin leg atura spre urm atorul nod. S a remarc am c a, n ambele cazuri, o leg atur a ntre dou a noduri este

c 2008, Radu-Lucian Lup sa


124 tre nodurile intermediare 5.1. Retransmiterea datelor de ca

asociat a unei singure conexiuni; dou a conexiuni nu pot utiliza (direct) o aceea si leg atur a. (Din acest motiv, n sistemul telefonic vechi, ntre dou a centrale telefonice erau duse n paralel mai multe perechi de conductoare, num arul de convorbiri simultane utiliz and o rut a trec and prin cele dou a centrale ind limitat la num arul de perechi de conductoare.) Deoarece, n special pe distant e mari, mediul zic este scump, se utilizeaz a mecanisme de multiplexare. Acestea pot lucra e la nivel zic (multiplexare n frecvent a 3.3.3 sau n lungimea de und a 3.6.2.3), e la nivelul leg aturii de date (multiplexare n timp, 4.5). Mai remarc am c a multiplexarea n timp poate utilizat a doar n sistemele cu comutare de circuite virtuale. La utilizarea comut arii de circuite virtuale mpreun a cu multiplexarea n timp, un nod care a primit un pachet trebuie s a-l memoreze p an a c and i vine r andul s a e transmis mai departe prin leg atura de ie sire, adic a p an a c and, n leg atura zic a de ie sire, vine r andul la transmisie canalului logic prin care trebuie trimis pachetul.
X A B C XZ ZY C XY Y A

B Figura 5.3: O ret ea cu comutare de circuite virtuale. Desf a surarea n timp a recept iei si transmitere mai departe a pachetelor, pentru nodul X , este prezentat a n gura 5.4. Leg aturile directe ntre nodurile intermediare utilizeaz a multiplexare n timp.

Inchiderea conexiunii se face prin transmiterea unui pachet special de cerere a nchiderii conexiunii. Acest pachet urmeaz a aceea si rut a ca si pachetele normale de date. Fiecare nod de pe traseu, la primirea pachetului, sterge conexiunea respectiv a din tabelul conexiunilor si elibereaz a resursele alocate. Comutarea de circuite virtuale seam an a la prima vedere cu transmisia

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport A a1
1

125

a2
1

a3
1

b1
1

b2
1

b3
1

c1
1

c2
1

c3
1

XY

a1
1 2

c1 a2
3 1 2

c2 a3
3 1 2

c3
3

XZ

b1
1 2

b2
1 2

b3
1 2

timpul Figura 5.4: Desf a surarea n timp a recept iei si a transmiterii mai departe a pachetelor, pentru nodul X din ret eaua din gura 5.3. XY si XZ desemneaz a leg aturile zice ntre nodurile X si Y , respectiv X si Z . Numerele de sub axe marcheaz a perioadele de timp alocate canalelor logice corespunz atoare. Leg aturile dintre canalele virtuale de intrare si de ie sire sunt identice cu leg aturile zice din gura 5.2

de datagrame. Diferent a vine din felul n care un nod, care prime ste un pachet si trebuie s a-l trimit a mai departe, ia decizia privind leg atura prin care s a-l trimit a. In cazul comut arii de circuite virtuale, decizia este luat a n funct ie de circuitul virtual c aruia i apart ine pachetul, informat ie dedus a din leg atura de date prin care a intrat pachetul. Decizia se ia pe baza tabelei de circuite si este identic a pentru toate pachetele apart in and aceluia si circuit. O urmare a acestui fapt este c a defectarea oric arui nod sau oric arei leg aturi de-a lungul unei conexiuni duce la nchiderea fort at a a conexiunii. In cazul ret elei bazate pe datagrame, decizia de dirijare se ia n funct ie de adresa destinat ie, cont inut a n datagram a. Dou a datagrame ntre acelea si dou a stat ii pot dirijate pe rute diferite.

5.2. Algoritmi de dirijare


Ne vom ocupa n continuare de modul n care un nod decide spre care dintre vecini s a trimit a o datagram a ( n cazul ret elelor bazate pe datagrame), respectiv spre care dintre vecini s a transmit a cererea de init iere a unei conexiuni ( n cazul ret elelor bazate pe conexiuni). Problema determin arii acestui nod vecin se nume ste problema dirij arii.

c 2008, Radu-Lucian Lup sa


126 5.2. Algoritmi de dirijare

Rezolvarea problemei dirij arii se bazeaz a pe determinarea unui drum de cost minim, de la nodul surs a la nodul destinat ie al datagramei sau al conexiunii, n graful asociat ret elei de calculatoare. Graful asociat ret elei de calculatoare este un graf ce are c ate un v arf asociat ec arui nod al ret elei si c ate o muchie asociat a ec arei leg aturi directe ntre dou a noduri. Fiec arei muchii i se asociaz a un cost, exist and urm atoarele posibilit a ti pentru denirea costului: toate costurile egale; n funct ie de lungimea zic a a leg aturii (cu c at o leg atur a este mai lung a, cu at at costul asociat este mai mare); n funct ie de capacitatea leg aturii; n funct ie de nc arcarea leg aturii. Remintim, din teoria grafelor, o proprietate important a a drumurilor de cost minim: Dac a v0 , v1 , . . . , vj 1 , vj , vj +1 , . . . , vk este un drum de cost minim de la v0 la vk , atunci v0 , v1 , . . . , vj 1 , vj este un drum de cost minim de la v0 la vj si vj , vj +1 , . . . , vk este un drum de cost minim de la vj la vk . De asemenea, dac a exist a cel put in un drum de cost minim de la v0 la vk ce trece prin vj , dac a v0 , v1 , . . . , vj 1 , vj este un drum de cost minim de la v0 la vj si vj , vj +1 , . . . , vk este un drum de cost minim de la vj la vk , atunci v0 , v1 , . . . , vj 1 , vj , vj +1 , . . . , vk este drum de cost minim de la v0 la vk . Aceast a proprietate st a la baza algoritmilor de determinare a drumului minim ntr-un graf. In consecint a, dac a un pachet de la un nod v0 spre un nod vk ajunge la un nod vj , nodul urm ator, dup a vj , de pe drumul de cost minim de la v0 spre vk depinde doar de vk , nu si de v0 . Ca urmare, pentru a efectua retransmiterea datelor, ecare nod vj trebuie s a cunoasc a doar, pentru ecare destinat ie posibil a vk , urm atorul v arf vj +1 de pe drumul optim spre acea destinat ie. Corespondent a, pentru ecare vj , ntre destinat ia vk si nodul urm ator vj +1 poart a denumirea de tabel a de dirijare . Pentru a putea aplica direct un algoritm clasic de determinare a drumurilor de cost minim, este necesar a centralizarea datelor despre nodurile si leg aturile din ret ea, n vederea obt inerii efective a grafului ret elei. Dup a calculul drumurilor, este necesar a distribuirea tabelelor de dirijare c atre toate nodurile ret elei. Intr-o ret ea mic a, centralizarea informat iilor despre leg aturi si apoi distribuirea informat iilor de dirijare c atre noduri se poate face manual, de c atre administratorul ret elei.

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 127

In ret elele mai mari, acest proces trebuie automatizat (total sau part ial). Deoarece nu este de dorit oprirea complet a a ret elei oridec ateori se modic a vreo leg atur a, trebuie luate m asuri ca timpul scurs de la modicarea leg aturilor p an a la actualizarea a regulilor de dirijare pe toate nodurile s a e scurt si funct ionarea ret elei n acest timp s a e acceptabil a. Metodele principale de calcul pentru tabelele de dirijare sunt descrise n 5.2.1 si 5.2.2. In ret elele foarte mari, cum ar Internet-ul, centralizarea complet aa datelor nu este rezonabil a; trebuie utilizat i algoritmi de dirijare care s a permit a ec arui nod efectuarea dirij arii f ar a a necesita dec at put ine informat ii si doar despre o mic a parte a ret elei. De asemenea, tabela de dirijare trebuie s a aib a o reprezentare mai compact a dec at c ate un r and pentru ecare nod destinat ie posibil. In astfel de cazuri se utilizeaz a dirijarea ierarhic a ( 5.2.3). Exist a si metode ad-hoc de dirijare, utilizate n diverse situat ii mai deosebite, de exemplu dac a graful asociat ret elei de calculatoare are anumite particularit a ti. Acestea vor studiate n 5.2.4.

5.2.1. Calculul drumurilor cu informat ii complete despre graful ret elei


In cadrul acestei metode, ecare nod al ret elei adun a toate informa tiile despre graful asociat ret elei, dup a care calculeaz a drumurile de la el la toate celelalte noduri. Pentru ca ecare nod s a dispun a n permanent a de graful asociat ret elei de calculatoare, ecare modicare a ret elei trebuie anunt at a tuturor nodurilor. Pentru aceasta, ecare nod testeaz a periodic leg aturile cu vecinii s ai si, oridec ateori constat a o modicare, transmite o n stiint are n toat a ret eaua. Transmisia informat iei respective se face astfel: Fiecare nod creaz a, periodic, un pachet ce cont ine numele nodului, starea leg aturilor cu vecinii (costurile actuale ale leg aturilor), precum si un num ar de secvent a (num ar care tot cre ste de la un astfel de pachet la urm atorul). Apoi transmite acest pachet tuturor vecinilor, printr-un protocol sigur (cu conrmare si retransmitere). Fiecare nod ce prime ste un pachet descriind starea leg aturilor veric a dac a este sau nu mai recent (adic a cu num ar de secvent a mai mare) dec at ultimul astfel de pachet primit de la acel nod. Dac a este mai recent, l trimite tuturor vecinilor (mai put in celui dinspre care a venit pachetul) si actualizeaz a reprezentarea proprie a grafului ret elei. Dac a pachetul este mai vechi, nseamn a c a este o copie ce a sosit pe alt a cale si este ignorat.

c 2008, Radu-Lucian Lup sa


128 5.2. Algoritmi de dirijare

Calculul drumurilor de cost minim de la un v arf la toate celelalte este o problem a clasic a n teoria grafelor. Dac a toate costurile sunt pozitive condit ie ndeplinit a de graful asociat unei ret ele de calculatoare algoritmul cel mai ecient este algoritmul lui Dijkstra (algoritmul 5.1). Not and cu n num arul de v arfuri (noduri ale ret elei) si cu m num arul de muchii (leg aturi directe), complexitatea algoritmului lui Dijkstra este timp O(m + n log n) si spat iu O(m + n). Calculul trebuie ref acut complet la ecare modicare a grafului asociat ret elei de calculatoare.

5.2.2. Calculul drumurilor optime prin schimb de informat ii de distant a


Aceast a metod a (vezi algoritmul 5.2) este inspirat a din algoritmul Bellman-Ford de determinare a drumurilor de cost minim ntr-un graf, ns a calculele sunt repartizate ntre nodurile ret elei de calculatoare n a sa fel nc at nici un nod s a nu aib a nevoie de informat ii complete despre graf. Metoda se nume ste cu vectori distant a deoarece prevede transmiterea, de la ecare nod la vecinii s ai direct i, a unor vectori reprezent and distant ele de la nodul curent la toate celelalte noduri. Algoritmul prevede c a ecare nod det ine o tabel a cont in and, pentru ecare destinat ie posibil a, distant a p an a la ea si primul nod de pe drumul optim spre acea destinat ie. Init ial, tabelul este init ializat astfel: pentru vecinii direct i, costul drumului este pus ca ind costul leg aturii directe spre acel nod, iar primul nod spre acea destinat ie este xat chiar acel nod; pentru nodurile ce nu sunt vecini direct i, costul este init ializat cu innit. Dup a initializare, nodurile recalculeaz a periodic tabelele de distant e. Pentru ecare nod, calculul se face astfel: mai nt ai, nodul cere vecinilor direct i tabelele acestora. Apoi, pentru ecare destinat ie posibil a, drumul optim este calculat ca ind cel mai put in costisitor dintre leg atura direct a si drumurile prin ecare dintre vecinii direct i. Costul drumului printr-un vecin direct este calculat ca ind costul leg aturii dintre nodul curent si vecinul considerat adunat cu costul, conform tabelei vecinului, al drumului de la vecinul respectiv la nodul destinat ie. De remarcat c a, n calculul tabelei de distant e a unui nod, nu se utilizeaz a deloc tabela de distant e a acelui nod de la iterat ia precedent a. Dup a c ateva iterat ii ale buclei principale, algoritmul se stabilizeaz a (converge), n sensul c a tabelele calculate la ecare iterat ie sunt identice cu cele calculate la iterat ia precedent a. Num arul de iterat ii p an a la stabilizare este egal cu num arul cel mai mare de muchii de-a lungul vreunui drum optim. Dup a stabilizare, algoritmul este l asat n continuare s a se execute

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 129

Algoritmul Dijkstra intrarea: G = (V, E ) graf orientat (E V V ) c : E [0, ) costurile asociate arcelor x0 V v arful curent ie sirea: t : V {(x0 , y ) E } tabela de dirijare; t(x) este leg atura direct a prin care x0 trebuie s a trimit a pachetele destinate lui x. algoritmul: pentru i V execut a d[i]: = sf ar sit pentru d[x0 ]: = 0 Q: = V c at timp Q = execut a e v Q elementul din Q pentru care d[v ] este minim Q: = Q \ {v } pentru y Q : (v, y ) E execut a dac a d[v ] + c(v, y ) < d[y ] atunci d[y ]: = d[v ] + c(v, y ) dac a v = x0 atunci t(y ): = (x0 , y ) altfel t(y ): = t(v ) sf ar sit dac a sf ar sit dac a Q: = Q {y } sf ar sit pentru sf ar sit c at timp sf ar sit algoritm
Algoritmul 5.1: Algoritmul lui Dijkstra cu ad augirea pentru calculul tabelei de dirijare.

c 2008, Radu-Lucian Lup sa


130 5.2. Algoritmi de dirijare

Algoritmul Vector dist intrarea: V mult imea de noduri a ret elei; x nodul curent; N out (i) mult imea vecinilor direct i ai lui i; (ci,j )i,j V costurile leg aturilor directe; ci,j = dac a i N out (i); ecare nod x cunoa ste doar (cx,j )j V . ie sirea: (di,j )i,j V costurile drumurilor optime; ecare nod va calcula doar (dx,j )j V ; (pi,j )i,j V primul nod, dup a i, pe drumul optim de la i la j . algoritmul: pentru i V execut a dx,i :=cx,i sf ar sit pentru c at timp adev arat execut a obt ine de la vecinii direct i di,j , pentru i N out (i) pentru j V execut a dx,j :=min(cx,j , min )cx,i + di,j
iN out (x)

px,i := vecinul pentru care s-a obt inut minimul sf ar sit pentru sf ar sit c at timp sf ar sit algoritm
Algoritmul 5.2: Algoritmul de dirijare cu vectori distant a

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 131

pentru ca, dac a ulterior se modic a leg aturile directe, s a actualizeze n continuare tabelele de dirijare. Dealtfel, este destul de dicil de determinat, n interiorul algoritmului, momentul n care s-a produs stabilizarea. Dac a apare o leg atur a direct a nou a sau dac a scade costul unei leg aturi directe existente, tabelele de dirijare se stabilizeaz a din nou dup a un num ar de iterat ii cel mult egal cu num arul maxim de muchii de-a lungul unui drum optim. Dac a se elimin a o leg atur a direct a sau cre ste costul unei leg aturi directe, tabelele de dirijare se stabilizeaz a mult mai ncet, a sa cum se vede n exemplul 5.2.
A 2 B 21 20 D 3 5 C

Figura 5.5: Ret eaua pentru exemplele 5.1 si 5.2. Numerele reprezint a costurile asociate leg aturilor directe.

Exemplul 5.1: Fie ret eaua din gura 5.5. Calculul tabelelor de dirijare, conform algoritmului 5.2, de la init ializare p an a la stabilizare, duce la urm atoarele tabele: Init ializarea: In aceast a faz a, sunt luate n considerare doar leg aturile directe; dac a un nod nu este accesibil direct, ruta p an a la acesta este marcat a ca av and cost innit. Nodul B: Nodul C: Nodul A: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A C C C 5 B B 5 D D 21 D D 20 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Iterat ia 1: Pentru ecare destinat ie posibil a, se ia n considerare leg atura direct a (dac a exist a) si rutele prin ecare din vecinii direct i. Costul leg aturii directe este cunoscut, iar costul rutei printr-un vecin este costul leg aturii spre acel vecin plus costul raportat de acel vecin. De exemplu, nodul B ia n considerare ca rute spre D: leg atura direct a de cost 20,

c 2008, Radu-Lucian Lup sa


132 5.2. Algoritmi de dirijare

leg atura prin A de cost 2+21=23 si leg atura prin C de cost 5+3=8; cea mai bun a este cea prin C. Ca alt exemplu, nodul A are urm atoarele rute spre D: leg atura direct a de cost 21 si leg atura prin B de cost 2+20=22; de notat c a pentru leg atura prin B se ia costul BD raportat de B, calculat de c atre B la init ializare. Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D D 21 D C 8 D D 3 Nodul D: dest. via cost A A 21 B C 8 C C 3 Iterat ia 2: S a urm arim ruta calculat a de A c atre D. Sunt luate n considerare leg atura direct a de cost 21 si leg atura prin B a c arui cost este acum 2+8=10 ntruc at se bazeaz a pe costul leg aturii BD calculat de c atre B la iterat ia 1. Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D B 10 D C 8 D D 3 Nodul D: dest. via cost A C 10 B C 8 C C 3 Incep and cu iterat ia 3, tabelele calculate sunt identice cu cele de la itaret ia 2. Exemplul 5.2: Fie ret eaua din gura 5.5 si e tabelele de dirijare rezultate dup a stabilizarea algoritmului cu vectori distant a (vezi exemplul 5.1). S a presupunem c a leg atura BC cade, rezult and ret eaua din gura 5.6. S a urm arim evolut ia, n continuare, a tabelelor de dirijare. La prima iterat ie, la recalcularea rutelor nodului B spre C si spre D, nodul B ia n calcul rute prin A sau prin D. Rutele optime g asite sunt cele prin A, bazate pe vechile tabele ale lui A; nodul B nu are cum s a determine

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport A 2 B 21 20 D 3 C 133

Figura 5.6: Ret eaua rezultat a prin c aderea leg aturii BC din ret eaua din gura 5.6.

c a aceste rute nu mai sunt valide deoarece se bazau pe leg atura BC. La fel procedeaz a si nodul C, g asind c a rutele optime spre A si B trec prin D. Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 7 10 cost 10 8 3 Nodul dest. A C D B: via A A A cost 2 9 12 Nodul dest. A B D C: via D D D cost 13 11 3

La urm atoarea iterat ie se vor modica costurile rutelor din A spre C si D si din D spre A si B: Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 11 14 cost 16 14 3 Nodul dest. A C D B: via A A A cost 2 9 10 Nodul dest. A B D C: via D D D cost 13 11 3

In continuare, costurile aparente ale rutelor cresc de la o iterat ie la alta, p an a c and ajung la valorile rutelor reale optime. La a 3-a iterat ie de la c aderea leg aturii BC, tabelele ajung n forma urm atoare:

c 2008, Radu-Lucian Lup sa


134 5.2. Algoritmi de dirijare

Nodul B: Nodul C: A: via cost dest. via cost dest. via cost B 2 A A 2 A D 19 B 11 C A 13 B D 17 B 14 D A 14 D D 3 D: via cost C 16 C 14 C 3 Urmeaz a, la a 4-a iterat ie, descoperirea de c atre D a rutelor reale spre A si spre B: Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A D 19 C B 15 C A 13 B D 17 D B 18 D A 14 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Restul rutelor reale sunt descoperite si mai t arziu, stabilizarea tabelelor survenind abia la a 8-a iterat ie. Nodul dest. B C D Nodul dest. A B C In general, num arul de iteratii dup a care se stabilizeaz a tabelele dup a c aderea sau cre sterea costului unei leg aturi poate cel mult egal cu raportul dintre cea mai mare cre stere de cost ntre dou a noduri si cel mai mic cost al unei leg aturi directe. In cazul exemplului 5.2, costul drumului optim de la B la C cre ste, prin c aderea leg aturii directe BC, de la 5 la 23, o cre stere de 18 unit a ti. Costul cel mai mic al unei leg aturi directe este 2 (leg atura AB). ii. In cazul Ca urmare, stabilizarea tabelelor poate lua cel mult 18 2 = 9 iterat n care c aderea unei leg aturi duce la deconectarea ret elei, acest lucru nu va detectat niciodat a, num arul de iterat ii necesar ind innit. Pentru a mbun at a ti comportamentul n cazul c aderii sau cre sterii costului leg aturilor, se poate modica algoritmul astfel: tabelele vor tine ruta complet a spre destinat ie, iar la recalcularea rutelor, rutele ce trec de dou a ori prin acela si nod nu sunt luate n considerare. Exemplul 5.3: S a relu am ret eaua din exemplul 5.2, cu memorarea ntregului

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 135

drum n tabela de distant e. Dup a stabilizarea tabelelor pe ret eaua din gura 5.5, se obt in urm atoarele tabele: Nodul dest. B C D Nodul dest. A B C A: ruta B B,C B,C,D D: ruta C,B,A C,B C Nodul dest. A C D B: ruta A C C,D Nodul dest. A B D C: ruta B,A B D

cost 2 7 10 cost 10 8 3

cost 2 5 8

cost 7 5 3

Dup a c aderea leg aturii BC (g. 5.6), evolut ia tabelelor de dirijare are loc dup a cum urmeaz a: Iterat ia 1: S a consider am drumurile posibile de la nodul B spre nodul C. Leg atur a direct a nu exist a. Drumul prin A ncepe cu muchia AB si continu a cu ruta din tabela, de la iterat ia anterioar a, a lui A, adic a drumul ABC. Prin urmare, drumul prin A este BABC si este respins datorit a repet arii v arfului B. De ment ionat c a nu se face vreo vericare n urma c areia s a se observe c a drumul BABC cont ine muchia inexistent a BC; din lipsa unor informat ii globale, este imposibil de prins toate cazurile de utilizare a unor muchii inexistente. Drumul de la B la C prin D este BDC, de cost 20+3=23; acesta este singurul candidat, ca urmare este ales ca rut a optim a de la B la C. Analog, n calculul rutei de la B la D, ruta prin A, anume BABCD, este respins a si, ca urmare, r am ane s a e aleas a doar leg atura direct a BD. La calculul rutei de la C la A, ar exista o singur a posibilitate, prin nodul D, ns a aceasta conduce la drumul CDCBA care este respins din cauza repet arii nodului C. Ca urmare, nodul C marcheaz a lipsa rutei pun and costul . Analog, se determin a inexistent a vreunei rute valide de la C la B. Nodul B: Nodul C: Nodul A: dest. ruta cost dest. ruta cost dest. ruta cost B B 2 A A 2 A C B,C 7 C D,C 23 B D B,C,D 10 D D 20 D D 3

c 2008, Radu-Lucian Lup sa


136 5.2. Algoritmi de dirijare

Nodul D: dest. ruta cost A C,B,A 10 B C,B 8 C C 3 Iterat ia 2: Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3 Iterat ia 3: Se stabilizeaz a Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3

Nodul dest. A C D

B: ruta A D,C D

cost 2 23 20

Nodul dest. A B D

C: ruta D

cost 3

tabelele. Nodul B: dest. ruta A A C D,C D D

cost 2 23 20

Nodul dest. A B D

C: ruta D,A D,B D

cost 24 23 3

5.2.3. Dirijarea ierarhic a


Dirijarea ierarhic a se aplic a cu prec adere n ret elele foarte mari, unde este imposibil ca ecare nod s a aib a informat ii despre toate celelalte noduri. Exemple clasice de astfel de ret ele sunt Internet-ul si ret eaua telefonic a. Ideea dirij arii ierarhice este ca ret eaua s a e mp art it a n subret ele . Subret elele alc atuiesc o ierarhie arborescent a: o subret ea r ad acin a (considerat a pe nivelul 0), c ateva subret ele subordonate ei (nivelul 1), subret ele subordonate c ate unei subret ele de pe nivelul 1 (alc atuind nivelul 2), s. a. m. d. Fiecare nod are informat ii de dirijare: c atre nodurile din subret eaua proprie, individual pentru ecare nod;

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 137

c atre subret eaua imediat superioar a ierarhic: o singur a rut a, comun a, pentru toate nodurile din acea subret ea, ruta conduc and spre cel mai apropiat c atre ecare din subret elele imediat inferioare ierarhic, c ate o rut a pentru ecare subret ea. Ruta de la un nod init ial c atre o subret ea vecin a subret elei nodului init ial este ruta de la nodul init ial c atre cel mai apropiat nod de la granit a dintre cele dou a subret ele. Fiecare subret ea este sucient de mic a, astfel nc at, n interiorul ec arei subret ele, calculul rutelor se face prin metode de dirijare ,,obi snuite. Pentru ca orice nod s a poat a determina din ce subret ea face parte nodul destinat ie a unui pachet, precum si localizarea subret elei respective n ierarhie, adresa ec arui nod este astfel construit a nc at s a descrie pozit ia nodului n ierarhia de ret ele. Astfel, adresele sunt formate din componente, prima component a identic and subret eaua de nivel 1 din care face parte sau c areia i este subordonat nodul, urm and identicatorul subret elei de nivel 2, s. a. m. d., ncheind cu identicatorul nodului n cadrul subret elei din care face parte. De remarcat c a, n general, dirijarea ierarhic a nu conduce la drumul optim c atre destinat ie. Aceasta deoarece n dirijarea ierarhic a se caut a optimul local n ecare subret ea si, ca urmare, este posibil s a se rateze optimul global (a se vedea exemplul 5.4). Exemplul 5.4: In gura 5.7 este reprezentat a o ret ea cu dirijare ierarhic a pe dou a nivele. Ret eaua este format a dintr-o subret ea r ad acin a si patru subret ele subordonate ei. Adresa ec arui nod este format a din dou a componente, prima identic and subret eaua de nivel 1 din care face parte si a doua identic and nodul n cadrul subret elei respective. S a presupunem c a nodul 1.1 are de trimis un pachet c atre nodul 3.4. Dirijarea decurge astfel: Nodul 1.1 determin a c a destinatia 3.4 face parte din alt a subret ea dec at el nsu si; ca urmare, caut a drumul spre cel mai apropiat nod ce are leg atur a cu ret eaua ierarhic superioar a. Nodul acesta este 1.2. Nodul 1.2 caut a drumul spre cel mai apropiat nod din subret eaua 3. Nodul g asit este 3.1 si drumul p an a la el este 1.2, 2.3, 3.1 (echivalent, se poate lua drumul 1.2, 2.1, 3.1). Nodul 3.1 trimite pachetul spre destinat ia 3.4 pe drumul cel mai scurt, anume 3.1, 3.2, 3.3, 3.4 (alt drum, echivalent, este 3.1, 3.6, 3.5, 3.4). S a observ am c a drumul pe care l urmeaz a pachetul, 1.1, 1.2, 2.3, 3.1, 3.2, 3.3,

c 2008, Radu-Lucian Lup sa


138 5.2. Algoritmi de dirijare

1.1

1.5

1.4 1.3

4.2 4.3 4.1

1.2

3.2 2.3 2.2 2.4 3.6 2.1 3.5 3.1

3.3

3.4

(a) Toat a ret eaua. Subret elele de pe nivelul 1 sunt ncercuite cu linie punctat a.

1.3 1.2 2.3 3.3 2.1 3.1 4.1

(b) Reprezentarea (mic sorat a) doar a subret elei r ad acin a.

Figura 5.7: O ret ea cu dirijare ierarhic a pe dou a nivele. Ret eaua de pe nivelul r ad acin a are nodurile reprezentate prin cercuri pline (mici) si leg aturile reprezentate cu linii ngro sate.

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 139

3.4 nu este optim, ntruc at lungimea lui este 6, iar drumul 1.1, 1.5, 1.3, 4.1, 3.3, 3.4 are lungimea 5.

5.2.4. Metode particulare de dirijare


5.2.4.1. Inundarea Inundarea este o metod a aplicabil a n ret ele bazate pe datagrame. Inundarea const a n a trimite c opii ale unei datagrame prin toate leg aturile directe, cu except ia celei prin care a intrat datagrama. Inundarea garanteaz a c a, dac a destinat ia este accesibil a si nodurile nu sunt prea nc arcate (astfel nc at s a se sacrice datagrame din lips a de spat iu de memorare), datagrama ajunge la destinat ie. Ca avantaj fat a de alte metode, inundarea nu necesit a ca nodurile s a adune nici un fel de informat ie despre ret ea. Pe de alt a parte, inundarea face ca ecare datagram a s a ajung a la ecare nod al ret elei, nu doar la destinatarul dorit. Ca urmare, la ecare nod ajung toate pachetele care circul a prin ret ea. La un num ar de noduri mai mare de c ateva zeci, metoda inund arii genereaz a prea mult trac pentru a n general acceptabil a. Dac a graful ret elei este un arbore, atunci, consider and nodul surs aa datagramei ca r ad acin a, copiile datagramei circul a n arbore de la ecare nod la i s ai; transmisia se opre ste la frunze. De notat ns a c a o ret ea al c arei graf ata sat este un arbore este extrem de vulnerabil a la pene: defectarea oric arui nod intern duce la deconectarea ret elei. Dac a ns a graful ret elei cont ine cicluri, atunci o datagram a, o dat a ajuns a ntr-un ciclu, cicleaz a la innit. Pentru ca inundarea s a e utilizabil a n ret ele cu cicluri, trebuie f acut a o modicare pentru prevenirea cicl arii innite. O posibil a solut ie utilizat a si pentru alte metode de dirijare este aceea de-a asocia ec arei datagrame un contor de salturi care marcheaz a prin c ate noduri a trecut datagrama. La atingerea unei anumite valori prestabilite, datagrama nu mai este trimis a mai departe. Cu aceast a modicare, inundarea transmite datagramele pe toate drumurile (nu neap arat simple) de la sursa datagramei si de lungime dat a. O alt a solut ie, cu avantajul suplimentar c a asigur a ca ecare pachet s a ajung a ntr-un singur exemplar la destinat ie, este ca ecare nod al ret elei s a identice (de exemplu, prin ment inerea unor numere de secvent a) duplicatele unui pachet si s a trimit a mai departe un pachet doar la prima lui sosire. Inundarea se utilizeaz a n ret elele Ethernet. Graful unei ret elele Ethernet trebuie s a e ntotdeauna un arbore.

c 2008, Radu-Lucian Lup sa


140 5.2. Algoritmi de dirijare

5.2.4.2. Inv a tarea rutelor din adresele surs a ale pachetelor O metod a simpl a de construct ie a tabelelor de dirijare este ca, la primirea unui pachet de la un nod surs a S dinspre un nod vecin V , s a se introduc a sau s a se actualizeze n tabela de dirijare regula pentru destinat ia S prev az and ca urm ator nod pe V . Regulile astfel introduse trebuie s a aib a valabilitate limitat a n timp altfel apar probleme la modicarea leg aturilor din ret ea. De asemenea, mai trebuie un mecanism pentru dirijarea pachetelor pentru care nc a nu exist a reguli de dirijare de exemplu, se poate folosi inundarea. Metoda este utilizat a n ret elele Ethernet.

5.2.5. Metode de difuziune


Ne vom ocupa n continuare de metodele de dirijare aplicabile n vederea trimiterii c opiilor unei datagrame spre mai multe destinat ii. Distingem dou a posibile cerint e, difuziune complet a (engl. broadcast ) trimiterea spre toate nodurile unei ret ele si difuziune selectiv a (engl. multicast ) trimiterea datagramei spre o submult ime dat a a multimii nodurilor. Desigur, ntotdeauna este posibil a difuzarea prin transmiterea separat a a unei datagrame spre ecare nod. O astfel de metod a este ns a neeconomic a. O posibilitate simpl a de realizare a difuziunii complete este inundarea. ( 5.2.4.1). O alt a posibilitate este s a se construiasc a nt ai un arbore part ial (preferabil de cost minim) de acoperire a v arfurilor destinatie, iar apoi s a se aplice metoda inund arii n acest arbore. Aceast a metod a este utilizabil a at at pentru difuzare complet a c at si pentru difuzare part ial a. Datorit a necesit a tii calculului arborelui part ial, este favorabil a n cazul n care trebuie trimise multe datagrame aceleia si mult imi de destinatari. Descriem si o a treia posibilitate, util a n special n situat ia n care destinatarii sunt put ini si nu se trimit multe datagrame aceleia si mult imi de destinatari. Metoda const a n a trimite n datagram a multimea adreselor destinat ie. Fiecare nod determin a leg atura de ie sire pentru ecare destinat ie din lista din datagram a. Apoi trimite c ate o datagram a pe ecare leg atur a direct a ce apare pe ruta spre cel put in una dintre destinat ii. Datagrama trimis a prin ecare leg atur a direct a va avea n lista de destinat ii doar acele noduri c atre care ruta trece prin acea leg atur a direct a. Intuitiv, metoda ar putea privit a astfel: se trimite c ate o datagram a c atre ecare nod destinat ie, ns a, c at timp drumul a dou a sau mai multe datagrame este comun, datagramele c al atoresc reunite ntr-o singur a datagram a cu mai multe adrese destinat ie.

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 141

5.3. Funct ionarea la trac ridicat


P an a aici am studiat comportamentul unei ret ele doar pentru cazul n care debitul uxului de date care intr a ntr-un nod nu dep a se ste niciodat a nici capacitatea leg aturilor prin care trebuie trimis mai departe, nici capacitatea modulului de ret ea de-a efectua prelucr arile necesare. Dac a debitul cu care intr a pachete ntr-un nod dep a se ste e capacitatea de prelucrare a nodului, e capacitatea leg aturii prin care pachetele trebuie s a ias a, nodul memoreaz a pachetele ntr-o structur a de coad a, de unde le extrage pe m asur a ce pot transmise prin leg atura de ie sire. Un efect imediat este cre sterea timpului de propagare, din cauza stat ion arii pachetelor n coada de a steptare. Dac a excesul de debit de intrare se p astreaz a mai mult timp, coada cre ste p an a c and memoria alocabil a cozii de a steptare este epuizat a; n acel moment, nodul va trebui e s a sacrice pachete, e s a solicite, prin intermediul mecanismului de control al uxului de la nivelul leg aturii de date, mic sorarea debitului de intrare. De notat c a reducerea si, n extremis, blocarea uxului de date la intrarea ntr-un nod poate duce la acumularea de date de transmis n nodului vecin dinspre care vine acel ux, duc and mai departe la blocarea reciproc aa unui grup de noduri. Principalele probleme ce apar n cazul n care capacitatea nodurilor sau leg aturilor directe este dep a sit a sunt urm atoarele: Intr-o ret ea aglomerat a, pachetele sau datagramele nt arzie mult sau chiar se pierd, lucru care poate declan sa retrimiteri intempestive de pachete, duc and la aglomerare si mai mare a ret elei si la performant e si mai sc azute. O astfel de situatie, de degradare suplimentar a a performant elor n urma cre sterii nc arc arii, se nume ste congestie si trebuie evitat a sau, cel put in, tinut a sub control. Capacitatea disponibil a a ret elei trebuie mp art it a n mod echitabil ntre utilzatori. Diferite aplicat ii au diferite priorit a ti cu privire la caracteristicile necesare ale serviciului oferit de ret ea. React ia unei ret ele aglomerate trebuie s a tin a cont de aceste priorit a ti. De exemplu, un nod supraaglomerat poate s a e nevoit s a arunce o parte dintre datagramele aate n tranzit. Dac a datagramele apart in unei aplicat ii de transfer de siere, este preferabil s a e aruncate cele mai recente (acestea ind retransmise mai t arziu; dac a se arunc a datagramele mai vechi, este posibil ca destinatarul s a nu aib a ce face cu cele mai noi si s a trebuiasc a retransmise toate). Dimpotriv a, dac a datagramele apart in unei aplicat ii de tip videoconferint a,

c 2008, Radu-Lucian Lup sa


142 5.3. Funct ionarea la trafic ridicat

este preferabil s a e aruncate datagramele mai vechi. De notat c a, adesea, rezolvarea problemelor de mai sus necesit a o colaborare ntre nivelul ret ea si nivelele superioare.

5.3.1. Alegerea pachetelor de transmis


Consider am un ruter ale c arui linii de ie sire sunt utilizate la maximul capacit a tii. Vom analiza n continuare modul n care el poate alege, dintre pachetele primite, care va urm atorul pachet pe care s a-l retransmit a. O posibilitate simpl a este de a ment ine o singur a coad a si de a accepta un pachet proasp at sosit dac a are loc n coad a si de a-l distruge dac a nu are loc. Atunci c and debitul de intrare este mare, solut ia duce la a accepta primul pachet ce sose ste dup a eliberarea unei pozit ii n coad a. Ca urmare, un emit ator care produce multe pachete este avantajat fat a de un emit ator care produce put ine pachete. O distribuire mai echitabil a a capacit a tii este de-a construi c ate o coad a pentru ecare nod surs a, leg atur a de intrare sau cicruit virtual. Nodul extrage, n vederea retransmiterii, pe r and, c ate un pachet din ecare coad a. In acest fel, ecare surs a ecare linie de intrare sau, dup a caz, circuit virtual obt ine trimiterea aceluia si num ar de pachete n unitatea de timp. Metoda se nume ste a steptare echitabil a (engl. fair queueing ). O variant a a metodei anterioare este de a oferi ec arei intr ari nu un num ar egal de pachete preluate ci un num ar egal de bit i preluat i. Pentru aceasta, se poate asocia ec arei cozi num arul total de bit i ai pachetelor preluate din acea coad a si retransmise mai departe. De ecare dat a nodul intermediar extrage urm atorul pachet din coada cu cel mai mic num ar de bit i transmi si. Pe l ang a posibilitatea de a oferi intr arilor transmiterea aceluia si num ar de bit i sau de pachete, se poate oferi numere de bit i sau pachete transmise proportionale cu anumite valori. De exemplu, se poate oferi unei leg aturi mai importante, dinspre un grup mai mare de calculatoare, un num ar dublu de bit i preluat i si retransmi si fat a de o leg atur a secundar a. Metoda se nume ste a steptare echitabil a ponderat a (engl. weighted fair queueing ). In afar a de metodele de a steptare echitabil a eventual, mpreun a cu ele se poate pune n aplicare si un sistem de priorit a ti. Astfel, ec arui pachet i se poate asocia un nivel de prioritate: pachetele pentru aplicat ii n timp real si pachetelor asociate sesiunilor interactive li se asociaz a nivele de prioritate mai ridicate, iar aplicat iilor care transfer a siere mari li se asociaz a nivele de prioritate cobor at a. Intr-un ruter, ec arui nivel de prioritate i se asociaz ao coad a separat a, cu spat iu de memorare rezervat. Atunci c and linia de ie sire este liber a si ruterul trebuie s a decid a care este urm atorul pachet, examineaz a

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 143

cozile n ordine descresc atoare a nivelelor de prioritate p an a g ase ste o coad a nevid a. Pachetul urm ator ce va transmis este extras din prima coad a nevid a. Dac a metoda priorit a tilor este combinat a cu a steptarea echitabil a, ec arui nivel i se asociaz a un set de cozi, n interiorul setului funct ion and regulile de la a steptarea echitabil a. Urm atorul pachet trimis este extras din setul de cozi cel mai prioritar n care exist a cel putin o coad a nevid a.

5.3.2. Controlul congestiei


Prin congestie se nt elege sc aderea debitului tracului util n ret ea n situat ia n care cererea de trac printr-o leg atur a sau printr-un nod dep a se ste capacitatea acesteia. Sc aderea debitului util, n opozit ie cu limitarea tracului la capacitatea leg aturii sau nodului respectiv, este datorat a unei funct ion ari defectuoase a ret elei, n special datorit a pierderii si retransmiterii unui num ar mare de pachete. Ca principiu general, este bine ca, dac a ret eaua este foarte nc arcat a, nodurile terminale s a ncerce s a reduc a frecvent a si m arimea pachetelor transmise. Evident, pentru acest lucru, este necesar un mecanism care s a semnaleze nodurilor nale asupra prezent ei sau iminent ei congestiei. Descriem n continuare, pe scurt, mecanisme utilizate pentru semnalarea congestiei, precum si mecanismele prin care nodurile nale pot react iona la astfel de semnale. Prima posibilitate de semnalizare a congestiei este ca, atunci c and un nod intermediar este nc arcat la limita capacit a tii sale, pentru ecare pachet de date primit spre livrare s a trimit a sursei pachetului de date un pachet de control prin care s a-i cear a s a reduc a tracul. Cusurul metodei const a n faptul c a pachetele de cerere de reducere a tracului ncarc a suplimentar o ret ea deja nc arcat a. Metoda este utilizabil a n Internet, exist and un tip de pachete ICMP pentru acest scop (vezi 10.2.5.4). A doua posibilitate este ca nodul nc arcat s a semnalizeze destinat iei ec arui pachet de date faptul c a ret eaua este nc arcat a. Aceast a semnalizare este mai u sor de f acut ntruc at poate transmis a odat a cu pachetul de date, sub forma unui bit din antetul ec arui pachet. Dezavantajul, fat a de metoda precedent a, este c a nu semnalizeaz a sursei tracului, ci destinat iei; r am ane deci necesar de elaborat un protocol de informare a sursei. Informarea sursei poate f acut a simplu dac a ntre surs a si destinat ie se utilizeaz a un protocol de control al uxului: n cazul n care destinat iei i este semnalizat c a ret eaua este congestionat a, destinat ia cere sursei, prin intermediul protocolului de control al uxului, s a reduc a debitul transmisiei. Metoda semnaliz arii destinat iei este utilizat a n Internet, sub numele de explicit congestion notication ; pentru

c 2008, Radu-Lucian Lup sa


144 5.3. Funct ionarea la trafic ridicat

informarea, mai departe, a sursei se poate utiliza dimensiunea ferestrei TCP ( 10.3.1.8). O semnalizare implicit a a faptului c a ret eaua este nc arcat a const a n ns a si pierderea pachetelor. Pierderea poate observat a de nodul surs a prin aceea c a nu prime ste conrm ari ( n cazul utiliz arii unui protocol cu conrmare si retransmitere, 4.3) sau r aspuns la mesajele trimise ( n cazul unei aplicat ii care trimite o datagram a de cerere si a steapt a o datagram a care s a r aspund a la cerere). Pentru ca pierderea pachetelor s a poat a utilizat a ca semnalizare a congestiei, mai este necesar ca pierderea unui pachet din alte cauze dec at congestia s a e put in probabil a. Rezult a, pentru leg aturile directe cu rat a a erorilor ridicat a ( n principal, leg aturi radio), necesitatea utiliz arii, la nivelul leg aturii de date, e a unui cod corector de erori, e a unui protocol de conrmare si retransmitere . Indiferent de metoda de semnalizare utilizat a, o implementare simpl a risc a s a duc a la oscilat ii: dac a un nod intermediar ajunge congestionat, semnalizeaz a tuturor nodurilor terminale ale leg aturilor stabilite prin el despre congestie. React ia este diminuarea tracului prin toate leg aturile si ca urmare sc aderea tracului mult sub maximul admis. Dup a un timp, nodurile terminale vor cre ste din nou tracul, p an a la congestionarea, din nou, a nodului intermediar considerat. Solut ionarea problemei oscilat iilor se face pun and nodul intermediar s a trimit a semnale c a este supra nc arcat cu put in nainte de-a ajunge la limita capacit a tii sale si de-a alege aleator leg aturile c arora li se semnalizeaz a nc arcarea.

5.3.3. Formarea (limitarea) tracului


Prin formarea tracului se nt eleg metode de uniformizare a debitului unui ux de date. Mecanismele de limitare pot plasate n nodul surs a sau ntr-un ruter si pot act iona asupra uxului de pachete provenit de la un anumit nod surs a, asupra uxulul ntre dou a stat ii date, asupra uxului printr-un circuit virtual sau asupra uxului ce intr a sau iese printr-o anumit a leg atur a direct a. Cel mai simplu mecanism de formare a tracului este limitarea debitului de date la o anumit a valoare xat a. Mecanismul se nume ste g aleat a g aurit a, prin analogie cu urm atorul mecanism zic: ntr-o g aleat a (reprezent and coada de a steptare a ruterului) se toarn a ap a (reprezent and pachetele unui ux). G aleata are o gaur a prin care curge ap a (pachete ce sunt preluate din coad a si retransmise de c atre ruter). Debitul apei care curge (debitul uxului de ie sire) este constant at at timp c at g aleata nu este goal a. De asemenea, dac a g aleata este plin a, o parte din apa ce intr a se revars a n afar a (surplusul

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 145

de pachete se pierd). Un mecanism mai elaborat permite scurte rafale. Ca idee, ruterul tine evident a capacit a tii nefolosite (diferent a dintre debitul maxim acceptat si debitul uxului) si permite, n contul acesteia, un exces de debit. Mai n detaliu, ruterul asociaz a cozii un num ar de jetoane. Periodic, num arul de jetoane este crescut cu o unitate, f ar a ns a a dep a si o valoare maxim a. Dac a exist a un pachet n coad a si num arul de jetoane este mai mare sau egal cu num arul de bit i ai pachetului, pachetul este preluat din coad a si retransmis, iar num arul de jetoane asociat cozii este sc azut cu o valoare egal a cu num arul de bit i ai pachetului. Mecanismul se nume ste g aleata cu jeton.

5.3.4. Rezervarea resurselor


Pentru a avea, n mod garantat, o anumit a capacitate si un anumit timp de propagare oferite unui ux de date, este necesar s a e rezervate uxului resursele necesare capacitatea de prelucrare n noduri si capacitatea de transfer prin leg aturile directe. Rezervarea resurselor se poate face doar n ret ele ce ofer a servicii de tip conexiune utilizarea rezerv arii n ret ele cu datagrame duce la necesitatea implement arii unui mecanism de tinerea evident ei uxurilor de datagrame similar celui din ret elele cu circuite virtuale. La deschiderea conexiunii, n timpul stabilirii rutei conexiunii se stabile ste si capacitatea pe care o va garanta conexiunea si ecare nod se asigur a c a dispune de capacit a tile necesare (c a suma capacit a tilor alocate conexiunilor ce partajeaz a o leg atur a direct a nu dep a se ste capacitatea leg aturii directe). Dac a resursele necesare nu sunt disponibile, conexiunea este refuzat a sau se negociaz a o capacitate mai mic a. Asociat conexiunii se plaseaz a, la nodul surs a, un mecanism de limitare a debitului de date, astfel nc at operarea conexiunii s a se ncadreze n resursele alocate. Rezervarea resurselor este util a n special aplicat iilor n timp real. Ret eaua telefonic a utilizeaz a astfel de mecanisme. Avantajul unui debit garantat se pl ate ste prin limitarea drastic a a debitului permis. Dac a debitul efectiv utilizat de un ux de date este adesea sub debitul alocat uxului sau dac a o parte din capacitatea unei leg aturi directe r am ane adesea nealocat a complet conexiunilor ce trec prin ea, ret eaua nu este folosit a la maximul de capacitate. In acest caz, valoricarea capacit a tii r amase, cu p astrarea capacit a tii garantate prin rezervarea resurselor, se poate face astfel: Datelor ce apart in conexiunilor cu trac garantat li se asociaz a un nivel de prioritate ridicat.

c 2008, Radu-Lucian Lup sa


146 5.3. Funct ionarea la trafic ridicat

Sunt permise si alte date (de exemplu, prin conexiuni f ar a trac garantat), ns a acestora li se asociaz a un nivel de prioritate sc azut. In ecare ruter se utilizeaz a un mecanism bazat pe priorit a ti. In acest fel, uxurile ce au rezervat resurse au capacitate garantat a, iar restul datelor sunt transmise, f ar a vreo garant ie, dac a mai r am an resurse si pentru ele.

5.4. Nivelul transport


Rolul nivelului transport este de-a face o adaptare ntre serviciile oferite de nivelul ret ea si nevoile aplicat iilor. Funct iile ndeplinite de nivelul transport sunt similare cu unele dintre funct iile nivelului leg aturii de date: Transport sigur : O ret ea congestionat a se poate s a distrug a pachete din lips a de spat iu de memorare. In plus, ntr-o ret ea ce ofer a transport de datagrame este posibil ca dou a datagrame s a ajung a la destinat ie n ordine invers a fat a de cea n care au fost emise, iar n anumite cazuri este posibil ca o datagram a s a ajung a n mai multe exemplare la destinat ie (de exemplu dac a se utilizeaz a dirijare prin inundare si ret eaua nu este un arbore). Metodele bazate pe conrm ari si retransmiteri (vezi 4.3) pot utilizate, cu mici modic ari, pentru a asigura transport sigur la nivelul transport. O diferent a important a fat a de transportul sigur la nivelul leg aturii de date este c a nivelul ret ea poate inversa ordinea unor datagrame, n vreme ce nivelul zic nu inverseaz a pachete. O alt a diferent a este c a la nivelul ret ea timpul de propagare al unei datagrame variaz a n limite foarte largi. De aceea, pe de o parte trebuie luate m asuri pentru a xa o durat a maxim a de viat a a unei datagrame n ret ea, iar pe de alt a parte algoritmul de conrmare si retransmitere trebuie s a se a stepte s a primeasc a astfel de datagrame nt arziate si s a nu le confunde cu datagrame noi aceasta din urm a nseamn a c a spat iul numerelor de secvent a trebuie s a e sucient de mare. Controlul uxului : Controlul uxului are acela si rol si se implementeaz a n acela si mod la nivelul transport ca si la nivelul leg aturii de date. Multiplexarea : Multiplexarea poate util a n mai multe scopuri: pentru a permite mai multor aplicat ii care se execut a pe acela si calculator s a comunice independent una de alta si pentru a permite unei perechi de aplicat ii care comunic a s a- si transmit a independent mai multe uxuri de date.

c 2008, Radu-Lucian Lup sa


Capitolul 5. Nivelul ret ea si nivelul transport 147

5.5. Interconectarea ret elelor


Probleme privind interconectarea ret elelor se pun n situat ia n care se dore ste ca dou a sau mai multe ret ele ce nu pot funct iona unitar ca o singur a ret ea s a ofere totu si servicii de comunicare similare unei ret ele unitare. Motivele de existent a a ret elelor distincte pot : ret ele ce utilizeaz a protocoale diferite la nivel ret ea, ret ele ce utilizeaz a acela si protocol, dar exist a suprapuneri ntre adresele alocate n aceste ret ele, dorint a unor administratori de-a nu divulga informatii despre leg aturile din ret ea sau de-a ltra pachetele care intr a sau ies si altele. Problema interconect arii este complex a si necesit a solutii ad-hoc, adaptate nevoilor de interoperabilitate si particularit a tilor ret elelor de interconectat. Exist a ns a c ateva metode generale, dintre care vom analiza aici metoda tunel arii.
Ret eaua A
2 1 4 3 5 8 4 10 6 7
(a) Ret eaua A, av and leg aturi directe proprii (reprezentate prin linii continue) si leg aturi realizate ca tunele prin ret eaua B (b) Ret eaua B

9 5 8

Ret eaua B

Figura 5.8: Leg aturi prin tunel. O parte dintre leg aturile directe din ret eaua A, gurate cu linie punctat a, sunt obt inute apel and la serviciile ret elei B. Leg atura 45 apare ca leg atur a direct a pentru ret eaua A, dar este construit a de ret eaua B prin intermediul nodului 6.

Un tunel este o leg atur a, realizat a prin intermediul unei ret ele, care este utilizat a de o alt a ret ea ca si c and ar o leg atur a direct a (vezi g. 5.8). Pachetele celei de-a doua ret ele, incluz and antetele specice acesteia, sunt transportate ca date utile printr-o conexiune sau, dup a caz, prin datagrame ale primei ret ele.

c 2008, Radu-Lucian Lup sa


148 Capitolul 5. Nivelul ret ea si nivelul transport

c 2008, Radu-Lucian Lup sa


149

Capitolul 6

Metode si protocoale criptograce

Vom studia n acest capitol cum se poate proteja comunicat ia dintre dou a entit a ti contra act iunilor unui tert , numit adversar sau intrus , care intercepteaz a sau altereaz a comunicat ia ntre ele. Protect ia comunicat iei mpotriva act iunilor unui adversar se nume ste securizarea comunicat iei. Adversarul poate : adversar pasiv , care doar intercepteaz a mesajele transmise; adversar activ , care si intercepteaz a si modic a mesajele. Protect ia comunicat iei fat a de act iunile adversarului cuprinde: Asigurarea condent ialit a tii are ca obiectiv s a impiedice un adversar pasiv s a nt eleag a un mesaj interceptat sau s a extrag a vreo informat ie din el. Vericarea autenticit a tii mesajelor, numit a si autenticarea mesajelor, are ca obiectiv detectarea, de c atre receptor, a falsurilor, adic a a mesajelor create sau modicate de un adversar activ. Vericarea autenticit a tii mesajelor se aseam an a cu detectarea erorilor. Spre deosebire ns a de detectarea erorilor, unde modic arile produse de mediul de transmisie sunt aleatoare, la vericarea autenticit a tii mesajelor avem un adversar care ncearc a n mod deliberat s a produc a modic ari nedetectabile. Asigurarea non-repudiabilit a tii mesajelor are ca obiectiv s a permit a receptorului s a dovedeasc a autenticitatea unui mesaj n fat a unui tert , altfel spus, emit atorul s a nu poat a nega faptul c a a transmis un anumit mesaj. Asigurarea non-repudiabilit a tii este similar a cu autenticarea mesajelor, dar n plus trebuie s a nu permit a nici m acar receptorului s a creeze un mesaj care s a par a autentic.

c 2008, Radu-Lucian Lup sa


150 Capitolul 6. Metode si protocoale criptografice

Vericarea prospet imii are ca obiectiv detectarea, de c atre receptor, a eventualelor copii ale unui mesaj (autentic) mai vechi. Este posibil ca un adversar s a intercepteze, de exemplu, un ordin de transfer de bani n favoarea sa si apoi s a transmit a b ancii multiple copii ale ordinului de transfer de bani. In lipsa veric arii prospet imii, banca va efectua de mai multe ori transferul de bani. Vericarea autenticit a tii mesajelor, singur a, nu rezolv a problema, deoarece ecare copie este identic a cu originalul si, ca atare, este autentic a. Autenticarea entit a tilor are ca obiectiv vericarea, de c atre o entitate, a identit a tii entit a tii cu care comunic a. Mai exact, exist a un server si unul sau mai mult i client i legitimi care deschid conexiuni c atre server. Modelul adversarului, n acest caz, este put in diferit: adversarul poate s a deschid a o conexiune spre server si s a ncerce s a se dea drept un client legitim. Eventual, adversarul poate s a intercepteze comunicat iile client ilor legitimi, pentru a obt ine informat ii n vederea p ac alirii serverului, dar nu poate altera comunicat ia printr-o conexiune deschis a de altcineva. In prezent a unui adversar activ, autenticarea entit a tilor nu este prea util a, deoarece adversarul poate s a lase protocolul de autenticare s a se desf a soare normal si apoi s a trimit a orice n numele clientului. In prezent a unui adversar activ, este mai degrab a necesar un mecanism de stabilirea cheii (vezi mai jos). Stabilirea cheii are ca obiectiv obt inerea, de c atre partenerii de comunicat ie legitimi, a unui sir de bit i, numit cheie, ce urmeaz a a utilizat a la asigurarea condent ialit a tii si la vericarea autenticit a tii mesajelor. Cheia obt inut a trebuie s a e cunoscut a doar de c atre cei doi parteneri care doresc s a comunice. In multe lucr ari, n loc de autenticarea mesajelor se pune problema veric arii integrit a tii mesajelor vericarea de c atre receptor c a mesajul este identic cu cel emis de emit ator (c a nu a fost modicat pe traseu) si a autentic arii sursei mesajului vericarea de c atre receptor a identit a tii autorului unui mesajului. Cele dou a operat ii vericarea integrit a tii si autenticarea sursei nu au sens dec at mpreun a. Aceasta deoarece, dac a un mesaj a fost alterat de c atre adversar (lucru care se constat a cu ocazia veric arii integrit a tii), mesajul poate v azut ca un mesaj produs de adversar si pretinz and c a provine de la autorul mesajului original; acest din urm a mesaj nu a fost modicat n timpul transportului (de la adversar spre destinatar), dar sursa sa nu este autentic a (mesajul provine de la altcineva dec at autorul indicat n mesaj).

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 151

6.1. Asigurarea condent ialit a tii


6.1.1. Introducere
Problema asigur arii condent ialit a tii unui mesaj const a n a transmite informat ii n a sa fel nc at doar destinatarul dorit s a le poat a obt ine; un adversar care ar intercepta comunicat ia nu trebuie s a e capabil s a obt in a informat ia transmis a. Formal, presupunem c a emit atorul are un mesaj de transmis, numit text clar (engl. plaintext ). Emit atorul va genera, printr-un algoritm, plec and de la textul clar, un a sa-zis text cifrat (engl. ciphertext ). Receptorul autorizat trebuie s a poat a recupera textul clar aplic and un algoritm asupra textului cifrat. Adversarul, care dispune de textul cifrat dar nu cunoa ste anumite detalii ale algoritmului aplicat de emit ator, trebuie s a nu e capabil s a reconstituie textul clar. Operat ia prin care emit atorul transform a textul clar n text cifrat se nume ste criptare sau, uneori, cifrare (engl. encryption ). Operat ia prin care receptorul obt ine textul clar din textul cifrat se nume ste decriptare sau descifrare (engl. decryption ). Impreun a, algoritmii de criptare si decriptare constituie un cifru . Pentru a formaliza notat iile, vom nota cu T mult imea mesajelor posibile de transmis; ecare text clar posibil este un element t T . Criptarea este o funct ie c : T M , unde M este mult imea textelor cifrate posibile. m = c(t) este textul cifrat corespunz ator textului clar t. Textul cifrat este trimis pe canalul nesigur si este presupus accesibil adversarului. Decriptarea o vom nota cu d, unde d : M T . Spunem c a (c, d) formeaz a o pereche criptare-decriptare dac a ndeplinesc simultan condit iile: orice text cifrat poate decriptat corect prin d, adic a d c = 1T ; un adversar care cunoa ste textul cifrat m = c(t) dar nu cunoa ste c sau d nu poate deduce t sau aa informat ii despre t. In practic a, este necesar ca producerea unei perechi de funct ii (c, d) s a e u sor de f acut, inclusiv de c atre persoane f ar a preg atire deosebit a. Acest lucru este necesar deoarece dac a perechea (c, d) utilizat a de dou a entit a ti care comunic a este aat a, sau se b anuie ste c a a fost aat a, de c atre cineva din afar a, ea trebuie schimbat a repede. De asemenea, este bine ca persoanele ce nu au preg atire de matematic a si informatic a s a poat a utiliza singure metode criptograce. Pentru acest scop, algoritmii de criptare si decriptare sunt f acut i s a primeasc a, pe l ang a textul clar si respectiv textul cifrat, nc a un argument

c 2008, Radu-Lucian Lup sa


152 t 6.1. Asigurarea confident ialita ii

numit cheie . Fiecare valoare a cheii produce o pereche criptare-decriptare distinct a. Cheia se presupune a u sor de generat la nevoie. Mult imea cheilor posibile se nume ste spat iul cheilor si o vom nota n continuare cu K . Funct iile de criptare si decriptare sunt de forma c : T K M si respectiv d : M K T . Cheia este scris a ca parametru. Pentru o valoare xat a a cheii k K , criptarea devine ck : T M , iar decriptarea dk : M T , cu dk ck = 1T . Pentru ecare k K , (ck , dk ) formeaz a o pereche criptare-decriptare. Algoritmii propriu-zi si, adic a funct iile c : T K M si d : M K T , se presupune c a sunt cunoscut i adversarului; dac a merit a s a putet i schimba cheia, nseamn a c a deja avet i ndoieli privitoare la c at de secret putet i tine algoritmul fat a de adversar. . . Ca urmare, pentru o aplicat ie, un algoritm public nu este mai nesigur dec at un algoritm ,,secret, necunoscut publicului dar posibil cunoscut adversarului. Un algoritm foarte cunoscut, dar f ar a vulnerabilit a ti cunoscute, este preferabil fat a de un algoritm ,,secret deoarece exist a sanse mult mai mari ca autorul si utilizatorul aplicat iei s a ae despre vulnerabilit a ti nainte ca vulnerabilit a tile s a e exploatate mpotriva lor. Adesea avem T = M ; n acest caz ck este o funct ie bijectiv a (o permutare pe T ). In aceste condit ii, uneori rolurile funct iilor c si d pot interschimbate, adic a dk s a se foloseasc a ca funct ie de criptare si ck pentru decriptare. Exemplul 6.1 (Substitut ia monoalfabetic a ): Consider am un alfabet (nit) S si not am cu n num arul de litere (n = |S |). De exemplu, S = {a, b, c, . . . , z}; n acest caz n = 26. Textele clare sunt siruri de litere din alfabet: T = S . Mult imea textelor cifrate este identic a cu mult imea textelor clare: M = T . Cheile posibile sunt permut arile lui S ; |K | = n!. Pentru un text clar p = (s1 , s2 , . . . , sl ), textul cifrat este ck (p) = (k (s1 ), k (s2 ), . . . , k (sl )). Decriptarea se calculeaz a dk ((m1 , m2 , . . . , ml )) = (k 1 (m1 ), k 1 (m2 ), . . . , k1 (ml )). Criptarea si decriptarea sunt simplu de executat, chiar si manual. Cheile sunt u sor de reprezentat. Dac a alfabetul are o ordine cunoscut a,

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 153

reprezentarea cheii poate consta n n siruirea literelor n ordinea dat a de permutare. De exemplu qwertyuiopasdfghjklzxcvbnm nseamn a k (a) = q, k (b) = w, etc. Cu aceast a cheie, cuv antul ,,criptic devine, prin criptare, ,,ekohzoe. S a examin am put in sigurant a. S a presupunem c a un adversar ncearc a decriptarea textului cifrat cu ecare cheie posibil a. O astfel de ncercare se nume ste atac prin fort a brut a. S a mai presupunem c a adversarul reu se ste s a verice un miliard de chei n ecare secund a. Deoarece num arul de chei este 26! 4 1026 , adversarul ar avea nevoie n medie de 6,5 miliarde de ani pentru a g asi cheia corect a. Pe de alt a parte, ntr-un text n limba rom ana, anumite litere (de exemplu e, a, t, s ) apar mai frecvent dec at altele. Ca urmare, permut arile primelor prin funct ia k vor apare n textul cifrat cu frecvent a mai mare dec at permut arile celorlalte. Un adversar, care dispune de sucient text cifrat, va ncerca doar acele chei care fac s a corespund a unei litere din textul cifrat doar litere a c aror frecvent a normal a de aparit ie este apropiat a de frecvent a de aparit ie a literei considerate n textul cifrat. In acest fel, num arul de ncerc ari se reduce considerabil, astfel nc at un astfel de cifru poate spart u sor n c ateva minute. Exemplul 6.2 (Cifrul Vernam, numit si cheia acoperitoare, engl. One time pad ): La acest cifru, T = {t {0, 1} : |t| n} (mult imea sirurilor de bit i de lungime mai mic a sau egal a cu un n I N xat), M = T si K = {0, 1}n . Funct ia de criptare este ck (t1 , t2 , . . . , tl ) = (t1 k1 , t2 k2 , . . . , tl kl ), unde este operat ia sau exclusiv. Decriptarea coincide cu criptarea, dk = ck . Din punctul de vedere al sigurant ei, criptarea cu cheie acoperitoare este un mecanism perfect de criptare: adversarul nu poate deduce nimic din mesajul criptat ( n afar a de lungimea textului clar), deoarece orice text clar putea , cu egal a probabilitate, originea textului cifrat recept ionat. Criptarea cu cheie acoperitoare este dicil de utilizat practic deoarece necesit a o cheie la fel de lung a ca si mesajul de transmis si, n plus, cheia nu poate refolosit a (dac a se transmit dou a mesaje folosind aceea si cheie, se pierde sigurant a metodei).

c 2008, Radu-Lucian Lup sa


154 t 6.1. Asigurarea confident ialita ii

6.1.2. Refolosirea cheilor


P an a aici am considerat problema cript arii unui singur mesaj. Utilizarea aceleia si chei pentru mai multe mesaje aduce adversarului noi posibilit a ti de act iune: 1. Dou a mesaje identice vor criptate identic; adversarul poate detecta astfel repetarea unui mesaj. 2. Anumite informat ii transmise criptat la un moment dat pot deveni publice ulterior. Adversarul poate obt ine astfel perechi (ti , mi ) cu mi = ck (ti ). Incerc arile de determinare a cheii de criptare sau de decriptare a unui text cifrat, pe baza informat iilor aduse de astfel de perechi text clar, text cifrat, se nume ste atac cu text clar cunoscut. 3. In anumite cazuri, adversarul poate determina emit atorul s a trimit a mesaje cont in and p art i generate de adversar. Acest lucru poate ajuta mult tentativelor de spargere de la punctul precedent. Atacul se nume ste cu text clar ales. De asemenea, tin and cont si de posibilit a tile de la punctul 1, dac a adversarul b anuie ste textul clar al unui mesaj, poate s a ncerce s a- si conrme sau inrme b anuiala. 4. Anumite cifruri, de exemplu cifrul cu cheie acoperitoare, sunt u sor de atacat de un adversar dispun and de dou a texte cifrate cu aceea si cheie. Punctele 2 si 3 pot contracarate prin anumite propriet a ti ale cifrului (vezi 6.1.3). Pentru punctele 1 si 4, orice cifru, n forma n care este folosit n practic a, mai prime ste n funct ia de criptare un argument aleator. O parte din acest argument, numit a vector de init ializare , are rolul de-a face ca acela si text clar s a e cifrat n mod diferit n mesaje diferite. In acest caz, criptarea are forma c : T K R M si decriptarea d : M K T , cu: dk (ck (t, r)) = t , t T, k K, r R. Evident, pentru ca decriptarea s a e posibil a, informat ia corespunz atoare argumentului aleator trebuie s a se reg aseasc a n textul cifrat. Ca urmare, lungimea textului cifrat trebuie s a e cel put in egal a cu lungimea textului clar plus lungimea argumentului aleator. Adesea, argumentul aleator nu este secret; ca urmare, poate transmis n clar. Trebuie ns a ca adversarul s a nu poat a s a controleze generarea argumentului aleator utilizat de emit ator. De asemenea, nu este permis ca adversarul s a mai aib a vreun control asupra cont inutului textului clar dup a ce obt ine informat ii despre argumentul aleator ce urmeaz a a folosit.

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 155

6.1.3. Problema spargerii unui cifru


Un cifru este complet spart dac a un adversar care nu cunoa ste dinainte cheia poate decripta orice text cifrat. Dac a adversarul obt ine cheia, nseamn a c a cifrul este complet spart. Un cifru este part ial spart dac a un adversar care nu cunoa ste init ial cheia poate dob andi informat ii despre textul clar prin observarea textului cifrat. Dac a adversarul poate decripta o parte din textul clar sau poate s a verice dac a un anumit sir apare n textul clar, nseamn a c a cifrul este part ial spart. Se poate presupune c a un adversar poate estima textele clare ce ar putea transmise si eventual probabilit a tile lor; exist a cazuri n care textul clar transmis este dintr-o mult ime mic a, de exemplu poate doar da sau nu. Dac a un adversar ce a interceptat textul cifrat poate elimina anumite texte clare, sau, estim and probabilit a tile diverselor chei de cifrare, poate estima probabilit a ti, pentru textele clare, diferite fat a de estim arile sale init iale, nseamn a de asemenea c a adversarul a extras informat ie din textul cifrat si n consecint a cifrul este part ial spart. Exemplul 6.3: Consider am c a, din informat iile adversarului, textul clar este este cu probabilitate de 30% ION, cu probabilitate de 40% ANA si cu probabilitate de 30% DAN. De asemenea, presupunem c a adversarul stie c a se utilizeaz a substitut ie monoalfabetic a. In momentul n care adversarul interceptez a textul cifrat AZF, el calculeaz a probabilit a tile diverselor texte clare cunosc and textul cifrat si g ase ste 50% ION, 0% ANA si 50% DAN (exclude ANA deoarece ar da aceea si liter a pe prima si pe ultima pozit ie n textul cifrat). Adversarul a dob andit o informat ie asupra textului clar, ceea ce nseamn a c a cifrul a fost spart part ial. Cu privire la informat iile de care dispune adversarul ce ncearc a spargerea cifurlui, exist a trei nivele posibile: atac cu text cifrat: adversarul dispune doar de o anumit a cantitate de text cifrat; atac cu text clar cunoscut: adversarul dispune, pe l ang a textul cifrat de spart, de un num ar de perechi (ti , mi ), cu mi = ck (ti ); atac cu text clar ales: adversarul dispune de perechi (ti , mi ) n care ti este la alegerea adversarului. Afar a de cazul n care cheia se schimb a la ecare mesaj, este necesar ca cifrul s a nu poat a spart printr-un atac cu text clar ales.

c 2008, Radu-Lucian Lup sa


156 t 6.1. Asigurarea confident ialita ii

Dicultatea spargerii unui cifru este de dou a feluri: dicultatea probabilistic a sau informat ional a, dicultate computat ional a. Dicultatea informat ional a const a n faptul c a pot exista mai multe perechi text clar, cheie, care ar putut produce textul cifrat interceptat m. Presupun and |T | = |M | si c a orice biject ie c : T M putea aleas a, cu egal a probabilitate, ca funct ie de criptare, adversarul care recept ioneaz a un text cifrat m nu poate deduce nimic cu privire la textul clar t orice text clar avea aceea si probabilitate de a genera m. Un astfel de cifru este perfect textul cifrat nu aduce nici o informat ie adversarului. Deoarece exist a (|T |)! biject ii posibile, lungimea necesar a a cheii este log2 ((|T |)!). Presupun and c a T este mult imea sirurilor de n bit i, avem |T | = 2n si lungimea cheii este log2 ((2n )!) bit i, lungime a c arei comportament asimptotic n este de forma (n2 ). Pentru n = 20, cheia are c a tiva megabit i. De notat c a un algoritm de criptare secret nu este un cifru perfect, deoarece nu toate cele (2n )! funct ii de criptare posibile au aceea si probabilitate de a alese. Cifrul Vernam (vezi exemplul 6.2) este de asemenea un cifru perfect, c at a vreme cheia nu este refolosit a. In exemplul 6.3, dicultatea informat ional a const a n imposibilitatea adversarului de a distinge ntre DAN si ION Incertitudinea adversarului asupra textului clar este cel mult egal a cu incertitudinea asupra cheii. De aici rezult a c a, pentru a obt inerea unui cifru perfect, num arul de bit i ai cheii trebuie s a e mai mare sau egal cu num arul de bit i de informat ie din mesaj. Cifrul Vernam este n acela si timp perfect (sub aspectul dicult a tii informat ionale a spargerii) si optim din punctul de vedere al lungimii cheii. Dicultatea computat ional a const a n imposibilitatea adversarului de a deduce informat ii asupra textului clar cu un efort computat ional rezonabil. Un prim lucru care se cere de la un cifru este ca, d andu-se un num ar de perechi text clar text cifrat, s a nu existe o metod a rapid a de a determina cheia. Un atac prin fort a brut a (engl. brute force attack ) const a n a decripta textul cifrat folosind toate cheile posibile si a verica dac a se obt ine textul clar (sau un text clar inteligibil, dac a textul clar adev arat nu este cunoscut dinainte). Fezabilitatea unui atac prin fort a brut a depinde direct de lungimea cheii (de fapt, de num arul de chei posibile). Pentru o cheie de 56 de bit i (exemplu cifrul DES), un atac prin fort a brut a este perfect posibil, la viteza

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 157

actual a necesit and un efort n jur de un an-calculator. Un atac prin fort a brut a este nefezabil deocamdat a de la 80 de bit i n sus; se consider a c a va fezabil n jurul anului 2015. De la 128 de bit i n sus atacul prin fort a brut a necesit a, din cauza unor limit ari zice teoretice, o cantitate de energie comparabil a cu product ia mondial a pe c ateva luni; o astfel de cheie este put in probabil c a va putea spart a vreodat a prin fort a brut a. Un cifru se consider a a vulnerabil n momentul n care se descoper a o metod a de decriptare a unui mesaj semnicativ mai ecient a dec at un atac prin fort a brut a. Inexistent a unei metode eciente de spargere nu este niciodat a demonstrat a; n cel mai bun caz se demonstreaz a c a spargerea unui cifru este cel put in la fel de dicil a ca rezolvarea unei anumite probleme de matematic a, problem a cunoscut a de mult a vreme dar f ar a rezolvare ecient a cunoscut a. Acest din urm a tip de demonstrat ie se aplic a mai mult la cifrurile asimetrice din 6.1.5; problemele de matematic a sunt de exemplu descompunerea n factori primi a unui num ar mare de ordinul sutelor de cifre sau logaritmul discret rezolvarea n x {0, . . . , p 1} a ecuat iei ax = b (mod p), cu p num ar prim mare. Pentru un cifru bloc (un cifru care cripteaz a independent blocuri de text clar de o anumit a lungime x a), dimensiunea blocului trebuie s a e mare pentru a face repet arile blocurilor sucient de rare. Dac a dimensiunea blocului este de n bit i, exist a 2n posibilit a ti pentru cont inutul unui bloc. Consider and o distribut ie uniform a a cont inutului ec arui bloc, un sir de 2n/2 blocuri are probabilitate cam 1/2 s a aib a cel put in dou a blocuri cu cont inut identic. (Acest fapt este cunoscut ca paradoxul zilei de na stere: ntr-un grup de 23 de persoane, probabilitatea s a existe dou a dintre ele n a scute n aceea si zi din an este and k valori peste 50%; n general, ntr-un grup de k numere aleatoare av posibile, probabilitatea ca cel put in dou a s a e egale este n jur de 1/2). Ca o consecint a, dimensiunea n a blocului trebuie s a e sucient de mare si cheia s a e schimbat a sucient de des, astfel nc at num arul de blocuri criptate cu o cheie dat a s a e mult mai mic dec at 2n/2 . In majoritatea cazurilor, valoarea minim a rezonabil a pentru n este 64 de bit i. La aceast a lungime, repetarea unui bloc de text cifrat este probabil s a apar a ncep and de la 232 blocuri, adic a 32 GiB.

6.1.4. Algoritmi de criptare utilizat i n practic a


Cifrurile mai cunoscute si utilizate pe scar a mai larg a n practic a sunt date n tabela 6.1. Exist a dou a tipuri de cifruri: cifru bloc (engl. block cipher ), care cripteaz a c ate un bloc de date de lungime xat a (de obicei 64, 128 sau, eventual, 256 de bit i), si cifru ux (engl. stream cipher ), care cripteaz a mesaje

c 2008, Radu-Lucian Lup sa


158 t 6.1. Asigurarea confident ialita ii

de lungime arbitrar a si produc bit ii textului cifrat pe m asur a ce primesc bit ii corespunz atori din textul clar. Pentru a cripta un text de lungime arbitrar a, cu ajutorul unui cifru bloc, exist a c ateva metode standard, pe care le vom descrie n continuare. In cele ce urmeaz a, not am cu n lungimea blocului, n bit i. ECB Electronic Code Book: Textul clar se mparte n blocuri de lungime n. Ultimul bloc se completeaz a la lungimea n; bit ii ad augat i pot zerouri, bit i aleatori sau se pot utiliza alte scheme de completare. Fiecare bloc se cripteaz a apoi independent de celelalte (vezi g. 6.1).

Text clar

1 0 0 1 0 1
C

1111 111 0000 000 111 000 0000 1111 000 111 000 111 0000 111 1111 000 111 000
D D D

Text cifrat

1111 0000 000 111 000 111 0000 1111 000 111 000 0000 111 1111 000 111 000 111
Text cifrat
(a) Criptarea

Text clar
(b) Decriptarea

1 0 0 1 0 1

Figura 6.1: Criptarea n mod ECB

Metoda ECB nu se recomand a deoarece pentru o cheie x a acela si text clar se transform a n acela si text cifrat. O alt a critic a citat a frecvent este c a un adversar care permut a blocurile de text cifrat va obt ine permutarea blocurilor corespunz atoare de text clar, chiar dac a nu nt elege nimic din textul cifrat. De si armat ia este adev arat a, critica este nefondat a ntruc at un cifru nu are ca scop protejarea integrit a tii mesajelor. CBC Cipher Block Chaining: (Vezi g. 6.2.) Ca si la ECB, textul clar se mparte n blocuri si ultimul bloc se completeaz a cu bit i aleatori. In plus, se alege un sir de n bit i aleatori; acesta se nume ste vector de init ializare. Vectorul de init ializare se transmite de obicei separat. Se efectueaz a xor pe bit i ntre vectorul de init ializare si primul bloc de text clar; rezultatul se cifreaz a si se trimite. Apoi, se face xor ntre ecare bloc de text clar si blocul precedent de text cifrat, si rezultatul se cifreaz a si se transmite destinatarului. Fat a de ECB, metoda CBC face ca un acela si bloc de text clar s a se cripteze diferit, n funct ie de vectorul de init ializare utilizat. Dac a

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 159

Nume DES

lungime bloc 64

lungime cheie 56

observat ii A fost utilizat pe scar a destul de larg a, ind sust inut ca standard de c atre guvernul Statelor Unite ale Americii. In prezent este nesigur datorit a lungimii mici a cheii (a fost deja spart prin fort a brut a). Au existat si speculat ii cum c a ar fost proiectat astfel nc at s a e u sor de spart de c atre cei care ar cunoa ste ni ste detalii de proiectare. Const a n aplicarea de 3 ori succesiv a cifrului DES, cu 2 sau toate 3 cheile distincte. A fost creat pentru a nu inventa un cifru total nou, dar f ac and imposibil a spargerea prin fort a brut a. Desemnat, n urma unui concurs, ca nou standard utilizat de guvernul american. Proiectat de doi belgieni, Joan Daemen si Vincent Rijmen si publicat sub numele rijndael. Creat de Carlisle Adams si Staord Tavares n 1996. Creat de Bruce Schneier n 1993. Creat de Bruce Schneier si alt ii si a participat la concursul pentru AES. Creat de Ross Anderson, Eli Biham si Lars Knudsen; candidat pentru AES. Creat de Ronald Rivest; candidat pentru AES; patentat n favoarea rmei RSA Security. Creat de Ronald Rivest n 1987; foarte rapid; are c ateva sl abiciuni, care pot contracarate prin articii legate de modul de utilizare.

3DES

64

112 sau 168

AES

128

128, 192 sau 256

CAST-128

Blowsh Twosh Serpent RC6

64 ntre 40 si 128 bit i 64 p an a la 448 bit i 128 p an a la 256 bit i 128 128, 192 sau 256 128 128, 192 sau 256 ux p an a la 256 bit i

RC4

Tabelul 6.1: Cifruri mai cunoscute.

c 2008, Radu-Lucian Lup sa


160 t 6.1. Asigurarea confident ialita ii

1111 0000 0000 1111 0000 1111


C C

Vector init ializare

Text clar

11 00 00 11 00 11 00 11

1111 0000 000 111 000 111 0000 1111 000 111 000 111 0000 1111 000 111 000 0000 111 1111 000 111 000 111
Text cifrat
(a) Criptarea

Vector Text cifrat init ia000 111 000 000 lizare 111 000111 000111 111 000 111 000 111

000111 111 000111 000 111 000 000 111 000 111
D D D

Text clar
(b) Decriptarea

1 0 0 1 0 1 0 1

Figura 6.2: Criptarea n mod CBC

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 161

vectorul de init ializare este ales aleator, repet arile unui bloc de text cifrat vor extrem de rare (imposibil de exploatat de adversar). Vectorul de init ializare trebuie ales satisf ac and : - s a e distribuit uniform si necorelat cu textul clar sau alt i vectori de init ializare; - s a nu poat a controlat de adversar; - s a nu poat a aat de adversar c at timp adversarul ar putea inuent a textul clar, pentru a mpiedica un atac cu text clar ales. Vectorul de init ializare se construie ste utiliz and una din urm atoarele variante: - se genereaz a cu un generator de numere aleatoare criptograc (vezi 6.4) si se transmite n clar naintea mesajului; - se stabile ste prin metode asem an atoare cu stabilirea cheii (vezi 6.3); - dac a se transmit mai multe mesaje unul dup a altul, vectorul de init ializare pentru un mesaj se ia ca ind ultimul bloc al mesajului precedent (ca la nl ant iurea blocurilor n cadrul aceluia si mesaj). Pentru a mpiedica un atac cu text clar ales, dac a textul clar al unui mesaj este format dup a expedierea mesajului precedent este necesar trimiterea unui mesaj care s a e ignorat de destinatar si cu cont inut aleator. CFB Cipher Feedback: CFB si urm atorul mod, OFB, sunt utilizate n special acolo unde mesajele sunt mult mai scurte dec at dimensiunea blocului, ns a emit atorul transmite aceluia si receptor o secvent a mai lung a de mesaje (presupunem c a un mesaj nu poate grupat mpreun a cu urm atorul deoarece, de exemplu, un mesaj depinde de r aspunsul receptorului la mesajul precedent; prin urmare, un mesaj nu este disponibil pentru criptare nainte ca mesajul precedent s a e criptat n totalitate si trimis). CFB cripteaz a fragmente de text clar de dimensiune x a m. Dimensiunea m a fragmentului trebuie s a ndeplineasc a o singur a restrict ie, si anume s a e un divizor al dimensiunii n a blocului cifrului. Se poate lua m = 8 si atunci cifrul cripteaz a c ate un caracter. CFB funct ioneaz a astfel (vezi g. 6.3): Emit atorul genereaz a aleator un vector de init ializare de n bit i, pe care l transmite receptorului si l ncarc a totodat a ntr-un registru de deplasare. Apoi, pentru ecare caracter de

c 2008, Radu-Lucian Lup sa


162 t 6.1. Asigurarea confident ialita ii registru de deplasare

registru de deplasare

Se ignor a

Se ignor a

+
Text clar
(a) Criptarea

Text cifrat

1 0 0 1 0 1

11 00 00 11 00 11

+
Text clar
(b) Decriptarea

Text cifrat

Figura 6.3: Criptarea n mod CFB

criptat, emit atorul: - cripteaz a cont inutul registrului de deplasare utiliz and cheia secret a, - execut a xor pe bit i ntre urm atorii m bit i din textul clar si primii m bit i din rezultatul cript arii, - transmite ca text cifrat rezultatul pasului precedent, - deplaseaz a cont inutul registrului de deplasare cu m bit i spre st anga, - introduce, pe pozit iile cele mai din dreapta ale registrului de deplasare, m bit i de text cifrat produs. CFB are o proprietate interesant a de autosincronizare : dac a la un moment dat, din cauza unor erori de transmisie, se pierde sincronismul dintre emit ator si receptor, sincronismul se reface automat dup a n bit i. De remarcat, de asemenea, c a decriptarea CFB utilizeaz a tot func tia de criptare a cifrului bloc. OFB Output Feedback: OFB este un mecanism asem an ator cu cifrul Vernam (cu cheie acoperitoare) (exemplul 6.2), ns a cheia este un sir pseudoaleator generat cu un algoritm de criptare. Primii n bit i din sirul pseudoaleator se obt in cript and vectorul de init ializare, urm atorii n bit i

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 163

se obt in cript and precedent ii n bit i pseudoaleatori, s. a. m. d. La OFB utilizarea unui vector de init ializare aleator este chiar mai important a dec at la celelalte moduri de criptare, ntruc at refolosirea unui vector de init ializare conduce la repetarea sirului pseudoaleator (cheia Vernam), rezult and un cifru relativ u sor de spart. CTR Counter: Se construie ste similar cu OFB, ns a sirul pseudoaleator se obt ine cript and numerele v , v + 1, v + 2, etc., reprezentate pe n bit i, v ind vectorul de init ializare. Modul CTR este foarte asemn an ator cu OFB, ns a are avantajul c a destinatarul poate decripta un fragment de mesaj f ar a a decripta tot mesajul p an a la fragmentul dorit. Acest fapt l face potrivit pentru criptarea sierelor pe disc. Totu si, deoarece cifrul Vernam aat la baz a este vulnerabil unui adversar av and la dispozit ie dou a texte clare criptate cu aceea si cheie, metoda este vulnerabil a dac a adversarul are posibilitatea de-a obt ine dou a variante ale unui sier.

6.1.5. Criptograe asimetric a (cu cheie public a)


Intuitiv, s-ar putea crede c a, dac a funct ia de criptare este complet cunoscut a (inclusiv cheia), funct ia invers a decriptarea este de asemenea calculabil a n mod rezonabil. In realitate, exist a funct ii de criptare (injective) a c aror cunoa stere nu permite decriptarea n timp rezonabil. In esent a, ideea este c a, de si m = c(t) este rezonabil de u sor de calculat, determinarea lui t din ecuat ia c(t) = m nu se poate face mult mai rapid dec at prin ncercarea tuturor valorilor posibile pentru t. Pentru ca o astfel de metod a de criptare s a e util a, trebuie ca destinatarul autorizat al mesajului s a-l poat a totu si decripta n timp rezonabil. Pentru aceasta, se cere ca funct ia de criptare c s a poat a inversat a u sor de c atre cineva care cunoa ste o anumit a informat ie, dicil de dedus din c. Aceast a informat ie va f acut a cunoscut a doar destinatarului mesajului criptat. De fapt, n cazul criptograei asimetrice, destinatarul mesajului este chiar autorul acestei informat ii secrete si a funct iei de criptare. Ca si n cazul criptograei simetrice, funct ia de criptare c prime ste un parametru, cheia kc , numit a cheie de criptare sau cheie public a. Astfel, criptarea se calculeaz a m = ckc (t). Pentru decriptare, vom nota cu d algoritmul general si cu kd informat ia care permite decriptarea n timp rezonabil. Decriptarea o scriem t = dkd (m). kd o numim cheie de decriptare sau cheie secret a. Fiecare cheie secret a kd este asociat a unei anumite chei publice kc , put and servi la decriptarea mesajelor criptate doar cu cheia public a pereche.

c 2008, Radu-Lucian Lup sa


164 t 6.1. Asigurarea confident ialita ii

Evident, cunosc and cheia public a kc este posibil, ns a trebuie s a e dicil computat ional, s a se calculeze cheia secret a kd corespunz atoare. Pentru ca sistemul de criptare s a e util mai este necesar s a existe un procedeu ecient (computat ional) de generare a unei perechi de chei (kc , kd ) aleatoare. Un sistem criptograc asimetric (sau cifru asimetric sau cifru cu cheie public a ) este un ansamblu format din algoritmii de criptare c si decriptare d si un algoritm de generare aleatoare a perechilor de chei (kc , kd ). Pentru ca sistemul criptograc s a e sigur trebuie ca rezolvarea ecuat iei ckc (t) = m cu necunoscuta t s a e dicil a computat ional. Implicit, determinarea cheii secrete kd corespunz atoare unei chei publice kc trebuie de asemenea s a e dicil a computat ional. Exemplul 6.4 (Cifrul RSA): Generarea cheilor se face astfel: se genereaz a numerele prime p si q (de ordinul a 500 cifre zecimale ecare); se calculeaz a n = pq si = (p 1)(q 1); se genereaz a aleator un num ar e {2, 3, . . . , 1}, relativ prim cu ; se calculeaz a d cu proprietatea c a ed 1 (mod ) (utiliz and algoritmul lui Euclid). Cheia public a este kc = (n, e), iar cheia secret a este kd = (n, d). Spat iul textelor clare si spat iul textelor cifrate sunt P = M = {0, 1, . . . , n 1}. Criptarea si decriptarea sunt: ckc (p) = pe dkd (m) = m
d

(mod n) (mod n)

(6.1) (6.2)

Cifrul a fost inventat de Rivest, Shamir si Adelman n 1977. Numele RSA vine de la init ialele autorilor. 6.1.5.1. Utilizarea criptograei asimetrice Pentru preg atirea comunicat iei, receptorul genereaz a o pereche de chei (kc , kd ) si face public a kc . Emit atorul poate cripta un mesaj, folosind kc , si numai posesorul lui kd l va putea decripta. Not am c a odat a criptat un mesaj, acesta nu mai poate decriptat nici m acar de autorul s au (de si autorul si dealtfel oricine poate verica dac a un text cifrat dat corespunde sau nu unui text clar dat). Dac a se dore ste comunicat ie bidirect ional a, se utilizeaz a c ate o pereche de chei (kc , kd ) distinct a pentru ecare sens.

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 165

O aceea si pereche de chei poate utilizat a de o entitate pentru toate mesajele pe care le prime ste, indiferent cu c a ti parteneri comunic a. Astfel, ecare entitate si stabile ste o pereche de chei din care cheia public a o transmite tuturor partenerilor de comunicat ie si cheia secret a o folose ste pentru a decripta mesajele trimise de tot i c atre ea. Pentru comparat ie, n criptograa simetric a, ecare pereche de parteneri ce comunic a trebuie s a aib a propria cheie secret a. Un sistem criptograc asimetric este n esent a un cifru bloc. Pentru a cripta o cantitate arbitrar a de text clar, se pot utiliza modurile ECB sau CBC. Modurile CFB, OFB si CTR nu sunt utilizabile deoarece utilizeaz a doar funct ia de criptare, care n cazul criptograei asimetrice este public a. Algoritmii criptograci asimetrici sunt mult mai lent i dec at cei simetrici. Din acest motiv, datele propriu-zise se cripteaz a de obicei cu algoritmi simetrici, iar cheia de criptare pentru date se transmite utiliz and criptograe asimetric a (vezi si 6.3).

6.2. Autenticarea mesajelor


Autenticarea mesajelor este un mecanism prin care destinatarul unui mesaj poate verica faptul c a autorul mesajului este o anumit a entitate si c a mesajul nu a fost modicat de altcineva. Vericarea autenticit a tii unui mesaj const a n aplicarea de c atre receptor a unui test de autenticitate asupra mesajului primit. Un test de autenticitate trebuie s a ndeplineasc a dou a propriet a ti: orice mesaj autentic s a treac a testul; pentru un mesaj neautentic, produs cu un efort computat ional rezonabil, probabilitatea ca mesajul s a treac a testul s a e extrem de mic a. Exist a dou a nivele distincte de ,,spargere a unui test de autenticitate: fals existent (engl. existential forgery ): posibilitatea ca un adversar s a genereze un mesaj neautentic care s a treac a testul de autenticitate. Mesajul astfel produs nu trebuie s a aib a un cont inut inteligibil; trebuie doar s a e acceptat de algoritmul de autenticare. fals ales (engl. choosen forgery ): n plus fat a de falsul existent, cont inutul mesajului neautentic este (total sau n mare parte) la alegerea adversarului. Evident, un mesaj, acceptat ca autentic o dat a, va acceptat ca autentic si n cazul unei repet ari ulterioare. Prevenirea unor atacuri bazate pe

c 2008, Radu-Lucian Lup sa


166 6.2. Autentificarea mesajelor

repetarea unor mesaje anterioare este o problem a separat a si va studiat a n 6.2.4. In studiul metodelor de autenticare a mesajelor, presupunem c a mesajul de transmis nu este secret. Aceasta deoarece n practic a apare frecvent necesitatea ca un mesaj public s a poat a testat de oricine n privint a autenticit a tii. De exemplu, textul unei legi este o informat ie public a, dar un cet a tean ar trebui s a poat a verica dac a textul ce i-a parvenit este textul autentic emis de autoritatea abilitat a. Remarc am de asemenea c a faptul c a un mesaj criptat utiliz and un algoritm simetric poate decriptat de c atre receptor (utiliz and cheia secret a) si este inteligibil nu e o garant ie privind autenticitatea mesajului. Intr-adev ar, pentru unele metode de criptare, cum ar modul OFB al oric arui cifru bloc, un adversar poate opera modic ari asupra textului cifrat cu efecte previzibile asupra textului clar, chiar dac a nu cunoa ste efectiv textul clar. Din acest motiv, metodele de asigurare a condent ialit a tii se separ a de metodele de control a autenticit a tii.

6.2.1. Funct ii de dispersie criptograce


In general (nu neap arat n criptograe), prin funct ie de dispersie (engl. hash function ) se nt elege o funct ie h care asociaz a unui sir de bit i t, de lungime oric at de mare, o valoare ntreag a ntr-un interval de forma [0, 2n ) cu n xat (sau echivalent, un sir de bit i de lungime n), satisf ac and condit ia c a, pentru sirurile care apar in problema unde se folose ste funct ia de dispersie, dou a siruri distincte s a nu aib a aceea si valoare a funct iei de dispersie n cu probabilitate semnicativ mai mare de 2 . Valoarea funct iei de dispersie aplicat a unui sir se nume ste dispersia acelui sir. O funct ie de dispersie criptograc a este o funct ie de dispersie care are anumite propriet a ti suplimentare, dintre cele enumerate n continuare: 1. rezistent a la preimagine (engl. preimage resistence ): d andu-se h(t), s a e dicil de reg asit t. Eventual, dicultatea s a se p astreze chiar n cazul cunoa sterii unei p art i din t. 2. rezistent a la a doua preimagine (engl. second preimage resistence ): d andu-se un sir t, s a e dicil de g asit un al doilea sir t , cu t = t, astfel nc at h(t) = h(t ). 3. rezistent a la coliziuni (engl. collision resistence ): s a e dicil de g asit dou a siruri distincte t1 si t2 (t1 = t2 ), astfel nc at h(t1 ) = h(t2 ). De remarcat c a cele trei condit ii sunt diferite. Totu si, condit ia de rezistent a la coliziuni implic a rezistent a la a doua preimagine. De asemenea,

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 167

majoritatea funct iilor rezistente la coliziuni satisfac si condit ia de rezistent a la preimagine. Num arul de bit i n ai dispersiei trebuie s a e sucient de mare pentru a mpiedica c autarea unei coliziuni prin fort a brut a. Conform paradoxului zilei de na stere, exist a sanse mari de g asire a unei coliziuni ntr-o mult ime de 2n/2 intr ari. Pentru a face impractic un atac prin fort a brut a, trebuie ca n/2 64 ( si mai bine n/2 80), de unde n 128 sau mai bine n 160. Funct iile de dispersie mai cunoscute sunt descrise n tabelul 6.2. Nume MD5 lungime 128 observat ii Creat a de Ronald Rivest n 1991. Este extrem de r asp andit a, ns a c ateva sl abiciuni descoperite recent o fac destul de nesigur a. Dezvoltat a de NSA (National Security Agency, SUA). Deocamdat a este mai sigur a dec at MD5, dar are deja c ateva sl abiciuni. Dezvoltat a la Katholieke Universiteit Leuven n 1996.

SHA1

160

RIPEMD-160

160

Tabelul 6.2: Funct ii de dispersie criptograce.

6.2.1.1. Utilizarea funct iilor de dispersie Presupunem existent a ntre emit ator si receptor a dou a canale de transmitere a informat iei: un canal principal nesigur si un canal sigur dar cu capacitate foarte redus a. Ca exemplu practic, canalul nesigur este Internet-ul, iar canalul sigur este un bilet scris sau o convorbire telefonic a. Presupunem de asemenea c a h este o funct ie de dispersie rezistent a la a doua preimagine si preferabil rezistent a la coliziuni. Emit atorul unui mesaj t calculeaz a s = h(t). Apoi, transmite t prin canalul principal si transmite s prin canalul sigur. Receptorul testeaz a dac a h(t) = s. Un adversar care ar modica t n t ar trebui s a g aseasc a un t cu h(t ) = h(t) pentru a p ac ali receptorul; acest lucru este nefezabil n virtutea propriet a tii de rezistent a la a doua preimagine a funct iei de dispersie h. Exist a situat ii practice n care t este (part ial) la dispozit ia adversarului. De exemplu, presupunem c a secretara redacteaz a un mesaj t la cererea sefului, secretara put and alege formularea exact a a mesajului t. S eful si exprim a acordul asupra mesajului calcul and si trimit and destinatarului s = h(t). Dac a adversarul este secretara, ea nu se g ase ste n situat ia de-a crea un t satisf ac and h(t ) = h(t) pentru t xat (adic a de-a crea a doua preimagine) ci

c 2008, Radu-Lucian Lup sa


168 6.2. Autentificarea mesajelor

este n situat ia de-a crea t si t distincte cu h(t) = h(t ) (adic a de-a g asi o coliziune). Din acest motiv, o funct ie de dispersie utilizat a pentru controlul autenticit a tii mesajelor se cere s a e rezistent a la coliziuni. Exist a pe sistemele Linux comenzile md5sum si sha1sum care calculeaz a si a seaz a dispersia md5 respectiv sha1 a cont inutului unui sier. Dispersia este a sat a n hexa. Dac a not am ntr-un loc sigur dispersia unui sier, putem controla ulterior dac a sierul a fost sau nu modicat ntre timp.

6.2.2. Funct ii de dispersie cu cheie


O funct ie de dispersie cu cheie (engl. keyed hash function ), numit a si MAC (message authentication code ), este o funct ie de dispersie hk (t), parametrizat a cu o cheie k , av and proprietatea c a, pentru cineva care nu cunoa ste dinainte cheia k , este nefezabil computat ional s a obt in a o (nou a) pereche (s, t) n care s = hk (t), chiar dac a cunoa ste un num ar de perechi (si , ti ) cu si = hk (ti ). O funct ie de dispersie cu cheie se utilizeaz a astfel: Mai nt ai, emit atorul si receptorul se nt eleg asupra unei chei secrete k (de exemplu conform metodelor din 6.3). La trimiterea unui mesaj t, emit atorul calculeaz as= hk (t) si trimite mpreun a perechea (s, t). Receptorul testeaz a dac a s = hk (t). Orice autenticare prin dispersie cu cheie este a priori vulnerabil a la un atac numit atac prin reexie, descris n continuare. Not am cu A si B cele dou a p art i care comunic a si cu k cheia de dispersie utilizat a pentru autenticarea mesajelor. Un adversar activ poate intercepta un mesaj trimis de A c atre B si s a-l trimit a napoi lui A. Dac a aceea si cheie k este utilizat a pentru autenticarea ambelor sensuri de comunicat ie ( si de la A la B , si de la B la A) si dac a mesajele au acela si format, atunci A accept a mesajul ca venind de la B . Pentru a preveni un atac prin reexie, exist a dou a solut ii: Se utilizeaz a chei distincte pentru cele dou a sensuri. Fiecare mesaj cont ine numele entit a tii emit atoare. Eventual, numele entit a tii nu apare efectiv n mesajul transmis, dar particip a la calculul dispersiei: s = hk (t A) si A trimite spre B perechea (t, s). Argumente similare cu cele privind dimensiunea blocurilor la cifrurile bloc si dimensiunea cheii de cifrare conduc la cerint e pentru mpiedicarea atacurilor prin fort a brut a: dimesiunea cheii si dimensiunea dispersiei de minim 64 de bit i, preferabil 80 de bit i. O construct ie uzual a pentru funct ii de dispersie cu cheie pornind de la funct ii de dispersie rezistente la coliziuni si rezistente la preimagine este

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 169

(conform [RFC 2104, 1997]): hk (m) = hash(K opad hash(K ipad m)) unde: reprezint a concatenarea, este operat ia sau exclusiv, hash este funct ia de dispersie criptograc a (de exemplu md5 sau sha1 ), K este cheia k completat a la o lungime B aleas a n funct ie de anumite particularit a ti ale funct iei de dispersie de la baz a; pentru md5 si sha1, B se ia de 64 de octet i. ipad si opad sunt siruri obt inute prin repetarea de B ori a octetului cu valoarea (hexa) 36, respectiv 5C. Rezultatul funct iei hash se poate trunchia la lungime mai mic a (not am c a funct ia de dispersie hash d a 128160 bit i, iar pentru o dispersie cu cheie sunt sucient i 6480 de bit i). Trunchierea are ca avantaj mic sorarea cantit a tii de informat ie pus a la dispozit ia adversarului. O construct ie uzual a pentru funct ii de dispersie cu cheie pornind de la un cifru bloc este urm atoarea: se completeaz a mesajul la un num ar ntreg de blocuri; se execut a o criptare n mod CBC cu un vector de init ializare zero (sau init ializat cu dispersia mesajului precedent); rezultatul cript arii ultimului bloc se cripteaz a utiliz and o a doua cheie (cheia funct iei de dispersie este considerat a ca ind concatenarea celor dou a chei de criptare), rezult and valoarea dispersiei.

6.2.3. Semn atura digital a


Semn atura digital a este o construct ie similar a dispersiei cu cheie, studiat a n paragraful precedent. Construct ia este ns a asimetric a, utiliz and chei diferite pentru crearea dispersiei (numit a, n acest caz, semn atur a) si, respectiv, pentru vericare dispersiei. Astfel, relat ia dintre semn atura digital a si dispersia cu cheie este similar a cu cea dintre criptograa asimetric a si criptograa simetric a. O schem a de semn atur a digital a are urm atoarele elemente: un algoritm prin care se poate genera aleator o pereche de chei (ks , kv ), unde ks este cheia secret a sau cheia de semn atur a, iar kv este cheia public a sau cheia de vericare.

c 2008, Radu-Lucian Lup sa


170 6.2. Autentificarea mesajelor

o funct ie de semnare h; o funct ie de vericare v . In faza preg atitoare, autorul de mesaje semnate genereaz a o pereche de chei (ks , kv ) si transmite cheia public a kv receptorului sau receptoarelor. La transmiterea cheii publice, trebuie utilizat un canal sigur, astfel nc at cheia s a nu poat a modicat a n timpul transmisiei. Autorul mesajului t creaz a semn atura s = hks (t) si transmite perechea (s, t). Receptorul veric a dac a vkv (t, s) = true. A sa cum se vede, semn atura s depinde si de mesajul de semnat t si de semnatarul acestuia (mai exact de cheia ks ). Ca urmare, o semn atur a nu poate t aiat a de pe un mesaj si plasat a pe alt mesaj. Unii algoritmi de semn atur a digital a necesit a un al treilea argument pentru funct ia de semn atur a; acest argument trebuie s a e un num ar aleator. In acest caz exist a mai multe semn aturi valide pentru un acela si mesaj. O posibilitate de construct ie pentru semn atur a este pe baza unui mecanism de criptare asimetric n care criptarea este bijectiv a; de exemplu RSA are aceast a proprietate. Construct ia simplicat a este: hks (t) = dks (t) vkv (t, s) = (ckv (s) = t) Construct ia de mai sus se bazeaz a pe nefezabilitatea calculului lui s = dks (t) f ar a cunoa sterea lui ks . Totu si, construct ia aceasta permite adversarului s a produc a un fals existent: un adversar poate alege aleator un s si calcula t = ckv (s). O mbun at a tire a semn aturii electronice de mai sus este s a nu se aplice dks direct asupra lui t ci asupra unei dispersii rezistente la preimagine si la coliziuni a lui t. Metoda are dou a avantaje, pe de o parte c a algoritmul de criptare asimetric, lent, se aplic a asupra dispersiei si nu asupra ntregului mesaj (dispersia se calculeaz a mai repede dec at criptarea asimetric a), iar pe de alt a parte se mpiedic a falsul existent deoarece chiar dac a adversarul calculeaz a ckv (s) nu poate g asi un mesaj t cu dispersia astfel xat a. Semn atura digital a asigur a nu doar autenticarea mesajelor, ci si nonrepudiabilitatea mesajelor. Acest lucru se nt ampl a deoarece cheia de semn atur a este cunoscut a doar de c atre emit ator. Ca urmare, doar emit atorul poate genera semn atura. Prin urmare, prezent a unei semn aturi vericabile atest a faptul c a documentul a fost produs de emit ator. Funct iile de dispersie cu cheie nu realizeaz a (direct) mesaje nerepudiabile deoarece receptorul poate produce mesaje semnate la fel de bine ca si emit atorul.

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 171

6.2.4. Vericarea prospet imii mesajelor


Este adesea necesar ca receptorul s a poat a distinge ntre un mesaj (autentic) ,,nou si o copie a unui mesaj mai vechi. De exemplu, dac a mesajul cere destinatarului s a execute o operat ie neidempotent a, cum ar s a transfere o sum a de bani dintr-un cont n altul, este necesar ca destinatarul s a accepte mesajul doar o singur a dat a. O copie a unui mesaj ,,vechi este identic a cu originalul din momentul c and acesta era ,,nou. Ca urmare, un test de autenticitate nu detecteaz a niciodat a vechimea mesajului. Not am c a testul de prospet ime nu poate consta n simpla vericare dac a un mesaj este identic cu vreunul dintre mesajele anterioare. Aceasta deoarece, pe de o parte, producerea unui mesaj identic cu un mesaj anterior este perfect legitim a (de exemplu, se poate cere un nou transfer, const and n aceea si sum a de bani c atre acela si destinatar), iar pe de alt a parte, memorarea tuturor mesajelor deja primite nu este fezabil a. Solut iile problemei veric arii prospet imii sunt similare cu metodele de transmisie sigur a ( 4.3), cu diferent a c a trebuie s a reziste la atacuri voite, nu numai la disfunct ionalit a ti nt ampl atoare. Ideea este s a introducem n mesajul autenticat un ,,identicator de mesaj care s a e diferit de la un mesaj la altul si asupra c aruia s a se execute de fapt testul de prospet ime. Un astfel de element se nume ste num ar unic (engl. nonce, de la number (used) once ). Num arul unic poate : un num ar de ordine: Emit atorul tine evident a unui num ar curent de ordine. Pentru ecare mesaj, emit atorul scrie num arul curent n mesaj si incrementeaz a apoi num arul curent. Receptorul tine de asemenea evident a num arului curent de ordine. La ecare mesaj primit, veric a dac a num arul din mesaj coincide cu num arul curent de ordine; n caz contrar mesajul nu este acceptat. Dup a acceptarea unui mesaj, num arul curent de ordine este incrementat. Remarc am c a num arul de ordine poate omis din mesajul transmis efectiv; el trebuie doar s a participe la calculul semn aturii mesajului. Metoda are dou a neajunsuri: necesit a ment inerea pe termen lung a numerelor de ordine curente si necesit a un contor separat de num ar de ordine pentru ecare partener de comunicat ie. ora curent a: Emit atorul scrie, n mesajul autenticat, ora curent a. Receptorul consider a mesajul proasp at dac a ora din mesaj coincide cu ora curent a a receptorului. Din p acate, receptorul este nevoit s a accepte un decalaj de cel put in c ateva zecimi de secund a, deoarece ceasurile nu sunt

c 2008, Radu-Lucian Lup sa


172 6.2. Autentificarea mesajelor

perfect sincronizate si deoarece transportul mesajului nu este instanta neu. In interiorul acestui decalaj admis, adversarul poate trimite copii ale mesajului, copii ce vor acceptate ca proaspete de destinatar. Pentru corectarea acestei probleme, mecanismul se face astfel: Emit atorul se asigur a c a dou a mesaje distincte vor avea num arul unic distinct. Pentru aceasta, e rezolut ia marcajului de timp se face mai n a dec at timpul necesar emiterii unui mesaj, e emit atorul mai tine un contor care se incrementeaz a la ecare mesaj trimis si f acut astfel nc at s a nu se reseteze nainte ca marcajul de timp s a treac a la urm atoarea valoare. Receptorul memoreaz a numerele unice ale mesajelor primite, pe durata c at marcajul de timp din mesaj este acceptabil de c atre testul de prospet ime (de exemplu, dac a mesajul este trimis la ora 08:12:45 si testul de prospet ime accept a un decalaj de 10 secunde, num arul unic al mesajului va p astrat p an a la ora 08:12:55). La primirea unui mesaj, receptorul veric a dac a marcajul de timp este actual ( n interiorul intervalului acceptabil) si dac a num arul unic nu este identic cu cel al unuia dintre mesajele memorate. Utilizarea orei la vericarea prospet imii necesit a un mecanism sigur care s a ment in a sincronismul ceasurilor dispozitivelor care comunic a. un num ar (aleator) ales de receptor: Receptorul care a steapt a un mesaj trimite emit atorului un num ar aleator proasp at generat. Num arul aleator trebuie s a aib a cel put in 6480 bit i, pentru ca s a nu se repete (dec at cu probabilitate neglijabil de mic a) si s a nu poat a prezis de c atre adversar. Emit atorul adaug a num arul la mesajul trimis. Receptorul accept a un mesaj ca proasp at doar dac a num arul aleator din mesaj coincide cu num arul aleator tocmai trimis. Ca si pentru varianta cu num ar de ordine, num arul aleator nu este necesar s a e inclus n mesaj; este sucient s a participe la calculul semn aturii mesajului. Neajunsul principal al metodei este necesitatea de-a transfera num arul aleator dinspre receptor spre emit ator. In plus, este necesar ca receptorul s a stie c a urmeaz a s a primeasc a un mesaj, ceea ce necesit a adesea nc a un mesaj (emit atorul spune vezi c a vreau s a-t i spun ceva, receptorul r aspunde trimit and num arul aleator si, n nal, emit atorul trimite mesajul propriu-zis). Acest lucru face aplicarea metodei scump a si n anumite cazuri imposibil a de exemplu metoda nu este aplicabil a pentru securizarea po stei electronice sau pentru protocoale de difuziune (broadcast). In cazul unui schimb de mai multe mesaje, de exemplu o sesiune

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 173

ssh, se poate combina num arul aleator cu un num ar de ordine. La deschiderea conexiunii, receptorul trimite num arul aleator. Emit atorul include n ecare pachet al conexiunii num arul aleator primit la deschiderea conexiunii si num arul de ordine al pachetului.

6.2.5. Combinarea cript arii, autentic arii si veric arii prospe timii
Vericarea prospet imii unui mesaj se face pe baza unui num ar unic inclus n mesaj, num ar unic pe care receptorul l veric a la primirea mesajului. Dac a num arul unic are o singur a valoare valid a, se poate conveni c a num arul nu se transmite efectiv, ns a dispersia sau semn atura se calculeaz a ca si c and num arul ar parte a mesajului. Combinarea cript arii cu autenticarea se poate face n trei moduri: Se calculeaz a nt ai semn atura sau dispersia, iar apoi se cripteaz a rezultatul concaten arii datelor utile cu dispersia sau semn atura. De si nu exist a o sl abiciune cunoscut a, unii criptogra sust in c a prezent a dispersiei n mesajul criptat ar putea oferi unui adversar o posibilitate de-a sparge criptarea [Rogaway 1995]. Se cripteaz a mai nt ai mesajul, iar apoi se calculeaz a dispersia sau semn atura mesajului criptat. Pentru aceast a metod a, este necesar ca o anumit a cheie pentru semn atur a sau dispersie s a nu se utilizeze dec at cu o singur a cheie de criptare. In caz contrar, este posibil ca un mesaj criptat cu o cheie s a e copiat de adversar si trimis destinatarului dup a schimbarea cheii de criptare. Mesajul trece testul de autenticitate, ns a, n urma decript arii cu noua cheie, rezult a un alt text clar dec at cel original (vulnerabilitate de tip fals existent). Se cripteaz a doar textul clar, iar apoi la textul cifrat rezultat se adaug a semn atura sau dispersia textului clar. Dac a autenticarea se face prin dispersie cu cheie, metoda nu prezint a vulnerabilit a ti ( n caz contrar, se poate ar ata c a funct ia de dispersie este vulnerabil a la fals existent). Acest mod de combinare a cript arii cu dispersia cu cheie este utilizat de protocolul ssh versiunea 2. Dac a autenticarea se face prin semn atur a digital a, metoda nu este corect a deoarece permite unui adversar care b anuie ste textul clar s a verice dac a textul clar este cel b anuit de el.

6.3. Stabilirea cheilor


In paragrafele precedente, am presupus c a partenerii de comunicat ie dispun deja de cheile necesare cript arii si autentic arii mesajelor transmise. In

c 2008, Radu-Lucian Lup sa


174 6.3. Stabilirea cheilor

cele ce urmeaz a, vom studia cum se poate face ca aceste chei s a e disponibile partenerilor. Cheile respective pot chei pentru criptograe simetric a sau pentru autenticare prin dispersie cu cheie, caz n care cheile le vom numi chei simetrice, sau pot chei publice pentru criptograe asimetric a sau pentru semn atur a digital a. Transmiterea celor dou a tipuri de chei au cerint e distincte. In cazul unei chei simetrice, act iunea prin care cheia este generat a si f acut a disponibil a partenerilor de comunicat ie se nume ste stabilirea cheii . Un protocol de stabilire a cheii trebuie s a ndeplineasc a urm atoarele cerint e: Cheia stabilit a s a nu poat a cunoscut a de altcineva dec at de entit a tile ce doresc s a comunice. Act iunea de satisfacere a acestei cerint e poart a denumirea de autenticarea cheilor si este obligatorie n orice proces de stabilire a cheilor. Cheia stabilit a s a e proasp at a si, eventual, s a nu poat a impus a unilateral de vreuna dintre p art i ci s a e calculat a din elemente generate de ecare dintre parteneri. Aceast a cerint a este util a pentru a pre nt ampina situat ia n care un adversar, care reu se ste s a obt in a o cheie mai veche, ar putea determina entit a tile care comunic a s a refoloseasc a acea cheie. Fiecare entitate ce comunic a s a aib a conrmarea c a partenerul de comunicat ie a primit efectiv cheia. Act iunea care veric a satisfacerea aceastei cerint e poart a denumirea de conrmarea cheii, iar conrmarea cheii mpreun a cu autenticarea cheii poart a denumirea de autenticarea explicit a a cheii. Este posibil s a nu se prevad a conrmarea cheii ca parte a protocolului de stabilire a cheii; n acest caz, nceperea comunicat iei propriu-zise cu ajutorul cheii respective constituie conrmarea cheii. Not am c a, n anumite cazuri, autenticarea cheii stabilite se face unilateral (adic a doar una dintre entit a ti stie cu certitudine ce entitate mai cunoa ste cheia negociat a). In astfel de cazuri, a doua entitate e nu are nevoie s a o autentice pe prima (de exemplu, a doua entitate este un server public), e utilizeaz a un mecanism de autenticare a utilizatorilor ( 6.5). In cazul unei chei publice, act iunea prin care cheia este f acut a disponibil a partenerilor se nume ste certicarea cheii. Spre deosebire de cazul cheilor simetrice, unde transmisia unei chei ntre partenerii de comunicat ie se face doar pentru o cheie proasp at generat a, n cazul cheilor publice se nt ampl a frecvent ca o aceea si cheie public a s a e transmis a de mai multe ori c atre o aceea si entitate. Certicarea unei chei are urm atoarele cerint e: Receptorul unei chei publice s a poat a verica dac a cheia primit a este ntr-adev ar cheia public a a partenerului de comunicat ie. Receptorul cheii s a poat a verica dac a cheia mai este valid a. O cheie

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 175

public a trebuie s a poat a invalidat a dac a se suspecteaz a c a a fost compromis a cheia secret a corespunz atoare. In prezent a unui adversar, stabilirea cheilor simetrice si certicarea cheilor publice necesit a mecanisme de securizare a comunicat iei (criptare si autenticare). Stabilirea cheilor sau certicarea cheilor ntre dou a entit a ti care nu au deja chei care s a le permit a o comunicat ie securizat a ntre ele se poate face prin dou a metode: cu ajutorul unui tert de ncredere : Aceast a metod a necesit a existent a unei a treia entit a ti care s a poat a deja comunica securizat cu ecare din primele dou a si care s a prezinte ncredere acestora. prin intermediul unui utilizator uman ( 6.3.5). Dup a rolul lor fat a de un mecanism de stabilire a cheilor, cheile se numesc: chei efemere (engl. ephemeral key ) sau chei de sesiune (engl. session key ), utilizate pentru comunicat ia propriu-zis a ntre dou a entit a ti. O cheie efemer a se utilizeaz a pe durat a scurt a, de exemplu pe durata unei conexiuni sau pentru a cripta un singur mesaj. Ea este creat a special pentru o anumit a ocazie si este distrus a imediat dup a aceea. Deoarece, din motive de vitez a, comunicat ia propriu-zis a este protejat a prin criptograe simetric a si, uneori, prin dispersie cu cheie, cheile efemere sunt chei simetrice. chei de lung a durat a (engl. long-term key ), utilizate n cadrul mecanismelor de stabilire sau certicare a cheilor. Cheile de lung a durat a pot chei simetrice sau chei asimetrice. Mai d am c ateva considerente practice legate de stabilirea sau certicarea cheilor: Num arul de chei pe care trebuie s a le posede o entitate pentru a putea comunica trebuie s a e c at mai mic. Ideal, ecare entitate dispune de o singur a cheie de lung a durat a, permit and o comunicat ie securizat a cu un tert de ncredere. Atunci c and entitatea are nevoie s a comunice cu o alt a entitate, obt ine, prin intermediul tert ului de ncredere, cheia necesar a comunic arii cu partenerul dorit. Dup a utilizare, cheia respectiv a poate stears a. Intervent ia manual a n stabilirea cheilor trebuie s a e minim a. Totu si, un prim transport manual al unei chei este ntotdeauna necesar.

c 2008, Radu-Lucian Lup sa


176 6.3. Stabilirea cheilor

Deoarece cheile de lung a durat a pot aate de adversari, cheile trebuie s a poat a schimbate periodic. De asemenea, dac a un adversar nregistreaz a comunicat ia legat a de stabilirea unei chei de sesiune si, ulterior, obt ine o cheie de lung a durat a utilizat a n stabilirea acelei chei de sesiune, este bine s a nu poat a s a obt in a cheia de sesiune, pentru a nu putea mai departe decripta sesiunea.

6.3.1. Stabilirea cheilor n prezent a unui adversar pasiv


Ne vom ocupa n continuare de stabilirea unei chei de sesiune ntre dou a entit a ti, A si B , n prezent a unui adversar pasiv si n lipsa vreunei chei deja disponibile. Cu alte cuvinte, problema este ca A si B s a ajung a la un secret partajat printr-o comunicat ie integral la vedere. In acest paragraf nu ne vom ocupa de situat ia n care un adversar ar putea participa activ n schimbul de mesaje. Aplicarea metodelor din acest paragraf n prezent a unui adversar activ permite atacul omului din mijloc descris n 6.3.1.3. Exist a dou a metode utilizabile n acest scop: utilizarea criptograei asimetrice, alte metode, dintre care cea mai cunoscut a este metoda Die-Hellman. 6.3.1.1. Stabilirea cheilor prin criptograe asimetric a Protocolul este urm atorul: Preg atirea: A genereaz a o pereche de chei pentru criptograe asimetric a; cheia secret a este cheia sa de lung a durat a. Stabilirea cheii de sesiune: a) A trimite lui B cheia public a a lui A. b) B genereaz a aleator o cheie de sesiune k c) B trimite lui A cheia de sesiune k criptat a cu cheia public a primit a de la A d) A decripteaz a cheia transmis a de B O variant a mbun at a tit a este ca A s a aib a, pe l ang a cheia (mai bine zis, perechea de chei) de lung a durat a, o a doua pereche de chei pentru criptograe asimetric a care s a e regenerat a periodic. A transmite lui B ambele chei publice (cheia de lung a durat a si cheia public a proasp at a), iar B cripteaz a cheia de sesiune cu cheia proasp at a iar rezultatul l cripteaz a cu cheia de lung a

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 177

durat a. Avantajul obt inut este c a dac a un adversar obt ine cheia secret a de lung a durat a a lui A, dar ntre timp cheia proasp at a a expirat si a fost distrus a, adversarul nu mai poate decripta comunicat iile vechi. Solut ia n varianta simpl a este utilizat a de PGP/GPG. Aici emit atorul mesajului are rolul lui B si receptorul are rolul lui A. Emit atorul obt ine cheia public a a receptorului, iar la trimiterea unui mesaj genereaz a aleator o cheie de sesiune, cripteaz a mesajul folosind cheia de sesiune si cripteaz a cheia de sesiune folosind cheia public a a destinatarului. Mesajul transmis cont ine cele dou a elemente criptate. Solut ia n varianta mbun at a tit a este aplicat a de protocolul ssh versiunea 1. Serverul are rolul lui A, gener and perechile de chei si transmit and clientului cele dou a chei publice. Clientul genereaz a cheia de sesiune si i-o trimite serverului criptat a pe r and cu cele dou a chei. 6.3.1.2. Stabilirea cheii prin metoda Die-Hellman Protocolul este urm atorul: 1. Se genenereaz a (pe o cale oarecare) un num ar prim p mare si un num ar g; 2. A alege un num ar aleator x si calculeaz a si-i transmite lui B num arul nA = g x mod p; 3. B alege un num ar aleator y si calculeaz a si-i transmite lui A num arul nB = g y mod p; 4. A si B calculeaz a cheia de sesiune k astfel: A calculeaz a k = (nB )x mod p, iar B calculeaz a k = (nA )y mod p. Cheia de sesiune calculat a de cei doi este aceea si: (g x mod p)y mod p = (g y mod p)x mod p = g xy mod p, iar calcularea lui g xy mod p cunosc and doar g , n, g x mod p si g y mod p este foarte dicil a. Ca avantaj fat a de solut ia din paragraful precedent, nu este necesar a o cheie de lung a durat a. De asemenea, aplicarea metodei Die-Hellman este

c 2008, Radu-Lucian Lup sa


178 6.3. Stabilirea cheilor

mai rapid a dec at regenerarea la ecare mesaj a unei perechi de chei pentru un cifru asimetric. Ca dezavantaj, este necesar a o comunicat ie interactiv a; protocolul Die-Hellman nu este aplicabil transmiterii mesajelor prin po st a electronic a. 6.3.1.3. Atacul man-in-the-middle Protocoalele descrise n paragrafele 6.3.1.1 si 6.3.1.2 sunt aplicabile doar n absent a unui adversar activ. Un adversar activ I se poate interpune ntre A si B astfel: comunic a cu A juc and rolul lui B pentru a stabili o cheie de sesiune k1 ; comunic a cu B juc and rolul lui A pentru a stabili o cheie de sesiune k2 ; decripteaz a mesajele trimise de A lui B (acestea ind criptate cu k1 ), le cite ste, eventual le modic a, dup a care le cripteaz a ( si eventual le autentic a) utiliz and cheia k2 . Rezultatul atacului este c aA si B cred c a comunic a ecare cu cel alalt c and de fapt ei comunic a cu I . Exist a metode, bazate pe transmiterea n fragmente a mesajelor, care mpiedic a forma pur a a atacului man-in-the-middle; totu si, n general, pentru ca A s a-l disting a pe B de un adversar este necesar ca B s a aib a o caracteristic a distinctiv a inimitabil a; o astfel de caracteristic a este cunoa sterea unei chei secrete. Ca urmare, n orice comunicat ie sigur a trebuie s a existe cel put in un pas din init ializare n care s a se transfere o cheie ntre B si A, sau ntre B si un tert de ncredere si ntre tert si A.

6.3.2. Stabilirea cheilor n prezent a unui adversar activ


Vom studia n continuare problema stabilirii unei chei de sesiune ntre dou a entit a ti, A si B , n prezent a unui adversar activ. In urma protocolului, cheia de sesiune trebuie s a e cunoscut a doar de A si de B si s a e proasp at a (un adversar s a nu poat a impune alegerea unei chei stabilite la o execut ie anterioar a a protocolului). In acest scop, presupunem c aA si B si-au stabilit chei de lung a durat a, simetrice sau asimetrice, pentru criptare si autenticare. Exist a multe protocoale de stabilire a cheilor n aceast a situat ie. In general, aceste protocoale se construiesc astfel: 1. Fie una dintre p art i genereaz a aleator o cheie si o transmite criptat partenerului, e se aplic a un protocol de tipul Die-Hellman. 2. Fiecare parte trimite celeilalte un nonce (de exemplu un num ar aleator).

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 179

3. Fiecare parte trimite celeilalte o semn atur a sau o dispersie calculat a din informat iile de la punctele 1 si 2. Primul punct are ca scop obt inerea unei chei pe care s a o cunoasc a doar p art ile ntre care a avut loc schimbul de mesaje. Al doilea punct are rolul de-a asigura c a negocierea si, n consecint a, cheia rezultat a este proasp at a. Al treilea punct are rolul de-a asigura ecare parte c a mesajele de la punctele 1 si 2 au fost schimbate cu partenerul dorit. Dac a vericarea semn aturii sau dispersiei de la punctul 3 e sueaz a, nseamn a c a protocolul a fost inuent at de un adversar activ si, n consecint a, cheia negociat a este compromis a. Este esent ial deci ca, p an a n momentul n care vericarea auenticit a tii mesajelor transmise a fost efectuat a cu succes, cheia negociat a s a nu e utilizat a. Exemplul 6.5: Transmiterea unei chei prin criptare simetric a se poate face dup a cum urmeaz a. Not am cu A si B cele dou a entit a ti care comunic a, cu Kc o cheie pentru criptare simetric a, cunoscut a doar de A si de B si cu Kh o cheie pentru dispersie, de asemenea cunoscut a doar de A si de B . 1. A alege un num ar aleator rA si-l transmite lui B . 2. B alege cheia de sesiune k . Apoi calculeaz a si transmite x = cKc (k ) si s = hKh (rA k ). 3. A decripteaz a x obt in and k si veric a dispersia s. De remarcat c a, dac a transmisia cont in and cheia de sesiune k criptat a cu cheia de lung a durat a Kc este interceptat a de un adversar, iar adversarul obt ine ulterior cheia Kc , atunci adversarul poate decripta cheia de sesiune si ntreaga sesiune protejat a cu aceast a cheie. Exemplul 6.6: Stabilirea cheii de sesiune prin schimb Die-Hellman si autenticare prin semn atur a digital a se face dup a cum urmeaz a. Protocolul este, cu mici modic ari, cel utilizat de ssh versiunea 2. In cele ce urmeaz a, not am cu A si B cele dou a entit a ti, cu g si p baza si modulul din schimbul DieHellman, cu KsA si KsB cheile (secrete) de semn atur a ale lui A si B si cu KvA si KvB cheile (publice) de vericare corespunz atoare. 1. A alege dou a numere aleatoare, rA , utilizat pentru asigurarea prospet imii schimbului de chei, si xA utilizat pentru derivarea cheii prin metoda Die-Hellman. Apoi A transmite lui B numerele rA si nA = g xA mod p (unde g si p sunt parametrii pentru Die-Hellman). 2. B procedeaz a similar, aleg and rB si x B si transmit and rB si nB = x B g mod p. 3. A transmite lui B semn atura sA = hKsA (rA nA rB nB ).

c 2008, Radu-Lucian Lup sa


180 6.3. Stabilirea cheilor

4. analog, B transmite lui A semn atura sB = hKsB (rB nB rA nA ). 5. A veric a semn atura sB si, dac a se potrive ste, calculeaz a cheia de sesiune A k = nx mod p . B 6. B veric a semn atura sA si, dac a se potrive ste, calculeaz a cheia de sesiune xB k = nA mod p.

6.3.3. Stabilirea cheilor cu ajutorul unui tert de ncredere


Vom studia n continuare problema stabilirii unei chei ntre dou a entit a ti A si B care nu partajeaz a n prealabil nici un fel de cheie, n prezent a unui adversar activ. Presupunem, n schimb, existent a unei a treia entit a ti (un tert de ncredere, engl. trusted third party ), T , satisf ac and condit iile: A si T partajeaz a chei pentru criptare si autenticare (KcA , respectiv KhA ); B si T partajeaz a chei pentru criptare si autenticare; (KcB , respectiv KhB ); A si B au ncredere n serviciile oferite de T . T se mai nume ste server de distribuire a cheilor (engl. Key Distribut ion Center KDC). Mai presupunem c a protocolul de stabilire a cheii este init iat de c atre A. Ideea solut iei este urm atoarea: serverul T genereaz a aleator o cheie de sesiune, pe care o transmite lui A si lui B . Transmisia c atre A este criptat a si autenticat a cu cheia partajat a ntre A si T , iar transmisia c atre B este criptat a si autenticat a cu cheia partajat a ntre B si T . Deoarece este de presupus c a T face acest serviciu pentru mai multe entit a ti, pachetele transmise c atre A si B trebuie s a cont in a si numele lor, astfel nc at, la primirea pachetului, A si B s a stie cine este partenerul cu care comunic a. Simplicat, protocolul ar urm atorul: 1. A transmite spre T o cerere n clar prin care cere o cheie de sesiune pentru B ; 2. T genereaz a o cheie de sesiune k ; 3. T transmite spre A un pachet (A, B, cKcA (k ), hKcA (k A B))

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 181

4. T transmite spre B un pachet (A, B, cKcB (k ), hKcB (k A B)) 5. A decripteaz a cheia de sesiune k si veric a dispersia, precum si numele A si B; 6. B procedeaz a la fel ca si A. Protocolul de mai sus ofer a doar autenticarea cheii; nu veric a si prospet imea acesteia. Vulnerabilitatea introdus a este dat a de faptul c a un adversar poate trimite mesajele de la pa sii 3 si 4 n locul serverului T pentru a fort a stabilirea unei chei vechi. Dac a adversarul reu se ste s a obt in a o cheie de sesiune, el poate fort a astfel stabilirea aceleia si chei, compromise, n sesiunile urm atoare. Pentru vericarea prospet imii, trebuie introduse n mesaje ni ste elemente de control al prospet imii. O prim a posibilitate, exploatat a de protocolul Kerberos, este ad augarea unei perioade de valabilitate. Perioada de valabilitate este ad augat a n mesajele transmise n pa sii 1, 3 si 4. A si B resping, n cadrul pa silor 5 si 6, cheia de sesiune dac a timpul curent este n afara perioadei de valabilitate nscrise n pachete l ang a cheie. Protocolul Kerberos mai aduce c ateva modic ari fat a de protocolul descris mai sus, una dintre ele ind aceea c a mesajul de la pasul 4 este trimis de T lui A mpreun a cu mesajul de la pasul 3, urm and ca A s a-l transmit a c atre B la deschiderea conexiunii c atre acesta. O a doua posibilitate, exploatat a de protocolul Otway-Rees, se bazeaz a pe numere aleatoare. Acesta prevede c aA si B transmit c atre T c ate un num ar aleator, iar T include num arul aleator transmis de A n mesajul de la pasul 3 si num arul aleator transmis de B n mesajul de la pasul 4. A si B veric a, n cadrul pa silor 5, respectiv 6, c a numerele aleatoare incluse n mesajul autenticat de la T sunt ntr-adev ar numerele trimise de ele. Utilizarea practic a a stabilirii cheilor cu ajutorul unui tert de ncredere se face construind un server T care creaz a chei de sesiune, la cerere, pentru toate entit a tile din ret ea. Astfel, T partajeaz a o cheie simetric a (de fapt, dou a: una pentru criptare, cealalt a pentru auteticare) cu ecare dintre entit a tile din ret ea. Intr-o ret ea mare, nu mai este posibil s a se lucreze cu un singur server T , deoarece aceasta ar cere tuturor s a aib a ncredere n administratorul serverului T . Pentru stabilirea de chei ntre orice dou a entit a ti n aceste

c 2008, Radu-Lucian Lup sa


182 6.3. Stabilirea cheilor

condit ii, se construie ste un sistem astfel: Se congureaz a mai multe servere de distribuire a cheilor, ecare entitate av and o cheie partajat a cu unul dintre aceste servere. Se congureaz a chei partajate ntre c ate dou a servere de distribuire a cheilor. Aceste chei partajate formeaz a leg aturi securizate ntre servere. Graful format de serverele de distribuire a cheilor si de leg aturile securizate trebuie s a e conex. Atunci c and o entitate A dore ste s a comunice cu o entitate B , se caut a un lant de servere, T1 ,. . . ,Tn , astfel nc at A s a aib a cheie partajat a cu T1 , T1 s a aib a cheie partajat a cu T2 , s. a. m. d. Apoi, se stabile ste, cu ajutorul lui T1 , o cheie ntre A si T2 ; cu ajutorul lui T2 se stabile ste o cheie ntre A si T3 s. a. m. d. p an a la obt inerea unei chei ntre A si B . In acest sistem, n loc s a aib a toat a lumea ncredere ntr-un singur server, ecare pereche de entit a ti care doresc s a comunice trebuie s a aib a ncredere n lant ul de servere ce particip a la stabilirea cheii.

6.3.4. Certicarea cheilor publice


Presupun and c a ecare entitate are o pereche cheie secret a cheie public a, o entitate A care dore ste s a comunice cu o entitate B si pune problema s a dob andeasc a cheia public a a lui B . Cheia public a nu este un secret, ns a trebuie ca autenticitatea ei s a e vericabil a. Solut ia imediat a este transportul cheii lui B de c atre un utilizator uman (vezi 6.3.5 pentru detalii). Acest lucru nu este ns a fezabil dec at pentru un num ar mic de chei. O solut ie aplicabil a n ret ele mari const a n utilizarea certicatelor. Un certicat este un ansamblu cuprinz and o cheie public a, un nume de entitate si o semn atur a a unui tert pe ansamblul celor dou a. Tert ul semnatar se nume ste autoritate de certicare. Prin semn atur a, autoritatea de certicare atest a c a cheia public a din certicat apart ine entit a tii al c arei nume gureaz a n certicat. Utilizarea certicatelor se face astfel. Dac a A nu are cheia public aa lui B , dar: are cheia public a a lui C dintr-o surs a sigur a, are un certicat pentru B semnat de C , dintr-o surs a nesigur a, are ncredere n C c a a vericat corect identitatea lui B nainte de a-i semna certicatul, atunci A poate verica semn atura lui C pe certicatul lui B si, dac a este corect a, poate prelua cheia lui B de pe certicat.

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 183

Schema de mai sus poate cuprinde mai multe autorit a ti de certicare, din care o prim a autoritate a c arei cheie se obt ine prin transport de c atre om si un lant de autorit a ti din care ecare semneaz a certicatul urm atoareia. Pentru schimbarea cheilor, n cazul compromiterii unei chei secrete, se prev ad dou a mecanisme: expirarea cheilor. Un certicat are durat a de valabilitate limitat a; data creerii si data expir arii sunt de asemenea nscrise n certicat si semnate de autoritatea de certicare. O entitate a c arui certicat se apropie de expirare va crea o nou a pereche de chei si va solicita autorit a tii de certicare eliberarea unui nou certicat pentru noua cheie public a. Dup a expirare, un certicat nu mai este recunoscut de nimeni ca valid si nu mai este folosit. revocarea certicatelor. Se tin, pe servere accesibile public, a sa-zise certicate de revocare ale certicatelor ale c aror chei secrete se consider a compromise. Un certicat de revocare al unui certicat este un ansamblu cuprinz and datele de identicare ale certicatului revocat si semn atura autorit a tii de certicare a certicatului revocat asupra acelor date de identicare. Publicarea unui certicat de revocare pentru un certicat anunt a invalid arii certicatului original. O entitate care utilizeaz a un certicat va verica nainte, de ecare utilizare, dac a nu exist a un certicat de revocare al certicatului respectiv. Certicatul de revocare poate produs doar de c atre autoritatea de certicare emitent a sau de posesorul certicatului.

6.3.5. Transportul prin utilizatori umani


Orice protocol sigur de stabilire a cheilor are nevoie cel put in o dat a de un canal sigur bazat pe alte mijloace dec at cele criptograce. Acest canal este necesar pentru transportul unei prime chei criptograce, utilizabil a pentru transportul sigur al altor chei. Acest canal sigur implic a ntotdeauna intervent ia omului, si se prezint a sub una din urm atoarele forme: 1. Omul transport a, pe un suport amovibil (dischet a, CD, DVD, memorie ash) sau printr-o leg atur a ad-hoc securizat a (cablu direct), o cheie de pe sistemul surs a pe sistemul destinat ie. Eventual aceast a cheie poate cheia public a a unei autorit a ti recunoscute, cheie nglobat a ntr-un produs soft (de regul a browserele web au nglobate astfel de chei); 2. Omul cite ste o informat ie de pe sistemul surs a si o introduce sau o veric a pe sistemul destinat ie. Cantitatea de informat ie astfel trans-

c 2008, Radu-Lucian Lup sa


184 6.3. Stabilirea cheilor

portabil a este mic a, de ordinul c atorva sute de bit i cel mult. Metoda este greu de aplicat pentru informat ii secrete, deoarece informat ia este a sat a pe ecranul sistemului surs a si ca urmare este vizibil a persoanelor din apropiere. Informat iile astfel transportate sunt de obicei dispersiile criptograce ale unor chei publice. 3. Omul inventeaz a o parol a si o introduce pe ambele sisteme. Parola este utilizat a pe post de cheie secret a. Omul este utilizat at at cu rolul de canal sigur de transport, c at si ca generator de ,,numere aleatoare. Ne vom ocupa n continuare de aspecte privind implementarea metodelor 2 si 3. Metoda 2 necesit a o scriere a unui sir de bit i ntr-o form a u sor de citit de c atre un om. Trebuie tinut cont de faptul c a omul nu poate atent simultan la un ansamblu prea mare de obiecte diferite (simboluri, grupuri de simboluri, cuvinte). Intre citirile unor astfel de grupuri, omul trebuie s a si poat a lua puncte de reper pentru a sti unde a r amas. Ca urmare, un grup de cifre sau simboluri f ar a leg atur a intre ele (adic a care nu constituie un cuv nt din vocabularul utilizatorului) nu trebuie s a e mai mare de 68 simboluri. O dispersie md5 scris a direct n hexa cuprinde 32 simboluri (cifre hexa); utilizatorul va avea nevoie s a pun a degetul pe ecran pentru a o citi. Dac a aceea si dispersie md5 este scris a ca 8 grupuri de c ate 4 cifre, cu spat iu sau alt separator ntre grupuri, devine mult mai u sor de citit. Pentru siruri mai lungi, devine necesar un al doilea nivel de grupare. O alt a metod a, mai dicil de pus n practic a, este transformarea sirului de bit i ntr-un sir de cuvinte dintr-un dict ionar standard sau ntr-un sir de silabe ce alc atuiesc cuvinte, probabil f ar a sens, dar pronunt abile. Pentru un dict ionar de 4096 cuvinte, un cuv ant codic a 12 bit i. O dispersie md5 poate scris a ca un sir de 11 cuvinte. Un astfel de sir de cuvinte poate memorat mai u sor dec at secvant a de 32 cifre hexa echivalent a. Pentru a aplica metoda 3, remarc am pentru nceput c a o parol a inventat a si memorat a de om nu poate utilizat a direct pe post de cheie. Ideal, dac a caracterele utilizate pentru parol a sunt cele 94 caractere ASCII imprimabile, parola ar avea o entropie de 6,44 bit i pe caracter. Se estimeaz a c a un text n limbaj natural nu are mai mult de 12 bit i pe caracter. O parol a ce poate memorat a rezonabil va avea o entropie cuprins a undeva ntre aceste dou a limite. Pe de alt a parte, securitatea unui sistem criptograc se bazeaz a pe faptul c a entropia cheii este de 1 bit pe cifr a binar a (vezi 6.1.3). Rezult a de aici dou a lucruri: Parola trebuie trecut a printr-un ,,concentrator de entropie nainte de-a

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 185

utilizat a ca si cheie. Acest ,,concentrator de entropie poate o funct ie de dispersie (nu neap arat criptograc a). Parola trebuie s a e sucient de lung a ( si de aleator aleas a) ca s a furnizeze efectiv bit ii de entropie necesari. O fraz a n limbaj natural, utilizat a pentru derivarea unei chei de 128 bit i, trebuie s a aib a cam 85 litere ( n jur de 20 de cuvinte). De obicei este nerezonabil s a cerem unui om s a utilizeze o parol a cu entropie sucient de mare. In acest caz, mic sorarea lungimii efective a cheii derivate din parol a trebuie compensat a prin ngreunarea ncerc arii cheilor de c atre adversar. Mai exact, protocolul ce utilizeaz a cheia derivat a din parol a trebuie modicat n a sa fel nc at s a nu permit a unui adversar s a fac a ncercarea exhaustiv a a cheilor pe ma sina lui (unde poate dispune de putere mare de calcul si nu las a urme) ci s a trebuiasc a s a contacteze una din ma sinile care cunosc cheia (ma sini care nregistreaz a tentativa si pot refuza un num ar prea mare de tentative n timp scurt). Ca terminologie, distingem tentative de spargere o-line, n care adversarul poate verica dac a o parol a este corect a utiliz and doar echipamentele proprii, si tentative de spargere on-line, n care adversarul contacteaz a serverul atacat, ncerc and s a deschid a o conexiune cu parola supus a veric arii. Dac ao cheie nu poate spart a o-line, o lungime efectiv a (entropie) de 3040 bit i este sucient a. O parol a bun a, n acest context, trebuie s a aib a doar 56 cuvinte, sau, dac a cont ine cifre si punctuat ie, 1012 caractere.

6.4. Numere aleatoare


Un sistem criptograc utilizeaz a numere aleatoare, n diverse scopuri: generarea cheilor, generarea vectorilor de init ializare sau a salt -urilor, generarea numerelor unice (nonce ). Numerele aleatoare generate trebuie s a e uniform distribuite si in dependente unul de altul. In plus fat a de alte aplicat ii, numerele aleatoare pentru scopuri criptograce trebuie s a nu poat a prev azute sau inuent ate de un eventual adversar. (Condit ii similare trebuie ndeplinite de numerele aleatoare utilizate pentru jocuri de noroc cu miz a serioas a.) Exist a dou a metode utilizabile pentru generarea numerelor aleatoare: generatoare zice, care funct ioneaz a pe baza unor fenomene zice sucient de aleatoare;

c 2008, Radu-Lucian Lup sa


186 6.4. Numere aleatoare

generatoare de numere pseudoaleatoare, care produc numerele prin calcule (prin urmare, numerele generate sunt deterministe), dar algoritmul de generare ,,amestec a sucient de bine numerele pentru ca sirul de numere rezultat s a par a aleator.

6.4.1. Generatoare zice


Generatoarele zice se mpart mai departe n generatoare zice dedicate, pe de o parte, si dispozitive av and alte scopuri, dar utilizabile pentru producerea de numere aleatoare, pe de alt a parte. Dispozitivele dedicate se pot baza pe zgomotul termic al unui rezistor, dezintegrarea unei substant e radioactive sau curent ii de aer din interiorul carcasei unui harddisc. Dispozitivele dedicate sunt cele mai sigure si relativ rapide. Pe de alt a parte, utilizatorul este nevoit s a aib a ncredere c a produc atorul dispozitivului l-a construit corect si nu a instalat o ,,u s a dosnic a, permit andu-i acestuia s a prevad a numerele generate. In plus, ind produse n serie mai mic a, dispozitivele sunt relativ scumpe. Orice dispozitiv periferic prezint a un anumit grad de nedeterminism n comportamentul s au. De exemplu, s a m asur am timpul scurs ntre momentele n care sunt ap asate dou a taste consecutive si s a exprim am printr-un num ar durata respectiv a. Vom constata c a cifrele cele mai put in semnicative ale num arului respectiv sunt destul de aleatoare. Prin anumite prelucr ari, se poate extrage de aici un sir de numere aleatoare de calitate bun a. Alte dispozitive utilizabile n acest scop sunt: mausul, o videocamer a (eventual ndreptat a spre o ac ar a sau spre o ,,lamp a cu lav a), placa de ret ea ( ns a aici trebuie mult a grij a, deoarece pachetele primite de placa de ret ea pot supravegheate de adversar), un ceas (de fapt, dou a ceasuri independente, exploat and uctuat ia derivei relative a celor dou a ceasuri). Dispozitivele nededicate au ca avantaj pret ul mai redus si riscul mai mic de-a ,,m asluite de c atre fabricant. Debitul de bit i aleatori produ si variaz a ns a n funct ie de utilizarea sistemului; n particular, pentru un server care nu admite utilizatori locali este dicil de obt inut un debit satisf ac ator de bit i aleatori.

6.4.2. Generatoare de numere pseudoaleatoare


Un generator de numere pseudoaleatoare funct ioneaz a astfel: In ecare moment t, generatorul are asociat a o stare intern a st . Starea intern a este o valoare dintr-o mult ime arbitrar a sucient de mare. Atunci c and este nevoie de un num ar aleator, acest num ar este obt inut aplic and o funct ie asupra st arii interne. Num arul produs este deci xt =

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 187

f (st ), unde f este o funct ie xat a. Dup a producerea unui num ar aleator, starea intern a este modicat a, pentru ca urm atorul num ar s a nu mai aib a aceea si valoare. Actualizarea st arii interne se face pe baza unei a doua funct ii, g . Avem deci st+1 = g (st ). Dac a funct iile f si g ,,amestec a sucient de bine bit ii, sirul pseudoaleator produs, (xt )tIN are propriet a ti statistice sucient de apropiate de numerele cu adev arat aleatoare. De remarcat c a ntregul sir depinde de valoarea st arii init iale s0 a generatorului; pentru aplicat ii non-criptograce si pentru teste, acest lucru este bun deoarece face comportamentul programelor reproductibil. De asemenea, trebuie remarcat c a, deoarece, n practic a, mult imea st arilor interne posibile este nit a, mai devreme sau mai t arziu starea intern a se repet a si, ca urmare, ntregul sir pseudoaleator este periodic. Perioada sirului pseudoaleator este cel mult egal a cu num arul de st ari interne posibile. Pentru o funct ie g cu comportament apropiat de o funct ie aleatoare sau de o permutare aleatoare, perioada sirului este de ordinul r ad acinii p atrate din num arul de st ari interne posibile. Pentru scopuri criptograce, sunt necesare c ateva propriet a ti suplimentare: Un adversar care cunoa ste funct iile f si g utilizate si cunoa ste o parte dintre elementele sirului pseudoaleator (xt ) s a nu poat a calcula alte elemente ale sirului pseudoaleator. O condit ie necesar a pentru aceasta este ca funct ia f s a e rezistent a la preimagine. O alt a condit ie necesar a este ca mult imea st arilor interne posibile s a e sucient de mare pentru ca explorarea ei prin fort a brut a s a nu e posibil a practic. Starea init ial a s0 trebuie s a e creat a pornind de la un generator zic. In caz contrar, starea init ial a este previzibil a pentru un adversar si, ca urmare, ntregul sir este previzibil. Este bine ca, dac a un adversar reu se ste s a obt in a starea intern a st , s a nu poat a calcula numerele pseudoaleatoare deja generate (adic a x0 . . . xt1 ). Aceast lucru este util pentru ca, dac a un adversar reu se ste s a spagr a un calculator, s a nu poat a decripta comunicat iile anterioare. Pentru a ndeplini aceast a cerint a, este necesar ca si g s a e rezistent a la preimagine. Generatoarele de numere pseudoaleatoare utilizate n practic a nu se bazeaz a pe generatoare zice doar pentru starea init ial a s0 , ci modic a starea

c 2008, Radu-Lucian Lup sa


188 6.4. Numere aleatoare

intern a si n timpul funct ion arii generatorului, pe m asur a ce obt in bit i aleatori de la generatorul zic. Acest lucru are scopul ca, dac a un adversar reu se ste s a obt in a starea intern a la un moment dat sau s a ae starea intern a init ial a, s a nu poat a prevedea dec at o mic a parte dintre numerele aleatoare produse ulterior. De asemenea, starea init ial a nu este generat a la pornirea calculatorului, ntruc at, de obicei, n acel moment nu sunt disponibili prea mult i bit i aleatori de la generatoarele zice. Starea intern a este salvat a la oprirea calculatorului, ntr-un sier ce nu poate citit de utilizatorii obi snuit i, si re nc arcat a la pornirea calculatorului.

6.4.3. Generatoare utilizate n practic a


Sistemele de operare moderne ofer a utilizatorului generatoare criptograce de numere aleatoare gata implementate. Acestea sunt disponibile astfel: Pe unele sisteme de tip unix, sierul special /dev/random ofer a numere aleatoare de la un generator zic bazat pe act iunile utilizatorului. De asemenea, sierul special /dev/urandom ofer a numere pseudoaleatoare utilizabile pentru aplicat ii criptograce. Sistemul Windows ofer a funct ia CryptGenRandom(), declarat a n sierul antet wincrypt.h. De remarcat c a utilizarea unor funct ii non-criptograce pentru generarea numerelor aleatoare, cum ar rand() sau random() din biblioteca C standard este extrem de riscant a.

6.5. Autenticarea utilizatorilor


Prezent am n continuare c ateva utiliz ari ale metodelor criptograce n autenticarea utilizatorilor.

6.5.1. Stocarea parolelor


Un sistem de operare are nevoie s a verice parolele utilizatorilor ce doresc s a se conecteze. Solut ia trivial a este tinerea unei baze de date cu corespondent a nume, parol a. Aceast a solut ie (stocarea parolelor n clar) are un dezavantaj: un adversar care reu se ste s a sparg a sistemul sau un administrator indiscret poate obt ine direct parolele tuturor utilizatorilor. ,,Recolta este valoroas a dac a utilizatorii folosesc acelea si parole si pe alte sisteme. O mbun at a tire a securit a tii se face prin ,,criptarea parolelor. De fapt, nu este vorba de criptare, ci de transformarea parolei printr-o dispersie

c 2008, Radu-Lucian Lup sa


Capitolul 6. Metode si protocoale criptografice 189

criptograc a h rezistent a la preimagine. In baza de date este stocat a n locul parolei p transformata parolei s = h(p). La conectarea unui utilizator, sistemul cere parola utilizatorului si veric a, pentru parola introdus a p , dac a h(p ) = s. Deoarece h este rezistent a la preimagine, probabilitatea ca un adversar, care nu cunoa ste parola p, s a g aseasc a o parol a p satisf ac and h(p ) = s este neglijabil de mic a. Solut ia are n continuare o sl abiciune, legat a de faptul c a un adversar care obt ine s poate obt ine p printr-un dict ionar creat o-line: adversarul ia o mult ime de parole si, pentru ecare parol a, calculeaz a si memoreaz a dispersia, obt in and astfel un dict ionar care asociaz a dispersiei parola corespunz atoare. Inarmat cu un astfel de dict ionar, un adversar care obt ine s poate reg asi foarte rapid p dac a p era n dict ionarul ncercat. Metoda de mai sus poate mbun at a tit a, mpiedic and crearea unui dict ionar de dispersii si oblig and adversarul s a fac a toat a munca de spargere a parolelor dup a obt inerea lui s. Conform noii metode, la init ializarea parolei, sistemul genereaz a un num ar aleator r si scrie n sierul de parole perechea (r, s) unde s = h(p r). Vericarea parolei p dat a de utilizator se face test and dac a s = h(p r). Un adversar care ar dori s a fac a un dict ionar ar avea nevoie de un num ar de dispersii egal cu produsul dintre num arul de parole de ncercat si num arul de valori posibile pentru r. Not am c a, indiferent de mecanismul folosit la stocarea parolelor, un adversar ce a spart un sistem, sau un administrator indiscret, va putea ntotdeauna s a obt in a parola cu care se conecteaz a un utilizator la acel sistem. De exemplu, adversarul poate nlocui programul obi snuit de login cu un program care scrie undeva parola n clar. Schemele de mai sus protejeaz a doar parolele neutilizate dup a momentul spargerii sistemului. Mai not am c a, n vederea transmiterii parolei prin ret ea, transform arile descrise mai sus nu pot nlocui criptarea ,,adev arat a. Dac a, n vederea autentic arii utilizatorului, serverul cere h(p) ( n loc de p), atunci h(p) devine efectiv parola de conectare prin ret ea si orice adversar care cunoa ste h(p) poate impersona utilizatorul, f ar a a avea nevoie de p

6.5.2. Parole de unic a folosint a


O parol a de unic a folosint a (engl. One Time Password ) este o parol a care este acceptat a de sistem ca ind parol a valid a cel mult o dat a. Una din aplicat iile parolelor de unic a folosint a este conectarea la un sistem, n prezent a unui adversar pasiv, f ar a a recurge la criptare. Not am c a aplicativitatea este foarte limitat a: comunicat ia neind criptat a, metoda este inaplicabil a dac a datele trans-

c 2008, Radu-Lucian Lup sa


190 6.5. Autentificarea utilizatorilor

mise trebuie s a r am an a secrete; un adversar activ poate ,,deturna conexiunea dup a deschidere si poate da orice comenzi n numele utilizatorului conectat. Unul dintre sistemele de parole de unic a folosint a este descris n continuare. In cele ce urmeaz a, h este o dispersie rezistent a la preimagine, iar hn (x) = h(h(. . . h(x) . . .)). 1. Utilizatorul alege o parol a primar a, de lung a durat a, p . 2. La init ializarea parolei pe sistem, sistemul genereaz a si a seaz a un num ar aleator, nesecret, r. De asemenea, sistemul a seaz a un num ar de iterat ii, n, precongurat (uzual n = 10000). 3. Utilizatorul calculeaz a, cu ajutorul unui dispozitiv de calcul de ncredere, pn = hn (p r). Apoi transmite pn sistemului pe care dore ste s a- si congureze autenticarea. 4. Sistemul memoreaz a n baza de date ansamblul (pn , n, r). 5. La prima conectare, sistemul a seaz a r si n 1 si cere utilizatorului s a calculeze si s a introduc a parola de unic a folosint a pn1 = hn1 (p r). Sistemul veric a parola de unic a folosint a test and dac a h(pn1 ) = pn . Apoi sistemul nlocuie ste n baza de date (pn , n, r) cu (pn1 , n 1, r). Un avantaj al sistemului este faptul c a parola primar a p este cunoscut a doar de c atre dispozitivul utilizat pentru calculul parolelor de unic a folosint a. In particular, calculatorul care autentic a utilizatorul nu obt ine niciodat a si nici nu poate deduce parola primar a. Administratorul unui astfel de calculator nu poate impersona utilizatorul pe un alt calculator pe care utilizatorul utilizeaz a aceea si parol a primar a. Dezavantajul sistemului, fat a de parola clasic a, este c a utilizatorul are nevoie de un dispozitiv de calcul n vederea calcul arii parolelor de unic a folosint a. Proceduri de lucru pentru utilizator pot : Utilizatorul ruleaz a local un program pentru calculul parolelor de unic a folosint a. Aceast a metod a este aplicabil a doar dac a utilizatorul are deplin a ncredere n calculatorul local. Utilizatorul calculeaz a, cu ajutorul unui calculator de ncredere, urm atoarele 45 parole de unic a folosint a si le noteaz a pe h artie. Ca de obicei, scrierea parolelor pe h artie implic a un risc, ns a aarea parolelor de c atre un adversar nu permite dec at deschiderea unui num ar mic de sesiuni si mai ales nu permite aarea, de c atre adversar, a parolei primare. Utilizatorul folose ste un dispozitiv de calcul dedicat. Aceasta este metoda cea mai sigur a, dar si cea mai scump a.

Ret ele de calculatoare


Protocoale

Radu-Lucian Lup sa

c 2008, Radu-Lucian Lup sa


192 Aceasta este edit ia electronic a a c art ii Ret ele de calculatoare, publicat a la Casa C art ii de S tiint a, n 2008, ISBN: 978-973-133-377-9. Drepturile de autor apart in subsemnatului, Radu-Lucian Lup sa. Subsemnatul, Radu-Lucian Lup sa, acord oricui dore ste dreptul de a copia cont inutul acestei c art i, integral sau part ial, cu condit ia atribuirii corecte autorului si a p astr arii acestei notit e. Cartea poate desc arcat a gratuit de la adresa http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf

c 2008, Radu-Lucian Lup sa


195

Cuprins

Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de ret ea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei ret ele de calculatoare . . . . . . . . . . 1.3 Premise generale n elaborarea si implementarea protocoalelor n ret ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Not iuni de teoria informat iei 2.1 Problema codic arii informat iei pentru un canal discret . . 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a a codurilor prex . . . . . 2.2.2 Decodicarea n cazul codurilor prex . . . . . . . . . 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informat ie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia sierelor . . . . . . . . . . . . . . . . . . . 2.4 Coduri detectoare si corectoare de erori . . . . . . . . . . . 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare si corectoare de erori . 2.4.3 C ateva coduri detectoare sau corectoare de erori . . . 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii si coloane . . . . . . . . . . . . . 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare si corectoare de erori n alte domenii 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


196 3 Nivelul zic 3.1 Problema transmisiei informat iei la nivelul zic . . . . . . . 3.2 Transmiterea semnalelor . . . . . . . . . . . . . . . . . . . . 3.2.1 Modic arile suferite de semnale . . . . . . . . . . . . . . 3.2.2 Analiza transmiterii semnalelor cu ajutorul transformatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Codicarea informat iei prin semnale continue . . . . . . . . 3.3.1 Scheme de codicare . . . . . . . . . . . . . . . . . . . . 3.3.2 Modulat ia . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Multiplexarea n frecvent a . . . . . . . . . . . . . . . . 3.3.4 Capacitatea maxim a a unui canal de comunicat ie . . . . 3.4 Transmisia prin perechi de conductoare . . . . . . . . . . . . 3.4.1 Construct ia cablului . . . . . . . . . . . . . . . . . . . . 3.4.2 Propriet a ti ale mediului . . . . . . . . . . . . . . . . . . 3.4.3 Leg atur a magistral a . . . . . . . . . . . . . . . . . . . . 3.4.4 Considerente practice . . . . . . . . . . . . . . . . . . . 3.5 Transmisia prin unde radio . . . . . . . . . . . . . . . . . . . 3.5.1 Propagarea undelor . . . . . . . . . . . . . . . . . . . . 3.5.1.1 Polarizarea . . . . . . . . . . . . . . . . . . . . . . 3.5.1.2 Absorbt ia si reexia . . . . . . . . . . . . . . . . . 3.5.1.3 Difract ia . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1.4 Interferent a undelor . . . . . . . . . . . . . . . . . 3.5.1.5 Divergent a undelor . . . . . . . . . . . . . . . . . . 3.5.2 Antene . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.2.1 Directivitatea . . . . . . . . . . . . . . . . . . . . . 3.5.2.2 Polarizarea . . . . . . . . . . . . . . . . . . . . . . 3.5.2.3 Tipuri de antene . . . . . . . . . . . . . . . . . . . 3.5.3 Raza de act iune a unei leg aturi radio . . . . . . . . . . 3.5.3.1 Obstacolele . . . . . . . . . . . . . . . . . . . . . . 3.5.3.2 Linia orizontului . . . . . . . . . . . . . . . . . . . 3.5.3.3 Utilizarea satelit ilor articiali ai P am antului . . . . 3.5.3.4 Zgomotul . . . . . . . . . . . . . . . . . . . . . . . 3.5.3.5 Sc aderea puterii cu distant a . . . . . . . . . . . . . 3.5.3.6 Emisia direct ionat a si polarizat a . . . . . . . . . . 3.5.4 Spectrul radio si alocarea lui . . . . . . . . . . . . . . . 3.5.5 Particularit a ti ale sistemelor de comunicat ie prin radio 3.5.5.1 Topologia leg aturii . . . . . . . . . . . . . . . . . . 3.5.5.2 Fiabilitatea . . . . . . . . . . . . . . . . . . . . . . 3.5.5.3 Securitatea . . . . . . . . . . . . . . . . . . . . . . 3.6 Transmisia optic a . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Construct ia mediului . . . . . . . . . . . . . . . . . . . 3.6.1.1 Conectarea brelor optice . . . . . . . . . . . . . . 3.6.2 Propagarea semnalului optic . . . . . . . . . . . . . . . 3.6.2.1 Moduri de propagare . . . . . . . . . . . . . . . . . Cuprins 59 59 60 60 62 65 65 68 71 71 72 72 74 75 76 77 78 78 79 79 80 80 80 81 83 83 83 83 84 84 85 86 86 86 88 88 89 89 89 90 91 91 91

. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

c 2008, Radu-Lucian Lup sa


Cuprins 3.6.2.2 Caracteristici ale mediului . . . . . . . . . . . . . . . . . . . 3.6.2.3 Multiplexarea n lungimea de und a . . . . . . . . . . . . . . 3.6.3 Considerente practice . . . . . . . . . . . . . . . . . . . . . . . . 4 Nivelul leg aturii de date 4.1 Detectarea si corectarea erorilor . . . . . . . . . . . . . . . . . . . . 4.2 Controlul accesului la mediu . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Protocoale bazate pe asigurarea unui interval exclusiv de emisie 4.2.2 Protocoale bazate pe coliziuni si retransmitere . . . . . . . . . 4.2.3 Protocoale mixte . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Retransmiterea pachetelor pierdute . . . . . . . . . . . . . . . . . . 4.3.1 Principiul conrm arilor pozitive si retransmiterilor . . . . . . . 4.3.2 Trimiterea n avans a mai multor pachete . . . . . . . . . . . . 4.3.3 Spat iul numerelor de conrmare . . . . . . . . . . . . . . . . . 4.4 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cereri de suspendare si de continuare . . . . . . . . . . . . . . 4.4.2 Mecanismul pas cu pas . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Mecanism combinat cu retransmiterea pachetelor pierdute . . . 4.5 Multiplexarea n timp . . . . . . . . . . . . . . . . . . . . . . . . . . Nivelul ret ea si nivelul transport 5.1 Retransmiterea datelor de c atre nodurile intermediare . . . . . . . . 5.1.1 Retransmiterea n ret ele bazate pe datagrame . . . . . . . . . . 5.1.2 Retransmiterea n ret ele bazate pe conexiuni . . . . . . . . . . 5.2 Algoritmi de dirijare . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Calculul drumurilor cu informat ii complete despre graful ret elei 5.2.2 Calculul drumurilor optime prin schimb de informat ii de distant a 5.2.3 Dirijarea ierarhic a . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4 Metode particulare de dirijare . . . . . . . . . . . . . . . . . . 5.2.4.1 Inundarea . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.4.2 Inv a tarea rutelor din adresele surs a ale pachetelor . . . . 5.2.5 Metode de difuziune . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Funct ionarea la trac ridicat . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Alegerea pachetelor de transmis . . . . . . . . . . . . . . . . . 5.3.2 Controlul congestiei . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3 Formarea (limitarea) tracului . . . . . . . . . . . . . . . . . . 5.3.4 Rezervarea resurselor . . . . . . . . . . . . . . . . . . . . . . . 5.4 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 Interconectarea ret elelor . . . . . . . . . . . . . . . . . . . . . . . . Metode si protocoale criptograce 6.1 Asigurarea condent ialit a tii . . . 6.1.1 Introducere . . . . . . . . . . 6.1.2 Refolosirea cheilor . . . . . . 6.1.3 Problema spargerii unui cifru 197 92 92 93 95 96 97 98 99 101 102 103 108 109 114 115 115 116 117 119 120 122 122 125 127 128 136 139 139 140 140 141 142 143 144 145 146 147 149 151 151 154 155

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

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

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

c 2008, Radu-Lucian Lup sa


198 6.1.4 Algoritmi de criptare utilizat i n practic a . . . . . . . . . . 6.1.5 Criptograe asimetric a (cu cheie public a) . . . . . . . . . . 6.1.5.1 Utilizarea criptograei asimetrice . . . . . . . . . . . . 6.2 Autenticarea mesajelor . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Funct ii de dispersie criptograce . . . . . . . . . . . . . . . 6.2.1.1 Utilizarea funct iilor de dispersie . . . . . . . . . . . . . 6.2.2 Funct ii de dispersie cu cheie . . . . . . . . . . . . . . . . . . 6.2.3 Semn atura digital a . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Vericarea prospet imii mesajelor . . . . . . . . . . . . . . . 6.2.5 Combinarea cript arii, autentic arii si veric arii prospet imii 6.3 Stabilirea cheilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Stabilirea cheilor n prezent a unui adversar pasiv . . . . . . 6.3.1.1 Stabilirea cheilor prin criptograe asimetric a . . . . . 6.3.1.2 Stabilirea cheii prin metoda Die-Hellman . . . . . . 6.3.1.3 Atacul man-in-the-middle . . . . . . . . . . . . . . . . 6.3.2 Stabilirea cheilor n prezent a unui adversar activ . . . . . . 6.3.3 Stabilirea cheilor cu ajutorul unui tert de ncredere . . . . . 6.3.4 Certicarea cheilor publice . . . . . . . . . . . . . . . . . . 6.3.5 Transportul prin utilizatori umani . . . . . . . . . . . . . . 6.4 Numere aleatoare . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1 Generatoare zice . . . . . . . . . . . . . . . . . . . . . . . 6.4.2 Generatoare de numere pseudoaleatoare . . . . . . . . . . . 6.4.3 Generatoare utilizate n practic a . . . . . . . . . . . . . . . 6.5 Autenticarea utilizatorilor . . . . . . . . . . . . . . . . . . . . . 6.5.1 Stocarea parolelor . . . . . . . . . . . . . . . . . . . . . . . 6.5.2 Parole de unic a folosint a . . . . . . . . . . . . . . . . . . . Cuprins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 163 164 165 166 167 168 169 171 173 173 176 176 177 178 178 180 182 183 185 186 186 188 188 188 189

Protocoale
Cuprins 7 Codic ari de interes practic 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezent ari pe bit i . . . . . . . . . . . . . . . . . . . . . . 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 S iruri de bit i . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe bit i a numerelor ntregi . . . . . . . 7.1.2 Reprezent ari pe octet i . . . . . . . . . . . . . . . . . . . . . 7.1.2.1 Octet i . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 S iruri de octet i . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un num ar ntreg de octet i 7.1.2.4 Reprezentarea numerelor pe un sir arbitar de bit i . . . 7.1.3 Probleme privind reprezentarea lungimii sirurilor . . . . . . 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214

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

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

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

c 2008, Radu-Lucian Lup sa


Cuprins 7.2 Codicarea textelor . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Codicarea ASCII . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Codic arile ISO-8859 . . . . . . . . . . . . . . . . . . . . 7.2.3 Codic arile Unicode . . . . . . . . . . . . . . . . . . . . . 7.2.3.1 Codicarea UTF-8 . . . . . . . . . . . . . . . . . . . 7.2.3.2 Codic arile UTF-16 . . . . . . . . . . . . . . . . . . 7.2.3.3 Codic arile UTF-32 . . . . . . . . . . . . . . . . . . 7.3 Reprezentarea datei si orei . . . . . . . . . . . . . . . . . . . . 7.3.1 M asurarea timpului . . . . . . . . . . . . . . . . . . . . . 7.3.2 Obiectivele n alegerea reprezent arii timpului n calculator 7.3.3 Formate utilizate n practic a . . . . . . . . . . . . . . . . 7.3.3.1 Formatul utilizat de po sta electronic a . . . . . . . . 7.3.3.2 ISO-8601 si RFC-3339 . . . . . . . . . . . . . . . . . 7.3.3.3 Timpul POSIX . . . . . . . . . . . . . . . . . . . . . 7.3.3.4 TAI 64 . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Recodic ari . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4.1 Codicarea hexazecimal a . . . . . . . . . . . . . . . . . . 7.4.2 Codicarea n baza 64 . . . . . . . . . . . . . . . . . . . . 7.4.3 Codic ari bazate pe secvent e de evitare . . . . . . . . . . 8 Programarea n ret ea introducere 8.1 Interfat a de programare socket BSD . . . . . . . . . . 8.1.1 Comunicat ia prin conexiuni . . . . . . . . . . . . 8.1.1.1 Deschiderea conexiunii de c atre client . . . 8.1.1.2 Deschiderea conexiunii de c atre server . . . 8.1.1.3 Comunicat ia propriu-zis a . . . . . . . . . . 8.1.1.4 Inchiderea conexiunii . . . . . . . . . . . . . 8.1.2 Comunicat ia prin datagrame . . . . . . . . . . . 8.1.3 Principalele apeluri sistem . . . . . . . . . . . . 8.1.3.1 Funct ia socket() . . . . . . . . . . . . . . . 8.1.3.2 Funct ia connect() . . . . . . . . . . . . . . 8.1.3.3 Funct ia bind() . . . . . . . . . . . . . . . . 8.1.3.4 Funct ia listen() . . . . . . . . . . . . . . . 8.1.3.5 Funct ia accept() . . . . . . . . . . . . . . . 8.1.3.6 Formatul adreselor . . . . . . . . . . . . . . 8.1.3.7 Interact iunea dintre connect(), listen() si 8.1.3.8 Funct iile getsockname() si getpeername() 8.1.3.9 Funct iile send() si recv() . . . . . . . . . 8.1.3.10 Funct iile shutdown() si close() . . . . . . 8.1.3.11 Funct iile sendto() si recvfrom() . . . . . 8.1.4 Exemple . . . . . . . . . . . . . . . . . . . . . . 8.1.4.1 Comunicare prin conexiune . . . . . . . . . 8.1.4.2 Comunicare prin datagrame . . . . . . . . . 8.2 Formatarea datelor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 215 216 217 218 220 220 221 221 222 224 225 225 226 227 227 228 228 229 229 231 231 232 233 233 234 234 235 237 237 237 238 239 239 240 242 242 243 245 245 246 246 249 252

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

c 2008, Radu-Lucian Lup sa


200 8.2.1 Formate binare . . . . . . . . . . . . . . . 8.2.1.1 Tipuri ntregi . . . . . . . . . . . . . 8.2.1.2 S iruri de caractere si tablouri . . . . 8.2.1.3 Variabile compuse (struct-uri) . . . 8.2.1.4 Pointeri . . . . . . . . . . . . . . . . 8.2.2 Formate text . . . . . . . . . . . . . . . . 8.2.3 Probleme de robustet e si securitate . . . 8.2.4 Probleme privind costul apelurilor sistem 8.3 Probleme de concurent a n comunicat ie . . . . 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cuprins . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 252 254 255 257 257 257 258 260 263 263 266 272 274 277 279 279 279 280 280 281 281 282 283 283 285 286 286 291 291 292 293 294 294 295 296 298 298 300 300 301 301

Ret ele IEEE 802 9.1 Ret ele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Leg aturi punct la punct prin perechi de conductoare 9.1.2 Leg aturi prin bre optice . . . . . . . . . . . . . . . 9.1.3 Leg aturi prin cablu magistral a . . . . . . . . . . . . 9.1.4 Repetoarele si comutatoarele . . . . . . . . . . . . . 9.1.5 Dirijarea efectuat a de comutatoare (switch-uri) . . . 9.1.6 Facilit a ti avansate ale switch-urilor . . . . . . . . . . 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz a de adrese MAC . . . . . . . . 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Leg aturi redundante . . . . . . . . . . . . . . . 9.1.6.5 Ret ele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei ret ele . . . . . 9.2 Ret ele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea ret elelor 802.11 . . . . . . . . . . . . . .

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

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

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

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

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

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

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

10 Internetul 10.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirij arii pachetelor IP . . . . . . . . 10.2.2.1 Subret ele si interfet e . . . . . . . . . . 10.2.2.2 Prexul de ret ea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor si prexelor . . 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de ret ea . . . . . . . 10.2.4 Alocarea adreselor IP si prexelor de ret ea 10.2.4.1 Alocarea pe utiliz ari . . . . . . . . . . 10.2.4.2 Alocarea adreselor si dirijarea ierarhic a

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

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

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

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

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

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

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


Cuprins 10.2.5 Erori la dirijare si protocolul ICMP . . . . . . . . . . . . . . . . 10.2.5.1 Pachete nelivrabile . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.2 Diagnosticarea funct ion arii rutelor . . . . . . . . . . . . . . 10.2.5.3 Ciclarea pachetelor IP . . . . . . . . . . . . . . . . . . . . . 10.2.5.4 Congestia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.5 Redirect ionarea . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 Alte chestiuni privind dirijarea pachetelor . . . . . . . . . . . . . 10.2.6.1 Dimensiunea maxim a a pachetelor si fragmentarea . . . . . 10.2.6.2 Calitatea serviciului . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Congurarea si testarea unei ret ele IP locale . . . . . . . . . . . 10.2.7.1 Alegerea parametrilor . . . . . . . . . . . . . . . . . . . . . 10.2.7.2 Congurarea parametrilor de ret ea pe diverse sisteme de operare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7.3 Testarea si depanarea ret elelor . . . . . . . . . . . . . . . . 10.3 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Conexiuni cu livrare garantat a: protocolul TCP . . . . . . . . . 10.3.1.1 Principiul conexiunii TCP . . . . . . . . . . . . . . . . . . . 10.3.1.2 Comunicat ia bidirect ional a . . . . . . . . . . . . . . . . . . 10.3.1.3 Deschiderea si nchiderea conexiunii . . . . . . . . . . . . . 10.3.1.4 Alegerea num arului init ial de secvent a . . . . . . . . . . . . 10.3.1.5 Inchiderea fort at a a conexiunii . . . . . . . . . . . . . . . . 10.3.1.6 Identicarea aplicat iei destinat ie . . . . . . . . . . . . . . . 10.3.1.7 Corespondent a ntre funct iile socket() si act iunile modulului TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.8 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.9 Stabilirea time-out-ului pentru retransmiterea pachetelor . . 10.3.1.10Algoritmul lui Nagle si optimizarea num arului de pachete . 10.3.1.11Trimiterea datelor speciale (out of band) . . . . . . . . . . . 10.3.2 Datagrame nesigure: UDP . . . . . . . . . . . . . . . . . . . . . 10.4 Identicarea nodurilor dup a nume: sistemul DNS . . . . . . . . . . . 10.4.1 Numele de domeniu . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Structura logic a a bazei de date DNS . . . . . . . . . . . . . . . 10.4.3 Imp art irea n domenii de autoritate . . . . . . . . . . . . . . . . 10.4.4 Mecanismul de interogare a serverelor . . . . . . . . . . . . . . . 10.4.5 Sincronizarea serverelor pentru un domeniu . . . . . . . . . . . . 10.4.6 C autarea numelui dup a IP . . . . . . . . . . . . . . . . . . . . . 10.5 Leg aturile directe ntre nodurile IP . . . . . . . . . . . . . . . . . . . 10.5.1 Rezolvarea adresei ARP . . . . . . . . . . . . . . . . . . . . . 10.6 Congurarea automat a a stat iilor DHCP . . . . . . . . . . . . . . 10.7 Situat ii speciale n dirijarea pachetelor . . . . . . . . . . . . . . . . . 10.7.1 Filtre de pachete (rewall) . . . . . . . . . . . . . . . . . . . . . 10.7.2 Ret ele private . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.3 Translat ia adreselor (NAT) . . . . . . . . . . . . . . . . . . . . . 10.7.3.1 Translat ia adresei surs a . . . . . . . . . . . . . . . . . . . . 201 302 303 305 305 306 306 307 307 308 309 309 312 313 314 314 315 320 320 323 324 325 326 327 327 328 328 329 330 330 332 333 334 335 336 337 337 339 341 341 346 347 347

c 2008, Radu-Lucian Lup sa


202 Cuprins 10.7.3.2 Translat ia adresei destinat ie . . . . . . . . . . . . . . . . . . 350 10.7.4 Tunelarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 11 Aplicat ii n ret ele 11.1 Po sta electronic a . . . . . . . . . . . . . . . . . . . . . . . . 11.1.1 Formatul mesajelor . . . . . . . . . . . . . . . . . . . 11.1.1.1 Antetul mesajelor . . . . . . . . . . . . . . . . . . 11.1.1.2 Extensii MIME . . . . . . . . . . . . . . . . . . . 11.1.1.3 Ata sarea sierelor si mesaje din mai multe p art i 11.1.1.4 Codicarea corpului mesajului si a ata samentelor 11.1.2 Transmiterea mesajelor . . . . . . . . . . . . . . . . . 11.1.2.1 Protocolul SMTP . . . . . . . . . . . . . . . . . . 11.1.2.2 Determinarea urm atorului MTA . . . . . . . . . 11.1.2.3 Congurarea unui MTA . . . . . . . . . . . . . . 11.1.3 Securitatea po stei electronice . . . . . . . . . . . . . . 11.2 Sesiuni interactive la distant a . . . . . . . . . . . . . . . . 11.2.1 Protocolul ssh . . . . . . . . . . . . . . . . . . . . . . 11.2.1.1 Conexiunea ssh protejat a criptograc . . . . . . 11.2.1.2 Metode de autenticare n ssh . . . . . . . . . . . 11.2.1.3 Multiplexarea conexiunii, tunelarea si aplicat ii . 11.2.2 Sistemul X-Window . . . . . . . . . . . . . . . . . . . 11.3 Transferul sierelor n ret ea . . . . . . . . . . . . . . . . . 11.3.1 Protocolul ftp . . . . . . . . . . . . . . . . . . . . . . 11.3.2 Protocolul HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.1 Structura cererilor si a r aspunsurilor . . . . . . . 11.3.2.2 URL-urile . . . . . . . . . . . . . . . . . . . . . . 11.3.2.3 Alte facilit a ti HTTP . . . . . . . . . . . . . . . . 11.3.2.4 Proxy HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.5 Conexiuni securizate: SSL/TLS . . . . . . . . . . 11.3.2.6 Utilizarea TLS pentru web . . . . . . . . . . . . 11.4 PGP/GPG . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.4.1 Structura cheilor GnuPG . . . . . . . . . . . . . . . . 11.4.1.1 Chei primare si subchei . . . . . . . . . . . . . . 11.4.1.2 Utilizatori si identit a ti . . . . . . . . . . . . . . . 11.4.1.3 Generarea si modicarea cheilor . . . . . . . . . . 11.4.1.4 Controlul perioadei de valabilitate a cheilor . . . 11.4.1.5 Gestiunea cheilor secrete . . . . . . . . . . . . . . 11.4.2 Transmiterea si certicarea cheilor publice . . . . . . . 11.4.2.1 Transmiterea cheilor publice . . . . . . . . . . . . 11.4.2.2 Vericarea autenticit a tii cheilor . . . . . . . . . . 11.4.3 Transmiterea mesajelor criptate sau semnate . . . . . Bibliograe Index 353 353 354 355 358 359 360 362 362 365 366 368 371 373 373 376 379 379 380 381 382 383 384 385 386 387 389 390 390 391 392 392 393 395 395 395 397 399 401 405

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

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

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

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

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

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

c 2008, Radu-Lucian Lup sa


203

Capitolul 7

Codic ari de interes practic

7.1. Probleme privind reprezentarea numerelor ntregi


P an a aici am privit un mesaj transmis printr-o ret ea ca un sir de simboluri dintr-un alfabet nit. Intre simbolurile ce alc atuiesc sirul se stabile ste o ordine, exist and un prim element al sirului, un al doilea, etc. Transmisia elementelor se face n ordinea n care apar ele n sir, primul simbol transmis ind cel care ocup a prima pozit ie din sir. P an a aici am considerat c a transmisia unui sir de la un dispozitiv la altul conserv a ordinea ntre elemente. A sa cum vom vedea ns a n paragraful de fat a, din rat iuni legate de standardizarea reprezent arii numerelor ntregi, transmiterea unui sir nu conserv a ntotdeauna ordinea elementelor. In cele ce urmeaz a, vom examina interferent ele ntre reprezentarea numerelor n calculator si ordinea simbolurilor ce alc atuiesc un mesaj. Vom oferi cititorului o perspectiv a, inspirat a din [Cohen 1980] si mai put in nt alnit a n alte lucr ari, asupra relat iilor dintre bit i, octet i si reprezentarea numerelor.

7.1.1. Reprezent ari pe bit i


In paragraful de fat a vom face abstract ie de anumite complicat ii constructive ale sistemelor de calcul reale. Vom considera reprezent ari pe bit i, ignor and deocamdat a aspectele legate de gruparea bit ilor n octet i si de faptul c a, n memoria calculatorului, adresele identic a octet i si nu bit i. Ca urmare, rug am cititorul s a uite, pentru moment, not iunea de octet (byte ).

c 2008, Radu-Lucian Lup sa


204 7.1. Probleme privind reprezentarea numerelor ntregi

7.1.1.1. Bitul Pentru reprezentarea diverselor date, alegerea unui alfabet cu dou a simboluri este avantajoas a din dou a motive. Pe de o parte, este cel mai mic alfabet posibil, ca urmare alegerea unui alfabet cu dou a elemente aduce o anumit a simplitate si naturalet e construct iei matematice. Pe de alt a parte, din punct de vedere practic, al construct iei echipamentelor zice, dispozitive cu dou a st ari stabile sunt mult mai u sor de construit dec at dispozitive cu mai multe st ari. In scris, cele dou a simboluri sunt notate n mod obi snuit cu 0 si 1. Atragem atent ia c a: Alegerea celor dou a simboluri utilizate, precum si a corespondent ei dintre starea dispozitivului zic si simbolul asociat, poate f acut a oricum. Odat a ns a f acut a o alegere, aceasta trebuie respectat a de toate entit a tile implicate n comunicat ie. Numai n unele cazuri simbolurile au rol de cifr a, adic a au asociate valori numerice. Valoarea numeric a a unui simbol este important a doar dac a simbolul este interpretat ca num ar sau intr a n reprezentarea unui num ar. In restul cazurilor, este important doar s a existe simboluri distincte. Un simbol dintr-un alfabet cu dou a elemente se nume ste bit, de la binary digit (rom. cifr a binar a ). 7.1.1.2. S iruri de bit i In cadrul unui sir de bit i, avem nevoie s a identic am ecare bit al sirului. Pentru aceasta, se stabile ste o ordine a bit ilor: avem un prim bit, un al doilea bit, etc. Trebuie remarcat ns a c a ordinea este o convent ie: nu exist ao leg atur a direct a ntre ordinea convent ional a a unui sir de bit i si amplasamentul dispozitivelor zice care memoreaz a acei bit i. Num arul de ordine al unui bit, n cadrul acestei ordini convent ionale, se nume ste n mod obi snuit pozit ia (sau, eventual, adresa sau deplasamentul ) bitului. Numerotarea pozit iilor se face de obicei ncep and de la 0 sau de la 1; n cele ce urmeaz a vom utiliza numerotarea de la 0. La transmiterea unui sir de bit i, este natural ca primul bit transmis, consider and ordinea cronologic a, s a e primul bit al sirului (pozit ia 0). La memorarea unui sir ntr-o memorie cu acces direct (memorie RAM sau sier pe disc), este natural ca n celula cu adresa cea mai mic a, dintre celulele alocate sirului, s a e plasat primul bit al sirului (bitul de pe pozit ia 0). In acest fel, primul bit al unui sir nseamn a, simultan, bitul de pe pozit ia (convent ional a) 0, bitul transmis primul (cronologic) si bitul memorat la adresa cea mai mic a.

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 205

7.1.1.3. Reprezentarea pe bit i a numerelor ntregi Reprezentarea numerelor naturale prin siruri de bit i se bazeaz a pe ceea ce matematicienii numesc reprezentare pozit ional a n baza 2, pe care o presupunem cunoscut a. In reprezentarea ntr-o baz a de numerat ie, distingem cifra unit a tilor, av and ponderea 20 = 1, cifra de pondere 21 = 2 ( n baza zece s-ar numi cifra zecilor; pentru baza 2 nu avem un nume), cifra de pondere 22 = 4, etc. Exist a dou a alegeri posibile cu privire la leg atura dintre ponderile cifrelor n num ar si pozit iile lor n sir: 1. Primul bit al sirului este cifra de pondere maxim a. Aceasta alegere este identic a celei utilizate n scrierea numerelor n limbile ,,obi snuite (indo-europene), cu scriere de la st anga spre dreapta. Se mai nume ste big endian. In aceast a schem a de reprezentare, un sir de bit i b0 b1 . . . bn1 reprezint a num arul b0 2n1 + b1 2n2 + . . . + bn1 20 . 2. Primul bit al sirului este cifra de pondere 1. Aceast a reprezentare este asem an atoare scrierii numerelor n limbile semite (araba si ebraica, cu scriere de la dreapta spre st anga si unde numerele sunt scrise tot cu cifra unit a tilor n dreapta). Se mai nume ste little endian. Aceast a alegere are avantajul unei scrieri mai simple a relat iei dintre valoarea num arului si sirul de bit i: valoarea unui num ar reprezentat pe n bit i este b0 20 + b1 21 + . . . + bn1 2n1 . Fiind dou a scheme de reprezentare distincte, dac a un sistem transmite un num ar n reprezentare little endian, iar cel alalt sistem interpreteaz a sirul de bit i primit ca ind ntr-o reprezentare big endian, receptorul ,, nt elege alt num ar dec at cel transmis de emit ator. Ca urmare, orice protocol care specic a transmitere binar a a numerelor trebuie s a precizeze dac a se utilizeaz ao reprezentare little endian sau una big endian. Exemplul 7.1: Fie sirul de bit i 11001, n care am scris primul bit ( n sensul din 7.1.1.2) pe pozit ia cea mai din st anga. Dac a acest sir este reprezentarea big endian a unui num ar, num arul respectiv este 25. Dac a reprezentarea a fost f acut a n format little endian, num arul este 19.

c 2008, Radu-Lucian Lup sa


206 7.1. Probleme privind reprezentarea numerelor ntregi

Este important de remarcat c a distinct ia dintre schema de reprezentare big endian si schema little endian exist a numai acolo unde pe de o parte avem o ordine a a bit ilor dat a de adresele lor n memorie sau de ordinea cronologic a la transmiterea lor prin mediul zic, iar pe de alt a parte ecare bit are o anumit a pondere n reprezentarea unui num ar ntreg.

7.1.2. Reprezent ari pe octet i


In paragraful precedent, am ignorat n mod deliberat not iunea de octet (byte ) si am presupus c a, n memorie, ecare bit ar avea o adres a individual a. Vom studia, n continuare, problemele legate de gruparea, n cadrul sistemelor de calcul reale, a bit ilor n octet i si de faptul c a, n general, ordinea bit ilor n octet i nu este vizibil a programatorului. 7.1.2.1. Octet i In memoria calculatoarelor, bit ii sunt grupat i n grupuri de dimensiune x a, n mod obi snuit c ate 8 bit i. Un astfel de grup se nume ste octet (denumire intrat a pe lier a francez a) sau bait (adaptare a englezescului byte ). Un octet poate privit n dou a moduri distincte: ca un sir de 8 bit i, ca un num ar ntreg cuprins ntre 0 si 255. Echivalent a ntre aceste dou a moduri de-a privi un octet este o problem a ce necesit a mult a atent ie. Dac a identic am bit ii dup a ponderile lor, exist a o corespondent a biunivoc a ntre un astfel de grup de 8 bit i si un num ar ntreg ntre 0 si 255. Dac a ns a identic am bit ii dup a pozit ia lor n sirul de 8 bit i (bitul 0, bitul 1,. . . , bitul 7), atunci corespondent a biunivoc a ntre num ar si sir de bit i exist a doar dup a ce am stabilit o corespondent a ntre pozit ia unui bit n sir si ponderea sa (big endian, little endian sau eventual o corespondent a mai complicat a). Dup a modul n care se identic a bit ii unui octet n denit ia operat iilor efectuate de diverse componente ale unui sistem de calcul, operat iile se pot mp art i n trei categorii: 1. Operat ii pentru care bit ii se identic a dup a pondere sau, echivalent, octetul este privit ca num ar. Aici se ncadreaz a operat iile aritmetice si operat iile de deplasare pe bit i. De remarcat c a operat iile deplasare la st anga (engl. shift left ), respectiv deplasare la dreapta (engl. shift right ) pot descrise n termeni de operat ii aritmetice: deplasarea la st anga este o nmult ire cu 2, iar deplasarea la dreapta este o mp art ire la 2. In acest context, ,,spre st anga si ,,spre dreapta nseamn a spre pozit iile cu pondere mai mare, respectiv mai mic a, neav and nici o leg atur a cu

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 207

primele sau cu ultimele pozit ii. Aceste operat ii sunt efectuate de unitatea aritmetic a din microprocesorul calculatorului. 2. Operat ii pentru care bit ii sunt identicat i dup a num arul lor de ordine sau, echivalent, octetul este privit ca un sir arbitrar de bit i, f ar a a avea asociat a o valoare numeric a. Aici intr a transmiterea bit cu bit (transmitere serial a) a unui octet. Aceast a operat ie este efectuat a de placa de ret ea si de alte adaptoare seriale (de exemplu, adaptoarele USB). Tot aici s-ar ncadra, dac a ar exista, o operat ie de obt inere sau de modicare a unui bit (al octetului) identicat prin num arul s au de ordine. O asemenea operat ie nu este oferit a, n mod normal, ntr-un sistem de calcul nu exist a o instruct iune care s a extrag a, de exemplu, bitul num arul 5 dintr-un octet. 3. Operat ii care pot denite e identic and bit ii dup a ponderea lor, e identic and bit ii dup a num arul lor de ordine. In aceast a categorie se ncadreaz a transmiterea unui octet ca un tot unitar, vericarea egalit a tii a doi octet i si operat iile logice pe bit ( si, sau, sau exclusiv si negat ia). Pentru oricare dintre aceste operat ii, dac a denim operat ia identic and bit ii dup a num arul lor de ordine, efectul ei asupra valorii numerice a octetului nu depinde de corespondent a aleas a ntre pozit iile bit ilor si ponderile lor. In aceste condit ii, n interiorul unui calculator, bit ii din cadrul unui octet sunt identicat i dup a ponderea lor. In construct ia calculatorului, proiectantul are grij a ca atunci c and un bit av and, ntr-un modul al calculatorului, o anumit a pondere este transferat c atre alt modul al calculatorului, s a ajung a acolo pe o pozit ie cu aceea si pondere. La transmisia unui octet ntre dou a sisteme de calcul, mecanismele de transmisie sunt astfel construite nc at s a transmit a valoarea octetului. Intruc at, prin mediul zic al ret elei, bit ii sunt transmi si secvent ial, bit ii unui octet sunt aici identicat i prin num arul lor de ordine in cadrul transmisiei. Pentru a p astra valoarea octetului n timpul transmisiei prin mediul ret elei, corespondent a dintre num arul de ordine al unui bit si ponderea sa (little endian sau big endian ) trebuie s a fac a parte din specicat iile protocolului de nivel zic al ret elei. Numerotarea bit ilor unui octet intervine, de asemenea, n descrierea unor scheme de reprezentare a datelor unde un num ar este reprezentat pe un grup de bit i ce nu formeaz a un num ar ntreg de octet i. Este cazul schemelor de reprezentare pentru structuri de date ce cont in c ampuri de 1 bit, 2 bit i, 12 bit i, etc. S i aici este necesar s a se specice dac a numerotarea bit ilor este little

c 2008, Radu-Lucian Lup sa


208 7.1. Probleme privind reprezentarea numerelor ntregi

endian sau big endian. Mai multe detalii despre astfel de reprezent ari vor studiate n 7.1.2.4. 7.1.2.2. S iruri de octet i Ca si n cazul bit ilor (vezi 7.1.1.2), si cu octet ii putem construi siruri. In cadrul unui sir de octet i, octet ii sunt a sezat i ntr-o ordine, exist and un prim octet (numerotat ca octetul 0), al doilea octet (pozit ia 1), etc. La transmisia printr-o leg atur a n ret ea, primul octet al sirului este, cronologic, primul octet transmis. La memorare, primul octet este cel memorat la adresa cea mai mic a. In virtutea celor dou a moduri de-a privi un octet, un sir de n octet i poate , la r andul lui, privit ca: un sir de 8n bit i, un sir de n numere, ecare cuprins ntre 0 si 255. Pentru a putea privi un sir de n octet i ca un sir de 8n bit i, este necesar s a avem o numerotare, bine denit a, a bit ilor n cadrul unui octet. Rezult a un sir de bit i n care ntre pozit ia pB a unui bit n sirul de 8n bit i, pozit ia pBO a bitului n cadrul octetului n care se g ase ste si pozit ia pO a acelui octet n sirul de octet i are loc relat ia: pB = 8 pO + pBO . (7.1)

Relat ia de mai sus are aceast a form a simpl a dac a se utilizeaz a numerotare de la 0; pentru numerotarea de la 1, forma relat iei e mai complicat a. Transmiterea unui sir de octet i printr-o conexiune, precum si memorarea sirului ntr-un sier pe disc urmat a de citirea lui napoi n memorie, p astreaz a ordinea si valorile octet ilor din sir. Valorile octet ilor sunt p astrate dac a privim octet ii ca numere ntre 0 si 255; dac a privim octet ii ca siruri de 8 bit i, valorile octet ilor se p astreaz a numai dac a pe ambele sisteme utiliz am aceea si corespondent a ntre numerele de ordine si ponderile bit ilor. 7.1.2.3. Reprezentarea numerelor pe un num ar ntreg de octet i Cel mai mare num ar ce poate reprezentat pe un octet este 255, ceea ce este mult prea put in pentru majoritatea aplicat iilor. Pentru a putea reprezenta numere din intervale mai largi, sunt necesare scheme de reprezentare pe mai mult de 8 bit i. Schemele cele mai simple sunt cele care utilizeaz a un num ar ntreg de octet i; acestea vor prezentate n continuare. Schemele de reprezentare ce utilizeaz a siruri de bit i ce nu formeaz a neap arat un num ar ntreg de octet i vor studiate n 7.1.2.4.

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 209

Deoarece un octet are valoarea ntre 0 si 255, putem considera ecare octet ca ind o cifr a n baza 256. Reprezentarea unui num ar printr-un sir de octet i se face ca reprezentare pozit ional a n baza 256. Exist a dou a reprezent ari posibile: little endian : primul octet are ponderea 1, al doilea octet are ponderea 256, al treilea octet are ponderea 2562 = 65536, etc. big endian : primul octet are ponderea 256n1 (unde n este num arul de n 2 octet i ai reprezent arii), al doilea octet are ponderea 256 s. a. m. d., penultimul octet are ponderea 256, iar ultimul octet are ponderea 1. Reamintim c a prin primul octet nt elegem octetul care este transmis primul, n ordine cronologic a, de la un dispozitiv la altul si, totodat a, octetul memorat la adresa cea mai mic a. Exemplul 7.2: Descriem mai jos reprezentarea num arului 300 n schemele de reprezentare little endian si big endian, pe 2 si pe 4 octet i. Pentru ecare dintre aceste patru scheme de codicare, este dat sirul de octet i ce reprezint a num arul 300. pozit ie octet (nr. ordine) 0 1 2 3 Valorile octet ilor pentru diverse reprezent ari 2 octet i 2 octet i 4 octet i 4 octet i big endian little endian big endian little endian 1 44 0 44 44 1 0 1 1 0 44 0

De exemplu, n cadrul reprezent arii pe 2 octet i n format big endian, valoarea num arului reprezentat se reg ase ste ca valoarea octetului 0 nmult it a cu 256 plus valoarea octetului 1, anume: 1 256 + 44 = 300. In cadrul reprezent arii pe 4 octet i n format little endian, octetul 0 are ponderea 2560 = 1, octetul 1 are ponderea 2561 = 256, octetul 2 are ponderea 2562 = 65536, iar octetul 3 are ponderea 2563 = 16218368. Valoarea num arului reprezentat este 44 1 + 1 256 + 0 2562 + 0 2563 = 300

Unitatea aritmetic a a calculatorului poate efectua operat ii aritmetice asupra numerelor reprezentate pe 2 octet i sau, pentru unele calculatoare, pe 4 sau 8 octet i. Pe unele calculatoare, unitatea aritmetic a lucreaz a cu numere reprezentate dup a sistemul big endian ; pe alte calculatoate, unitatea

c 2008, Radu-Lucian Lup sa


210 7.1. Probleme privind reprezentarea numerelor ntregi

aritmetic a cere reprezentare little endian. Dup a acest criteriu, calculatoarele ale c aror unit a ti aritmetice lucreaz a cu numere reprezentate pe mai mult de un octet se mpart n calculatoare little endian si calculatoare big endian. Variabilele de tip ntreg, n majoritatea limbajelor de programare, sunt reprezentate pe 2, 4 sau 8 octet i, n ordinea xat a de unitatea aritmetic a. Este posibil a utilizarea, pentru anumite variabile ntregi, a unei reprezent ari diferite de cea a unit a tii aritmetice. De asemenea, se pot utiliza reprezent ari pe mai mult i octet i dec at permite unitatea aritmetic a. La manipularea acestor variabile, programatorul trebuie s a aib a n vedere c a operat iile aritmetice ,,normale e nu pot executate deloc, e nu se efectueaz a corect asupra lor. Astfel de numere se manipuleaz a, de obicei, prelucr and separat ecare octet. La memorarea pe disc sau la transmiterea printr-o conexiune, trebuie stabilit printr-un standard dac a se utilizeaz a un format little endian sau big endian, precum si num arul de octet i pe care se reprezint a ecare num ar memorat sau, respectiv, transmis. Majoritatea protocoalelor pentru Internet prev ad formate big endian pentru numerele ntregi transmise. Multe dintre formatele de siere prev ad formate little endian. Exist a si formate (de exemplu, formatul TIFF pentru imagini, formatele UTF-16 si UTF-32 pentru texte) care permit emit atorului s a aleag a formatul dorit si prev ad un mecanism prin care emit atorul informeaz a receptorului despre alegerea f acut a. Dac a formatul de pe disc sau de pe conexiune coincide cu formatul unit a tii aritmetice locale, un program poate transfera direct siruri de octet i ntre o variabil a ntreag a local a si sierul de pe disc sau, respectiv, conexiunea spre cel alalt calculator. Dac a formatul de pe disc sau de pe conexiune este invers fat a de cel local, un program care transfer a date trebuie s a inverseze ordinea octet ilor imediat nainte de scrierea pe disc sau de trimiterea pe conexiune, precum si imediat dup a citirea de pe disc sau recept ionarea de pe conexiune. 7.1.2.4. Reprezentarea numerelor pe un sir arbitar de bit i Ne vom ocupa n continuare de metode de reprezentare, pentru numere ntregi, n care bit ii ce intr a n reprezentarea unui num ar nu formeaz a neap arat un num ar ntreg de octet i. O astfel de schem a este o generalizare a schemei prezentate n paragraful precedent. O astfel de metod a de reprezentare se bazeaz a pe reprezentarea numerelor n baza 2 (vezi si 7.1.1.3). Pentru ca o astfel de schem a s a e complet denit a, este necesar s a e stabilit a (standardizat a) corespondent a dintre pozit ia ec arui bit din reprezentare si ponderea asociat a. In descrierea

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 211

unei astfel de scheme de reprezentare, trebuie precizate trei lucruri: dac a reprezentarea num arului prin sirul de bit i se face dup a metoda big endian sau little endian ; dac a numerotarea bit ilor n cadrul ec arui octet se face ncep and de la bitul de pondere 1 (adic a valoarea octetului este reprezentat a dup a schema little endian ) sau ncep and de la bitul de pondere 128 (adic a valoarea octetului este reprezentat a dup a schema big endian ). dac a numerotarea bit ilor n cadrul sirului de bit i se face dup a relat ia (7.1) sau dup a o alt a metod a. Intr-o schem a de reprezentare ,,rat ional a, la primele dou a puncte se utilizeaz a e formatul big endian pentru am andou a, e formatul little endian pentru am andou a, iar la punctul al treilea se utilizeaz a relat ia (7.1). Rezult a astfel dou a metode coerente: big endian. In aceast a metod a, numerotarea bit ilor ncepe cu cel mai semnicativ bit al primului octet, iar dup a cel mai put in semnicativ bit al primului octet urmeaz a cel mai semnicativ bit al celui de-al doilea octet. Orice num ar, indiferent pe c a ti bit i s-ar reprezenta, se reprezint a n format big endian. little endian. In aceast a metod a, numerotarea bit ilor ncepe cu cel mai put in semnicativ bit al primului octet, iar dup a cel mai semnicativ bit al primului octet urmeaz a cel mai put in semnicativ bit al celui deal doilea octet. Orice num ar, indiferent pe c a ti bit i s-ar reprezenta, se reprezint a n format little endian. In cadrul acestor dou a metode, dac a reprezent am un num ar folosind un sir de bit i ce formeaz a un num ar ntreg de octet i, formatele de reprezentare rezultate coincid cu formatele de reprezentare pe octet i studiate n paragraful precedent. Exemplul 7.3: Consider am o schem a de reprezentare pentru dou a numere ntregi, a si b, n care a se reprezint a pe 4 bit i si b se reprezint a pe 12 bit i. In total avem 4 + 12 = 16 bit i, adic a 2 octet i. Dac a alegem metoda big endian, schema de reprezentare va utiliza cei mai semnicativi 4 bit i ai primului octet pentru a-l reprezenta pe a, ceilalt i 4 bit i ai primului octet vor cei mai semnicativi 4 bit i ai lui b, iar cel de-al doilea octet va cont ine cei mai put in semnicativi 8 bit i din b. Aceast a schem a de reprezentare este ilustrat a n gura 7.1, cu valori concrete a = 11 si b = 300. Dac a alegem metoda little endian, schema de reprezentare va utiliza cei mai put in semnicativi 4 bit i ai primului octet pentru a-l reprezenta pe a, ceilalt i 4 bit i ai primului octet vor cei mai put in semnicativi 4 bit i ai lui b,

c 2008, Radu-Lucian Lup sa


212 7.1. Probleme privind reprezentarea numerelor ntregi

iar cel de-al doilea octet va cont ine cei mai semnicativi 8 bit i din b. Aceast a schem a de reprezentare este ilustrat a n gura 7.2, cu valori concrete a = 11 si b = 300.
b0 1 b1 0 b2 1 b3 1 Nr. octet 0 1 c0 1 0 c1 0 0 c2 1 1 b4 0 b5 0 b6 0 b7 1 b8 0 b9 0 b10 1 b11 0 b12 1 b13 1 b14 0 b15 0

(a) Reprezentarea privit a ca sir de bit i

Valoare (binar) c3 c4 1 0 0 1

Valoare (zecimal) c5 0 1 c6 0 0 c7 1 0 177 44

(b) Valorile octet ilor. La scrierea valorilor bit ilor n octet (coloana din mijloc) s-a utilizat convent ia obi snuit a, de-a scrie cifrele mai semnicative n st anga.

Figura 7.1: Reprezentare big endian pentru num arul 11 pe 4 bit i urmat de num arul 300 reprezentat pe 12 bit i (exemplul 7.3).

b0 1

b1 1

b2 0

b3 1 Nr. octet 0 1

b4 0

b5 0

b6 1

b7 1

b8 0

b9 1

b10 0

b11 0

b12 1

b13 0

b14 0

b15 0

(a) Reprezentarea privit a ca sir de bit i

c7 1 0

c6 1 0

c5 0 0

Valoare (binar) c4 c3 0 1 1 0

Valoare (zecimal) c2 0 0 c1 1 1 c0 1 0 203 18

(b) Valorile octet ilor. La scrierea valorilor bit ilor n octet (coloana din mijloc) s-a utilizat convent ia obi snuit a, de-a scrie cifrele mai semnicative n st anga.

Figura 7.2: Reprezentare little endian pentru num arul 11 pe 4 bit i urmat de num arul 300 reprezentat pe 12 bit i (exemplul 7.3).

Un alt exemplu n care avem de-a face cu numere reprezentate pe siruri arbitrare de bit i este legat de a sa-zisa codicare n baza 64, descris a n 7.4.2.

7.1.3. Probleme privind reprezentarea lungimii sirurilor


Oridec ateori se transmite un sir de obiecte, este necesar ca receptorul s a poat a determina num arul de obiecte transmise. Acest lucru este valabil

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 213

indiferent de natura obiectelor: bit i, octet i, cifre zecimale, caractere ale unui text, numere n cadrul unui sir de numere. Exist a trei metode de a face ca receptorul s a poat a determina num arul de obiecte ce-i sunt transmise: Num arul de obiecte este xat. In acest caz, indiferent de valorile datelor ce se transmit, num arul de obiecte transmise este acela si. Metoda este utilizat a frecvent la memorarea unui sir n memoria RAM sau pe disc, deoarece permite alocarea de la nceput a memoriei pentru reprezentarea lui si permite accesul direct la datele memorate dup a sirul n discut ie. Dezavantajul principal al metodei este acela c a dimensiunea xat a trebuie astfel aleas a nc at s a e sucient a n orice caz ce poate s a apar a la execut ie. De asemenea, trebuie s a existe o valoare potrivit a pentru pozit iile ,,neutilizate din sir; de exemplu, n reprezentarea numerelor, pozit iile cele mai semnicative se completeaz a cu zerouri. Deoarece la transmisia printr-o conexiune nu se poate pune problema accesului direct (adic a altfel dec at secvent ial) la date, metoda este put in utilizat a n transmisia datelor prin ret ea. S iruri de lungime x a se utilizeaz a la reprezentarea binar a a numerelor. Num arul de obiecte este transmis separat, n fat a sirului. Aceast a metod a u sureaz a munca receptorului, care stie exact ce s a astepte si poate aloca memorie pentru recept ionarea datelor. In schimb, munca emit atorului este complicat a prin faptul c a acesta trebuie s a cunoasc a de la nceput num arul de obiecte din sir. Acest fapt face metoda inaplicabil a n anumite situat ii. Transmiterea de la nceput a num arului de obiecte este utilizat a, de exemplu, de protocolul HTTP ( 11.3.2) la transmiterea, de c atre server, a cont inutului paginii cerute de client. Serverul transmite nt ai num arul de octet i ai paginii si apoi sirul de octet i ce formeaz a pagina. Dup a ultimul obiect din sirul propriu-zis, se transmite o valoare special a, cu rol de terminator. Aceast a metod a u sureaz a munca emit atorului, care poate s a nceap a transmiterea sirului nainte de-a sti c ate elemente are, n schimb ngreuneaz a munca receptorului, care trebuie s a citeasc a elementele sirului unu c ate unu si s a verice dac a nu a nt alnit terminatorul. De asemenea, trebuie xat a valoarea terminatorului, care trebuie s a e o valoare reprezentabil a n formatul pentru element, dar care nu apare niciodat a ca valoare a unui element valid. Metoda este utilizat a frecvent n transmiterea unui sir de caractere. Rolul de terminator poate acordat caracterului null (caracterul cu codul ASCII zero), caracterului newline (sf ar sit de r and), caracterului

c 2008, Radu-Lucian Lup sa


214 7.1. Probleme privind reprezentarea numerelor ntregi

spat iu, etc. Orice alegere s-ar face, caracterul sau caracterele astfel alese pentru a marca sf ar situl unui sir nu pot s a apar a n sirul propriu-zis. Ca urmare, transmiterea unui sier cu cont inut arbitrar ( sir de octet i cu valori arbitrare) nu se poate face prin metoda cu terminator (dec at dac a un octet al sierului se codic a pe mai mult de 8 bit i).

7.1.4. Alte metode de reprezentare a numerelor ntregi


Schemele de reprezentare (formatele) pentru numere ntregi, studiate n 7.1.2.3 si 7.1.2.4, se numesc formate binare. Pe l ang a formatele binare, pentru reprezentarea numerelor ntregi se mai utilizeaz a urm atoarele tipuri de formate: Formatul text. In cadrul acestui format, reprezentarea num arului este un text format din caracterele corespunz atoare cifrelor reprezent arii zecimale (obi snuite) a num arului. Formatul binar-zecimal, numit si BCD din engl. binary coded decimal. In cadrul acestui format, num arul este reprezentat mai nt ai n baza 10, iar apoi ecare cifr a zecimal a este reprezentat a pe 4 bit i conform metodelor din 7.1.2.4. Descriem put in mai pe larg reprezentarea numerelor n format text, deoarece o astfel de reprezentare se utilizeaz a frecvent n protocoalele n ret ea. Motivul principal al utiliz arii formatului text este u surint a depan arii aplicat iilor ce utilizeaza astfel de protocoale: comunicat ia poate nregistrat a ntr-un sier si examinat a cu un program obi snuit pentru vizualizarea sierelor text. In format text, se utilizeaz a convent iile de reprezentare a numerelor n textele scrise: se ncepe cu cifra cea mai semnicativ a, num arul de cifre este variabil (depinde de valoarea num arului) si prima cifr a (cea mai semnicativ a) scris a nu este zero, cu except ia cazului num arului 0 care se reprezint a ca o singur a cifr a zero. Fiecare cifr a se reprezint a ca un caracter, ind necesar a mai departe o schem a de reprezentare a textelor (vezi 7.2). In cazul codic arii ASCII, reprezentarea ec arei cifre ocup a exact un octet. De remarcat ns a c a, n acest caz, cifra 0 nu se reprezint a ca un octet cu valoarea 0, ci ca un octet av and ca valoare codul ASCII pentru caracterul ,,0; acesta este 48 (sau, echivalent, 3016 ). Deoarece lungimea reprezent arii este variabil a, este necesar s a e transmis a sub o form a sau alta informat ia privind lungimea reprezent arii num arului (num arul de cifre). In acest scop, n reprezent arile text, numerele sunt separate de obicei prin spat ii, caractere tab, caractere newline etc.

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 215

Exemplul 7.4: Red am mai jos reprezent arile text ASCII terminat cu spat iu, BCD big endian pe 4 octet i si BCD little endian pe 4 octet i, pentru num arul 300. Valorile octet ilor sunt scrise n baza 2, bitul cel mai semnicativ ind scris n st anga. pozit ie octet (nr. ordine) 0 1 2 3 Valorile octet ilor BCD BCD big endian little endian 00000000 00000000 00000000 00000011 00000011 00000000 00000000 00000000

text ASCII 00110011 00110000 00110000 00100000

7.2. Codicarea textelor


Prin text nt elegem aici un text scris n limbaj natural sau ntr-un limbaj de programare, f ar a formatare avansat a. Un text este v azut n general ca o succesiune de caractere. Caracterele sunt n principal literele din alfabetul limbii n care este scris textul, semne de punctuat ie, cifre si diferite alte semne grace. Nu se face distinct ie ntre diferitele variante de-a scrie o aceea si liter a (litere ,,normale, cursive (,,italice), adline (,,bold), etc). Pe l ang a caracterele grace, descrise mai sus, sunt denite caractere de control, av and rolul de a marca puncte (locuri) n cadrul textului sau fragmente din text. Utiliz ari ale caracterelor de control sunt, de exemplu, trecerea la r and nou sau interzicerea trecerii la r and nou (ruperea r andului) ntr-un anumit punct. Un aspect discutabil legat de alegerea setului de caractere este dac a o liter a cu un semn diacritic este cazul s a e caracter distinct fat a de litera simpl a din care provine sau s a e format din caracterul corespunz ator literei respective f ar a semne diacritice si un caracter de control care s a marcheze semnul diacritic ad augat. In aceea si idee, s-ar putea face si distinct ia dintre literele mari (majuscule) si literele mici (minuscule) corespunz atoare tot pe baza unor caractere de control cu rol de modicator. Operat iile efectuate asupra textelor, care trebuie s a e permise de codicarea aleas a, sunt n principal urm atoarele: a sarea textului; concatenarea unor texte sau alte operat ii de sintez a;

c 2008, Radu-Lucian Lup sa


216 7.2. Codificarea textelor

c autarea unui cuv ant, extragerea unor cuvinte sau unor fragmente de text si diverse alte operat ii de analiz a a textului; sortarea alfabetic a. De notat c a regulile de sortare alfabetic a sunt complexe si depind de limb a. De exemplu, n limba rom an a, literele cu diacritice sunt considerate imediat dup a literele f ar a diacritice. Urm atoarele cuvinte sunt sortate alfabetic: sac, suc, siret ; de notat c a orice cuv ant ce ncepe cu s este sortat dup a toate cuvintele ce ncep cu s. In francez a, ns a, literele cu diacritice sunt considerate, n prima faz a, echivalente cu cele f ar a diacritice, intervenind n ordinea alfabetic a doar pentru cuvinte care difer a doar prin diacritice. Exemplu: et e, etre, etude ; de notat c a apar amestecate cuvinte ce ncep cu e si e. Majoritatea codic arilor sunt bazate pe reprezentarea una dup a alta a literelor (caracterelor) ce formeaz a cuvintele textului. Codic arile caracterelor sunt de obicei descrise n dou a etape. In prima etap a, ec arui caracter i este asociat un num ar ntreg pozitiv, numit codul caracterului. In a doua etap a, ec arui cod de caracter i este asociat ao codicare ca sir de bit i sau ca sir de octet i. Pentru o schem a de codicare trebuie a sadar specicate trei elemente: setul de caractere; numerotarea (codicarea) caracterelor; reprezentarea pe bit i sau pe octet i a codurilor caracterelor.

7.2.1. Codicarea ASCII


Codicarea (codul) ASCII este codicarea cea mai des nt alnit a pentru texte. Setul de caractere cuprinde 128 caractere dintre care: 33 de caractere de control; caracterul spat iu (considerat de unii ca ind caracter imprimabil si de alt ii ca ind caracter de control); 94 de caractere imprimabile, cuprinz and: 52 de litere (cele 26 litere ale alfabetului latin, cu cele dou a forme, majuscule si minuscule) cele 10 cifre zecimale si un num ar de 32 de semne de punctuat ie si alte simboluri. Codurile asociate caracterelor ASCII sunt cuprinse ntre 0 si 127, caracterele de control primind codurile 031 si 127, spat iul are codul 32, iar

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 217

(celelalte) caractere imprimabile au codurile cuprinse ntre 33 si 126. Pentru a u sura sortarea alfabetic a, codurile sunt grupate astfel: literele mari de la 65 (41 hexa) pentru A la 90 (5A hexa) pentru Z; literele mici de la 97 (61 hexa) pentru a la 122 (7A hexa) pentru z; cifrele de la 48 (30 hexa) pentru 0 la 57 (39 hexa) pentru 9. De remarcat si c a diferent a dintre codul oric arei litere mici si codul literei mari corespunz atoare este 32 (20 hexa). Pentru reprezentarea unui caracter ASCII sunt necesari doar 7 bit i, ns a cel mai adesea un caracter ASCII se reprezint a pe un octet, al c arui cel mai semnicativ bit este ntotdeauna 0. Datorit a faptului c a pe de o parte caracterele ASCII se reprezint a pe un octet, iar pe de alt a parte c a dintre caracterele de control multe nu sunt utilizate deloc n majoritatea aplicat iilor, r am an multe coduri reprezentabile (cca. 140) care nu sunt utilizate. Se poate extinde setul de caractere, asociind noilor caractere coduri ntre 128 si 255 sau coduri ntre 0 si 31 a c aror caractere corespunz atoare nu sunt folosite efectiv. Toate aceste codic ari rezultate se numesc generic seturi ASCII extinse.

7.2.2. Codic arile ISO-8859


ISO-8859 este o familie de coduri, construite toate ca extensii (alternative) ale codic arii ASCII. Fiecare cod din familie cuprinde c ate 256 caractere: cele 128 caractere ASCII, plus 128 de caractere alese pentru a acoperi alfabetul c ate unui grup de limbi. Limbile acoperite de c ateva dintre codic arile ISO-8859 sunt: ISO-8859-1, alfabetul latin pentru limbile din vestul Europei; ISO-8859-2, alfabetul latin pentru limbile din estul Europei; ISO-8859-5, alfabetul chirilic; ISO-8859-6, alfabetul arab; ISO-8859-7, alfabetul grecesc; ISO-8859-8, alfabetul ebraic. Codurile asociate caracterelor sunt codurile din codicarea ASCII pentru cele 128 de caractere din setul ASCII si numere de la 128 la 255 pentru caracterele suplimentare. Reprezentarea pe octet i pentru un text ISO-8859-n se face cu c ate un octet pentru ecare caracter, octetul cont in and codul caracterului. Fiecare cod din familie este extensie a codului ASCII n sensul c a mult imea caracterelor din ecare astfel de cod include mult imea caracterelor

c 2008, Radu-Lucian Lup sa


218 7.2. Codificarea textelor

Caracter A A I S T

Cod (hexa) Caracter C3 a C2 a CE AA s DE t

Cod (hexa) E3 E2 EE BA FE

Tabelul 7.1: Caracterele cu diacritice din alfabetul limbii rom ane si codic arile ISO-8859-2 corespunz atoare

ASCII si codurile asociate caracterelor comune cu setul ASCII coincid cu codurile ASCII. Ca urmare, un text ASCII este ntotdeauna interpretat corect ca text ISO-8859-n. Pe de alt a parte, un text scris n ISO-8859-n si interpretat ca ISO-8859-m va evident interpretat gre sit. Ordinea numeric a a codurilor din oricare dintre codic arile ISO-8859 este diferit a de ordinea alfabetic a. In general, n ordinea alfabetic a, literele cu diacritice si au locul imediat l ang a literele similare f ar a diacritice; n codic arile ISO-8859-1 sau ISO-8859-2, de exemplu, literele cu diacritice au codurile mai mari de 128 n vreme ce literele f ar a diacritice au coduri ntre 65 si 123.

7.2.3. Codic arile Unicode


Unicode este un set de caractere ce se dore ste s a cuprind a litere din toate scrierile de pe P am ant. Num arul de caractere din unicode este limitat, datorit a modurilor de codicare denite, la aproximativ un milion (mai exact, la 11000016 = 1114112). Nu toate aceste coduri sunt denite n prezent, codurile nc a nedenite put and denite n versiuni urm atoare ale standardului. Codurile unicode sunt numere de la 0 la 220 + 216 1. Codurile de la 0 la 127 corespund acelora si caractere ca si n codicarea ASCII. Reprezentarea codurilor unicode ca siruri de octet i poate f acut a n mai multe moduri. Cele mai r asp andite codic ari sunt: UTF-8 este o codicare de lungime variabil a, ntre 1 si 4 octet i pentru un caracter; UTF-16, UTF-16LE, UTF-16BE sunt codic ari de lungime variabil a, 2 sau 4 octet i pentru un caracter; UTF-32, UTF-32LE, UTF-32BE sunt codic ari de lungime x a, de 4 octet i pentru ecare caracter.

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 219

Caracter A a A a I S , s , T , t , S s T t

Cod unicode (hexa) 102 103 C2 E2 CE EE 218 219 21A 21B 15E 15F 162 163

Cod unicode (zecimal) 258 259 194 226 206 238 536 537 538 539 350 351 354 355

UTF-8 (hexa) C4 C4 C3 C3 C3 C3 C8 C8 C8 C8 C5 C5 C5 C5 82 83 82 A2 8E AE 98 99 9A 9B 9E 9F A2 A3

Tabelul 7.2: Caracterele cu diacritice din alfabetul limbii rom ane si codic arile unicode corespunz atoare. Not a: caracterele S , s, T si t au c ate dou a forme utilizate: una cu virgul a dedesupt, cealalt a cu sedil a. Conform normelor stabilite de Academia Rom an a, forma corect a este cea cu virgul a. Codicarea formei cu virgul a a fost standardizat a mai recent, motiv pentru care multe documente utilizeaz a nc a forma cu sedil a.

c 2008, Radu-Lucian Lup sa


220 7.2. Codificarea textelor

7.2.3.1. Codicarea UTF-8 Corespondent a de la codul caracterului la sirul de octet i este dat a n tabelul 7.3.
Valorile lui c ( n baza 16) 07F 807FF 800FFFF 100001FFFFF reprezentarea UTF-8 ( n baza 2) 0c7 c6 c5 c4 c3 c2 c1 c0 110c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 1110c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 11110c20 c19 c18 10c17 c16 c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0

Tabelul 7.3: Codicarea UTF-8. c reprezint a codul unicode al caracterului; c20 . . . c0 reprezint a cifrele reprezent arii binare a lui c, cu c20 reprezent and cifra cea mai semnicativ a si c0 cea mai put in semnicativ a. Codicarea exist a doar pentru 0 c < 221 .

De remarcat c a schema pentru coduri mari (de exemplu, schema pentru c ntre 8016 si 7FF16 ) poate principial aplicat a si la coduri mai mici (de exemplu, pentru c = 4116 , rezult and doi octet i, C116 urmat de 8116 ). O astfel de codicare este ns a interzis a de standard pentru a asigura unicitatea codic arii UTF-8. Codicarea UTF-8 permite recuperarea sincronismului (dac a receptorul pierde c a tiva octet i poate reg asi unde ncepe un caracter nou), deoarece ecare caracter nou ncepe cu un octet cuprins ntre 0 si 127 sau ntre 192 si 255, iar ceilalt i octet din codicarea unui caracter sunt cuprin si ntre 128 si 191. O alt a proprietate este c a lungimea codic arii UTF-8 a unui caracter poate determinat a dup a citirea primului octet. 7.2.3.2. Codic arile UTF-16 Codicarea UTF-16 este descris a n dou a etape: ntr-o prim a etap a, codul unicode este transformat ntr-unul sau dou a numere de c ate 16 bit i, iar n a doua etap a ecare astfel de num ar este scris ca 2 octet i consecutivi. Caracterele cu codul unicode ntre 0 si D7FF16 sau ntre E00016 si FFFF16 se scriu ca un singur ntreg pe 16 bit i. Caracterele cu codul unicode ntre 1000016 si 10FFFF16 se scriu ca doi ntregi de c ate 16 bit i astfel: Mai nt ai, din codul unicode se scade 1000016 , rezult and o valoare ntre 0 si FFFFF16 (20 bit i). Primul ntreg de 16 bit i se formeaz a pun and cifrele 110110 urmate de primii 10 din cei 20 de bit i. Al doilea ntreg se formeaz a pun and cifrele 110111 urmate de ultimii 10 din cei 20 de bit i. De exemplu, codul unicode 1030216 se scrie ca doi ntregi astfel: D83C16 DF0216 .

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 221

Intr-o a doua etap a este denit a scrierea ec arui ntreg de 16 bit i ca un sir de doi octet i. Exist a dou a modalit a ti de a reprezenta ecare astfel de ntreg, ncep and de la octetul mai semnicativ (de rang mai mare) sau ncep and de la octetul mai put in semnicativ. Pentru a reecta aceste variante diferite de alegere, exist a trei codic ari distincte numite generic UTF-16 : UTF-16LE : Primul octet este cel mai put in semnicativ (little endian ); UTF-16BE : Primul octet este cel mai semnicativ (big endian ); UTF-16 : Ordinea octet ilor poate e big endian, e little endian, la alegerea emit atorului. Primul caracter codicat trebuie s a e caracterul cu codul FEFF16 (denit init ial ca ind un caracter de control ce interzice ruperea n r anduri n acel punct, dar este utilizat n prezent doar ca marcaj pentru identicarea ordinii octet ilor). Ordinea octet ilor este dedus a de receptor prin examinarea primilor doi octet i: dac a ace stia sunt FE16 urmat de FF16 , nseamn a c a ordinea octet ilor este big endian ; dac a este FF16 urmat de FE16 , nseamn a c a ordinea octet ilor este little endian. 7.2.3.3. Codic arile UTF-32 Codicarea UTF-32 const a n codicarea ec arui caracter ca un ntreg pe 32 de bit i, reprezentat la r andul lui ca un sir de 4 octet i. Ca si n cazul codic arilor UTF-16, exist a trei codic ari UTF-32 : UTF-32LE : Primul octet este cel mai put in semnicativ (little endian ); UTF-32BE : Primul octet este cel mai semnicativ (big endian ); UTF-32 : Ordinea octet ilor poate e big endian, e little endian, la alegerea emit atorului. Primul caracter codicat trebuie s a e caracterul cu codul F EF F16 . Ordinea octet ilor este dedus a de receptor prin examinarea primilor patru octet i: dac a ace stia sunt 0, 0, F E16 , F F16 , nseamn a c a ordinea octet ilor este big endian ; dac a este F F16 , F E16 , 0, 0, nseamn a c a ordinea octet ilor este little endian.

7.3. Reprezentarea datei si orei


Determinarea datei si orei producerii unui eveniment, precum si memorarea sau transmiterea acestora, sunt operat ii frecvente ntr-o ret ea de calculatoare. Problema reprezent arii datei si orei este mult mai dicil a dec at pare la prima vedere. Din acest motiv, vom ncepe prin a studia ce se poate nt elege

c 2008, Radu-Lucian Lup sa


222 7.3. Reprezentarea datei si orei

prin ,,ora curent a, iar apoi vom vedea ce scheme de reprezentare ale datei si orei exist a si ce avantaje si dezavantaje aduce ecare dintre ele.

7.3.1. M asurarea timpului


Exist a dou a metode utilizate pentru indicarea timpului curent (datei si orei curente): pe baza unor fenomene astronomice, anume alternant a zi-noapte ( n termeni astronomici, ziua solar a mijlocie ), alternant a anotimpurilor (anul tropic ) si, eventual, fazele lunii (luna sinodic a ); pe baza unui fenomen zic repetabil, de exemplu oscilat ia unui pendul sau vibrat ia unui cristal de cuart . Prima variant a este de interes practic imediat pentru sincronizarea activit a tilor umane. Are ns a complicat ii inerente legate de urm atoarele fapte: alternant a zi-noapte nu este simultan a pe tot P am antul ci este decalat a pe longitudine; anul, luna si ziua sunt incomensurabile (rapoartele duratelor lor sunt numere irat ionale); anul, luna si ziua nu au durate constante (fenomenele corespunz atoare nu sunt perfect periodice) si nici m acar previzibile exact ( n special rotat ia P am antului are neuniformit a ti imprevizibile datorate redistribuirii masei n interiorul P am antului). A doua variant a m asoar a direct timpul ca m arime zic a si ofer a avantaje atunci c and avem de determinat ordinea cronologic a a unor evenimente sau de calculat duratele de timp dintre ele. Timpul (zic) a ajuns s a poat a denit independent a de mi scarea P am antului doar dup a dezvoltarea, ncep and cu anii 1950, a ceasurilor atomice, mai precise dec at mi sc arile P am antului. M asurarea timpului se face pe baza secundei denite n Sistemul Internat ional de unit a ti (SI) ca 9192631770 de perioade ale oscilat iei corespunz atoare tranzit iei ntre cele dou a nivele hiperne ale st arii fundamentale a atomului de cesiu 133. Ca urmare a acestor complicat ii, exist a mai multe standarde de m asurare si reprezentare a timpului: Timpul atomic internat ional (TAI) este dat de num arul de secunde SI scurse de la un anumit moment ales ca reper. Secundele TAI se grupeaz a n minute, ore, zile, etc. Timpul universal UT1 este de fapt m asura unui anumit unghi, legat de rotat ia P am antului, exprimat a n unit a ti de timp (24 h n loc de 360 ). (Unghiul respectiv este unghiul orar, pentru un observator aat

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 223

pe meridianul 0 , al soarelui mijlociu.) Curge neuniform datorit a neuniformit a tii mi sc arii de rotat ie a P am antului; dup a media ultimilor c a tiva ani, 24 h UT1 este aproximativ 86400,002 s SI. Timpul universal coordonat (UTC) este bazat pe secunda SI, dar gruparea secundelor n zile este modicat a pentru a ment ine diferent a dintre UT1 si UTC la sub o secund a. Astfel, o zi UTC normal a are 24 ore a 60 minute a 60 secunde SI ecare, adic a 86400 s. Dac a UT1UTC se apropie de 1 s, se adaug ao secund a de corect ie (engl. leap second ) la o zi, astfel nc at acea zi UTC are 86401 s, proces aproape echivalent cu a muta UTC cu o secund a napoi. In acest scop, ultimul minut al zilei are 61 de secunde n loc de 60, dup a ora 23:59:59 urmeaz a, la o secund a, 23:59:60 si abia dup a nc a o secund a ora 0:00:00 a zilei urm atoare. Dac a UT1UTC se apropie de 1 s, se elimin a o secund a din ultimul minut al unei zile, astfel c a la o secund a dup a 23:59:58 urmeaz a ora 0:00:00 a zilei urm atoare. Din anul 1972 (de la introducerea UTC n forma actual a) p an a n 2008 au fost ad augate 23 de secunde de corect ie si nu a fost eliminat a nici una. A 24-a secund a de corect ie se va ad auga la sf ar situl anului 2008, astfel nc at ziua de 31 decembrie 2008 va avea 86401 secunde. Datorit a unei diferent e init iale de 10 s ntre TAI si UTC, diferent a TAIUTC este n prezent de 33 s. Timpul legal n ecare tar a este denit e pe baza UT1, e pe baza UTC (diferent a este neglijabil a pentru uzul practic), ca ind UTC (sau UT1) plus sau minus un anumit num ar de ore si uneori si fract iuni de or a (exemplu, India are ora legal a UTC+5h30min). In t arile n care exist a or a de var a, la trecerea de la ora de iarn a la cea de var a si invers, diferent a dintre ora legal a si UTC cre ste, respectiv scade, cu o or a (de notat c a UTC nu are or a de var a). De exemplu, ora legal a n Rom ania este UTC+2 h n timpul iernii (din ultima duminic a din octombrie p an a n ultima duminic a din martie) si UTC+3 h n timpul verii. Ora suplimentar a introdus a la trecerea de la ora de var a la cea de iarn a nu are notat ie distinct a, de tipul secundelor de corect ie din UTC. Ca urmare, la trecerea de la ora de var a la ora de iarn a, exist a perechi de momente de timp care sunt notate la fel si ca urmare ora legal a este ambigu a. Exemplu: dac a prin trecerea de la ora de var a la cea de iarn a ora 4:00:00 devine 3:00:00, atunci notat ia 3:30:00 poate corespunde la dou a momente de timp, ora de var a 3:30:00 (la 30 min naintea schimb arii orei) si ora de iarn a 3:30:00 (la 30 min dup a schimbarea orei).

c 2008, Radu-Lucian Lup sa


224 7.3. Reprezentarea datei si orei

Pentru gruparea zilelor n unit a ti mai mari, n special n ani, sunt utilizate mai multe sisteme (calendare): Calendarul gregorian , introdus n anul 1582 si n vigoare n Rom ania din anul 1924, este calendarul actual. Anii bisect i (de 366 de zile) sunt anii cu num arul anului divizibil cu 4, cu except ia celor divizibili cu 100 f ar a a divizibili cu 400. Ani bisect i sunt 1600, 2000, 2400 etc; ani nebisect i divizibili cu 100 sunt 1700, 1800, 1900, 2100, 2200 etc. Durata medie a anului gregorian este 365,2425 zile, ceva mai lung dec at anul tropic de aproximativ 265,2422 zile. Calendarul iulian , predecesorul calendarului gregorian, introdus n anul 45 .e.n. si av and regula mai simpl a cum c a sunt bisect i tot i anii cu num ar divizibil cu 4. Este utilizat adesea de istorici pentru a data si evenimente dinainte de anul 45 .e.n., caz n care el este numit calendar iulian proleptic. Cu o durat a medie a anului de 365,25 zile, calendarul iulian r am ane n urm a cu 1 zi la aproximativ 128 de ani. Ziua iulian a este un simplu num ar ce arat a num arul de zile scurse de la o dat a de referint a. Acest sistem este utilizat frecvent n astronomie deoarece permite u sor calculul duratelor dintre dou a date; din acela si motiv reprezint a o schem a potrivit a pentru reprezentarea datei n calculator. Exist a n dou a variante. Prima, JD (julian day ), are ca referint a data de 1 ianuarie 4713 .e.n. conform calendarului iulian proleptic, la amiaza UT1. Momentul respectiv este JD 0,0, miezul nopt ii urm atoare este JD 0,5, etc. Cealalt a, MJD (modied julian day ), are ca referint a 17 noiembrie 1858 ora 0, adic a este JD2400000,5 .

7.3.2. Obiectivele n alegerea reprezent arii timpului n calculator


De obicei, operat iile ce trebuiesc efectuate asupra reprezent arii timpului sunt: 1. Citirea sau scrierea timpului ca or a legal a conform calendarului gregorian n formatul obi snuit, precum si efectuarea de operat ii aritmetice de genul adun arii sau sc aderii unei durate formale (exemplu: m aine la aceea si or a; aceasta nseamn a n mod obi snuit peste 24 de ore, dar poate nsemna peste 23 sau 25 de ore dac a intervine trecerea de la ora de iarn a la cea de var a sau invers). 2. determinarea ordinii cronologice a dou a momente de timp; 3. determinarea exact a, ca timp zic, a duratei ntre dou a momente de timp,

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 225

4. pentru aplicat ii speciale, citirea sau a sarea timpului n alte formate (timpul legal al altui fus orar, UTC, TAI, JD, etc). Punctul 1 este cerut de toate sistemele. Punctul 2 este important pentru foarte multe aplicat ii si rezolvarea lui corect a interzice mutarea ceasului napoi. Punctul 3 este important n aplicat iile n timp real; de asemenea, funct ionarea ceasului sistem presupune, n mod repetat, adunarea unei durate de timp la un moment de timp. Reprezentarea direct a a orei legale, sub forma an, lun a, zi, or a, minut, secund a, fract iuni de secund a, rezolv a simplu punctul 1. Ea ridic a ns a probleme la punctul 2 dac a sunt implicate calculatoare aate pe fusuri orare distincte sau dac a se efectueaz a operat ii n intervalul de o or a n jurul trecerii de la ora de var a la cea de iarn a; pentru tratarea corect a a acestor cazuri este necesar s a se stie, despre ecare or a, pe ce fus orar este considerat a si care sunt regulile privind ora de var a. Punctul 3 ridic a, pe l ang a problemele comune cu cele legate de punctul 2, complicat ii legate de saltul cu o or a nainte la trecerea de la ora de iarn a la ora de var a si calculele legate de calendar; de asemenea, pentru calcule exacte ale duratelor, sunt necesare informat ii cu privire la secundele de corect ie. Reprezentarea orei UTC permite determinarea ordinii cronologice si a duratelor f ar a a necesita date despre fusurile orare sau regulile privind ora de var a, n schimb aceste date sunt necesare la conversia ntre reprezentarea UTC si timpul legal. Reprezentarea TAI ca num ar de unit a ti de timp scurse de la un anumit moment xat rezolv a extrem de simplu punctele 2 si 3 n schimb mut a dicult a tile la rezolvarea punctului 1.

7.3.3. Formate utilizate n practic a


Deoarece ntr-o ret ea pot prezente calculatoare situate pe fusuri orare distincte, aproape orice format util n ret ea e transmite direct ora UTC sau TAI, e transmite sucient a informat ie pentru ca receptorul s a poat a calcula u sor ora UTC. 7.3.3.1. Formatul utilizat de po sta electronic a Pentru po sta electronic a ( 11.1), reprezentarea datei se face ca text si cont ine, n ordine: opt ional ziua din s apt am an a, ca prescurtare de 3 litere din limba englez a), ziua, ca num ar ntre 1 si 31, luna, ca sir de trei litere, prescurtare din englez a,

c 2008, Radu-Lucian Lup sa


226 7.3. Reprezentarea datei si orei

anul, ca sir de 4 cifre, ora, totdeauna ca 2 cifre, ntre 00 si 23, minutul, ca dou a cifre, ntre 00 si 59, opt ional, secunda, ca dou a cifre ntre 00 si 60, diferent a dintre ora legal a conform c areia a fost scris a data si ora UTC; aceasta este dat a ca 4 cifre, 2 pentru num arul de ore si 2 pentru num arul de minute, cele patru cifre ind precedate de semnul + sau . Componentele datei sunt separate printr-un amestec de virgule, spat ii si caractere dou a puncte. De exemplu, data:

Thu, 25 Oct 2007, 17:22:19 +0300

nseamn a c a la momentul scrierii mesajului ora local a a expeditorului era joi, 25 octombrie 2007, ora 17:22:19 si c a ora respectiv a este cu 3 ore n avans fat a de UTC. Ca urmare, ora UTC la acel moment era 14:22:19. Data considerat a n acest exemplu este plauzibil a conform orei legale a Rom aniei, n 25 octombrie 2007 ind nc a n vigoare ora de var a care este cu 3 ore n avans fat a de UTC. Orele astfel specicate sunt u sor de comparat si nu exist a ambiguit a ti legate de trecerea de la ora de var a la cea de iarn a. De exemplu, un mesaj trimis nainte de trecerea la ora de iarn a ar datat
Sun, 28 Oct 2007, 03:40 +0300

urmat la jum atate de or a, dup a trecerea la ora de iarn a, de


Sun, 28 Oct 2007, 03:10 +0200

7.3.3.2. ISO-8601 si RFC-3339 ISO-8601 este o standardizare a modului de scriere ca text a datei si orei. Standardul ind foarte complex, a ap arut RFC-3339 care cuprinde cazurile mai utile si mai frecvent folosite din ISO-8601. RFC-3339 prevede reprezentarea datelor astfel: anul, ca patru cifre (nu sunt admise prescurt ari de genul 07 pentru 2007), luna, ca 2 cifre (01 pentru ianuarie, 12 pentru decembrie), ziua, ca 2 cifre (de la 01 p an a la 31 sau mai put in, n funct ie de lun a). Cele trei componente sunt separate prin liniut e (ISO-8601 permite si alipirea lor):

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 2007-10-28 227

Ora se reprezint a prin 2 cifre pentru or a (0023), 2 cifre pentru minut (0059), dou a cifre pentru secund a (0060, n funct ie si de prezent a unei secunde de corect ie), eventual fract iunile de secund a si eventual specicarea fusului orar. Ora, minutul si secunda sunt separate prin dou a puncte, fract iunile de secund a se separ a de c ampul pentru secunde prin punct, iar specicarea fusului orar se face printr-un semn plus sau minus urmat de dou a cifre pentru num arul de ore diferent a urmat de caracterul dou a puncte si nc a dou a cifre pentru num arul de minute diferent a. Exemplu:
21:12:58.342+02:00

reprezint a acela si moment de timp, dar pe alt fus orar, cu


14:12:58.342-05:00

Data si ora se specic a mpreun a pun and litera T ntre ele:


2007-10-28T14:12:58.342-05:00

7.3.3.3. Timpul POSIX In sistemele de tip UNIX (conforme standardului POSIX), reprezentarea timpului este f acut a printr-un num ar ntreg considerat de obicei c a reprezint a num arul de secunde scurse de la 1 ianuarie 1970 ora 0:00 UTC. Ora UTC n formatul obi snuit se obt ine grup and secundele n minute, ore, zile, luni si ani conform regulilor obi snuite. De fapt, num arul dat ca dat a nu este exact num arul de secunde scurse de la 1 ianuarie 1970, ci difer a de acesta prin num arul de secunde de corect ie ad augate pentru ment inerea n sincronism a UTC cu rotat ia P am antului. De aceea, ,,timpul unix are salturi napoi de c ate o secund a la ecare introducere a unei astfel de secunde de corect ie. Timpul POSIX este reprezentat n mod obi snuit ca ntreg cu semn pe 32 de bit i, si ca urmare valoarea cea mai mare ce poate reprezentat a corespunde datei de 19 ianuarie 2038, ora 3:14:07 UTC. 7.3.3.4. TAI 64 TAI 64 este un standard ce presupune reprezentarea timpului ca num ar de secunde, incluz and secundele de corect ie. Num arul de secunde este reprezentat pe 63 de bit i (plus un bit rezervat), cu valoarea 262 corespunz and datei de 1 ianuarie 1970 ora 0 TAI. Intervalul de timp reprezentabil este imens, de ordinul a 1011 ani.

c 2008, Radu-Lucian Lup sa


228 7.3. Reprezentarea datei si orei

Pentru aplicat ii ce au nevoie de rezolut ie mai bun a de o secund a, standardul prevede nc a dou a c ampuri de c ate 32 de bit i (total 128 de bit i), reprezent and respectiv num arul de nanosecunde si de attosecunde (valori ntre 0 si 109 1).

7.4. Recodic ari


Este necesar uneori s a codic am un sir mai mult sau mai put in arbitrar de octet i sub forma unui sir de caractere supus unor restrict ii. Astfel de situat ii apar: La trimiterea sierelor ata sate la mesajele de po st a electronic a, ntregul mesaj, inclusiv partea ce cuprinde sierele ata sate, trebuie s a ndeplineasc a anumite restrict ii, ntre altele, s a nu cont in a caractere ASCII de control cu except ia perechilor carriage return line feed de la nalul ec arui r and, s a nu aib a r anduri prea lungi, etc. Pe de alt a parte, sierele ata sate pot siere binare cu cont inut arbitrar. La stocarea n siere text a unor informat ii reprezentate natural ca sir arbitrar de octet i, de exemplu la stocarea n siere text a unor chei de criptare, semn aturi electronice, etc. In limbaje de programare, la scrierea n sirurile de caractere a unor caractere cu rol special, ca de exemplu a ghilimelelor (care n mod normal sunt interpretate ca terminatorul sirului de caractere). In astfel de situat ii, este necesar s a se codice un sir arbitrar de octet i (ecare octet poate lua orice valori ntre 0 si 255) pe un alfabet const and n litere, cifre si c ateva simboluri speciale. Deoarece num arul de simboluri disponibile este mai mic dec at num arul de valori posibile ale octet ilor, un octet nu se va putea codica numai pe un singur caracter.

7.4.1. Codicarea hexazecimal a


Codicarea hexazecimal a prevede ca ecare octet s a se reprezinte pe dou a caractere, ecare caracter put and din mult imea cuprinz and cifrele zecimale (09) si literele AF. Exemplu: sirul de octet i 120, 0, 23, 45, 20 se scrie: 7800172D14. Uneori, n sirul de cifre hexa se insereaz a spat ii sau caractere newline pentru lizibilitate sau pentru evitarea r andurilor foarte lungi. Deoarece un caracter se reprezint a de obicei pe un octet, prin aceast a recodicare rezult a o dublare a lungimii sirului.

c 2008, Radu-Lucian Lup sa


ri de interes practic Capitolul 7. Codifica 229

7.4.2. Codicarea n baza 64


Codicarea n baza 64 codic a un sir de 3 octet i cu valori arbitrare ca un sir de 4 caractere din mult imea cuprinz and literele mari, literele mici, cifrele si caracterele +, / si = . Codicarea se face n modul urm ator: 1. S irul init ial de octet i se completeaz a la un multiplu de 3 octet i prin ad augarea a 0, 1 sau 2 octet i cu valoarea 0. 2. Se formeaz a un sir de 24 de bit i pun and unul dup a altul cei c ate 8 bit i din ecare octet; din ecare octet se ncepe cu bitul cel mai semnicativ. 3. S irul de 24 de bit i se mparte n 4 grupuri de c ate 6 bit i. 4. Fiecare sir de 6 bit i se consider a ca ind un num ar cuprins ntre 0 si 63, consider and primul bit din sir ca ind cel mai semnicativ. 5. Fiecare num ar obt inut la pasul anterior se reprezint a printr-un caracter. Cele 64 de valori posibile, de la 0 la 63, se reprezint a ca: litere mari (0A, 25Z), litere mici (26a, 51z), cifre (520, 619) si caracterele + si / (62+, 63/). Dac a o valoare 0 provine din bit i 0 provenit i integral dintr-un octet completat la pasul 1, n loc de A se scrie =. De exemplu, sirul de octet i 120, 0, 23, 45, 20 devine sirul de bit i 01111000 00000000 00010111 00101101 00010100 00000000 ultimul octet ind ad augat la pasul 1. S irul de bit i se regrupeaz a 011110 000000 000000 010111 001011 010001 010000 000000 rezult and sirul de numere ,, n baza 64: 30, 0, 0, 23, 11, 17, 16, 0, care se codic a eAAXLRQ=

7.4.3. Codic ari bazate pe secvent e de evitare


Recodic arile prin secvent e de evitare sunt utilizate n situat ia n care majoritatea octet ilor sau caracterelor din textul de recodicat sunt codurile unor caractere ce se reg asesc n alfabetul n care se face recodicarea. In aceast a situat ie, este favorabil ca, pe c at posibil, octet ii sau caracterele din textul de recodicat s a e codicate prin ele nsele, n special pentru ca textul s a poat a nt eles (part ial, cel put in) de c atre un utilizator uman direct n forma recodicat a. Recodicarea se face astfel. Se distinge un caracter n alfabetul destinat ie, caracter ce este denumit caracter de evitare (enlg. escape character ). Orice caracter din alfabetul surs a care se reg ase ste n alfabetul destinat ie si este diferit de caracterul de evitare se recodic a ca el nsu si.

c 2008, Radu-Lucian Lup sa


230 ri 7.4. Recodifica

Caracterul de evitare (dac a face parte din alfabetul surs a), precum si caracterele din alfabetul surs a ce nu se g asesc n alfabetul destinat ie, se codic a ca secvent e de caractere ce ncep cu un caracter de evitare. Exemple: Pentru po sta electronic a, un caracter ce nu pot transmise direct este codicat ca o secvent a de trei caractere, un caracter egal (=) si dou a cifre hexa reprezent and codul caracterului de transmis. Aceast a recodicare se nume ste quouted printables. Caracterele ASCII imprimabile, cu except ia caracterului egal, se transmit direct (f ar a recodicare). Ca urmare, un text n care caracterele ce trebuie recodicate sunt rare poate nt eles de c atre un utilizator uman f ar a prea mari dicult a ti. Ca exemplu, fraza precedent a se scrie (presupun and o codicare ISO-8859-2 pentru caractere si apoi o recodicare quouted printables ):
Ca urmare, un text =EEn care caracterele ce trebuie recodificate sunt rare poate fi =EEn=FEeles de c=E3tre un utilizator uman f=E3r=E3 prea mari dificult=E3=FEi.

In URL-uri, caracterele ce au rol sintactic (spat iu, /, etc) se codic a prin caracterul procent (%) urmat de dou a cifre hexa reprezent and valoarea caracterului respectiv. De notat c a aceste coduri sunt n cadrul codic arii UTF-8; ca urmare, o pagin a cu numele sir ar avea un URL de forma
http://example.com/%C8%98ir

In limbajul C si n alte limbaje derivate din el, ghilimelele (") servesc la delimitarea sirurilor de caractere. Dac a se dore ste introducerea unor astfel de caractere ntr-un sir, sau a caracterelor ASCII de control, se introduc secvent e escape cum ar : \" pentru ghilimele ("), \\ pentru backslash (\), \n pentru newline (caracterul ASCII cu codul 10). In HTML, caracterele unicode sunt scrise prin secvent e &#cod ;. De exemplu, litera t se scrie &#539;.

c 2008, Radu-Lucian Lup sa


231

Capitolul 8

Programarea n ret ea introducere

8.1. Interfat a de programare socket BSD


Interfat a socket este un ansamblu de funct ii sistem utilizate de programe (de fapt, de procese) pentru a comunica cu alte procese, aate n execut ie pe alte calculatoare. Interfat a socket a fost dezvoltat a n cadrul sistemului de operare BSD (sistem de tip UNIX, dezvoltat la Universitatea Berkley) de aici denumirea de socket BSD. Interfat a socket este disponibil a n aproape toate sistemele de operare actuale. Termenul socket se utilizeaz a at at pentru a numi ansamblul funct iilor sistem legate de comunicat ia prin ret ea, c at si pentru a desemna ecare cap at al unei conexiuni deschise n cadrul ret elei.
proces utilizator socket nucleul S.O. proces utilizator

nucleul S.O. leg atur a logic a ret ea

Figura 8.1: Comunicat ia ntre dou a procese prin ret ea

Prezent am n continuare principiile de baz a ale interfet ei socket (vezi

c 2008, Radu-Lucian Lup sa


232 8.1. Interfat a de programare socket BSD

si gura 8.1): Pe ecare calculator ruleaz a mai multe procese si ecare proces poate avea mai multe c ai de comunicat ie deschise. Prin urmare, pe un calculator trebuie s a poat a exista la un moment dat mai multe leg aturi (conexiuni) active. Realizarea comunic arii este intermediat a de sistemele de operare de pe calculatoarele pe care ruleaz a cele dou a procese. Deschiderea unei conexiuni, nchiderea ei, transmiterea sau recept ionarea de date pe o conexiune si congurarea parametrilor unei conexiuni se fac de c atre sistemul de operare, la cererea procesului. Cererile procesului se fac prin apelarea funct iilor sistem din familia socket. In cadrul comunicat iei dintre procesul utilizator si sistemul de operare local (prin intermediul apelurilor din familia socket ), capetele locale ale conexiunilor deschise sunt numite socket -uri si sunt identicate prin numere ntregi, unice n cadrul unui proces la ecare moment de timp. Fiecare entitate care comunic a n cadrul ret elei este identicat printr-o adres a unic a. O adresa este asociat a de fapt unui socket. Adresa este format a conform regulilor protocolului de ret ea utilizat. Interfat a socket cont ine funct ii pentru comunicat iei at at conform modelului conexiune c at si conform modelului cu datagrame. Funct iile sistem oferite permit stabilirea comunicat iei prin diferite protocoale (de exemplu, IPv4, IPv6, IPX), dar au aceea si sintax a de apel independent de protocolul dorit.

8.1.1. Comunicat ia prin conexiuni


In cele ce urmeaz a, prin client desemn am procesul care solicit a n mod activ deschiderea conexiunii c atre un partener de comunicat ie specicat printr-o adres a, iar prin server nt elegem procesul care a steapt a n mod pasiv conectarea unui client. Vom da n cele ce urmeaz a o scurt a descriere a operat iilor pe care trebuie s a le efectueze un proces pentru a deschide o conexiune si a comunica prin ea. Descrierea este mp art it a n patru p art i: deschiderea conexiunii de c atre client, deschiderea conexiunii de c atre server, comunicat ia propriu-zis a si nchiderea conexiunii. O descriere mai am anunt it a a funct iilor sistem apelate si a parametrilor mai des utilizat i este f acut a separat ( 8.1.3), iar pentru detalii suplimentare se recomand a citirea paginilor corespunz atoare din documentat ia on-line.

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 233

8.1.1.1. Deschiderea conexiunii de c atre client Procesul client trebuie s a cear a mai nt ai sistemului de operare local crearea unui socket. Trebuie specicat protocolul de ret ea utilizat (TCP/IPv4, TCP/IPv6, etc), dar nc a nu se specic a partenerul de comunicat ie. Socket-ul proasp at creat este n starea neconectat. Dup a crearea socket-ului, clientul cere sistemului de operare conectarea socket-ului la un anumit server, specicat prin adresa socket -ului serverului. De exemplu, pentru protocolul TCP/IPv4, adresa partenerului se specic a prin adresa IP (vezi 10.1) si num arul portului (vezi 10.3.1). Funct iile sistem apelate sunt: socket() pentru crearea socket-ului si connect() pentru deschiderea efectiv a a conexiunii.

8.1.1.2. Deschiderea conexiunii de c atre server Procesul server ncepe tot prin a cere sistemului de operare crearea unui socket de tip conexiune pentru protocolul dorit. Acest socket nu va servi pentru conexiunea propriu-zis a cu un client, ci doar pentru a steptarea conect arii client ilor; ca urmare este numit uneori socket de a steptare. Dup a crearea acestui socket, serverul trebuie s a cear a sistemului de operare stabilirea adresei la care serverul a steapt a cereri de conectare (desigur, acea parte din adres a care identic a ma sina serverului nu este la alegerea procesului server) si apoi cere efectiv nceperea a stept arii client ilor. Funct iile apelate n aceast a faz a sunt, n ordinea n care trebuie apelate: socket() pentru crearea socketului, bind() pentru stabilirea adresei si listen() pentru nceperea a stept arii client ilor. Preluarea efectiv a a unui client conectat se face prin apelarea unei funct ii sistem numit a accept(). La apelul funct iei accept(), sistemul de operare execut a urm atoarele: a steapt a cererea de conectare a unui client si deschide conexiunea c atre acesta; creaz a un nou socket, numit socket de conexiune, care reprezint a cap atul dinspre server al conexiunii proasp at deschise; returneaz a apelantului (procesului server) identicatorul socket-ului de conexiune creat. Dup a un apel accept(), socket-ul de a steptare poate utilizat pentru a a stepta noi client i, iar socket-ul de conexiune nou creat se utilizeaz a pentru a comunica efectiv cu acel client.

c 2008, Radu-Lucian Lup sa


234 8.1. Interfat a de programare socket BSD

8.1.1.3. Comunicat ia propriu-zis a O dat a deschis a conexiunea, clientul poate trimite siruri de octet i c atre server si invers, serverul poate trimite siruri de octet i c atre client. Cele dou a sensuri de comunicat ie funct ioneaz a identic (nu se mai distinge cine a fost client si cine a fost server) si complet independent (trimiterea datelor pe un sens nu este condit ionat a de recept ionarea datelor pe cel alalt sens). Pe ecare sens al conexiunii, se poate transmite un sir arbitrar de octet i. Octet ii trimi si de c atre unul dintre procese spre cel alalt sunt plasat i ntr-o coad a, transferat i prin ret ea la cel alalt cap at si citit i de c atre procesul de acolo. Comportamentul acesta este similar cu cel al unui pipe UNIX. Trimiterea datelor se face prin apelul funct iei send() (sau, cu funct ionalitate mai redus a, write()). Apelul acestor funct ii plaseaz a datele n coad a spre a transmise, dar nu a steapt a transmiterea lor efectiv a (returneaz a, de principiu, imediat controlul c atre procesul apelant). Dac a dimensiunea datelor din coad a este mai mare dec at o anumit a valoare prag, (aleas a de sistemele de operare de pe cele dou a ma sini), apelul send() se blocheaz a, return and controlul procesului apelant abia dup a ce partenerul de comunicat ie cite ste date din coad a, duc and la sc aderea dimensiunii datelor din coad a sub valoarea prag. Recept ionarea datelor trimise de c atre partenerul de comunicat ie se face prin intermediul apelului sistem recv() (cu functionalitate mai redus a se poate utiliza read()). Aceste funct ii returneaz a procesului apelant datele deja sosite pe calculatorul receptor si le elimin a din coad a. In cazul n care nu sunt nc a date disponibile, ele a steapt a sosirea a cel put in un octet. Sistemul garanteaz a sosirea la destinat ie a tuturor octet ilor trimi si (sau n stiint area receptorului, printr-un cod de eroare, asupra c aderii conexiunii), n ordinea n care au fost trimi si. Nu se p astreaz a ns a demarcarea ntre secvent ele de octet i trimise n apeluri send() distincte. De exemplu, este posibil ca emit atorul s a trimit a, n dou a apeluri succesive, sirurile abc si def, iar receptorul s a primeasc a, n apeluri recv() succesive, sirurile ab, cde si f. 8.1.1.4. Inchiderea conexiunii Inchiderea conexiunii se face separat pentru ecare sens si pentru ecare cap at. Exist a dou a funct ii: shutdown() nchide, la cap atul local al conexiunii, sensul de comunicat ie cerut de procesul apelant; close() nchide la cap atul local ambele sensuri de comunicat ie si n plus distruge socket-ul, eliber and resursele alocate (identicatorul de socket

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 235

si memoria alocat a n spat iul nucleului). Terminarea unui proces are efect identic cu un apel close() pentru toate socket-urile existente n acel moment n posesia acelui proces. Dac a cap atul de emisie al unui sens de comunicat ie a fost nchis, receptorul poate citi n continuare datele existente n acel moment n coad a, dup a care un eventual apel recv() va semnaliza apelantului faptul c a a fost nchis a conexiunea. Dac a cap atul de recept ie al unui sens a fost nchis, o scriere ulterioar a de la cel alalt cap at este posibil s a returneze un cod de eroare (pe sistemele de tip UNIX, scrierea poate duce si la primirea, de c atre procesul emit ator, a unui semnal SIGPIPE).

8.1.2. Comunicat ia prin datagrame


In comunicat ia prin datagrame, datagramele sunt transmise independent una de cealalt a si ecare datagram a are o adres a surs a, o adres a destinat ie si ni ste date utile. Un proces ce dore ste s a trimit a sau s a primeasc a datagrame trebuie mai nt ai s a creeze un socket de tip dgram ; un astfel de socket cont ine n principal adresa de ret ea a procesului posesor al socket-ului. Dup a crearea unui socket, se poate cere sistemului de operare s a asocieze socket-ului o anumit a adres a sau se poate l asa ca sistemul de operare s a-i atribuie o adres a liber a arbitrar a. Crearea unui socket se face prin apelul funct iei socket(), iar atribuirea unei adrese se face prin apelul bind(). O dat a creat un socket, procesul poate trimite datagrame de pe acel socket, prin apelul funct iei sendto(). Datagramele trimise vor avea ca adres a surs a adresa socket-ului si ca adres a destinat ia si cont inut util valorile date ca parametri funct iei sendto(). De pe un socket se pot trimite, succesiv, oric ate datagrame si oric ator destinatari. Datagramele emise sunt transmise c atre sistemul de operare al destinatarului, unde sunt memorate n buer-ele sistemului. Destinatarul poate citi o datagram a apel and funct ia recvfrom(). Aceast a funct ie ia urm atoarea datagram a adresat a socket-ului dat ca parametru la recvfrom() si o transfer a din buer-ele sistemului local n memoria procesului apelant. Funct ia ofer a apelantului cont inutul datagramei (datele utile) si, separat, adresa expeditorului datagramei. In ciuda numelui, recvfrom() nu poate instruit a s a ia n considerare doar datagramele expediate de la o anumit a adres a. Sistemul nu garanteaz a livrarea tuturor datagramelor (este posibil a pierderea unor datagrame) si nici nu ofer a vreun mecanism de informare a expeditorului n cazul unei pierderi. Mai mult, exist a posibilitatea (e drept, rar a) ca o datagam a s a e duplicat a (s a ajung a dou a copii la destinatar) si

c 2008, Radu-Lucian Lup sa


236 8.1. Interfat a de programare socket BSD

este posibil ca dou a sau mai multe datagrame adresate aceluia si destinatar s a ajung a la destinat ie n alt a ordine dec at cea n care au fost emise. Dac a astfel de situat ii sunt inadmisibile pentru aplicat ie, atunci protocolul de comunicat ie trebuie s a prevad a conrm ari de primire si repetarea datagramelor pierdute, precum si numere de secvent a sau alte informat ii pentru identicarea ordinii corecte a datagramelor si a duplicatelor. Implementarea acestor mecanisme cade n sarcina proceselor. La terminarea utiliz arii unui socket, procesul posesor poate cere distrugerea socket-ului si eliberarea resurselor asociate (identicatorul de socket, memoria ocupat a n sistemul de operare pentru datele asociate socket-ului, portul asociat socket-ului). Distrugerea socket-ului se face prin apelul funct iei close(). In mod curent, ntr-o comunicat ie prin datagrame, unul dintre procese are rol de client, n sensul c a trimite cereri, iar cel alalt act ioneaz a ca server, n sensul c a prelucreaz a cererile clientului si trimite napoi clientului r aspunsurile la cereri. Intr-un astfel de scenariu, serverul creaz a un socket c aruia i asociaz a o adres a prestabilit a, dup a care a steapt a cereri, apel and n mod repetat recvfrom(). Clientul creaz a un socket, c aruia nu-i asociaz a o adres a (nu execut a bind()). Clientul trimite apoi cererea sub forma unei datagrame de pe socket-ul creat. La trimiterea primei datagrame, sistemul de operare d a o adres a socket-ului; datagrama emis a poart a ca adres a surs a acest a adres a. La primirea unei datagrame, serverul recupereaz a datele utile si adresa surs a, proceseaz a cererea si trimite r aspunsul c atre adresa surs a a cererii. In acest fel, r aspunsul este adresat exact socket-ului de pe care clientul a trimis cererea. Clientul obt ine r aspunsul execut and recvfrom() asupra socket-ului de pe care a expediat cererea. Cu privire la tratarea datagramelor pierdute, un caz simplu este acela n care clientul pune doar ntreb ari (interog ari) serverului, iar procesarea interog arii nu modic a n nici un fel starea serverului. Un exemplu tipic n acest sens este protocolul DNS ( 10.4). In acest caz, datagrama cerere cont ine interogarea si daatgrama r aspuns cont ine at at cererea la care se r aspunde c at si r aspunsul la interogare. Serverul ia ( n mod repetat) c ate o cerere, calculeaz a r aspunsul si trimite o napoi o datagram a cu cererea primit a si r aspunsul la cerere. Clientul trimite cererile sale si a steapt a r aspunsurile. Deoarece ecare r aspuns cont ine n el si cererea, clientul poate identica ecare r aspuns la ce cerere i corespunde, chiar si n cazul invers arii ordinii datagramelor. Dac a la o cerere nu prime ste r aspuns ntr-un anumit interval de timp, clientul repet a cererea; deoarece procesarea unei cereri nu modic a starea serverului, duplicarea cererii de c atre ret ea sau repetarea cererii de c atre client ca urmare a pierderii

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 237

r aspunsului nu au efecte nocive. Clientul trebuie s a ignore r aspunsurile duplicate la o aceea si interogare.

8.1.3. Principalele apeluri sistem


8.1.3.1. Funct ia socket() Funct ia are sintaxa:
int socket(int proto_family, int type, int protocol)

Funct ia creaz a un socket si returneaz a identicatorul s au. Parametrii sunt: type: desemneaz a tipul de servicii dorite: SOCK STREAM:conexiune punct la punct, ux de date bidirect ional la nivel de octet, asigur and livrare sigura, cu pastrarea ordinii octet ilor si transmisie fara erori. SOCK DGRAM:datagrame, at at punct la punct c at si difuziune; transmisia este garantat a a f ar a erori, dar livrarea nu este sigura si nici ordinea datagramelor garantata. SOCK RAW:acces la protocoale de vel cobor at; este de exemplu utilizat de c atre comanda ping pentru comunicat ie prin protocolul ICMP. a tipul de ret ea cu care se lucreaz a (IP, IPX, etc). proto family identic Valori posibile: PF INET:protocol Internet, versiunea 4 (IPv4) PF INET6:protocol Internet, versiunea 6 (IPv6) PF UNIX:comunicat ie local a pe o ma sin a UNIX. protocol selecteaz a protocolul particular de utilizat. Acest parametru este util dac a pentru un tip de ret ea dat si pentru un tip de serviciu xat exist a mai multe protocoale utilizabile. Valoarea 0 desemneaz a protocolul implicit pentru tipul de ret ea si tipul de serviciu alese. 8.1.3.2. Funct ia connect() Funct ia are sintaxa:
int connect(int sock_id, struct sockaddr* addr, int addr_len)

Funct ia are ca efect conectarea socketului identicat de primul parametru care trebuie s a e un socket de tip conexiune proasp at creat ( nc a neconectat)

c 2008, Radu-Lucian Lup sa


238 8.1. Interfat a de programare socket BSD

la serverul identicat prin adres a dat a prin parametrii addr si addr len. La adresa respectiv a trebuie s a existe deja un server care s a a stepte conexiuni (s a fost deja executat apelul listen() asupra socket-ului serverului). Adresa trebuie plasat a, nainte de apelul connect(), ntr-o structur a av and un anumit format; cont inutul acestei structuri va descris n 8.1.3.6. Adresa n memorie a acestei structuri trebuie dat a ca parametrul addr, iar lungimea structurii de adres a trebuie dat a ca parametrul addr len. Motivul acestei complicat ii este legat de faptul c a funct ia connect() trebuie s a poat a lucra cu formate diferite de adres a, pentru diferite protocoale, iar unele protocoale au adrese de lungime variabil a. Funct ia connect() returneaz a 0 n caz de succes si 1 n caz de eroare. Eroarea survenit a poate constatat a e veric and valoarea variabilei globale errno, e apel and funct ia perror() imediat dup a funct ia sistem ce a nt ampinat probleme. Eroarea cea mai frecvent a este lipsa unui server care s a asculte la adresa specicat a. 8.1.3.3. Funct ia bind()
int bind(int sd, struct sockaddr* addr, socklen_t len)

Funct ia are ca efect atribuirea adresei specicate n parametrul addr socket-ului identicat prin identicatorul sd. Aceast a funct ie se apeleaz a n mod normal dintr-un proces server, pentru a preg ati un socket stream de a steptare sau un socket dgram pe care se a steapt a cereri de la client i. Partea, din adresa de atribuit socket-ului, ce cont ine adresa ma sinii poate e una dintre adresele ma sinii locale, e valoarea special a INADDR_ANY (pentru IPv4) sau IN6ADDR_ANY_INIT (pentru IPv6). In primul caz, socket-ul va primi doar cereri de conexiune (sau, respectiv, pachete) adresate adresei IP date socket-ului, si nu si cele adresate altora dintre adresele ma sinii server. Exemplul 8.1: S a presupunem c a ma sina server are adresele 193.226.40.130 si 127.0.0.1. Dac a la apelul funct iei bind() se d a adresa IP 127.0.0.1, atunci socket-ul respectiv va primi doar cereri de conectare destinate adresei IP 127.0.0.1, nu si adresei 193.226.40.130. Dimpotriv a, dac a adresa acordat a prin bind() este INADDR_ANY, atunci socket-ul respectiv va accepta cereri de conectare adresate oric areia dintre adresele ma sinii locale, adic a at at adresei 193.226.40.130 c at si adresei 127.0.0.1. Adresa atribuit a prin funct ia bind() trebuie s a e liber a n acel moment. Dac a n momentul apelului bind() exist a un alt socket de acela si tip av and aceea si adres a, apelul bind() e sueaza.

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 239

Pe sistemele de tip UNIX, pentru atribuirea unui num ar de port mai mic dec at 1024 este necesar ca procesul apelant s a ruleze din cont de administrator. Funct ia bind() poate apelat a doar pentru un socket proasp at creat, c aruia nu i s-a atribuit nc a o adres a. Aceasta nseamn a c a funct ia bind() nu poate apelat a de dou a ori pentru acela si socket. De asemenea, funct ia bind() nu poate apelat a pentru un socket de conexiune creat prin funct ia accept() si nici pentru un socket asupra c aruia s-a apelat n prealabil vreuna dintre funct iile connect(), listen() sau sendto() aceste funct ii av and ca efect atribuirea unei adrese libere aleatoare. Funct ia returneaz a 0 n caz de succes si 1 n caz de eroare. Eroarea cea mai frecvent a este c a adresa dorit a este deja ocupat a. 8.1.3.4. Funct ia listen()
int listen(int sd, int backlog)

Funct ia cere sistemului de operare s a accepte, din acel moment, cererile de conexiune pe adresa socket-ului sd. Dac a socketului respectiv nu i s-a atribuit nc a o adres a (printr-un apel bind() anterior), funct ia listen() i atribuie o adres a aleas a aleator. Parametrul backlog xeaz a dimensiunea cozii de a steptare n acceptarea conexiunilor. Anume, vor putea exista backlog client i care au executat connect() f ar a ca serverul s a creat nc a pentru ei socket-uri de conexiune prin apeluri accept(). De notat c a nu exist a nici o limitare a num arului de client i conectat i, preluat i deja prin apelul accept(). 8.1.3.5. Funct ia accept()
int accept(int sd, struct sockaddr *addr, socklen_t *addrlen)

Apelul funct iei accept() are ca efect crearea unui socket de conexiune, asociat unui client conectat (prin apelul connect()) la socket-ul de a steptare sd. Dac a nu exist a nc a nici un client conectat si pentru care s a nu se creat socket de conexiune, funct ia accept() a steapt a p an a la conectarea urm atorului client. Funct ia returneaz a identicatorul socket-ului de conexiune creat. Dac a procesul server nu dore ste s a ae adresa clientului, va da valori NULL parametrilor addr si addrlen. Dac a procesul server dore ste s a ae adresa clientului, atunci va trebui s a aloce spat iu pentru o structur a pentru memorarea adresei clientului, s a pun a adresa structurii respective n parametrul

c 2008, Radu-Lucian Lup sa


240 8.1. Interfat a de programare socket BSD

addr, s a plaseze ntr-o variabil a de tip ntreg dimensiunea memoriei alocate pentru adresa clientului si s a pun a adresa acestui ntreg n parametrul adrlen. In acest caz, la revenirea din apelul accept(), procesul server va g asi n structura de adres a adresa socket-ului client si n variabila ntreag a a c arui adres a a fost dat a n parametrul adrlen va g asi dimensiunea efectiv utilizat a de sistemul de operare pentru a scrie adresa clientului. 8.1.3.6. Formatul adreselor Pentru funct iile socket ce primesc de la apelant (ca parametru) o adres a din ret ea (bind(), connect() si sendto()), precum si pentru cele ce returneaz a apelantului adrese de ret ea (accept(), recvfrom(), getsockname() si getpeername()), sunt denite structuri de date (struct) n care se plaseaz a adresele socket-urilor. Pentru ca funct iile de mai sus s a poat a avea aceea si sintax a de apel independent de tipul de ret ea ( si, n consecint a, de structura adresei), funct iile primesc adresa printr-un pointer la zona de memorie ce cont ine adresa de ret ea. Structura zonei de memorie respective depinde de tipul ret elei utilizate. In toate cazurile, aceasta ncepe cu un ntreg pe 16 bit i reprezent and tipul de ret ea. Dimensiunea structurii de date ce cont ine adresa de ret ea depinde de tipul de ret ea si, n plus, pentru anumite tipuri de ret ea, dimensiunea este variabil a. Din acest motiv: funct iile care primesc de la apelant o adres a (connect(), bind() si sendto()) au doi parametri: un pointer c atre structura de adres a si un ntreg reprezent and dimensiunea acestei structuri; funct iile care furnizeaz a apelantului o adres a (accept(), recvfrom(), getsockname() si getpeername()) primesc doi parametri: un pointer c atre structura de adres a si un pointer c atre o variabil a de tip ntreg pe care apelantul trebuie s-o init ializeze, naintea apelului, cu dimensiunea pe care a alocat-o pentru structura de adres a si n care funct ia pune, n timpul apelului, dimensiunea utilizat a efectiv de astuctura de adres a. In ambele cazuri, parametrul pointer c atre structura de adres a este declarat ca ind de tip struct sockaddr*. La apelul acestor funct ii este necesar a conversia a pointer-ului c atre structura de adres a de la pointer-ul specic tipului de ret ea la struct sockaddr*. O adres a a unui cap at al unei conexiuni TCP sau a unei leg aturi prin datagrame UDP este format a din adresa IP a ma sinii si num arul de port (vezi 10.2.3.1, 10.3.1.6 si 10.3.2). Pentru nevoile funct iilor de mai sus, adresele socket-urilor TCP si UDP se pun, n funct ie de protocolul de nivel

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 241

ret ea (IPv4 sau IPv6), ntr-o structur a de tip sockaddr_in pentru IPv4 sau sockaddr_in6 pentru IPv6. Pentru adrese IPv4 este denit a structura sockaddr_in av and urm atorii membrii: sin family:trebuie s a cont in a constanta AF_INET; sin port:de tip ntreg de 16 bit i (2 octet i), f ar a semn, n ordine ret ea (cel mai semnicativ octet este primul), reprezent and num arul portului; sin addr:cont ine adresa IP. Are tipul struct in_addr, av and un singur c amp, s_addr, de tip ntreg pe 4 octet i n ordine ret ea. Adresa IPv4 poate convertit a de la notat ia obi snuit a (notat ia zecimal a cu puncte) la struct in_addr cu ajutorul funct iei
int inet_aton(const char *cp, struct in_addr *inp);

Conversia invers a, de la structura in_addr la string n notat ie zecimal a cu punct se face cu ajutorul funct iei
char *inet_ntoa(struct in_addr in);

care returneaz a rezultatul ntr-un buer static, apelantul trebuind s a copieze rezultatul nainte de un nou apel al functiei. Pentru adrese IPv6 este denit a structura sockaddr_in6 av and urm atorii membrii: a cont in a constanta AF_INET6; sin6 family:trebuie s ntreg de 16 bit i (2 octet i), f ar a semn, n ordine ret ea (cel sin6 port:de tip mai semnicativ octet este primul), reprezent and num arul portului; sin6 flow:eticheta de ux. sin6 addr:cont ine adresa IP. Are tipul struct in6_addr, av and un singur c amp, s6_addr, de tip tablou de 16 octet i. Obt inerea unei adrese IPv4 sau IPv6 cunosc and numele de domeniu (vezi 10.4) se face cu ajutorul funct iei
struct hostent *gethostbyname(const char *name);

care returneaz a un pointer la o structur a ce cont ine mai multe c ampuri dintre care cele mai importante sunt: int h addrtype:tipul adresei, AF_INET sau AF_INET6;

c 2008, Radu-Lucian Lup sa


242 8.1. Interfat a de programare socket BSD

char **h addr list:pointer la un sir de pointeri c atre adresele IPv4 sau IPv6 ale ma sinii cu numele name, n formatul in_addr sau respectiv in6_addr; int h length:lungimea sirului h_addr_list. 8.1.3.7. Interact iunea dintre connect(), listen() si accept() La apelul connect(), sistemul de operare de pe ma sina client trimite ma sinii server o cerere de conectare. La primirea cererii de conectare, sistemul de operare de pe ma sina server act ioneaz a astfel: dac a adresa din cerere nu corespunde unui socket pentru care s-a efectuat deja apelul listen(), refuz a conectarea; dac a adresa corespunde unui socket pentru care s-a efectuat listen(), ncearc a plasarea clientului ntr-o coad a de client i conectat i si nepreluat i nc a prin accept(). Dac a plasarea reu se ste (coada ind mai mic a dec at valoarea parametrului backlog din apelul listen()), sistemul de operare trimite sistemului de operare de pe ma sina client un mesaj de acceptare; n caz contrar trimite un mesaj de refuz. Apelul connect() revine n procesul client n momentul sosirii acceptului sau refuzului de la sistemul de operare de pe ma sina server. Revenirea din apelul connect() nu este deci condit ionat a de apelul accept() al procesului server. Apelul accept() preia un client din coada descris a mai sus. Dac a coada este vid a n momentul apelului, funct ia a steapt a sosirea unui client. Dac a coada nu este vid a, apelul accept() returneaz a imediat. Parametrul backlog al apelului listen() se refer a la dimensiunea cozii de client i conectat i (prin connect()) si nc a nepreluat i prin accept(), si nu la client ii deja preluat i prin accept(). 8.1.3.8. Funct iile getsockname() si getpeername()
int getsockname(int sd, struct sockaddr *name, socklen_t *namelen); int getpeername(int sd, struct sockaddr *name, socklen_t *namelen);

Funct ia getsockname() furnizeaz a apelantului adresa socket-ului sd. Funct ia getpeername(), apelat a pentru un socket de tip conexiune deja conectat, furnizeaz a adresa partenerului de comunicat ie. Funct ia getsockname() este util a dac a un proces act ioneaz a ca server, cre nd n acest scop un socket de a steptare, dar num arul portul pe care a steapt a conexiunile nu este prestabilit ci este transmis, pe alt a cale, viitorilor client. In acest caz, procesul server creaz a un socket (apel and socket()),

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 243

cere primirea cererilor de conexiune (apel and listen(), dar f ar a a apelat bind()) dup a care determin a, prin apelul getsockname(), adresa atribuit a la listen() socket-ului respectiv si transmite aceast a adres a viitorilor client i. 8.1.3.9. Funct iile send() si recv() Apelurile sistem send() si recv() sunt utilizate n faza de comunicat ie pentru socket-uri de tip conexiune. Descriem n continuare utilizarea acestor funct ii consider and un singur sens de comunicat ie si ca urmare ne vom referi la un proces emit a tor si un proces receptor n raport cu sensul considerat. De notat ns a c a o conexiune socket stream este bidirect ional a si comunicarea n cele dou a sensuri se desf a soar a independent si prin acelea si mecanisme. Sintaxa funct iilor este:
ssize_t send(int sd, const void *buf, size_t len, int flags); ssize_t recv(int sd, void *buf, size_t len, int flags);

Funct ia send() trimite pe conexiunea identicat a prin socket-ul sd un num ar de len octet i din variabila a c arui adres a este indicat a de pointer-ul buf. Funct ia returneaz a controlul dup a plasarea datelor de transmis n buerele sistemului de operare al ma sinii locale. Valoarea returnat a de funct ia send() este num arul de octet i scri si efectiv, sau 1 n caz de eroare. Datele plasate n buer-e prin apelul send() urmeaz a a trimise spre receptor f ar a alte act iuni din partea emit atorului. In modul normal de lucru, dac a nu exist a spat iu sucient n buer-ele sistemului de operare, funct ia send() a steapt a ca aceste buer-e s a se elibereze (prin transmiterea efectiv a a datelor c atre sistemul de operare al receptorului si citirea lor de c atre procesul receptor). Aceast a a steptare are ca rol fr anarea procesului emit ator dac a acesta produce date la un debit mai mare dec at cel cu care este capabil a ret eaua s a le transmit a sau procesul receptor s a le preia. Prin plasarea valorii MSG_DONTWAIT n parametrul flags, acest comportament este modicat. Astfel, n acest caz, dac a nu exist a sucient spat iu n buer-ele sistemului de operare, funct ia send() scrie doar o parte din datele furnizate si returneaz a imediat controlul procesului apelant. In cazul n care funct ia send() nu scrie nimic, ea returneaz a valoarea 1 si seteaz a variabila global a errno la valoarea EAGAIN. In cazul n care funct ia send() scrie cel put in un octet, ea returneaz a num arul de octet i scri si efectiv. In ambele cazuri, este sarcina procesului emit ator s a apeleze din nou, la un moment ulterior, funct ia send() n vederea scrierii octet ilor r ama si. Deoarece funct ia send() returneaz a nainte de transmiterea efectiv a a datelor, eventualele erori legate de transmiterea datelor nu pot raportate

c 2008, Radu-Lucian Lup sa


244 8.1. Interfat a de programare socket BSD

apelantului prin valoarea returnat a de send(). Pot s a apar a dou a tipuri de erori: c aderea ret elei si nchiderea conexiunii de c atre receptor. Aceste erori vor raportate de c atre sistemul de operare al emit atorului procesului emit ator prin aceea c a apeluri send() ulterioare pentru acela si socket vor returna 1. In plus, pe sistemele de tip UNIX, apelul send() pentru o conexiune al c arui cap at destinat ie este nchis duce la primirea de c atre procesul emit ator a unui semnal SIGPIPE, care are ca efect implicit terminarea imediat a a procesului emit ator. Funct ia recv() extrage date sosite pe conexiune si aate n buerul sistemului de operare local. Funct ia prime ste ca argumente identicatorul socket-ului corespunz ator conexiunii, adresa unei zone de memorie unde s a plaseze datele citite si num arul de octet i de citit. Num arul de octet i de citit reprezint a num arul maxim de octet i pe care funct ia i va transfera din buer-ul sistemului de operare n zona procesului apelant. Dac a num arul de octet i disponibili n buer-ele sistemului de operare este mai mic, doar octet ii disponibili n acel moment vor transferat i. Dac a n momentul apelului nu exist a nici un octet disponibil n buer-ele sistemului de operare local, funct ia recv() a steapt a sosirea a cel put in un octet. Funct ia returneaz a num arul de octet i transferat i (citit i de pe conexiune). Comportamentul descris mai sus poate modicat prin plasarea uneia din urm atoarele valori n parametrul flags: n cazul n care nu este nici un octet disponibil, funct ia MSG DONTWAIT: recv() returneaz a valoarea 1 si seteaz a variabila global a errno la valoarea EAGAIN; ia recv() a steapt a s a e disponibili cel put in len octet i MSG WAITALL:funct si cite ste exact len octet i. Este important de notat c a datele sunt transmise de la sistemul de operare emit ator spre cel receptor n fragmente (pachete), c a mp art irea datelor n fragmente este independent a de modul n care au fost furnizate prin apeluri send() succesive si c a, n nal, fragmentele ce vor disponibile succesiv pentru receptor sunt independente de fragmentele furnizate n apelurile send(). Ca urmare, este posibil ca emit atorul s a trimit a, prin dou a apeluri send() consecutive, sirurile de octet i abc si def, iar receptorul, apel and repetat recv() cu len=3 si flags=0, s a primeasc a ab, cd si ef. Singurul lucru garantat este c a prin concatenarea tuturor fragmentelor trimise de emit ator se obt ine acela si sir de octet i ca si prin concatenarea tuturor fragmentelor primite de receptor. In cazul nchiderii conexiunii de c atre emit ator, apelurile recv() efectuate de procesul receptor vor citi mai nt ai datele r amase n buer-e, iar

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 245

dup a epuizarea acestora vor returna valoarea 0. Prin urmare, funct ia recv() returneaz a valoarea 0 dac a si numai dac a emit atorul a nchis conexiunea si toate datele trimise nainte de nchiderea conexiunii au fost deja citite. Dealtfel, valoarea 0 returnat a de recv() sau read() este semnalizarea uzual a a termin arii datelor de citit si se utilizeaz a si pentru a semnaliza sf ar situl unui sier sau nchiderii cap atului de scriere ntr-un pipe UNIX. 8.1.3.10. Funct iile shutdown() si close()
int shutdown(int sd, int how); int close(int sd);

Funct ia shutdown() nchide sensul de emisie, sensul de recept ie sau ambele sensuri de comunicat ie ale conexiunii identicate de indeticatorul de socket sd, conform valorii parametrului how: SHUT_WR, SHUT_RD sau respectiv SHUT_RDWR. Utilitatea principal a a funct iei este nchiderea sensului de emisie pentru a semnaliza celuilalt cap at terminarea datelor transmise (apelurile recv() din procesul de la cel alalt cap at al conexiunii vor returna 0). Funct ia shutdown() poate apelat a doar pe un socket conectat si nu distruge socketul. Funct ia close() distruge socket-ul sd. Dac a socket-ul era un socket conectat n acel moment, nchide ambele sensuri de comunicat ie. Dup a apelul close(), identicatorul de socket este eliberat si poate utilizat ulterior de c atre sistemul de operare pentru a identica socket-uri sau alte obiecte create ulterior. Apelul close() este necesar pentru a elibera resursele ocupate de socket. Poate efectuat oric and asupra oric arui tip de socket. Terminarea unui proces, indiferent de modul de terminare, are ca efect si distrugerea tuturor socket-urilor existente n acel moment, printr-un mecanism identic cu c ate un apel close() pentru ecare socket. 8.1.3.11. Funct iile sendto() si recvfrom()
ssize_t sendto(int sd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t recvfrom(int sd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);

Funct ia sendto() trimite o datagram a de pe un socket dgram. Parametrii reprezint a: sd: socket-ul de pe care se transmite datagrama, adic a a c arui adres a va utilizat a ca adres a surs a a datagramei;

c 2008, Radu-Lucian Lup sa


246 8.1. Interfat a de programare socket BSD

to: pointer spre structura ce cont ine adresa de ret ea a destinatarului; tolen reprezint a lungimea structurii pointate de to; buf: pointer spre o zon a de memorie ce cont ine datele utile; len reprezint a lungimea datelor utile. Datele utile sunt un sir arbitrar de octet i. Funct ia returneaz a num arul de octet i ai datagramei trimise (adic a valoarea lui len) n caz de succes si 1 n caz de eroare. Funct ia returneaz a controlul apelantului nainte ca pachetul s a e livrat destinatarului si ca urmare eventuala pierdere a pachetului nu poate raportat a apelantului. Funct ia recvfrom() cite ste din buerele sistemului de operare local urm atoarea datagram a adresat a socket-ului dat ca parametru. Dac a nu exist a nici o datagram a, funct ia a steapt a sosirea urm atoarei datagrame, cu except ia cazului n care flags cont ine valoarea MSG_DONTWAIT, caz n care recvfrom() returneaz a imediat valoarea 1 si seteaz a errno la valoarea EAGAIN. Datagrama este citit a n zona de memorie pointat a de parametrul buf si a c arei dimensiune este dat a n variabila len. Funct ia recvfrom() returneaz a dimensiunea datagramei. Dac a datagrama este mai mare dec at valoara parametrului len, nalul datagramei este pierdut; funct ia recvfrom() nu scrie niciodat a dincolo de len octet i n memoria procesului. Adresa emit atorului datagramei este plasat a de funct ia recvfrom() n variabila pointat a de from. Parametrul fromlen trebuie s a pointeze la o variabil a de tip ntreg a c arui valoare, nainte de apelul recvfrom(), trebuie s a e egal a cu dimensiunea, n octet i, a zonei de memorie alocate pentru adresa emit atorului. Funct ia recvfrom() modic a aceast a variabil a, pun and n ea dimensiunea utilizat a efectiv pentru scrierea adresei emit atorului.

8.1.4. Exemple
8.1.4.1. Comunicare prin conexiune D am mai jos textul surs a ( n C pentru Linux) pentru un client care se conecteaz a la un server TCP/IPv4 specicat prin numele ma sinii si num arul portului TCP (date ca argumente n linia de comand a), i trimite un sir de caractere xat (abcd), dup a care cite ste si a seaz a tot ce trimite server-ul.
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) {

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere int port, sd, r; struct hostent* hh; struct sockaddr_in adr; char buf[100]; if(argc!=3){ fprintf(stderr, "Utilizare: cli adresa port\n"); return 1; } memset(&adr, 0, sizeof(adr)); adr.sin_family = AF_INET; if(1!=sscanf(argv[2], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } adr.sin_port = htons(port); hh=gethostbyname(argv[1]); if(hh==0 || hh->h_addrtype!=AF_INET || hh->h_length<=0){ fprintf(stderr, "Nu se poate determina adresa serverului\n"); return 1; } memcpy(&adr.sin_addr, hh->h_addr_list[0], 4); sd=socket(PF_INET, SOCK_STREAM, 0); if(-1==connect(sd, (struct sockaddr*)&adr, sizeof(adr)) ) { perror("connect()"); return 1; } send(sd, "abcd", 4, 0); shutdown(sd, SHUT_WR); while((r=recv(sd, buf, 100, 0))>0){ write(1,buf,r); } if(r==-1){ perror("recv()"); return 1; } close(sd); return 0; } 247

D am n continuare textul surs a pentru un server care a steapt a conectarea unui client pe portul specicat n linia de comand a, a seaz a adresa de la care s-a conectat clientul (adresa IP si num arul de port), cite ste de pe conexiune

c 2008, Radu-Lucian Lup sa


248 8.1. Interfat a de programare socket BSD

si a seaz a pe ecran tot ce transmite clientul (p an a la nchiderea sensului de conexiune de la client la server) si apoi trimite napoi textul xyz.
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) { int sd, sd_c, port, r; struct sockaddr_in my_addr, cli_addr; socklen_t cli_addr_size; char buf[100]; if(argc!=2){ fprintf(stderr, "Utilizare: srv port\n"); return 1; } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; if(1!=sscanf(argv[1], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } my_addr.sin_port=htons(port); my_addr.sin_addr.s_addr=htonl(INADDR_ANY); sd=socket(PF_INET, SOCK_STREAM, 0); if(-1==bind(sd, (struct sockaddr*)&my_addr, sizeof(my_addr)) ) { perror("bind()"); return 1; } listen(sd, 1); cli_addr_size=sizeof(cli_addr); sd_c = accept(sd, (struct sockaddr*)&cli_addr, &cli_addr_size); printf("client conectat de la %s:%d\n", inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port) ); close(sd); while((r=recv(sd_c, buf, 100, 0))>0){

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere write(1,buf,r); } if(r==-1){ perror("recv()"); return 1; } send(sd_c, "xyz", 3, 0); close(sd_c); return 0; } 249

8.1.4.2. Comunicare prin datagrame Mai jos este descris un client UDP/IPv4 care se conecteaz a la un server specicat prin numele ma sinii sau adresa IP si num arul de port. Clientul trimite serverului o datagram a de 4 octet i cont in and textul abcd si a steapt a o datagram a ca r aspuns, a c arei cont inut l a seaz a.
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h> int main(int argc, char* argv[]) { int port, sd, r; struct hostent* hh; struct sockaddr_in adr; socklen_t adr_size; char buf[100]; if(argc!=3){ fprintf(stderr, "Utilizare: cli adresa port\n"); return 1; } memset(&adr, 0, sizeof(adr)); adr.sin_family = AF_INET; if(1!=sscanf(argv[2], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } adr.sin_port = htons(port); hh=gethostbyname(argv[1]); if(hh==0 || hh->h_addrtype!=AF_INET || hh->h_length<=0){

c 2008, Radu-Lucian Lup sa


250 8.1. Interfat a de programare socket BSD fprintf(stderr, "Nu se poate determina adresa serverului\n"); return 1; } memcpy(&adr.sin_addr, hh->h_addr_list[0], 4); sd=socket(PF_INET, SOCK_DGRAM, 0); if(sd==-1){ perror("socket()"); return 1; } if(-1==sendto(sd, "abcd", 4, 0, (struct sockaddr*)&adr, sizeof(adr)) ) { perror("sendto()"); return 1; } adr_size=sizeof(adr); r=recvfrom(sd, buf, 100, 0, (struct sockaddr*)&adr, &adr_size); if(r==-1){ perror("recvfrom()"); return 1; } printf("datagrama primita de la de la %s:%d\n", inet_ntoa(adr.sin_addr), ntohs(adr.sin_port) ); buf[r]=0; printf("continut: \"%s\"\n", buf); close(sd); return 0; }

In continuare descriem un server UDP/IPv4. Acesta a steapt a o datagram a de la un client, a seaz a adresa de la care a fost trimis a datagrama precum si cont inutul datagramei primite. Apoi trimite napoi, la adresa de la care a sosit datagrama de la client, o datagram a cont in and sirul de 3 octet i xyz.
#include #include #include #include #include #include #include <sys/socket.h> <netinet/in.h> <arpa/inet.h> <netdb.h> <stdio.h> <unistd.h> <string.h>

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere int main(int argc, char* argv[]) { int sd, port, r; struct sockaddr_in my_addr, cli_addr; socklen_t cli_addr_size; char buf[101]; if(argc!=2){ fprintf(stderr, "Utilizare: srv port\n"); return 1; } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; if(1!=sscanf(argv[1], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } my_addr.sin_port=htons(port); my_addr.sin_addr.s_addr=htonl(INADDR_ANY); sd=socket(PF_INET, SOCK_DGRAM, 0); if(-1==bind(sd, (struct sockaddr*)&my_addr, sizeof(my_addr)) ) { perror("bind()"); return 1; } cli_addr_size=sizeof(cli_addr); r=recvfrom(sd, buf, 100, 0, (struct sockaddr*)&cli_addr, &cli_addr_size); if(r==-1){ perror("recvfrom()"); return 1; } printf("datagrama primita de la de la %s:%d\n", inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port) ); buf[r]=0; printf("continut: \"%s\"\n", buf); sendto(sd, "xyz", 3, 0, (struct sockaddr*)&cli_addr, cli_addr_size); close(sd); return 0; } 251

c 2008, Radu-Lucian Lup sa


252 8.2. Formatarea datelor

8.2. Formatarea datelor


Diferite formate de reprezentare a datelor pe conexiune au fost descrise n capitolul 7. In acest paragraf ne vom ocupa de problemele privind transmiterea si recept ia datelor n astfel de formate.

8.2.1. Formate binare


Formatele binare sunt asem an atoare cu formatele utilizate de programele compilate pentru stocarea datelor n variabilele locale. P an a la un punct, este rezonabil a transmiterea unei informat ii prin instruct iuni de forma
Tip msg; ... send(sd, &msg, sizeof(msg), 0);

si recept ia prin
Tip msg; ... recv(sd, &msg, sizeof(msg), MSG_WAITALL);

unde Tip este un tip de date oarecare declarat identic n ambele programe (emit ator si receptor). Exist a ns a c ateva motive pentru care o astfel de abordare nu este, n general, acceptabil a. Vom descrie n continuare problemele legate de ecare tip de date n parte, precum si c ateva idei privind rezolvarea lor. 8.2.1.1. Tipuri ntregi La transmiterea variabilelor ntregi apar dou a probleme de portabilitate: dimensiunea unui ntreg nu este, n general, standardizat a exact ( n C/C++ un int poate avea 16, 32 sau 64 de bit i); ordinea octet ilor n memorie (big endian sau little endian ) depinde de arhitectura calculatorului. Dac a scriem un program pentru un anumit tip de calculatoare si pentru un anumit compilator, pentru care stim exact dimensiunea unui int si ordinea octet ilor, putem transmite si recept iona date prin secvent e de tipul:
int a; ... send(sd, &a, sizeof(a), 0);

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 253

pentru emit ator si


int a; ... recv(sd, &a, sizeof(a), MSG_WAITALL);

pentru receptor. Dac a ns a emit atorul este compilat pe o platform a pe care int are 16 bit i si este reprezentat big endian, iar receptorul este compilat pe o platform a pe care int are 32 de bit i si este little endian, cele dou a programe nu vor comunica corect. Pentru a putea scrie programe portabile, biblioteca C standard pe sisteme de tip UNIX cont ine, n header-ul arpa/inet.h: typedef-uri pentru tipuri ntregi de lungime standardizat a (independent a de compilator): uint16_t de 16 bit i si uint32_t de 32 de bit i; funct ii de conversie ntre formatul locat (little endian sau big endian, dup a caz) si formatul big endian, utilizat cel mai adesea pentru datele transmise n Internet. Aceste funct ii sunt: htons() si htonl() (de la host to network, short, respectiv host to network, long ), pentru conversia de la format local la format big endian (numit si format ret ea ), si ntohs() si ntohl() pentru conversia n sens invers. Variantele cu s (htons() si ntohs()) convertesc ntregi de 16 bit i (de tip uint16_t, iar cele cu l convertesc ntregi de 32 de bit i (uint32_t). Implementarea acestor typedef-uri si functii depinde de platform a (de arhitectur a si de compilator). Utilizarea lor permite ca restul sursei programului s a nu depind a de platform a. Transmiterea unui ntreg, ntr-un mod portabil, se face astfel:
uint32_t a; ... a=htonl(a); send(sd, &a, sizeof(a), 0);

uint32_t a; ... recv(sd, &a, sizeof(a), MSG_WAITALL); a=ntohl(a);

Indiferent pe ce platform a sunt compilate, fragmentele de mai sus emit, respectiv recept ioneaz a, un ntreg reprezentat pe 32 de bit i n format big endian.

c 2008, Radu-Lucian Lup sa


254 8.2. Formatarea datelor

8.2.1.2. S iruri de caractere si tablouri Transmiterea sau memorarea unui tablou necesit a transmiterea (respectiv memorarea), ntr-un fel sau altul, a num arului de elemente din tablou. Dou a metode sunt frecvent utilizate n acest scop: transmiterea n prealabil a num arului de elemente si transmiterea unui element cu valoare speciale (terminator) dup a ultimul element. Pe l ang a num arul de elemente efective ale tabloului este necesar a cunoa sterea num arului de elemente alocate. La reprezentarea n memorie sau n siere pe disc, sunt utilizate frecvent tablouri de dimensiune xat a la compilare. Avantajul dimensiunii xe este c a variabilele situate dup a tabloul respectiv se pot plasa la adrese xe si pot accesate direct; dezavantajul este un consum sporit de memorie si o limit a mai mic a a num arului de obiecte ce pot puse n tablou. La transmiterea tablourilor prin conexiuni n ret ea, de regul a num arul de elemente transmise este egal cu num arul de elemente existente n mod real, plus elementul terminator (dac a este adoptat a varianta cu terminator). Nu sunt utilizate tablouri de lungime x a deoarece datele situate dup a tablou oricum nu pot accesate direct. In cazul reprezent arii cu num ar de elemente, receptorul cite ste nt ai num arul de elemente, dup a care aloc a spat iu (sau veric a dac a spat iul alocat este sucient) si cite ste elementele. In cazul reprezent arii cu terminator, receptorul cite ste pe r and ecare elemen si-i veric a valoarea; la nt alnirea terminatorului se opre ste. Inainte de-a citi ecare element, receptorul trebuie s a verice dac a mai are spat iu alocat pentru acesta, iar n caz contrar e s a realoce spat iu pentru tablou si s a copieze n spat iul nou alocat elementele citite, e s a renunt e si s a semnaleze eroare. Exemplul 8.2: Se cere transmiterea unui sir de caractere. Reprezentarea sirului pe conexiune este: un ntreg pe 16 bit i big endian reprezent and lungimea sirului, urmat de sirul propriu-zis (reprezentare diferit a deci de reprezentarea uzual a n memorie, unde sirul se termin a cu un caracter nul). Descriem n continuare emit atorul:
char* s; uint16_t l; ... l=htons(strlen(s)); send(sd, &l, 2, 0); send(sd, s, strlen(s), 0);

si receptorul:

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere char* s; uint16_t l; if(2==recv(sd, &l, 2, MSG_WAITALL) && 0!=(s=new char[l=ntohs(l)+1]) && l==recv(sd, s, l, MSG_WAITALL)){ s[l]=0; // sir citit cu succes } else { // tratare eroare } 255

De remarcat la receptor necesitatea de-a reface terminatorul nul, netransmis prin ret ea. Exemplul 8.3: Se cere transmiterea unui sir de caractere. Reprezentarea pe conexiune va ca un sir de caractere urmat de un caracter nul (adic a reprezentare identic a celei din memorie, dar pe lungime variabil a, egal a cu minimul necesar). Emit atorul este:
char* s; ... send(sd, s, strlen(s)+1, 0);

Receptorul:
char s[500]; int dim_alloc=500, pos, ret; while(pos<dim_alloc-1 && 1==(ret=recv(sd, s+pos, 1, 0)) && s[pos++]!=0) {} if(ret==1 && s[pos-1]==0){ // sir citit cu succes } else { // tratare eroare }

8.2.1.3. Variabile compuse (struct-uri) La prima vedere, variabilele compuse (struct-urile) sunt reprezentate la fel si n memorie si pe conexiune se reprezint a c ampurile unul dup a altul si ca urmare transmiterea lor nu ridic a probleme deosebite. Din p acate ns a, reprezentarea unei structuri n memorie depinde de platform a (arhitectura calculatorului si compilator), datorit a problemelor

c 2008, Radu-Lucian Lup sa


256 8.2. Formatarea datelor

privind alinierea ntregilor. Din considerente legate de arhitectura magistralei de date a calculatorului (detalii ce ies din cadrul cursului de fat a), accesarea de c atre procesor a unei variabile de tip ntreg sau real a c arui adres a n memorie nu este multiplu de un anumit num ar de octet i este pentru unele procesoare imposibil a iar pentru celelalte inecient a. Num arul ce trebuie s a divid a adresa se nume ste aliniere si este de obicei minimul dintre dimensiunea variabilei si l a timea magistralei. Astfel, dac a magistrala de date este de 4 octet i, ntregii de 2 octat i trebuie s a e plasat i la adrese pare, iar ntregii de 4 sau 8 octet i trebuie s a e la adrese multiplu de 4; nu exist a restrict ii cu privire la caractere ( ntregi pe 1 octet). Compilatorul, mpreun a cu funct iile de alocare dinamic a a memoriei, asigur a alinierea recurg and la urm atoarele metode: adaug a octet i nefolosit i ntre variabile, adaug a octet i nefolosit i ntre c ampurile unei structuri, adaug a octet i nefolosit i la nalul unei structuri ce face parte dintr-un tablou, aloc a variabilele de tip structur a la adrese multiplu de o l a timea magistralei. Ca urmare, reprezentarea n memorie a unei strcturi depinde de platform a si, n consecint a, un fragment de cod de forma:
struct Msg { char c; uint32_t i; }; Msg m; ... m.i=htonl(m.i); send(sd, &m, sizeof(m), 0);

este neportabil. In funct ie de l a timea magistralei, de faptul c a alinierea incorect a duce la imposibilitatea acces arii variabilei sau doar la inecient a si, n acest din urm a caz, de opt iunile de compilare, dimensiunea structurii Msg de mai sus poate 5, 6 sau 8 octet i, ntre cele dou a c ampuri ind respectiv 0, 1 sau 3 octet i neutilizat i. Rezolvarea problemei de portabilitate se face transmit and separat ecare c amp:
struct Msg { char c; uint32_t i;

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere }; Msg m; ... m.i=htonl(m.i); send(sd, &m.c, 1, 0); send(sd, &m.i, 4, 0); 257

8.2.1.4. Pointeri Deoarece un pointer este o adres a n cadrul unui proces, transmiterea unui pointer c atre un alt proces este complet inutil a.

8.2.2. Formate text


Intr-un format text, ecare c amp este n esent a un sir de caractere terminat cu spat iu, tab, newline sau un alt caracter specicat prin standard. Metodele descrise pentru transmiterea si recept ionarea unui sir de caractere se aplic a si la obiectele transmise n formate de tip text.

8.2.3. Probleme de robustet e si securitate


Orice apel de funct ie sistem poate e sua din multe motive; ca urmare, la ecare apel send() sau recv() programul trebuie s a verice valoarea returnat a. Un receptor robust trebuie s a se comporte rezonabil la orice fel de date trimise de partenerul de comunicat ie, inclusiv n cazul nc alc arii de c atre acesta a standardului de reprezentare a datelor si inclusiv n cazul n care emit atorul nchide conexiunea n mijlocul transmiterii unei variabile. Validitatea datelor trebuie vericat a ntotdeauna dup a citire. Dac a receptorul a steapt a un ntreg pozitiv, este necesar s a se verice prin program c a num arul primit este ntr-adev ar pozitiv. Este de asemenea necesar s a se stabileasc a si s a se impun a explicit ni ste limite maxime. Astfel, s a presupunem c a programul receptor prime ste un sir de ntregi reprezentat prin lungimea, ca num ar de elemente, pe 32 de bit i, urmat a de elementele propriu-zise. Chiar dac a de principiu num arul de elemente ne a stept am s a e ntre 1 si c ateva sute, trebuie s a ne asigur am c a programul se comport a rezonabil dac a num arul de elemente anunt at de emit ator este 0, 2147483647 (adic a 231 1) sau alte asemenea valori. Comportament rezonabil nseamn a e s a e capabil s a proceseze corect datele, e s a declare eroare si s a ncheie curat operat iile ncepute. Orice program care nu este robust este un risc de securitate.

c 2008, Radu-Lucian Lup sa


258 8.2. Formatarea datelor

8.2.4. Probleme privind costul apelurilor sistem


Apelul funct iilor send() si recv() este scump, n termeni de timp de procesor, deoarece, ind funct ii sistem, necesit a o comutare de drepturi n procesor, salvarea si restaurarea contextului apelului si o serie de veric ari din partea nucleului sistemului de operare; n total, echivalentul c atorva sute de instruct iuni. Acest cost este independent de num arul de octet i transferat i. Este, prin urmare, ecient ca ecare apel send() sau recv() s a transfere c at de mult i octet i se poate. Un program care trimite date este bine s a preg ateasc a datele ntr-o zon a tampon local a si s a trimit a totul printr-un singur apel send(). Un program care prime ste date este bine s a cear a (prin recv()) c ate un bloc mai mare de date si apoi s a analizeze datele primite. Acest mod de lucru se realizeaz a cel mai bine prin intermediul unor funct ii de bibliotec a adecvate. Descriem n continuare funct iile din biblioteca standard C utilizabile n acest scop. Biblioteca poate utilizat a at at pentru emisie si recept ie printr-o conexiune socket stream c at si pentru citire sau scriere ntr-un sier sau pentru comunicare prin pipe sau fo. Elementul principal al bibliotecii este structura FILE, ce cont ine: un identicator de sier deschis, conexiune socket stream, pipe sau fo ; o zon a de memorie tampon, mpreun a cu variabilele necesare gestion arii ei. Funct iile de citire ale bibliotecii sunt fread(), fscanf(), fgets() si fgetc(). Fiecare dintre aceste funct ii extrage datele din zona tampon a structurii FILE dat a ca parametru. Dac a n zona tampon nu sunt sucient i octet i pentru a satisface cererea, aceste funct ii apeleaz a funct ia sistem read() asupra identicatorului de sier din structura FILE pentru a obt ine octet ii urm atori. Fiecare astfel de apel read() ncearc a s a citeasc a c a tiva kilooctet i. Pentru ecare din funct iile de mai sus, dac a datele de returnat aplicat iei se g asesc deja n zona tampon, costul execut iei este de c ateva instruct iuni pentru ecare octet transferat. Ca urmare, la citirea a c ate un caracter o dat a, utilizarea funct iilor de mai sus poate reduce timpul de execut ie de c ateva zeci de ori. Exemplul 8.4: Fie urm atoarele fragmente de cod:
int sd; char s[512]; int i,r; ... while( ((r=recv(sd, s+i, 1, 0))==1 && s[i++]!=0 ) {}

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 259

si
FILE* f; char s[512]; int i,r; ... while( (r=fgetc(f))!=EOF && (s[i++]=r)!=0) {}

Ambele fragmente de cod citesc de pe un socket stream un sir de octet i terminat cu un caracter nul. Primul fragment de cod apeleaz a recv() o dat a pentru ecare caracter al sirului. Al doilea fragment apeleaz a fgetc() o dat a pentru ecare caracter al sirului. La o mic a parte dintre aceste apeluri, functia fgetc() va apela n spate funct ia sistem read() pentru a citi efectiv datele de pe conexiune; la restul apelurilor, fgetc() returneaz a apelantului c ate un caracter aat deja n zona tampon. Ca rezultat global, al doilea fragment de cod se va executa de c ateva zeci de ori mai repede dec at primul. Testarea nchiderii conexiunii si termin arii datelor se poate face apel and funct ia foef(). De notat c a aceast a funct ie poate s a returneze false chiar dac a s-a ajuns la nalul datelor; rezultatul true este garantat doar dup a o tentativ a nereu sit a de-a citi dincolo de nalul datelor transmise. Pentru scriere, funct iile de bibliotec a corespunz atoare sunt fwrite(), fprintf(), fputs() si fputc(). Aceste funct ii scriu datele n zona tampon din structura FILE. Transmiterea efectiv a pe conexiune (sau scrierea n sier) se face automat la umplerea zonei tampon. Dac a este necesar s a ne asigur am c a datele au fost transmise efectiv (sau scrise n sier), funct ia fflush() efectueaz a acest lucru. Funct ia fclose() de asemenea trimite sau scrie ultimele date r amase n zona tampon. Asocierea unei zone tampon unei conexiuni deja deschise se face apel and funct ia fdopen(). Funct ia fdopen() prime ste doi parametri. Primul parametru este identicatorul de socket c aruia trebuie s a-i asocieze zona tampon (identicatorul returnat de funct ia socket() sau accept()). Al doilea parametru specic a funct iei fdopen() dac a trebuie s a asocieze zona tampon pentru citire sau pentru scriere; este de tip sir de caractere si poate avea valoarea "r" pentru citire sau "w" pentru scriere. Pentru un socket stream, cele dou a sensuri function and complet independent, aceluia si socket i se pot asocia dou a zone tampon (dou a structuri FILE), c ate una pentru ecare sens. Funct ia fclose() scrie informat iile r amase n zona tampon (dac a zona tampon a fost creat a pentru sensul de scriere), elibereaz a memoria alocat a zonei tampon si nchide conexiunea.

c 2008, Radu-Lucian Lup sa


260 8.3. Probleme de concurent a n comunicat ie

8.3. Probleme de concurent a n comunicat ie


O particularitate a majorit a tii programelor ce comunic a n ret ea este aceea c a trebuie s a r aspund a prompt la mesaje provenind din surse diferite si ntr-o ordine necunoscut a dinainte. S a lu am de exemplu un server ssh ( 11.2.1). Serverul poate avea mai mult i client i conectat i simultan. La ecare moment, este imposibil de prezis care dintre client i va trimite primul o comand a. Dac a serverul execut a un apel recv() blocant de pe socket-ul unui client, serverul va pus n a steptare p an a ce acel client va trimite date. Este posibil ca utilizatorul ce comand a acel client s a stea 10 minute s a se g andeasc a. Dac a n acest timp un alt client trimite o comand a, serverul nu o va putea ,,vedea c at timp este blocat n a steptarea datelor de la primul client. Ca urmare, datele de la al doilea client vor a stepta cel put in 10 minute pentru a procesate. Exist a mai multe solut ii la problema de mai sus: Serverul cite ste de la client i, pe r and, prin apeluri recv() neblocante (cu agul MSG_DONTWAIT):
for(i=0 ; true ; i=(i+1)%nr_clienti){ r=recv(sd[i], buf, dim, MSG_DONTWAIT); if(r>=0 || errno!=EAGAIN){ /* prelucreaza mesajul primit sau eroarea aparuta */ } }

In acest fel, serverul nu este pus n a steptare dac a un client nu i-a trimis nimic. Dezavantajul solut iei este acela c a, dac a o perioad a de timp nici un client nu trimite nimic, atunci bucla se execut a n mod repetat, consum and inutil timp de procesor. Pentru evitarea inconvenientului solut iei anterioare, sistemele de operare de tip UNIX ofer a o funct ie sistem, numit a select(), care prime ste o list a de identicatori de socket si, opt ional, o durat a, si pune procesul n a steptare p an a c and e exist a date disponibile pe vreunul din socket -ii dat i, e expir a durata de timp specicat a. O abordare complet diferit a este aceea de-a crea mai multe procese sau, n sistemele de operare moderne, mai multe re de execut ie (thread-uri) n cardul procesului server ecare proces sau r de execut ie urm arind un singur client. In acest caz, procesul sau rul de execut ie poate executa recv() blocant asupra socket-ului corespunz ator clientului s au. In lipsa

c 2008, Radu-Lucian Lup sa


Capitolul 8. Programarea n ret ea introducere 261

activit a tii client ilor, ecare proces sau r de execut ie al serverului este blocat n apelul recv() asupra socket-ului corespunz ator. In momentul n care un client trimite date, nucleul sistemului de operare treze ste procesul sau rul ce executa recv() pe socket-ul corespunz ator; procesul sau rul execut a prelucr arile necesare dup a care probabil execut a un nou recv() blocant. Cazul unui server cu mai mult i client i nu este singura situat ie n care este nevoie de a urm ari simultan evenimente pe mai multe canale. Alte situat ii sunt: un client care trebuie s a urm areasc a simultan act iunile utilizatorului si mesajele sosite de la server; un server care poate trimite date cu debit mai mare dec at capacitatea ret elei sau capacitatea de prelucrare a clientului; n acest caz serverul are de urm arit simultan, pe de o parte noi cereri ale client ilor, iar pe de alt a parte posibilitatea de-a trimite noi date spre client i n urma faptului c a vechile date au fost prelucrate de ace stia. un server care trebuie s a preia mesaje de la client ii conectat i si, n acela si timp, s a poat a accepta client i noi. Un aspect important ce trebuie urm arit n proiectarea unui server concurent este servirea echitabil a a client ilor, independent de comportamentul acestora. Dac a un client trimite cereri mai repede dec at este capabil serverul s a-l serveasc a, serverul trebuie s a execute o parte din cereri, apoi s a serveasc a cereri ale celorlalt i client i, apoi s a revin a la primul si s a mai proceseze o parte din cereri si a sa mai departe. Nu este permis ca un client care inund a serverul cu cereri s a acapareze ntreaga putere de calcul a serverului si ceilalt i client i s a a stepte la innit.

c 2008, Radu-Lucian Lup sa


262 Capitolul 8. Programarea n ret ea introducere

c 2008, Radu-Lucian Lup sa


263

Capitolul 9

Ret ele IEEE 802

Vom studia n continuare standardul utilizat de cele mai multe ret ele locale. IEEE 802 dene ste de fapt o familie de tipuri de ret ele locale, dintre care cele mai des nt alnite sunt: ret ele Ethernet (de 10, 100 sau 1000 Mbit/s), construite conform standardului IEEE 802.3; ret ele numite Wireless Ethernet, conform standardului IEEE 802.11.

9.1. Ret ele IEEE 802.3 (Ethernet)


Cele mai multe ret ele locale (ret ele cu ntinderi geograce reduse, de p an a la c a tiva kilometri) sunt construite pe baza standardului IEEE 802.3 [IEEE 802.3, 2005]. Astfel de ret ele mai sunt numite, n mod curent, ret ele Ethernet (denumirea standardului original, din care a fost dezvoltat standardul IEEE 802.3) sau ret ele UTP 10/100/1000 (UTP vine de la unshielded twisted pairs perechi torsadate neecranate si desemneaz a tipul de cablu utilizat cel mai frecvent n instalat iile actuale, iar 10/100/1000 sunt capacit a tile posibile ale leg aturilor, m asurate n megabit i pe secund a). Standardul este complex (are peste 1500 de pagini) si a rezultat n urma unei evolut ii ntinse pe mai mult de 20 de ani. In cele ce urmeaz a vom trece n revist a aspectele mai importante. Componentele din care se realizeaz a o ret ea Ethernet sunt: Interfat a de ret ea sau placa de ret ea (engl. Network Interface Card NIC ) este dispozitivul prin care se conecteaz a un calculator la ret ea. Cablul magistral a. O ret ea constrit a cu cablu magistral a consta ntrun cablu, format din dou a conductoare izolate ntre ele, la care sunt

c 2008, Radu-Lucian Lup sa


264 9.1. Ret ele IEEE 802.3 (Ethernet)

conectate, n paralel, interfet ele de ret ea ale calculatoarelor (g. 9.1). In acest sistem, semnalul emis de orice interfat a de ret ea este recept ionat de toate celelalte interfet e de ret ea conectate la acel cablu.
stat ie stat ie stat ie stat ie

terminator

cablu magistral a

terminator

Figura 9.1: O ret ea Ethernet construit a cu un cablu magistral a

Comunicat ia se face prin pachete de dimensiune variabil a. Dou a interfet e care emit simultan si bruiaz a reciproc semnalele emise; este necesar deci un mecanism de control al accesului la mediu (vezi 4.2). IEEE 802.3 alege solut ia cu detectarea coliziunilor si retransmiterea pachetelor distruse de coliziuni. Deoarece ecare interfat a de ret ea ,,aude toate pachetele emise n ret ea, este prev azut un mecanism prin care interfat a s a identice si s a livreze sistemului de operare numai pachetele ce i sunt destinate. Anume, ecare interfat a de ret ea are o adres a unic a, numit a adres a zic a sau adres a MAC si ecare pachet poart a adresa sursei si adresa destinat iei. Repetorul (engl. repeater ) este un dispozitiv care este conectat la mai multe cabluri de ret ea si copiaz a pachetele de date de pe ecare cablu pe celelalte. Repetorul este conectat la ecare cablu de ret ea ntocmai ca o interfat a de ret ea a unui calculator. Interfat a repetorului c atre cablul de ret ea se nume ste port . Oridec ateori repetorul recept ioneaz a un pachet printr-unul dintre porturile sale (printr-unul din cablurile de ret ea conectate la repetor), l retransmite (repet a) pe toate celelalte cabluri de ret ea conectate (toate cu except ia celui prin care a intrat pachetul). Retransmiterea se face cu nt arziere de ordinul duratei c atorva bit i, n orice caz mai put in dec at durata unui pachet. Dac a repetorul recept ioneaz a simultan pachete prin dou a sau mai multe porturi, consider a c a are loc o coliziune si semnalizeaz a acest lucru emit and, prin toate porturile, un semnal special de anunt are a coliziunii. Acest semnal de coliziune se propag a n toat a ret eaua.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 265

repetor

repetor

Figura 9.2: O ret ea construit a din mai multe cabluri magistral a interconectate prin repetoare.

Repetoarele permit construirea unei ret ele ntinse pe o distant a mai mare dec at lungimea maxim a a unui singur cablu (lungime limitat a de atenuarea semnalului pe cablu). O ret ea construit a cu repetoare este desenat a n gura 9.2. Odat a cu ieftinirea repetoarelor, a devenit curent a utilizarea c ate unui cablu pentru conectarea ec arui calculator la un repetor. In acest fel, un cablu de ret ea va avea legate la el doar dou a echipamente: e o interfat a de ret ea si un repetor, e dou a repetoare, e dou a interfet e de ret ea ( n acest din urm a caz rezult a o ret ea format a doar din dou a calculatoare). De regul a, cablul de leg atur a folosit n aceste cazuri este o leg atur a duplex (vezi mai jos) si poate conecta doar dou a echipamente. Repetoarele utilizate n aceast a situat ie se mai numesc hub -uri (engl. hub = butuc de roat a). Comutatoarele. Un comutator (eng. switch ) este un dispozitiv asem an ator cu un repetor, dar cu urm atoarele modic ari: - este capabil s a memoreze c ate un pachet ntreg pentru ecare port; - dac a prime ste simultan dou a sau mai multe pachete, le memoreaz a si le retransmite pe r and; - dac a este posibil, n loc s a retransmit a un pachet prin toate porturile comutatorului, l retrimite doar pe calea c atre interfat a de ret ea

c 2008, Radu-Lucian Lup sa


266 9.1. Ret ele IEEE 802.3 (Ethernet)

c areia i este destinat pachetul (a se vedea 9.1.5 pentru detalii). Leg aturile duplex. Cablurile de leg atur a ntre dou a echipamente pot f acute cu c ai independente pentru cele dou a sensuri. Dac a si echipamentele conectate sunt capabile s a emit a si s a recept ioneze simultan, este posibil a realizarea unei comunicat ii duplex ntre cele dou a echipamente. Exist a n cadrul IEEE 802.3 mai multe sub-standarde legate de nivelul zic, privitoare la cablurile de leg atur a ntre echipamente. Cu except ia debitului de comunicat ie si a existent ei sau absent ei posibilit a tii comunicat iei duplex, tipul cablului de leg atur a ales nu afecteaz a restul ret elei. Pentru echipamente capabile s a funct ioneze dup a mai multe standarde privind nivelul zic (debite diferite si mod semi-duplex sau duplex), exist a un protocol de negociere al modului de transmisie la nivel zic folosit; acesta va studiat n 9.1.1 cu ocazia prezent arii standardului 10 Base T.

9.1.1. Leg aturi punct la punct prin perechi de conductoare


Grup am la un loc studiul leg aturilor punct la punct prin perechi de conductoare datorit a multiplelor aspecte comune ntre toate tipurile de astfel de leg aturi admise de standard. Toate aceste variante de leg aturi sunt g andite pentru a realiza un cablaj ieftin si abil n interiorul unei singure cl adiri. In toate cazurile, mediul de transmisie este format din dou a sau patru perechi de conductoare torsadate. Cu cablurile recomandate de standard, lungimea maxim a a unei leg aturi este de 100 m. Condit iile de izolare electric a si de p am antare nu permit utilizarea sigur a pentru leg aturi aeriene prin exteriorul cl adirilor. Pentru astfel de scopuri standardul recomand a utilizarea brelor optice. Descriem n continuare particularit a tile tuturor standardelor privitoare la nivelul zic construit pe perechi torsadate. 10 Base T . Este o leg atur a duplex la 10 Mbit/s utiliz and dou a perechi de conductoare torsadate, c ate o perechie pentru ecare sens (4 conductoare n total). Denumirea standardului vine de la viteza de comunicat ie (10 Mbit/s), codicarea ( n banda de baz a) si tipul mediului (Twisted pairs perechi torsadate ). Cablul de leg atur a const a, a sa cum am v azut, din 4 conductoare izolate. Conductoarele sunt mperecheate 2 c ate 2 (form and deci 2 perechi). In cadrul ec arei perechi, conductoarele sunt r asucite unul n jurul celuilalt

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 267

pentru reducerea interferent elor cu c ampurile electromagnetice din jur. Caracteristicile electrice ale cablurilor, specicate prin standard, sunt n general ndeplinite de c atre tronsoanele de p an a la 100 m construite din cablurile folosite n mod curent pentru ret eaua telefonic a si clasicate, n sistemul american de telefonie, UTP Cat 3 (UTP de la Unshielded Twisted Pairs perechi torsadate neecranate, iar Cat 3, de la Category 3 ). D am n continuare, cu titlu informativ, c ateva caracteristici: impedant a caracteristic a: 100 ; atenuare: maxim 11,5 dB pentru tot tronsonul de cablu (de fapt acesta este parametrul care limiteaz a lungimea unui tronson de cablu; dac a folosim un cablu cu atenuarea pe 200 m mai mic a de 11,5 dB, putem cabla un tronson de 200 m cu astfel de cablu f ar a probleme); timpul de propagare al semnalului: maxim 1000 ns. Standardul cere, n plus, ca viteza de propagare s a e cel put in 0,585 c (adic a cel put in de 0,585 de ori viteza luminii n vid). Conectarea cablului la interfat a de ret ea sau la repetoare se realizeaz a prin intermediul unui conector cu 8 pini, asem an ator cu cel de telefon, standardizat sub numele RJ45. Utilizarea pinilor este urm atoarea: emisia ntre pinii 1 si 2 si recept ia ntre pinii 3 si 6. Pinii 4, 5, 7 si 8 sunt neutilizat i. Conductoarele legate la emit ator la un cap at trebuie legate la receptor la cel alalt cap at (g. 9.3). Acest lucru se poate realiza n dou a moduri: 1. Legarea cablului la conectoare se face ,, n X: pinul 1 de pe un conector se leag a la pinul 3 de pe cel alalt conector, 2 cu 6, 3 cu 1 si respectiv 6 cu 2, conform g. 9.3(a)). Un astfel de cablu se nume ste cablu inversor sau cablu X. 2. Cablul este ,,unu-la-unu(adic a pinul 1 de pe un conector este legat cu pinul 1 de pe cel alalt conector, 2 cu 2, 3 cu 3 si 6 cu 6), iar inversarea se face n dispozitivul de la un cap at al cablului, prin legarea inversat a a conectorului la circuite: pinii 1 si 2 la receptor si 3 si 6 la emit ator, ca n g. 9.3(b). Standardul recomand a inversarea leg aturilor n conectoarele repetoarelor si cere marcarea conectoarelor cu inversare printr-un simbol ,,X. Conectarea a dou a echipamente prev azute cu inversare n conector se face cu ajutorul unui cablu inversor, ca n gura 9.3(c). Exist a si dispozitive care detecteaz a automat pinii folosit i la emisie si recept ie. Aceste dispozitive sunt desemnate auto MDI/MDIX. Dac a la unul

c 2008, Radu-Lucian Lup sa


268 Ret ele IEEE 802.3 (Ethernet)

emit ator

receptor

1 2 3 4 5 6 7 8

alb-portocaliu portocaliu alb-verde verde

alb-verde verde alb-portocaliu portocaliu

1 2 3 4 5 6 7 8

emit ator

receptor

(a) Inversare realizat a n cablul de leg atur a


emit ator
1 2 3 4 5 6 7 8

alb-portocaliu portocaliu alb-verde verde

alb-portocaliu portocaliu alb-verde verde

receptor

1 2 3 4 5 6 7 8

emit ator

receptor

conector normal

conector cu inversare

(b) Inversare realizat a de unul dintre dispozitivele de la capete


receptor
1 2 3 4 5 6 7 8

alb-portocaliu portocaliu alb-verde verde

alb-verde verde alb-portocaliu portocaliu

emit ator

1 2 3 4 5 6 7 8

receptor

emit ator

conector cu inversare

conector cu inversare

(c) Conectarea a dou a echipamente prev azute cu inversare n conector

Figura 9.3: Conectarea a dou a echipamente 10 Base T. Sunt date si culorile standard pentru izolat iile conductoarelor din cablu.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 269

dintre capete se g ase ste un astfel de dispozitiv, se poate utiliza at at cablu unu-la-unu c at si cablu inversor, f ar a nici un fel de restrict ii. Mecanismul de detectare a pinilor utilizat i se bazeaz a pe pulsurile pentru vericarea mediului, descrise mai jos. Transmiterea bit ilor se face n codicare Manchester. Cele dou a nivele de tensiune, la emit ator, sunt unul ntre 2,2 V si 2,8 V si cel alalt ntre 2,2 V si 2,8 V. Pe l ang a transmiterea informat iei utile, standardul prevede emiterea periodic a, de c atre ecare echipament, a unui puls de testare a cablului. O interfat a de ret ea sau un repetor care nu prime ste periodic pulsuri de test de la cel alalt cap at va ,,deduce c a leg atura nu este valid a. Starea leg aturii este semnalat a printr-un led; de asemenea, pl acile de ret ea semnaleaz a starea leg aturii printr-un bit de control ce poate citit de driver-ul pl acii de ret ea. O ad augire ulterioar a la standard prevede ca n secvent a de pulsuri de testare a cablului s a se codice disponibilitatea echipamentului ce le emite de a funct iona n regim duplex sau la o vitez a mai mare de 10 Mbit/s (adic a conform unuia din standardele descrise mai jos). Un echipament capabil de comunicat ie duplex si care este informat c a echipamentul de la cel alalt cap at este capabil de asemenea de comunicat ie duplex va intra automat n mod duplex. Un echipament vechi, dat and dinaintea acestei ad augiri la standard, va funct iona numai n regim semiduplex. P astrarea compatibilit a tii este asigurat a de faptul c a echipamentul vechi va nt elege pulsurile doar ca testarea liniei, iar pulsurile generate de el este put in probabil s a coincid a nt ampl ator cu pulsurile de negociere a modului de transmisie. 100 Base Tx. Este foarte asem an ator cu 10 Base T, dar obt ine o vitez a de transmisie de 100 Mbit/s. Cablul const a tot din dou a perechi de conductoare torsadate, ns a cu propriet a ti mai bune de transmitere a semnalului (obt ine acelea si caracteristici de atenuare p an a la frecvent e de 10 ori mai mari). Cablurile utilizate sunt cele desemnate UTP Cat 5 . Lungimea maxim a a unui tronson este de 100 m. Conectoarele si utilizarea pinilor sunt identice cu 10 Base T. Din acest motiv un cablu pentru 100 Base Tx poate ntotdeauna utilizat la o leg atur a 10 Base T. In general, echipamentele capabile s a opereze conform standardului 100 Base Tx sunt capabile s a lucreze si cu 10 Base T. Stabilirea vitezei se face printr-un mecanism similar cu cel utilizat la 10 Base T pentru negocierea modului semiduplex sau duplex. Trebuie ns a spus c a mecanismul de negociere

c 2008, Radu-Lucian Lup sa


270 Ret ele IEEE 802.3 (Ethernet)

nu testeaz a si calitatea cablului; din acest motiv, dac a leg am o plac a de ret ea de 100 Mbit/s la un hub sau switch de 100 Mbit/s printr-un cablu ce nu permite 100 Mbit/s (de exemplu Cat 3 n loc de Cat 5 ), este necesar s a congur am manual viteza de 10 Mbit/s. 100 Base T4. Transmite 100 Mbit/s semi-duplex, utiliz and cabluri Cat 3. Sunt necesare 4 perechi de conductoare (8 conductoare n total). C ate o pereche de conductoare este rezervat a pentru ecare sens. Celelalte dou a perechi se utilizeaz a n sensul n care are loc efectiv transmiterea informat iei (adic a, ntotdeauna trei perechi sunt utilizate pentru transmiterea informat iei si a patra este temporar nefolosit a). Codicarea informat iei este mai special a, utiliz and 3 nivele de semnalizare n loc de obi snuitele 2 si transmit and simultan pe trei canale, pentru a obt ine un semnal ce se ncadreaz a n banda de trecere a unui cablu Cat 3.
emit ator receptor bidirect ional 1 bidirect ional 2
1 2 3 4 5 6 7 8

alb-portocaliu portocaliu alb-verde albastru alb-albastru verde alb-maro maro

alb-verde verde alb-portocaliu alb-maro maro portocaliu albastru alb-albastru

1 2 3 4 5 6 7 8

emit a tor receptor bidirect ional 1 bidirect ional 2

Figura 9.4: Utilizarea pinilor si conectarea ntre echipamente la 100 Base T4.

Conectoarele sunt tot RJ45, cu urm atoarea utilizare a pinilor: emisie: pinii 1 si 2; recept ie: 3 si 6, bidirect ional 1: pinii 4 si 5; bidirect ional 2: pinii 7 si 8. Ca si la celelalte cabluri, descrise mai sus, este necesar a o ncruci sare, realizat a e n cablu, e n conectorul unuia dintre echipamente. Standardul cere inversarea at at a emisiei cu recept ia c at si a celor dou a leg aturi bidirect ionale (g. 9.4). Intruc at n majoritatea instalat iilor sunt disponibile cabluri Cat 5, utilizarea standardului 100 Base T4 este extrem de rar a. 100 Base T2. Transmite 100 Mbit/s duplex, utiliz and dou a perechi Cat 3. Ca si la 100 Base T4, se utilizeaz a o codicare complicat a, ns a obt ine performant ele lui 100 Base Tx pe cabluri identice cu cele folosite de 10 Base T. Utilizarea lui este rar a, datorit a r asp andirii cablului Cat 5. 1000 Base T. Transmite 1 Gbit/s duplex, utiliz and 4 perechi Cat 5. Leg atura const a n patru perechi torsadate (8 conductoare) conforme Cat 5, de lungime maxim 100 m.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 271

Se utilizeaz a o schem a de codicare mai complicat a, ce utilizeaz a ecare pereche de conductoare n regim duplex. Conectoarele folosite sunt tot RJ45. Din rat iuni de compatibilitate, leg aturile trebuie s a realizeze aceea si inversare a unor perechi de re ca si la 100 Base T4 (g. 9.4). Majoritatea pl acilor de ret ea si celorlalte echipamente pentru ret ele IEEE 802.3, produse recent si desemnate Ethernet gigabit, implementeaz a standardele 10 Base T, 100 Base Tx si 1000 Base T. 1000 Base Cx. Transmite 1 Gbit/s duplex utiliz and 2 perechi de conductoare de construct ie specal a. Se utilizeaz a c ate o pereche pentru ecare sens. Standardul permite dou a tipuri de conectoare: conectoare trapezoidale cu 9 pini (identice cu cele utilizate pentru porturile seriale) sau ni ste conectoare cu 8 pini asem an atoare, dar incompatibile, cu RJ45. Datorit a incompatibilit a tii cu 10 Base T si 100 Base Tx, put ine echipamente utilizeaz a 1000 Base Cx. Realizarea practic a a cablajelor Cablurile UTP Cat 5 folosite au de obicei 4 perechi de re torsadate (8 re n total), invelite toate ntr-o teac a protectoare. Doar 2 perechi (4 re) sunt utilizate efectiv de leg aturile 10 Base T si 100 Base Tx. In cadrul ec arei perechi, unul din re are izolat ia ntr-o culoare plin a iar cel alalt este combinat, alb altern and cu culoarea rului pereche. Culorile folosite pentru perechi sunt portocaliu, verde, albastru si maro. Ment ion am c a se comercializeaz a, din p acate, si cabluri n care rele ce ar trebui s a e colorate cu alb plus o culoare sunt doar albe si, ca urmare, pentru a le identica este necesar s a se desfac a teaca protectoare pe o lungime sucient de mare pentru a vedea cum sunt torsadate rele (care cu care este mperecheat prin r asucire). Schema de conectare standardizat a este dat a n tabela 9.1. Varianta ,,normal este utilizat a la cablurile unu-la unu, precum si la unul din capetele cablurilor inversoare. Varianta ,,inversat este utilizat a la cel alalt cap at al cablurilor inversoare. Varianta ,,semi-inversat a fost utilizat a frecvent pentru al doilea cap at al cablurilor inversoare, dar nu funct ioneaz a dec at pentru ret ele 10 Base T si 100 Base Tx, care nu utilizeaz a deloc perechile albastru si maro. Pentru 1000 Base T, varianta ,,semi-inversat nu este prev azut a de standard; ca urmare unele echipamente funct ioneaz a cu astfel de cabluri, iar alte echipamente nu funct ioneaz a.

c 2008, Radu-Lucian Lup sa


272 9.1. Ret ele IEEE 802.3 (Ethernet)

Nr. pin 1 2 3 4 5 6 7 8

normal alb-portocaliu portocaliu alb-verde albastru alb-albastru verde alb-maro maro

Culoare inversat alb-verde verde alb-portocaliu alb-maro maro portocaliu albastru alb-albastru

semi-inversat alb-verde verde alb-portocaliu albastru alb-albastru portocaliu alb-maro maro

Tabelul 9.1: Ata sarea conectoarelor RJ45

Atragem atent ia c a este foarte important s a se respecte schema de conectare din urm atoarele motive: R asucirea relor afecteaz a transmiterea semnalului si sensibilitatea la parazit i. Nerespectarea perechilor, adic a utilizarea pentru un circuit a dou a re care nu sunt mperecheate prin r asucire, duce la pierderi aleatoare de pachete, cu at at mai multe cu c at cablul este mai lung. Este necesar un efort inutil de mare pentru ata sarea corect a a conectorului la al doilea cap at, dac a ata sarea primului s-a f acut nestandard. Amatorii s a se g andeasc a la cazul c and cap atul cablat nestandard se g ase ste ntrun dulap nghesuit, iar cap atul unde trebuie ata sat cel alalt conector este c ateva etaje mai sus sau mai jos. . . Toate sistemele IEEE 802.3 ce utilizeaz a perechi torsadate sunt proiectate pentru leg aturi n interiorul unei singure cl adiri. La cablurile trase prin exterior, desc arc arile electrice din atmosfer a risc a s a induc a n cablul de ret ea tensiuni sucient de mari pentru a distruge pl acile de ret ea sau hub-urile sau switch-urile ata sate. Pentru leg aturi exterioare se recomand a utilizarea brelor optice.

9.1.2. Leg aturi prin bre optice


IEEE 802.3 standardizeaz a mai multe tipuri de leg aturi prin bre optice. Toate acestea sunt foarte similare din punctul de vedere al logicii funct ion arii; diferent ele sunt aproape n totalitate aspecte minore legate de realizarea nivelului zic. Toate leg aturile pe br a optic a sunt punct-la-punct (nu magistral a). Exist a totu si un echipament, numit stea pasiv a, la care se pot conecta mai

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 273

multe pl aci de ret ea si care distribuie semnalul transmis de o plac a spre toate celelalte. Astfel, o stea pasiv a se comport a ntruc atva similar cu un cablu magistral a. O leg atur a punct la punct const a din dou a bre optice, c ate una pentru ecare sens; astfel, ecare leg atur a este capabile de transmisie duplex. 10 Base F: standardizeaz a transmisia prin br a optic a la un debit de transmisie de 10 Mbit/s. Rata erorilor, obt inut a cu o astfel de leg atur a, este n jur 9 9 de 10 (1 bit eronat la 10 bit i transmi si). Grupeaz a trei variante, cu diferent e foarte mici ntre ele ( n general, echipamentele corespunz atoare pot interconectate f ar a probleme): 10 Base FP, destinat utiliz arii n congurat ii cu stea pasiv a, ca atare funct ion and n mod semi-duplex. 10 Base FB, destinat utiliz arii n conjunct ie cu multe repetoare n cascad a si funct ion and n mod semi-duplex. 10 Base FL, funct ion and n mod duplex. Se utilizeaz a o br a optic a cu diametrul miezului de 62,5 m ( si diametrul exterior, al nveli sului, de 125 m), av and o vitez a de propagare de minim 0,67c, o atenuare de 3,75 dB/km (dac a atenuarea brei utilizate este mai mare, lungimea maxim a a unei leg aturi trebuie mic sorat a corespunz ator) si o band a de 160 MHzkm. Lungimea unui tronson de cablu este maxim 2 km (pentru 10 Base FP, lungimea ec arei conexiuni dintre placa de ret ea si steaua pasiv a este de cel mult 1 km). Conectarea cablului la echipamente se face cu ajutorul a dou a conectoare (c ate unul pentru ecare br a; reamintim c a se utilizeaz a o br a pentru ecare sens). Conectoarele sunt descrise de standardul IEC 60874-10:1992 sub numele BFOC/2.5. Atenuarea introdus a de conector nu trebuie s a dep a seasc a 1 dB, iar puterea undei reectate nu trebuie s a dep a seasc a 25 dB din puterea undei incidente. Pentru semnalizare se folosesc unde infraro sii cu lungimea de und a cuprins a ntre 800 nm si 910 nm. Nivelul semnalului emit atorului este ntre 15 dBm si 11 dBm pentru 10 Base FP si ntre 12 dBm si 11 dBm pentru 10 Base FB si 10 Base FL. Nivelul acceptabil pentru semnalul recept ionat este ntre 41 dBm si 27 dBm pentru 10 Base FP si ntre 32,5 dBm si 12 dBm pentru 10 Base FB si 10 Base FL. Semnalizarea utilizeaz a codicarea Manchester, ntocmai ca n cazul lui 10 Base T.

c 2008, Radu-Lucian Lup sa


274 Ret ele IEEE 802.3 (Ethernet)

Spre deosebire de 10 Base T, nu se utilizeaz a pulsuri de testare a leg aturii care s a permit a negocierea modului semiduplex sau duplex sau a vitezei de transmisie; ca urmare, ace sti parametri trebuie congurat i manual. 100 Base FX: ofer a o vitez a de transfer de 100 Mbit/s. Pe l ang a viteza mai mare, 100 Base FX aduce c ateva modic ari fat a de 10 Base F, si anume utilizarea unor conectoare duble (conect and ambele bre simultan) si un mecanism de negociere a vitezei de transfer. 1000 Base SX si 1000 Base LX. Aceste standarde ofer a vitez a de transfer de 1 Gbit/s. Varianta 1000 Base SX transmite pe lungimea de und a de 850 nm, prin bre cu diametrul miezului de 62,5 m sau de 50 m. Lungimea maxim a de cablu ntre dou a echipamente este cuprins a ntre 220 m pentru br a cu dispersie intermodal a de 160 MHzkm si 550 m pentru br a cu dispersie intermodal a de 500 MHzkm. Varianta 1000 Base LX transmite pe lungimea de und a de 1310 nm, prin bre multimod de 62,5 m sau de 50 m sau monomod de 10 m. Lungimea maxim a de cablu ntre dou a echipamente este de 550 m pentru bra multimod si 5 km pentru bra monomod.

9.1.3. Leg aturi prin cablu magistral a


Exist a dou a variante de leg aturi prin cablu magistral a standardizate prin IEEE 802.3; ambele variante realizeaz a o vitez a de transmisie de 10 Mbit/s. Cele dou a variante sunt foarte asem an atoare, motiv pentru care le vom studia mpreun a. Mediul de comunicat ie este un cablu format dintr-o pereche de conductoare coaxiale. Impedant a caractersitic a a cablului este de 50 (este deci incompatibil cu cablul utilizat pentru televiziune, care are impedant a de 75 ). Cablul nu are voie s a aib a ramicat ii si trebuie ncheiat la ambele capete prin terminatoare. Ramicat iile sau lipsa terminatoarelor duc la reexia semnalului la ramicat ie sau la cap atul f ar a terminator, rezult and bruierea semnalului de c atre reexia lui. Pe cablu se leag a, n paralel, interfet ele de ret ea si eventual repetoarele. Derivat ia pentru leg atura la interfat a de ret ea este construit a special pentru a reduce la minim reexiile produse (impedant a emit atorului si receptorului este mult mai mare dec at impedant a cablului, anume de cel put in 100 k); din acest motiv circuitele emit atorului si receptorului trebuie plasate la cel mult c a tiva centimetri de cablu.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 275

Semnalul este produs n codicare Manchester, cu durata unui bit de 100 ns; de aici viteza brut a de transmisie de 10 Mbit/s. Ca modicare fat a de codicarea Manchester clasic a, peste semnal este suprapus a o component a continu a, n scopul simplic arii detect arii coliziunilor. Pe cablul n repaus, tensiunea ntre conductoare este 0 V. Dac ao interfat a emite date, apare o tensiune continu a ntre conductorul central si tres a. Dac a dou a sau mai multe interfet e emit simultan, tensiunea continu a cre ste peste un anumit prag la care se declar a coliziune. La detectarea unei coliziuni, interfet ele de ret ea conectate la cablu opresc transmisia, conform metodei CSMA/CD ( 4.2.2). Exist a dou a sub-standarde privitoare la caracteristicile mecanice si electrice ale cablului de conectare: 10 Base 5 si 10 Base 2. 10 Base 5, numit si cablu galben sau cablu gros, prevede utilizarea unui cablu coaxial av and aproximativ 10 mm grosime total a, preferabil colorat n galben pentru o mai bun a vizibilitate. Lungimea total a maxim a a unui cablu este de 500 m. Standardul este g andit pentru cablare prin exteriorul cl adirilor. Denumirea sub-standardului vine de la viteza (10Mbit/s), codicarea ( n banda de baz a Base ) si lungimea maxim a a cablului, n sute de metri. Cu titlu informativ, d am c ateva detalii, specicate prin standard, cu privire la caracteristicile cablului: impedant a caracteristic a: 50 2 ; viteza de propagare a semnalului: minim 0,77 c; atenuarea: maxim 17 dB/km (8,5 dB pe tot tronsonul de cablu) la 10 MHz si maxim 12 dB/km (6 dB pe tot cablul) la 5 MHz; se accept a maxim 100 interfet e de ret ea pe un tronson de cablu. Cablul trebuie conectat la p am ant (la instalat ia de p am antare a cl adirii) ntr-un singur punct. Se specic a explicit prin standard c a at at cablul c at si elementele legate de el trebuie s a e izolate fat a de p am ant sau fat a de alte conductoare (cu except ia sus-ment ionatei unice leg aturi de p am antare). De asemenea, interfet ele de ret ea trebuie s a realizeze o izolare electric a ntre cablul de ret ea si circuitele calculatorului care s a reziste la o tensiune de 1500 V. La efectuarea lucr arilor asupra ret elei, persoanele care lucreaz a trebuie s a aib a grij a s a nu ating a simultan cablul de ret ea si un conductor legat la p am ant, iar n cazul n care conecteaz a sau deconecteaz a dou a tronsoane de ret ea s a aib a grij a s a nu nchid a contactul electric ntre cele dou a tronsoane prin corpul lor. Toate aceste m asuri sunt luate deoarece este posibil s a apar a tensiuni electrice ntre leg aturile de p am antarea ale instalat iilor electrice n cl adiri diferite. De

c 2008, Radu-Lucian Lup sa


276 Ret ele IEEE 802.3 (Ethernet)

asemenea, este posibil ca ntr-un cablu, n special dac a este dus prin exterior, s a se induc a, inductiv sau capacitiv, tensiuni parazite importante din cauza ret elelor de alimentare electric a din apropiere sau din cauza fulgerelor. Circuitele electronice ale interfet elor de ret ea sunt mp art ite n dou a module: un modul, cont in and emit atorul si receptorul propriu-zise, se ata seaz a direct pe cablu; al doilea modul cuprinde logic a de comand a si este construit sub forma unei pl aci ce se introduce n calculator. Ata sarea modulului de semnal la cablul de ret ea se poate realiza n dou a moduri: prin conectarea celor dou a segmente de cablu de-o parte si de alta prin conectoare standardizate (conectoare coaxiale, numite conectoare N, cu prindere cu let); prin realizara unei prize vampir : se d a o gaur a n cablu f ar a a-i intrerupe conductoarele, prin gaur a se introduce o clem a ce va face contact cu rul central, iar leg atura cu tresa se face printr-o alt a clem a ce se str ange pe o zon a de pe care s-a ndep artat mantaua exterioar a a cablului. Leg atura dintre modulul emit ator-receptor (engl. transceiver ) si modulul de logic a al pl acii de ret ea sau al repetorului este de asemenea standardizat a, sub numele de interfat a AUI . Cablul de leg atur a dintre cele dou a module const a din 5 perechi de conductoare torsadate si ecranate individual, utilizeaz a conectoare trapezoidale cu 15 pini si poate avea lungime maxim a de aproximativ 50m. 10 Base 2 se mai nume ste cablu subt ire, cablu negru sau cablu BNC (oarecum incorect, BNC ind numele conectoarelor prev azute a utilizate pentru acest tip de leg atur a). Este foarte asem an ator cu 10 Base 5, ns a folose ste un cablu mai potrivit pentru cablaje n interior. Lungimea maxim a a unui tronson este de 185 m. Cablul este tot coaxial, dar este mai subt ire ( 5 mm) pentru a putea ndoit mai u sor (standardul cere s a poat a ndoit la raza de 5 cm), n schimb este admis s a aib a atenuare mai mare si, ca urmare, tronsoanele sunt limitate la lungime mai mic a. D am din nou c ateva caracteristici ale cablului: viteza de propagare: 0,65 c; atenuarea, pentru 185 m: maxim 8,5 dB la 10 MHz si maxim 6 dB la 5 MHz; maxim 30 interfet e ata sate pe un tronson.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 277

Conectarea interfet elor de ret ea si a terminatoarelor se face prin conectori standardizat i sub numele BNC (conectorii BNC sunt standardizat i pentru aparatur a electronic a n general, nu se folosesc doar la ret ele Ethernet), astfel (g. 9.5): Fiecare bucat a de cablu trebuie s a aib a montate pe capete conectoare BNC mam a. Exist a elemente numite jonct iuni T care cont in o ramicat ie si sunt prev azute cu un conector BNC mam a (pe mijlocul T-ului) si dou a conectoare BNC tat a. La conectoarele tat a se ata seaz a buc a tile de cablu de-o parte si de alta, iar la conectorul mam a al T-ului se ata seaz a conectorul tat a de pe placa de ret ea. Terminatoarele sunt prev azute cu conector BNC mam a si se ata seaz a pe T-urile de la pl acile de ret ea extreme.
conectori BNC

terminator jonct iuni T cablu coaxial

Figura 9.5: Conectarea unei ret ele 10 Base 2

Pana cea mai frecvent a ce apare la o ret ea, afect and conexiunile directe, este ntreruperea unui r (de obicei o pan a de contact ntre s arm a si conector sau ntre contactele unui conector). O ntrerupere a cablului magistral a duce de regul a la oprirea funct ion arii ntregii ret ele, nu doar ,,ruperea n dou a a ret elei. Aceasta se nt ampl a deoarece cap atul de cablu unde s-a produs ntreruperea reect a semnalul (este ca un cablu f ar a terminator) si, ca urmare, orice pachet emis pe acel cablu se ciocne ste cu reexia lui. Solut ia cea mai ecient a de g asire a penei este o c autare binar a prin izolarea neap arat cu terminatoare a unor port iuni din ce n ce mai lungi din cablul ret elei.

9.1.4. Repetoarele si comutatoarele


Ca funct ie n cadrul unei ret ele, at at repetorul c at si comutatorul este un dispozitiv la care sunt conectate mai multe cabluri de ret ea si care, la primirea unui pachet pe un cablu, retransmite pachetul pe toate celelalte cabluri conectate. Interfat a repetorului sau comutatorului c atre ecare dintre cabluri se nume ste port. Except ie f ac and cazul comutatoarelor mai evoluate (vezi 9.1.6.4), o ret ea construit a cu repetoare sau comutatoare trebuie s a aib a o topologie

c 2008, Radu-Lucian Lup sa


278 9.1. Ret ele IEEE 802.3 (Ethernet)

arborescent a, adic a ntre orice dou a interfet e de ret ea trebuie s a existe un drum si numai unul format din cabluri directe si repetoare sau comutatoare. Intr-o ret ea construit a corect, arborescent, un pachet emis de o plac a de ret ea se propag a prin cabluri si repetoare sau comutatoare din ce n ce mai departe de interfat a de origine, sf ar sind prin a ajunge la toate pl acile din ret ea. In cazul n care ret eaua, n loc s a e arborescent a, cont ine circuite, se va nt ampla ca dou a copii ale aceluia si pachet s a ajung a pe dou a c ai distincte la un anumit repetor sau comutator. Dac a este un repetor, cele dou a copii, ajung and aproximativ simultan, vor produce o coliziune. Cum acest lucru se nt ampl a cu orice pachet trimis n ret ea, ecare pachet va suferi o coliziune cu el nsu si si va repetat la innit cu acela si insucces, rezult and astfel trac util nul. In cazul comutatoarelor, dac a dou a copii ale unui pachet ajung pe dou a c ai diferite la un comutator, acesta le va considera ca ind pachete distincte. In consecint a, le va memora si retransmite, ecare copie ind retransmis a inclusiv pe calea prin care a intrat cealalt a copie. In acest fel, copiile cicleaz a la innit prin ret ea, rezult and o ,,furtun a de pachete, adic a o multiplicare incontrolabil a a pachetelor. In cazul utiliz arii repetoarelor, pe l ang a topologia n arbore mai trebuie respectate ni ste condit ii, si anume: toate componentele legate la repetoare trebuie s a lucreze la aceea si vitez a (e 10 Mbit/s, e 100 Mbit/s, e 1 Gbit/s). Aceasta deoarece un repetor nu memoreaz a pachetul de retransmis si, ca urmare, nu-l poate retransmite la alt a cadent a a bit ilor dec at cea cu care l recept ioneaz a. s a nu existe mai mult de 4 repetoare de-a lungul nici unui drum ntre dou a interfet e de ret ea. Aceast a restrict ie este impus a pentru ca diferent ele de vitez a de transmisie a repetoarelor si variat ia nt arzierii introduse de repetoare s a nu duc a la mic sorarea sub o anumit a limit a a timpului dintre dou a pachete consecutive. nt arzierea cea mai mare a transmisiei ntre dou a interfet e de ret ea ( nt arzierea pe cablu plus nt arzierea introdus a de repetoare) s a nu e mai mare dec at jum atate din durata necesar a emiterii unui pachet. Pentru o ret ea de 10 Mbit/s, aceasta nseamn a o lungime maxim a total a de 2500 m ntre oricare dou a interfet e de ret ea. In cazul switch-urilor, nu apare nici una din limit arile expuse mai sus, cu except ia faptului c a pe eventualele leg aturi semi-duplex nt arzierea trebuie s a e de cel mult jum atate din durata minim a a pachatului. La ret ele ce utilizeaz a at at switch-uri c at si repetoare, restrict iile de la repetoare se aplic a, separat, pe ecare subret ea format a din repetoare

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 279

interconectate si leg aturile acestora spre interfet ele de ret ea si switch-uri.

9.1.5. Dirijarea efectuat a de comutatoare (switch-uri)


Comutatoarele (switch-urile) sunt capabile s a realizeze o dirijare primitiv a a pachetelor primite. Anume, un comutator tine o tabel a cu asocierea ntre adresa zic a (adresa MAC) a unei interfet e de ret ea si portul (conectorul) la care este conectat a, direct sau indirect, acea interfat a. Dac a un comutator prime ste un pachet cu o anumit a adres a MAC surs a, comutatorul va asocia acea adres a cu portul prin care a intrat pachetul. Ulterior, dac a comutatorul prime ste un pachet av and ca destinat ie acea adres a MAC, l va trimite doar prin portul asociat acelei adrese. Asocierea ntre adresa MAC si port este ment inut a doar un timp scurt (de ordinul secundei) pentru ca s a se asigure actualizarea asocierii n cazul mut arii interfet ei de ret ea de la un port la altul (prin mutarea zic aa cablului). Mai multe adrese MAC pot avea asociat acela si port; aceast a situat ie apare dac a la acel port este conectat un repetor sau un alt comutator. Unei adrese i poate asociat cel mult un port. La primirea unui pachet, comutatorul caut a portul asociat adresei. Dac a exist a, va trimite pachetul doar prin acel port. Dac a nu exist a asociere, pachetul este trimis prin toate porturile cu except ia celui prin care a intrat. Evident, pachetele de broadcast se ncadreaz a n aceast a din urm a categorie.

9.1.6. Facilit a ti avansate ale switch-urilor


9.1.6.1. Switch-uri congurabile In mod obi snuit, switch-urile nu au parametri congurabili si nu au adres a; ele sunt transparente fat a de tracul ce trece prin ele. Switch-urile mai avansate au parametri congurabili. Pentru congurare, este necesar s a poat a accesate de pe un calculator. Accesul se poate realiza n urm atoarele moduri: Prin intermediul unui cablu serial: La switch se conecteaz a, prin intermediul unui cablu serial, un teleterminal (sau un calculator care execut a un simulator de terminal, de genul HyperTerm ). Switch-ul ofer ao interfat a text ofer a c ateva comenzi de congurare. De cele mai multe ori, exist a o comand a help sau ? care listeaz a comenzile disponibile. Prin telnet: Switch-ul se prezint a ca si cum ar mai avea intern o interfat a de ret ea conectat a la el nsu si. Aceast a interfat a de ret ea are o adres a MAC (adesea scris a pe eticheta aplicat a pe carcas a) si o adres a IP

c 2008, Radu-Lucian Lup sa


280 9.1. Ret ele IEEE 802.3 (Ethernet)

congurabil a (adresa IP init ial a se congureaz a prin intermediul conexiunii seriale descrise mai sus). Conectarea prin telnet la adresa IP a switch-ului (pe portul standard al protocolului telnet, anume 23) ofer a acces la interfat a de congurare prezentat a mai sus. Evident, pentru mpiedicarea congur arii switch-ului de c atre persoane neautorizate, switch-ul permite congurarea unei parole, care este cerut a la conectare. Prin interfat a web: Ca si la conectarea prin telnet, switch-ul prezint ao adres a IP. Administratorul se poate conecta cu orice navigator web la aceast a adres a si va primi pagini ce cont in parametrii actuali si formulare pentru modicarea parametrilor. Ca si n cazul congur arii prin telnet, accesul poate si este recomandabil s a e restrict ionat prin parol a. Pentru cazul uit arii parolei, exist a o procedur a de revenire la congurarea implicit a. Aceasta const a de obicei n ap asarea unui buton de reset timp de 1015 secunde sau punerea sub tensiune a switch-ului n timp ce se tine ap asat butonul de reset. 9.1.6.2. Filtrare pe baz a de adrese MAC Unele switch-uri pot congurate s a nu accepte, pe un anumit port, dec at pachete ce provin de la o anumit a adres a MAC sau de la o adres a dintro anumit a list a. De asemenea, un pachet destinat unei adrese MAC dintr-o astfel de list a nu va trimis dec at prin portul pe a c arui list a se g ase ste adresa. Aceast a facilitate este introdus a pentru a mpiedica eventuali intru si s a intre n ret ea racord andu-se pur si simplu la prizele de ret ea accesibile. De si mbun at a te ste securitatea unei ret ele, solut ia are c ateva limit ari: lista adreselor asociabile unui port este limitat a (de multe ori la 8 sau 16 adrese); multe pl aci de ret ea permit schimbarea (prin soft) a adresei MAC. 9.1.6.3. Trunking Prin trunking se nt elege utilizarea mai multor cabluri n paralel ca leg atur a ntre dou a switch-uri. In acest fel, tracul ce se poate stabili ntre acele dou a switch-uri este suma capacit a tilor leg aturilor congurate n trunking. Porturile utilizate n regim trunking trebuie congurate pe ambele switch-uri. Este de asemenea posibil ca legarea n trunking s a utilizeze o extensie a protocolului IEEE 802.3 care este proprietatea rmei produc atoare a switch-ului; n acest caz este posibil ca dou a swithc-uri realizate de rme diferite s a nu se poat a lega n trunking.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 281

9.1.6.4. Leg aturi redundante IEEE 802.1D [IEEE 802.1D, 2004] prevede un protocol pentru descoperirea si dezactivarea ciclurilor ( n sensul teoriei grafelor) formate de leg aturile dintre switch-uri. Majoritatea switch-urilor nu implementeaz a ns a acest algoritm si, ca urmare, n majoritatea cazurilor existent a ciclurilor duce la ,,furtuni de pachete (multiplicarea incontrolabil a a pachetelor n ret ea). Dac a toate swicth-urile de pe traseul unui ciclu implementeaz a protocolul de descoperire a ciclurilor, ele colaboreaz a automat pentru dezactivarea uneia dintre leg aturi si utilizarea doar a unui arbore part ial al grafului init ial al leg aturilor. La c aderea unei leg aturi, switch-urile vor colabora pentru reactivarea unei leg aturi dezactivate, n vederea p astr arii conexit a tii ret elei. Ment ion am c a, n cazul existent ei unui ciclu, nu este posibil a mp ar tirea tracului ntre drumurile alternative. Unul din drumuri va obligatoriu dezactivat complet, c at timp cel alalt este funct ional. 9.1.6.5. Ret ele virtuale (VLAN) Mecanismul de ret ele virtuale (Virtual Local Area Network ) const a n mp art irea unei ret ele zice n mai multe ret ele virtuale disjuncte. Fiecare ret ea virtual a se comport a exact ca o ret ea IEEE 802.3 independent a. Constructiv, ret elele virtuale partajeaz a acelea si echipamente (comutatoare, cabluri sau chiar pl aci de ret ea). A nu se confunda VLAN cu VPN (Virtual Private Network ret ea privat a virtual a descris a n 10.7.4). Partit ionarea n VLAN-uri poate dezirabil a din mai multe motive, cum ar : limitarea tracului de broadcast sau separarea tracului din motive de securitate. Exist a dou a posibilit a ti de construct ie a VLAN-urilor. O prim a posibilitate const a n partit ionarea porturilor unui switch. In acest fel, un switch se comport a ca mai multe switch-uri (virtuale) independente, ecare av and doar o parte a porturilor switch-ului zic. Un port al unui switch poate s a apart in a doar unui singur VLAN. O a doua posibilitate este cea denit a n [IEEE 802.1Q, 2003]. Fiecare VLAN const a dintr-o parte din echipamentele (interfet e de ret ea, cabluri si switch-uri) ret elei zice; VLAN-uri distincte pot partaja n voie echipamente zice. Astfel, ecare interfat a de ret ea apart ine unuia sau mai multor VLANuri, ecare cablu apart ine unuia sau mai multor VLAN-uri si ecare port al ec arui switch apart ine unuia sau mai multor VLAN-uri. Fiecare switch, la primirea unui pachet de broadcast sau pentru a c arui destinat ie nu are asociere,

c 2008, Radu-Lucian Lup sa


282 9.1. Ret ele IEEE 802.3 (Ethernet)

va trimite pachetul prin toate porturile apart in and VLAN-ului pachetului, cu except ia portului prin care a intrat pachetul. Pentru ca mecanismul descris mai sus s a poat a funct iona, este necesar ca, pe cablurile ce apart in mai multor VLAN-uri, pentru ecare pachet s a se poat a deduce c arui VLAN apart ine. Pentru aceasta, ecare pachet este etichetat cu un identicator de VLAN (VLAN-ID ); acest VLAN-ID este un num ar reprezentabil pe 12 bit i. Pentru p astrarea compatibilit a tii cu echipamentele ce nu suport a VLAN-uri 802.1Q, un segment de ret ea care apart ine doar unui singur VLAN poate congurat s a utilizeze pachete neetichetate; switch-ul ce realizeaz a leg atura dintre un astfel de segment si restul ret elei zice realizeaz a ad augarea si eliminarea etichetei de VLAN pe pachetele ce tranziteaz a spre, respectiv dinspre, restul ret elei. Echipamentele incompatibile 802.1Q pot montate doar pe cabluri prin care trac pachete neetichetate. O plac a de ret ea compatibil a 802.1Q poate congurat a s a fac a parte din mai multe VLAN-uri. Pentru aceasta, ea se monteaz a pe un cablu prin care trec pachete etichetate. Placa de ret ea se comport a ca si c and ar de fapt mai multe pl aci de ret ea, virtuale, c ate una n ecare VLAN. Fiecare plac a virtual a are asociat un VLAN-ID, prime ste doar pachetele ce poart a acel VLAN-ID si marcheaz a cu VLAN-ID-ul s au toate pachetele emise. Pe ecare switch trebuie congurate porturile care apart in ec arui VLAN. De asemenea, pentru ecare port trebuie stabilit dac a utilizeaz a pachete etichetate (cu VLAN ID-ul) sau pachete neetichetate. Un port ce utilizeaz a pachete neetichetate poate apart ine unui singur VLAN.

9.1.7. Considerente privind proiectarea unei ret ele


Proiectarea si construct ia unei ret ele Ethernet este n general extrem de u soar a; acesta este si unul din motivele popularit a tii Ethernet-ului. De obicei este necesar s a se construiasc a o ret ea n care toate calculatoarele s a se ,,vad a ntre ele (la nivel de ret ea Ethernet; controlul accesului la diversele resurse oferite de sisteme se face prin soft, la nivel superior). Tot ce este necesar n acest caz este s a se amplaseze un num ar de switch-uri si cabluri astfel nc at ecare calculator s a e legat la un switch si switch-urile s a e legate ntre ele ntr-o ret a conex a si f ar a ,,bucle. Se utilizeaz a de obicei o structurare ierarhic a a leg aturilor (a sa-numita cablare structurat a ): de la calculatoarele dintr-o nc apere sau eventual 23 nc aperi vecine se adun a cablurile ntr-un switch, iar de la aceste switch-uri se adun a cabluri c atre un switch central. Pentru ret elele mai mari, ntre switch-ul central si switch-urile asociate nc aperilor se mai adaug a un nivel.

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 283

In instalat iile mici si f ar a pretent ii, cablurile se duc aparent si se xeaz a de peret i sau pe mobil a numai acolo unde este strict necesar. U surint a realiz arii si recongur arii este pl atit a prin faptul c a apar dicult a ti la cur a tenie, cablurile se degradeaz a u sor dac a se calc a pe ele si, n sf ar sit, se mai nt ampl a ca cineva s a se mpiedice de un cablu, rezult and echipamente trase pe jos sau cabluri smulse din conectoare. Pentru evitatarea neajunsurilor expuse mai sus, se prefer a s a se trag a cablurile prin paturi de cablu, tuburi ngropate (ca la instalat iile electrice) sau prin tavane false. Deoarece astfel de cablaje se modic a mai dicil, este bine s a se aib a n vedere posibilele modic ari ce ar putea de dorit n viitor. Asta nseamn a: S a se prevad a mai multe cabluri de la posibile amplasamente de calculatoare la amplasamentul switch-ului asociat nc aperii. Cablurile neutilizate nu e necesar s a aib a toate loc n switch; se vor conecta sau deconecta dup a necesit a ti. S a se prevad a 23 cabluri de la switch-urile corespunz atoare unei nc aperi la switch-ul central. Astfel, dac a va nevoie s a se construiasc a dou a ret ele distincte, o parte din calculatoarele din nc apere conect andu-se la o ret ea si altele la alt a ret ea, se vor pune dou a switch-uri n nc apere, ecare conectat prin c ate un cablu la switch-ul central.

9.2. Ret ele IEEE 802.11 (Wireless)


9.2.1. Arhitectura ret elei
Elementul de baz a ntr-o ret ea wireless [IEEE 802.11, 1999] este celula wireless (termenul original conform standardului este Basic Service Set BSS). O celul a wireless este format a din mai multe stat ii (STA) situate ntr-o zon a geograc a destul de restr ans a (de ordinul c atorva zeci de metri) pentru ca semnalul emis de ecare stat ie s a e recept ionat de toate stat iile din celul a. Fiecare celul a are asociat un identicator de 48 de bit i, unic, numit Basic Service Set ID BSSID. Acest identicator este nscris n ecare pachet de date vehiculat n ret ea, astfel nc at pentru orice pachet de date recept ionat prin anten a se poate determina celula wireless c areia i apart ine. Mai multe celule wireless pot coexista n aceea si zon a, tracul din cadrul ec arei celule put and distins pe baza BSSID-ului de tracul celorlalte celule. Fiecare stat ie apart ine (este asociat a) la un anumit moment cel mult unei celule. Asocierile sunt dinamice o stat ie poate s a intre sau s a ias a

c 2008, Radu-Lucian Lup sa


284 9.2. Ret ele IEEE 802.11 (Wireless)

oric and dintr-o celul a. Fiecare stat ie se identic a printr-o adres a unic a de 48 de bit i, numit a n mod curent adresa MAC a stat iei. Accesul la mediu este controlat n principal prin metode bazate pe urm arirea tracului pe mediu, detectarea coliziunilor si, ntr-o anumit a m asur a, metode de rezervare n prealabil a accesului la mediu. Acestea vor descrise n detaliu n 9.2.2. Prezent a unei celule wireless organizate ntr-o anumit a zon a este manifestat a prin emiterea periodic a de c atre una dintre stat ii a unui pachet special, numit beacon. Pe l ang a BSSID-ul celulei, pachetele beacon mai cont in un sir de caractere numit SSID sau uneori numele ret elei (engl. network name ). Acest sir este xat de administratorul ret elei si serve ste la identicarea ret elei pentru utilizatorii umani. O stat ie poate obt ine lista celulelor active n zona sa ascult and pachetele beacon. Lista a sat a utilizatorului va cont ine SSID-urile ret elelor. Exist a dou a moduri de lucru n care poate funct iona o ret ea 802.11: Ret ea format a dintr-o singur a celul a independent a, neconectat a prin mi jloace IEEE 802 de alte echipamente. In terminologia standardului, o astfel de celul a se nume ste Independent BSS IBSS; n mod curent ret eaua astfel format a se nume ste ad-hoc. Ret ea format a din una sau mai multe celule, oper and mpreun a si posibil conectate la o infrastructur a IEEE 802 (de exemplu la o ret ea Ethernet 802.3). Un astfel de mod de lucru se nume ste mod infrastructur a sau managed . In mod infrastructur a, n cadrul ec arei celule exist a o stat ie care are rolul leg arii celulei la infrastructur a (altfel spus, la restul ret elei IEEE 802.11). O astfel de stat ie poart a denumirea de Access Point AP. Un AP este o stat ie, si ca atare are o adres a MAC. Intr-o celul a a unei ret ele de tip infrastructur a, o stat ie ce intr a sau iese dintr-o celul a trebuie s a anunt e AP-ul responsabil de celula respectiv a. AP-ul este responsabil de generarea pachetelor beacon si BSSID-ul celulei este adresa MAC a AP-ului. AP-urile unei aceleia si ret ele 802.11 trebuie s a e interconectate, form and a sa-numitul Distribution System (DS). DS-ul poate conectat la alte ret ele din familia IEEE 802 prin intermediul unor dispozitive numite portal -uri. Celulele din aceea si ret ea vor avea acela si SSID. Standardul original nu prevede nimic n leg atur a cu modul de conectare a AP-urilor si deci de realizare a DS-ului. Ca urmare, ecare fabricant de APuri si-a construit propriul protocol de comunicare inter-AP. Ulterior IEEE a

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 285

emis un standard, [IEEE 802.11F, 2003], care xeaz a un protocol de comunicare ntre AP-uri. De obicei un dispozitiv v andut sub numele de access point cont ine un AP si un portal c atre ret ele Ethernet. Un astfel de dispozitiv prezint a un modul radio prin intermediul c aruia se comport a ca o stat ie cu rol de AP si un conector Ethernet. Intr-o prim a aproximat ie, un astfel de dispozitiv poate privit ca un switch conectat pe de o parte la ecare dintre stat iile membre ale celulei si pe de alt a parte la un dispozitiv Ethernet. Unele access point -uri ce se g asesc n comert ofer a funct ionalit a ti suplimentare fat a de un AP combinat cu un portal. Aceste funct ii sunt oferite prin extensii ale protocolului si ca urmare pot utilizate de regul a doar mpreun a cu echipamente produse de aceea si rm a. Funct ionalit a tile sunt: funct ie de switch (punte) ntre o ret ea Ethernet (x a) si o celul a wireless, act ion and ns a ca si stat ie oarecare (nu AP). Aceast a funct ie se nume ste wireless bridge sau AP client (uneori exist a funct ii cu ambele nume, cu diferent e minore ntre ele); funct ie de AP, dar utiliz and tot ret eaua wireless pentru partea de infrastructur a. In acest mod, dispozitivul este n acela si timp AP pentru o celul a si stat ie oarecare n alt a celul a, iar a dou a leg atur a este utilizat a pentru dirijarea spre ret eaua x a a datelor din celula n care dispozitivul este AP.

9.2.2. Accesul la mediu


Deoarece ntr-o ret ea 802.11 avem un mediu partajat ntre mai mult i emit atori, este necesar s a avem un mecanism de control al accesului la mediu. Metoda de control al accesului la mediu n IEEE 802.11 se nume ste CarrierSense Multiple Access with Collision Avoidance (CSMA/CA; rom: acces multiplu cu detectarea semnalului purt ator si evitarea coliziunilor). In principal, strategia de control al accesului la mediu se bazeaz a pe detectarea coliziunilor si repetarea pachetelor ce au suferit coliziuni, adic a aceea si strategie ca si pentru Ethernet -ul pe cablu coaxial. Datorit a condit iilor specice ret elelor f ar a r, sunt aduse c ateva modic ari. In principal, la transmisia radio nu exist a o delimitare comun a ntre zonele de act iune pentru diverse stat ii din aceea si celul a: este posibil ca o stat ie B s a recept ioneze bine transmisia stat iei A, stat ia C s a recept ioneze transmisia lui B, dar stat ia C s a nu recept ioneze transmisia lui A. Intr-un astfel de caz, dac a A si C transmit simultan, pachetele emise se ciocnesc la B, dar deoarece nici

c 2008, Radu-Lucian Lup sa


286 9.2. Ret ele IEEE 802.11 (Wireless)

una din stat iile A si C nu recept ioneaz a transmisia celeilalte ele nu au cum s a detecteze coliziunea. In ret elele IEEE 802.11, o stat ie care dore ste s a trimit a un pachet va trimite nt ai un pachet de control, numit Request To Send (RTS; rom: cerere de transmisie ), n care specic a destinatarul si durata de timp necesar a transmiterii pachetului. Dac a destinatarul a primit pachetul RTS si este liber, va trimite napoi un pachet de control Clear To Send (CTS; rom: accept transmisia ). La primirea pachetului CTS, emit atorul trimite pachetul de date. O stat ie care recept ioneaz a un pachet CTS destinat altei stat ii nu are voie s a trimit a nimic pe durata rezervat a de pachetul CTS, pentru a nu interfera cu transmisia acceptat a prin acel CTS. Aceast a restrict ie trebuie respectat a si n cazul recept iei unui pachet CTS destinat altei ret ele din aceea si zon a (adic a purt and un BSS-ID diferit). Utilizarea pachetelor RTS si CTS nu este obligatorie. Pentru pachetele mici este preferabil a trimiterea direct a pachetului de date si repetarea acestuia n cazul unei coliziuni. Pentru pachetele de broadcast, utilizarea RTS si CTS este imposibil a; ca urmare un pachet de broadcast este trimis direct.

9.2.3. Generarea pachetelor beacon


In modul infrastructur a, pachetele beacon ale unei celule sunt generate exclusiv de c atre AP-ul celulei. In modul ad-hoc, generarea pachetelor beacon este f acut a distribuit, de c atre toate stat iile membre ale celulei IBSS. Simplicat, o stat ie care nu recept ioneaz a un beacon ntr-un anumit interval de timp predenit genereaz a ea ns a si pachetul beacon.

9.2.4. Securitatea ret elelor 802.11


Deoarece la ret elele 802.11 comunicat ia este prin unde radio, a c aror domeniu de act iune nu poate net limitat, utilizarea unor metode care s a asigure condent ialitatea si integritatea datelor transportate este esent ial a. Exist a mai multe mecanisme de securitate ce pot utilizate. In cadrul unei celule se poate utiliza, la alegere, unul singur dintre acestea: Open system : nseamn a, de fapt, lipsa oric arui mecanism de securitate. Se utilizeaz a acolo unde se dore ste s a se ofere acces public la Internet. De remarcat ns a c a, datorit a lipsei oric arui mecanism de condent ialitate sau asigurarea integrit a tii mesajelor, oricine poate asculta sau modica comunicat ia oricui n cadrul celulei. Wired Equivalent Privacy WEP (rom. securitate echivalent a cu ret eaua cablat a ): ofer a condent ialitate si autenticarea si vericarea integrit a tii

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 287

mesajelor. In acest scop, tot i membrii celulei trebuie s a cunoasc a o anumit a cheie de lung a durat a, numit a pre-shared key (rom. cheie partajat a n prealabil ); aceast a cheie trebuie dat a de utilizator la init ierea celulei sau, dup a caz, la introducerea stat iei n celul a. Criptarea se face utiliz and cifrul RC4, cu o cheie construit a din secretul partajat si dintr-un vector de init ializare ales aleator, pentru ecare pachet, de c atre emit ator si transmis n antetul pachetului. Controlul integrit a tii pachetului este f acut tot pe baza secretului partajat. WEP are dou a sl abiciuni: pe de o parte, datorit a existent ei unei sl abiciuni a cifrului RC4 (exist a c ateva chei slabe, foarte u sor de spart), WEP poate spart destul de u sor; pe de alt a parte, modelul de securitate oferit este destul de neexibil. WiFi Protected Access WPA: corecteaz a problemele WEP, p astr and compatibilitatea cu pl acile de ret ea existente. In privint a cript arii, WPA p astreaz a cifrul RC4 din motive de compatibilitate, dar vine cu o schem a diferit a de gestiune a cheilor de criptare, capabil a s a evite cheile slabe. In privint a obt inerii unui model de securitate mai exibil, WPA are dou a moduri de lucru: - WPA-Personal, numit si WPA-PSK (de la Pre-Shared Key ), n care se utilizeaz a un secret partajat ntre tot i membrii celulei, ind similar cu WEP (dar mult mai sigur). - WPA-Entreprise, n care cheile se obt in pe baza unor chei individuale ale utilizatorilor. Controlul accesului si obt inerea cheilor se face printr-un mecanism numit Extensible Authentication Protocol (EAP ), descris mai jos. IEEE 802.11i [IEEE 802.11i, 2004], numit si WPA2, extinde WPA ad aug and, ntre altele, posibilitatea utiliz arii cifrului AES. Ca si n cazul WPA, exist a dou a moduri de lucru, cu cheie partajat a n prealabil sau utiliz and EAP. Protocolul de autenticare extensibil, EAP [RFC 3748, 2004], este un protocol generic, ce permite utilizarea mai multor scheme de autenticare. EAP este utilizat si de alte protocoale n afar a de WPA si WPA2, si anume poate utilizat n cadrul leg aturilor PPP [RFC 1661, 1994], precum si pentru autenticarea conect arilor la o ret ea cablat a IEEE 802.3, conform [IEEE 802.1X, 2001]. Arhitectura EAP cont ine urm atoarele componente: clientul ce trebuie s a- si dovedeasc a identitatea n scopul obt inerii accesului

c 2008, Radu-Lucian Lup sa


288 9.2. Ret ele IEEE 802.11 (Wireless)

la ret ea. Rolul clientului l are placa de ret ea 802.11 (sau placa de ret ea 802.3 sau clientul PPP). In terminologia EAP, acesta este numit supplicant. punctul de acces este entitatea care trebuie s a autentice clientul pentru a-i oferi acces la serviciile ret elei. Rolul de punct de acces l are AP-ul 802.11 (sau switch-ul 802.3 sau serverul PPP). In terminologia EAP, acesta se nume ste authenticator. serverul de autenticare este entitatea care det ine baza de date cu cheile client ilor si realizeaz a efectiv autenticarea. Protocolul EAP prevede un schimb de mesaje ntre client si serverul de autenticare. Dac a serverul de autenticare este distinct fat a de punctul de acces, comunicat ia dintre client si serverul de autenticare trece prin punctul de acces, iar port iunea din calea de comunicat ie dintre punctul de acces si serverul de autenticare este protejat a criptograc pe baza unui secret partajat ntre punctul de acces si serverul de autenticare. Serverul de autenticare este de obicei un server RADIUS. Unele dintre mecanismele efective de autenticare utilizabile n cadrul EAP sunt: EAP-MD5 prevede c a serverul de autenticare trimite clientului un num ar aleator, iar clientul r aspunde cu dispersia MD5 a concaten arii num arului aleator cu parola clientului. Funct ionarea mecanismului necesit a ca serverul s a aib a n baza de date, n clar, parola clientului. EAP-MD5 permite doar autenticarea clientului, nu si stabilirea unor chei pentru criptarea sau autenticarea mesajelor. EAP-TLS necesit a ca at at clientul c at si serverul de autenticare s a aib a prestabilite chei secrete SSL/TLS, iar ecare dintre ei s a aib a certicatul TLS al celuilalt (vezi si 11.3.2.5). Se stabile ste o conexiune TLS ntre client si serverul de autenticare, utiliz and certicatele acestora, iar n cadrul acestei conexiuni stabilesc cheile pentru comunicat ia ulterioar a ntre client si punctul de acces. PEAP (de la Protected EAP ) prevede utilizarea TLS pentru deschiderea unei conexiuni securizate ntre client si serverul de autenticare, ns a doar serverul are o cheie TLS, clientul autentic and serverul pe baza certicatului corespunz ator. Dup a deschiderea conexiunii TLS, urmeaz a autenticarea clientului de c atre server, iar n caz de succes are loc negocierea cheilor pentru securizarea comunicat iei ntre client si punctul de acces. In terminologia PEAP, conexiunea TLS se nume ste mecanismul exterior de autenticare, iar mecanismul de autenticare a clientului

c 2008, Radu-Lucian Lup sa


Capitolul 9. Ret ele IEEE 802 289

se nume ste mecanismul interior. Mecanismul interior cel mai r asp andit este MSCHAP, care este un mecanism similar cu EAP-MD5.

c 2008, Radu-Lucian Lup sa


290 Capitolul 9. Ret ele IEEE 802

c 2008, Radu-Lucian Lup sa


291

Capitolul 10

Internetul

Denumirea Internet desemneaz a dou a lucruri: pe de o parte un protocol de nivel ret ea (Internet Protocol, IP, protocolul Internet ), iar pe de alt a parte ret eaua Internet, care este o ret ea la scar a mondial a bazat a pe protocolul Internet. Capitolul de fat a prezint a: protocolul Internet (IP), mpreun a cu celelalte protocoale de baz a ale ret elelor de tip Internet (TCP, DNS, ARP, etc.); c ateva aspecte administrative legate de ret eaua mondial a Internet.

10.1. Arhitectura ret elei


Facem n continuare o scurt a trecere n revist a a conceptelor de baz a ale unei ret ele bazate pe protocolul Internet. Aceste concepte vor detaliate n paragrafele care urmeaz a. Serviciul de comunicat ie oferit de o ret ea Internet este de tip datagrame; n terminologia Internet acestea se numesc pachete . Ca orice ret ea (vezi capitolul 5), o ret ea Internet este alc atuit a din noduri , interconectate ntre ele. Intr-o ret ea Internet, toate nodurile pot act iona ca noduri nale (adic a s a e surs a sau destinat ie pentru comunicat ie). Sunt numite stat ii (engl. hosts ) nodurile ce nu pot act iona ca noduri intermediare si rutere nodurile ce pot act iona ca noduri intermediare. Stat iile sunt n mod uzual calculatoare (PC-uri, mainframe-uri), dispozitive mobile (PDA-uri), imprimantele de ret ea sau alte dispozitive. Remarc am c a switch-urile Ethernet sunt noduri IP numai dac a sunt congurabile. In acest caz, ele au doar rol de stat ie si doar n scopul de-a putea contactate n vederea congur arii.

c 2008, Radu-Lucian Lup sa


292 10.1. Arhitectura ret elei

Nodurile intermediare sunt e PC-uri, e dispozitive dedicate (rutere dedicate). Leg aturile directe pot realizate prin linii seriale, linii telefonice cu modemuri, ret ele locale IEEE 802, cablu TV, etc. Modul de utilizare a ec arui tip de leg atur a direct a de c atre o ret ea Internet este standardizat prin standarde auxiliare ( 10.5). Exist a chiar un standard [RFC 1149, 1990] de utilizare ca leg aturi directe a porumbeilor c al atori; de si standardul a fost publicat ca o glum a de 1 aprilie, el ilustreaz a foarte bine independent a ntre nivele ntr-o ret ea. Din punctul de vedere al unei ret ele Internet, o leg atur a direct a este orice fel de canal de comunicat ie pe care ret eaua de tip Internet o poate folosi. Fiecare nod este identicat prin una sau mai multe adrese IP . Cu except ia unor adrese cu rol special, o adres a IP identic a unic un nod. Unele noduri, n special cele intermediare, au mai multe adrese IP asociate. Adresele IP sunt arareori folosite direct de utilizatorii umani. In locul lor se utilizeaz a numele de domeniu. Corespondent a ntre un nume de domeniu si adresa IP se realizeaz a cu ajutorul sistemulul DNS (Domain Name Service ), descris n 10.4. Protocolul Internet a fost proiectat pentru a asigura o tolerant a deosebit de mare la pene. Dup a c aderea unor noduri sau a unor leg aturi, dac a mai exist a totu si un drum ntre dou a noduri el va g asit si utilizat n cele din urm a. Aceast a tolerant a la pene vine cu un pret : nu exist a garant ii cu privire la nt arzierea maxim a n livrarea unui pachet sau debit minim garantat; ba chiar este posibil ca un pachet s a e pierdut complet (acest lucru se poate nt ampla cu pachetele surprinse pe drum de o pan a, precum si n caz de nc arcare mare a ret elei), s a ajung a n dublu exemplar sau dou a pachete s a ajung a la destinat ie n ordine invers a a trimiterii. Este sarcina nivelelor superioare s a se descurce n aceste condit ii. In acest scop, ntre aplicat ie si nivelul ret ea este plasat un nivel intermediar, nivelul transport, cu rolul de-a furniza aplicat iei un serviciu mai potrivit.

10.2. Protocolul IP
Protocolul Internet (engl. Internet Protocol IP ) descrie formatul pachetelor si c ateva aspecte privind activitatea nodurilor ret elei. Protocolul IP are dou a versiuni aate curent n uz: versiunea 4 (cea mai utilizat a n prezent, numit a prescurtat IPv4 ) standardizat a prin [RFC 791, 1981] si versiunea 6 (care se r asp ande ste relativ ncet, numit a prescurtat IPv6 ) standardizat a prin [RFC 2460, 1998].

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 293

10.2.1. Structura pachetului IP


Un pachet IP este alc atuit dintr-un antet x, un num ar variabil de opt iuni si, n nal, datele utile. Antetul x cont ine datele necesare pentru dirijarea pachetului. Con tinutul antetului x este dat n tabelele 10.1 (pentru versiunea 4) si 10.2 (pentru versiunea 6). Semnicat ia diferitelor c ampuri va descris a n paragrafele care urmeaz a. Nume c amp Versiune IHL Lungime (bit i) 4 4 Rol Versiunea protocolului; valoarea este x a: 4. Lungimea antetului, inclusiv opt iunile, n grupuri de 32 bit i (valoarea minim a este 5, adic a 160 bit i). Tip serviciu (vezi 10.2.6.2). Lungimea total a, antet plus date utile, n octet i. Identicator pentru reasamblarea fragmentelor (vezi 10.2.6.1). Rezervat pentru extinderi ulterioare; are valoarea 0. vezi 10.2.6.1. Marcheaz a ultimul fragment sau un pachet nefragmentat (vezi 10.2.6.1). Deplasament pentru reasamblarea fragmentelor. Timpul r amas p an a la distrugerea pachetului (vezi 10.2.5.3). Identicarea protocolului de nivel superior c aruia i apart in datele utile. Suma de control a antetului. Adresa nodului ce a creat pachetul. Adresa destinatarului nal al pachetului.

TOS Lungime totala Identicare Rezervat Nu fragmenta Ultimul fragment Deplasament Timp de viat a Protocol Suma de control Adres a surs a Adres a destinat ie

8 16 16 1 1 1 13 8 8 16 32 32

Tabelul 10.1: Antetul IP versiunea 4

Opt iunile sunt informat ii pentru dirijarea pachetului pentru cazuri mai speciale; deoarece aceste informat ii nu sunt necesare dec at pentru anumite tipuri de pachete, ele sunt prezente doar n pachetele n care este nevoie de

c 2008, Radu-Lucian Lup sa


294 10.2. Protocolul IP

Nume c amp Versiune Clas a trac Etichet a ux Lungime rest Tip antet urm ator

Lungime (bit i) 4 8 20 16 8

Rol Versiunea protocolului IP. Valoarea este x a: 6. tip serviciu (vezi 10.2.6.2). vezi 10.3.1.8. Lungimea pachetului minus antetul x, n octet i. Dac a exist a opt iuni, tipul primului antet opt ional; altfel, protocolul c aruia i apart in datele utile. Num arul maxim de salturi p an a la distrugerea pachetului (vezi 10.2.5.3). Adresa nodului ce a emis pachetul. Adresa destinatarului nal al pachetului.

Limit a salturi Adresa surs a Adresa destinat ie

8 128 128

Tabelul 10.2: Antetul IP versiunea 6

ele. Datele utile sunt un sir de octet i asupra c aruia protocolul IP nu impune nici o restrict ie, cu except ia lungimii. Lungimea maxim a admis a de protocol este de 65515 octet i (65535 octet i pachetul ntreg) pentru IPv4 si 65535 octet i, inclusiv antetele opt ionale, pentru IPv6. Este permis ca unele noduri s a nu poat a procesa pachete n care datele utile sunt mai lungi de 556 octet i (576 octet i tot pachetul) pentru IPv4 si 1240 octet i (1280 octet i tot pachetul) pentru IPv6 (a se vedea si 10.2.6.1).

10.2.2. Bazele dirij arii pachetelor IP


10.2.2.1. Subret ele si interfet e O subret ea este o mult ime de noduri legate direct ecare cu ecare. De exemplu, o ret ea Ethernet construit a cu cabluri magistral a este o subret ea IP. O ret ea Ethernet cu hub-uri sau switch-uri este de asemenea o subret ea IP ntruc at, din punctul de vedere al calculatorului la care este ata sat a o plac a de ret ea, o ret ea Ethernet construit a cu cablu magistral a se comport a identic cu o ret ea construit a cu hub-uri sau switch-uri. Ca alt exemplu, o linie serial a construie ste o subret ea cu dou a calculatoare. Interfat a de ret ea este un concept abstract care desemneaz a leg atura dintre un nod si o subret ea. In cazul n care leg atura direct a este realizat a de

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 295

o ret ea IEEE 802, interfat a de ret ea este placa de ret ea mpreun a cu driver-ul ei. Fiecare interfat a de ret ea are propria adres a IP. Ca urmare, un nod ce are n pl aci de ret ea va avea n adrese IP distincte. Are sens s a vorbim despre interfet ele membre ale unei subret ele, ca ind interfet ele prin care nodurile din subret ea sunt conectate la acea subret ea. Adresele IP dintr-o subret ea sunt adresele IP ale interfet elor din acea subret ea. 10.2.2.2. Prexul de ret ea Fiecare subret ea are asociat un prex de ret ea , adic a un anumit sir de bit i de lungime mai mic a dec at lungimea unei adrese IP. Toate adresele IP ale interfet elor din acea subret ea trebuie s a nceap a cu acel prex de ret ea. Prexul unei subret ele nu este permis s a e prex al unei adrese IP din afara acelei subret ele. Ca urmare, un prex identic a unic o subret ea. Suxul unei adrese, adic a sirul de bit i din adres a care nu fac parte din prexul subret elei, l vom numi adresa n cadrul subret elei. Num arul de bit i ai suxului determin a num arul de noduri ce pot membre ale subret elei. Adresele n care suxul este format numai din bit i 0 sau numai din bit i 1 (a sadar dou a adrese pentru ecare subret ea) sunt rezervate si nu pot asignate nodurilor ret elei (a se vedea si [RFC 1700, 1994]). Exemplul 10.1: Pentru simplicarea exemplului vom presupune c a adresele IP sunt doar de 8 bit i. Presupunem c a o subret ea ar avea prexul de ret ea 10110. Adresa 10110010, dac a exist a, trebuie s a desemneze o interfat a din acea ret ea. Adresa 10111010 nu poate face parte din acea subret ea, deoarece nu ncepe cu prexul subret elei. Not am c a un nod care are o interfat a n subret eaua 10110 si o interfat a n alt a ret ea ar putea avea adresa 10111010 pe cea de-a doua interfat a. Din subret eaua considerat a, cu prexul 10110, pot face parte adresele, n num ar de 23 = 8, din intervalul 1011000010110111. Adresele 10110000 si 10110111 sunt rezervate; r am an deci 6 adrese ce pot asignate nodurilor subret elei. Un exemplu de asignare a adreselor este prezentat n gura 10.1. P atr a telele numerotate reprezint a calculatoarele, iar liniile reprezint a leg aturile directe, gurate aici ca si c and ar realizate prin cabluri magistral a. De remarcat c a nodul cu num arul 3 are dou a adrese, 10110001 si 10111010, c ate una pentru ecare interfat a.

c 2008, Radu-Lucian Lup sa


296 10.2. Protocolul IP

1 10110010 10110001 3 10111010 10111001 4

Subret ea cu prexul 10110


10110100

10111011 5

Alt a subret ea, cu prexul 10111 Figura 10.1: O ret ea format a din dou a subret ele. Vezi exemplul 10.1

10.2.2.3. Tabela de dirijare La primirea unui pachet IP, un nod execut a urm atorul algoritm: 1. dac a adresa destinat ie este una din adresele nodului curent, pachetul este livrat local (nivelului superior); 2. altfel, dac a adresa destinat ie este adresa unui vecin direct, pachetul este livrat direct acelui vecin; 3. altfel, se determin a vecinul direct cel mai apropiat de destinatarul pachetului si i se d a pachetul, urm and ca acesta s a-l trimit a mai departe. Pentru pasul 2, este necesar ca nodul s a determine dac a adresa destinat ie corespunde unui vecin direct si care este interfat a prin care se realizeaz a leg atura. Livrarea efectiv a este realizat a de interfat a de ret ea; acesteia i se d a pachetul si adresa IP a vecinului. Pentru pasul 3, trebuie determinat n primul r and vecinul direct c aruia i se va trimite pachetul. Dac a acesta are mai multe interfet e, trebuie utilizat a interfat a prin intermediul c aruia el este vecin nodului curent. O dat a determinat a adresa interfet ei, trimiterea pachetului se face ca la pasul 2. Deciziile de la pa sii 2 si 3 se iau pe baza tabelei de dirijare a nodului curent. O tabel a de dirijare const a dintr-o mult ime de reguli de dirijare. Fiecare regul a asociaz ao tint a unui grup de adrese destinat ie. Grupul de adrese este specicat printr-un prex de ret ea. Pentru un pachet dat se aplic a acea regul a de dirijare n care prexul ce specic a grupul este prex al adresei destinat ie a pachetului. Dac a exist a mai multe astfel de

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 297

reguli de dirijare, se aplic a regula cu prexul cel mai lung adic a cea mai specic a dintre regulile de dirijare aplicabile. T inta poate e o interfat a, e o adres a IP. Dac a tinta este o interfat a, destinat ia trebuie s a e un vecin direct, accesibil prin acea interfat a; n acest caz pachetul de dirijat este livrat direct destinatarului prin interfat a dat a n regul a, conform pasului 2. Dac a tinta este o adres a, aceasta trebuie s a e adresa unei interfet e vecine. In acest caz pachetul de dirijat este trimis nodului vecin a c arui adres a este specicat a n tabela de dirijare. Nodul vecin respectiv poart a denumirea de gateway si trebuie s a e congurat s a act ioneze ca nod intermediar. De notat c a adresa surs a si adresa destinat ie din antetul IP nu se modic a n cursul acestei proceduri. Sursa r am ane nodul care a emis pachetul, iar destinat ia r am ane nodul c aruia trebuie s a-i e livrat n cele din urm a pachetul. Atunci c and modulul de ret ea paseaz a unei interfet e de ret ea un pachet n vederea transmiterii pachetului c atre un nod vecin, modulul de ret ea va comunica interfet ei dou a lucruri: pachetul, n care adresa destinat ie reprezint a destinatarul nal, si adresa vecinului direct c aruia interfat a i va livra pachetul. Acesta din urm a poate diferit fat a de destinatarul nal dac a este doar un intermediar pe drumul c atre destinatarul nal.
Subret eaua 10110
1 2

Subret eaua 1000


6 7

10110010

10110100

10000010

10000011

eth0: 10110001
3 5

10000001 10111011 10111001


4

eth1: 10111010

Subret eaua 10111 Figura 10.2: O ret ea pentru exemplul 10.2

Exemplul 10.2: Fie ret eaua din gura 10.2, format a din trei subret ele. Pentru nodul nr. 3, au fost gurate si numele interfet elor de ret ea: eth0 c atre subret eaua de sus si eth1 c atre subret eaua de jos. Tabela de dirijare a nodului 3 este cea ilustrat a n tabelul 10.3.

c 2008, Radu-Lucian Lup sa


298 10.2. Protocolul IP

Nr. crt. 1. 2. 3.

Grup de adrese (prex) 10110 10111 1000

T inta interfat a eth0 interfat a eth1 nodul 10111011

Tabelul 10.3: Tabela de dirijare pentru nodul 3 din gura 10.2 (exemplul 10.2).

Consider am c a nodul 3 prime ste un pachet cu destinat ia 10110010 (nodul 1). Singura regul a aplicabil a este regula 1, deoarece 10110 este prex pentru 10110010. Conform acestei reguli, pachetul poate livrat direct prin interfat a eth0. Fie acum un pachet cu destinat ia 10000010 (nodul 6). Regula aplicabil a este regula 3. Conform acesteia, pachetul trebuie trimis nodului cu adresa 1011101, urm and ca acesta s a-l trimit a mai departe. Modulul IP caut a n continuare regula aplicabil a pentru destinat ia 10111011 si g ase ste regula 2, conform c areia pachetul se trimite prin interfat a eth1. Prin urmare, pachetul destinat lui 10000010 va trimis lui 10111011 prin interfat a eth1 (urm and ca nodul 5 s a-l livreze mai departe nodului 6). De remarcat c a nodurile ce apar ca tint a n regulile tabelelor de dirijare trebuie specicate prin adresele interfet elor accesibile direct din nodul curent. In exemplul 10.2, este esent ial ca, n ultima regul a a tabelei de dirijare a nodului 3, nodul 5 s a e specicat prin adresa 10111011 si nu prin adresa 10000001. Nodul cu adresa 10111011 este accesibil prin interfat a eth1, conform regulii 2; dac a ar fost specicat prin adresa 10000001, nodul 3 nu ar putut determina cum s a-i trimit a pachetul. In majoritatea cazurilor, tabela de dirijare are o regul a numit a implicit a, corespunz atoare prexului vid si, ca urmare, aplicat a pentru pachetele pentru care nu este aplicabil a nici o alt a regul a. Aceast a regul a, dac a exist a, are totdeauna ca tint a o adres a IP a unui nod vecin al nodului curent. Acest nod (de fapt, aceast a adres a IP) poart a denumirea de default gateway.

10.2.3. Scrierea ca text a adreselor si prexelor


10.2.3.1. Scrierea adreselor IP Atunci c and o adres a IP este scris a pe h artie sau ntr-un sier text, se a seaz a pe ecran sau se cite ste de la tastatur a, adresa este scris a ntr-un format standard descris n continuare.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 299

Adresele IP versiunea 4, care sunt siruri de 32 de bit i, se scriu ca sir de 4 numere, scrise n baza 10, separate prin puncte. Fiecare num ar este de fapt valoarea c ate unui grup de 8 bit i, v azut ca num ar. Aceast a scriere se nume ste notat ie zecimal a cu punct. Pe l ang a notat ia zecimal a cu punct, adresele IP versiunea 4 pot scrise n notat ia zecimal a simpl a : se scrie direct valoarea adresei ca num ar, scris n baza 10. Exemplul 10.3: Fie adresa 1100-0000-1010-1000-0000-0000-0010-0010 (liniut ele au fost scrise numai pentru u surarea citirii). Notat ia zecimal a cu punct este 192.168.0.34. Notat ia zecimal a simpl a este 3232235554. Adresele IP versiunea 6 sunt siruri de 128 de bit i. Scrierea lor obi snuit a se face ca un sir de 32 cifre hexa, ecare reprezent and c ate 4 bit i din adres a. Cifrele hexa sunt grupate c ate 4, iar grupurile succesive sunt separate prin c ate un caracter dou a puncte. Pentru a scurta scrierea, se permit urm atoarele optimiz ari: - zerourile de la nceputul unui grup pot s a nu e scrise; - un grup cu valoarea 0 sau mai multe astfel de grupuri consecutive se pot elimina, mpreun a cu separatorii dou a puncte dintre ei, r am an and doar dou a caractere dou a puncte succesive. Acest lucru se poate face ntr-un singur loc al adresei, altfel s-ar crea evident o ambiguitate. Exemplul 10.4: O posibil a adres a IPv6 este
fe80:0000:0000:0000:0213:8fff:fe4e:fbf4

Posibile scrieri prescurtate sunt


fe80:0:0:0:213:8fff:fe4e:fbf4

sau
fe80::213:8fff:fe4e:fbf4

Adresa 0:0:0:0:0:0:0:1 se scrie compact ::1. Pentru adrese IPv6 alocate n vederea compatibilit a tii cu IPv4, este acceptat a scrierea n care primii 96 bit i sunt scri si n format IPv6, iar ultimii 32 de bit i sunt scri si n format IPv4, separat i de primii printrun caracter dou a puncte.

c 2008, Radu-Lucian Lup sa


300 10.2. Protocolul IP

Exemplul 10.5: Adresa 0:0:0:0:0:0:c100:e122 se poate scrie si


0:0:0:0:0:0:193.0.225.34

sau, mai compact,


::193.0.225.34

10.2.3.2. Scrierea prexelor de ret ea Prexele de ret ea ind de lungime variabil a, trebuie precizat a at at valoarea efectiv a a prexului c at si lungimea acestuia. Exist a dou a notat ii: notat ia cu adresa subret elei si lungimea prexului si notat ia cu adresa subre telei si masca de ret ea. In notat ia cu adres a si lungime, prexul se completeaz a cu zerouri la lungimea unei adrese IP (adic a la 32 de bit i pentru versiunea 4 si la 128 de bit i pentru versiunea 6); rezultatul se nume ste adresa de ret ea. Adresa de ret ea se scrie ca si c and ar o adres a IP normal a, dup a care se scrie (f ar a spat iu) un caracter slash (/) urmat de lungimea prexului scris a ca num ar n baza 10. Exemplul 10.6: Prexul IPv4 1100-0000-1010-1000-110 se scrie, n notat ia cu adres a de ret ea si lungime (notat ie cu slash) 192.168.192.0/19. Prexul 11000000-1010-1000-1100-0000 se scrie 192.168.192.0/24. De remarcat important a specic arii lungimii. In notat ia cu adres a de ret ea si masc a de ret ea, se scrie mai nt ai adresa de ret ea, ca si n cazul scrierii cu adres a si lungime, dup a care se scrie (cu un slash ntre ele sau n rubrici separate) a sa-numita masc a de ret ea. Masca de ret ea const a dintr-un sir de bit i 1 de lungimea prexului de ret ea urmat de un sir de bit i 0, av and n total lungimea unei adrese IP. Masc a de ret ea, se scrie ca si c and ar o adres a IP. Notat ia cu adres a si masc a se utilizeaz a numai pentru IP versiunea 4. Exemplul 10.7: Prexul 1100-0000-1010-1000-110 se scrie, n notat ia cu adres a de ret ea si masca, 192.168.192.0/255.255.224.0. Prexul 1100-00001010-1000-1100-0000 se scrie 192.168.192.0/255.255.255.0.

10.2.4. Alocarea adreselor IP si prexelor de ret ea


Alocarea adreselor IP pentru ret eaua mondial a Internet se realizeaz a de c atre Internet Assigned Numbers Authority (IANA). Mai multe despre alocare se g ase ste la [IANA, ]. De si nu este actualizat, este instructiv de citit si [RFC 1700, 1994].

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 301

10.2.4.1. Alocarea pe utiliz ari Adresele IPv4 sunt mp art ite dup a cum urmeaz a: Adresele cu prexele 0.0.0.0/8 si si 127.0.0.0/8 sunt rezervate. Adresa 127.0.0.1, pentru ecare nod, desemneaz a acel nod, cu alte cuvinte un pachet destinat adresei 127.0.0.1 este totdeauna livrat nodului curent. Adresa 0.0.0.0 nseamn a adres a necunoscut a; poate folosit a doar ca adres a surs a n pachete emise de un nod care ncearc a s a si ae propria adres a. Adresele cu prexul 224.0.0.0/4 sunt utilizate ca adrese de multicast (a sanumita clas a D ). Adresele cu prexul 240.0.0.0/4 sunt rezervate (a sa-numita clas a E ). Adresele cu prexele 10.0.0.0/8, 172.16.0.0/12 si 192.168.0.0/16 sunt numite adrese private [RFC 1918, 1996]. Aceste adrese pot utilizate intern de oricine, f ar a s a e necesar alocarea la IANA, ns a cu condit ia ca pachetele purt and astfel de adrese ca surs a sau destinat ie s a nu ajung a n afara nodurilor gestionate de acea persoan a sau institut ie. Aceste adrese se utilizeaz a pentru acele noduri, din ret eaua proprie a unei institut ii, care nu au nevoie de acces direct la Internet. Mai multe detalii despre utilizarea acestor adrese vor date n 10.7.2 Restul adreselor se aloc a normal nodurilor din Internet. 10.2.4.2. Alocarea adreselor si dirijarea ierarhic a In lipsa oric aror grup ari ale adreselor, majoritatea nodurilor din Internet ar trebui s a aib a n tabela de dirijare c ate o regul a pentru ecare nod. O asemenea solut ie nu este realizabil a practic la scar a mondial a. Din aceast a cauz a, adresele se aloc a institut iilor doritoare n blocuri de adrese, ecare bloc av and un prex unic, ntocmai ca n cazul subret elelor. Un bloc de adrese se aloc a unei subret ele sau grup de subret ele interconectate care apar, din restul Internetului, ca o singur a subret ea. Din afara subret elei corespunz atoare unui bloc, toate pachetele destinate adreselor din bloc sunt dirijate identic, conform unei reguli care are ca prex prexul blocului. In tabela de dirijare a unui nod oarecare din Internet va necesar astfel c ate o regul a pentru ecare bloc, si nu c ate o regul a pentru ecare nod. Pentru stabilirea dimensiunilor blocurilor, init ial adresele IP versiunea 4 au fost mp art ite n clase : A: Adresele cu prexul 0.0.0.0/1 au fost mp art ite n 128 blocuri alocabile, ecare bloc av and c ate 224 adrese. Lungimea prexului unui bloc este de 8 bit i.

c 2008, Radu-Lucian Lup sa


302 10.2. Protocolul IP

B: Adresele cu prexul 128.0.0.0/2 au fost mp art ite n 16384 blocuri de c ate 65536 adrese. Prexul unui bloc este de 16 bit i. C: Adresele cu prexul 192.0.0.0/3 au fost mp art ite n 221 blocuri de c ate 256 adrese. Lungimea prexului unui bloc este de 24 de bit i. Ideea mp art irii ntre clasele A, B si C era aceea ca, d andu-se o adres a IP, s a se poat a determina lungimea prexului blocului din care face parte. Acest lucru simplic a mult calcularea tabelelor de dirijare si chiar c autarea n tabela de dirijare a regulii aplicabile. Imp art irea n clase s-a dovedit prea inexibil a. Pe de o parte, mp art irea este inecient a, duc and la alocarea c ate unui bloc de clas a B (adic a 65536 adrese) pentru institut ii care nu aveau nevoie de mai mult de c ateva sute de adrese. Pe de alt a parte, nu exist a nici o corelat ie ntre blocurile de adrese alocate unor institut ii diferite dar din aceea si zon a geograc a; n consecint a, pentru majoritatea ruterelor din Internet este nevoie de c ate o regul a de dirijare pentru ecare institut ie c areia i s-a alocat un bloc de adrese. Ca urmare s-a decis o nou a schem a de alocare a blocurilor de adrese. Noua schem a se nume ste CIDR (engl. Classless InterDomain Routing ) si este descris a n [RFC 1518, 1993]. In schema CIDR, un prex de bloc poate avea orice lungime. O institut ie ce dore ste acces Internet poate solicita alocarea unui bloc de adrese, cu un num ar de adrese egal cu o putere a lui 2. O institut ie care furnizeaz a acces Internet altor institut ii este ncurajat a s a aloce mai departe, din blocul alocat ei, sub-blocuri pentru institut iile c arora le ofer a acces Internet. Astfel, din afara ret elei furnizorului de acces Internet, ret eaua furnizorului mpreun a cu tot i client ii lui se vede ca o singur a subret ea n care toate adresele au acela si prex. CIDR mai prevede o grupare a blocurilor pe continente, astfel nc at pentru un nod aat pe un continent toate (sau majoritatea) adreselor de pe un alt continent s a se dirijeze conform unei singure reguli. Aceast a grupare este aplicabil a doar adreselor care nu erau deja alocate la momentul introducerii CIDR; CIDR nu si-a pus problema realoc arii adreselor deja alocate. Pentru adresele IP versiunea 6 se folose ste numai schema CIDR.

10.2.5. Erori la dirijare si protocolul ICMP


Protocolul ICMP (Internet Control Message Protocol ) are scop diagnosticarea diverselor probleme legate de dirijarea pachetelor IP. Fiind str ans legat de protocolul IP, ICMP are dou a versiuni, ICMP pentru IPv4, descris n [RFC 792, 1981] si numit uneori ICMPv4, si ICMP pentru IPv6, descris n [RFC 2463, 1998] si numit si ICMPv6.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 303

Protocolul const a n transmiterea, n anumite situat ii, a unor pachete ICMP. Un pachet ICMP este un pachet IP n care c ampul protocol are valoarea 1 pentru ICMPv4, respectiv 58 pentru ICMPv6, iar zona de date utile este structurat a conform standardului ICMP. Pachetele ICMP sunt de obicei generate de modulul de ret ea al unui nod, ca urmare a unei erori ap arute n livrarea unui pachet IP. Pachete ICMP mai pot generate si de programe utilizator, prin intermediul socket -urilor de tip SOCK RAW. Astfel de aplicat ii servesc la testarea funct ion arii ret elei. O dat a generat, un pachet ICMP este transmis prin ret ea ca orice alt pachet IP. Ajuns la destinat ie, modulul de ret ea (IP) al nodului destinat ie examineaz a c ampul protocol si, constat and c a este vorba de un pachet ICMP, l livreaz a modulului ICMP al nodului destinat ie. Modulul ICMP trebuie s a e prezent si funct ional n orice nod IP; n implement arile obi snuite este parte a nucleului sistemului de operare al calculatorului ce constituie nodul. Datele utile sunt formatate conform standardului ICMP si ncep cu doi ntregi pe c ate 8 bit i reprezent and tipul si subtipul mesajului ICMP (vezi tabelul 10.4). Formatul restului pachetului depinde de tipul mesajului ICMP; n majoritatea cazurilor, este prezent a o copie a primilor c ateva zeci de octet i din pachetului IP care a dus la generarea pachetului ICMP. Situat iile ce duc la generarea pachetelor ICMP, precum si act iunile ntreprinse de un nod la primirea unui pachet ICMP, sunt descrise n paragrafele urm atoare. 10.2.5.1. Pachete nelivrabile Un nod declar a un pachet nelivrabil dac a: nici o regul a din tabela de dirijare a nodului nu este aplicabil a destinat iei pachetului; sau interfat a de ret ea prin care trebuie trimis pachetul nu este funct ional a sau nu poate livra pachetul destinatarului (destinatarul nu r aspunde). In aceste cazuri, nodul curent trimite un pachet ICMP, av and: adresa sursa: adresa nodului curent, adresa destinat ie: adresa surs a a pachetului nelivrabil, tip: destination unreachable. Pachetul ICMP mai cuprinde antetul pachetului ce nu a putut livrat. Destinatarul pachetului ICMP, care este de fapt sursa pachetului nelivrabil, trebuie s a analizeze antetul pachetului returnat si s a informeze nivelul superior (probabil TCP sau UDP) asupra problemei.

c 2008, Radu-Lucian Lup sa


304 10.2. Protocolul IP

Tip 3 Destination unreachable

Subtip 0 network unreachable 1 host unreachable 3 protocol unreachable 4 fragmentation needed 5 source route failed

Ce semnalizeaz a pachet nelivrabil, conform 10.2.5.1

11 time exceeded

0 TTL exceeded

1 fragment reassembly time exceeded 12 parameter problem 4 source quench 5 redirect

0 1 2 3

network host TOS & network TOS & host

pachet prea mare si agul nu fragmenta setat; vezi 10.2.6.1 pachetul a avut opt iunea dirijare de c atre surs a si ruta specicat a este invalid a. pachetul se a a de prea mult timp n ret ea (probabil cicleaz a), 10.2.5.3 probabil fragment pierdut, 10.2.6.1 pachet neconform cu standardul cerere ncetinire surs a, 10.2.5.4 redirect ionare, 10.2.5.5 cerere ecou, 10.2.5.2 r aspuns ecou, 10.2.5.2

8 echo request 9 echo reply

Tabelul 10.4: Tipuri si subtipuri mai importante de pachete ICMPv4

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 305

10.2.5.2. Diagnosticarea funct ion arii rutelor Testarea funct ion arii comunicat iei la nivel ret ea este un test simplu si extrem de util n g asirea penelor dintr-o ret ea. In acest scop, pe majoritatea sistemelor exist a o comand a utilizator, numit a ping, care testeaz a leg atura dintre nodul curent si nodul specicat. Comanda ping funct ioneaz a prin trimiterea unui pachet ICMP cu tipul echo request (rom. cerere ecou) c atre nodul specicat. Nodul destinat ie al unui pachet echo request r aspunde prin trimiterea napoi (c atre sursa pachetului echo request ) a unui pachet ICMP cu tipul echo reply (rom. r aspuns ecou ). Pachetul echo reply este livrat comenzii ping. Pachetele echo request si echo reply se mai numesc uneori ping si pong. Pachetele cu tipurile ping si pong au prev azute, conform standardului, dou a c ampuri, identicare si nr. secvent a, pe baza c arora nucleul sistemului si comanda ping identic a corespondent ele ntre pachetele ping trimise si pachetele pong recept ionate. Pachetele ping si pong au prev azut si un c amp, de dimensiune arbitrar a, de date utile; scopul acestui c amp este testarea transmiterii pachetelor mari. Pe l ang a comanda ping care testeaz a funct ionarea unei leg aturi, exist a o comand a, traceroute (pe sisteme de tip Unix) sau tracert (pe Windows), care a seaz a adresele ruterelor prin care trece un pachet pentru o anumit a destinat ie. Exist a mai multe metode pentru a aa drumul spre un anumit nod. Metoda utilizat a de comanda traceroute se bazeaz a pe trimiterea, spre acel nod, a unor pachete ping cu valori mici pentru timpul de viat a (vezi 10.2.5.3). Un astfel de pachet parcurge nceputul drumului spre nodul destinat ie, ns a, dup a parcurgerea unui num ar de noduri intermediare egal cu valoarea init ial a a timpului de viat a, provoac a trimiterea napoi a unui pachet ICMP de tip TTL exceeded. Trimit and pachete ping cu diferite valori pentru timpul de viat a, se primesc pachete TTL exceeded de la diferitele noduri de pe traseul spre destinat ie. O alt a posibilitate de-a aa ruta spre un anumit nod este furnizat a de un antet opt ional, standardizat si n IPv4 si n IPv6, care cere ruterelor s a- si scrie ecare adresa n acest antet opt ional. 10.2.5.3. Ciclarea pachetelor IP Este posibil s a existe (temporar) inconsistent e n tabelele de dirijare. De exemplu, se poate ca tabela de dirijare a nodului A s a indice nodul B ca nod urm ator pe ruta c atre C, iar tabela nodului B s a indice ca nod urm ator pe ruta c atre C nodul A. In acest caz, dac a A prime ste un pachet destinat lui

c 2008, Radu-Lucian Lup sa


306 10.2. Protocolul IP

C i-l va trimite lui B, B va pasa pachetul napoi lui A, s. a. m. d. Pentru a preveni ciclarea nelimitat a a pachetelor n astfel de cazuri, n antetul IP este prev azut un c amp numit timp de viat a. Valoarea acestui c amp este init ializat a de c atre nodul surs a al pachetului (valoarea init ial a este de ordinul zecilor) si este sc azut a cel put in cu 1 de c atre ecare nod prin care trece pachetul. Dac a valoarea ajunge la 0, nodul nu mai trimite mai departe pachetul ci l ignor a sau trimite napoi un pachet ICMP cu tipul time exceeded, subtipul time to live (TTL) exceeded (rom. dep a sire timp de viat a ) pentru a semnala situat ia. 10.2.5.4. Congestia In general, prin congestie se nt elege situat ia n care ntr-un nod intr a pachete ntr-un ritm mai rapid dec at poate nodul s a retrimit a pachetele, rezult and de aici o funct ionare proast a a ret elei (vezi 5.3). In cazul congestiei, nodul congestionat poate cere sursei s a reduc a tracul prin trimiterea c atre aceasta a unui pachet ICMP cu tipul source quench. 10.2.5.5. Redirect ionarea Un nod, care prime ste un pachet si constat a c a trebuie trimis mai departe n aceea si subret ea din care a sosit pachetul, poate informa sursa pachetului cu privire la faptul c a pachetul a mers pe o rut a neoptim a. Informarea se face printr-un pachet ICMP cu tipul redirect.

192.168.7.7 192.168.7.1

192.168.1.3 192.168.1.1

192.168.1.9

Spre exterior

Figura 10.3: O ret ea pentru ilustrarea redirect ion arii pachetelor (vezi exemplul 10.8)

Exemplul 10.8: Consider am ret eaua din gura 10.3. Pentru nodurile din

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 307

subret eaua 192.168.1.0/24, ar trebui s a existe n tabela de dirijare: o regul a care s a asocieze prexului 192.168.7.0/24 gateway-ul 192.168.1.3; o regul a indic and ca default gateway adresa 192.168.1.1. In practic a, pentru simplicarea administr arii, se omite congurarea primei reguli pe toate nodurile cu except ia nodului 192.168.1.1. In consecint a, o stat ie din subret eaua 192.168.1.0/24, de exemplu 192.168.1.9, care are de trimis un pachet c atre un nod din subret eaua 192.168.7.0/24, de exemplu c atre 192.168.7.7, va trimite pachetul lui 192.168.1.1 n loc de 192.168.1.3. Nodul 192.168.1.1 trimite mai departe pachetul c atre 192.168.1.3 si, totodat a, trimite un pachet ICMP redirect c atre 192.168.1.9; aceasta din urm a si poate actualiza tabela de dirijare pentru a trimite direct la 192.168.1.3 urm atoarele pachete destinate nodurilor din subret eaua 192.168.7.0/24.

10.2.6. Alte chestiuni privind dirijarea pachetelor


10.2.6.1. Dimensiunea maxim a a pachetelor si fragmentarea Dimensiunea maxim a a unui pachet IP este de 64 KiB. Pe de alt a parte, leg atura direct a ntre dou a noduri, dac a are not iunea de pachet, are o dimensiune maxim a a pachetului, care poate mai mic a dec at dimensiunea maxim a a pachetului IP: de exemplu, un pachet Ethernet are o dimensiune maxim a de 1500 octet i. Dac a un pachet IP de transmis este mai mare dec at dimensiunea maxim a a pachetelor admise de leg atura direct a ntre dou a noduri de pe traseu, exist a urm atoarele act iuni posibile: se face o fragmentare si reasamblare la nivelul leg aturii directe, n mod invizibil fat a de nivelul ret ea; se face o fragmentare si reasamblare la nivelul ret ea (IP); se refuz a livrarea pachetelor IP si se las a n sarcina nivelului superior s a se descurce, eventual furniz andu-i acestuia dimensiunea maxim a acceptabil a a pachetului. Trebuie remarcat c a, n 1981, c and s-a standardizat protocolul Internet, era mult prea mult s a se cear a ec arui nod s a dispun a de c ate 64 KiB de memorie pentru memorarea ec arui pachet. Fragmentarea la nivelul leg aturii directe nu prive ste protocolul IP. Protocolul IP versiunea 6 cere ca nivelul leg aturii directe s a permit a transmiterea pachetelor IP de p an a la 1280 B, recomandabil p an a la 1500 B.

c 2008, Radu-Lucian Lup sa


308 10.2. Protocolul IP

Pentru a permite producerea, de c atre nivelul superior, a unor pachete IP sucient de mici, exist a un protocol pentru aarea dimensiunii maxime a pachetelor ce pot trece prin leg aturile directe. Protocolul este descris n [RFC 1981, 1996]. Protocolul Internet permite si fragmentarea la nivel ret ea a pachetelor. Pentru IP versiunea 4, c ampurile necesare pentru fragmentarea si reasamblarea pachetelor sunt prev azute n antetul standard. De asemenea, exist a un ag, nu fragmenta, care cere ruterelor de pe traseu s a nu ncerce fragmentarea ci n schimb s a abandoneze transmiterea pachetului. Pentru IP versiunea 6, c ampurile privind fragmentarea au fost mutate ntr-un antet opt ional, deoarece este probabil s a nu e utilizate frecvent. Fragmentarea poate f acut a doar de emit atorul pachetului, ruterele de pe traseu ind obligate s a abandoneze transmiterea n cazul n care pachetul este prea mare. Fragmentele sunt pachete IP obi snuite, care se transmit independent unul de altul din punctul n care s-a efectuat fragmentarea. Nodul destinat ie efectueaz a reasamblarea pachetelor. In acest scop se utilizeaz a c ampurile identicare si deplasament si agul mai urmeaz a fragmente. Astfel, un pachet se va asambla din fragmente av and toate aceea si valoare n c ampurile identicare, adres a surs a, adres a destinat ie si protocol. Pachetul asamblat va avea antetul identic cu al fragmentelor (mai put in c ampurile ce controleaz a fragmentarea). Datele utile vor reconstituite din datele utile ale fragmentelor. C ampul deplasament al unui fragment arat a locul datelor utile din fragment n cadrul pachetului (reamintim c a fragmentele, ca orice pachete IP, se pot pierde, pot duplicate si ordinea lor de sosire poate inversat a). Lungimea pachetului este determinat a din faptul c a, n ultimul fragment, agul mai urmeaz a fragmente are valoarea 0. Destinat ia ncearc a reasamblarea unui pachet din momentul n care a primit primul fragment al pachetului. Dac a celelalte fragmente nu sosesc ntr-un interval de timp sucent de scurt, nodul abandoneaz a reasamblarea si trimite napoi un pachet ICMP cu tipul time exceeded, subtipul fragment reassembly time exceeded. 10.2.6.2. Calitatea serviciului Dac a un nod este relativ aglomerat, acesta trebuie s a ia decizii privind prioritatea pachetelor: dac a unele pachete trebuie trimise c at mai repede, fat a de altele care pot tinute mai mult n coada de a steptare; la umplerea memoriei ruterului, care pachete pot aruncate (distruse).

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 309

C ampul tip serviciu din antetul IP cont ine informat ii despre nivelul de calitate a serviciului cerut de emit atorul pachetului; n funct ie de acesta, modulul de ret ea ia deciziile privind ordinea de prioritate a pachetelor.

10.2.7. Congurarea si testarea unei ret ele IP locale


10.2.7.1. Alegerea parametrilor In majoritatea cazurilor, ntr-o ret ea local a, subret elele IP, adic a leg aturile directe ntre nodurile IP, se realizeaz a prin intermediul unor ret ele din familia IEEE 802 (Ethernet sau 802.11). Primul lucru ce trebuie stabilit este alc atuirea subret elelor. In continuare se stabile ste, pentru ecare subret ea IP, prexul de ret ea corespunz ator. Prexul ec arei subret ele trebuie, pe de o parte, s a permit a alocarea unui num ar sucient de adrese nodurilor din subret ea si, pe de alt a parte, s a duc a la alocarea de adrese dintre adresele alocate de furnizorul de acces Internet sau dintre adresele rezervate pentru ret ele private (vezi si 10.7.2 pentru alte considerente privind utilizarea adreselor private). Pentru ecare subret ea IP, nodurile componente trebuie s a fac a parte din acela si VLAN 802.1Q (dac a se denesc VLAN-uri) si ca urmare trebuie s a fac a parte din aceea si ret ea 802 zic a. Aceast a cerint a este determinat a de faptul c a, n cadrul unei subret ele IP, ecare nod trebuie s a poat a comunica cu orice alt nod al subret elei f ar a a implica dirijare la nivel IP; comunicarea trebuie s a e realizat a de nivelul inferior, adic a de ret eaua 802. De notat ns a c a n cadrul aceleia si ret ele IEEE 802, si chiar n cadrul aceluia si VLAN 802.1Q, se pot deni mai multe subret ele IP. Astfel de subret ele lucreaz a independent una de cealalt a si necesit a rutere pentru a legate logic ntre ele. Pentru ca un nod s a e membru n subret elele IP stabilite n aceea si ret ea zic a este sucient s a deneasc a mai multe adrese IP pe aceea si plac a de ret ea (vezi 10.5, n special 10.5.1 pentru detalii). Not a: independent a subret elelor IP de pe acela si VLAN este limitat a de faptul c a subret elele partajeaz a debitul maxim de transmisie si c a un intrus care ar sparge un calculator ar putea avea acces la toate subret elelel IP stabilite pe VLAN-ul sau ret eaua zic a din care face parte calculatorul spart. Congurarea tabelelor de dirijare trebuie s a e f acut a astfel nc at, pentru orice nod surs a si pentru orice nod destinat ie, ecare nod de pe traseul unui pachet s a g aseasc a corect urm atorul nod. In ret elele cu structur a arborescent a ( n care ntre oricare dou a subret ele exist a un singur drum posibil), acest lucru se realizeaz a de regul a astfel: Pentru ecare subret ea se alege, dintre nodurile ce act ioneaz a ca rutere c atre alte subret ele, un default gateway. Acesta se alege de regul a ca

c 2008, Radu-Lucian Lup sa


310 10.2. Protocolul IP

ind nodul din subret ea cel mai apropiat de ie sirea spre restul Internetului. Se obi snuie ste ca nodul ales ca default gateway s a primeasc a adresa IP cea mai mic a din subret ea (adic a adresa n care suxul are valoarea 1). Pe toate nodurile subret elei se congureaz a ca default gateway nodul ales ca default gateway al subret elei. Pentru nodurile care fac parte din mai multe subret ele, se ia default gateway -ul din subret eaua cea mai apropiat a de exterior (astfel un nod nu va avea ca default gateway pe el nsu si). Pe nodul ales ca default gateway pentru o subret ea se vor congura rutele c atre subret elele ,,din subordine subret elele mai dep artate de leg atura spre exterior dec at subret eaua considerat a. Mai not am c a ntr-o tabel a de dirijare static a nu se pot congura, pentru tolerant a la pene, mai multe c ai spre o aceea si destinat ie. Dac a se dore ste a sa ceva este necesar a instalarea unui program de calcul automat al tabelei de dirijare.
Subret ea secretariat 193.0.227.192/27 S1 193.0.227.194 S2 193.0.227.222 Subret ea laboratoare 193.0.224.0/23 L1 193.0.224.2 L2 193.0.224.3 L3 193.0.225.254

eth0: 193.0.224.4 L4 eth1: 193.0.227.225 193.0.227.226 E1 193.0.227.238 E2 Subret ea experimental a eth2: 193.0.224.1 eth1: 193.0.227.193 193.0.227.224/28

G
eth0: 193.226.40.130/255.255.255.240 Spre ret eaua furnizorului

Figura 10.4: Ret ea pentru exemplul 10.9

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 311

Exemplul 10.9: S a consider am c a avem de construit o ret ea ntr-o scoal a. Presupunem c a am obt inut alocarea blocului de adrese 193.0.224.0/22 pentru utilizare n ret eaua proprie si c a ruterul ce asigur a leg atura cu ret eaua furnizorului de acces Internet a primit adresa ( n ret eaua furnizorului) 193.226.40.130 cu masca 255.255.255.240 (prex de 28 de bit i). S a presupunem, de asemenea, c a s-a decis mp art irea ret elei interne n trei subret ele (g. 10.4), respectiv pentru secretariat, laboratorul de informatic a si o ret ea special a pentru experimente. Imp art irea luat a ca exemplu este o mp art ire tipic a din considerente de trac si de securitate: ret eaua experimental a trebuie s a poat a izolat a u sor de restul ret elei, iar secretariatul este separat fat a de tracul si eventual atacurile dinspre laboratorarele de informatic a. Fiecare subret ea este construit a dintr-un num ar de switch-uri Ethernet, access point -uri 802.11 si calculatoarele respective. Switch-urile si access point -urile nu au fost gurate explicit deoarece ele nu sunt vizibile din punctul de vedere al nivelului IP. Pentru conectarea celor trei subret ele mpreun a si la Internet congur am dou a rutere: G, dotat cu trei pl aci de ret ea, care leag a ret eaua secretariatului, ret eaua din laboratoare si ret eaua furnizorului de acces Internet si L4 (probabil amplasat n laborator, pentru a la ndem an a n timpul experimentelor), dotat cu dou a pl aci de ret ea, care leag a ret eaua experimental a de ret eaua din laborator. Odat a stabilite subret elele, s a aloc am adresele. Blocul de adrese disponibile este 193.0.224.0/22, cont in and 1024 de adrese. Putem crea blocuri av and ca dimensiuni puteri ale lui 2: 512, 256, 128, 64, 32, 16, 8 sau 4 adrese. Incepem prin a aloca laboratoarelor un bloc c at mai mare, de 512 adrese (510 utilizabile efectiv), anume 193.0.224.0/23. Din blocul de 512 adrese r amas (193.0.226.0/23), s a aloc am 32 adrese secretariatului si 16 adrese ret elei experimentale. Este bine s a le aloc am c at mai compact, pentru ca dintre adresele nealocate s a p astr am posibilitatea de-a aloca blocuri c at mai mari. Vom aloca cele dou a blocuri de 32 si 16 adrese din ultimul bloc de 64 de adrese din cele 512 libere: 193.0.227.192/27 pentru secretariat si 193.0.227.224/28 pentru ret eaua experimental a. Pentru ecare din cele trei subret ele, exist a o alegere natural a pentru default gateway: G pentru ret eaua secretariatului si pentru ret eaua din laboratoare si, respectiv, L4 pentru ret eaua experimental a. In ecare caz, default gateway -ul este nodul cel mai apropiat de exterior. In ecare subret ea, adresa dat a ruterului cu rol de default gateway este cea mai mic a adres a din acea subret ea.

c 2008, Radu-Lucian Lup sa


312 10.2. Protocolul IP

S a vedem acum cum trebuie congurate tabelele de dirijare. Pentru stat ii, tabelele sunt formate din c ate dou a reguli: o regul a pentru livrarea direct a, care asociaz a prexului subret elei unica interfat a de ret ea, si o regul a implicit a, care asociaz a prexului vid adresa default gateway -ului. Pentru nodul L4 , tabela de dirijare are trei reguli, dou a ind pentru livrarea direct a prin cele dou a interfet e, iar a treia este regula implicit a: 193.0.224.0/23 eth0 ; 193.0.227.224/28 eth1 ; 0.0.0.0/0 193.0.224.1 (prin eth0 ). Pentru nodul G avem 5 reguli: trei reguli de livrare direct a prin cele trei interfet e, o regul a implicit a indic and default gateway -ul ret elei furnizorului de acces Internet si o regul a pentru dirijarea spre subret eaua ,,subordonat a 193.0.227.224/28: 193.226.40.128/28 eth0 ; 193.0.227.192/27 eth1 ; 193.0.224.0/23 eth2 ; 0.0.0.0/0 193.226.40.129 (prin eth0 ). 193.0.227.224/28 193.0.224.1 (prin eth1 ). 10.2.7.2. Congurarea parametrilor de ret ea pe diverse sisteme de operare Pe sistemele Windows, exist a dou a posibilit a ti de congurare: comanda ipconfig ( n mod text) si seria de casete de dialog din Start/ Control panel/ Network/ interfat a. Prin ambele interfet e se realizeaz a at at modicarea parametrilor din modulul IP din nucleul sistemului de operare c at si scrierea lor n Windows registry pentru re nc arcarea lor la repornirea sistemului. Comportamentul de ruter, dac a este dorit, trebuie activat explicit. Pe sistemele de tip Linux congurarea este put in mai complicat a, dar si mult mai exibil a. Comanda ifconfig seteaz a parametrii legat i de interfet ele de ret ea, anume adresa IP si masca de ret ea. Tot comanda ifconfig introduce n tabela de dirijare regulile de livrare direct a (de fapt acesta este motivul pentru care are nevoie de masca de ret ea). Tabela de dirijare se a seaz a si se modic a cu comenzile route sau ip (prima este mai simpl a si se g ase ste pe toate sistemele, a doua este mai complex a si serve ste si altor scopuri). De remarcat c a oprirea unei interfet e de ret ea cu ifconfig duce automat la eliminarea din tabela de dirijare a tuturor regulilor ce au ca tint a

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 313

adrese accesibile prin acea interfat a. Activarea comportamentului de ruter se face cu o comand a sysctl. Comenzile ifconfig, route, ip si sysctl au efect imediat asupra modulului IP din nucleu, dar congur arile respective se pierd la repornirea sistemului. Parametrii de ret ea utilizat i la pornirea sistemului sunt luat i de script-urile de init ializare din ni ste siere text; din p acate, ecare distribut ie de Linux are propriile siere de congurare. De exemplu, Fedora plaseaz a datele n siere n directorul /etc/sysconfig/network-scripts. 10.2.7.3. Testarea si depanarea ret elelor Cel mai util instrument de depanare pentru problemele de conectivitate este comanda ping. Pentru buna funct ionare a acesteia si a comenzii traceroute, este necesar ca, dac a este instalat un ltru de pachete (rewall), acesta s a permit a trecerea pachetelor ICMP cu tipurile echo-request, echoreply, destination unreachable si time exceeded. Primul lucru ce trebuie testat, n cazul unei probleme de conectivitate sau dup a o lucrare mai ampl a la ret ea, este dac a leg aturile directe funct ioneaz a. Acest lucru se face d and comanda ping pentru c ate un vecin din ecare subret ea din care face parte calculatorul de pe care se efectueaz a testul. Dac a ping-ul merge, nseamn a c a leg atura funct ioneaz a (pl acile de ret ea, cablurile, switch-urile si access point -urile de pe traseu) si c a adresele IP si m a stile de ret ea sunt ,,sucient de bune pentru ca nodurile s a e v azute ca f ac and parte din aceea si subret ea. Dac a ping-ul nu merge si pachetele ping si pong nu sunt ltrate, pana trebuie c autat a printre lucrurile enumerate p an a aici. Dac a ping-ul merge pe leg aturile directe, se trece la vericarea leg aturilor ntre subret ele diferite. Dac a o leg atur a indirect a nu funct ioneaz a de si toate leg aturile directe ce ar trebui s a e utilizate funct ioneaz a, problema este de la regulile de dirijare (sau de la un ltru de pachete; de aceea este bine ca pachetele ping si pong s a nu e ltrate). Exist a dou a lucruri u sor de sc apat din vedere aici: faptul c a pentru ca ping-ul s a mearg a este necesar ca dirijarea s a funct ioneze corect n ambele sensuri si faptul c a ntre regulile de dirijare intr a inclusiv regulile de default gateway de pe stat ii. De exemplu, o stat ie care nu are congurat default gateway va putea comunica cu vecinii direct i, dar nu si cu alte calculatoare nici m acar cu default gateway -ul, dac a esre specicat prin alt a adres a dec at cea din aceea si subret ea cu stat ia congurat a. Alt exemplu: la ret eaua din exemplul 10.9, dac a pe nodul G nu se pune regula care asociaz a prexului 193.0.227.224/28 gateway -ul 193.0.224.4, atunci pachetele dinspre subret eaua 193.0.227.224/28

c 2008, Radu-Lucian Lup sa


314 10.2. Protocolul IP

pot s a ias a spre Internet, ns a pachetele dinspre Internet nu trec de nodul G. Un ping executat de pe E1 c atre L4 merge, ns a c atre L2 nu merge. In acest din urm a caz, pachetele ping ajung la L2 , dar pachetele pong sunt trimise de L2 c atre G (conform regulii implicite). G, neav and alt a regul a, aplic a si el regula implicit a si le trimite c atre 193.226.40.129 (default gateway -ul din ret eaua furnizorului, negurat pe desen). De aici pachetele se ntorc napoi spre G, deoarece furnizorul stie c a toat a ret eaua 193.0.224.0/22 este n spatele lui G. Astfel, pachetele pong cicleaz a ntre G si 193.226.40.129.

10.3. Nivelul transport


Aplicat iile nu folosesc direct protocolul IP din mai multe motive: dac a dou a aplicat ii se execut a pe acela si calculator, este necesar ca nucleul sistemului de operare s a determine c arei aplicat ii i este destinat ecare pachet sosit; serviciul oferit direct de nivelul ret ea (pachete ce se pot pierde, pot sosi n alt a ordine si, n anumite cazuri, pot duplicate) este de obicei inadecvat. Adaptarea ntre nevoile aplicat iilor si serviciile oferite de nivelul ret ea IP cade n sarcina nivelului transport. Nivelul transport const a dintr-o component a a nucleului sistemului de operare, la care se adaug a uneori ni ste funct ii de bibliotec a. Componenta nivelului transport situat a n nucleul din sistemului de operare furnizeaz a aplicat iei funct iile sistem din familia socket(). Serviciile oferite aplicat iei prin socket -uri de tip stream sunt implementate utiliz and protocolul TCP. Serviciile oferite prin socket -uri de tip dgram sunt implementate prin protocolul UDP. Modulele ret elei IP si locul modulelor TCP si UDP sunt ar atate n gura 10.5.

10.3.1. Conexiuni cu livrare garantat a: protocolul TCP


Scopul protocolului TCP (Transmission Control Protocol ) este acela de a realiza o conexiune de tip ux de octet i, bidirect ional a, cu livrare garantat a. Protocolul este descris n [RFC 793, 1981]. Mai n detaliu, TCP ofer a: serviciu de tip conexiune, cu cele trei faze, de deschidere conexiune, comunicat ie si nchidere conexiune; trasnport a ux de octet i, adic a emit atorul trimite un sir de octet i, negrupat i n mesaje, de lungime arbitrar a;

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul Nod nal Aplicat ie modulul TCP sau UDP Modul IP Interfat a de ret ea Modulul IP Interfat a de ret ea Interfat a de ret ea Nod intermediar Nod nal Aplicat ie modulul TCP sau UDP Modul IP Interfat a de ret ea 315

Ret ea de nivel inferior (de exemplu, Ethernet)

Ret ea de nivel inferior (de exemplu, Ethernet)

Figura 10.5: Modulele unei ret ele IP. Partea inclus a n sistemul de operare este delimitat a cu linie punctat a.

leg atur a bidirect ional a, adic a ecare din cei doi parteneri de comunicat ie poate trimite date celuilalt; livrare sigur a, adic a octet ii trimi si de emit ator ajung la receptor sigur, f ar a duplicate si n aceea si ordine n care au fost trimi si. Modulul TCP are la dispozit ie, pentru realizarea conexiunilor TCP, facilit a tile oferite de ret eaua IP. 10.3.1.1. Principiul conexiunii TCP Livrarea sigur a este obt inut a pe baza unui mecanism de numerotare si conrmare a pachetelor, a sa cum am v azut n 4.3. Mecanismul este implementat dup a cum urmeaz a. Pentru nceput consider am transmisia unidirect ional a si conexiunea deja deschis a. Zona de date utile a unui pachet IP ce transport a date pentru protocolul TCP cont ine un antet TCP si datele utile TCP. Antetul TCP este descris n tabelul 10.5. Fiec arui octet al uxului de date utile (de transportat de c atre TCP) i se asociaz a un num ar de secvent a ; octet i consecutivi au asociate numere de secvent a consecutive. Fiecare pachet TCP cont ine, n zona de date utile, un sir de octet i utili consecutivi. C ampul num ar de secvent a din antetul TCP cont ine num arul de secvent a al primului octet din datele utile.

c 2008, Radu-Lucian Lup sa


316 10.3. Nivelul transport

Nume c amp Port surs a Port destinat ie Nr. secvent a Nr. conrmare Deplasament date Rezervat Urgent Acknowledge Push Reset Synchronize Finalize Dim. fereastr a Suma de control Pozit ie date urgente Opt iuni

Dim. (bit i) 16 16 32 32 4 6 1 1 1 1 1 1 16 16 16 variabil

Observat ii

pozit ia datelor utile n pachet, dependent de dimensiunea opt iunilor valoarea 0 vezi 10.3.1.11 indic a faptul c a num arul de conrmare este valid arat a c a pachetul trebuie trimis urgent, f ar aa tinut n diverse zone tampon cere nchiderea fort at a a conexiunii cere deschiderea conexiunii cere nchiderea conexiunii vezi 10.3.1.8 suma de control a antetului vezi 10.3.1.11

Tabelul 10.5: Antetul TCP

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 317

Modulul TCP receptor tine evident a num arului de secvent a al ultimului octet primit. La primirea unui pachet TCP, modulul receptor determin a dac a datele utile sunt octet i deja primit i (duplicate), octet i ce vin imediat n continuarea celor primit i p an a n acel moment sau octet i p an a la care exist a octet i lips a (nerecept ionat i nc a din cauza unui pachet pierdut sau nt arziat). Octet ii primit i n continuarea celor deja primit i sunt pu si ntr-o coad a pentru a livrat i aplicat iei la cererea acesteia. La primirea unui pachet TCP, receptorul trimite napoi un pachet TCP de conrmare. Un pachet TCP de conrmare are n antetul TCP agul acknowledge setat si n c ampul num ar de conrmare num arul de secvent a al urm atorului octet a steptat de la emit ator. Un pachet cu num ar de conrmare n informeaz a emit atorul c a tot i octet ii cu numere de secvent a mai mici sau egale cu n 1 au fost primit i de receptor si nu mai trebuie retransmi si. Emit atorul retransmite octet ii neconrmat i. Datele utile, furnizate de aplicat ie emit atorului, sunt p astrate ntr-o zon a tampon si tinute acolo p an a la conrmarea primirii lor de c atre receptor. Datele trimise si neconrmate ntr-un anumit interval de timp se retransmit. Datele noi intrate n zona tampon sunt trimise cu un nou pachet. Dac a un pachet nu este conrmat si ntre prima trimitere si momentul retrimiterii au mai sosit date de la aplicat ie, emit atoul poate la retrimitere s a concateneze datele vechi neconrmate cu cele noi. Exemplul 10.10: In gura 10.6 este prezentat a (simplicat) o parte dintr-un schimb de pachete corespunz ator unei conexiuni TCP. Presupunem c a aplicat ia surs a are de trimis sirul abcdefghi, si c a acesta este pasat modulului TCP emit ator n etape, nt ai sirul abcd, apoi efg, h si n nal i. Mai presupunem conexiunea TCP deja deschis a si num arul curent de secvent a 10. S a analiz am put in schimbul de pachete: Emit atorul trimite un prim pachet, cu num ar de secvent a 10 si date utile sirul de 4 octet i abcd. Ace sti 4 octet i au numere de secvent a respectiv 10, 11, 12 si 13; primul dintre acestea este scris n c ampul num ar de secvent a al antetului TCP. La primirea acestui pachet, receptorul r aspunde cu un pachet de conrmare, cu num arul de conrmare 14 (acesta este urm atorul num ar de secvent a a steptat). Emit atorul trimite acum urm atorul pachet de date, cu num arul de secvent a 14 si date utile efg. Presupunem c a acest pachet se pierde. Ca urmare a primirii de la aplicat ia surs a a urm atorului octet, h, emi t atorul TCP trimite imediat urm atorul pachet, cu num arul de secvent a

c 2008, Radu-Lucian Lup sa


318 10.3. Nivelul transport

Surs a abcd

Emit ator TCP secv.=10 abcd

Receptor TCP conrm =14

Destinat ie abcd

efg secv.=14 h secv.=17 efg h conrm =14 i secv.=14 efghi efghi conrm =19 secv.=14 efghi conrm =19
Figura 10.6: O secvent a de pachete TCP schimbate ntre emit ator (st anga) si receptor (dreapta); vezi exemplul 10.10.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 319

17 si date utile h (presupunem c a emit atorul nu utilizeaz a algoritmul Nagle, 10.3.1.10). La primirea acestui pachet (cu num ar de secvent a 17), receptorul nu l poate conrma deoarece nu a primit numerele de secvent a 1416; dac a n acest moment receptorul ar trimite un pachet cu num ar de conrmare 18, emit atorul ar crede c a toate numerele de secvent a p an a la 17 inclusiv au fost primite si nu ar mai retrimite niciodat a numerele de secvent a 1416. Ca urmare, receptorul are dou a posibilit a ti: s a ignore pachetul primit (adic a s a nu trimit a nici un pachet napoi) sau s a retrimit a num arul de conrmare 14; n exemplul de fat a am considerat a doua variant a. Presupunem acum c a pe de o parte a expirat time-out-ul emit atorului pentru numerele de secvent a 1417 si pe de alt a parte c a a primit de la aplicat ia surs a urm atorul octet (i). Emit atorul mpacheteaz a acum tot ce are de (re)trimis ntr-un singur pachet si trimite num arul de secvent a 14 si datele utile efghi. Receptorul conrm a pachetul primit, trimit and num arul de conrmare 19. Presupunem c a pachetul de conrmare respectiv se pierde. Emit atorul retrimite pachetul anterior, dup a expirarea time-out-ului de la trimiterea lui. Receptorul constat a c a a primit un duplicat al datelor precedente, ns a retrimite conrmarea cu num arul 19. Netrimiterea n acest moment a conrm arii ar duce la repetarea la innit de c atre emit ator a pachetului precedent. De notat c a, de si receptorul prime ste un duplicat, emit atorul nc a nu stie de primirea datelor de c atre receptor. In continuarea schimbului de pachete ilustrat, nu se vor mai trimite pachete p an a ce aplicat ia surs a nu va da emit atorului TCP noi date de transmis. Am presupus p ana aici c a numerele de secvent a sunt numere naturale care pot cre ste nedeterminat de mult. In realitate, numerele de secvent a sunt reprezentate (vezi tabelul 10.5) pe 32 de bit i. Cum un num ar de secvent a este asociat unui octet transmis, rezult a c a exist a numere de secvent a distincte doar pentru 4 GiB de date; dup a aceea numerele de secvent a ncep s a se repete. Aceasta nu era o problem a n anii 80, deoarece la 10 Mbit/s repetarea unui num ar de secvent a apare cel mai repede dup a aproape o or a, timp n care este put in probabil s a mai existe n ret ea un pachet vechi cu acela si num ar de secvent a. Intr-o ret ea cu debit de 1 Gbit/s, se pot transmite 4 GiB n 34 secunde, ceea ce face foarte posibil a o confuzie ntre un pachet care s-a ,, ncurcat prin ret ea timp de 34 s si un pachet nou care poart a informat ie situat a, n cadrul conexiunii, 4 GiB mai ncolo, si are acela si num ar de secvent a.

c 2008, Radu-Lucian Lup sa


320 10.3. Nivelul transport

Eliminarea riscului de confuzie ntre pachete la debite mari de transmisie a datelor se realizeaz a, conform [RFC 1323, 1992], prin introducerea n antetul TCP a unui c amp opt ional cuprinz and un marcaj de timp. Metoda se aplic a doar la comunicat ia ntre module TCP care implementeaz a RFC 1323. In cazul n care unul din modulele TCP nu implementeaz a RFC 1323, modulele TCP vor avea grij a s a nu repete un num ar de secvent a mai devreme de c ateva minute, oprind efectiv transmisia la nevoie. 10.3.1.2. Comunicat ia bidirect ional a Cele dou a sensuri de comunicat ie ale unei conexiuni TCP funct ioneaz a (aproape) complet independent. Numerele de secvent a utilizate pe cele dou a sensuri evolueaz a independent. Totu si, datele utile pentru un sens sunt plasate n acela si pachet TCP cu conrmarea pentru cel alalt sens. Astfel, ecare pachet TCP cont ine ntotdeauna date pentru un sens si conrmare pentru cel alalt sens. Dac a este necesar a transmiterea unor date, dar nu si a unei conrm ari, n c ampul num ar de conrmare se repet a ultimul num ar de conrmare transmis. Dac a este necesar s a se transmit a doar o conrmare, f ar a date utile pentru cel alalt sens, atunci zona de date utile se face de dimensiune 0 iar n c ampul num ar de secvent a se pune num arul de secvent a al urm atorului octet ce va transmis. 10.3.1.3. Deschiderea si nchiderea conexiunii Pentru ecare sens de comunicat ie se consider a c ate doi octet i ctivi: un octet de pornire aat naintea primului octet util al datelor transmise si un octet de ncheiere aat dup a ultimul octet al datelor utile. Ace sti octet ii ctivi au asociate numere de secvent a ca si c and ar octet i obi snuit i. Ei nu sunt transmi si n zona de date utile; prezent a lor ntr-un pachet este semnalizat a prin setarea agurilor synchronize si respectiv nalize din antetul TCP. Astfel, dac a un pachet TCP are agul synchronize setat, num arul de secvent an si zona de date utile cont in and k octet i, nseamn a c a pachetul transmite k +1 octet i dintre care primul, cu num arul de secvent a n, este octetul ctiv de pornire, urmat de cei k octet i din zona de date utile, cu numere de la n + 1 la n + k . Init iatorul unei comunicat ii TCP trimite un pachet TCP cont in and un octet ctiv de pornire, f ar a a seta agul acknowledge (acesta este singurul pachet ce nu are agul acknowledge setat) si pun and o valoare arbitrar a (care va ignorat a la destinat ie) n c ampul num ar de conrmare.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 321

Num arul de secvent a al octetului ctiv de pornire este la alegerea init iatorului comunicat iei. Receptorul pachetului init ial r aspunde, dac a dore ste s a accepte conexiunea, printr-un pachet TCP care, pe de o parte, conrm a pachetul de init iere primit, iar pe de alt a parte cont ine la r andul lui un octet ctiv de pornire. Fiecare parte consider a conexiunea deschis a n momentul n care sunt satisf acute simultan condit iile: octetul ctiv de pornire trimis de ea a fost conrmat; a primit un octet ctiv de pornire de la partener. Fiecare parte poate trimite date nainte de a dispune de o conexiune deschis a; datele primite nainte de momentul n care conexiunea este deschis a nu pot livrate aplicat iei p an a la deschiderea complet a a conexiunii. Inchiderea conexiunii se face separat pe ecare sens de comunicat ie. Marcarea nchiderii unui sens se face trimit and un octet ctiv de ncheiere. Dup a trimitera octetului de ncheiere este interzis s a se mai trimit a date noi. Ca urmare, orice pachete (de conrmare) trimise de partea care a nchis conexiunea vor avea ca num ar de secvent a num arul imediat urm ator octetului ctiv de ncheiere si date utile vide. Octetul ctiv de ncheiere se conrm a normal. O conexiune poate funct iona oric at de mult timp cu un sens nchis. Nr. pachet 1 2 3 4 5 6 7 8 9 10 Sens AB AB AB AB AB AB AB AB AB AB Nr. secv. 123 25 124 26 127 26 26 130 29 130 Nr. conrm. 0 124 26 127 26 130 130 29 130 30 Flaguri syn syn,ack ack ack ack,n ack ack ack ack,n ack Date utile abc de xyz

Tabelul 10.6: Un exemplu de schimb de pachete n cadrul unei conexiuni. Vezi exemplul 10.11.

Exemplul 10.11: Un exemplu de schimb de pachete n cadrul unei conexiuni este dat n tabelul 10.6.

c 2008, Radu-Lucian Lup sa


322 10.3. Nivelul transport

Pentru a urm ari u sor schimbul de pachete, s a remarc am c a A trimite lui B un num ar de 7 octet i din care 2 ctivi, ,, syn abcde n , cu numerele de secvent a de la 123 la 129 inclusiv, iar B trimite lui A un num ar de 5 octet i din care 2 ctivi, ,, syn xyz n , cu numerele de secvent a de la 25 la 29 inclusiv. Fiecare pachet care transport a octet i numerotat i, indiferent dac a ace stia sunt date utile sau octet i ctivi syn sau n , trebuie conrmat. Pachetele ce cont in doar num arul de conrmare nu se conrm a. Din punctul de vedere a lui A, conexiunea este complet deschis a la primirea pachetului nr. 2; din punctul de vedere al lui B conexiunea este complet deschis a la primirea pachetului 3. Dup a trimiterea pachetului 5, A nu mai are voie s a trimit a date noi; poate doar s a repete datele vechi (dac a nu ar primit pachetul 6 ar trebuit s a retrimit a pachetul 5) si s a trimit a conrm ari. B consider a conexiunea complet nchis a dup a primirea pachetului 10 (a primit un n de la A si a trimis si i s-a conrmat n -ul propriu). A poate considera de asemenea conexiunea complet nchis a dup a trimiterea pachetului 10, ns a mai trebuie s a p astreze un timp datele despre conexiune pentru cazul n care pachetul 10 s-ar pierde si B ar repeta pachetul 9. O problem a special a legat a de nchiderea conexiunii este problema determin arii duratei de la nchiderea conexiunii p an a la momentul n care datele asociate conexiunii nu mai sunt necesare si memoria asociat a poate eliberat a. Din punctul de vedere al unui modul TCP, conexiunea este nchis a n momentul n care sunt ndeplinite condit iile: modulul TCP a trimis octetul special de ncheiere, modulul TCP a primit conrmarea propriului octet de ncheiere, modulul TCP a primit un octet special de ncheiere de la partener. Dup a nchiderea conexiunii din punctul de vedere al modulului TCP local, exist a nc a posibilitatea ca modulul TCP partener s a nu primeasc a conrmarea modulului TCP local pentru octetul special de nchidere trimis de modulul TCP partener). Urmarea este c a modulul TCP partener nu consider a nchis a conexiunea (conform regulilor de mai sus) si retrimite octetul special de ncheiere p an a la conrmarea acestuia. Modulul TCP local ar trebui s a p astreze informat iile despre conexiune p an a c and modulul TCP partener prime ste conrmarea octetului s au de ncheiere. Din p acate, determinarea acestui moment este imposibil a, deoarece din acel moment modulul TCP partener nu va mai trimite nici un pachet (conexiunea ind nchis a). Ca solut ie de compromis, protocolul TCP prevede p astrarea datelor despre conexiune un anumit interval de timp (de ordinul c atorva minute) dup a nchiderea

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 323

conexiunii. 10.3.1.4. Alegerea num arului init ial de secvent a Num arul de secvent a al octetului ctiv de pornire, numit si num ar init ial de secvent a (engl. initial sequence number, ISN ), trebuie ales n a sa fel nc at s a nu poat a exista confuzie ntre numere de secvent a dintr-o conexiune veche si cele din conexiunea curent a ntre acelea si dou a p art i (acelea si adrese IP si numere de port). Ideal, modulul TCP ar trebui s a p astreze datele despre o conexiune at at timp c at mai pot exista n ret ea pachete apart in and conexiunii. In aceste condit ii, la redeschiderea unei conexiuni ntre acelea si dou a p art i, ecare parte poate atribui octetului ctiv de pornire num arul de secvent a imediat urm ator num arului de secvent a asociat octetului ctiv de ncheiere al conexiunii precedente. In acest caz, putem privi conexiunile succesive ca ind o singur a conexiune n care transmisiile sunt delimitate prin secvent e de octet i ctivi n syn . Dac a de la precedenta conexiune a trecut destul timp pentru ca pachetele corespunz atoare s a nu mai existe n ret ea (e au ajuns la destinat ie, e au fost distruse ca urmare a dep a sirii timpului de viat a), alegerea num arului init ial de secvent a poate f acut a oricum. Exist a c ateva considerente, enumerate mai jos, care duc la utilitatea unor alegeri particulare. Un prim considerent este ngreunarea unor atacuri de tip IP spoong. Un atac IP spoong (numiu uneori simplu spoong ) const a n a trimite pachete IP n care se falsic a valoarea c ampului adres a surs a. Scopul unui astfel de atac este de-a n sela un mecanism de autenticare bazat pe adresa IP a partenerului de comunicat ie sau de-a deturna o conexiune TCP deja autenticat a. In acest din urm a caz, adversarul las a un client legitim s a se conecteze la server si, dup a efectuarea autentic arii, adversarul injecteaz a un mesaj destinat serverului si av and ca adres a surs a adresa clientului autenticat. Mesajul este interpretat de server ca provenind de la clientul autenticat si, dac a cont ine o comand a autorizat a pentru client, comanda este executat a, de si n realitate provine de la adversar. De multe ori, ntr-un atac de tip spoong adversarul nu are si posibilitatea de-a determina ruterele de pe traseu s a-i permit a recuperarea pachetelor de r aspuns. Un atac n astfel de condit ii se nume ste blind spoong. Un atac blind spoong se contracareaz a foarte simplu gener and aleator num arul init ial de secvent a, adic a f ac and ca valoarea lui s a e imprevizibil a pentru adversar. Cum adversarul trebuie s a emit a pachete cu numere de secvent a si de conrmare valide, n cazul acestor m asuri adversarul trebuie

c 2008, Radu-Lucian Lup sa


324 10.3. Nivelul transport

efectiv s a ghiceasc a num arul de secvent a. Un al doilea considerent este prevenirea atacului syn ooding. Intrun astfel de atac, adversarul trimite multe pachete TCP de deschidere de conexiune (cu agul synchronize pe 1 si acknowledge pe 0), cu diferite valori pentru c ampurile port surs a si uneori adres a surs a (este posibil ca adversarul s a execute si IP spoong ). Ma sina atacat a trebuie s a aloce o structur a de date n care s a memoreze datele despre conexiune p an a la terminarea conexiunii sau la expirarea unui time-out. Adversarul ns a nu mai trimite nimic pe nici una dintre conexiuni, mult umindu-se s a tin a ocupat a memorie pe ma sina atacat a; este vorba deci de un atac denial of service. Contram asura, numit a syn cookie, se realizeaz a astfel. O ma sin a care a steapt a cereri de conectare genereaz a aleator un sir de bit i, pe care l tine secret. La primirea unei cereri de conectare, ma sina alege, ca num ar de secvent a init ial (pentru sensul dinspre ea spre init iatorul conexiunii), valoarea unei funct ie de dispersie criptograc a, aplicat a asupra num arului de secvent a al pachetului primit concatenat cu un sirul secret. Apoi, ma sina tint a a conexiunii trimite pachetul de r aspuns, accept and num arul de secvent a propus de init iatorul conexiunii si cont in and num arul de secvent a astfel generat. Ma sina tint a nu nregistreaz a nc a, n tabela de conexiuni, conexiunea astfel deschis a. In cazul unei conexiuni reale, la trimiterea urm atorului pachet de c atre init iatorul conexiunii, ma sina tint a veric a num arul de secvent a folosind aceea si funct ie de dispersie, dup a care memoreaz a conexiunea n tabelul de conexiuni. In acest fel, o conexiune creat a dintr-un atac syn ooding nu ocup a memorie, n schimb o conexiune legitim a se poate deschide. 10.3.1.5. Inchiderea fort at a a conexiunii Refuzul cererii de deschidere a unei conexiuni se face trimit and ini tiatorului un pachet TCP cu agul reset setat. La primirea unui pachet care nu corespunde unei conexiuni deschise (adic a pachetul este primit ntr-un moment n care conexiunea este nchis a si pachetul nu are agul synchronize setat), modulul TCP trebuie s a trimit a napoi un pachet cu agul reset setat. Ideea este ca, dac a nodul curent a c azut si a fost repornit, pierz and evident a conexiunilor deschise, s a informeze tot i partenerii de comunicat ie care ncearc a s a continue comunicat ia cu el c a datele despre comunicat ie au fost pierdute. Un nod care a primit un pachet cu agul reset ca r aspuns la un pachet TCP pentru o conexiune trebuie s a abandoneze fort at conexiunea. Aplicat ia ce utilizeaz a acea conexiune este informat a, printr-un cod de eroare, la urm atoarea operat ie privind conexiunea.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 325

Alte situat ii care conduc la abandonarea unei conexiuni sunt: dep a sirea unui num ar de ncerc ari de trimitere de date f ar a a primi conrmare; primirea unui pachet ICMP cu tipul destination unreachable. Timpul c at emit atorul ncearc a retrimiterea pachetelor neconrmate, p an a n momentul n care declar a leg atura c azut a, este de ordinul zecilor de secunde p an a la 23 minute. Ca urmare, ntreruperea pe termen scurt a unui cablu de ret ea nu duce la ntreruperea conexiunilor TCP ce utilizau acel cablu. De asemenea, dac a un nod sau o leg atur a a ret elei IP cade, dar r am ane un drum alternativ ntre capetele conexiunii TCP, iar nivelul ret ea reface tabelele de dirijare pentru a folosi acel drum alternativ si acest lucru se nt ampl a sucient de repede pentru ca modulul TCP s a nu declare conexiunea c azut a, atunci conexiunea TCP continu a s a funct ioneze normal, cu pachetele IP circul and pe noua rut a. Dac a, pe o conexiune TCP deschis a, toate datele vechi au fost trimise si conrmate, atunci nu se transmit pachete IP c at a vreme nu sunt date utile noi de transmis. Ca urmare, dac a aplicat iile nu comunic a vreme ndelungat a pe o conexiune TCP deschis a, c aderea leg aturii sau a unuia din capete nu este detectat a de cel alalt cap at dec at n momentul n care acesta are de transmis date. Dac a acel cap at nu are de transmis date vreme ndelungat a, de exemplu c ateva ore sau chiar zile, conexiunea r am ane deschis a din punctul de vedere al modulului TCP local. Pentru a evita o astfel de situat ie, modulul TCP poate instruit via un apel fcntl() asupra socket-ului corespunz ator conexiunii s a trimit a din c and n c and c ate un pachet f ar a date utile, doar pentru a solicita o conrmare de la cel alalt cap at. Opt iunea aceasta se nume ste keep alive (rom. ment ine n viat a ), de si mai degrab a ar trebui numit a testeaz a c a mai este n viat a. Utilizarea opt iunii keep alive are si un dezavantaj: c aderea temporar a a ret elei are sanse mai mari s a duc a la abandonarea conexiunii. 10.3.1.6. Identicarea aplicat iei destinat ie Pentru a identica aplicat ia c areia i sunt destinate datele primite, conexiunile TCP sunt identicate printr-un cvadruplet format din adresele IP ale celor dou a capete si porturile celor dou a capete. Porturile sunt numere n intervalul 165535 utilizate pentru a deosebi conexiunile stabilite ntre acelea si adrese IP. Sistemul de operare tine evident a conexiunilor deschise. Pentru ecare conexiune, sistemul ret ine adresa IP local a, portul local, adresa IP a celuilalt cap at si portul de la cel alalt cap at. De asemenea, sistemul ret ine aplicat ia care a deschis conexiunea.

c 2008, Radu-Lucian Lup sa


326 10.3. Nivelul transport

La primirea unui pachet TCP, sistemul ia adresele surs a si destinat ie din antetul IP si portul surs a si destinat ie din antetul TCP. Pe baza acestora sistemul identic a conexiunea c areia i apart ine pachetul. De aici sistemul reg ase ste pe de o parte informat iile necesare gestion arii conexiunii (zone tampon, numere de secvent a, etc) si pe de alt a parte aplicat ia c areia i sunt destinate datele. 10.3.1.7. Corespondent a ntre funct iile socket() si act iunile modulului TCP Funct ionalitatea modulului TCP este oferit a programului utilizator prin intermediul funct iilor sistem din familia socket(). Funct iile socket() si modul lor de utilizare ntr-o aplicat ie au fost studiate n 8.1. Aici vom ar ata leg atura dintre apelarea de c atre o aplicat ie a funct iilor socket si act iunile modulului TCP de expediere si de recept ie a unor pachete. Apelul socket(PF INET, SOCK STREAM, 0) are ca efect doar crearea unei structuri de date pentru apelurile ulterioare. Pe partea de server, apelurile bind() si listen() au, de asemenea, ca efect doar completarea unor informat ii n structurile de date. Dac a aplicat ia a apelat direct listen() f ar a a apelat nainte bind(), sistemul (modulul TCP) i aloc a un port liber. La primirea unui pachet de deschidere conexiune (cu agul synchronize setat) pentru o adres a si un num ar de port pentru care se a steapt a deschiderea unei conexiuni (a fost deja apelat listen()), modulul TCP execut a schimbul de pachete de deschidere a conexiunii. Dup a aceea, modulul TCP a steapt a ca aplicat ia s a apeleze accept() pentru a-i putea semnaliza deschiderea unei noi conexiuni. In cazul n care nu se a steapt a deschiderea unei conexiuni, modulul TCP trimite un pachet cu agul reset. Dac a, n adresa local a dat a funct iei bind(), s-a specicat constanta a ca INADDR ANY, este acceptat un pachet de deschidere de conexiune ce specic adres a destinat ie oricare dintre adresele nodului curent. Dac a n apelul bind() s-a specicat o anumit a adres a a nodului curent, este acceptat a deschiderea conexiunii doar dac a adresa destinat ie a pachetului de deschidere este adresa specicat a n apelul bind(). Pe partea de client, apelul connect() este cel care determin a trimiterea unui pachet cu agul synchronize. Funct ia connect() a steapt a e deschiderea complet a a conexiunii (conrmarea pachetului syn plus un pachet syn de la server), e o semnalizare de eroare (un pachet TCP cu agul reset sau un pachet ICMP). In caz favorabil, funct ia connect() returneaz a 0, n caz defavorabil semnalizeaz a eroarea survenit a.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 327

10.3.1.8. Controlul uxului TCP are si rol de control al uxului, adic a de-a ncetini emit atorul n cazul n care receptorul nu este capabil s a proceseze datele sucient de repede. O metod a extrem a de control al uxului este neconrmarea de c atre receptor a octet ilor ce nu pot procesat i. Metoda aceasta are ns a dezavantajul c a determin a emit atorul s a retrimit a octet ii respectivi, gener and trac inutil. Metoda utilizat a de TCP este ca receptorul s a semnalizeze emit atorului, prin valoarea c ampului dimensiune fereastr a din antetul TCP, num arul de octet i pe care receptorul este capabil s a-i recept ioneze n acel moment. Emit atorul nu va trimite mai mult i octet i dec at dimensiunea ferestrei trimis a de receptor. Exist a o singur a except ie: dac a receptorul a semnalizat dimensiunea ferestrei 0, emit atorul poate trimite un singur octet; aceasta se face pentru cazul n care receptorul a anunt at o fereastr a de dimensiune 0 si apoi a anunt at o fereastr a mai mare dar pachetul ce anunt a m arirea ferestrei s-a pierdut. Pe l ang a mecanismul sus-ment ionat, emit atorul TCP reduce debitul de date emise si n cazul n care constat a pierderi de pachete. Ideea este c a pachetele IP se pot pierde e ca urmare a erorilor la nivel zic, e ca urmare a congestiei nodurilor intermediare. Cu except ia transmisiei radio, erorile la nivel zic sunt rare, astfel nc at pierderile de pachete IP se datoreaz a n majoritatea cazurilor congestiei nodurilor. 10.3.1.9. Stabilirea time-out-ului pentru retransmiterea pachetelor A sa cum am v azut, pachetele TCP neconrmate ntr-un anumit interval de timp sunt retransmise. Valoarea aleas a a timpului dup a care se face retransmiterea inuent eaz a performant ele transferului de date. O valoare prea mic a duce la repetarea inutil a a unor pachete ce ajung la destinat ie ns a ntrun timp mai lung si, ca urmare, la generarea unui trac inutil. O valoare prea mare duce la detectarea cu nt arziere a pachetelor pierdute. Modulul TCP ncearc a s a estimeze durata de timp necesar a unui pachet emis s a ajung a la destinat ie, s a e procesat si s a se ntoarc a si s a se recept ioneze conrmarea. Acest timp se nume ste timp dus- ntors (engl. roundtrip time, RTT ). Timpul dus- ntors nu este x, ci depinde de perechea emit atorreceptor considerat a si de nc arcarea ret elei n momentul considerat. Modulul TCP estimeaz a statistic media si dispersia timpului dus- ntors pentru ecare conexiune deschis a si xeaz a timpul dup a care se retrimit pachetele neconrmate la o valoare ceva mai mare dec at media timpului dus- ntors.

c 2008, Radu-Lucian Lup sa


328 10.3. Nivelul transport

10.3.1.10. Algoritmul lui Nagle si optimizarea num arului de pachete La primirea datelor de la programul aplicat ie, prin apelul sistem send(), modulul TCP poate trimite imediat un pachet sau poate a stepta; a steptarea este util a dac a astfel se pot plasa mai multe date n acela si pachet IP. Algoritmul lui Nagle prevede c a, la primirea unor date de la utilizator prin send(): dac a nu sunt date trimise si neconrmate, sau dac a datele noi sunt sucient de mari pentru a umple un pachet, datele se trimit imediat; altfel, modulul TCP a steapt a p an a la primirea conrm arii sau expirarea timpului de retransmitere, si abia atunci trimite datele primite ntre timp de la aplicat ie. O alt a optimizare const a n a nt arzia c ateva fract iuni de secund a trimiterea conrm arii pentru un pachet TCP primit. Ideea este c a, dac a aplicat ia care recept ioneaz a datele din acel pachet are de trimis date ca r aspuns la datele primite, datele ce constituie r aspunsul s a e trimise n acela si pachet cu conrmarea datelor primite. 10.3.1.11. Trimiterea datelor speciale (out of band) TCP prevede un mecanism de transmitere, n cadrul uxului normal de date, a unor date cu un marcaj special. Mecanismul este ntruc atva echivalent cu a avea dou a uxuri de date ata sate conexiunii, unul pentru datele ,,obi snuite si cel alalt pentru date ,,speciale. Datele speciale poart a denumirea, n terminologia angloamerican a, out of band data (OOB ). O posibil a utilizare este urm atoarea: presupunem o aplicat ie care transfer a siere. Presupunem c a emit atorul trimite mai nt ai lungimea sierului si apoi cont inutul. Dac a utilizatorul lanseaz a trimiterea unui sier mare (s a zicem c a tiva gigaoctet i) si apoi se r azg ande ste si dore ste s a abandoneze operat ia, partea de emit ator a aplicat iei nu poate semnaliza receptorului n nici un fel abandonarea transmiterii. Aceasta deoarece octet ii transmi si sunt interpretat i de receptor ca ind cont inutul sierului. Aici intervin datele cu marcajul special (out of band ): emit atorul trimite cont inutul sierului ca date normale, iar o eventual a semnalizare de abandonare a transferului este trimis a ca date speciale. Datele speciale se consider a c a trebuie s a e livrate c at mari repede cu putint a aplicat iei destinat ie. In terminologia TCP, ele sunt denumite date urgente (engl. urgent data ). Transmiterea lor se face astfel: datele speciale se plaseaz a ntr-un pachet TCP f ar a a precedate de date normale;

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 329

pachetul respectiv are agul urgent setat; c ampul pozit ie date urgente cont ine dimensiunea datelor speciale r amase de transmis ( n pachetul curent si n urm atoarele). De principiu un pachet cont in and date speciale va avea setat si agul push, care indic a faptul c a modulul TCP receptor ar trebui s a livreze datele c atre aplicat ia destinat ie c at mai repede.

10.3.2. Datagrame nesigure: UDP


Exist a aplicat ii care se descurc a acceptabil cu datagrame nesigure. Pentru acestea, nivelul transport trebuie s a rezolve doar problema g asirii aplicat iei c areia i este destinat a datagrama. Aceast a problem a este rezolvat a de protocolul UDP. Fiec arei aplicat ii ce utilizeaz a UDP i se acord a, de c atre modulul UDP al sistemului de operare local, un port UDP . Un port UDP alocat unei aplicat ii nu va acordat si altei aplicat ii dec at dup a ce este eliberat de prima. O datagram a UDP poart a ca adrese surs a si destinat ie perechi formate din c ate o adres a IP si un num ar de port. Adresa IP este adresa nodului pe care ruleaz a aplicat ia surs a, respectiv destinat ie, iar portul este portul alocat de sistem aplicat iei. O datagram a UDP este construit a dintr-un pachet IP cu identicatorul protocolului UDP n protocol si cu zona de date utile cont in and un antet UDP si datele datagramei UDP. Antelul UDP cont ine portul surs a si portul destinat ie. Adresele IP surs a si destinat ie sunt cele plasate n c ampurile corespunz atoare ale pachetului IP. Deoarece o datagram a UDP trebuie s a e plasat a ntr-un singur pachet IP, dimensiunea datelor utile ale unei datagrame UDP este limitat a de dimensiunea maxim a a pachetului IP. Programul utilizator cere trimiterea unei datagrame UDP prin intermediul apelului sendto() sau sendmsg(). Programul trebuie s a specice adresa destinat ie adresa IP si portul. Adresa surs a este adresa asociat a socket-ului de pe care se emite pachetul. Dac a nu s-a asociat n prealabil o adres a (prin apelul bind()), sistemul aloc a automat un num ar de port liber. Deoarece, conform protocolului UDP, recept ia datagramei trimise nu este conrmat a n nici un fel, funct iile sendto() sau sendmsg() nu au cum s a returneze programului apelant informat ii despre livrarea pachetului. Dealtfel, ambele funct ii se termin a (returneaz a controlul apelantului) nainte ca pachetul s a e efectiv livrat. Funct iile sistem recvfrom() si recvmsg() a steapt a recept ia unei datagrame av and ca adres a destinat ie adresa asociat a socket-ului dat ca argu-

c 2008, Radu-Lucian Lup sa


330 10.3. Nivelul transport

ment. Funct ia returneaz a datele utile din datagram a precum si adresa surs a a datagramei.

10.4. Identicarea nodurilor dup a nume: sistemul DNS


Utilizarea adreselor IP direct de c atre utilizatorii umani este dicil a deoarece: adresele IP sunt greu de tinut minte de c atre oameni; adresele IP sunt legate de topologia ret elei si se schimb a odat a cu aceasta; spre exemplu, dac a o rm a schimb a furnizorul de Internet folosit, adresele stat iilor rmei este probabil s a se schimbe. De fapt, adresele IP sunt similare numerelor de telefon. Ca urmare, este util a o ,,carte de telefon a Internetului. Serviciul numelor de domeniu DNS (engl. Domain Name Service ) este un mecanism ce permite identicarea unui nod de ret ea printr-un nume u sor de memorat de c atre om si care s a e independent de topologia ret elei. DNS este construit ca o baz a de date ce cuprinde nregistr ari ce asociaz a unui nume o adres a IP. Aceast a baz a de date este mp art it a ntre mai multe servere de nume, care pot interogate de oricine. O aplicat ie care dore ste s a comunice si s a foloseasc a nume n loc de adrese IP interogheaz a nt ai ni ste servere de nume, p an a ce a a adresa IP corespunz atoare numelui dat, dup a care lucreaz a cu adresa astfel obt inut a. Baza de date DNS este stocat a distribuit (pe mai multe servere, pentru a nu avea un server supraaglomerat) si redundant (exist a mai multe servere capabile s a r aspund a la o cerere dat a). DNS este proiectat n ideea c a informat iile se citesc frecvent si se modic a rar. Cu ocazia modic arilor se admite s a existe temporar incoerent e un utilizator s a obt in a informat ia nou a n timp ce altul det ine informat ia veche.

10.4.1. Numele de domeniu


Numele de domeniu [RFC 1034, 1987] sunt numele ce pot date nodurilor si altor obiecte, n cadrul DNS. Un nume de domeniu este compus dintr-un sir de componente. Fiecare component a este un sir de caractere; RFC 1034 nu impune restrict ii, ns a recomand a ca ecare component a s a e format a din cel mult 63 de caractere, ce pot litere, cifre sau caracterul minus (-), cu restrict ia ca primul caracter s a e liter a si ultimul caracter s a

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 331

nu e minus. Literele mari sunt echivalente cu literele mici corespunz atoare. Componentele au asociat a o ordine ierarhic a. Scrierea n text a unui nume de domeniu se face scriind componentele, ncep and cu cea mai de jos, din punct de vedere al ierarhiei, si termin and cu cea mai de sus. Dup a ecare component a se scrie un caracter punct (.). In particular, numele vid (format din zero componente) se scrie ,,. (un caracter punct). Exemplul 10.12: In adresa nessie.cs.ubbcluj.ro. componentele sunt, n ordine descresc atoare ierarhic: ro Rom ania, ubbcluj Universitatea Babe s-Bolyai Cluj-Napoca, cs Departamentul de Informatic a (din engl. Computer Science ), nessie numele stat iei. Aceast a scriere este inspirat a din scrierea adreselor po stale, care ncep cu numele destinatarului si se termin a cu tara. In majoritatea cazurilor, aplicat iile accept a specicarea numelor de domenii f ar a punctul nal. In lipsa punctului nal, interpretarea este ns a diferit a. Anume, dac a numele nu este terminat cu punct, aplicat ia va ncerca s a adauge la nume siruri de componente superioare ierarhic dintr-o list a congurat a de administratorul sistemului. Primul nume de domeniu, astfel construit, care exist a n DNS este considerat ca ind semnicat ia numelui dat de utilizator. Exemplul 10.13: Presupunem c a lista de c autare congurat a de administrator pentru un sistem cont ine, n ordine, scs.ubbcluj.ro, cs.ubbcluj.ro si ubbcluj.ro. O c autare pentru numele www va duce la c autarea numelui www.scs.ubbcluj.ro. care va g asit si vor returnate informat iile despre acest nume. O c autare pentru numele www.cs va duce la c autarea, n ordine, a numelor www.cs.scs.ubbcluj.ro., www.cs.cs.ubbcluj.ro. si www.cs.ubbcluj.ro.; acesta din urm a este g asit si c autarea este ncheiat a. Structurarea numelui n mai multe componente serve ste la administrarea ierarhic a a spat iului de nume. O organizat ie care dob ande ste un nume de domeniu poate crea si administra dup a voie numele formate prin ad augare de componente ierarhic inferioare. De exemplu, Universitatea Babe sBolyai din Cluj-Napoca a obt inut numele ubbcluj.ro. . Crearea numelui nessie.cs.ubbcluj.ro. este decizia exclusiv a a Universit a tii Babe s-Bolyai. O institut ie care dore ste un nume de domeniu trebuie s a contacteze institut ia care administreaz a domeniul p arinte si s a cear a alocarea unui nume.

c 2008, Radu-Lucian Lup sa


332 nume: sistemul DNS 10.4. Identificarea nodurilor dupa

Alocarea numelui se pl ate ste e o tax a pl atit a o singur a dat a, e o tax a anual a. Institut ia ce a obt inut numele este responsabil a de ntret inerea unui server de nume (vezi 10.4.3 si 10.4.4) pentru domeniul ce i-a fost alocat. Adesea rmele care ofer a acces Internet ofer a gratuit client ilor nume de domeniu ca subdomenii ale domeniului rmei. Exemplu ipotetic, rma XYNet, posesoarea domeniului xynet.example, ofer a clientului ABC s.r.l. domeniul abc.xynet.example. Din p acate, numele ma sinilor rmei ABC sunt legate n acest caz de furnizorul de acces Internet, iar dac a rma ABC s.r.l. va schimba furnizorul de Internet, va nevoit a s a- si schimbe numele de domeniu ale serverelor sale, ceea ce poate duce la pierderea client ilor ce nu a a noul nume al site-ului rmei. De remarcat c a, de si organizarea ierarhic a a numelor de domeniu seam an a cu organizarea numelor de siere si directoare, nu exist a o restrict ie similar a cu aceea c a ntr-un director nu e permis s a aib a acela si nume un sier si un subdirector. Anume, ca exemplu, numele ubbcluj.ro. si cs.ubbcluj.ro. pot desemna simultan noduri n ret ea.

10.4.2. Structura logic a a bazei de date DNS


S a ignor am deocamdat a problemele legate de implementarea DNS. DNS se prezint a ca un tabel cu cinci coloane: numele de domeniu, tipul, clasa, valoarea si termenul de valabilitate. Tipul si clasa se utilizeaz a pen tru a putea pune n DNS si alte informat ii n afar a de adrese IP. Inregistr arile corespunz atoare adreselor IP au tipul A (de la address =adres a) si clasa IN (de la Internet ). C ampul valoare a unei nregistr ari cu tipul A si clasa IN cont ine adresa IP a nodului cu numele de domeniu dat. DNS permite c autarea unei nregistr ari pentru care s-au specicat numele de domeniu, clasa si tipul. Este permis s a existe mai multe nregistr ari pentru acela si nume, clas a si tip, dac a au valori diferite. Cineva care obt ine prin interogarea DNS mai multe adrese IP pentru un nume dat poate folosi oricare din adrese; acestea se presupune c a sunt ale aceluia si calculator sau ale unor calculatoare ce furnizeaz a servicii echivalente. O list a a tipurilor de nregistr ari DNS mai des utilizate este dat a n tabelul 10.7. Remarc am n mod deosebit tipul CNAME (nume canonic). O nregistrare av and numele nume1, tipul CNAME si valoarea nume2 dene ste nume1 ca pseudonim pentru nume2. In acest caz, nume2 este considerat numele canonic al acelui obiect. Dac a pentru un nume exist a o nregistrare CNAME, nu este permis s a mai existe vreo alt a nregistrare pentru acel nume.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 333

Tip A AAAA CNAME PTR SOA

Valoare adres a IPv4 adres a IPv6 nume de domeniu nume de domeniu date de identicare ale informat iilor despre zon a nume de domeniu nume de domeniu si prioritate

Observat ii adresa corespunz atoare numelui solicitat adresa IPv6 corespunz atoare numelui solicitat ([RFC 3596, 2003]) numele canonic corespunz ator numelui solicitat numele canonic al nodului cu adresa IP solicitat a, vezi 10.4.6 vezi 10.4.5

NS MX

numele canonic al serverului de domeniu pentru zona av and ca r ad acin a numele solicitat serverele de po st a electronic a pentru domeniul solicitat, 11.1

Tabelul 10.7: Tipuri de nregistr ari DNS mai des folosite

Mai mult, numele canonic din c ampul valoare al unei nregistr ari CNAME nu este permis s a apar a ca nume de domeniu n alt a nregistrare CNAME. O aplicat ie care caut a o nregistrare de un anumit tip pentru un nume trebuie s a caute si o nregistrare CNAME pentru acel nume. Dac a g ase ste o nregistrare CNAME, trebuie s a caute o nregistrare cu numele canonic g asit si av and tipul c autat init ial. Valoarea astfel g asit a trebuie utilizat a ca si c and ar fost g asit a pentru numele original.

10.4.3. Imp art irea n domenii de autoritate


Mult imea numelor de domeniu este mp art it a n zone. Pentru ecare zon a exist a unul sau mai multe servere de nume sau server DNS care det in toate nregistr arile corespunz atoare numelor din acea zon a. Privim spat iul de nume ca un arbore n care r ad acina este domeniul r ad acin a si ecare nume are ca p arinte numele obt inut din el prin nl aturarea celei mai din st anga componente. O zon a este o submult ime de nume care, mpreun a cu leg aturile dintre ele, formeaz a un arbore. De remarcat c a r ad acina zonei face parte din zon a. Un server care este responsabil de o zon a trebuie s a det in a toate nregistr arile corespunz atoare numelor din zon a. Faptul c a un nume care ar

c 2008, Radu-Lucian Lup sa


334 nume: sistemul DNS 10.4. Identificarea nodurilor dupa

apart ine zonei nu gureaz a n tabela tinut a de acel server nseamn a c a numele respectiv nu exist a. Din motive de tolerant a la pene, pentru ecare zon a exist a de regul a cel put in dou a servere responsabile. De principiu, tabelele despre o zon a dat a ale serverelor responsabile de acea zon a trebuie s a e identice; pot exista ns a temporar incoerent e ntre tabele cu ocazia modic arilor unor informat ii. Pe l ang a nregistr arile despre zonele pentru care este responsabil, un server de nume trebuie s a mai det in a nregistr ari care s a permit a reg asirea serverelor de nume ale zonelor adiacente zona imediat superioar a ierarhic si zonele imediat subordonate, dac a exist a si a serverelor de nume pentru zona r ad acin a. Aceste nregistr ari se numesc glue records nregistr ari lipici deoarece creaz a leg atura cu zonele nvecinate. Pentru numele r ad acin a al ec arei zone trebuie s a existe urm atoarele nregistr ari: O nregistrare SOA (Start Of Authority ), care cont ine ni ste date administrative despre zon a (vezi 10.4.5); Una sau mai multe nregistr ari NS (Name Server ) care cont in numele serverelor de nume responsabile de zon a. De remarcat c a serverele de nume nu este obligatoriu s a e ele nsele membre ale zonei. Inregistr arile NS ale r ad acinii unei zone mpreun a cu nregistr arile A ale acelor nume sunt ,, nregistr arile lipici ce trebuie tinute de un server cu privire la zonele vecine. Un server poate tine si alte nregistr ari, n afar a de nregistr arile din zonele pentru care este responsabil si de nregistr arile de leg atur a.

10.4.4. Mecanismul de interogare a serverelor


Protocolul utilizat pentru interogarea serverelor de nume este descris n [RFC 1035, 1987]. Un server de nume a steapt a cereri prin datagrame UDP trimise pe portul 53 si prin conexiuni TCP pe portul 53. Clientul trimite cererea nt ai ca datagram a UDP. Dac a r aspunsul este prea lung pentru a ncape ntr-o datagram a UDP atunci clientul repune ntrebarea printr-o conexiune TCP. Interogarea cuprinde numele de domeniu c autat, tipul si clasa. R aspunsul cont ine interogarea si un sir de nregistr ari, mp art ite n trei categorii: nregistr ari din zonele pentru care este responsabil, nregistr ari de leg atur a si alte nregistr ari. Dac a numele din interogare este dintr-o zon a pentru care serverul este responsabil, serverul va r aspunde cu nregistrarea sau nregistr arile care constituie r aspunsul la interogare eventual va spune c a nu exist a nregistr ari.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 335

Dac a numele c autat este din afara zonei de responsabilitate, exist a dou a comportamente posibile pentru server: iterativ. Serverul r aspunde cu nregistr arile de leg atur a c atre zona c autat a de client. Clientul urmeaz a s a interogheze alte servere. recursiv. Serverul interogheaz a (el nsu si) un server pentru zona vecin a mai apropiat a de zona numelui c autat de client, eventual interogheaz a n continuare servere din nregistr arile returnate, p an a ce a a r aspunsul la ntrebarea clientului. Inregistr arile g asite sunt plasate n categoria a treia alte nregistr ari. Un server recursiv poate congurat s a ret in a nregistr arile astfel obt inute, astfel nc at la o interogare ulterioar a s a poat a r aspunde direct, f ar a a mai c auta un server responsabil pentru numele cerut de client. O nregistrare astfel memorat a este tinut a un timp cel mult egal cu termenul de valabilitate al nregistr arii, dup a care se consider a c a informat ia s-ar putut modica si ca urmare nregistrarea este aruncat a. C autarea adresei corespunz atoare unui nume se face de c atre programul utilizator care are de contactat nodul cu numele dat. Interogarea DNS se face de regul a prin intermediul unor funct ii de bibliotec a, cum ar gethostbyname(). Aceste funct ii de bibliotec a trebuie s a g aseasc a un prim server de nume pe care s a-l interogheze. Pentru aceasta, n sistemul de operare exist a un loc standardizat unde administratorul scrie adresele IP ale unuia sau mai multor servere de nume. In sistemele de tip Unix, locul este sieru /etc/resolv.conf, iar n Windows este n registry.

10.4.5. Sincronizarea serverelor pentru un domeniu


Protocolul de interogare DNS prevede posibilitatea de-a cere toate nregistr arile dintr-o anumit a zon a ([RFC 1035, 1987], [RFC 1995, 1996]). Acest lucru se utilizeaz a pentru a putea ntret ine u sor mai multe servere responsabile de o anumit a zon a. Toate nregistr arile privind zona se scriu n baza de date a unuia dintre servere, denumit master . Celelalte servere, numite slave , sunt congurate s a copieze periodic informat iile de pe master. De notat c a, ntr-o astfel de congurat ie, at at serverul master c at si serverele slave sunt considerate responsabile de zon a; mecanismul este invizibil pentru cineva care face o interogare DNS pentru un nume din zon a. Momentele la care un server slave copiaz a datele de pe serverul master depind de urm atorii parametri din nregistrarea SOA a zonei: serial este num arul de ordine al datelor; administratorul zonei trebuie s a creasc a num arul serial oridec ateori modic a vreo nregistrare din zon a.

c 2008, Radu-Lucian Lup sa


336 nume: sistemul DNS 10.4. Identificarea nodurilor dupa

Un slave nu execut a copierea dac a num arul serial curent al master -ului coincide cu num arul serial propriu. refresh este timpul dup a care un server slave trebuie s a interogheze serverul master pentru a vedea dac a s-a modicat vreo nregistrare; retry este timpul de a steptare dup a o ncercare e suat a de-a contacta serverul master nainte de-a ncerca din nou; expire este timpul dup a care, n cazul n care nu a reu sit s a contacteze serverul master, serverul slave trebuie s a nu se mai considere responsabil de zon a. Exist a si un protocol ([RFC 1996, 1996]) prin care serverul master cere explicit unui server slave s a copieze datele despre zon a.

10.4.6. C autarea numelui dup a IP


DNS nu permite c autarea unei nregistr ari dup a valoare, deoarece g asirea serverului ce det ine nregistrarea ar necesita interogarea tuturor serverelor DNS din Internet. Pentru a putea r aspunde la ntreb ari de tipul cine are o adres a IP dat a, se utilizeaz a urm atorul mecanism: Fiec arei adrese IP versiunea 4 i se asociaz a un nume de domeniu astfel: se scrie adresa n form a zecimal a cu punct, cu componentele n ordine invers a, si se adaug a in-addr.arpa. . Astfel, adresei IP 193.0.225.34 i corespunde numele 34.225.0.193.in-addr.arpa. . Pentru aceste nume se pun n DNS nregistr ari cu tipul PTR si av and ca valoare numele de domeniu al nodului respectiv. Interogarea si administrarea acestor nume de domeniu se fac ntocmai ca si pentru numele obi snuite. De principiu, un subdomeniu din in-addr.arpa. corespunde unui bloc de adrese IP alocat unei institut ii; subdomeniul corespunz ator din domeniul in-addr.arpa. este administrat de aceea si institut ie. In situat ia n care alocarea blocurilor de adrese IP se face dup a schema CIDR, granit ele blocurilor nu coincid cu granit ele subdomeniilor lui in-addr.arpa. . De exemplu, dac a rma X are alocat blocul de adrese 193.226.40.128/28, ea nu va putea primi n administrare ntregul domeniu 40.226.193.in-addr.arpa., deoarece acesta cont ine si alte adrese dec ate cele ale rmei X. Administrarea numelor din in-addr.arpa. se face, n acest caz, conform [RFC 2317, 1998]: numele corespunz atoare IP-urilor se denesc ca pseudonime pentru ni ste nume din domenii create special pentru blocurile alocate. Pentru exemplul dat, construct ia este urm atoarea: se creaz a domeniul 128/28.40.226.193.in-addr.arpa., asociat blocului

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 337

193.226.40.128/28, a c arui administrare este delegat a rmei X; numele de domeniu de la 128.40.226.193.in-addr.arpa. p an a la 143.40.226.193.in-addr.arpa. se denesc ca pseudonime (CNAME ) pentru numele de la 128.128/28.40.226.193.in-addr.arpa. p an a la 143.128/28.40.226.193.in-addr.arpa. Pentru adresele IPv6 se folose ste un mecanism asem an ator, denit n [RFC 3596, 2003]. Anume, ec arei adrese IPv6 i se asociaz a un nume n domeniul ip6.arpa . Numele se construie ste astfel: Se iau grupuri de c atre 4 bit i din adresa IPv6 si se scrie cifra hexa corespunz atoare ca o component a separat a. Ordinea ierarhic a a componentelor astfel obt inute este aceea n care componentele corespunz atoare bit ilor mai semnicativi din adresa IP sunt superioare ierarhic componentelor corespunz atoare bit ilor mai put in semnicativi. Exemplul 10.14: Pentru adresa 4321:0:1:2:3:4:567:89ab, numele de domeniu asociat este
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4. ip6.arpa

10.5. Leg aturile directe ntre nodurile IP


10.5.1. Rezolvarea adresei ARP
In multe cazuri, ceea ce, din punctul de vedere al unei ret ele Internet este o leg atur a direct a, este de fapt o leg atur a ntre dou a noduri ntr-o ret ea de alt tip, de exemplu o ret ea IEEE 802. O astfel de ret ea joac a rolul nivelului leg aturii de date n contextul protocolului Internet si ca urmare o vom numi aici ret ea de nivel inferior. Transmiterea unui pachet IP de la un nod A c atre un nod B , n cadrul aceleia si ret ele de nivel inferior, se face astfel: mai nt ai, nodul A determin a adresa, n cadrul ret elei de nivel inferior (adic a adresa MAC, pentru IEEE 802), a nodului B ; apoi A trimite pachetul IP nodului B , sub form a de date utile n cadrul unui pachet al ret elei de nivel inferior, pachet destinat adresei g asite anterior.

c 2008, Radu-Lucian Lup sa


338 turile directe 10.5. Lega ntre nodurile IP

Determinarea adresei MAC a nodului B se face cu ajutorul unui mecanism numit ARP (engl. Address Resolution Protocol, rom. protocol de determinare a adresei ). Mecanismul funct ioneaz a astfel: A trimite n ret eaua de nivel inferior un pachet de difuziune (broadcast) cont in and adresa IP a lui B . Acest pachet este un fel de ntrebare ,,cine are adresa IP cutare?. La un astfel de pachet r aspunde doar nodul cu adresa IP specicat a n pachet adic a doar nodul B n cazul de fat a. Pachetul de r aspuns este adresat direct lui A (prin adresa MAC a lui A recuperat a din interogare) si cont ine adresa IP si adresa MAC ale lui B . Pachetul are semnicat ia ,,eu am adresa IP cutare si am adresa MAC cutare. Dup a determinarea corespondent ei IP MAC prin mecanismul ARP, nodul A p astreaz a corespondent a n memorie un anumit timp (de ordinul minutelor), astfel nc at, dac a nodurile A si B schimb a mai multe pachete n timp scurt, mecanismul ARP este invocat doar o singur a dat a. Dac a nodul A prime ste mai multe r aspunsuri ARP cu adrese MAC diferite pentru aceea si adres a IP, nseamn a c a exist a mai multe noduri c arora li s-a dat din gre seal a aceea si adres a IP. In aceast a situat ie A ar trebui s a semnalizeze situat ia: printr-un pachet ICMP cu tipul destination unreachable destinat sursei pachetului destinat lui B , si printr-un mesaj a sat pe ecran si nregistrat n sierele jurnal ale sistemului de operare. Mecanismul ARP este utilizat de asemnea la congurarea adresei unei interfet e de ret ea ca vericare c a adresa congurat a este unic a n subret ea. Mai exact, dac a administratorul congureaz a o anumit a adres a IP pentru o interfat a, sistemul emite mai nt ai o cerere ARP pentru adresa ce urmeaz aa setat a. Dac a cererea prime ste r aspuns nseamn a c a mai exist a un nod ce are adresa respectiv a, caz n care sistemul tip are ste un mesaj de avertisment si eventual refuz a congurarea adresei respective. Dac a cererea nu prime ste r aspuns este probabil ca adresa s a e unic a si ca urmare sistemul o poate accepta ca adres a proprie. Informat iile despre asocierile IP MAC cunoscute nodului curent se determin a, pe sistemele de tip UNIX, cu ajutorul comenzii arp. Trimiterea, n vedera test arii, a unei cereri ARP c atre o stat ie se poate face cu ajutorul comenzii arping.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 339

10.6. Congurarea automat a a stat iilor DHCP


Sunt situat ii n care este util ca un nod s a- si determine propria adres a IP, mpreun a cu alt i c a tiva parametri (masca de ret ea, default gateway, servere DNS) prin interog ari n ret ea, n loc ca ace sti parametri s a e stocat i ntr-o memorie nevolatil a (disc sau memorie ash) a nodului. Situat ii n care acest lucru este util sunt: pentru un calculator f ar a harddisc; pentru un laptop, PDA sau alt dispozitiv mobil, care este mutat frecvent dintr-o ret ea n alta, unde parametrii trebuie congurat i de ecare dat a n funct ie de ret eaua la care este conectat; ntr-o ret ea mare n care este de dorit ca parametrii de ret ea ai stat iilor s a poat a schimbat i u sor de pe un calculator central. Exist a trei protocoale ce au fost utilizate de-a lungul timpului pentru determinarea parametrilor de ret ea: RARP, BOOTP si DHCP. Vom studia mai n detaliu protocolul DHCP, celelalte dou a nemaiind utilizate n prezent. De notat ns a c a protocolul DHCP este conceput ca o extensie a protocolului BOOTP. Un nod care dore ste s a- si determine parametrii de ret ea (adresa IP proprie, masca de ret ea, default gateway -uri, numele propriu, adresele serverelor DNS) se nume ste client DHCP. Clientul DHCP trimite o cerere, la care r aspunde un server DHCP stabilit pentru ret eaua respectiv a. R aspunsul cont ine parametrii solicitat i. Vom studia n continuare: cum se transmit cererea si r aspunsul DHCP, n condit iile n care modulul IP al clientului nu este congurat si ca urmare nu este complet funct ional; cum determin a serverul parametri clientului. Transmiterea cererii si a r aspunsului DHCP. Presupunem n continuare c a nodul client este conectat la o singur a ret ea de tip IEEE 802. Cererea DHCP este transmis a ca un pachet UDP. Adresa IP destinat ie a pachetului este adresa de broadcast local a (255.255.255.255), iar portul destinat ie este portul standard pe care ascult a serverul DHCP, anume portul 67. Adresa IP surs a este 0.0.0.0 (valoarea standard pentru adres a necunoscut a). Pachetul IP este ncapsulat ntr-un pachet Ethernet destinat adresei de broadcast (FF:FF:FF:FF:FF:FF) si purt and ca adres a surs a adresa pl acii de ret ea locale. Serverul DHCP trebuie s a e n aceea si subret ea cu clientul

c 2008, Radu-Lucian Lup sa


340 a stat Configurarea automata iilor DHCP

(sau s a existe n aceea si subret ea un server proxy DHCP care s a preia cererea clientului si s-o retrimit a serverului). R aspunsul DHCP este plasat la r andul lui ntr-un pachet UDP purt and ca adres a surs a adresa serverului DHCP si ca adres a destinat ie adresa alocat a clientului DHCP, cu portul destinat ie 68. Pachetul este ncapsulat ntrun pachet Ethernet destinat adresei MAC a clientului. Asocierea IP MAC pentru transmiterea pachetului de c atre server nu se face prin mecanismul ARP (care ar e sua deoarece clientul DHCP nu poate nc a r aspunde la cererea ARP) ci este setat a de c atre serverul DHCP prin intermediul unui apel sistem. Determinarea parametrilor de c atre server. Pentru ecare subret ea pentru care act ioneaz a, un server DHCP trebuie s a aib a dou a categorii de date: parametrii comuni tuturor nodurilor din subret ea (masca de ret ea, gatewayuri, servere DNS) si parametrii specici ec arui nod n parte (adresa IP a nodului). Parametrii comuni sunt setat i de administratorul serverului DHCP ntr-un sier de congurare al serverului. Pentru adresele IP ale nodurilor din ret ea exist a dou a strategii ce pot folosite: Alocare manual a: Adresa ec arui nod este xat a manual de c atre administratorul serverului DHCP. Nodul client este identicat prin adresa MAC sau prin nume. In primul caz administratorul trebuie s a scrie ntrun sier de congurare al serverului toate adresele MAC ale pl acilor de ret ea si adresele IP corespunz atoare. In al doilea caz, pe serverul DHCP se scriu numele stat iilor si adresele corespunz atoare iar pe ecare stat ie se seteaz a numele stat iei (a doua solut ie nu este aplicabil a pe calculatoare f ar a harddisc). Alocare dinamic a: Serverul dispune de o mult ime de adrese pe care le aloc a nodurilor. Serverul p astreaz a corespondent a dintre adresele MAC ale client ilor si adresele IP ce le-au fost alocate. Adresele alocate pot eliberate la cererea explicit a a clientului sau la expirarea perioadei de alocare (vezi mai jos). Adresele se atribuie de regul a pe o durat a determinat a. Perioada de alocare poate prelungit a la solicitarea clientului printr-o cerere DHCP de prelungire. Dup a expirarea perioadei de alocare, clientul nu mai are voie s a utilizeze adresa. Atribuirea adreselor pe perioad a determinat a are dou a avantaje (fat a de atribuirea pe durat a nedeterminat a): la alocarea dinamic a a adreselor, dac a clientul este scos din ret ea f ar a

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 341

a elibera explicit adresa, adresa este eliberat a automat la expirarea perioadei de atribuire; dac a este necesar a modicarea strategiei de atribuire a adreselor se pot opera modic arile necesare n congurarea serverului DHCP iar client ii vor primi noile adrese cu ocazia ncerc arii de prelungire a atribuirii adresei.

10.7. Situat ii speciale n dirijarea pachetelor


Vom studia n paragraful de fat a anumite procedee mai deosebite utilizate n dirijarerea pachetelor. Aceste procedee se aplic a ndeosebi n ret elele interne ale unor institut ii.

10.7.1. Filtre de pachete (rewall)


Un ltru de pachete (engl. rewall ) este un nod IP care nu transmite toate pachetele conform regulilor normale de funct ionare ale unui nod IP ci, n funct ie de anumite reguli, ignor a complet sau trimite pachete ICMP de eroare pentru anumite pachete. Scopul unui ltru de pachete este de-a interzice anumite act iuni n ret ea, n special pentru a contracara anumite ncerc ari de spargere a unui calculator. Congurarea unui ltru de pachete const a n stabilirea unui ansamblu de reguli de ltrare. Prezent am n continuare posibilit a tile oferite de mecanismul iptables din sistemul Linux, cu ment iunea c a facilit a tile de baz a se reg asesc n toate sistemele. O regul a de ltrare este o pereche format a dintr-o condit ie si o act iune. Regulile sunt grupate n siruri numite lant uri. Exist a trei lant uri predenite: INPUT aplicat pachetelor destinate nodului curent, OUTPUT aplicat pachetelor generate de nodul curent, FORWARD aplicat pachetelor generate de alt nod si av and ca destinat ie alt nod (pentru care nodul curent act ioneaz a ca ruter). Pentru ecare pachet ajuns la modulul IP, acesta aplic a prima regul a, din lant ul corespunz ator traseului pachetului, pentru care pachetul ndepline ste condit ia specicat a n regul a. Aplicarea regulii nseamn a executarea act iunii specicate de regul a. Principalele act iuni ce pot specicate sunt: ACCEPT pachetul este livrat normal, DROP pachetul este ignorat (ca si c and nu ar fost primit),

c 2008, Radu-Lucian Lup sa


342 10.7. Situat ii speciale n dirijarea pachetelor

REJECT se trimite napoi un pachet semnal and o eroare implicit ICMP destination unreachable. Condit iile specicate ntr-o regul a pot privi: interfat a prin care a intrat pachetul (cu except ia lant ului OUTPUT ), interfat a prin care ar ie si pachetul (cu except ia lant ului INPUT ), adresa IP surs a si adresa IP destinat ie (se poate specica si un prex de ret ea, condit ia ind satisf acut a de pachetele ce au adres a ncep and cu acel prex sau, eventual, pachetele ce au adres a ce nu ncepe cu acel prex), adresa MAC surs a sau destinat ie (pentru pachete ce intr a, respectiv ies, prin interfet e ce au conceptul de adres a MAC), protocolul (TCP, UDP, ICMP), portul surs a sau destinat ie (pentru protocoale care au not iunea de port), tipul si subtipul ICMP (pentru pachete ICMP), ag-uri ale diverselor protocoale, dimensiunea pachetului, starea conexiunii TCP c areia i apart ine pachetul (vezi mai jos). Un nod (intermediar) prin care trec toate pachetele asociate unei conexiuni TCP poate, examin and antetul TCP al ec arui pachet, s a tin a evident a st arii conexiunii. Ca urmare, nodul poate stabili dac a un pachet deschide o conexiune nou a, apart ine unei conexiuni deschise sau este un pachet invalid. Este adev arat, acest lucru nseamn a o nc alcare a principiului separ arii nivelelor: TCP este un protocol de nivel transport, deasupra nivelului ret ea. Ca urmare, modulele de ret ea nu ar trebui s a interpreteze protocolul TCP (antetele TCP ar trebui considerate pur si simplu date utile). Ca urmare, nodurile intermediare, din care nu act ioneaz a asupra pachetelor n tranzit dec at modulul ret ea si modulele inferioare, nu ar trebui s a ,, nt eleag a protocolul TCP. Regulile de ltrare se congureaz a de c atre administratorul sistemului. Ca si n cazul parametrilor IP: Pe sistemele Linux, regulile aplicate de nucleul sistemului de operare se examineaz a si se modic a cu ajutorul unei comenzi iptables. Regulile valabile la init ializarea sistemului sunt congurate de script urile invocate la pornire, ind nc arcate dintr-un sier text.

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 343

Pe sistemele Windows exist a o interfat a grac a cu care se congureaz a simultan regulile curente aplicate de nucleu si n acela si timp acele reguli sunt scrise n registry pentru a nc arcate la repornirea sistemului. Prin regulile de ltrare se urm aresc de obicei urm atoarele lucruri: S a e blocate pachetele pentru care se poate determina c a adresa surs a a fost falsicat a. Aici intr a: - pachete ce intr a pe interfat a c atre Internet si au ca adres a surs ao adres a din ret eaua intern a, - pachete ce au ca surs a o adres a de broadcast (clasa D) sau de clas a E, - pachete ce intr a dinspre o anumit a subret ea au ca surs a o adres a ce nu face parte din subret eaua respectiv a si nici din alte subret ele din direct ia respectiv a. S a e interzise conexiunile din afara ret elei locale c atre servicii care sunt oferite doar pentru ret eaua local a. De exemplu, accesul la un share Windows este adesea de dorit s a nu e posibil din afara ret elei locale. Pentru aceasta exist a dou a strategii: - se blocheaz a pachetele destinate porturilor pe care a steapt a conexiuni serviciile respective; - se permit conexiunile c atre serviciile ce se doresc a accesibile din afar a (web, mail, eventual ssh), se permit conexiunile init iate din interior si se interzic toate celelalte pachete. Prima metod a este mai simpl a ns a necesit a lista complet a a serviciilor ce trebuie blocate. A doua metod a este mai sigur a, ntruc at serviciile sunt inaccesibile dac a nu s-a specicat explicit contrariul, ns a este dicil de permis intrarea pachetelor de r aspuns pentru conexiunile init iate din interior. Aceasta se nt ampl a deoarece o conexiune init iat a din interior are alocat un port local cu num ar imprevizibil; ca urmare nu se poate stabili o regul a simpl a pentru permiterea intr arii pachetelor destinate acelui port. Solut ia uzual a este: - pentru conexiun TCP, se permit pachetele asociate unei conexiuni deja deschise, se permit pachetele c atre exterior, se permit pachetele destinate serviciilor publice si se interzic toate celelalte pachete.

c 2008, Radu-Lucian Lup sa


344 10.7. Situat ii speciale n dirijarea pachetelor

- pentru UDP, unde nu se poate tine evident a unor conexiuni, se interzic pachetele destinate unor servicii private, se permit pachetele spre exterior, se permit pachetele provenite de la serviciile ce se dore ste a accesate n exterior (serverele DNS sau NTP utilizate) si se interzic toate celelalte pachete. S a e interzise diferite alte pachete ,,dubioase, cum ar : - pachete destinate adresei de broadcast a ret elei locale sau adresei de broadcast generale (255.255.255.255), - pachete av and ca adres a surs a sau destinat ie adresa ma sinii locale (127.0.0.1) sau o adres a privat a.

Exemplul 10.15: Fie un ruter av and n spate o ret ea intern a av and adrese cu prexul 193.226.40.128/28. Ruterul are interfat a eth0 cu adresa 193.0.225.20 c atre exterior si interfat a eth1 cu adresa 193.226.40.129 c atre subret eaua local a. Din ret eaua local a dorim s a se poat a deschide orice fel de conexiuni TCP c atre exterior; din exterior dorim s a nu se poat a deschide alte conexiuni dec at c atre serverul http si https de pe 193.226.40.130 si c atre serverele ssh de pe toate ma sinile din ret eaua local a. Din ret eaua local a dorim s a putem accesa servicii DNS si NTP. Acestea le furniz am astfel: pe ruter instal am un server DNS si un server NTP, accesibile din ret eaua local a; acestea furnizeaz a serviciile respective pentru ret eaua local a permitem cererile emise de serverele DNS si NTP de pe ruter, precum si r aspunsurile corespunz atoare. Cererile NTP provin de pe portul UDP 123 al ruterului si sunt adresate portului UDP 123 al unui nod din exterior, iar cererile DNS sunt emise de pe un port UDP mai mare sau egal cu 1024 si sunt adresate portului DNS 53 de pe un nod extern. Pentru diagnosticarea funct ion arii ret elei vom mai permite trecerea pachetelor ICMP ping, pong, destination unreachable si time exceeded. Tracul n interiorul ret elei locale l permitem f ar a restrict ii. Bloc am toate ncerc arile de spoong detectabile.
# blocare spoofing detectabil si alte pachete dubioase iptables -A FORWARD -i eth0 -s 193.226.40.128/28 -j DROP iptables -A FORWARD -i eth0 -s 193.0.225.20 -j DROP iptables -A FORWARD -i eth0 -s 127.0.0.0/8 -j DROP

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 345

iptables -A FORWARD -i eth0 -s 0.0.0.0/8 -j DROP iptables -A FORWARD -i eth0 -s 224.0.0.0/3 -j DROP iptables -A FORWARD -i eth0 -s 10.0.0.0/8 -j DROP iptables -A FORWARD -i eth0 -s 172.30.16.0/12 -j DROP iptables -A FORWARD -i eth0 -s 192.168.0.0/16 -j DROP iptables -A FORWARD -i eth1 -s ! 193.226.40.128/28 -j DROP iptables -A FORWARD -d 255.255.255.255 -j DROP iptables -A FORWARD -i eth0 -d 193.226.40.159 -j DROP iptables -A INPUT -i eth0 -s 193.226.40.128/28 -j DROP iptables -A INPUT -i eth0 -s 193.0.225.20 -j DROP iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 0.0.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 224.0.0.0/3 -j DROP iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP iptables -A INPUT -i eth0 -s 172.30.16.0/12 -j DROP iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i eth1 -s ! 193.226.40.128/28 -j DROP iptables -A INPUT -d 255.255.255.255 -j DROP iptables -A INPUT -i eth0 -d 193.226.40.159 -j DROP # celelalte restrictii iptables -A INPUT -i eth1 -j ACCEPT iptables -A FORWARD -i eth1 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT iptables -A INPUT -i eth0 -p udp --dport 1-1023 -j DROP iptables -A INPUT -i eth0 -p udp --sport 53 -j ACCEPT iptables -A INPUT -i eth0 -p udp --sport 123 --dport 123 -j ACCEPT iptables -A FORWARD -d 193.226.40.130 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -d 193.226.40.130 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -d 193.226.40.128/28 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-unreachable \ -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-request -j ACCEPT iptables -A FORWARD -p icmp --icmp-type echo-reply -j ACCEPT iptables -A FORWARD -p icmp --icmp-type destination-unreachable \ -j ACCEPT iptables -A FORWARD -p icmp --icmp-type time-exceeded -j ACCEPT iptables -A INPUT -j DROP iptables -A FORWARD -j DROP

c 2008, Radu-Lucian Lup sa


346 10.7. Situat ii speciale n dirijarea pachetelor

10.7.2. Ret ele private


O ret ea privat a este o ret ea, conectat a sau nu la Internet, a c arei calculatoare nu pot comunica direct cu calculatoarele din Internet. O utilizare tipic a este cea prezentat a n gura 10.7. O institut ie A are o ret ea proprie de calculatoare. Din aceast a ret ea proprie, o parte dintre calculatoare s a le numim publice trebuie s a comunice nerestrict ionat cu alte calculatoare din Internet, n vreme ce restul calculatoarelor le vom numi private este acceptabil s a poat a comunica doar cu alte calculatoare din ret eaua intern a.
Internet-ul ,,public

Furnizor Internet

Noduri publice 193.226.40.128/28 Noduri private 192.168.1.0/24

Noduri publice 193.0.225.0/24

Noduri private 192.168.1.0/24

Ret eaua institut iei B Ret eaua institut iei A

Figura 10.7: Dou a ret ele locale av and ecare acelea si adrese private pentru o parte din calculatoare.

Calculatoarele private nu este necesar s a aib a adrese unice n Internet. Adresele calculatoarelor private pot refolosite de c atre calculatoare private din alte astfel de ret ele interne, de exemplu de cele ale institut iei B din gur a. De fapt, n general, o adres a trebuie s a e unic a doar n mult imea nodurilor cu care un anumit nod ar putea dori s a comunice. In situat ia descris a, este necesar ca adresele din Internet-ul ,,public s a e unice, adresele din ret eaua local a s a e unice si s a nu existe suprapuneri ntre adresele din Internet si adresele din ret eaua local a. Cerint a din urm a este determinat a de cerint a ca nodurile cu adrese publice din ret eaua proprie s a poat a comunica si cu nodurile private si cu nodurile din Internet. Un pachet a c arui adres a destinat ie este o adres a privat a este dirijat de c atre rutere astfel: dac a ruterul face parte dintr-o ret ea local a n care exist a acea adres a,

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 347

pachetul este dirijat c atre unicul nod din ret eaua local a purt and adresa respectiv a; altfel, ruter-ul declar a pachetul nelivrabil. A sa cum am v azut n 10.2.4.1, urm atoarele blocuri de adrese IP sunt alocate pentru astfel de utiliz ari n ret ele private: 10.0.0.0/8, 172.16.0.0/12 si 192.168.0.0/16. De cele mai multe ori, calculatoarelor private li se ofer a posibilit a ti limitate de-a comunica cu calculatoare din Internet, prin intermediul unor mecanisme descrise n paragrafele urm atoare.

10.7.3. Translat ia adreselor (NAT)


Translat ia adreselor este un mecanism prin care un ruter modic a adresa surs a sau adresa destinat ie a unor pachete. 10.7.3.1. Translat ia adresei surs a Presupunem c a avem o ret ea privat a si dorim ca de pe calculatoarele cu adrese private s a se poat a deschide conexiuni c atre calculatoare din Internet spre exemplu, pentru a putea accesa pagini web. F ar a vreun mecanism special, acest lucru nu este posibil, din urm atorul motiv: Un calculator C cu adres a privat a care dore ste s a deschid a o conexiune c atre un calculator S din Internet trimite un pachet IP av and ca adres a surs a adresa proprie (privat a) C , ca adres a destinat ie adresa serverului S (adres a care este public a) si cont in and o cerere de deschidere de conexiune TCP. Pachetul ajunge la destinat ie, iar serverul S vom presupune c a accept a conexiunea. Serverul S trimite napoi un pachet IP av and ca adres a surs a adresa proprie S si ca adres a destinat ie adresa, privat a, a clientului C . Deoarece adresa clientului nu este unic a la nivelul Internet-ului (ci doar la nivelul propriei ret ele interne), pachetul de r aspuns nu poate livrat. Translat ia adresei surs a rezolv a problema de mai sus n modul ur m ator: In primul r and, trebuie s a existe un nod (ruter) G n ret eaua intern a, av and adres a public a si prin care s a tranziteze toate pachetele de la C c atre S (vezi g. 10.8). Un pachet provenind de la C c atre S este modicat de c atre G, acesta pun and adresa proprie G n locul adresei lui C . Serverul S prime ste pachetul ca provenind de la G si ca urmare r aspunde cu un pachet (de acceptarea conexiunii) destinat lui G. Deoarece adresa lui G este public a, pachetul de r aspuns ajunge la G. In acel moment, G trebuie s a determine faptul c a pachetul este r aspuns la o cerere adresat a de C . Ca urmare,G modic a adresa destinat ie a pachetului, pun and adresa lui C n locul propriei adrese,

c 2008, Radu-Lucian Lup sa


348 10.7. Situat ii speciale n dirijarea pachetelor Internet S 193.226.40.130 193.0.225.20 G 192.168.0.1 C 192.168.0.123 Ret ea privat a

Figura 10.8: Ret ea privat a pentru exemplicarea mecanismului de translat ie a adresei surs a

dup a care trimite mai departe pachetul c atre C acest lucru este acum posibil deoarece G este n ret eaua intern a, si ca urmare adresa lui C indic a singurul nod din ret eaua proprie av and acea adres a. Pentru ca mecanismul de mai sus s a e realizabil, este necesar ca ruterul G s a poat a determina c arui nod privat i este destinat n mod real ecare pachet av and ca adres a destinat ie adresa G. De regul a, acest lucru necesit a identicarea ec arui pachet venit din Internet ca r aspuns la un pachet dinspre un nod privat spre Internet. Acest lucru este cel mai simplu de f acut pentru conexiunile TCP. Pentru o conexiune TCP, ruterul G urm are ste pachetele de deschidere a conexiunii. La primirea unui pachet de deschiderea conexiunii dinspre un nod privat C , de pe un port pc , c atre un server S , ruterul G aloc a un port TCP local pg (de preferint a pg = pc , ns a dac a pc nu este liber se poate aloca un pg diferit). Pachetul de deschidere a conexiunii este modicat de G astfel nc at adresa surs a s a e G si portul surs a s a e pg . G p astreaz a asocierea (C, pc , pg ). La sosirea unui pachet cu adresa destinat ie G si portul destinat ie pg , ruterul G pune adresa destinat ie C si portul destinat ie pc ; la primirea unui pachet cu adresa surs a C si portul surs a pc ruterul G pune adresa surs a G si portul surs a pg . Asocierea (C, pc , pg ) este p astrat a p an a la nchiderea conexiunii, determinat a prin schimbul corespunz ator de pachete. Exemplul 10.16: Pentru ret eaua ilustrat a n gura 10.8, presupunem c a clientul C av and adresa (privat a) 192.168.0.123 deschide o conexiune TCP de pe portul efemer 3456 c atre serverul S , av and adresa 193.226.40.130, pe

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 349

Sens CS CS

Intre C si G surs a destinat ie 192.168.0.123 193.226.40.130 port 3456 (pc ) port 80 193.226.40.130 192.168.0.123 port 80 port 3456 (pc )

Intre G si S surs a destinat ie 193.0.225.20 193.226.40.130 port 7890 (pg ) port 80 193.226.40.130 193.0.225.20 port 80 port 7890 (pg )

Tabelul 10.8: Adresele surs a si destinat ie ale pachetelor schimbate ntre clientul C si serverul S n exemplul 10.16

portul 80 (pentru a aduce o pagin a web). Ruterul G av and adresa public a 193.0.225.20 efectueaz a translat ia adresei surs a. Adresele pachetelor transmise ntre C si S sunt date n tabelul 10.8. Pentru alte protocoale, asocierea este mai dicil de f acut. Pentru UDP, exist a not iunea de port si ca urmare identicarea pachetelor primite de G pe baza portului destinat ie pg este posibil a. Este ns a dicil de determinat durata valabilit a tii asocierii (C, pc , pg ), nturc at nu exist a pachete de ,, nchiderea conexiunii UDP. Se poate ns a utiliza un timp de expirare, de ordinul c atorva minute, de exemplu, n care dac a nu trec pachete asocierea este desf acut a. Pentru ICMP ping si pong exist a un num ar de identicare care poate folosit cu acela si rol ca si un num ar de port. Translat ia adreselor pentru astfel de pachete funct ioneaz a ntocmai ca si n cazul UDP. Mecanismul de translat ie a adresei surs a, descris mai sus, permite deschiderea unei conexiuni de la un nod cu adres a privat a c atre un nod public din Internet. Nodul privat ,,are impresia c a comunic a direct cu serverul din Internet. Serverul din Internet ,,are impresia c a comunic a cu ruterul G pe portul alocat de acesta. Fat a de utilizarea adreselor publice, utilizarea adreselor private si a translat iei adresei surs a are dou a limit ari majore: nu permite deschiderea conexiunilor n sens invers, dinspre Internet c atre un nod privat; dac a pe conexiune sunt trimise, sub forma de date utile pentru protocolul TCP, informat ii privind adresa IP si portul de pe client, vor constatate incoerent e ntre IP-ul si portul clientului v azute de c atre server (acestea ind G si respectiv pg ) si IP-ul si portul clientului v azute de client (acestea ind C si respectiv pc ). Cea de-a doua limitare poate eliminat a dac a G cunoa ste protocolul de nivel aplicat ie dintre C si S si modic a datele despre conexiune schimbate

c 2008, Radu-Lucian Lup sa


350 10.7. Situat ii speciale n dirijarea pachetelor

ntre C si S . Prima limitare poate eliminat a n m asura n care este vorba de conexiuni init iate n urma unor negocieri pe o conexiune anterioar a (de exemplu, conexiunile de date din protocolul FTP); pentru aceasta, G trebuie, din nou, s a urm areasc a comunicat ia dintre C si S si s a modice datele privitoare la adresa si portul pe care clientul a steapt a conexiune dinspre server. 10.7.3.2. Translat ia adresei destinat ie Presupunem c a avem o ret ea privat a, un server S cu adres a privat a, un ruter G situat n ret eaua proprie dar av and adres a public a si un client C din Internet. Clientul C dore ste s a deschid a o conexiune c atre serverul S . Desigur, comunicarea ,,normal a nu este posibil a deoarece n contextul lui C adresa privat a a lui S nu este unic a. Este posibil ns a ca adresa publicat a ( n DNS-ul public) pentru serverul S s a e adresa lui G. In acest caz, C deschide conexiunea c atre G. Printr-un mecanism similar cu cel din paragraful precedent, G modic a de data aceasta adresa destinat ie, pun and, n locul propriei adrese, adresa privat a a lui S . Pachetul de r aspuns de la S este de asemenea modicat de c atre G, care pune ca adres a surs a adresa proprie G n loc de S . Astfel, S ,,are impresia c a comunic a direct cu C , iar C ,,are impresia c a comunic a cu G. Translat ia adresei destinat ie poate util a n urm atoarele situat ii: dac a avem o singur a adres a public a si dorim s a avem mai multe servere accesibile din exterior, servere ce nu pot funct iona pe aceea si ma sin a. Putem furniza astfel un server HTTP si un server SMTP care apar din Internet ca ind la aceea si adres a IP dar sunt g azduite n realitate pe calculatoare distincte. Necesitatea utiliz area calculatoarelor distincte pentru aceste servicii poate rezulta din motive de securitate sau din motive legate de performant ele calculatoarelor utilizate. dac a dorim totu si acces din afar a c atre calculatoarele din ret eaua intern a. De exemplu, pe ecare calculator ruleaz a un server SSH. Fiec arui calculator i vom asocia un port pe ruterul G. O conexiune din afar a, prin protocolul SSH, c atre un anumit port de pe G va redirect ionat a c atre serverul SSH de pe calculatorul privat corespunz ator. pentru a distribui cererile c atre un server foarte solicitat. In acest caz, serverul va avea ca adres a publicat a n DNS adresa lui G, ns a vor exista de fapt mai multe servere pe calculatoare S1 , S2 , . . . , Sn n ret eaua intern a. Conexiunile deschise din Internet c atre G vor redirect ionate echilibrat c atre serverele S1 , S2 , . . . Sn . Mai exact, la deschiderea unei conexiuni c atre G, G alege un server Sk c atre care redirect ioneaz a acea conexiune. Orice pachet ulterior de pe acea conexiune va redirect ionat

c 2008, Radu-Lucian Lup sa


Capitolul 10. Internetul 351

c atre Sk . Conexiuni noi pot redirect ionte c atre alte servere.

10.7.4. Tunelarea
Prin tunelare se nt elege, n general, transmiterea unor date apar tin and unui anumit protocol ca date utile n cadrul unui protocol de acela si nivel sau de nivel superior. Ne vom ocupa n cele ce urmeaz a de tunelarea pachetelor IP, adic a de transmiterea pachetelor IP prin protocoale de nivel ret ea sau de nivel aplicat ie. O situat ie n care este necesar a tunelarea este aceea n care exist a dou a ret ele private si se dore ste ca nodurile din cele dou a ret ele s a poat a comunica nerestrict ionat ntre ele. De exemplu, avem o institut ie care are dou a sedii si are o ret ea privat a in ecare sediu. Exist a mai multe solut ii pentru a realiza leg atura: Translat ia adreselor realizeaz a o leg atur a supus a unor restrict ii, studiate n 10.7.3. Unicarea zic a a celor dou a ret ele private, duc and o leg atur a zic a ntre ele (g. 10.9), ofer a conectivitate complet a, ns a ducerea unui cablu specual pentru aceasta poate extrem de costisitor.
Ret ea privat a Ret ea sediu A Ret ea sediu B

192.168.1.0/24

192.168.2.0/24

192.168.1.1

Leg atur a direct a (subret ea 192.168.0.0/24) 192.168.0.1 192.168.0.2

192.168.2.1

192.0.225.20

193.226.40.130

Internet

Figura 10.9: Unicarea ret elelor private printr-o leg atur a zic a direct a.

c 2008, Radu-Lucian Lup sa


352 10.7. Situat ii speciale n dirijarea pachetelor

Tunelarea ofer a conectivitate completa ca si leg atura zic a folosind leg aturile la Internet existente. Construct ia const a n realizarea unei conexiuni (de exemplu TCP) ntre dou a rutere cu adrese publice din cele dou a ret ele interne (g. 10.10). Conexiunea dintre rutere este un ,,cablu virtual ce preia rolul conexiunii zice.
Ret ea privat a virtual a (VPN) Ret ea sediu A Ret ea sediu B

192.168.1.0/24

192.168.2.0/24

192.168.1.1 192.168.0.1 192.0.225.20 193.226.40.130

192.168.2.1 192.168.0.2

Leg atur a virtual a (tunel) (subret ea 192.168.0.0/24)

Internet

Figura 10.10: Unicarea ret elelor private printr-un tunel

Tunelul se prezint a fat a de nivelul ret ea ca si c and ar o leg atur a zic a. Ca urmare, ecare cap at al tunelului este o interfat a de ret ea, av and o adres a IP si o masc a de ret ea. Pentru tunelarea propriu-zis a exist a mai multe protocoale. Unele dintre protocoale cripteaz a pachetele tunelate; astfel de protocoale ofer a securitatea unui cablu direct bine p azit. Un tunel poate avea mai mult de dou a capete. Un tunel cu mai multe capete se comport a ca o subret ea cu mai multe interfet e conectate la ea de exemplu o ret ea Ethernet.

c 2008, Radu-Lucian Lup sa


353

Capitolul 11

Aplicat ii n ret ele

11.1. Po sta electronic a


Po sta electronic a serve ste la transferul de mesaje electronice ntre utilizatori aat i pe sisteme diferite. Protocolul a fost creat init ial pentru mesaje text si a fost modicat ulterior pentru a permite transferul de siere cu cont inut arbitrar. Sistemul este conceput n ideea c a este acceptabil ca transferul mesajului s a dureze c ateva ore, pentru a putea funct iona pe sisteme ce nu dispun de o leg atur a permanent a n ret ea. Po sta electronic a este una dintre primele aplicat ii ale ret elelor de calculatoare si a fost dezvoltat a n aceea si perioad a cu Internet-ul. Ca urmare, protocolul cuprinde prevederi create n ideea transferului prin alte mijloace dec at o leg atur a prin protocol Internet. Arhitectura sistemului cuprinde urm atoarele elemente (vezi g. 11.1): Un proces de tip mail user agent (MUA), controlat de utilizatorul ce dore ste expedierea mesajului. Acesta interact ioneaz a cu utilizatorul pentru a-l asista n compunerea mesajului si stabilirea adresei destinatarului. La nal, mail user agent -ul trimite mesajul unui proces de tip mail transfer agent (MTA). Transferul este init iat de MUA-ul utilizatorului expeditor si utilizeaz a protocolul SMTP ( 11.1.2.1). O serie de procese de tip mail transfer agent care trimit ecare urm atorului mesajul. Transferul este init iat de MTA-ul emit ator si utilizeaz a tot protocolul SMTP. De ecare adres a destinat ie este r aspunz ator un mail transfer agent care memoreaz a mesajele destinate acelei adrese. Odat a mesajul ajuns la

c 2008, Radu-Lucian Lup sa


354
Expeditor

11.1. Pos ta electronica


Destinatar

Mail user agent (MUA) SMTP Mail transfer agent (MTA) Mail transfer agent (MTA)

Mail user agent (MUA) POP3 sau IMAP Mail transfer agent (MTA) responsabil de adresa dest. SMTP

SMTP

Figura 11.1: Elementele sistemului de transmitere a po stei electronice. S aget ile arat a sensul n care se init iaz a comunicat ia (de la client spre server), nu sensul n care se transfer a mesajul de po st a electronic a.

mail transfer agent -ul r aspunz ator de adresa destinat ie, el este memorat local (afar a de cazul n care are loc aici o rescriere de adres a, vezi 11.1.2.3). Utilizatorul destinat ie cite ste mesajul cu ajutorul unui proces de tip mail user agent. Acesta contacteaz a mail transfer agent -ul responsabil de adresa utilizatorului destinat ie si recupereaz a mesajul de la el. Transferul este init iat de MUA (adic a de receptor). Exist a dou a protocoale utilizate pentru transfer: POP3 si IMAP.

11.1.1. Formatul mesajelor


Formatul mesajelor este denit n [RFC 2822, 2001] (care nlocuie ste ,,clasicul [RFC 822, 1982]). Fiecare mesaj ncepe cu un antet cuprinz and adresa expeditorului, adresa destinatarului, data si alte c ateva informat ii. Dup a antet urmeaz a corpul mesajului, care cont ine mesajul propriu-zis. Intreg mesajul este de tip text ASCII. R andurile sunt delimitate prin secvent e formate din caracterul carriage return (cod 13) urmat de line feed (cod 10). R andurile nu au voie s a aib a lungime mai mare de 998 caractere si se recomand a s a nu aib a mai mult de 78 de caractere. Caracterele de control (cu codul ntre 0 si 31 sau egal cu 127) nu sunt permise, cu except ia secvent elor carriage return line feed care separ a r andurile. In particular, caractere carriage return izolate sau caractere line feed izolate nu sunt permise.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 355

Pentru a permite transmiterea mesajelor prin linii seriale incapabile s a transmit a caractere de 8 bit i (ci doar caractere de 7 bit i), este recomandabil ca mesajele s a nu cont in a caractere cu codul ntre 128 si 255. Datorit a unor protocoale folosite pentru transmiterea si pentru stocarea mesajelor, se impun urm atoarele restrict ii suplimentare asupra cont inutului mesajelor: nici un r and s a nu constea doar dintr-un caracter punct; un r and ce urmeaz a dup a un r and vid s a nu nceap a cu cuv antul From. De ment ionat c a n protocolul de comunicat ie dintre dou a mail transfer agent -uri sunt transferate informat ii privind adresa expeditorului si adresa destinatarului, independente de cele plasate n antetul mesajului. Aceste informat ii formeaz a a sa-numitul plic (engl. envelope ) al mesajului. Expeditorul si destinatarul date n antetul mesajului sunt informat ii pentru utilizatorul uman; informat iile de pe plic sunt cele utilizate efectiv n transmiterea mesajului. 11.1.1.1. Antetul mesajelor Antetul mesajelor este constituit dintr-un num ar de c ampuri, ecare c amp av and un nume si o valoare. De principiu, ecare c amp este un r and separat cont in and numele, caracterul dou a puncte (:) si valoarea; secvent a carriage return urmat de line feed act ioneaz a ca separator ntre c ampuri. Antentul se termin a cu dou a secvent e carriage return line feed consecutive. Dac a un c amp este prea lung pentru a ncape ntr-un r and (standardul recomand a ca r andurile s a nu dep a seasc a 78 de caractere si interzice r andurile mai lungi de 998 caractere), c ampul poate continuat pe r andurile urm atoare, care trebuie s a nceap a cu spat iu sau tab ; spat iile si tab -urile de la nceputul r andurilor urm atoare se consider a ca f ac and parte din c amp. Exemplul 11.1: Un posibil document (vezi mai jos explicat iile privind semnicat iile diverselor c ampuri):
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu.

c 2008, Radu-Lucian Lup sa


356 11.1. Pos ta electronica

Principalele c ampuri ce pot apare ntr-un mesaj sunt: To, Cc si Bcc reprezint a adresele la care trebuie livrat mesajul. Adresele din c ampul To reprezint a persoanele c arora le este adresat mesajul. Adresele din c ampul Cc reprezint a persoane ce trebuie informate de trimiterea mesajului; de exemplu, n corespondent a ocial a ntre un angajat al unei rme si un client al rmei, angajatul va pune adresa clientului n c ampul To (deoarece acestuia i este destinat mesajul), iar n c ampul Cc va pune adresa sefului (care trebuie informat cu privire la comunicat ie). Adresele din c ampul Bcc reprezint a pesoane c arora le va livrat mesajul, f ar a ca ceilalt i destinatari s a e informat i despre aceasta. C ampul Bcc este completat de c atre mail user agent si este eliminat de c atre primul mail transfer agent de pe traseu. From, Sender si Reply-to reprezint a adresa expeditorului si adresa la care trebuie r aspuns. In condit ii obi snuite, un mesaj cont ine doar c ampul From, reprezent and adresa expeditorului mesajului si totodat a adresa la care trebuie trimis un eventual r aspuns. C ampul Sender este utilizat atunci c and o persoan a trimite un mesaj n numele altei persoane sau n numele unei organizat ii pe care o reprezint a. Exist a dou a situat ii practice care conduc la aceast a situat ie: Dac a mesajul provine de la sef, dar este scris si trimis efectiv de secretara sefului, atunci adresa sefului este pus a n c ampul From, iar adresa secretarei n c ampul Sender. Dac a o persoan a trimite un mesaj n numele unei organizat ii, atunci adresa organizat iei va trecut a n c ampul From si adresa persoanei ce scrie mesajul va plasat a n c ampul Sender. In ne, c ampul Reply-to reprezint a adresa la care trebuie trimis un eventual r aspuns la mesaj, dac a aceast a adres a este diferit a de adresa din c ampul From. Dac a destinatarul r aspunde la un mesaj primit, utiliz and funct ionalitatea de reply a mail user agent -ului s au, MUA-ul ofer a implicit, ca adres a destinat ie a mesajului de r aspuns, adresa preluat a din c ampul Reply-to a mesajului original. In lipsa unui c amp Reply-to, MUA-ul ofer a adresa din c ampul From. De asemenea, chiar n prezent a unui c amp Reply-to, este bine ca MUA-ul s a ofere posibilitatea de-a trimite r aspunsul la adresa din c ampul From. Un exemplu de utilizare a c ampului Reply-to este urm atorul: un mesaj adresat unei liste de discut ii are ca From adresa autorului mesajului si ca To adresa listei. Mesajul se transmite centrului de

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 357

distribut ie al listei (un mail transfer agent ), care retransmite mesajul c atre abonat ii listei. Mesajul retransmis c atre abonat i va avea ad augat un c amp Reply-to indic and adresa listei. Astfel, mesajul primit de abonat are From autorul mesajului, To adresa listei si Reply-to tot adresa listei. Abonatul listei va r aspunde foarte u sor pe adresa listei deoarece mail user agent -ul s au va prelua adresa listei din Reply-to si o va pune ca adres a destinat ie n mesajul de r aspuns. Totu si, e bine ca utilizatorul s a nu foloseasc a orbe ste aceast a facilitate, ntruc at uneori r aspunsul este bine s a ajung a doar la autorul mesajului original, nu la toat a lista. . . Received si Return-path au ca rol diagnosticarea sistemului de livrare a mesajelor. Fiecare mail transfer agent de pe traseul mesajului adaug a n fat a mesajului un c amp Received n care scrie numele ma sinii sale, numele si adresa IP a mail transfer agent -ului care i-a trimis mesajul, data si ora curent a si emit atorul si destinatarul mesajului conform cererii mail transfer agent -ului care i transmite mesajul (cei indicat i pe ,,plicul mesajului, nu cei din c ampurile To sau From). Astfel, un mesaj ncepe cu un sir de antete Received cont in and, n ordine invers a, nodurile prin care a trecut mesajul. Ultimul mail transfer agent adaug a un c amp Return-path, con tin and adresa surs a a mesajului conform plicului (datele furnizate de MTA-ul surs a). C ampurile Received si Return-path sunt utilizate pentru a returna un mesaj la autorul s au n cazul n care apar probleme la livrarea mesajului. De notat diferent a ntre Reply-to, care reprezint a destinatarul unui eventual r aspuns dat de utilizator la mesaj, si Return-path, care reprezint a destinatarul unui eventual mesaj de eroare. Date reprezint a data gener arii mesajului. Este n mod normal completat de mail user agent -ul expeditorului mesajului. Are un format standard, cuprinz and data si ora local a a expeditorului precum si indicativul fusului orar pe care se g ase ste expeditorul. Formatul cuprinde: ziua din s apt am an a (prescurtare de trei litere din limba englez a), un caracter virgul a, ziua din lun a, luna (prescurtarea de trei litere din limba englez a), anul, ora, un caracter dou a puncte, minutul, opt ional nc a un caracter dou a puncte urmat de secund a si n nal indicativul fusului orar. Indicativul fusului orar cuprinde diferent a, n ore si minute, ntre ora local a si ora universal a coordonat a (UTC ; vezi 7.3.1 pentru detalii). Faptul c a ora local a este or a de var a sau nu apare n indicativul de fus orar. Rom ania are n timpul iernii ora local a egal a cu UTC+2h,

c 2008, Radu-Lucian Lup sa


358 11.1. Pos ta electronica

iar n timpul verii UTC+3h. Subject reprezint a o scurt a descriere (c at mai sugestiv a) a mesajului, dat a de autorul mesajului. Message-ID, In-reply-to, Reference servesc la identicarea mesajelor. Valoarea c ampului Message-ID este un sir de caractere care identic a unic mesajul. El este construit de c atre mail user agent -ul expeditorului pornind de la numele calculatorului, de la ora curent a si de la ni ste numere aleatoare, astfel nc at s a e extrem de improbabil ca dou a mesaje s a aib a acela si Message-ID. In cazul r aspunsului la un mesaj prin funct ia reply a mail user agent -ului, mesajul de r aspuns cont ine un c amp In-reply-to av and ca valoare Message-ID-ul mesajului la care se r aspunde. Valoarea c ampului Reference se creaz a din c ampurile Reference si Message-ID ale mesajului la care se r aspunde. C ampurile Reference si Message-ID pot folosite de exemplu pentru a sarea, de c atre mail user agent -ul destinat ie, a succesiunilor de mesaje legate de o anumit a problem a si date ecare ca replic a la precedentul. Resent-from, Resent-sender, Resent-to, Resent-cc, Resent-bcc, Resent-date si Resent-msg-id sunt utilizate dac a destinatarul unui mesaj dore ste s a retrimit a mesajul, f ar a modic ari, c atre altcineva. O astfel de retrimitere se poate efectua printr-o comand a bounce sau resend a MUA-ului. In acest caz, c ampurile din antetul mesajului original (inclusiv From, To sau Date) sunt p astrate, reect and expeditorul, destinatarii si data trimiterii mesajului original. Pentru informat iile privind retransmiterea (adresa utilizatorului ce efectueaz a retransmiterea, destinatarii mesajului retransmis, data retransmiterii, etc.), se utilizeaz a c ampurile Resent-. . . enumerate mai sus. Semnicat ia ec aruia dintre aceste c ampuri Resent-. . . este identic a cu semnicat ia c ampului f ar a Resent- corespunz ator, dar se refer a la retransmitere, nu la mesajul original.

11.1.1.2. Extensii MIME Standardul original pentru mesaje de po st a electronic a (rfc 822) a suferit o serie de extensii. Acestea sunt cunoscute sub numele Multipurpose Internet Mail Extension (MIME ) si sunt descrise n [RFC 2045, 1996], [RFC 2046, 1996] si [RFC 2047, 1996]. Extensiile MIME servesc n principal pentru a putea transmite siere ata sate unui mesaj de po st a electronic a.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 359

Un mesaj conform standardului MIME trebuie s a aib a un c amp n antet cu numele Mime-version. Valoarea c ampului este versiunea standardului MIME n conformitate cu care a fost creat mesajul. 11.1.1.3. Ata sarea sierelor si mesaje din mai multe p art i Standardul MIME ofer a posibilitatea ata s arii unor siere la un mesaj de po st a electronic a. Mecanismul se ncadreaz a ntr-unul mai general, care permite formarea unui mesaj din mai multe p art i. Un mesaj cu ata samente este dat n exemplul 11.2. Fiecare mesaj are n antet un c amp, Content-type, care arat a ce tip de date cont ine si n ce format sunt ele reprezentate. Exemple de tipuri sunt: text/plain (text normal), text/html (document HTML), image/jpeg (imagine n format JPEG ), etc. De regul a, partea din fat a caracterului slash (/) arat a tipul de document, iar partea a doua arat a formatul (codicarea) utilizat a. Astfel, o imagine va avea Content-type de forma image/format ; de exemplu, image/gif, image/jpeg, etc. Mesajele ce cont in doar text obi snuit trebuie s a aib a Content-type: text/plain. Acesta este dealtfel tipul implicit n cazul absent ei c ampului Content-type. Mesajele cu ata samente au Content-type: multipart/mixed. In general, un mesaj de tip multipart/subtip este format de fapt din mai multe ,, siere (oarecum ca un sier arhiv a zip ). Intr-un mesaj multipart/mixed, de obicei una dintre p art i este mesajul propriu-zis, iar ecare dintre celelalte p art i este c ate un sier ata sat. Fiecare parte a unui mesaj multipart are un antet si un corp, similar cu un mesaj de sine st at ator. Antetul p art ii poate cont ine doar c ampuri specice MIME. Astfel, ecare parte are propriul tip, care poate n particular chiar un multipart. Cele mai importante subtipuri ale tipului multipart sunt: multipart/mixed nseamn a pur si simplu mai multe componente puse mpreun a, ca un sier arhiv a. multipart/alternative arat a c a p art ile sunt variante echivalente ale aceluia si document, n formate diferite. Separarea p art ilor unui mesaj de tip multipart se face printr-un r and ce cont ine un anumit text, ce nu apare n nici una dintre p art ile mesajului. Textul utilizat ca separator este plasat n c ampul Content-type dup a multipart/subtip. Este scris sub forma (utilizabil a si n alte c ampuri si pen-

c 2008, Radu-Lucian Lup sa


360 11.1. Pos ta electronica

tru alte informat ii) unui sir boundary= sir situat dup a sirul multipart/subtip si separat prin punct si virgul a fat a de aceasta. Exemplu:
Content-type: multipart/mixed; boundary="abcdxxxx"

Corpul mesajului multipart este separat dup a cum urmeaz a: n fat a primei p art i precum si ntre ecare dou a p art i consecutive se g ase ste un r and format doar din textul de dup a boundary= precedat de dou a caractere minus (--); dup a ultima parte se g ase ste un r and format doar din textul de dup a boundary=. Fiecare parte a unui mesaj de tip multipart/mixed are un c amp Content-disposition [RFC 2183, 1997]. Valoarea acestui c amp arat a ce trebuie s a fac a mail user agent -ul destinat ie cu partea de mesaj n care se g ase ste acest antet. Valori posibile sunt: inline arat a c a mesajul sau partea de mesaj trebuie s a e a sat a utilizatorului; attachment arat a c a mesajul sau partea de mesaj nu trebuie a sat a dec at la cerere. Un astfel de c amp poate avea n continuare o informat ie suplimentar a, filename=nume, arat a numele sugerat pentru salvarea p art ii respective. De notat c a, din motive de securitate, mail user agent ul destinat ie trebuie s a nu salveze orbe ste partea de mesaj sub numele extras din mesaj, ci s a cear a mai nt ai permisiunea utilizatorului. In caz contrar, un adversar poate s a trimit a un sier av and ata sat un anumit sier, cu care s a suprascrie un sier al destinatarului.

11.1.1.4. Codicarea corpului mesajului si a ata samentelor Standardul original al formatului mesajelor prevede c a mesajele con tin doar text ASCII, cu utilizare restrict ionat a a caracterelor de control. Singurele caractere de control (cele cu codurile ntre 0 si 31) admise sunt carriage return (cod 13) si line feed (cod 10), utilizate pentru separarea r andurilor din mesaj. De asemenea, se recomand a s a nu se utilizeze caracterele cu coduri ntre 128 si 255, datorit a imposibilit a tii transmisiei lor n unele sisteme. Ca urmare, transmiterea unui sier arbitrar (inclusiv a unui text ISO-8859) nu este posibil a direct. Transmiterea unui cont inut arbitrar se face printr-o recodicare a acestuia utiliz and doar caracterele permise n corpul mesajului. Ca urmare,

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 361

mesajele apar, fat a de mail transfer agent -uri, identice cu cele conforme formatului original. Un mail user agent vechi, conform standardului original, nu va capabil s a transmit a un mesaj cu extensii MIME, iar n cazul primirii unui astfel de mesaj l va a sa ntr-un mod mai put in inteligibil pentru utilizator. Recodicarea este aplicat a doar asupra corpului mesajului, nu si asupra antetului. Antetul cont ine un c amp, Content-transfer-encoding, a c arui valoare arat a dac a si ce recodicare s-a aplicat asupra cont inutului. Codic arile denite de [RFC 2045, 1996] sunt: 7bit nseamn a de fapt lipsa oric arei recodic ari. In plus, arat a c a mesajul nu cont ine dec at caractere ASCII (cu codurile cuprinse ntre 0 si 127). 8bit arat a c a mesajul nu a fost recodicat, dar poate cont ine orice caractere (cu coduri ntre 0 si 255). quoted-printables arat a c a ecare caracter de control si ecare caracter egal (=) a fost recodicat ca o secvent a de trei caractere, format a dintr-un caracter egal (=) urmat de dou a cifre hexa; acestea din urm a reprezint a codul caracterului original. De exemplu, caracterul egal se recodic a =3D, iar caracterul escape (cod 27) se recodic a =1B. Restul caracterelor pot scrise direct sau pot recodicate ca si caracterele speciale; de exemplu litera a poate scris a a sau =61. base64 corpul mesajului a fost recodicat n baza 64 (vezi 7.4.2). In lipsa vreunui antet Content-transfer-encoding, se presupune codicarea 7bit. Pentru un mesaj (sau o parte de mesaj) de tip multipart, mesajul (respectiv partea) nu este permis s a e codicat dec at 7bit sau 8bit, ns a ecare parte a unui multipart poate codicat a independent de restul. In mod curent, un mesaj cu ata samente are corpul mesajului codicat 7bit, partea corespunz atoare mesajului propriu-zis este codicat a 7bit sau quoted-printables, iar p art ile corespunz atoare ata samentelor sunt codicate base64. Exemplul 11.2: Un mesaj cu siere ata sate este dat n continuare:
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@cs.ubbcluj.ro> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj cu fisiere atasate MIME-Version: 1.0 Content-transfer-encoding: 7bit Content-type: multipart/mixed; boundary="qwertyuiop"

c 2008, Radu-Lucian Lup sa


362 11.1. Pos ta electronica

--qwertyuiop Content-type: text/plain Content-transfer-encoding: 7bit Content-disposition: inline Acesta este mesajul propriu-zis. --qwertyuiop Content-type: application/octet-stream Content-disposition: attachment; filename="test.dat" Content-transfer-encoding: base64 eAAXLRQ= --qwertyuiop Content-type: text/plain; charset=utf-8 Content-disposition: attachment; filename="test.txt" Content-transfer-encoding: quoted-printables =C8=98i =C3=AEnc=C4=83 un text. qwertyuiop

11.1.2. Transmiterea mesajelor


A sa cum am v azut, mesajele sunt transmise din aproape n aproape, ecare mesaj parcurg and un lant de MTA-uri. Fiecare MTA, cu except ia ultimului, determin a urm atorul MTA si-i paseaz a mesajul. 11.1.2.1. Protocolul SMTP Protocolul utilizat pentru transmiterea mesajelor de la un MTA la urm atorul este protocolul Simple Mail Transfer Protocol SMTP . Este un protocol de tip text, construit de obicei peste o conexiune TCP. Rolul de client SMTP l are MTA-ul ce are mesajul de trimis mai departe; rolul de server apart ine MTA-ului ce prime ste mesajul. Clientul deschide o conexiune TCP c atre portul 25 al serverului. Dup a deschiderea conexiunii, serverul trimite un mesaj cont in and un cod de r aspuns urmat de numele serverului. In continuare, clientul trimite c ate o cerere, la care serverul r aspunde cu un cod ce arat a dac a cererea a fost executat a cu succes sau nu, urmat de un text explicativ. Cererile sunt formate de regul a dintr-un cuv ant-cheie urmat de eventuali parametri si se ncheie printro secvent a carriage return line feed. R aspunsurile sunt formate dintr-un num ar, transmis ca secvent a de cifre, urmat de un text explicativ. Num arul

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 363

arat a, ntr-o form a u sor de procesat de c atre calculator, dac a cererea s-a executat cu succes sau nu si cauza erorii. Textul cuprinde informat ii suplimentare pentru diagnosticarea manual a a transmiterii mesajelor. Clientul trebuie s a nceap a printr-o cerere HELO care are ca parametru numele ma sinii clientului. Prin aceasta clientul se identic a fat a de server. De notat c a nu exist a posibilitatea autentic arii clientului de c atre server; serverul este nevoit s a ,,ia de bun numele transmis de client. Dup a identicarea prin cererea HELO, clientul poate transmite serverului mai multe mesaje de po st a electronic a. Transmiterea ec arui mesaj va ncepe printr-o cerere MAIL FROM:, av and ca parametru adresa expeditorului mesajului. Dup a acceptarea de c atre server a comenzii MAIL FROM:, clientul va trimite una sau mai multe cereri RCPT TO:; ecare cerere are ca parametru o adres a destinat ie. Fiecare cerere RCPT TO: poate acceptat a sau refuzat a de c atre server independent de celelalte. Serverul va transmite mesajul ec areia dintre adresele destinat ie acceptate. In nal, clientul trimite o cerere DATA f ar a parametrii. Serverul r aspunde, n mod normal cu un cod de succes. In caz de succes, clientul trimite corpul mesajului, ncheiat cu un r and pe care se g ase ste doar caracterul punct. Dup a primirea corpului mesajului, serverul trimite nc a un r aspuns. Mesajele primite de MTA sunt plasate ntr-o coad a de a steptare, stocat a de obicei n siere pe disc. MTA-ul receptor ncearc a imediat s a trimit a mai departe ecare mesaj primit. Dac a trimiterea mai departe nu este posibil a imediat, mesajul este p astrat n coad a si MTA-ul re ncearc a periodic s a-l trimit a. Dup a un num ar de ncerc ari e suate sau n cazul unei erori netemporare (de exemplu, dac a nu exist a adresa destinat ie), MTA-ul abandoneaz a si ncearc a trimiterea unui mesaj (e-mail) de eroare napoi c atre expeditor. Dac a adresa destinat ie este local a, MTA-ul plaseaz a mesajul n sierul corespunz ator cutiei po stale a destinatarului. De notat c a n trimiterea mai departe, livrarea local a sau trimiterea unui mesaj de eroare, MTA-ul utilizeaz a doar informat iile de pe plic, adic a parametrii comenzilor MAIL FROM: si RCPT TO:, si nu valorile c ampurilor From sau To din antetul mesajului. Exemplul 11.3: Fie mesajul din exemplul 11.1. Transmiterea lui de la MTAul de pe cs.ubbcluj.ro c atre example.com decurge astfel (r andurile transmise de la cs.ubbcluj.ro la example.com sunt precedate de o s ageat a la dreapta, iar r andurile transmise n sens invers de o s ageat a la st anga):
220 example.com HELO nessie.cs.ubbcluj.ro

c 2008, Radu-Lucian Lup sa


364 11.1. Pos ta electronica

250 example.com MAIL FROM: <rlupsa@cs.ubbcluj.ro> 250 Ok RCPT TO: <test@example.com> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu. . 250 Ok: queued QUIT 221 Bye

Exemplul 11.4: Urm atorul mesaj ilustreaz a utilizarea c ampurilor n cazul unui mesaj transmis unei liste de utilizatori. Mesajul este reprodus a sa cum ajunge la un abonat al listei, av and adresa test@example.com. Mesajul ilustreaz a, de asemenea, utilizarea c ampului Sender de c atre cineva care transmite un mesaj n numele altcuiva si a c ampului Cc.
Return-path: errors-26345@comunitati-online.example Received: from server27.comunitati-online.example by example.com for test@example.com; 31 Aug 2007 22:09:23 -0700 Reply-to: Forumul OZN <ozn@comunitati-online.example> Received: from roswell.greenmen.example by server27.comunitati-online.example for ozn@comunitati-online.example; 1 Sep 2007 05:09:21 +0000 Received: from localhost by roswell.greenmen.example for ozn@comunitati-online.example; 1 Sep 2007 08:09:20 +0300 From: Organizatia omuletilor verzi <office@greenmen.example> Sender: Ion Ionescu <ion@greenmen.example> To: Forumul OZN <ozn@comunitati-online.example> Cc: Organizatia omuletilor verzi <office@greenmen.example> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.534@roswell.greenmen.example In-reply-to: my-emailer.20070830222222.321@ufo.example

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele Subject: Re: Incident Organizatiei omuletilor verzi anunta ca nu a avut nici un amestec in incidentul de la balul anual E.T. Ion Ionescu, Presedintele Organizatiei omuletilor verzi 365

11.1.2.2. Determinarea urm atorului MTA Un MTA care are un mesaj de transmis c atre o anumit a adres a determin a urm atorul MTA c aruia trebuie s a-i transmit a mesajul astfel: 1. MTA-ul caut a mai nt ai, printre informat iile sale de congurare (vezi 11.1.2.3), dac a are vreo regul a privind adresa destinat ie. Dac a MTAul este responsabil de adresa destinat ie a mesajului, l memoreaz a local. Dac a MTA-ul este poart a de intrare a mesajelor pentru MTA-urile din ret eaua local a, transmite mesajul c atre MTA-ul determinat conform congur arii. 2. Dac a nu exist a informat ii de congurare pentru adresa destinat ie, MTAul caut a n DNS o nregistrare cu tipul MX pentru numele de domeniu din adresa destinat ie. O astfel de nregistrare cont ine una sau mai multe nume de servere SMTP capabile s a preia mesajele destinate unei adrese din acel domeniu. Dac a g ase ste o astfel de nregistrare, MTA-ul contacteaz a una din ma sinile specicate n nregistr arile MX g asite si-i transmite mesajul. 3. Dac a nu exist a nici nregistr ari MX, MTA-ul contacteaz a ma sina cu numele de domeniu din adresa destinat ie si-i transmite mesajul. 4. Dac a nu exist a nici un server cu numele de domeniu din adresa destinat ie, adic a dac a toate cele trei variante de mai sus e sueaz a, atunci MTA-ul declar a c a mesajul este nelivrabil si transmite napoi spre emit ator un mesaj de eroare. Un MUA lucreaz a, de obicei, mult mai simplu. Acest lucru duce la simplicarea MUA-ului prin separarea clar a a rolurilor: MUA-ul trebuie s a ofere facilit a ti de editare si s a prezinte utilizatorului o interfat a prietenoas a, iar MTA-ul are toate complicat iile legate de livrarea mesajelor. Pentru transmiterea oric arui mesaj, un MUA contacteaz a un acela si MTA, a c arui adres a este congurat a n opt iunile MUA-ului. Pe sistemele de tip UNIX, MUA-urile contacteaz a implicit MTA-ul de pe ma sina local a (localhost).

c 2008, Radu-Lucian Lup sa


366 11.1. Pos ta electronica

11.1.2.3. Congurarea unui MTA De cele mai multe ori, un MTA este resposnabil de adresele utilizatorilor calculatoarelor dintr-o ret ea local a. In acest caz, MTA-ul memoreaz a local mesajele adresate acestor utilizatori si le ofer a acestora posibilitatea de a le citi prin IMAP sau POP3. De asemenea, MTA-ul preia si transmite spre exterior mesajele utilizatorilor, generate de MUA-urile ce ruleaz a pe calculatoarele din ret eaua local a. In congurat ii mai complicate, un MTA act ioneaz a ca punct de trecere pentru mesajele care pleac a sau sosesc la un grup de MTA-uri dintr-o ret ea local a. El preia mesajele de la toate MTA-urile din ret eaua local a n scopul retransmiterii lor c atre exterior. De asemenea, preia mesajele din exterior destinate tuturor adreselor din ret eaua local a si le retrimite MTA-urilor, din ret eaua local a, responsabile. Un astfel de MTA este numit mail gateway. Un mail gateway poate util ca unic ltru contra viru silor si spam-urilor pentru o ntreag a ret ea local a ( n opozit ie cu a congura ecare MTA din ret eaua local a ca ltru). Un MTA trebuie congurat cu privire la urm atoarele aspecte: care sunt adresele locale si cum se livreaz a mesajele destinate acestor adrese; care sunt ma sinile ( n principiu, doar din ret eaua local a) de la care se accept a mesaje spre a trimise mai departe spre Internet; ce transform ari trebuie aplicate mesajelor. Implicit, un MTA consider a ca ind adrese locale acele adrese care au numele de domeniu identic cu numele ma sinii pe care ruleaz a MTA-ul si av and partea de utilizator identic a cu un nume de utilizator al ma sinii locale. Pe sistemele de operare de tip UNIX, un mesaj adresat unui utilizator local este ad augat la nalul unui sier av and ca nume numele utilizatorului si situat n directorul /var/mail. MTA-ul responsabil de o anumit a adres a destinat ie poate congurat de c atre utilizatorul destinatar s a execute anumite prelucr ari asupra mesajului primit. Pe sistemele de tip UNIX, aceast a congurare se face prin directive plasate n sierele .forward si .procmailrc din directorul personal al utilizatorului. Fi sierul .forward cont ine un sir de adrese la care trebuie retrimis mesajul n loc s a e livrat local n /var/mail/user. Fi sierul .procmailrc cuprinde instruct iuni mai complexe de procesare a mesajelor primite: n funct ie de aparit ia unor siruri, descrise prin expresii regulare, n mesajul primit, mesajul poate plasat n siere specicate

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 367

n .procmailrc sau poate pasat unor comenzi care s a-l proceseze. Pentru cazuri mai complicate, un MTA poate congurat de c atre administrator s a execute lucruri mai complicate: Este posibil s a se congureze adrese de po st a, situate n domeniul numelui ma sinii locale, care s a e considerate valide chiar dac a nu exist a utilizatori cu acele nume. Pentru ecare astfel de adres a trebuie denit a o list a de adrese, de regul a locale, la care se va distribui ecare mesaj primit. Ca exemplu, adresa root@cs.ubbcluj.ro este congurat a n acest fel; un mesaj trimis la aceast a adres a nu este plasat n /var/mail/root ci este retrimis utilizatorilor (congurat i n sierul /etc/aliases) care se ocup a de administrarea sistemului. Un MTA poate congurat s a se considere responsabil de mai multe domenii, ale c aror nume nu au nimic comun cu numele ma sinii MTA-ului. De exemplu, se poate congura MTA-ul de pe nessie.cs.ubbcluj.ro s a accepte mesajele destinate lui ion@example.com si s a le livreze utilizatorului local gheorghe. Desigur, pentru ca un mesaj destinat lui ion@example.com s a poat a livrat, mai trebuie ca mesajul s a ajung a p an a la nessie.cs.ubbcluj.ro. Pentru aceasta, trebuie ca MUA-ul expeditor sau un MTA de pe traseu s a determine ca urm ator MTA ma sina nessie.cs.ubbcluj.ro, lucru care se nt ampl a dac a n DNS se pune o nregistrare MX pentru numele de domeniu example.com indic and c atre nessie.cs.ubbcluj.ro. Un astfel de mecanism este utilizat n mod curent de furnizorii de servicii Internet pentru a g azdui po sta electronic a a unor client i care au nume propriu de domeniu dar nu det in servere de po st a electronic a care s a preia po sta adresat a adreselor din domeniul respectiv. Dac a utilizatorii expediaz a mesaje de pe mai multe ma sini dintr-o ret ea local a, nu este de dorit ca numele ma sinii interne s a apar a n adresa de po st a electronic a. De exemplu, dac a un acela si utilizator are cont pe mai multe ma sini, nu este de dorit ca adresa expeditorului s a depind a de ma sina de pe care utilizatorul scrie efectiv mesajul. De exemplu, nu este de dorit ca dac a scrie un mesaj pe ma sina linux.scs.ubbcluj.ro mesajul s a apar a av and adresa surs a From: ion@linux.scs.ubbcluj.ro, iar dac a l scrie de pe freebsd.scs.ubbcluj.ro s a apar a cu adresa From: ion@freebsd.scs.ubbcluj.ro. Pentru aceasta, MTA-ul care se ocup a de livrarea spre exterior a mesajelor generate n ret eaua intern a va schimba, at at n antetul mesajului (valoarea c ampului From) c at si pe ,,plic (valoarea parametrului comenzii SMTP MAIL FROM:), adresa expeditorului, elimin and numele ma sinii locale si p astr and doar

c 2008, Radu-Lucian Lup sa


368 11.1. Pos ta electronica

restul componentelor numelui de domeniu. In exemplul de mai sus, din adres a r am ane doar ion@scs.ubbcluj.ro. Modicarea poate mai complex a: astfel, dac a nessie.cs.ubbcluj.ro este congurat s a accepte mesajele destinate lui ion@example.com si s a le livreze utilizatorului local gheorghe, este probabil de dorit ca pentru mesajele compuse de utilizatorul local gheorghe s a fac a transformarea adresei surs a din gheorghe@nessie.cs.ubbcluj.ro n ion@example.com. Un alt element important de congurare prive ste decizia unui MTA de a accepta sau nu spre livrare un mesaj. In mod normal, un MTA trebuie s a accepte mesajele generate de calculatoarele din ret eaua local a si mesajele destinate adreselor locale, dar s a nu accepte trimiterea mai departe a mesajelor provenite din exterior si destinate n exterior. Un MTA care accept a spre livrare orice mesaje este numit n mod curent open relay. Un open relay este privit de obicei ca un risc pentru securitate, deoarece este adesea utilizat de utilizatori r au-voitori pentru a trimite mesaje ascunz andu- si identitatea.

11.1.3. Securitatea po stei electronice


Principalele probleme privind securitatea sunt: spoong -ul falsicarea adresei surs a (From sau Sender); spam -urile mesaje, de obicei publicitare, trimise unui num ar mare de persoane si f ar a a legate de informat ii pe care destinatarii le-ar dori; viru sii programe executabile sau documente, ata sate unui mesaj electronic, a c aror execut ie sau respectiv vizualizare duce la trimiterea de mesaje electronice c atre alt i destinatari. Falsicarea adresei surs a este extrem de simpl a deoarece, n transmiterea obi snuit a a mesajelor, nu este luat a nici o m asur a de autenticare a expeditorului. Falsicarea adresei surs a (spoong ) poate depistat a n anumite cazuri examin and c ampurile Received din antetul mesajului si veric and dac a exist a neconcordant e ntre numele declarat prin HELO a unui client SMTP si adresa sa IP sau neconcordant e ntre numele primului MTA si partea de domeniu din adresa expeditorului. De notat c a anumite neconcordant e pot legitime, n cazul n care c asut ele po stale dintr-un domeniu sunt tinute de un calculator al c arui nume nu face parte din acel domeniu (vezi 11.1.2.3). O metod a mai ecient a pentru depistarea falsurilor este utilizarea semn aturii electronice. Exist a dou a standarde de semn atur a electronic a utilizate, OpenPGP [RFC 2440, 2007, RFC 3156, 2001] si S-MIME [S/MIME, ].

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 369

Vericarea semn aturii necesit a ns a ca destinatarul s a dispun a de cheia public a autentic a a expeditorului. P an a la generalizarea utiliz arii mesajelor semnate, sistemul de po st a electronic a trebuie s a asigure livrarea mesajelor nesemnate si n consecint a cu risc de a falsicate. U surint a falsic arii adresei surs a si u surint a p astr arii anonimatului autorului unui mesaj a dus la proliferarea excrocheriilor. Adesea excrocheriile constau n trimiterea de mesaje unui num ar mare de utilizatori (acest fapt n sine este spam ) n sperant a de-a g asi printre ace stia unii care s a se lase p ac alit i. Spam -urile d auneaz a deoarece consum a n mod inutil timpul desti natarului. In plus, exist a riscul ca un mesaj legitim, ,, ngropat ntre multe spam-uri, s a e sters din gre seal a. Exist a detectoare automate de spam-uri, bazate pe diferite metode din domeniul inteligent ei articiale. Astfel de detectoare se instaleaz a pe MTA-uri si resping sau marcheaz a prin antete speciale mesajele detectate ca spam-uri. Un MTA care detecteaz a si respinge sau marcheaz a spam-urile se nume ste ltru anti-spam . De ment ionat ltrele anti-spam nu pot f acute 100% sigure deoarece nu exist a un criteriu clar de diferent iere. Ca urmare, orice ltru anti-spam va l asa s a treac a un anumit num ar de spam-uri si exist a si riscul de-a respinge mesaje legitime. Majoritatea furnizorilor de servicii Internet nu permit, prin contract, client ilor s a trimit a spam-uri si depun eforturi pentru depistarea si penalizarea autorilor. In acest scop, ei primesc sesiz ari si ntret in liste cu adresele de la care provin spam-urile (liste negre blacklist ). Trimiterea spam-urilor necesit a recoltarea, de c atre autorul spamurilor, a unui num ar mare de adrese valide de po st a electronic a. Acest lucru se realizeaz a cel mai u sor prin c autarea, n paginile web, a tot ceea ce arat a a adres a de po st a electronic a. Contram asura la aceast a recoltare este scrierea adreselor, din paginile web, doar n forme dicil de procesat automat de exemplu, ca imagine ( ntr-un sier jpeg, gif sau png ). Termenul de virus poate desemna mai multe lucruri, nrudite dar dis tincte. In general, un virus informatic este un fragment de program a c arui execut ie duce la inserarea unor c opii ale sale n alte programe de pe calculatorul pe care se execut a virusul. Impropriu, prin virus se mai desemneaz a un fragment, inserat ntr-un program util, care execut a act iuni nocive utilizatorului n contul c aruia se execut a acel program. Denumirea corect a pentru un astfel de program este aceea de cal troian. Denumirea de virus poate dat a, corect, doar fragmentelor de program capabile s a se reproduc a (s a- si insereze

c 2008, Radu-Lucian Lup sa


370 11.1. Pos ta electronica

c opii n alte programe). In contextul po stei electronice, un virus este un fragment dintr-un program plasat ca sier ata sat la un mesaj electronic. Virusul se poate reproduce e prin mijloace independente de po sta electronic a, e prin expedierea, c atre alt i utilizatori, a unor c opii ale mesajului. In acest al doilea caz, virusul utilizeaz a, de obicei, adrese extrase din lista, tinut a de MUA, a adreselor partenerilor de corespondent a ai utilizatorului care prime ste mesajul virusat. Indiferent de forma de propagare (infectarea sierelor locale sau transmiterea de mesaje spre alt i utilizatori), pentru a- si realiza scopul, un virus trebuie s a ajung a s a determine execut ia, cu drepturile utilizatorului victim a, a unei secvent e de instruct iuni aleas a de autorul virusului. Acest lucru se poate nt ampla n dou a moduri: Virusul se g ase ste ntr-un program executabil, pe care utilizatorul l execut a. Virusul este un document astfel construit nc at, exploat and o eroare din programul utilizat pentru vizualizarea documentului, s a determine programul de vizualizare s a execute act iunea dorit a de autorul virusului. Pentru a p ac ali destinatarul si a-l determina s a execute sau s a vizualizeze sierul ata st, corpul mesajului este construit astfel nc at s a c a stige ncrederea utilizatorului. Astfel, mesajul este adesea construit ca si c and ar proveni de la administratorul de sistem sau de la un prieten al destinatarului. Metodele de prevenire a viru silor de po st a electronic a sunt acelea si ca si metodele de prevenire a viru silor n general. Pentru programele executabile, dac a utilizatorul are ncredere n autorul declarat al programului (de exemplu, autorul este o rm a de soft de ncredere), atunci programul poate semnat electronic, iar utilizatorul poate verica aceast a semn atur a pentru a se convinge de autenticitatea programului. Pentru programe provenite din surse ce nu sunt de ncredere, execut ia lor se poate face ntr-un mediu controlat, de exemplu dintr-un cont separat, cu drepturi minime, sau prin intermediul unui interpretor care s a nu execute instruct iunile potent ial nocive. Aceast a din urm a abordare este utilizat a de applet -urile Java. Pe l ang a aceste metode de prevenire, exist a c ateva act iuni care mic soreaz a riscul sau consecint ele execut iei unui virus. Una dintre ele este reducerea la minimul necesar a lucrului din cont de administrator. Alt a m asur a preventiv a este aceea de a nu vizualiza sau executa sierele ata sate unui mesaj suspect; pentru aceasta, este bine ca expeditorul unui mesaj s a nu trimit a niciodat a un mesaj numai cu siere ata sate, ci s a scrie un mic text explicativ, care s a-i permit a destinatarului s a identice autorul si scopul sierelor ata sate.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 371

11.2. Sesiuni interactive la distant a


O sesiune interactiv a local a a unui utilizator (vezi g. 11.2) presupune c a tastatura, ecranul si eventual alte dispozitive cu ajutorul c arora utilizatorul interact ioneaz a cu sistemul de calcul (mouse, difuzoare, etc.) sunt conectate direct la calculatorul pe care se desf a soar a sesiunea utilizatorului. Conectarea este realizat a printr-o interfat a hardware de conectare a dispozitivelor periferice (RS232, PS/2, VGA, USB, DVI), care permite leg aturi pe distant e de cel mult c ateva zeci de metri. Un dispozitiv (tastatur a, ecran, etc.) este conectat la un singur calculator, mutarea lui de la un calculator la altul put andu-se face e prin mutarea zic a a conectorului, e prin comutatoare speciale (KVM switch).

login bash S. O. driver terminal

hard Terminal zic

Figura 11.2: Componentele implicate ntr-o sesiune interactiv a local a

In general ne g andim c a pe un astfel de sistem lucreaz a un singur utilizator la un moment dat. Totu si, exist a si posibilitatea de-a conecta mai multe ansambluri tastatur aecran la un acela si calculator, n felul acesta lucr and simultan mai mult i utilizatori. Acest mecanism s-a utilizat masiv n anii 1970, sistemele ind numite cu time-sharig. PC-urile au repetat, p an a la un punct, istoria calculatoarelor mari: au nceput ca sisteme monoutilizator, monotasking (sistemul DOS), au continuat cu un multitasking primitiv, bazat pe solut ii ad-hoc (deturnarea ntreruperilor n DOS, sistemul Windows p an a la versiunile 3.x), sisteme multitasking f ar a protect ie ntre utilizatori (Windows 9x si ME) si n nal sisteme multitasking propriu-zise (Windows NT/2000/XP si sistemele de tip UNIX Linux si porturile FreeBSD, Solaris, etc). Linux (prin mecanismul consolelor virtuale) si Windows XP (prin mecanismul switch user ) permit deschiderea simultan a a mai multor sesiuni locale de la acela si ansamblu tastatur aecran, pentru acela si utilizator sau pentru utilizatori distinct i. O singur a sesiune poate activ a la un moment dat, celelalte ind ,, nghet ate. Sistemul permite comutarea ntre sesiuni.

c 2008, Radu-Lucian Lup sa


372 11.2. Sesiuni interactive la distant a

In cazul unei sesiuni la distant a, n locul unui terminal, conectat printr-o interfat a specializat a la calculatorul pe care se desf a soar a sesiunea, se utilizeaz a un calculator, conectat prin ret ea la calculatorul pe care se desf a soar a sesiunea. In felul acesta, un utilizator aat n fat a unui calculator conectat la Internet poate deschide o sesiune la distant a c atre orice alt calculator din Internet (bine nt eles, cu condit ia s a aib a un cont acolo). Principial, num arul de sesiuni deschise simultan c atre un calculator este limitat doar de resursele calculatorului (memorie si vitez a de procesare). Deschiderea unei sesiuni prin mecanismul de sesiune la distant a se poate face si c atre calculatorul local. Acest mecanism poate utilizat pentru deschiderea unei sesiuni ca alt utilizator, f ar a a nchide prima sesiune.
server login bash telnet S. O. driver pseudoterminal hard client telnet S. O. driver terminal

hard

Calculator server

Ret ea

Calculator client

Terminal zic

Figura 11.3: Componentele implicate ntr-o sesiune interactiv a la distant a.

Sistemul pentru deschiderea sesiunilor la distant a (vezi g. 11.3) const a din dou a componente majore: Pe sistemul la care este conectat zic utilizatorul ruleaz a o aplicat ie care trimite prin ret ea ceea ce utilizatorul introduce de la tastatur a si a seaz a pe ecran ceea ce trimite sistemul de la distant a. A sarea se poate face pe tot ecranul sau ntr-o fereastr a. Aceast a aplicat ie deschide n mod activ conexiunea la deschiderea sesiunii, motiv pentru care este un client. Pe sistemul de la distant a, pe care are loc sesiunea, ruleaz a o aplicat ie care prime ste prin ret ea datele trimise de aplicat ia client si le livreaz a proceselor ce ruleaz a n cadrul sesiunii. De asemenea, preia datele de ie sire ale acestor procese datele care n cazul unei sesiuni locale s-ar a sa pe ecran si le trimite prin ret ea clientului. Aceast a aplicat ie este lansat a la pornirea sistemului si a steapt a conexiuni ind n acest sens un server. La conectarea unui client, aplicat ia server autentic a clientul dup a care ( n cazul unei autentic ari cu succes) lanseaz a procesele care sunt lansate n mod normal la deschiderea unei sesiuni. De exemplu,

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 373

n cazul unui sistem de tip UNIX, serverul lanseaz a n execut ie un shell rul and n contul utilizatorului. Pentru ca serverul s a comunice cu procesele din cadrul sesiunii, este necesar ca sistemul de operare s a ofere un mecanism adecvat de comunicat ie ntre procese. Mecanismul de comunicat ie trebuie s a apar a fat a de procesele din sesiunea utilizatorului ca si c and ar tastatura si ecranul adev arate. In cazul sistemelor de tip UNIX, acest mecanism este mecanismul pseudoterminalelor . De notat c a mecanismul pipe nu este adecvat deoarece un pipe nu apare procesului ca un terminal si nu permite, de exemplu, unui editor de texte, ce ar rula n sesiunea utilizatorului, s a solicite primirea ec arui caracter tastat n parte. De notat c a, n mod normal, un proces prime ste c ate o linie n momentul n care utilizatorul apas a enter ; p an a atunci nucleul sistemului permite utilizatorului editarea liniei.

11.2.1. Protocolul ssh


Protocolul ssh a fost dezvoltat ca o alternativ a, protejat a criptograc, la telnet. Protocolul ssh este ns a extensibil, permit and tunelarea protejat a criptograc a conexiunilor TCP pentru alte aplicat ii. Protocolul ssh este construit pe mai multe nivele. Nivelul cel mai de jos [RFC 4253, 2006] realizeaz a protejarea criptograc a a conexiunii si se bazeaz a pe serviciile de conexiune TCP oferite de sistemul de operare. Nivelul urm ator realizeaz a multiplexarea conexiunii protejate criptograc. Nivelul cel mai de deasupra cuprinde aplicat ia propriu-zis a si permite sesiuni de lucru, interactive sau nu, n mod text, c atre sisteme de tip UNIX, tunelarea unor conexiuni TCP arbitrare, transferul de siere si transmiterea informat iilor de autenticare criptograc a pentru alte sesiuni ssh. 11.2.1.1. Conexiunea ssh protejat a criptograc Descriem n continuare modul n care ssh realizeaz a protejarea criptograc a a conexiunii. Protocolul este un exemplu instructiv de utilizare practic a a primitivelor criptograce. In secvent a de init ializare a conexiunii care va descris a mai jos clientul si serverul stabilesc un identicator de sesiune si, pentru ecare sens, o cheie de criptare si o cheie de autenticare. De asemenea, se stabilesc algoritmii de criptare simetric a, compresie si dispersie cu cheie utilizat i pentru ecare sens al comunicat iei. Comunicat ia decurge complet independent n cele dou a sensuri.

c 2008, Radu-Lucian Lup sa


374 11.2. Sesiuni interactive la distant a

Pentru ecare sens, datele de transmis sunt grupate n pachete, de dimensiune variabil a. Pentru ecare pachet de date utile, se construie ste si se transmite pe conexiune un pachet generat astfel: 1. Datele utile sunt comprimate utiliz and algoritmul de compresie curent pentru sensul de comunicat ie curent. 2. Se adaug a, dup a datele comprimate, un sir de octet i aleatori, iar n fat a lor se adaug a un octet reprezent and lungimea sirului aleator. Apoi, n fat a sirului astfel obt inut, se adaug a lungimea total aa sirului, reprezentat a pe patru octet i. Num arul de octet i aleatori ad augat i trebuie astfel ales nc at s a rezulte n urma concaten arii un sir de lungime multiplu de lungimea blocului cifrului utilizat. 3. Rezultatul pasului precedent se cripteaz a. 4. In fat a blocului (necriptat) rezultat din pasul 2 se adaug a num arul de ordine al pachetului curent, dup a care din rezultatul concaten arii se calculeaz a dispersia cu cheia de autenticare curent a. Num arul de ordine ncepe de la 0 si cre ste cu 1 la ecare pachet independent de eventuala schimbare a cheilor sau algoritmilor criptograci utilizat i. 5. Pachetul transmis efectiv este rezultatul concaten arii pachetului criptat (rezultat din pasul 3) cu dispersia cu cheie (rezultat a din pasul 4). Rolul acestor transform ari este urm atorul. Pe de o parte, compresia cre ste entropia datelor de criptat, f ac and mai dicil a spargerea cifrului. Octet ii ad augat i la nalul blocului fac ca n cazul repet arii aceluia si bloc de date utile s a rezulte blocuri criptate diferite. Lungimea complet arii aleatoare este si ea criptat a, f ac and dicil a determinarea lungimii datelor utile din blocul criptat. Pe de alt a parte, dispersia criptograc a cu cheie se calculeaz a dintrun bloc cont in and datele utile si num arul de ordine al blocului, fapt ce permite receptorului s a verice c a datele sunt autentice si c a sunt proaspete num arul de ordine al blocului primit este cel a steptat. Num arul de ordine al blocului ind cunoscut receptorului, nu este nevoie s a e trimis efectiv. In cazul vreunei nepotriviri privitoare la dispersia criptograc a cu cheie a unui bloc, conexiunea este abandonat a. Remarc am faptul c a o astfel de nepotrivire poate cauzat a doar de o tentativ a de modicare a datelor de c atre un adversar activ, nivelul TCP si nivelele inferioare corect and erorile de transmisie la nivel zic si eventualele pierderi de pachete IP datorate unei congestii n ret ea. La deschiderea conexiunii ssh, compresia, criptarea si dispersia cu cheie sunt dezactivate. Negocierea primului set de chei si a algoritmilor de compresie, criptare si dispersie cu cheie se face n clar. O dat a alese cheile

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 375

si algoritmii, acestea sunt activate si se poate ncepe comunicat ia n folosul aplicat iilor. Algoritmii si cheile pot renegociate ulterior oridec ateori una dintre p art i (clientul sau serverul) o solicit a. Negocierea cheilor si algoritmilor se face dup a cum urmeaz a. Fiecare parte trimite liste, n ordinea descresc atoare a preferint ei, cu algoritmii de criptare, compresie, dispersie cu cheie, semn atur a digital a si schimb de chei suportate. Algoritmul utilizat, pentru ecare categorie, este primul algoritm de pe lista clientului care se reg ase ste si n lista serverului (adic a cel mai favorabil clientului, dintre cei acceptat i de server). Urmeaz a schimbul de mesaje conform protocolului Die-Hellman (ssh nu are denite deocamdat a alte metode de schimb de chei). Din informat ia secret a construit a prin schimbul DieHellman se construiesc (pe baza unor funct ii de dispersie f ar a cheie) cheile secrete pentru criptare si pentru autenticare pentru ecare sens. Mai r am ane de autenticat schimbul Die-Hellman, despre care am v azut c a, singur, este vulnerabil la atacul unui adversar activ. Autenticarea cheii fat a de client (adic a autenticarea, fat a de client, a serverului cu care comunic a acesta) se face dup a cum urmeaz a. Serverul are o pereche de chei pentru semn atur a electronic a. Clientul trebuie s a aib a cheia public a a serverului. Dup a realizarea schimbului Die-Hellman, serverul trimite clientului o semn atur a, calculat a cu cheia sa secret a, asupra ntregului schimb de informat ie de p an a atunci adic a listele de algoritmi suportat i si pachetele corespunz atoare protocolul Die-Hellman, emise de ambele p art i. Prin vericarea semn aturii, clientul se asigur a c a negocierea a avut loc ntr-adev ar cu serverul autentic. Autenticarea clientului fat a de server se face ulterior, exist and n acest scop mai multe mecanisme posibile (vezi 11.2.1.2). Pentru facilitarea r asp andirii utiliz arii protocolului ssh, serverul transmite la deschiderea conexiunii cheia sa public a c atre client. Not am c a, deoarece transmisia cheii publice a serverului nu poate nc a autenticat a, utilizarea de c atre client a cheii publice transmise de server prezint a riscul ca un adversar activ s a se dea drept serverul autentic. Dac a ns a adversarul n-a modicat cheia public a transmis a de server, restul comunicat iei este sigur. Mai mult, la prima conectare, clientul stocheaz a local cheia primit a de la server. La urm atoarele conect ari, clientul compar a cheia primit a de la server cu cea stocat a locat; dac a sunt diferite, avertizeaz a utilizatorul. In acest fel, dac a la prima conectare cheia primit a de client de la server este cea autentic a, orice atac ulterior din partea unui adversar activ este descoperit a. La prima conectare a programului client ssh la un server nou, clientul avertizeaz a utilizatorul cu privire la faptul c a nu poate verica cheia serverului. La aceast a prim a conectare, mpiedicarea unui atac al unui eventual adversar

c 2008, Radu-Lucian Lup sa


376 11.2. Sesiuni interactive la distant a

se poate face n dou a moduri: Inainte de prima conectare, utilizatorul copiaz a, de pe ma sina server sau dintr-o surs a autenticat a, cheia public a a serverului si o introduce manual n lista de chei memorate local de programul client ssh. In acest fel, clientul ssh poate verica cheia serverului chiar de la prima sesiune, ntocmai ca n cazul unei sesiuni ulterioare. Utilizatorul obt ine, dintr-o surs a autenticat a (de exemplu, vorbind la telefon cu administratorul ma sinii server), dispersia criptograc a a cheii publice a serverului. La prima conectare, utilizatorul compar a dispersia astfel obt inut a cu dispersia cheii trimise de server (aceasta este a sat a de clientul ssh mpreun a cu mesajul de avertisment prin care anunt a imposibilitatea veric arii cheii). Dac a cele dou a dispersii coincid, cheia trimis a de server este autentic a. Pe sistemele de tip UNIX, cheile publice ale serverului (pentru diferitele protocoale de semn atur a) se g asesc n directorul /etc/ssh, n sierele ssh_host_rsa_key.pub, respectiv ssh_host_dsa_key.pub. Aceste siere pot citite de orice utilizator al sistemului. Amprenta cheii dintr-un astfel de sier se determin a cu comanda ssh-keygen -l -f sier. Cleintul ssh memoreaz a cheile serverelor n sierul ~/.ssh/known_hosts. 11.2.1.2. Metode de autenticare n ssh In ssh, exist a autenticare reciproc a ntre client si server. A sa cum am v azut, serverul se autentic a fat a de client cu ajutorul unui mecanism cu cheie privat a si cheie public a. Dup a init ializarea mecanismului de protect ie criptograc a a conexiunii, este r andul clientului s a- si declare identitatea (numele de utilizator) si s a se autentice. Clientul poate autenticat de server prin mai multe metode. Cele mai comune sunt autenticarea prin parol a si autenticarea prin semn atur a digital a (numit a si autenticare cu cheie public a). Autenticarea prin parol a presupune trimiterea de c atre client a parolei. Este esent ial faptul c a serverul este deja autenticat si condent ialitatea, integritatea si prospet imea comunicat iei sunt protejate. Ca urmare clientul nu risc a s a trimit a parola unui adversar si nici ca un adversar ce capteaz a comunicat ia criptat a s a retrimit a datele interceptate pentru a repeta o sesiune legitim a. Autenticarea prin semn atur a digital a presupune ca n faza de init ializare utilizatorul s a congureze pe server o cheie public a, corespunz atoare

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 377

cheii sale secrete. La conectare, clientul se autentic a trimit and semn atura, cu cheia sa secret a, asupra identicatorului de sesiune creat n faza de stabilire a comunicat iei protejate criptograc. Serverul veric a semn atura utiliz and cheia public a ce a fost congurat a. Congurarea autentic arii cu cheie public a, pe sistemele de tip UNIX av and server OpenSSH, este descris a n continuare. Perechile de chei se genereaz a cu ajutorul utilitarului ssh-keygen. Cheia public a admisibil a pentru conectarea n contul unui utilizator se scrie n sierul ~/.ssh/authorized_keys (sub directorul personal al utilizatorului). Deoarece acest sier poate modicat doar de c atre posesorul contului, doar posesorul contului poate stabili cheia admisibil a pentru autenticare. Fi sierul ~/.ssh/autthorized_keys poate cont ine mai multe chei. In acest caz, oricare dintre cheile secrete corespunz atoare este valid a pentru autenticare. Este posibil ca, pentru anumite chei, s a se congureze lansarea unei anumite aplicat ii; n acest caz, dac a clientul utilizeaz a cheia pereche pentru autenticare, i se va lansa automat aplicat ia respectiv a si nu o sesiune nerestrict ionat a. Pentru schimbarea cheii, de exemplu n cazul compromiterii cheii secrete, utilizatorul trebuie s a genereze o nou a pereche de chei, s a scrie noua cheie public a n sierul ~/.ssh/authorized_keys, s a stearg a vechea cheie public a din acest sier si s a furnizeze noua cheie secret a clientului ssh la conect arile ulterioare. Deoarece cheia public a nu este o informat ie secret a, compromiterea sistemului server nu duce la compromiterea, si deci la necesitatea schimb arii, cheii. Acesta este un avantaj fat a de cazul autentic arii prin parole, unde compromiterea serverului duce la compromiterea parolei si la necesitatea schimb arii parolei nu numai pe acel sistem ci si pe alte sisteme pe care utilizatorul avea aceea si parol a. Pentru furnizarea cheii secrete c atre clientul ssh, exist a dou a posibilit a ti. Prima posibilitate este ca sierul cu cheia secret a s a e f acut disponibil clientului ssh. Dac a sierul cont ine cheia secret a ca atare, conectarea se face f ar a ca utilizatorul s a mai dea vreo parol a. Dac a utilizatorul dore ste s a se conecteze de pe ma sini (client) diferite, trebuie e s a poarte cheia cu el pe un suport amovibil, e s a pun a copii ale cheii secrete pe ecare sistem, e s a utilizeze chei diferite pentru conectarea de pe ecare sistem. Ultima solut ie ofer a avantajul c a, n cazul compromiterii unuia dintre sistemele client, este necesar a schimbarea cheii secrete doar de pe acel sistem. Deoarece compromiterea unui sistem client duce, n cazul stoc arii ca atare a cheii secrete, la compromiterea imediat a a contului utilizatorului, cheile secrete se stocheaz a, n mod obi snuit, n form a criptat a n siere. Criptarea

c 2008, Radu-Lucian Lup sa


378 11.2. Sesiuni interactive la distant a

se realizeaz a printr-un algoritm simetric cu ajutorul unei chei derivate dintr-o parol a aleas a de utilizator. Stocarea cheii numai n form a criptat a ofer a un plus de sigurant a (un intrus trebuie s a obt in a at at sierul cu cheia secret a, c at si parola de decriptare a acestuia), ns a duce la necesitatea de a da clientului ssh parola de decriptare la ecare utilizare. A doua posibilitate de a furniza aplicat iei client accesul la cheia secret a este prin intermediul unui program numit agent de autenticare . Agentul de autenticare este un proces server care are n memorie cheia secret aa utilizatorului, n forma decriptat a. Clientul ssh se conecteaz a la agentul de autenticare pentru a obt ine accesul la cheie. Agentul de autenticare, av and ca nume de executabil ssh-agent, se lanseaz a de regul a la deschiderea sesiunii pe ma sina client. Cheile secrete se ncarc a n agentul de autenticare cu ajutorul unui program numit ssh-add. Acest program permite si listarea si stergerea cheilor secrete. Dac a cheia secret a este stocat a criptat, ssh-add solicit a utilizatorului parola de decriptare. Cheia secret a decriptat a se g ase ste doar n memoria agentului de autenticare, nu se stocheaz a pe disc. La lansare, clientul ssh caut a s a vad a dac a pe ma sina local a ruleaz a un agent de autenticare. Dac a da, contacteaz a agentul de autenticare si-i solicit a accesul la cheile secrete stocate de acesta. Clientul ssh paseaz a agentului identicatorul de sesiune si prime ste napoi semn atura cu cheia secret a asupra acestuia. In acest fel, clientul ssh nu ajunge s a cunoasc a efectiv cheia secret a. Deschiderea sesiunii c atre ma sina server se face f ar a a solicita utilizatorului vreo parol a. Comunicat ia dintre clientul ssh sau utilitarul ssh-add si agentul de autenticare se face printr-un socket de tip UNIX, al c arui nume este pus n variabila de mediu SSH_AUTH_SOCK. Comunicat ia ind local a, ea nu poate interceptat a sau modicat a. Autenticarea clientului (ssh sau ssh-add ) se face prin aceea c a drepturile de acces la socket-ul corespunz ator sunt acordate doar proprietarului agentului de autenticare. Protocolul ssh permite construct ia unei conexiuni securizate dinspre ma sina server ssh spre agentul de autenticare de pe ma sina client ssh. In acest caz, la deschiderea sesiunii, serverul ssh act ioneaz a si ca un agent de autenticare. Cererile de semn atur a primite de serverul ssh sunt trimise prin conexiunea ssh c atre client, iar clientul le trimite agentului local (de pe ma sina client). Prelungirea nu se poate face n lipsa unui agent de autenticare pe ma sina client. Analiz and securitatea prelungirii conexiunii la agentul de autenticare, observ am c a serverul nu obt ine efectiv cheia secret a, ns a, pe durata

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 379

conexiunii, poate deschide sesiuni n numele clientului c atre orice ma sin a care accept a cheile stocate n agentul de autenticare. Din acest motiv, clientul ssh nu face prelungirea conexiunii la agentul de autenticare dec at la cererea explicit a a utilizatorului. 11.2.1.3. Multiplexarea conexiunii, tunelarea si aplicat ii O dat a deschis a conexiunea si realizat a autenticarea clientului, clientul ssh poate solicita serverului deschiderea unei sesiuni de lucru, adic a n esent a lansarea unui shell n contul utilizatorului autenticat. Tot la solicitarea clientului, canalul de comunicat ie creat de server ntre server si shell -ul lansat poate realizat printr-un pseudoterminal (cazul obi snuit al unei sesiuni interactive) sau printr-o pereche de pipe -uri. A doua variant a se utilizeaz a n cazul n care utilizatorul a lansat clientul ssh cu specicarea unei comenzi de executat pe server. In acest caz, comanda specicat a de utilizator este transmis a serverului si acesta o execut a cu intrarea si ie sirea redirect ionate c atre server si prelungite prin conexiunea securizat a c atre client. Redirect ion and pe client intrarea sau ie sirea standard a comenzii ssh, se realizeaz a, per ansamblu, redirect ionarea intr arii sau ie sirii standard c atre siere sau pipe -uri de pe ma sina local a pentru comanda executat a la distant a. Exemplul 11.5: Comanda
ssh rlupsa@nessie.cs.ubbcluj.ro ls -l > lista

are ca efect nal crearea, pe ma sina local a, a unui sier lista, cont in and lista numelor de siere de pe ma sina nessie.cs.ubbcluj.ro din directorul personal al utilizatorului rlupsa.

11.2.2. Sistemul X-Window


Sistemul X-Window, dezvoltat de Massachuttes Institute of Technology pe la mijlocul anilor 1980, este un sistem ce permite stabilirea de sesiuni la distant a n mod grac. Descriem n continuare arhitectura X Window. Ment ion am c a este diferit a fat a de sistemele studiate p an a aici. Diferent a provine n primul r and din faptul c a sistemul X Window are si scopul de-a asigura proceselor acces la ecranul grac local. O prim a component a a sistemului este serverul X. Acesta este un proces, av and de regul a acces privilegiat la sistem, care gestioneaz a tastatura si ecranul local. O aplicat ie ce are nevoie de acces la un ecran grac si la

c 2008, Radu-Lucian Lup sa


380 11.2. Sesiuni interactive la distant a

tastatura ata sat a se nume ste client X. Un client X se conecteaz a la serverul X si, dup a auteticare, poate: s a cear a serverului s a deseneze diverse lucruri pe ecran; s a solicite s a primeasc a inform ari cu privire la tastele ap asate de utilizator si la mi sc arile mouse-ului. La un server se pot conecta simultan mai mult i client i, inclusiv de pe calculatoare diferite. Serverul tine evident a unor ferestre, ecare operat ie de desenare av and specicat a o fereastr a n care s a deseneze. Ecranul cu totul este considerat o fereastr a, iar n ecare fereastr a se pot deschide subferestre. Serverul tine evident a modului n care se suprapun ferestrele si determin a ce parte din desenul efectuat ntr-o fereastr a este vizibil si trebuie desenat pe ecran. Un client autenticat are acces deplin la tastatura si ecranul gestionate de server. Asta nseamn a, de exemplu, c a un client poate s a deseneze ntr-o fereastr a deschis a de alt client si poate s a capteze tot ceea ce tasteaz a utilizatorul n acea fereastr a. De principiu, sunt admise la un moment dat s a se conecteze doar aplicat ii rul and n contul aceluia si utilizator. Pentru ca aplicat ii distincte s a nu se ncurce reciproc, exist a ni ste convent ii pe care aplicat iile se recomand a s a le respecte. In linii mari, acestea prev ad ca o aplicat ie s a nu deseneze n ferestrele deschise de alt a aplicat ie si s a nu capteze tastele c and nu este activ a. Comutarea ntre aplicat ii, precum si mutarea si redimensionarea ferestrelor principale ale aplicat iilor, cad n sarcina unui client mai special numit window manager . Window manager -ul se conecteaz a si se autentic a ca un client obi snuit, dup a care solicit a serverului s a e informat de cererile de deschidere de ferestre trimise de ceilalt i client i. La ecare fereastr a principal a deschis a, window manager -ul adaug a bara de titlu si marginile. Deoarece oricum nu exist a protect ie ntre client ii conectat i la un server X, un client nu are nevoie de privilegii speciale ca s a act ioneze ca window manager. Totu si, c ateva dintre operat iile de care are nevoie un window manager ca s a funct ioneze sunt acordate de serverul X doar unui client la un moment dat. Ca urmare, nu pot exista dou a window manager -e simultan.

11.3. Transferul sierelor n ret ea


Cerint a de-a transfera siere n ret ea poate avea diferite particularit a ti. Exist a mai multe protocoale si mai multe aplicat ii pentru transferul sierelor n ret ea, adaptate pentru diferite necesit a ti.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 381

O prim a categorie de protocoale si aplicat ii prive ste, n principal, transferul sierelor unui utilizator de pe o ma sin a pe alta, n condit iile n care utilizatorul are cont pe ambele ma sini. Protocoalele construite pentru aceasta sunt ftp si ssh. De notat c a si po sta electronic a poate servi ca mecanism de transfer de siere. O a doua categorie prive ste transferul sierelor publice de la un calculator ce stocheaz a astfel de siere la calculatorul unui utilizator ce dore ste s a citeasc a sierele respective. Init ial se utiliza protocolul ftp n acest scop. Protocolul utilizat n mod curent este ns a http. O a treia categorie pive ste accesul proceselor de pe un calculator la siere stocate pe alt calculator ca si c and sierele ar locale. De principiu sierele respective sunt private, ca si pentru prima categorie de protocoale. Protocoalele din aceast a categorie trebuie s a satisfac a dou a cerint e specice (fat a de prima categorie): s a permit a transferul doar a unei p art i mici dintrun sier si s a permit a controlul partaj arii sierului ntre procese. Protocoalele utilizate aici sunt SMB (utilizat n ret elele Windows) si NFS.

11.3.1. Protocolul ftp


Descriem pe scurt conceptele de baz a ale protocolului ftp . Pentru detalii, a se vedea [RFC 765, 1985]. Clientul deschide o conexiune TCP c atre portul 21 al serverului; aceast a conexiune se nume ste conexiune de control. Prin conexiunea de control, clientul transmite comenzi n format text, c ate o comand a pe o linie. Fiecare comand a ncepe cu numele comenzii urmat de eventuali parametrii. Parametrii sunt separat i prin spat ii, at at fat a de numele comenzii c at si ntre ei. Serverul r aspunde tot n format text, ecare r aspuns ncep and cu un cod care arat a dac a comanda s-a executat cu succes sau ce erori s-au produs, dup a care urmeaz a un text ce descrie, n limbaj natural, rezultatul execut iei comenzii. Cu o singur a except ie ( n cazul comenzii PASV, descris a mai jos), textul din r aspuns nu este interpretat de c atre aplicat ia client. El este ns a a sat, de obicei, pe ecran utilizatorului aplicat iei client. Autenticarea se face la solicitarea clientului. Clientul trimite succesiv dou a comenzi, USER si PASS, av and ca parametrii respectiv numele utilizatorului si parola acestuia. Serverul refuz a execut ia majorit a tii comenzilor clientului nainte de autenticarea cu succes a acestuia. Dup a autenticare, serverul accept a s a efectueze operat iile cerute de client doar dac a utilizatorul n contul c aruia s-a f acut autenticarea are dreptul la operat iile respective. Pe sistemele de tip UNIX, reglementarea drepturilor de acces se face de obicei astfel: la lansare, serverul ruleaz a din contul root; la conectarea unui client,

c 2008, Radu-Lucian Lup sa


382 11.3. Transferul fis ierelor n ret ea

serverul creaz a (prin apelul sistem fork()) un proces u care se ocup a de acel client; dup a autenticare, procesul u trece n contul utilizatorului autenticat (prin apelul setuid()); n continuare, serverul accept a orice comenzi de la client si ncearc a s a le execute, iar vericarea drepturilor de acces este f acut a de nucleul sistemului de operare n momentul n care procesul server u ncearc a s a acceseze sistemul de siere. Pentru transferul de siere publice, serverul este congurat s a accepte autenticare cu numele de utilizator ftp sau anonymous f ar a s a solicite parol a sau accept and orice sir de caractere pe post de parol a. In vremurile de nceput ale Internet-ului, se obi snuia ca un utilizator ce dorea acces la siere publice s a si dea, pe post de parol a, adresa sa de po st a electronic a. O dat a cu r asp andirea spam -urilor, s-a renunt at la acest obicei. Transferul sierelor se cere prin comenzile SEND (dinspre client spre server) si RETR (dinspre server spre client). Comenzile au ca argument numele de pe server al sierului de transferat. Transferul propriu-zis are loc printr-o conexiune separat a, numit a conexiune de date. Pentru ecare sier se deschide o nou a conexiune de date, care se nchide la nalul transferului sierului. Dimensiunea sierului nu este specicat a explicit nic aieri, receptorul sierului obt in and lungimea din faptul c a emit atorul nchide conexiunea de date la nalul sierului. Exist a dou a moduri de deschidere a conexiunii de date: Modul activ prevede c a serverul deschide conexiunea de date ca o conexiune TCP dinspre portul 20 al serverului c atre un port specicat de client. Clientul specic a portul pe care a steapt a conexiunea prin comanda PORT. Conexiunea se deschide ca urmare a comenzii de transfer (SEND sau RETR), nu imediat dup a primirea comenzii PORT. Modul pasiv prevede deschiderea conexiunii de date de c atre client, dinspre un port oarecare al s au, c atre un port specicat de server. Portul specicat de server se obt ine ca r aspuns al comenzii PASV date de client. Acesta este singurul caz n care clientul interpreteaz a din r aspunsul serverului si altceva dec at codul returnat. Listarea sierelor de pe server este solicitat a de client prin comanda LIST. Trasnferul listei de siere se face tot printr-o conexiune de date, ca si n cazul comenzii RETR.

11.3.2. Protocolul HTTP


HyperText Transmission Protocol (HTTP) este un protocol elaborat pentru transferul dinspre server spre client a sierelor cu informat ii disponibile

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 383

public. El nlocuie ste protocolul ftp utilizat cu conectare ca utilizator anonymous. De si numele protocolului face referire la hipertext, el poate utilizat pentru a transfera orice fel de cont inut. Protocolul de baz a const a n trimiterea de c atre client a unei cereri, n care informat ia principal a este numele sierului cerut. R aspunsul serverului cont ine ni ste informat ii despre sier si cont inutul efectiv al sierului. Implicit, conexiunea se nchide dup a transferul unui sier. Dac a clientul dore ste mai multe siere de pe acela si server, va trebui s a deschid a c ate o conexiune pentru ecare sier. Protocolul a fost ns a extins, ajung and s a e folosit ca protocol de transfer de date pentru aplicat ii de orice tip. 11.3.2.1. Structura cererilor si a r aspunsurilor Formatul comunicat iei este mixt, at at la cereri c at si la r aspunsuri. Partea de nceput este text, iar cont inutul sierului este binar. Cererea cuprinde, pe prima linie, un cuv ant reprezent and numele operat iei cerut a. Pentru solicitarea unui sier public de pe server, numele este GET. Dup a numele operat iei urmeaz a numele sierului si apoi identicarea versiunii de protocol n conformitate cu care este format a cererea. Cele trei elemente sunt separate prin c ate un spat iu. Urm atoarele linii sunt de forma nume :valoare, similar cu antetul unui mesaj de po st a electronic a. Dup a ultima linie de antet urmeaz a o linie vid a. Pentru unele tipuri de cereri, dup a linia goal a se g ase ste un cont inut. In acest caz, una dintre liniile din antet are numele Content-length si are ca valoare lungimea cont inutului, dat a ca sir de cifre zecimale. R aspunsul este structurat similar cu cererea. Pe prima linie se a a identicatorul versiunii HTTP, num ar de trei cifre si un text. Num arul arat a dac a cererea a fost satisf acut a cu succes sau nu, iar textul, neinterpretat de client, este o descriere n cuvinte a semnicat iei codului de trei cifre. Urm atoarele linii sunt de forma nume :valoare si dau informat ii despre sierul solicitat. Dup a ultima linie de antet urmeaz a o linie vid a si apoi cont inutul (binar) al sierului. In antet se g ase ste o linie cu numele Content-length av and ca valoare lungimea sierului. Determinarea sf ar sitului cont inutului propriu-zis de c atre client trebuie f acut a prin num area octet ilor din partea de cont inut. Adesea, mai multe servere HTTP sunt g azduite zic pe acela si calculator. In acest caz, e numele serverelor corespund, prin DNS, unor adrese IP diferite, dar apart in and aceluia si calculator, caz n care serverul este congurat s a r aspund a n funct ie de IP-ul c atre care a fost deschis a conexiunea,

c 2008, Radu-Lucian Lup sa


384 11.3. Transferul fis ierelor n ret ea

e numele serverelor corespund aceleia si adrese IP, caz n care este necesar ca n cererea HTTP s a e specicat serverul dorit. Acest lucru se realizeaz a prin aceea c a, n cererea clientului, se plaseaz a un antet cu numele Host si av and ca valoare numele de server dorit. 11.3.2.2. URL-urile O pagin a web este n general un sier scris n HyperText Markup Language (HTTP) si oferit n acces public prin protocolul HTTP. O pagin a web const a, de obicei, din mai multe siere. Exist a un sier de baz a, scris n limbajul HTML, si alte siere, cont in and anumite elemente ale paginii: imagini ( n siere separate n formate specice JPEG, PNG, GIF), applet-uri (Java), specic ari de formatare a paginii ( siere Cascading Style Sheet CSS). De asemenea, o pagin a cont ine n general leg aturi (link -uri) spre alte pagini. Toate acestea necesit a referiri dintr-un sier HTML c atre alte siere disponibile n acces public. Referirea acestor siere se face prin nume care s a permit a reg asirea lor u soar a. Un Universal Resource Locator (URL) este un nume prin care se poate identica si cu ajutorul c arora se potate reg asi o resurs a disponibile n Internet. URL-urile au ap arut ca un format standard de scriere a numelor sierelor referite din paginile web; ele permit ns a utiliz ari mult mai vaste. Un URL este alc atuit n general din trei componente: Tipul identic a protocolul utilizat. Exemple mai cunoscute sunt: http, ftp, https, mailto. Numele ma sinii este numele de domeniu sau adresa IP a ma sinii pe care se g ase ste resursa ( sierul). Pe l ang a numele ma sinii, n cadrul acestei componente se poate ad auga numele de utilizator n contul c aruia trebuie s a se autentice un client pentru a obt ine accesul dorit la resurs a. Numele de utilizator se d a n fat a numelui sau adresei ma sinii, separat de acesta prin caracterul @. Standardul original prevedea si posibilitatea de-a scrie n URL parola necesar a conect arii. Aceast a utilizare este nerecomandat a. Calea identic a resursa ( sierul) n cadrul serverului care o g azduie ste. In principiu, ea este calea complet a a sierului cerut, relativ a la un director de baz a, xat, al documentelor publice. URL-urile se pot utiliza si se utilizeaz a efectiv n multe alte scopuri dec at identicarea paginilor web. De exemplu, sistemul SubVersion (SVN) utilizeaz a URL-uri de forma svn://ma sin a /cale pentru a referi sierele dintrun repository.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 385

11.3.2.3. Alte facilit a ti HTTP Antetul r aspunsului HTTP ofer a mai multe informat ii despre sierul returnat: Tipul cont inutului sierului este specicat de c atre server prin intermediul unui antet cu numale Content-type si cu valoarea construit a ca si n cazul antetului Mime-type de la po sta electronic a. Tot ca si n cazul lui Mime-type, tipul cont inutului poate urmat de specicarea codic arii utilizate pentru text; de exemplu,
Content-type: text/html; charset=utf-8

nseamn a c a sierul este de tip HTML, iar codicarea utilizat a pentru caractere este UTF-8. Data ultimei modic ari a sierului este specicat a prin valoarea antetului cu numele Date. Tipul de compresie utilizat (dac a sierul returnat este comprimat) este dat ca valoare a antetului Content-transfer-encoding. Limba n care este scris textul din sier (dac a este cazul) este returnat a ca valoare a antetului Language:. Este posibil ca unui URL s a-i corespund a mai multe siere pe server, av and cont inut echivalent, dar n diverse formate, limbi sau codic ari. Pentru a select iona varianta dorit a, clientul poate anunt a posibilit a tile si preferint ele sale cu privire la tipul de sier, limb a si codicare. Antetele corespunz atoare, din cererea clientului, sunt: Accept, Accept-language si Accept-encoding. Fiecare dintre acestea are ca valoare o list a de variante, n ordinea preferint ei. De exemplu,
Accept-language: ro,en,fr

solicit a serverului, de preferint a, varianta n limba rom an a a textului. Dac ao variant a n limba rom an a nu este disponibil a, se solicit a una n limba englez a, iar n lipsa acesteia una n limba francez a. Protocolul HTTP permite formularea de cereri condit ionate sau par tiale. O cerere part ial a este util a dac a sierul cerut este mare si clientul dore ste s a-l aduc a din buc a ti sau dac a la o cerere precedent a a c azut leg atura dup a transferul unei p art i din sier. O cerere condit ionat a determin a serverul s a transmit a clientului sierul numai dac a este ndeplinit a o anumit a condit ie, cel mai adesea dac a a fost modicat mai recent dec at o anumit a dat a specicat a

c 2008, Radu-Lucian Lup sa


386 11.3. Transferul fis ierelor n ret ea

de client. Dac a nu este ndeplinit a condit ia, serverul d a un r aspuns format doar din antet, f ar a cont inutul propriu-zis. Aceast a facilitate este util a dac a clientul det ine o copie a unui sier si dore ste mprosp atarea acesteia. Cererea part ial a se specic a de c atre client prin intermediul antetului Range; cererea condit ionat a se specic a prin antetul If-modified-since. Pentru optimizarea tracului, n cazul n care un client dore ste mai multe siere de pe acela si server (aceasta se nt ampl a adesea n cazul n care clientul aduce un sier html, iar apoi are de adus imaginile si eventual alte obiecte din document), este prev azut a posibilitatea de-a p astra conexiunea deschis a pe durata mai multor cereri. In acest scop, clientul cere p astrarea conexiunii deschise, plas and n cerere antetul
Connection: keep-alive

Pentru a nu permite unor client i s a deschid a o conexiune si apoi s a o lase deschis a la nesf ar sit, tin and ocupate resurse pe server, serverul trebuie congurat s a nchid a automat conexiunea dac a nu se transfer a date o perioad a de timp. Este uneori util ca un utilizator care acceseaz a un URL s a e redirec tionat automat c atre alt URL. Aceasta se nt ampl a dac a administratorul saitului decide o reorganizare a paginilor si dore ste ca utilizatorii care au ret inut URL-uri desint ate n urma reorganiz arii s a e redirect ionat i c atre paginile corespunz atoare din noua organizare. Aceast a redirectionare se face prin trimiterea de c atre server a unui antet cu numele Location si av and drept cont inut URL-ul spre care se dore ste redirect ionarea clientului. In acest caz, programul client nu a seaz a cont inutul returnat de server (cont inut care n mod normal lipse ste complet), ci cere si a seaz a cont inutul de la URL-ul indicat n antetul Location. 11.3.2.4. Proxy HTTP Un proxy HTTP este un proces care, fat a de un client HTTP, act ioneaz a aproape ca un server HTTP, iar pentru satisfacerea cererii contacteaz a serverul solicitat de client si act ioneaz a, fat a de acest server, ca un client. Un proxy HTTP este utilizat n mod normal pentru urm atoarele funct ii: dac a dintr-o ret ea local a exist a sanse mari ca mai mult i utilizatori s a acceseze acelea si pagini web: In acest caz, client ii HTTP ai calculatoarelor din ret ea se congureaz a s a utilizeze un acela si proxy HTTP din ret eaua local a. Dac a exist a mai multe cereri pentru aceea si pagin a, la prima cerere proxy -ul memoreaz a pagina adus a, iar la urm atoarele cereri o serve ste client ilor din memoria local a.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 387

dac a ntr-o ret ea se utilizeaz a adrese IP locale (vezi 10.2.4.1 si 10.7.2) si nu se dore ste congurarea unui mecanism de translat ie de adrese (NAT, 10.7.3): In acest caz, se instaleaz a un proxy HTTP pe un calculator din ret eaua local a dar av and si adres a IP public a. Clientul acceseaz a proxy -ul prin ret eaua local a, iar proxy -ul, av and adres a public a, poate accesa f ar a restrict ii serverul dorit. dac a este de dorit un control n asupra paginilor ce pot accesate dintro ret ea local a (de exemplu, pentru a restrict iona accesul angajat ilor la saituri nelegate de activitatea lor normal a). In acest caz, se congureaz a un proxy n care se congureaz a toate restrict iile de acces dorite. Apoi, pentru a mpiedica accesul direct, prin evitarea proxy -ului, pe ruterul ce leag a ret eaua intern a la Internet se congureaz a un ltru de pachete ( 10.7.1) care s a blocheze pachetele adresate portului TCP 80 al serverelor exterioare. O diferent a ntre protocolul de comunicat ie dintre un client si un proxy fat a de protocolul client-server este c a, dup a o cerere (de exemplu, GET), la protocolul client-server urmeaz a calea local a din URL, iar la protocolul client-proxy urmeaz a URL-ul solicitat (inclusiv numele protocolului si numele serverului). O a doua diferent a este dat a de existent a unei cereri, CONNECT, ce poate adresat a doar unui proxy. La primirea unei cereri CONNECT, proxy ul deschide o conexiune c atre serverul specicat n comanda CONNECT si apoi retrimite datele dinspre client direct spre server si, reciproc, dinspre server napoi spre client. In cazul unei cereri CONNECT, proxy -ul nu se implic a mai departe n comunicat ia dintre client si server. Ca urmare, n acest caz proxy -ul nu mai memoreaz a paginile aduse si nu permite ltrarea cererilor dec at dup a serverul si portul la care se conecteaz a, n schimb permite tunelarea oric arui protocol (nu numai a protocolului HTTP) ntre un client dintr-o ret ea cu adrese interne si un server din Internet. 11.3.2.5. Conexiuni securizate: SSL/TLS SSL Secure Sockets Layer , rom. nivelul conexiunilor securizate este un protocol pentru securizarea conexiunilor. A fost creat de rma Netscape n vederea securiz arii comunicat iei ntre clientul si serverul HTTP. Protocolul este ns a sucient de exibil pentru a permite oric arei aplicat ii ce comunic a prin conexiuni s a-l foloseasc a. TLS [RFC 4346, 2006] Transport Layer Security, rom. securitate la nivel transport este derivat din SSL versiunea 3, dar dezvoltat de IETF (Internet Engineering Task Force). In cele ce

c 2008, Radu-Lucian Lup sa


388 11.3. Transferul fis ierelor n ret ea

urmeaz a, vom discuta doar despre TLS, ns a toate chestiunile prezentate sunt valabile si pentru SSL. Protocolul TLS presupune existent a unei leg aturi nesecurizate ntre un client (entitatea care init iaz a activ comunicat ia) si un server (entitatea care a steapt a s a e contactat a de c atre client). Leg atura nesecurizat a este, n mod obi snuit, o conexiune TCP. Protocolul TLS ofer a un serviciu de tip conexiune. TLS asigur a condent ialitatea si autenticitatea datelor utile transportate. Datele utile transportate de TLS pot apart ine oric arui protocol. Protocolul ale c arui date sunt transportate ca date utile de c atre TLS este numit tunelat prin TLS. In cadrul init ierii unei conexiuni TLS, se realizeaz a stabilirea unei chei de sesiune care este utilizat a n continuare pentru securizarea transportului datelor utile. Autenticarea stabilirii cheii poate unilateral a, doar clientul autentic and serverul cu care a realizat negocierea cheii de sesiune, sau bilateral a. In cazul autentic arii unilaterale, se poate utiliza o autenticare a clientului fat a de server n cadrul protocolului tunelat. In acest caz, deoarece serverul este deja autenticat, autenticarea clientului poate f acut a prin parol a, f ar a riscul ca parola s a e transmis a unui adversar. Autenticarea stabilirii cheii de sesiune se face printr-un mecanism de semn atur a digital a. Pentru distribuirea sigur a a cheilor publice, utilizate n cadrul autentic arii, se utilizeaz a certicate ( 6.3.4). Serverul trebuie s a aib a o pereche de chei pentru semn atur a digital a si un certicat, semnat de o autoritate n care clientul are ncredere, pentru cheia public a. La init ierea conexiunii TLS, serverul transmite clientului certicatul s au Clientul veric a faptul c a numele din certicat coincide cu numele serverului la care dorea conectarea, c a semn atura autorit a tii de certicare asupra certicatului este valid a, c a autoritatea de certicare este de ncredere si, n nal, utilizeaz a cheia public a din certicatul clientului pentru a autentica stabilirea cheii de sesiune. Dac a se dore ste si autenticarea clientului fat a de server tot prin TLS, atunci clientul trebuie s a aib a, la r andul s au, o pereche de chei si un certicat. In vederea veric arii semn aturii din certicat si a faptului c a semnatarul (autoritatea de certicare) este de ncredere, ecare dintre parteneri trebuie s a aib a o list a cu cheile autorit a tilor de certicare de ncredere. Cheia unei autorit a ti de certicare este, n mod obi snuit, plasat a tot ntr-un certicat. Certicatul unei autorit a ti de certicare poate semnat de c atre o alt a autoritate de certicare sau chiar de c atre autoritatea posesoare a certicatului. In acest din urm a caz, certicatul se nume ste certicat autosemnat

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 389

(engl. self-signed certicate ) sau certicat r ad acin a (engl. root certicate ). In majoritatea cazurilor, clientul are o mult ime de certicate autosemnate ale autorit a tilor n care are ncredere. Exist a mai multe produse soft pentru crearea perechilor de chei si pentru crearea si semnarea certicatelor. Un astfel de produs este OpenSSL, disponibil pe sistemele de tip UNIX. 11.3.2.6. Utilizarea TLS pentru web Transferul securizat al paginilor web se realizeaz a prin tunelarea protocolului HTTP peste SSL sau TLS. Construct ia realizat a se nume ste HTTPS. URL-urile resurselor accesibile prin conexiuni securizate au, ca nume al protocolului, sirul de caractere https ( n loc de http). Un navigator web care are de adus o pagin a a c arei URL are, n partea de protocol, https, execut a urm atoarele: Afar a de cazul n care URL-ul specic a explicit un num ar de port, clientul deschide conexiunea c atre portul 443 al serverului ( n loc de portul 80, implicit pentru HTTP). Dac a, n locul contact arii directe a serverului web, se utilizeaz a un proxy, clientul trimite serverului proxy o cerere CONNECT pentru stabilirea conexiunii spre server. Prin aceast a conexiune, stabilit a prin intermediul proxy -ului, se transmit mesajele SSL sau TLS, n cadrul c arora se transmit datele HTTP. La deschiderea conexiunii (e conexiune TCP direct a, e un lant de conexiuni TCP prin intermediul proxy -ului), are loc mai nt ai schimbul de mesaje legat de stabilirea cheii SSL sau TLS. Dup a init ializarea conexiunii securizate, prin canalul securizat are loc un dialog conform protocolului HTTP. Cu alte cuvinte, cererile si r aspunsurile HTTP constituie date utile pentru nivelul SSL sau TLS. Autenticarea serverului, n cadrul protocolului TLS, necesit a, a sa cum am v azut, ca navigatorul web s a dispun a de certicatele autorit a tilor de certicare de ncredere. In general, produc atorii de navigatoare ncorporeaz a n acestea ni ste certicate, ale unor autorit a ti de certicare larg recunoscute. Utilizatorul poate ns a s a dezactiveze oricare dintre aceste certicate, precum si s a adauge alte certicate. Atragem atent ia asupra unor particularit a ti legate de utilizarea HTTPS: Deoarece autenticarea serverului, prin mecanismul TLS, se face naintea trimiterii cererii HTTP, certicatul trimis de server nu poate depinde de antetul Host transmis de c atre client. Ca urmare, dac a mai multe

c 2008, Radu-Lucian Lup sa


390 11.3. Transferul fis ierelor n ret ea

saituri web securizate sunt g azduite de un acela si calculator, este necesar ca aceste saituri s a e distinse prin adresa IP sau prin num arul de port. In cazul n care s-ar utiliza doar antetul Host pentru ca serverul s a determine saitul cerut de client, serverul ar trimite acela si certicat indiferent de saitul dorit de client. Ca urmare, ar exista o nepotrivire ntre numele din certicat si numele saitului solicitat de client. In consecint a, clientul ar declara saitul ca ind unul fals. O pagin a web este format a, n mod obi snuit, din mai multe obiecte, cu URL-uri diferite (pagina HTML propriu-zis a si imaginile din pagin a). In aceste condit ii, este posibil ca, ntr-o aceea si pagin a, unele dintre elemente s a e securizate si celelalte elemente s a e nesecurizate. De asemenea, este posibil ca diferite elemente s a provin a de pe saituri diferite, autenticate prin certicate diferite. Intr-un astfel de caz, navigatorul web trebuie s a avertizeze utilizatorul.

11.4. PGP/GPG
Preety Good Privacy (PGP) este un program pentru criptarea si semnarea digital a a mesajelor de po st a electronic a si a sierelor n general. Gnu Privacy Guard, abreviat GPG sau GnuPG, este o reimplementare a PGP, cu statut de soft liber. Prezent am n continuare principalele concepte legate de construct ia si funct ionarea GnuPG.

11.4.1. Structura cheilor GnuPG


PGP cripteaz a mesajele, utiliz and metode simetrice si chei efemere, transmite cheile efemere prin criptare asimetric a si creaz a semn aturi electronice asupra mesajelor. In acest scop, ecare utilizator GnuPG trebuie s a aib a ni ste perechi de chei pentru criptare asimetric a si pentru semn atur a. GnuPG memoreaz a, n ni ste siere gestionate de el, cheile publice si private ale utilizatorului ce execut a comanda gpg, precum si cheile publice ale partenerilor utilizatorului ce execut a gpg. Descriem n continuare structura cheilor GnuPG, precum si operat iile ce pot executate asupra cheilor memorate local. Transmiterea cheilor publice ntre utilizatori va descris a n 11.4.2. A sarea cheilor publice din sierele gestionate de GnuPG se face prin comanda gpg --list-keys

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 391

A sarea cheilor secrete se face prin comanda gpg --list-secret-keys 11.4.1.1. Chei primare si subchei Cheile GnuPG sunt de dou a tipuri: chei primare si subchei. O cheie primar a (de fapt, o pereche primar a de chei) este ntotdeauna o pereche de chei pentru semn atur a digital a. O subcheie (de fapt, sub-pereche de chei) este subordonat a unei anumite perechi primare. Fiecare subcheie poate cheie de criptare sau cheie de semn atur a. Fiecare utilizator are o cheie primar a si, subordonate acesteia, zero sau mai multe subchei. In modul cel mai simplu de lucru, ecare utilizator GnuPG are asociate, dou a perechi de chei: o pereche primar a de chei pentru semn atur a digital a si o sub-pereche de chei pentru criptare asimetric a. Perechea de chei de criptare este folosit a pentru a trimite mesaje secrete posesorului perechii de chei. Perechea de chei de semn atur a este folosit a atunci c and posesorul trimite mesaje semnate. Fiecare cheie public a are asociat a a sa-numita amprent a a cheii (engl. key ngerprint ). Aceasta este un sir de bit i, calculat i, printr-o funct ie de dispersie criptograc a, din cheia public a respectiv a. Pentru a ne putea referi la o pereche de chei, ecare pereche de chei (e ea primar a sau subcheie) are asociate doi identicatori de cheie (engl. key ID ): Identicatorul lung (engl. long key ID ) este format din 16 cifre hexa. S ansele ca dou a chei distincte s a aib a acela si identicator lung sunt extrem de mici, astfel nc at identicatorul lung este sucient pentru a identica unic orice cheie. Totu si, identicatorul lung nu este utilizabil, n locul amprentei cheii, pentru vericarea autenticit a tii acesteia. Identicatorul scurt (engl. short key ID ) este format din ultimele 8 cifre hexa ale identicatorului lung. Dac a, ntr-un anumit context, nu exist a dou a chei cu acela si identicator scurt, el poate folosit pentru a ne referi la o cheie. Identicatorul unei perechi de chei este calculat, printr-o funct ie de dispersie, din cheia public a din pereche. Identicatorii scurt i ai cheilor pot listat i prin comanda
gpg --list-keys

Pentru a lista identicatorii lungi, se poate da comanda

c 2008, Radu-Lucian Lup sa


392 gpg --with-colons --list-keys 11.4. PGP/GPG

Amprenta unei chei primare se poate aa prin comanda gpg --fingerprint id-cheie unde id-cheie este e identicatorul scurt sau lung al cheii primare sau al unei subchei subordonate acesteia, e numele real, adresa de po st a electronic a sau numele complet al proprietarului cheii. 11.4.1.2. Utilizatori si identit a ti Fiec arei chei primare i este asociat a una sau mai multe identit a ti. Fiecare identitate este un nume complet de utilizator, format din trei componente: numele real (numele si prenumele persoanei), adresa de po st a elec tronic a si, opt ional, un comentariu. In scrierea numelui complet, adresa de po st a electronic a se scrie ntre semne mai mic si mai mare, iar comentariul se scrie ntre paranteze. Exemple:
Ion Popescu <ion@example.com> Gheorghe Ionescu (Presedinte ONG) <gion@ong.example.com>

Este posibil ca o cheie primar a s a aib a asociate mai multe identit a ti. Acest lucru este util dac a un utilizator are mai multe adrese de po st a electronic a si dore ste asocierea tuturor acestora cu aceea si cheie. Reciproc, un acela si nume complet poate asociat mai multor chei primare. Acest lucru se nt ampl a deoarece nu poate nimeni s a mpiedice doi utilizatori s a genereze dou a chei si s a le asocieze acela si nume complet. Mai mult, aceast a posibilitate este utilizat a frecvent n situat ia n care cheia primar a a unui utilizator expir a sau este revocat a. In aceast a situat ie, utilizatorul poate crea o nou a cheie primar a c areia s a-i asocieze acela si nume complet. 11.4.1.3. Generarea si modicarea cheilor Generarea unei chei primare se face cu comanda
gpg --gen-key

Comanda este interactiv a, solicit and utilizatorului urm atoarele informat ii: tipul cheilor generate si dimensiunea acestora, durata de valabilitate a cheilor, numele complet al utilizatorului si parola utilizat a pentru criptarea cheii secrete. Comanda genereaz a o pereche primar a de chei (de semn atur a) si i asociaz a o identitate. Opt ional, comanda poate genera si o sub-pereche de

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 393

chei de criptare, subordonat a perechii primare. Ulterior, se pot ad auga noi subchei si identit a ti sau se pot sterge subcheile si identit a tile asociate. La generarea cheilor, GnuPG a seaz a amprenta a cheii primare generate. Este bine ca utilizatorul s a noteze amprenta cheii generate. Acest lucru este util la transmiterea cheii publice c atre partenerii de comunicat ie. Pentru o cheie primar a dat a, proprietarul ei poate crea ( si, eventual, sterge) subchei. Pentru acestea, se lanseaz a comanda gpg --edit-key cheie La lansarea acestei comenzi, gpg a steapt a, de la utilizatori, subcomenzi pentru modicarea unor date privitoare la cheia primar a identicat a prin parametrul cheie. Terminarea seriei de subcomenzi se face d and, mai nt ai, subcomanda save pentru a memora efectiv modic arile efectuate, urmat a de subcomanda quit. Crearea unei noi subchei se face cu subcomanda addkey. Subcheia creat a poate o cheie de criptare sau o cheie de semn atur a. La stergerea unei subchei se utilizeaz a subcomenzile key si delkey. S tergerea unei subchei este util a doar dac a subcheia nu a fost nc a transmis a nim anui. Nu exist a o metod a simpl a de a propaga stergerea asupra c opiilor subcheii respective. Ca urmare, dac a proprietarul dore ste ca o subcheie, deja transmis a partenerilor s ai, s a nu mai e utilizat a, solut ia este revocarea subcheii si nu stergerea ei. Pentru a ad auga, sterge sau revoca o identitate asociat a unei chei, se lanseaz a comanda gpg --edit-key cheie si apoi se utilizeaz a subcomenzile: adduid, uid, deluid, revuid, primary. Dup a modicarea identit a tilor asociate unei chei primare, este necesar a retransmiterea cheii spre partenerii de comunicat ie (vezi 11.4.2.1). 11.4.1.4. Controlul perioadei de valabilitate a cheilor Valabilitatea unei chei sau subchei este controlat a pe dou a c ai: prin xarea unei perioade de valabilitate, dup a expirarea c areia cheia nu mai este valid a, si prin revocarea cheii. Controlul valabilit a tii unei chei este necesar pentru a pre nt ampina utilizarea unei chei publice n cazul n care cheia secret a corespunz atoare a fost aat a de o persoan a neautorizat a. Perioada de valabilitate a unei chei sau subchei se xeaz a la generarea acesteia. Ulterior, perioada de valabilitate poate modicat a cu comanda gpg --edit-key cheie

c 2008, Radu-Lucian Lup sa


394 11.4. PGP/GPG

cu subcomenzile key si expire. Pentru revocarea unei chei primare, se creaz a un certicat de revocare, semnat de proprietarul cheii primare. Certicatul de revocare se transmite apoi partenerilor de comunicat ie. Generarea certicatului de revocare se face prin comanda gpg -a -o sier --edit-key cheie Certicatul de revocare este scris n sierul cu nume sier. Pentru ca revocarea s a aib a efect, certicatul de revocare trebuie importat prin comanda gpg --import sier Odat a importat un certicat de revocare pentru o cheie primar a, semn aturile create cu acea cheie primar a sau cu o subcheie a acesteia sunt considerate invalide si, n general, la orice utilizare a acelei chei sau a unei subchei gpg d a un avertisment. De asemenea, atunci c and acea cheie primar a este transmis a spre alt i utilizatori (vezi 11.4.2.1), certicatul de revocare este transmis mpreun a cu cheia revocat a. Ca utilizare recomandabil a, este bine ca, la crearea unei chei primare, proprietarul ei s a genereze imediat un certicat de revocare pe care s a-l tin a ntr-un loc sigur. In cazul n care pierde cheia sau b anuie ste c a acea cheie secret a a fost aat a de un adversar, proprietarul transmite partenerilor s ai certicatul de revocare. Inainte de revocare, certicatul de revocare trebuie s a nu poat a citit de nimeni; n caz contrar, un adversar care obtine certicatul de revocare poate provoca nepl aceri proprietarului revoc andu-i cheia. Revocarea unei subchei const a n ad augarea la subcheie a unui marcaj, semnat de proprietarul subcheii, prin care se anunt a c a acea subcheie trebuie s a nu mai e utilizat a. O subcheie revocat a este tratat a similar cu o subcheie sau cheie expirat a: dac a se ncearc a utilizarea ei, gpg d a un mesaj de avertisment. Revocarea unei subchei se face cu ajutorul comenzii gpg --edit-key cheie cu subcomenzile key si revkey. De notat c a, dup a revocarea sau schimbarea perioadei de valabilitate a unei subchei, subcheia modicat a trebuie s a ajung a la partenerii proprietarului cheii (vezi 11.4.2.1).

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 395

11.4.1.5. Gestiunea cheilor secrete GnuPG plaseaz a cheile secrete ntr-un sier gestionat de GnuPG. Acest sier este creat cu drepturi de citire ( n sistemul de operare) doar pentru utilizatorul curent. Cheile sunt, n mod normal, criptate cu o parol a dat a de utilizator. Parola de criptare poate schimbat a cu comanda gpg --edit-key cheie subcomanda passwd. Cheile secrete pot exportate, prin comanda gpg -a -o sier --export-secret-keys cheie Aceast a comand a export a cheia secret a primar a identicat a prin parametrul cheie, precum si subcheile sale secrete. Cheile secrete pot importate prin comanda gpg --import sier Acest lucru este util dac a utilizatorul lucreaz a pe mai multe calculatoare si dore ste s a utilizeze aceea si chei pe mai multe calculatoare. Cheia secret a este exportat a n forma criptat a. Exist a posibilitatea de-a exporta doar subcheile secrete ale unei chei primare. Acest lucru se face prin comanda gpg -a -o sier --export-secret-subkeys cheie Cu ajutorul acestei comenzi, un utilizator poate tine cheia primar a secret a pe un calculator sigur si poate transmite subcheile secrete c atre un calculator mai put in sigur pe care l utilizeaz a frecvent. In acest mod, el poate utiliza calculatorul mai nesigur pentru transmite mesaje semnate si primi mesaje criptate utiliz and subcheile, f ar a ns a a risca compromiterea cheii primare n cazul n care cineva ar sparge acel calculator. Pentru o astfel de utilizare, subcheile se creaz a cu durat a de valabilitate scurt a si se revoc a la nevoie. Cheia primar a este bine s a aib a durat a lung a de utilizare pentru a benecia de semn aturile obt inute de la alt i utilizatori asupra ei (vezi 11.4.2.2).

11.4.2. Transmiterea si certicarea cheilor publice


11.4.2.1. Transmiterea cheilor publice Cheile publice primare, identit a tile asociate, semn aturile asupra identit a tilor (vezi 11.4.2.2), subcheile publice subordonate cheilor primare si certicatele de revocare ale cheilor primare sau subcheilor sunt memorate ntr-un sier gestionat de GnuPG.

c 2008, Radu-Lucian Lup sa


396 11.4. PGP/GPG

Transmiterea acestor obiecte de la un utilizator la altul se poate face prin dou a metode: prin siere (transmise, de exemplu, prin po st a electronic a sau prin web); prin servere de chei. La transmiterea prin siere, un utilizator export a una sau mai multe chei primare, mpreun a cu identit a tile, semn aturile, subcheile si certicatele de revocare asociate acelor chei primare, ntr-un sier. Cel alalt utilizator prime ste sierul (transmis prin po st a electronic a, web, pe o dischet a sau prin alte mijloace) si i import a cont inutul n GnuPG-ul local. Exportul unei chei publice primare, mpreun a cu toate identit a tile, subcheile publice, semn aturile si certicatele de revocare asociate, se face prin comanda gpg -a -o sier --export cheie unde parametrul cheie este identicatorul cheii sau a uneia dintre subchei sau numele utilizatorului c areia i apart ine, iar parametrul sier reprezint a sierul n care se vor scrie datele. Parametrul cheie poate lipsi sau poate s a nu identice o unic a cheie primar a; n acest caz, toate cheile primare respective sunt exportate. Importarea unei chei dintr-un sier se face prin comanda gpg --import sier Prin operat ia de import, cheile si celelalte obiecte din sierul importat sunt ad augate celor locale sau, eventual, le modic a pe acestea. Niciodat a ns a nu sunt sterse obiecte locale pe motiv c a nu se reg asesc n sierul importat. Din acest motiv, stergerea unei chei primare, subchei, identit a ti sau semn aturi nu poate transmis a asupra partenerilor de comunicat ie. Invalidarea unei chei, identit a ti sau semn aturi se poate face doar prin revocarea acesteia si apoi transmiterea certicatului de revocare. La transmiterea prin servere de chei, primul utilizator ncarc a, pe un server de chei, cheile si celelalte obiecte de transmis, iar cel alalt utilizator le descarc a de pe serverul de chei. Transmiterea unei chei primare si a obiectelor asociate c atre un server de chei se face prin comanda gpg --keyserver server --send-key cheie Desc arcarea unei chei si a obiectelor asociate de pe un server de chei se face prin comanda gpg --keyserver server --recv-key cheie

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 397

unde cheie este identicatorul unei chei (nu poate numele posesorului cheii). Aarea identicatorului cheii unui utilizator se poate face prin comanda gpg --keyserver server --search-key nume-utilizator Este important de notat c a, implicit, GnuPG nu consider a o cheie proasp at importat a ca ind autentic a. La utilizarea unei chei publice a c arei autenticitate nu a putut vericat a, GnuPG d a un mesaj de avertizare. Vericarea autenticit a tii este descris a n paragraful urm ator. 11.4.2.2. Vericarea autenticit a tii cheilor GnuPG veric a automat, nainte de utilizarea unei chei publice, autenticitatea acesteia. Autenticitatea cheilor se veric a cu ajutorul certicatelor (vezi 6.3.4). In terminologia GnuPG, un certicat este numit semn atur a asupra unei chei. O sub-cheie este n mod normal semnat a cu cheia primar a c areia i este subordonat a. O sub-cheie a c arei semn atur a este valid a este considerat a autentic a dac a si numai dac a cheia primar a coresunz atoare este considerat a autentic a. In consecint a, dac a se import a noi sub-chei pentru o cheie primar a declarat a autentic a, sub-cheile respective sunt imediat considerate autentice. Restul paragrafului de fat a trateaz a doar cheile primare. Reamintim c a o cheie primar a este ntotdeauna o cheie de semn atur a. O cheie public a pentru care GnuPG dispune de cheia secret a corespunz atoare este automat considerat a autentic a. De asemenea, este considerat a autentic a orice cheie specicat a printr-o opt iune --trusted-key cheie e la execut ia comenzii gpg, e n sierul cu opt iunile implicite. In afara acestor dou a cazuri, GnuPG consider a o cheie autentic a numai dac a dispune de un certicat valid pentru ea si mai sunt ndeplinite urm atoarele condit ii: cheia cu care este semnat certicatul este deja declarat a ca autentic a, semnatatul certicatului este considerat de ncredere. GnuPG ret ine, asociate ec arei chei primare, dou a informat ii (independente una de alta): dac a autenticitatea ei este vericat a sau nu ; nivelul de ncredere, acordat de utilizatorul care execut a gpg, proprietarului acelei chei.

c 2008, Radu-Lucian Lup sa


398 11.4. PGP/GPG

Un utilizator poate acorda proprietarului unei chei: ncredere deplin a (full trusting ) semn atura acelui utilizator asupra unei identit a ti este sucient a pentru ca acea identitate s a e considerat a vericat a; ncredere minimal a (marginally trusting ) o identitate semnat a doar de utilizatori de ncredere minimal a s a e considerat a vericat a este necesar un anumit num ar de astfel de semn aturi (implicit 3). zero ncredere (no trusting ) semn atura unui astfel de utilizator nu este luat a n considerare. Nivelul de ncredere acordat proprietarului unei chei este implicit zero. El poate modicat cu comanda gpg --edit-key cheie si subcomanda trust a acesteia. Implicit, GnuPG are ncredere deplin a n proprietarul unei chei pentru care dispune de cheia secret a corespunz atoare (altfel spus, n utilizatorul care lanseaz a comanda gpg), precum si n proprietarii cheilor specicate prin opt iunea --trusted-key. Crearea, de c atre utilizatorul ce execut a gpg, a unei semn aturi asupra unei identit a ti asociate unei chei se face prin comanda gpg --sign-key cheie sau gpg --lsign-key cheie In cazul primeia dintre comenzi, semn atura poate transmis a si altor utilizatori GnuPG (vezi 11.4.2.1). A doua comand a creaz a o semn atur a pentru uz local. Este esent ial, pentru securitatea sistemului, ca un utilizator s a nu semneze un set de chei f ar a s a-i verice mai nt ai autenticitatea. Autenticitatea setului de chei se poate asigura n dou a moduri: Fi sierul din care se import a setul de chei este adus pe o cale sigur a, de exemplu printr-o dischet a dat a personal de c atre proprietarul cheii sau este desc arcat de pe un sait web securizat (https ) si de ncredere. Int ai, amprenta cheii primare este transmis a pe o cale sigur a, de exemplu pe un bilet scris de c atre proprietarul cheii sau printr-o convorbire telefonic a cu proprietarul cheii. Apoi, la importarea si semnarea setului de chei, utilizatorul veric a amprenta cheii primare din set.

c 2008, Radu-Lucian Lup sa


Capitolul 11. Aplicat ii n ret ele 399

11.4.3. Transmiterea mesajelor criptate sau semnate


Crearea unui mesaj criptat si semnat se face astfel: gpg -o s-ie sire -r cheie-dest -se s-intrare sau gpg -a -o s-ie sire -r cheie-dest -se s-intrare unde s-intrare este sierul ce trebuie semnat si criptat, s-ie sire este sierul n care comanda gpg va pune datele criptate si semnate, iar cheie-dest reprezint a numele utilizatorului destinat ie sau identicatorul cheii de criptare de utilizate. Cea de-a doua variant a produce un sier text ASCII, prin recodicare n baza 64. Un mesaj poate adresat mai multor destinatari; pentru aceasta, se pot da, n comanda gpg, mai multe opt iuni -r, ecare urmat a de numele unui utilizator destinat ie. Oricare dintre destinatarii astfel specicat i poate s a decripteze mesajul criptat. La criptarea unui mesaj, GnuPG genereaz a aleator o cheie efemer a, cripteaz a textul clar utiliz and cheia efemer a, iar apoi cripteaz a cheia efemer a utiliz and cheia public a a destinatarului. Dac a sunt mai mult i destinatari, GnuPG cripteaz a, pentru ecare destinatar, c ate o copie a cheii efemere, utiliz and cheia public a a acelui destinatar. Decriptarea unui mesaj se face prin comanda gpg -o s-ie sire --decrypt s-intrare unde s-intrare este sierul semnat si criptat, iar s-ie sire este sierul n care comanda gpg va pune rezultatul decript arii. Comanda veric a si semn atura si a seaz a pe ecran rezultatul veric arii. Se pot genera mesaje numai criptate sau numai semnate. Transmiterea unui mesaj criptat dar nesemnat nu este recomandabil a, deoarece destinatarul nu poate avea nici un fel de certitudine asupra autenticit a tii mesajului. Comanda de criptare este similar a cu cea pentru criptare si semnare, dar cu -e n loc de -se. Comanda de decriptare este identic a cu cea pentru un mesaj criptat si semnat. Pentru generarea unui mesaj semnat dar necriptat exist a trei posibilit a ti: semn atur a inclus a n mesaj, semn atur a deta sat a si semn atur a n clar. Semn atura inclus a se genereaz a similar cu generarea unui mesaj criptat si semnat, dar lipsesc destinatarii (opt iunile -r) si n loc de -se se d a doar -s. Fi sierul generat cont ine datele originale si semn atura. Extragerea datelor

c 2008, Radu-Lucian Lup sa


400 11.4. PGP/GPG

si vericarea semn aturii se face exact ca n cazul unui mesaj criptat si semnat, adic a prin comanda: gpg -o s-ie sire --decrypt s-intrare Semn atura deta sat a se genereaz a prin comanda gpg -a -o s-sign --detach-sign s-date Rezultatul comenzii este scrierea n sierul s-sign a semn aturii cont inutului sierului s-date. Fi sierul produs, s-sign, este mic si cont ine doar semn atura; datele utile nu pot recuperate din el. Vericarea semn aturii se face prin comanda: gpg --verify s-sign s-date Semn atura deta sat a este util a deoarece p astreaz a intact sierul de date, neind nevoie de gpg pentru recuperarea datelor. De asemenea, permite mai multor utilizatori s a semneze un acela si sier de date. In ne, semn atura n clar se poate utiliza doar dac a datele sunt text ASCII. Semn atura se genereaz a prin comanda: gpg -o s-ie sire --clearsing s-intrare Fi sierul astfel produs este un sier text, care poate citit u sor de c atre utilizatorul uman. Textul original este pus ntre ni ste marcaje, iar semn atura este ad augat a la sf ar sit. Vericarea semn aturii se face prin comanda: gpg --verify s Semn atura n clar este util a pentru semnarea documentelor text. Acestea r am an u sor de citit de c atre om si, spre deosebire de semn atura deta sat a, datele utile si semn atura sunt puse ntr-un singur sier. Dac a GnuPG are mai multe chei secrete (inclusiv subchei, 11.4.1.1) utilizabile pentru semn atur a, se poate specica ce cheie trebuie utilizat a pentru crearea semn aturii. Specicarea cheii se face ad aug and opt iunea -u cheie GnuPG se utilizeaz a curent pentru autenticarea softului liber. In acest scop, al aturi de programul distribuit, se distribuie un sier ce cont ine semn atura deta sat a a sierului ce cont ine programul.

c 2008, Radu-Lucian Lup sa


401

Bibliograe

[Boian 1999] Florian Mircea Boian. Programarea distribuit a n Internet. Editura Albastr a, 1999. [Cohen 1980] Danny Cohen. On holy wars and a plea for peace, 1980. http://www.ietf.org/rfc/ien/ien137.txt. nzaru, O. Lipovan, M. Neagu, [Crstici et al. 1981] B. Crstici, T Ba N. Neamt u, N. Neuhaus, B. Rendi, D. Rendi, I Sturz. Matematici speciale. Editura didactic a si pedagogic a, Bucure sti, 1981. [Howard & LeBlanc 2003] Michael Howard, David LeBlanc. Writing secure code. Microsoft Press, 2003. [IANA, ] http://www.iana.org. [IEEE 802.11, 1999] IEEE Computer Society. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, 1999. [IEEE 802.11F, 2003] IEEE Computer Society. 802.11FTM IEEE Trial-Use Recommended Practice for Multi-Vendor Access Point Interoperability via an Inter-Access Point Protocol Across Distribution Systems Supporting IEEE 802.11TM Operation, 2003. [IEEE 802.11i, 2004] IEEE Computer Society. 802.11iTM Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, Amendment 6: Medium Access Control (MAC) Security Enhancements, 2004. [IEEE 802.1D, 2004] IEEE Computer Society. Media Access Control (MAC) Bridges, 2004.

c 2008, Radu-Lucian Lup sa


402 Bibliografie

[IEEE 802.1Q, 2003] IEEE Computer Society. 802.1QTM . IEEE Standards for Local and metropolitan area networks: Virtual Bridged Local Area Networks, 2003. [IEEE 802.1X, 2001] IEEE Computer Society. 802.1XTM . Port-Based Network Access Control, 2001. [IEEE 802.3, 2005] IEEE Computer Society. Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specications, 2005. [Kurose & Ross 2003] James F. Kurose, Keith W. Ross. Computer networking A top-down approach featuring the Internet. AddisonWesley, 2003. [Menezed et al. 1997] A. Menezed, P. van Oorschot, S. Vanstone. Handbook of Applied Cryptography. CRC Press, 1997. [Nicolau 1987] Edmond Nicolau. Radiotehnica. Manualul inginerului electronist. Editura tehnic a, Bucure sti, 1987. [Prasad 2003] K.V. Prasad. Principles of Digital Communication Systems and Computer Networks. Charles River Media, 2003. [RFC 1034, 1987] Domain names concepts and facilities, 1987. [RFC 1035, 1987] Domain names implementation and specication, 1987. [RFC 1149, 1990] A Standard for the Transmission of IP Datagrams on Avian Carriers, 1990. [RFC 1323, 1992] TCP Extensions for High Performance, 1992. [RFC 1518, 1993] 1993. An Architecture for IP Address Allocation with CIDR,

[RFC 1661, 1994] The Point-to-Point Protocol (PPP), 1994. [RFC 1700, 1994] Assigned numbers, 1994. [RFC 1918, 1996] Address Allocation for Private Internets, 1996. [RFC 1981, 1996] Path MTU Discovery for IP version 6, 1996. [RFC 1995, 1996] Icremental Zone Transfer in DNS, 1996.

c 2008, Radu-Lucian Lup sa


Bibliografie 403

[RFC 1996, 1996] A Mechanism for Prompt Notication of Zone Changes (DNS NOTIFY), 1996. [RFC 2045, 1996] Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies, 1996. [RFC 2046, 1996] Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types, 1996. [RFC 2047, 1996] Multipurpose Internet Mail Extensions (MIME) Part Three: Message Header Extensions for Non-ASCII Text, 1996. [RFC 2104, 1997] HMAC: Keyed-Hashing for Message Authentication, 1997. [RFC 2183, 1997] Communicating Presentation Information in Internet Messages: The Content-Disposition Header Field, 1997. [RFC 2317, 1998] Classless IN-ADDR.ARPA delegation, 1998. [RFC 2440, 2007] OpenPGP Message Format, 2007. [RFC 2460, 1998] Internet Protocol, Version 6 (IPv6) Specication, 1998. [RFC 2463, 1998] Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specication, 1998. [RFC 2822, 2001] Internet Message Format, 2001. [RFC 3156, 2001] MIME Security with OpenPGP, 2001. [RFC 3596, 2003] DNS Extensions to Support IP Version 6, 2003. [RFC 3748, 2004] Extensible Authentication Protocol (EAP), 2004. [RFC 4253, 2006] The Secure Shell (SSH) Transport Layer Protocol, 2006. [RFC 4346, 2006] The Transport Layer Security (TLS) Protocol Version 1.1, 2006. [RFC 765, 1985] File Transfer Protocol (FTP), 1985. [RFC 791, 1981] Internet Protocol DARPA Internet Program Protocol Specication, 1981. [RFC 792, 1981] Internet Control Message Protocol DARPA Internet Program Protocol Specication, 1981.

c 2008, Radu-Lucian Lup sa


404 Bibliografie

[RFC 793, 1981] Transmission Control Protocol DARPA Internet Program Protocol Specication, 1981. [RFC 822, 1982] Standard for the format of ARPA Internet text messages, 1982. [Rogaway 1995] P. Rogaway. Problems with Proposed IP Cryptography, 1995. http://www.cs.ucdavis.edu/~rogaway/papers/ draft-rogaway-ipsec-commen% ts-00.txt. [S/MIME, ] S/MIME Mail Security (smime). http://www.ietf.org/html.charters/smime-charter.html. taru. Teoria transmisiunii informat [Sp ataru 1965] Al. Spa iei. Editura Tehnic a, Bucure sti, 1965. [Stevens 1994] Richard Stevens. TCP-IP illustrated. Addison-Wesley, 1994. [Tanenbaum 1995] Andrew S. Tanenbaum. Distributed Operating Systems. Prentice Hall, 1995. [Tanenbaum 2003] Andrew S> Tanenbaum. Ret ele de calculatoare. Byblos, 2003.

c 2008, Radu-Lucian Lup sa


405

Index

Speciale 0.0.0.0, 303, 341 0.0.0.0/8, 303 10 Base T, 268 10.0.0.0/8, 303, 349 100 Base Tx, 271 1000 Base T, 272 127.0.0.0/8, 303 127.0.0.1, 303 172.16.0.0/12, 303, 349 192.168.0.0/16, 303, 349 224.0.0.0/4, 303 240.0.0.0/4, 303 A access point, 286 ACK, Vezi conrmare acknowledge, Vezi conrmare ad hoc (wireless), Vezi IBSS adres a zic a, 98, 266 Internet, 294, 297, 300 IP, Vezi adres a, Internet MAC, 98, Vezi adres a zic a, 340 privat a, 303, 348, 349 de ret ,ea, 119 n subret ,ea, 297 unei subret ,ele, 302 translat ie , 349 , adversar, O entitate care intercepteaz a sau modic a mesajele schimbate ntre alte dou a entit at ,i, cu scopul obt ,inerii sau modic arii informat ,iei transmise. Vezi pg. 149

activ, Un adversar care intercepteaz a s a dup a voie mesajele ,i modic schimbate ntre dou a entit at ,i. Vezi pg. 149 pasiv, Un adversar care intercepteaz a doar comunicat ar a a o modi,ia, f ca. Vezi pg. 149 agent de autenticare, 380 Aloha, 100 AM, Vezi modulat ,ie de amplitudine anten a, 78 anycast, 17 AP, Vezi access point ARP, 340 atenuare, 61 factor de, Raportul ntre puterea semnalului m asurat la bornele emit atorului s , ,i puterea semnalului m asurat la bornele receptorului. Vezi pg. 61 AUI, 278 autenticare entitate, 150 mesaj, 149 surs a, 150 B B, Vezi bel band a lateral a, 70 l at ,a dintre frecvent ,a ,ime de, Diferent maxim a s a a ,i frecvent ,a minim benzii de trecere. Prin abuz

c 2008, Radu-Lucian Lup sa


406
de limbaj, mai are sensul de debit maxim de transmitere a informat ,iei al unui dispozitiv. Vezi pg. 65, 72 de trecere, Interval de frecvent n care ,e dac a se ncadreaz a spectrul unui semnal, semnalul se transmite cu distorsiuni acceptabil de mici prin dispozitivul considerat. Prin abuz de limbaj, mai are sensul de debit maxim al unui canal de transmitere a informat ,iei. Vezi pg. 65, 72 de trecere (br a optic a), 92 Basic Service Set, Vezi celul a wireless baza 64, Vezi codicare n baza 64 BCD, Vezi codicare binar-zecimal a (pentru numere) beacon, 286, 288 bel, Pseudo-unitate de m asur a pentru logaritmul raportului ntre dou a m arimi, de regul a m arimile ind puterile a dou a semnale. Indic a faptul c a num arul din fat at ,a unit ,ii este un logaritm zecimal. Are simbolul B. Este utilizat mai mult submultiplul numit decibel. Vezi pg. 62 BNC, 279 broadcast, Vezi difuziune complet a, 140 BSS, Vezi celul a wireless BSS-ID, 285 C cablu inversor, 269 unu-la-unu, 269 canal de comunicat ,ie, 25 continuu, 25 discret, 25 cu perturbat ,ii, Vezi canal cu zgomot cu zgomot, 51 capacitate, 17 caracter de evitare, 231 Cat 3, 269 Cat 5, 271 celul a

Index: Basic Service SetCSMA/CD


wireless, 285 certicat, 182 cheie, 152 de durat a lung a, 175 efemer a, 175 de sesiune, Vezi cheie efemer a stabilire, 150, 174 CIDR, 304 cifrare, Vezi criptare cifru, 151 bloc, 157 ux, 157 ciphertext, Vezi text cifrat clas a DNS, 334 IP, 303, 303 clear to send, 288 cod, 25 corector de erori, 52 detector de erori, 52 instantaneu, 31 de lungime x a, 28 prex, 27 unic decodabil, 27 codicare n baza 64, 231 big endian, 255 binar-zecimal a (pentru numere), 216 binar a (pentru numere), 255 hexazecimal a, 230 little endian, 255 ret ,ea (pentru numere), 255 text (pentru numere), 216 coliziune, 266, 277 comutator, 267 condent ,ialitate, 149 conrmare, 102 s ,i retransmitere, 103, 318 congestie, 308 controlul uxului, 114 corectarea erorilor, 51 criptare, 151 cryptographic hash function, Vezi dispersie criptograc a, funct ,ie de CSMA, 100 CSMA/CA, 101, 287 CSMA/CD, 101, 277

c 2008, Radu-Lucian Lup sa


Index: CTSHTTP
CTS, Vezi clear to send D date de control, 22 speciale (TCP), 330 utile, 21, 59 dB, Vezi decibel dBm, Vezi decibel-miliwatt debit, 17 decibel, Pseudo-unitate de m asur a av and ca valoare o zecime de bel. Are simbolul dB. Vezi pg. 62 decibel-miliwatt, Pseudo-unitate de m asur a pentru logaritmul puterii unui semnal, indic and logaritmul, n decibeli, ai raportului dintre puterea semnalului m asurat s ,i o putere de 1 mW. Vezi pg. 62 decriptare, 151 decryption, Vezi decriptare descifrare, Vezi decriptare destinat ,ie, 25, 59 detectarea erorilor, 51 diafonie, Zgomot ce are ca provenient a un , semnal transmis pe un mediu apropiat zic de mediul ce transmite semnalul considerat. Vezi pg. 62 difuziune, 17 complet a, 17, 140 selectiv a, 17, 140 dirijare, 126, 298 dispersie, 166 criptograc a funct ie de , 166 , funct ,ie de, 166 intermodal a, 92 distorsiune, Modicare determinist a a semnalului recept ionat fat a de cel emis, , , diferit a de nt arziere s ,i atenuare. Distorsiuniea se manifest a la fel oridec ateori se transmite un acelas ,i semnal prin acelas i dispozitiv, n , opozit ,ie cu zgomotul care este aleator. Vezi pg. 62 distribution system, 286 DS, Vezi Distribution System duplex leg atur a Ethernet, 268 E echo reply, Vezi ecou, r aspuns request, Vezi ecou, cerere ecou cerere, 307 r aspuns, 307 ecran, 73 ecient a , unui cod, 42 emit ator, 25, 59 , encryption, Vezi criptare envelope, Vezi plic F fals ales, 165 existent, 165 br a monomod, 92 multimod, 91 ltru anti-spam, 371 IP, 315, 343 MAC, 282 rewall, Vezi ltru IP ow control, Vezi controlul uxului FM, Vezi modulat a ,ie de frecvent , forgery choosen, Vezi fals ales existential, Vezi fals existent format, Vezi codicare frecvent a, 77 , purt atoare, 69 FTP, 383 G gateway, 299 default, 300 H hash function, Vezi dispersie, funct ,ie de host, Vezi nod nal htonl, 255 htons, 255 HTTP, 384

407

c 2008, Radu-Lucian Lup sa


408
HTTPS, 391 hub, 267 I IBSS, 286 ICMP, Vezi Internet Control Message Protocol ICMPv4, 304 ICMPv6, 304 IMAP, 356 impedant a , caracteristic a, 74 de ies ,ire, 75 de intrare, 75 informat ,ie, 25 cantitate de, 40 infrastructur a (wireless), 286 nt arziere, 61 integritate vericare, 150 interfat a , de ret ,ea, 265, 296 Internet, 1. Protocol de comunicat ,ie de nivel ret a mon,ea. 2. Ret ,ea la scar dial a construit a pe baza protocolului internet Vezi pg. 293 Internet Control Message Protocol, 304 intrus, Vezi adversar IP, Vezi protocolul Internet IPv4, 294 IPv6, 294 K key, Vezi cheie ephemeral, Vezi cheie efemer a long-term, Vezi cheie de durat a lung a session, Vezi cheie efemer a L l at ,ime de band a, Vezi band a, l at ,ime lob al antenei, 81 lungimea de und a, Vezi und a, lungime de M magistral a, 75, 265

Index: HTTPSnetwork
mail transfer agent, 355, 364 user agent, 355 managed (wireless), Vezi infrastructur a masc a de ret ,ea, 302 master DNS, 337 mediu de transmisie, Dispozitiv capabil s a transmit a la distant a o act , ,iune zic a de la emit ator la receptor. , Vezi pg. 59 mesaj, 27 microunde, 77 MIME, 360 mod de propagare (bre optice), 91 modulat ,ie, 68 de amplitudine, 69 n cuadratur a, 70 de faz a, 70 de frecvent a, 70 , MTA, Vezi mail transfer agent, 367 MUA, Vezi mail user agent multicast, Vezi difuziune selectiv a multimod (bra optic a), Vezi br a multimod multiplexare n frecvent a, Procedeu prin care mai , multe comunicat ,ii simultane pot partaja acelas ,i mediu zic prin transmiterea semnalelor corespunz atoare comunicat ,iilor prin modulat and frecvent ,ie utiliz ,e purt atoare diferite. n lungimea de und a, Procedeu de multiplexare n care mai multe semnale optice utiliz and lungimi de und a diferite sunt transmise prin aceeas a optic a. Vezi pg. 93 ,i br n timp, 117 MX, 367, 369 N NAT, Vezi adres a, translat ,ie nerepudiabilitate, 149 network

c 2008, Radu-Lucian Lup sa


Index: NICspoofing
address translation, Vezi adres a, translat ,ie interface card, Vezi interfat a de ret , ,ea name (wireless), Vezi SSID NIC, Vezi interfat a de ret , ,ea nod, 119, 293 nal, 119, 293 intermediar, 119, 293 nonce, Vezi num ar unic ie notat , zecimal a cu punct, 301 simpl a, 301 ntohl, 255 ntohs, 255 num ar de secvent a, 104, 318 , unic, 171 nume de domeniu, 332 O OOB, Vezi date speciale out of band, Vezi date speciale P pachet, 293 Internet, 295 paritate, 55 pereche torsadat a, 73, 268 torsadat a neecranat a, 269 ping, Vezi ecou, cerere plaintext, Vezi text clar plic, 357 polinom generator, 57 pong, Vezi ecou, r aspuns POP3, 356 port, 266 TCP, 327 UDP, 331 portal, 286 prag de sensibilitate, 62 prex de ret ,ea, 297, 302 priz a vampir, 278

409
prospet ,ime vericare, Vezi vericare prospet ,ime protocol, 16, 22 punct la punct, 16 purt atoare, Vezi frecvent a, purt atoare , R raport semnal/zgomot, 62 receptor, 25, 59 redundant a, 42 , regul a de dirijare, 298 reliable transmission, Vezi transmisie sigur a repeater, Vezi repetor repetor, 266 reprezentare a informat ,iei, 25 request to send, 288 ret ,ea privat a, 348 RJ45, 269 round-trip time, Vezi timp dus- ntors router, Vezi nod intermediar RTS, Vezi request to send RTT, Vezi timp dus- ntors rut a, 119 ruter, Vezi nod intermediar S securizare, 149 semi-duplex, 97 semnal, M arimea zic a ce m asoar a act ,iunea produs a de emit ator s a de , ,i transmis c atre mediu p an a la receptor s ,i care este utilizat a efectiv ca purt atoare a informat ,iei. Vezi pg. 25, 59 modulat, 69 sinusoidal, 63 simbol de cod, 26 slave DNS, 337 SMTP, 355, 364 socket, 233 spectru, 64 spoong, 346 blind, 326

c 2008, Radu-Lucian Lup sa


410
IP, 325 SSH, 375 SSID, 286 SSL, 389 stat ,ie, Vezi nod nal subret ,ea, 136 IP, 296 sux n subret ,ea, 297 surs a, 25, 59 switch, Vezi comutator T tabel a de dirijare, 126, 298 TCP, 317 terminator, 76 text cifrat, 151 text clar, 151 time to live, Vezi timp, de viat a , timp dus- ntors, 18, 329 de propagare, 18 de valabilitate (DNS), 334, 337 de viat a (pachet IP), 308 , tip nregistrare DNS, 334 TLS, 389 translat a, translat ,ie ,ia adresei, Vezi adres transmisie sigur a, 103 trunking, 282 TTL, Vezi timp, de viat a , twisted pair, Vezi pereche torsadata U uint16 t, 255

Index: SSHzona
uint32 t, 255 und a electromagnetic a, 77 lungime de, 77 radio, 77 unicast, 16 unshielded twisted pairs, Vezi pereche torsadat a neecranat a UTP, Vezi perechi torsadate neecranate V vecin, 119 vector de init ,ializare, 154 vericare integritate, Vezi integritate, vericare prospet ,ime, 150 VLAN, 283 VLAN-ID, 283 W wavelength division multiplexing, Vezi multiplexare n lungimea de und a WDM, Vezi multiplexare n lungimea de und a window manager, 382 Z zgomot, Modicare nedeterminist a a semnalului recept a de cel emis. ,ionat fat , Pentru comparat ,ie, vezi s ,i distorsiune. Vezi pg. 62 zon a DNS, 335

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