You are on page 1of 410

Retele de calculatoare

Principii

Radu-Lucian Lupa s

Aceasta este editia electronic a crtii Retele de calculatoare, publicat la a a a Casa Crtii de Stiint, 2008, ISBN: 978-973-133-377-9. a a n Drepturile de autor apartin subsemnatului, Radu-Lucian Lupa. s Subsemnatul, Radu-Lucian Lupa, acord oricui dorete dreptul de a copia s s continutul acestei crti, integral sau partial, cu conditia atribuirii corecte autorului i a s a pstrrii acestei notite. a a Cartea poate descrcat gratuit de la adresa a a http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf

c 2008, Radu-Lucian Lupa s


5

Cuprins

Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de retea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei retele de calculatoare . . . . . . . . . . 1.3 Premise generale elaborarea i implementarea protocoalelor retele n s n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notiuni de teoria informatiei 2.1 Problema codicrii informatiei pentru un canal discret . . a 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a codurilor prex . . . . . a 2.2.2 Decodicarea cazul codurilor prex . . . . . . . . . n 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informatie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia ierelor . . . . . . . . . . . . . . . . . . . s 2.4 Coduri detectoare i corectoare de erori . . . . . . . . . . . s 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare i corectoare de erori . s 2.4.3 Cteva coduri detectoare sau corectoare de erori . . . a 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii i coloane . . . . . . . . . . . . . s 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare i corectoare de erori alte domenii s n 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 Lupa s


6 3 Nivelul zic 3.1 Problema transmisiei informatiei la nivelul zic . . . . . . . 3.2 Transmiterea semnalelor . . . . . . . . . . . . . . . . . . . . 3.2.1 Modicrile suferite de semnale . . . . . . . . . . . . . . a 3.2.2 Analiza transmiterii semnalelor cu ajutorul transformatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Codicarea informatiei prin semnale continue . . . . . . . . 3.3.1 Scheme de codicare . . . . . . . . . . . . . . . . . . . . 3.3.2 Modulatia . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Multiplexarea frecvent . . . . . . . . . . . . . . . . n a 3.3.4 Capacitatea maxim a unui canal de comunicatie . . . . a 3.4 Transmisia prin perechi de conductoare . . . . . . . . . . . . 3.4.1 Constructia cablului . . . . . . . . . . . . . . . . . . . . 3.4.2 Proprieti ale mediului . . . . . . . . . . . . . . . . . . at 3.4.3 Legtur magistral . . . . . . . . . . . . . . . . . . . . a a 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 Absorbtia i reexia . . . . . . . . . . . . . . . . . s 3.5.1.3 Difractia . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1.4 Interferenta undelor . . . . . . . . . . . . . . . . . 3.5.1.5 Divergenta 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 actiune a unei legturi radio . . . . . . . . . . a 3.5.3.1 Obstacolele . . . . . . . . . . . . . . . . . . . . . . 3.5.3.2 Linia orizontului . . . . . . . . . . . . . . . . . . . 3.5.3.3 Utilizarea satelitilor articiali ai Pmntului . . . . a a 3.5.3.4 Zgomotul . . . . . . . . . . . . . . . . . . . . . . . 3.5.3.5 Scderea puterii cu distanta . . . . . . . . . . . . . a 3.5.3.6 Emisia directionat i polarizat . . . . . . . . . . as a 3.5.4 Spectrul radio i alocarea lui . . . . . . . . . . . . . . . s 3.5.5 Particulariti ale sistemelor de comunicatie prin radio at 3.5.5.1 Topologia legturii . . . . . . . . . . . . . . . . . . a 3.5.5.2 Fiabilitatea . . . . . . . . . . . . . . . . . . . . . . 3.5.5.3 Securitatea . . . . . . . . . . . . . . . . . . . . . . 3.6 Transmisia optic . . . . . . . . . . . . . . . . . . . . . . . . a 3.6.1 Constructia 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 Lupa s


Cuprins 3.6.2.2 Caracteristici ale mediului . . . . . . . . . . . . . . . . . . . 3.6.2.3 Multiplexarea lungimea de und . . . . . . . . . . . . . . n a 3.6.3 Considerente practice . . . . . . . . . . . . . . . . . . . . . . . . 4 Nivelul legturii de date a 4.1 Detectarea i corectarea erorilor . . . . . . . . . . . . . . . . . . . . s 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 i retransmitere . . . . . . . . . s 4.2.3 Protocoale mixte . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Retransmiterea pachetelor pierdute . . . . . . . . . . . . . . . . . . 4.3.1 Principiul conrmrilor pozitive i retransmiterilor . . . . . . . a s 4.3.2 Trimiterea avans a mai multor pachete . . . . . . . . . . . . n 4.3.3 Spatiul numerelor de conrmare . . . . . . . . . . . . . . . . . 4.4 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cereri de suspendare i de continuare . . . . . . . . . . . . . . s 4.4.2 Mecanismul pas cu pas . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Mecanism combinat cu retransmiterea pachetelor pierdute . . . 4.5 Multiplexarea timp . . . . . . . . . . . . . . . . . . . . . . . . . . n Nivelul retea i nivelul transport s 5.1 Retransmiterea datelor de ctre nodurile intermediare . . . . . . . . a 5.1.1 Retransmiterea retele bazate pe datagrame . . . . . . . . . . n 5.1.2 Retransmiterea retele bazate pe conexiuni . . . . . . . . . . n 5.2 Algoritmi de dirijare . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Calculul drumurilor cu informatii complete despre graful retelei 5.2.2 Calculul drumurilor optime prin schimb de informatii 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 aarea rutelor din adresele surs ale pachetelor . . . . Invt a 5.2.5 Metode de difuziune . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Functionarea 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 retelelor . . . . . . . . . . . . . . . . . . . . . . . . Metode i protocoale criptograce s 6.1 Asigurarea condentialitii . . . at 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 Lupa s


8 6.1.4 Algoritmi de criptare utilizati practic . . . . . . . . . . n a 6.1.5 Criptograe asimetric (cu cheie public) . . . . . . . . . . a a 6.1.5.1 Utilizarea criptograei asimetrice . . . . . . . . . . . . 6.2 Autenticarea mesajelor . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Functii de dispersie criptograce . . . . . . . . . . . . . . . 6.2.1.1 Utilizarea functiilor de dispersie . . . . . . . . . . . . . 6.2.2 Functii de dispersie cu cheie . . . . . . . . . . . . . . . . . . 6.2.3 Semntura digital . . . . . . . . . . . . . . . . . . . . . . . a a 6.2.4 Vericarea prospetimii mesajelor . . . . . . . . . . . . . . . 6.2.5 Combinarea criptrii, autenticrii i vericrii prospetimii a a s a 6.3 Stabilirea cheilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Stabilirea cheilor prezenta unui adversar pasiv . . . . . . n 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 prezenta unui adversar activ . . . . . . n 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 practic . . . . . . . . . . . . . . . n a 6.5 Autenticarea utilizatorilor . . . . . . . . . . . . . . . . . . . . . 6.5.1 Stocarea parolelor . . . . . . . . . . . . . . . . . . . . . . . 6.5.2 Parole de unic folosint . . . . . . . . . . . . . . . . . . . a 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 Codicri de interes practic a 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezentri pe biti . . . . . . . . . . . . . . . . . . . . . . a 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 Siruri de biti . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe biti a numerelor ntregi . . . . . . . 7.1.2 Reprezentri pe octeti . . . . . . . . . . . . . . . . . . . . . a 7.1.2.1 Octeti . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 Siruri de octeti . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un numr a ntreg de octeti 7.1.2.4 Reprezentarea numerelor pe un ir arbitar de biti . . . s 7.1.3 Probleme privind reprezentarea lungimii irurilor . . . . . . s 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 Lupa s


Cuprins 7.2 Codicarea textelor . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Codicarea ASCII . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Codicrile ISO-8859 . . . . . . . . . . . . . . . . . . . . a 7.2.3 Codicrile Unicode . . . . . . . . . . . . . . . . . . . . . a 7.2.3.1 Codicarea UTF-8 . . . . . . . . . . . . . . . . . . . 7.2.3.2 Codicrile UTF-16 . . . . . . . . . . . . . . . . . . a 7.2.3.3 Codicrile UTF-32 . . . . . . . . . . . . . . . . . . a 7.3 Reprezentarea datei i orei . . . . . . . . . . . . . . . . . . . . s 7.3.1 Msurarea timpului . . . . . . . . . . . . . . . . . . . . . a 7.3.2 Obiectivele alegerea reprezentrii timpului calculator n a n 7.3.3 Formate utilizate practic . . . . . . . . . . . . . . . . n a 7.3.3.1 Formatul utilizat de pota electronic . . . . . . . . s a 7.3.3.2 ISO-8601 i RFC-3339 . . . . . . . . . . . . . . . . . s 7.3.3.3 Timpul POSIX . . . . . . . . . . . . . . . . . . . . . 7.3.3.4 TAI 64 . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Recodicri . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 7.4.1 Codicarea hexazecimal . . . . . . . . . . . . . . . . . . a 7.4.2 Codicarea baza 64 . . . . . . . . . . . . . . . . . . . . n 7.4.3 Codicri bazate pe secvente de evitare . . . . . . . . . . a 8 Programarea retea introducere n 8.1 Interfata de programare socket BSD . . . . . . . . . . 8.1.1 Comunicatia prin conexiuni . . . . . . . . . . . . 8.1.1.1 Deschiderea conexiunii de ctre client . . . a 8.1.1.2 Deschiderea conexiunii de ctre server . . . a 8.1.1.3 Comunicatia propriu-zis . . . . . . . . . . a 8.1.1.4 Inchiderea conexiunii . . . . . . . . . . . . . 8.1.2 Comunicatia prin datagrame . . . . . . . . . . . 8.1.3 Principalele apeluri sistem . . . . . . . . . . . . 8.1.3.1 Functia socket() . . . . . . . . . . . . . . . 8.1.3.2 Functia connect() . . . . . . . . . . . . . . 8.1.3.3 Functia bind() . . . . . . . . . . . . . . . . 8.1.3.4 Functia listen() . . . . . . . . . . . . . . . 8.1.3.5 Functia accept() . . . . . . . . . . . . . . . 8.1.3.6 Formatul adreselor . . . . . . . . . . . . . . 8.1.3.7 Interactiunea dintre connect(), listen() i s 8.1.3.8 Functiile getsockname() i getpeername() s 8.1.3.9 Functiile send() i recv() . . . . . . . . . s 8.1.3.10 Functiile shutdown() i close() . . . . . . s 8.1.3.11 Functiile sendto() i recvfrom() . . . . . s 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 Lupa s


10 8.2.1 Formate binare . . . . . . . . . . . . . . . 8.2.1.1 Tipuri ntregi . . . . . . . . . . . . . 8.2.1.2 Siruri de caractere i tablouri . . . . s 8.2.1.3 Variabile compuse (struct-uri) . . . 8.2.1.4 Pointeri . . . . . . . . . . . . . . . . 8.2.2 Formate text . . . . . . . . . . . . . . . . 8.2.3 Probleme de robustete i securitate . . . s 8.2.4 Probleme privind costul apelurilor sistem 8.3 Probleme de concurent comunicatie . . . . a n 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

Retele IEEE 802 9.1 Retele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Legturi punct la punct prin perechi de conductoare a 9.1.2 Legturi prin bre optice . . . . . . . . . . . . . . . a 9.1.3 Legturi prin cablu magistral . . . . . . . . . . . . a a 9.1.4 Repetoarele i comutatoarele . . . . . . . . . . . . . s 9.1.5 Dirijarea efectuat de comutatoare (switch-uri) . . . a 9.1.6 Faciliti avansate ale switch-urilor . . . . . . . . . . at 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz de adrese MAC . . . . . . . . a 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Legturi redundante . . . . . . . . . . . . . . . a 9.1.6.5 Retele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei retele . . . . . 9.2 Retele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura retelei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea retelelor 802.11 . . . . . . . . . . . . . .

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

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

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

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

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

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

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

10 Internetul 10.1 Arhitectura retelei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirijrii pachetelor IP . . . . . . . . a 10.2.2.1 Subretele i interfete . . . . . . . . . . s 10.2.2.2 Prexul de retea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor i prexelor . . s 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de retea . . . . . . . 10.2.4 Alocarea adreselor IP i prexelor de retea s 10.2.4.1 Alocarea pe utilizri . . . . . . . . . . a 10.2.4.2 Alocarea adreselor i dirijarea ierarhic s a

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

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

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

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

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

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

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

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

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

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

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

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

c 2008, Radu-Lucian Lupa s


Cuprins 10.2.5 Erori la dirijare i protocolul ICMP . . . . . . . . . . . . . . . . s 10.2.5.1 Pachete nelivrabile . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.2 Diagnosticarea functionrii rutelor . . . . . . . . . . . . . . a 10.2.5.3 Ciclarea pachetelor IP . . . . . . . . . . . . . . . . . . . . . 10.2.5.4 Congestia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.5 Redirectionarea . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 Alte chestiuni privind dirijarea pachetelor . . . . . . . . . . . . . 10.2.6.1 Dimensiunea maxim a pachetelor i fragmentarea . . . . . a s 10.2.6.2 Calitatea serviciului . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Congurarea i testarea unei retele IP locale . . . . . . . . . . . s 10.2.7.1 Alegerea parametrilor . . . . . . . . . . . . . . . . . . . . . 10.2.7.2 Congurarea parametrilor de retea pe diverse sisteme de op erare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7.3 Testarea i depanarea retelelor . . . . . . . . . . . . . . . . s 10.3 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Conexiuni cu livrare garantat: protocolul TCP . . . . . . . . . a 10.3.1.1 Principiul conexiunii TCP . . . . . . . . . . . . . . . . . . . 10.3.1.2 Comunicatia bidirectional . . . . . . . . . . . . . . . . . . a 10.3.1.3 Deschiderea i s nchiderea conexiunii . . . . . . . . . . . . . 10.3.1.4 Alegerea numrului initial de secvent . . . . . . . . . . . . a a 10.3.1.5 Inchiderea fortat a conexiunii . . . . . . . . . . . . . . . . a 10.3.1.6 Identicarea aplicatiei destinatie . . . . . . . . . . . . . . . 10.3.1.7 Corespondenta ntre functiile socket() i actiunile modulu s lui TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.8 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.9 Stabilirea time-out-ului pentru retransmiterea pachetelor . . 10.3.1.10Algoritmul lui Nagle i optimizarea numrului de pachete . s a 10.3.1.11Trimiterea datelor speciale (out of band) . . . . . . . . . . . 10.3.2 Datagrame nesigure: UDP . . . . . . . . . . . . . . . . . . . . . 10.4 Identicarea nodurilor dup nume: sistemul DNS . . . . . . . . . . . a 10.4.1 Numele de domeniu . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Structura logic a bazei de date DNS . . . . . . . . . . . . . . . a 10.4.3 artirea domenii de autoritate . . . . . . . . . . . . . . . . Imp n 10.4.4 Mecanismul de interogare a serverelor . . . . . . . . . . . . . . . 10.4.5 Sincronizarea serverelor pentru un domeniu . . . . . . . . . . . . 10.4.6 Cutarea numelui dup IP . . . . . . . . . . . . . . . . . . . . . a a 10.5 Legturile directe a ntre nodurile IP . . . . . . . . . . . . . . . . . . . 10.5.1 Rezolvarea adresei ARP . . . . . . . . . . . . . . . . . . . . . 10.6 Congurarea automat a statiilor DHCP . . . . . . . . . . . . . . a 10.7 Situatii speciale dirijarea pachetelor . . . . . . . . . . . . . . . . . n 10.7.1 Filtre de pachete (rewall) . . . . . . . . . . . . . . . . . . . . . 10.7.2 Retele private . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.3 Translatia adreselor (NAT) . . . . . . . . . . . . . . . . . . . . . 10.7.3.1 Translatia 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 Lupa s


12 Cuprins 10.7.3.2 Translatia adresei destinatie . . . . . . . . . . . . . . . . . . 350 10.7.4 Tunelarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 11 Aplicatii retele n 11.1 Pota electronic . . . . . . . . . . . . . . . . . . . . . . . . s a 11.1.1 Formatul mesajelor . . . . . . . . . . . . . . . . . . . 11.1.1.1 Antetul mesajelor . . . . . . . . . . . . . . . . . . 11.1.1.2 Extensii MIME . . . . . . . . . . . . . . . . . . . 11.1.1.3 Ataarea ierelor i mesaje din mai multe prti s s s a 11.1.1.4 Codicarea corpului mesajului i a ataamentelor s s 11.1.2 Transmiterea mesajelor . . . . . . . . . . . . . . . . . 11.1.2.1 Protocolul SMTP . . . . . . . . . . . . . . . . . . 11.1.2.2 Determinarea urmtorului MTA . . . . . . . . . a 11.1.2.3 Congurarea unui MTA . . . . . . . . . . . . . . 11.1.3 Securitatea potei electronice . . . . . . . . . . . . . . s 11.2 Sesiuni interactive la distant . . . . . . . . . . . . . . . . a 11.2.1 Protocolul ssh . . . . . . . . . . . . . . . . . . . . . . 11.2.1.1 Conexiunea ssh protejat criptograc . . . . . . a 11.2.1.2 Metode de autenticare ssh . . . . . . . . . . . n 11.2.1.3 Multiplexarea conexiunii, tunelarea i aplicatii . s 11.2.2 Sistemul X-Window . . . . . . . . . . . . . . . . . . . 11.3 Transferul ierelor retea . . . . . . . . . . . . . . . . . s n 11.3.1 Protocolul ftp . . . . . . . . . . . . . . . . . . . . . . 11.3.2 Protocolul HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.1 Structura cererilor i a rspunsurilor . . . . . . . s a 11.3.2.2 URL-urile . . . . . . . . . . . . . . . . . . . . . . 11.3.2.3 Alte faciliti HTTP . . . . . . . . . . . . . . . . at 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 i subchei . . . . . . . . . . . . . . s 11.4.1.2 Utilizatori i identiti . . . . . . . . . . . . . . . s at 11.4.1.3 Generarea i modicarea cheilor . . . . . . . . . . s 11.4.1.4 Controlul perioadei de valabilitate a cheilor . . . 11.4.1.5 Gestiunea cheilor secrete . . . . . . . . . . . . . . 11.4.2 Transmiterea i certicarea cheilor publice . . . . . . . s 11.4.2.1 Transmiterea cheilor publice . . . . . . . . . . . . 11.4.2.2 Vericarea autenticitii cheilor . . . . . . . . . . at 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 Lupa s


13

Prefat a

contextul prezent al dezvoltrii retelelor de calculatoare, este inutil In a s mai subliniem importanta acestui domeniu. a Lucrarea de fat se adreseaz principal programatorilor de aplicatii a a n retea i administratorilor de retele complexe. Sunt presupuse, din partea n s cititorului, cunotinte de baz de programare, precum i privind functionarea s a s sistemelor de operare. Ca un avertisment pentru programatori, mentionm c, dei lucrarea a a s trateaz chestiuni de nivel mult mai cobort dect cel al platformelor i biba a a s liotecilor utilizate mod normal aplicatiile retea, este totui util n n n s a n vederea unei bune elegeri a acestor platforme i biblioteci. nt s Tot ceea ce are legtur a a ntr-un fel sau altul cu calculatoare are dou a caracteristici: se dezvolt foarte repede i est foarte complex. Retelele de a s calculatoare nu fac exceptie. Ca urmare, este extrem de uor pentru oricine s s se piard nenumratele detalii permanent schimbare. a a n a n a Considerm c, orice domeniu, o bun prezentare trebuie s porneasc a a n a a a de la principiile de baz. Principiile de baz se sunt (relativ) simple i evolueaz a a s a mult mai lent dect constructiile tehnice elaborate pe baza lor. consecint, a In a prima parte a lucrrii de fat, principii, este dedicat studierii problemelor ce a a a trebuie rezolvate de o retea de calculatoare, precum i a principiilor constructiei s posibilelor solutii ale acestor probleme. Partea a doua a lucrrii, protocoale, prezint cteva dintre cele mai a a a rspndite protocoale i mecanisme utilizate retelele de calculatoare. Ea este a a s n construit pentru a oferi cititorului o privire de ansamblu asupra protocoalelor a studiate. Aceast privire de ansamblu poate sucient pentru unii cititori, a a caz contrar ind probabil necesar citirea efectiv a standardelor. n a a Lucrarea de fat este rodul experientei autorului activiti legate a n at de administrarea retelei de calculatoare a Departamentului de Informatic al a Facultii de Matematic i Informatic din cadrul Universitii Babe-Bolyai at as a at s Cluj-Napoca, predarea unui curs de Retele de calculatoare la aceast facn a

c 2008, Radu-Lucian Lupa s


14 Prefata

ultate, precum i din activitatea de cercetare desfurat de-a lungul anilor, s as a 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 sistemul medical, precum a n i nevoia de condentialitate i securitate a lor, cer o foarte bun cunoatere s s a s i punere practic a notiunilor legate de codicarea informatiei, de metode s n a i protocoale criptograce, de aplicatii retele etc. s n

c 2008, Radu-Lucian Lupa s


15

Capitolul 1

Introducere

Prin retea de calculatoare elegem un sistem (constnd din com nt a ponente hard i soft) care interconecteaz nite calculatoare, permitnd unor s a s a programe ce se execut pe aceste calculatoare s comunice a a ntre ele. De notat c, uzul comun, termenul de retea de calculatoare mai are a n i sensul de sistem de calcul, construit din mai multe calculatoare interconecs tate ntr-o retea, care se comport ca un sistem unitar, de exemplu, prezint a a aceleai conturi de utilizatori pe toate calculatoarele. s

1.1. Serviciile oferite de retea


Se spune c orice problem bine formulat este pe jumtate rezolvat. a a a a a Prin urmare, pentru nceput, vom stabili mai exact ce se dorete de la o retea s de calculatoare. Intr-o retea de calculatoare avem mai multe calculatoare pe care se execut procese utilizator. Rolul retelei este de-a oferi acestor procese posia bilitatea de-a comunica ntre ele. Din punctul de vedere al programatorului acestor procese, reteaua ofer nite functii, din nucleul sistemului de oper a s are sau din biblioteci standard, apelabile de ctre aceste procese (g. 1.1). a Ansamblul acestor functii constituie interfata de programare (engl. API Application Programming Interface) a retelei. Principalele functii oferite de retea, apelabile de ctre un proces uti a lizator, sunt o functie care trimite date de la procesul curent spre partenerul sau partenerii de comunicatie i o functie care receptioneaz datele trimise spre s a procesul curent. aceste functii este necesar desemnarea destinatarului spre In a care procesul emittor dorete transmiterea datelor, respectiv a emittorului a s a acest scop, ecare dinspre care procesul receptor solicit s primeasc date. In a a a

c 2008, Radu-Lucian Lupa s


16 Proces surs a calculator 1.1. Serviciile oferite de retea Proces destinatie calculator recv()

interfata de programare (API) send()

Retea

Figura 1.1: Reteaua de calculatoare, din punctul de vedere al proceselor aplicatie. Functionalitatea retelei este oferit prin functii apelabile din procesele utilizator. a Reteaua ofer o aplicatiilor o cale de transmisie a datelor (linia punctat). Constructia a a efectiv a retelei nu este vizibil aplicatiilor. a a

entitate ce poate comunica retea trebuie s aib asociat o adres (un ir n a a a a s de biti, construit dup anumite reguli, identicnd unic o anumit entitate). a a a Pe lng aceste functii de baz, reteaua mai ofer functii pentru cona a a a gurarea diferitilor parametrii. O parte dintre aceti parametri xeaz rolul s a i locul diverselor componente cadrul retelei (de exemplu, ecare calculator s n trebuie s-i cunoasc propria adres). Alti parametrii sunt legati de calitatea as a a serviciilor oferite de retea (debit de transfer de date, timp de propagare, etc). Datele transmise de procesele utilizator sunt de obicei iruri arbitrare s de octeti. Rolul retelei este de-a transmite ntocmai irul de octeti trimis s de procesul surs ctre procesul destinatie. Semnicatia, pentru procesul a a destinatie, a unui ir de octeti transmis face obiectul unei elegeri (proto s nt col ) ntre procesele utilizator. La proiectarea retelei nu ne intereseaz ce fac a procesele utilizator cu datele transferate; la proiectarea programelor utilizator nu ne intereseaz cum lucreaz reteaua pentru a transmite datele. a a continuare vom trece revist principalele caracteristici ale serIn n a viciului oferit de retea proceselor de aplicatie. O comunicatie poate , dup numrul destinatarilor: a a punct la punct, dac exist un singur destinatar. mod obinuit, desa a In s tinatarul este selectionat explicit de ctre procesul emittor; o astfel de a a comunicatie este numit unicast. Uneori a, de exemplu cazul a ns n n care un serviciu este oferit de mai multe servere, echivalente din punctul de vedere al clientului, este favorabil ca reteaua s aleag destinatarul a a comunicatiei, functie de distanta fat de emittor, dintr-o multime n a a

c 2008, Radu-Lucian Lupa s


Capitolul 1. Introducere 17

specicat de destinatari posibili. Un astfel de comunicatie se numete a s anycast. difuziune, dac exist mai multi destinatari. Distingem difuziune coma a plet (engl. broadcast), care destinatari sunt toate calculatoarele dintra n o retea, i difuziune selectiv (engl. multicast), care destinatarii sunt s a n o submultime aleas a calculatoarelor din retea. a Serviciul de comunicatie oferit de retea poate de tip conexiune sau de tip transport de datagrame: cazul conexiunilor, cadrul comunicatiei In n ntre dou procese se disting a trei faze: - deschiderea conexiunii, cadrul creia sunt fcute nite pregtiri, n a a s a inclusiv alocarea unor resurse pentru comunicatie; - comunicatia propriu-zis, care unul sau ambele procese transmite a n un ir de pachete sau de biti celuilalt proces; s - nchiderea conexiunii, cadrul creia se elibereaz resursele alocate n a a la deschidere. cazul transportului de datagrame, procesul emittor pregtete un In a a s ansamblu, numit datagram (prin analogie cu telegram ), cuprinznd a a a un ir de biti destinat procesului receptor i anumite informatii necesare s s livrrii (adresa destinatarului). Apoi transmite datagrama retelei de cala culatoare, care o transmite procesului receptor. Mai multe datagrame trimise de acelai proces surs ctre acelai proces destinatie sunt transs a a s mise independent una de alta, ceea ce duce, general, la posibilitatea n inversrii ordinii de receptie fat de ordinea de emisie a datagramelor. a a Principalii parametri de calitate ai serviciului oferit de retea sunt: Capacitatea de transport oferit de retea, sau debitul maxim acceptat, este a raportul dintre numrul de biti transportati cadrul unei comunicatii a n i timpul care acetia sunt transmii. Echivalent, capacitatea este s n s s inversul duratei medii ntre trecerea, printr-un punct dat al retelei, a doi biti consecutivi ai unei comunicatii. Timpul de transfer a unui bloc de date este timpul scurs de la trecerea, printr-un punct dat, a primului bit al blocului pn la trecerea, a a prin acelai punct, a ultimului bit. Timpul de transfer este egal cu s raportul dintre dimensiunea blocului i debitul cu care se face transferul. s Capacitatea oferit de retea unei legturi poate s varieze datorit a a a a variatiei debitului altor comunicatii care partajeaz aceleai echipamente. a s

c 2008, Radu-Lucian Lupa s


18 1.1. Serviciile oferite de retea

Exist aplicatii, de exemplul legate de transfer de iere, pentru a s care este important ca reteaua s ofere o capacitate medie ct mai mare. a a Penttru alte aplicatii, cum ar telefonia, transmisia video (de exemplu pentru teleconferinte) sau alte aplicatii timp real, este important s n a nu scad niciodat capacitatea legturii sub o anumit valoare minim, a a a a a a o capacitate mai mare nu este util. ns a Timpul de propagare ntre dou entiti este timpul scurs a at ntre momentul care entitatea surs emite un bit i momentul care acel bit n a s n ajunge la destinatie. Timpul de propagare rezult din a nsumarea timpului de propagare a semnalului de-a lungul mediului de comunicatie cu diverii timpi de ateptare a datelor diverse zone tampon. De res s n marcat c timpul de propagare a semnalului este egal cu distanta de la a emittor la receptor artit la viteza de propagare a semnalului, iar a mp a viteza de propagare nu poate depi viteza luminii vid; din acest moas n tiv, de exemplu, timpul de propagare prin legturi prin satelit nu poate a mai scurt de cteva zecimi de secund. a a Timpul scurs de la nceputul transmisiei unui bloc de date de ctre a emittor pn la nalul receptiei blocului de ctre receptor este egal cu a a a a suma dintre timpul de transfer i timpul de propagare. s Uneori, loc de timpul de propagare se utilizeaz o alt mrime, n a a a timpul dus- ntors, care este timpul scurs de la transmiterea unui mesaj de ctre o partenerul de comunicatie pn la primirea rspunsului din a a a a partea acestuia. Timpul dus- ntors este suma dintre timpii de propagare pentru cele dou sensuri i timpul de procesare pentru crearea a s rspunsului. a Evident, timpul de propagare e bine s e ct mai scurt, a a a ns diferite aplicatii au cerinte diferite: - La unele aplicatii timpul de propagare nu este prea important. De exemplu, la transferul unui ier mare, la care oricum timpul de s transfer este mare, timpul de propagare inuenteaz foarte putin a timpul total necesar transmiterii ierului. s - La difuzarea de materiale audio sau video, un timp de propagare mare nu este deranjant, a este important ca el s e constant ns a timp. Aceasta pentru c nu este deranjant dac o transmisie n a a de televiziune este cu cteva secunde arziere fat de evenia n nt a mentele transmise, a este important s nu e momente care ns a n imaginea ,, ngheat datorit creterii timpului de propagare i a a s s momente care imaginea ,,sare n nainte datorit scurtrii timpua a lui de propagare.

c 2008, Radu-Lucian Lupa s


Capitolul 1. Introducere 19

- Timpul de propagare (sau, echivalent, timpul dus- ntors) este important s e scurt special pentru aplicatii care entitile ce a n n at comunic transmit mesaje scurte i trebuie s atepte rspunsul a s a s a la mesajul precedent pentru a putea genera mesajul urmtor. Exa emple de astfel de aplicatii sunt: telefonie, videoconferinte, sesiuni interactive la distant. a Posibilitatea existentei erorilor de transmisie: Erorile de transmisie apar ca urmare a diverselor perturbatii ce afecteaz transmiterea sem a nalelor. Exist metode de-a micora orict de mult probabilitatea ca a s a un mesaj s e afectat de erori, a niciodat aceast probabilitate nu a ns a a poate fcut zero (probabilitatea unei erori poate fcut a mai a a a a ns mic dect, de exemplu, probabilitatea unui cataclism devastator care a a s distrug toat reteaua). Metodele de reducere a probabilitii erorilor a a a at de transmisie sunt studiate 2.4 i 4.1. n s Transmisia sigur a nseamn ca ecare mesaj al entitii surs s ajung a at a a a exact ntr-un singur exemplar la destinatie (s nu se piard i s nu e a as a duplicat) i mai multe mesaje transmise de ctre o aceeai surs spre o s a s a aceeai destinatie s ajung la destinatie ordinea care au fost transs a a n n mise de surs. Mesajele se pot pierde datorit erorilor de transmisie, a a a supraaglomerrii sau a defectrii unor echipamente din retea sau chiar a a din cauz c emittorul transmite cu debit mai mare dect este capaa a a a bil receptorul s preia informatia transmis. Duplicarea sau inversarea a a mesajelor pot cauzate de modicri ale conguratiei sau arcrii a nc a retelei timpul trecerii pachetelor prin retea. Realizarea transmisiei n sigure este studiat 4.3 i 4.4. a n s Transmisia sigur este evident util, a vine cu un anumit cost. a a ns Cel mai adesea, costul este creterea i uctuatia timpului de propagare, s s deoarece mesajele pierdute trebuie retransmise. La o transmisie audiovideo, este adesea preferabil pstrarea unui timp de propagare redus, a a cu pretul pierderii, din cnd cnd, a unor fractiuni de secund de a n a a material audio-video. Securitatea comunicatiei nseamn c un adversar care controleaz o a a a parte din retea s nu poat obtine informatia transmis, s nu poat a a a a a modica datele transmise fr ca acest lucru s e detectat de ctre aa a a receptor i s nu poat impersona vreuna dintre entitile ce comunic. s a a at a Securitatea comunicatiei se obtine prin metode criptograce, studiate n capitolul 6.

c 2008, Radu-Lucian Lupa s


20 1.2. Principalele elemente ale unei retele de calculatoare

1.2. Principalele elemente ale unei retele de calcula toare


Pentru ca dou dispozitive aate la distant unul de cellalt s poat a a a a a comunica, este nevoie ca cele dou dispozitive s e legate printr-un mediu de a a comunicatie care permite propagarea variatiei unei mrimi zice. Mediul zic, a mpreun cu dispozitivele de adaptare a ntre reprezentarea local a informatiei a i reprezentarea pe mediul de transmisie constituie nivelul zic al retelei. s Nivelul zic este deci un modul care permite transmisia unui ir de biti s ntre dou dispozitive legate direct unul de cellalt. Constructiv, nivelul zic este a a constituit din: cablul electric, bra optic sau, dup caz, antenele de emisiea a receptie, eventuale amplicatoare sau repetoare, plcile de retea din calcula a toare i driver -ele plcilor de retea. Constructia nivelului zic este studiat s a a n capitolul 3. De obicei, serviciul oferit de nivelul zic sufer de anumite neajuna suri, cum ar probabilitatea mare a erorilor i transmisia nesigur. Pentru s a contracararea acestora, de-o parte i de alta a nivelului zic se plaseaz cte s a a un modul de adaptare; aceste dou module constituie nivelul legturii de date. a a Nivelul legturii de date este construit partial prin hard (parte a plcii de a a retea) i partial prin soft (parte a driver -ului plcii de retea). Constructia s a nivelului legturii de date este studiat capitolul 4. a a n Nivelul zic mpreun cu nivelul legturii de date ofer o legtur a a a a a bun a ntre dou calculatoare conectate direct printr-un mediu zic. Ar a neeconomic s cerem s existe o legtur direct a a a a a ntre oricare dou calculaa toare; este preferabil s putem transmite date prin intermediul unui lant de a calculatoare (sau alte dispozitive) legate zic ecare cu urmtorul din lant. a Realizarea unei astfel de legturi cade sarcina nivelului retea, constituit a n din cte un modul ecare calculator al retelei. Modulul de retea este cona n struit prin soft, nucleul sistemului de operare al ecrui calculator din retea. n a Constructia i functionarea nivelului retea este studiat capitolul 5. s a n De obicei, serviciul oferit direct de ctre nivelul retea nu poate a utilizat direct de ctre programele utilizator. De aceea, a ntre modului de retea i programul utilizator se mai interpune un modul, constituind ( s mpreun cu a modulul omolog de pe calculatorul partener de comunicatii) nivelul transport. Nivelul transport este constituit din prti ale nucleului sistemului de operare a i, uneori, biblioteci legate programele utilizator. s n Relatiile dintre aceste componente sunt reprezentate gura 1.2. n Fiecare dintre nivele ofer nivelului superior o interfat care cuprinde a a principal functii de trimitere i de receptie a datelor. Aceste functii sunt n s

c 2008, Radu-Lucian Lupa s


Capitolul 1. Introducere Nod nal Aplicatie Modul transport Modul de retea Modul legatur a de date Modul legtur a a zic a Modulul de retea Modul legatur a de date Modul legtur a a zic a Modul legatur a de date Modul legtur a a zic a Nod intermediar Nod nal Aplicatie Modul transport Modul de retea Modul legatur a de date Modul legtur a a zic a Nivelul aplicatie Nivelul transport Nivelul retea Nivelul legturii a de date 21

Nivelul zic

Mediu zic

Mediu zic

Figura 1.2: Componentele unei prti dintr-o retea de calculatoare. Sunt gurate a doar componentele implicate comunicatia dintre dou aplicatii. Cele dou aplicatii n a a se execut pe dou calculatoare a a ntre care nu exist o legtur direct, dar exist o a a a a a legtur printr-un nod intermediar. a a

similare celor oferite de retea aplicatiilor (aa cum am vzut 1.1), dar ser s a n viciile oferite sunt mai primitive. Astfel, nivelul zic ofer nivelului legturii de a a date servicii de transfer de date, dar numai ntre calculatoare conectate direct i cu riscul ca datele s e alterate timpul transferului sau s se piard coms a n a a plet. Nivelul legturii de date ofer nivelului retea servicii de transfer de date a a mai sigure, dar continuare cu restrictia c transferul este posibil doar n a ntre calculatoare conectate direct. Nivelul retea ofer nivelului transport servicii a de transfer de date ntre orice dou calculatoare din retea, dar a neadeca nc vate utilizrii directe de ctre aplicatii (lipsa transmisiei sigure, comunicatie a a posibil doar pentru un singur proces aplicatie la un moment dat, etc.). a Constructia ecruia dintre nivele este independent de constructia a a celorlalte (conteaz doar interfata dintre ele i parametrii de calitate a servia s ciului oferit de un nivel celui imediat superior). De exemplu, proiectarea n nivelului retea, nu ne intereseaz nici ce aplicatii vor utiliza reteaua (acelai a s nivel retea din Internet este utilizat de aplicatii de pota electronic, web, s a telefonie prin Internet i videoconferinte), nici cum este construit nivelul zic s (perechi de conductoare, bre optice sau legturi radio prin satelit). a Modulele, de pe acelai nivel, din noduri diferite si transmit unul s altuia (utiliznd acest scop serviciile oferite de nivelul inferior) dou tipuri a n a

c 2008, Radu-Lucian Lupa s


22 1.2. Principalele elemente ale unei retele de calculatoare

de date: datele utile a cror transfer este cerut de nivelul superior i date a s de control necesare coordonrii activitilor modulelor din cadrul nivelului. a at Regulile de reprezentare a acestor date, de organizare a acestora mesaje, n precum i regulile dup care se trimit mesajele s a ntre modulele aceluiai nivel s alctuiesc protocolul de comunicatie al nivelului respectiv. a Functionarea corect a unei retele necesit respectarea, de ctre toate a a a modulele implicate, a protocoalelor de comunicatie stabilite.

1.3. Premise generale elaborarea i implementarea n s protocoalelor retele n


Pe lng ratiunile pur functionale, studiate pe larg capitolele urma a n a toare, elaborarea i implementarea protocoalelor intervin ratiuni practice, n s pe care le vom sira pe scurt continuare: n n Deoarece o retea este format din multe componente, frecventa cu care a se ampl ca cel putin o component a unei retele s nu functioneze nt a a a corect este mare. Este necesar ca o defectiune s afecteze ct mai putin a a din retea, iar componentele a cror defectare duce la cderea a a ntregii retele trebuie s e ct mai putine, eventual nici una. a a Gsirea unei pene a ntr-un sistem complex este, general, dicil. Reteaua n a trebuie s ofere mecanisme prin care orice defectiune s e uor de loa a s calizat. Implementri diferite ale unui protocol se pot abate moduri diferite de a n la specicatia protocolului. Este bine ca mici abateri ale partenerului de comunicatie s e tolerate. Rezult de aici principiul c o imple a a a mentare trebuie s e strict cu ceea ce transmite i tolerant cu ceea a a s a ce receptioneaz. a Reteaua trebuie s functioneze astzi, sau, un plan bun azi este mai bun a a dect un plan perfect mine (maxim atribuit generalului american a a a a George Patton, circa 1944). Momentul standardizrii unui protocol este a extrem de delicat: dac este standardizat a nainte ca problema de rezolvat s e bine eleas i solutiile posibile bine analizate, rezult un protocol a nt as a prost; dac standardizarea apare prea trziu, dup ce s-a rspndit deja a a a a a un protocol acceptabil, exist riscul creerii unui protocol perfect, dar pe a care nu-l folosete nimeni deoarece s nlocuirea sistemelor existente ar mai scump dect avantajul adus de protocolul mai bun. a a Protocoalele totui evolueaz, iar oprirea s a ntregii retele vederea schimbrii n a echipamentelor afectate de schimbarea protocolului nu este rezonabil. a

c 2008, Radu-Lucian Lupa s


Capitolul 1. Introducere 23

Ca urmare, la o schimbare de protocol trebuie avut vedere existenta n unei perioade de tranzitie timpul creia echipamentele noi trebuie s n a a poat comunica cu cele vechi. Tranzitia este mult uurat dac protoa s a a colul vechi prevede anumite faciliti. O posibilitate este ca protocol at n s se prevad o faz de negociere care ecare entitate anunt ce versia a a n a uni de protocol i ce extensii de protocol cunoate, iar apoi comunicatia s s decurge conform versiunii celei mai recente i cu cele mai multe extens sii suportate de ambii parteneri. Alt posibilitate este stabilirea, de a la prima versiune a protocolului, a actiunilor unui dispozitiv, ce im plementeaz o versiune veche a protocolului, la primirea unui mesaj a neprevzut acea versiune. a n Cerinte diferite ale diferitelor aplicatii duc la tendinta de-a elabora proto coale complexe, care s satisfac pe toat lumea. Protocoale complexe a a a duc la implementri scumpe i cu riscuri mari de-a avea erori. Este a s preferabil un protocol care s ofere cteva operatii simple care s poat a a a a combinate dup dorinta aplicatiei ce-l utilizeaz. Dac o astfel de a a a abordare nu este fezabil, ducnd la un protocol prea complex, se rea a curge la protocoale ce au posibilitatea de-a implementate doar partial; metodele utilizabile acest scop sunt similare cu cele descrise mai sus n pentru facilitarea evolutiei protocoalelor.

c 2008, Radu-Lucian Lupa s


24 Capitolul 1. Introducere

c 2008, Radu-Lucian Lupa s


25

Capitolul 2

Notiuni de teoria informatiei

Teoria informatiei se ocup cu studiul metodelor de codicare a in a formatiei vederea transmiterii sau stocrii acesteia. cadrul teoriei infor n a In matiei se studiaz i cum se poate msura cantitatea de informatie transmis as a a ntr-un mesaj i cum se poate msura ecienta unei anumite codicri. s a a Prin informatie elegem cunotintele unei entiti. nt s at cele ce urmeaz, ne va interesa problema transmiterii unei inforIn a matii de la o surs la o destinatie. Informatia de transmis nu este cunoscut a a initial nici de destinatie, nici de sistemul de transmitere. Ca urmare, a priori informatia de transmis poate vzut ca o variabil aleatoare. a a a Comunicatia dintre surs i destinatie se desfoar prin intermediul as as a unui canal de comunicatie. Canalul de comunicatie este capabil s transmit a a e o mrime variabil timp, numit semnal ( esent, o functie real a a n a n a a continu), caz care canalul este numit continuu, e un ir de simboluri a n s dintr-o multime nit, caz care canalul este numit discret. a n Deoarece canalul nu poate transmite direct informatia sursei, ntre surs i canal avem nevoie de un dispozitiv, numit emittor , care transform as a a informatia util, produs de surs, a a a ntr-un semnal sau, dup caz, a ntr-un ir de s simboluri. Similar, ntre canal i destinatie se plaseaz un dispozitiv, numit s a receptor , al crui rol este de-a efectua operatia invers, i anume de-a exa a s trage din semnal sau din irul de simboluri informatia util pentru destinatie s a (g. 2.1).

Surs a

Emittor a

Canal

Receptor Destinatie

Figura 2.1: Transmisia informatiei de la surs la destinatie a

c 2008, Radu-Lucian Lupa s


26 Capitolul 2. Notiuni de teoria informatiei

Semnalul sau, dup caz, irul de simboluri ce tranziteaz canalul se a s a numete reprezentarea informatiei. Regulile de corespondent dintre informas a ia util i reprezentarea sa poart denumirea de schem de reprezentare a t a s a a informatiei, schem de codicare a informatiei sau cod . a Ca exemplu, o limb scris este o schem de reprezentare a infora a a matiei, pentru un canal discret a crui multime de simboluri contine literele a alfabetului limbii respective, precum i spatiul i semnele de punctuatie. Un s s text scris ntr-o limb este o reprezentare a informatiei, iar conceptele din a textul respectiv sunt efectiv informatia continut text. a n Ca un al doilea exemplu, limba vorbit este o alt schem de reprezentare a a a a informatiei, canalul pentru care este construit ind de tip continuu. a Schema de codicare a informatiei se presupune c este stabilit a a n prealabil i este cunoscut att emittorului ct i receptorului. De asemenea, s a a a a s constructia schemei de reprezentare a informatiei se ine cont de caracn t teristicile canalului i de caracteristici generale ale informatiilor ce trebuie s s a se poat transmite, a la elaborarea ei nu se cunosc informatiile ce trebuia ns esc efectiv transmise. De exemplu, la elaborarea unei scheme de codicare a literelor dintr-un text utiliznd un canal ce poate transmite doar simbolurile a 0 i 1 se poate ine cont de frecventa obinuit a literelor s t s a ntr-un text, dar nu i de textul efectiv de transmis. s Restul capitolului trateaz scheme de reprezentare a informatiei pena tru canale discrete. Vom studia continuare: n proprieti generale ale codurilor, at problema minimizrii numrului de simboluri necesare a transmise prin a a canal, precum i msurarea cantitii de informatie, s a at problema codicrii cazul care canalul altereaz irul de simboluri a n n as pe care transmite (canal cu perturbatii). l

2.1. Problema codicrii informatiei pentru un canal a discret


cazul unui canal discret, canalul poate transmite un ir de simIn s boluri dintr-o multime S, numit multimea simbolurilor de cod sau alfabetul a canalului. Elementele lui S se numesc simboluri de cod sau, scurt, simboluri. Multimea S este nit i are cel putin dou elemente. De regul S = {0, 1}. as a a Pentru irurile de simboluri de cod vom utiliza urmtoarele notatii: s a reprezint multimea irurilor nite de elemente din S. S a s u v reprezint concatenarea irurilor u i v. a s s

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 27

|u| reprezint lungimea irului u; avem |u v| = |u| + |v|, u, v S . a s este irul vid; avem || = 0 i u = u = u, u S . s s Informatia transmis de ctre surs const dintr-un ir de mesaje. a a a a s Fiecare mesaj este un element dintr-o multime M de mesaje posibile. Mesajele provin din universul utilizatorului sistemului; ele pot propozitii, litere, nu mere, etc. Multimea de mesaje M este nevid i cel mult numrabil. De cele as a a mai multe ori M este nit. a Denitia 2.1 Numim functie de codicare sau cod orice functie injectiv a , unde M este multimea de mesaje, cel mult numrabil, iar c : M S a a S este multimea simbolurilor de cod, nit i avnd cel putin dou elemente. as a a Fiecare mesaj m M va codicat prin irul c(m) S . s Denitia 2.2 Numim cuvnt de cod orice ir de simboluri de cod w S cu a s proprietatea c exist un mesaj m M astfel at w = c(m). a a nc Numim multimea cuvintelor de cod multimea W = c(M ). Un ir de mesaje (m1 , . . . , mk ) M (unde M desemneaz multimea s a irurilor nite de mesaje din M ) va codicat prin irul format prin cons s catenarea codicrilor mesajelor: a c(m1 ) c(m2 ) . . . c(mk ). De remarcat c urma concatenrii se pierd delimitrile dintre codicrile a n a a a mesajelor individuale. Ca urmare, pentru ca receptorul s poat decodica a a fr ambiguiti orice transmisie a emittorului este necesar o proprietate aa at a a suplimentar a codului, aceea de-a unic decodabil: a Denitia 2.3 Un cod c : M S se numete: s cod unic decodabil, dac functia c : M S dat prin a a c(m1 , m2 , . . . , mk ) = c(m1 ) c(m2 ) c(mk ) este injectiv. a cod cu proprietatea de prex sau cod prex, dac nu exist m1 , m2 M , a a cu m1 = m2 , astfel at c(m1 ) s e prex pentru c(m2 ) i plus nc a s n c(m) = , m M . (2.1)

c 2008, Radu-Lucian Lupa s


28 2.1. Problema codificarii informatiei pentru un canal discret

cod de lungime x, dac exist o constant l I \ {0} astfel at a a a a N nc |c(m)| = l, m M ; valoarea l se numete lungimea codului; s Propozitia 2.4 Au loc urmtoarele proprieti: a at 1. Orice cod de lungime x este cod prex. a 2. Orice cod prex este unic decodabil. Demonstratia este imediat. a Exemplul 2.1: Considerm multimea mesajelor M = {a, b, c, d} i multimea a s simbolurilor de cod S = {0, 1}. Urmtorul cod are proprietatea de prex. a a 0 b 101 c 11 d 100

Exemplul 2.2: Urmtorul cod, obtinut prin oglindirea cuvintelor codului din a exemplul anterior, este unic decodabil dar nu are proprietatea de prex: a 0 b 101 c 11 d 001 Codul nu este prex ntruct cuvntul de cod 0 care este codicarea mesajului a a a este prex al cuvntului de cod 001 care este codicarea mesajului d. a De notat c un cod obtinut prin oglindirea cuvintelor unui cod prex a se numete cod sux i s s 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 ntruct irul de simboluri de cod 01 poate a s codifcarea mesajului c sau a irului de mesaje ab. s

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 29

2.2. Coduri cu proprietatea de prex


Dei simple, codurile de lungime x nu sunt adecvate urmtoarele s a n a dou cazuri: a pentru obtinerea unui cod ecient, adic avnd cuvinte ct mai scurte, a a a dac probabilitile diverselor mesaje din M sunt diferite (M este mula at imea mesajelor sursei); t dac M nu este nit (de exemplu, M este multimea numerelor naturale). a a aceste situatii, trebuie s ne extindem la clase mai largi dect cea In a a a codurilor de lungime x. Aa cum vom vedea continuarea paragrafului a s n de fat, clasa codurilor prex este sucient situatiile enumerate mai sus i, a a n s acelai timp, permite decodicarea destul de simpl a transmisiei. n s a

2.2.1. Reprezentarea arborescent a codurilor prex a

Unui cod prex c : M S i se poate ataa un arbore care: s n pentru ecare nod intern, muchiile descendente sunt cel mult numr n a de |S| i sunt etichetate cu simboluri distincte din S; s ecare frunz este etichetat cu cte un mesaj distinct din M ; a a a cuvntul de cod al unui mesaj este format din simbolurile de cod ale a muchiilor de pe lantul ce unete rdcina cu frunza ataat mesajului. s a a s a Constructia arborelui se face conform algoritmului 2.1 (Genereaz ar a

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 ataat unui cod prex s

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

c 2008, Radu-Lucian Lupa s


30 2.2. Coduri cu proprietatea de prefix

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

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 31

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

Arborele ataat este reprezentat gura 2.3. s n


2

0 a 0 b c

2 d 0 e

1 g

2 h

1 f

Figura 2.3: Arborele ataat codului prex din exemplul 2.5. s

2.2.2. Decodicarea cazul codurilor prex n


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

c 2008, Radu-Lucian Lupa s


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 ir nit de simboluri de cod s ieirea: m = (m1 , m2 , . . . , mk ) M irul mesajelor a cror codicare este s s a s1 , . . . , sl algoritmul: m:= x:=rdcina lui T a a pentru i:=1, l execut a dac nu exist muchie descendent de la x etichetat cu si atunci a a a a eroare: s nu este concatenare de cuvinte de cod sfrit dac as a x:=descendentul ui x pe muchia etichetat cu si a dac x este frunz atunci a a adaug la m mesajul asociat lui x a x:=rdcina lui T a a sfrit dac as a sfrit pentru as dac x nu este rdcina lui T atunci a a a eroare: s nu este concatenare de cuvinte de cod sfrit dac as a sfrit algoritm as
Algoritmul 2.2: Decodicarea unei reprezentri printr-un cod prex a

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 33

Decodicarea se face astfel: La nceput x este rdcina arborelui. Lum din a a a irul s primul element; acesta are valoarea 0. Coborm arbore de-a lungul s a n muchiei etichetate cu 0 i ajungem la frunza etichetat ,,a. Deoarece am s a ajuns la o frunz, punem mesajul din eticheta frunzai adic ,,a irul a a n s de mesaje decodicat i revenim la rdcin. Urmeaz simbolul de cod 1; s a a a a coborm de-a lungul muchiei 1 i ajungem nodul printe ale nodurilor ,,b, a s n a ,,c i ,,d. Urmeaz simbolul 1; coborm de-a lungul muchiei 1 i ajungem la s a a s frunza ,,c; adugm ,,c la irul de mesaje i revenim la rdcin. Continund a a s s a a a a acelai fel, vom obtine continuare mesajele ,,e i ,,a. Sirul de mesaje n s n s transmis este deci ,,acea.

2.2.3. Lungimile cuvintelor unui cod prex


cele ce urmeaz, vom examina o conditie necesar i sucient In a a s a pentru existenta unui cod prex cu lungimi date ale cuvintelor, iar apoi vom arta c aceast conditie este de asemenea necesar pentru existenta unui cod a a a a unic decodabil. Teorema 2.5 Fiind dat o multime de mesaje M cel mult numrabil i o a a a s multime de simboluri S nit avnd cel putin 2 elemente distincte, pentru a a orice cod c : M S cu proprietatea de prex, lungimile cuvintelor de cod li = |c(i)|, i M , satisfac urmtoarea inegalitate (inegalitatea lui Kraft): a |S|li 1
iM

(2.2)

i, reciproc, dac numerele naturale (li )iM satisfac inegalitatea (2.2) atunci s a exist un cod prex c : M S avnd lungimile cuvintelor |c(i)| = li , i M . a a
Demonstratie. Vom nota continuare d = |S| i K = mM dlm . n s Vom demonstra ai prima implicatie, pentru cazul care multimea nt n mesajelor M este nit. Demonstratia va construit prin inductie dup a a a maximul k al lungimilor cuvintelor de cod (k = maxmM lm ). Pentru k = 1, nseamn c toate cuvintele de cod sunt de lungime 1 i a a s consecint sunt numr de cel mult d. Ca urmare n a n a K=
mM

d1 = |M | d1 d d1 = 1.

Presupunnd inegalitatea lui Kraft adevrat pentru coduri de lungime a a a maxim k = k0 , pentru un k0 I arbitrar, s demonstrm c are loc i a N a a a s pentru coduri de lungime maxim k = k0 + 1. Pentru aceasta, s construim a a multimile de mesaje Mx = {m M : primul simbol din c(m) este x} , x S.

c 2008, Radu-Lucian Lupa s


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

dlm .

Pentru ecare x M , restrictia lui c la Mx , c|Mx , este de asemenea un cod prex. Distingem continuare trei cazuri: n Dac Mx are cel putin 2 elemente, rezult c toate cuvintele de cod ale a a a elementelor din Mx au lungime mai mare sau egal cu 2, deoarece a n caz contrar singurul cuvnt de cod de lungime 1, anume x, ar prex a pentru toate celelalte. Eliminnd din toate cuvintele de cod primul a simbol obtinem un nou cod prex pentru Mx . Acest cod prex are toate cuvintele de cod lungime cel mult k0 i ca urmare, conform s ipotezei de inductie, satisface inegalitatea lui Kraft, adic a d(lm 1) 1,
mMx

de unde dlm
mMx

1 . d

Dac Mx are un singur element, cuvntul de cod asociat acestui elea a ment are lungime cel putin 1 i ca urmare din nou s dlm
mMx

1 . d

Dac Mx = , avem a

mMx

1 dlm = 0 d .

Insumnd acum pentru toate submultimile Mx , obtinem: a K=


xS mMx

d(lm )
xS

1 = 1. d

cazul unei multimi M numrabile, construim In a Ml = {m M : |c(m)| l} , l I N i notm s a Kl =


mMk

d(lm ) .

Deoarece, pentru ecare l I , c|Ml este un cod prex, rezult Kl 1, N a l I . Dar (Kl )lIN este un subir al irului sumelor partiale ale unei N s s

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 35

Algoritmul Construiete cod s intrarea: (lm )mM I satisfcnd (2.2) N a a ieirea: c : M S cod prex cu |c(m)| = lm , m M s algoritmul: E:={} pentru l=1,maxmM lm execut a E := pentru w E execut a pentru x S execut a E :=E {w x} sfrit pentru as sfrit pentru as E:=E pentru m M : lm = l execut a c(m):= o valoare arbitrar din E a E:=E \ {c(m)} sfrit pentru as sfrit pentru as sfrit algoritm as
Algoritmul 2.3: Constructia unui cod prex cu lungimi date ale cuvintelor de cod

c 2008, Radu-Lucian Lupa s


36 2.2. Coduri cu proprietatea de prefix permutri a seriei cu termeni pozitivi mM dlm . De aici rezult c seria a a a este convergent i suma ei K este la rndul ei mai mic sau egal cu 1. as a a a S demonstrm acum reciproca, i anume c inegalitatea lui Kraft a a s a implic existenta unui cod prex. Constructia codului va realizat de a a algoritmul 2.3. Demonstrm continuare corectitudinea acestui algoritm. a n Vom nota cele ce urmeaz cu Ek valoarea lui E cadrul iteratiei n a n l = k imediat dup executia instructiunii E:=E . a Mai ai, pentru a demonstra c lungimile cuvintelor de cod sunt nt a ntr-adevr cele dorite, s artm c toate cuvintele din Ek au lungime k. a a aa a Intr-adevr, la prima iteratie cuvintele din E1 se obtin prin concatenarea a cte unui simbol din S la irul vid. Apoi, cuvintele din Ek+1 se obtin din a s cuvintele rmase din Ek dup atribuirea unora ca i cuvinte de cod prin a a s adugarea la nal a cte unui simbol din S. Ca urmare, cuvintele din Ek+1 a a sunt de lungime k. S artm acum c se obtine un cod prex. Dac un cuvnt din Ek a aa a a a este atribuit unui mesaj, cuvntul de cod respectiv este eliminat din Ek . a Cuvintele ce vor atribuite continuare pot avea prexe de lungime k n doar dintre cuvintele rmase Ek . a n Mai trebuie artat c exist a a a ntotdeauna E o valoare de atribuit lui n c(m). Pentru aceasta, vom arta c a a dklm |Ek |
mM lm k

(2.3)

La prima iteratie, |Ek | = d i s dklm = d K d = |E|


mM lm k

Presupunnd c (2.3) are loc la iteratia cu l = k, la iteratia urmtoare, a a a 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 din modul de constructie a lui Ek+1 din Ek a prin eliminarea unui numr de elemente egal cu numrul de cuvinte de a a

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei cod de lungime k urmat de a nlocuirea ecrui cuvnt rmas cu d cuvinte a a a obtinute prin adugarea ecrei litere posibile din S. a a Observm acum c suma din inegalitatea (2.3) are un numr de termeni a a a de valoare 1 egal cu numrul de cuvinte de lungime k de obtinut i, ca a s urmare, exist Ek suciente cuvinte. a n 37

Exemplul 2.7: Dorim construirea unui cod prex pentru multimea M = {a, b, c, d, e} i multimea de simboluri de cod S = {0, 1} cu urmtoarele s a lungimi ale cuvintelor de cod: la = 3, lb = 1, lc = 3, ld = 3, le = 3. Rezolvare: mai ai vericm dac este satisfcut inegalitatea lui nt a a a a Kraft: |S|lm = 23 + 21 + 23 + 23 + 23 = 1 1,
mM

inegalitatea este satisfcut i prin urmare exist un cod prex. a as a Constructia propriu-zis este artat gura 2.4. Cerculetele de a a a n semneaz nodurile corespunztoare elementelor din multimea E. a a
0 Rdcina a a arborelui
(a) Initializarea: E = {}

0 b

(b) Iteratia l = 1: E = {1} i a fost s plasat ,,b

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

0 b 0 0 a

1 1 1 c 0 d 1 e

(d) Ultima iteratie, l = 3: E = i codul este complet generat s

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

c 2008, Radu-Lucian Lupa s


38 2.2. Coduri cu proprietatea de prefix

Vom arta continuare c inegalitatea lui Kraft este o conditie necea n a sar pentru existenta codurilor unic decodabile, nu doar a celor prex. Avem: a 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 i d = |S|. s


Demonstratie. Considerm mai ai cazul cnd M este nit. S notm a nt a a a a n cu E = mM dlm . S lum un k I arbitrar i s calculm: a a N s a a Ek =
(m1 ,...,mk )M k

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


(m1 ,...,mk )M k

(2.5)

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

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

S observm acum c N (k, l) este numrul de iruri de k mesaje pentru a a a a s care lungimea codicrii irului este l. Deoarece codul este unic decodabil, a s aceste codicri sunt distincte i ca urmare N (k, l) este cel mult egal cu a s numrul de iruri distincte de l simboluri de cod, adic a s a N (k, l) dl . Inlocuind (2.6), obtinem: n 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 Lupa s


Capitolul 2. Notiuni de teoria informatiei Aceast inegalitate are loc pentru orice k I . Dac am avea E > 1, a N a atunci pentru un k sucient de mare am avea E k > lmax k; prin urmare E 1. Dac M este numrabil, construim multimile a a a Mk = {m M : |c(m) k} , k I N

39

N as i notm Ek = mMk dlm . Pentru ecare k I , Mk este nit i c|Mk s a este un cod unic decodabil. Ca urmare, Ek 1 pentru ecare k I . N Observm acum c E = limk Ek 1. a a

Corolarul 2.7 Pentru orice cod unic decodabil, exist un cod prex cu acea leai lungimi ale cuvintelor de cod. s

2.3. Coduri optime


Deoarece stocarea sau transmiterea ecrui simbol de cod implic un a a cost (timp necesar transmisiei, spatiu zic pe suportul de informatie, etc), este natural s cutm un cod pentru care numrul de simboluri de cod necesare a a a a transmiterii irului de mesaje al sursei este ct mai mic. Se impun a cteva s a ns a precizri cu privire la aceast minimizare. a a Mai ai, codul trebuie elaborat necunoscnd informatia particular nt a a pe care urmeaz s-o trimit sursa. Prin urmare, nu se poate cere minimizarea a a lungimii reprezentrii informatiei transmise efectiv de surs. Se va minimiza a a deci numrul mediu de biti necesari reprezentrii unui mesaj al sursei. a a al doilea rnd, acest numr mediu de biti se consider sens In a a a n probabilistic, de valoare medie a unei variabile aleatoare. Anume, ecare mesaj al sursei poate considerat o variabil aleatoare cu valori din multimea M a de mesaje ale sursei. Lungimea reprezentrii mesajului este de asemenea o a variabil aleatoare, a crei valoare medie este ceea ce dorim s minimizm. a a a a Probabilitile diferitelor mesaje ale sursei se pot estima pe diverse at ci e analiznd teoretic fenomenele pe baza crora functioneaz sursa, e a a a a analiznd statistic iruri de mesaje trimise de surs. Ca exemplu, dac mesajele a s a a sursei sunt litere ce alctuiesc un text a ntr-o anumit limb, se poate detera a mina statistic frecventa ecrei litere, precum i frecventele unor succesiuni a s de litere.

c 2008, Radu-Lucian Lupa s


40 2.3. Coduri optime

2.3.1. Cantitatea de informatie


Cantitatea de informatie purtat de un mesaj este o msur a incer a a a titudinii pe care destinatarul o avea imediat nainte de primirea mesajului i s care este eliminat urma primirii mesajului. a n Cantitatea de informatie purtat de un mesaj trebuie deci s e mic a a a dac pentru destinatar evenimentul anuntat de mesaj era aproape sigur i a s mare dac este un eveniment total neateptat. Este de dorit, de asemenea, a s ca msura informatiei s e aditiv, sensul c privind ca un singur mesaj a a a n a o succesiune de dou mesaje, cantitatea de informatie purtat de mesajul a a compus s e suma cantitilor de informatie purtate de cele dou mesaje a at a separat. Aa cum vom vedea continuare, cantitatea de informatie purtat s n a de un mesaj va xa o limit inferioar teoretic a numrului de simboluri de a a a a cod necesare codicrii mesajului. a De notat c cantitatea de informatie nu are nici o legtur cu utilia a a tatea informatiei. Denitia 2.8 Fie o surs care emite un ir de mesaje m1 , m2 , . . . , mt M . a s Cantitatea de informatie adus de mesajul mt este a info(mt ) = log2 Pr(mt |m1 , m2 , . . . , mt1 ). Altfel spus, cantitatea de informatie adus de un mesaj mt contex a n tul (adic urmnd dup) m1 , m2 ,. . . ,mt1 este minus logaritmul probabilitii a a a at ca al t-lea mesaj s e mt , conditionat de faptul c mesajele precedente au a a a fost m1 , m2 ,. . . ,mt1 . cazul unei surse ergotice, adic pentru care probabilitatea ca un In a mesaj s aib o anumit valoare este independent de mesajele anterioare i a a a a s de pozitia (numrul de ordine) mesajului irul de mesaje, putem, pentru a n s ecare m M , s notm cu pm probabilitatea ca un anumit mesaj din irul a a s de mesaje s aib valoarea m. Atunci cantitatea de informatie adus de un a a a mesaj m este info(m) = log2 pm . Unitatea de msur pentru cantitatea de informatie este bitul. a a A nu se confunda bitul cu sensul de unitate de msur pentru cantia a tatea de informatie cu bitul cu sensul de cifr binar. Exist o legtur a a a a a ntre aceste notiuni, i anume, aa cum vom vedea, pentru a transmite un bit de s s informatie avem nevoie cel putin de un bit (cifr binar). a a Exemplul 2.8: Dac emittorul anunt receptorului rezultatul aruncrii unei a a a a monede, mesajul a czut cu fata sus poart o cantitate de informatie egal a n a a 1 cu log2 2 = (1) = 1bit.

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 41

Exemplul 2.9: textul acestei lucrri, 10,7% dintre litere sunt ,,a, i doar In a s 1,1% sunt ,,b. Cu aceste cunotinte, receptorul se va atepta de la ecare s s liter s e ,,a cu probabilitate de 10,7% i ,,b cu probabilitate de 1,1%. a a s In aceste conditii, ecare liter ,,a poart log2 0,107 3,224 biti de informatie, a a i ecare liter ,,b poart log2 0,011 6,5 biti. s a a Exemplul 2.10: Presupunem c emittorul informeaz receptorul asupra a a a rezultatului aruncrii unui zar. Dac emittorul trimite mesajul numrul este a a a a ntre 1 i 4 cantitatea de informatie este log2 4 0,58 biti. Dac emittorul s a a 6 anunt acum c numrul este 3, probabilitatea acestui caz, cu informatiile a a a 1 a disponibile imediat nainte, este 4 , de unde cantitatea de informatie purtat 1 de mesajul numrul este 3 este log2 4 = 2 biti. S observm c, dac a a a a a emittorul ar spus de la a nceput numrul este 3, cantitatea de informatie a transmis ar fost log2 1 2,58 biti. a 6 Denitia 2.9 Fie o surs de informatie ce emite mesaje dintr-o multime M , a ecare mesaj m M avnd o probabilitate pm de-a emis. Se numete a s entropia sursei de informatie cantitatea H=
mM

pm log pm

(2.9)

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

2.3.2. Lungimea medie a cuvintelor de cod


Denitia 2.10 Fie o surs ce emite mesaje dintr-o multime M . Pentru ecare a m M , e pm probabilitatea mesajului m i e c : M S un cod unic s decodabil. Se numete lungimea medie a cuvintelor codului c valoarea s l=
mM

pm |c(m)|.

Denitia 2.11 Un cod unic decodabil c : M S se numete cod optim s dac lungimea medie a cuvintelor sale este mai mic sau egal dect lungimea a a a a . medie a cuvintelor oricrui cod unic decodabil c : M S a Exist urmtoarea limit inferioar pentru lungimea medie a cuvina a a a telor de cod:

c 2008, Radu-Lucian Lupa s


42 2.3. Coduri optime

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

particular, dac |S| = 2, atunci rezult l H. Cu alte cuvinte In a a avem nevoie cel putin de un simbol binar (un bit) pentru a transmite un bit de informatie. Denitia 2.13 Se numete ecienta unui cod raportul = s
H , l log2 |S|

unde H

este entropia sursei, l este lungimea medie a cuvintelor de cod, iar S este multimea simbolurilor de cod. Se numete redundanta relativ valoarea 1 . s a Ecienta i redundanta relativ sunt numere cuprinse s a ntre 0 i 1. s Valoarea minim, dat teorema 2.12, pentru lungimea medie a cua a vintelor de cod poate atins efectiv, adic se poate obtine ecienta = 1, a a doar anumite cazuri. Motivul pentru care ea nu poate n ntotdeauna atins a este dat de natura discret a simbolurilor de cod. Ideal, lungimea cuvintelor a a de cod ar trebui s e lm = log|S| pm . Pentru aceste valori inegalitatea lui a Kraft este satisfcut: a a |S|lm =
mM mM

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

pm = 1 1,

prin urmare ar exista un cod unic decodabil i limita din teorema 2.12 ar s 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 a numai dac lm = log|S| pm sunt toate ns a ntregi. cazul general putem doar s alegem ca lungimi ale cuvintelor de In a 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 Lupa s


Capitolul 2. Notiuni de teoria informatiei 43

Teorema 2.14 Fie o surs ergotic ce emite mesaje dintr-o multime M , e a a H entropia sursei i e S o multime de simboluri de cod. Atunci exist un s a cod c : M S unic decodabil a crui lungime medie l a cuvintelor de cod a satisface H H l< + 1. (2.11) log2 |S| log2 |S| Rezultatul teoremei precedente poate mbuntit dac loc s a at a n a considerm mesajele sursei ca ind mesajele din M considerm succesiuni a a de mesaje din M , construim un cod pentru acestea din urm i determinm as a raportul dintre lungimea medie a cuvntului de cod i numrul de mesaje din a s a M codicate prin acesta. detaliu, constructia este urmtoarea: In a Fixm k I Considerm o a doua surs, ale crei mesaje vor suca N. a a a cesiuni de k mesaje ale sursei originale. Multimea de mesaje ale noii surse este prin urmare M k . Probabilitile mesajelor sunt p(m1 ,...,mk ) = pm1 . . . pmk . at 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 un cod c : M k S pentru care a lungimea medie a cuvintelor de cod, l(k) , satisface Hk Hk l(k) < + 1. log2 |S| log2 |S|

c 2008, Radu-Lucian Lupa s


44 2.3. Coduri optime

Numrul mediu de simboluri de cod utilizate pentru a transmite un mesaj din a (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 astfel at codicnd N nc a cte k mesaje succesive din M s obtinem un numr de simboluri pe mesaj a a a ncadrat ntre H l(k) H < + . log2 |S| k log2 |S|

2.3.3. Generarea codului optim prin algoritmul lui Human


Ne vom ocupa continuare de generarea efectiv a unui cod optim n a pentru o surs cu probabiliti cunoscute ale mesajelor. Algoritmul cel mai a at utilizat pentru aceasta este algoritmul lui Human (algoritmul 2.4). Ca idee de baz, algoritmul lui Human construiete arborele unui a s cod prex modul urmtor: pleac de la n arbori (n ind numrul de mesaje) n a a a ecare constnd doar din rdcin, dup care unete cte |S| arbori (|S| ind a a a a a s a numrul de simboluri de cod) ca subarbori ai unui nod nou creat. La ecare a unire, se iau arborii cu sumele probabilitilor mesajelor asociate cele mai at mici; caz de egalitate n ntre probabiliti, se iau oricare dintre arborii de at probabiliti egale. Algoritmul se termin momentul care rmne un at a n n a a singur arbore. Dac |S| > 2 i n nu este de forma (|S| 1)k + 1 cu k I astfel a s N, c nu s-ar putea uni de ecare dat exact |S| arbori, la prima unire se vor a a uni (n 2) mod (|S| 1) + 2 arbori, astfel at la toate celelalte uniri s se nc a uneasc cte |S| arbori i nal s rmn exact un arbore. a a s n a a a a Exemplul 2.11: Fie o surs avnd multimea mesajelor posibile a a M = {a, b, c, d, e} cu probabilitile corepsunztoare pa = 0,35, pb = 0,15, pc = 0,15, pd = 0,15, at a pe = 0,20 i e alfabetul canalului S = {0, 1}. Generarea codului optim se s face astfel (vezi g. 2.5): prima faz creem noduri izolate corespunztoare mesajelor sursei In a a (g. 2.5(a)); Alegem dou noduri cu cele mai mici probabiliti i le unim. Acestea pot a at s ,,b cu ,,c, ,,b cu ,,d sau ,,c cu ,,d. Oricare dintre alegeri duce la un

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 45

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

c 2008, Radu-Lucian Lupa s


46 2.3. Coduri optime

cod optim. S alegem ,,b cu ,,c. Calculm i probabilitatea arborelui a a s rezultat: 0,15 + 0,15 = 0,3. (g. 2.5(b)). continuare unim din nou arborii de probabiliti minime; acum acetia In at s sunt ,,d i ,,e (g. 2.5(c)). s Avem acum dou posibiliti: arborele ce contine pe ,,b i pe ,,c poate a at s unit e cu arborele format din ,,a, e cu arborele format din ,,d i s ,,e. Alegem a doua variant. a nal unim cei doi arbori rmai. In a s 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 comparatie, 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: Functionarea algoritmului Human, exemplul 2.11

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 47

Dac la pasul 4 s-ar ales cealalt posibilitate, ar rezultat multimea a a de arbori din gura 2.6(a) i nal arborele asociat codului prex din gura 2.6(b). s n S observm c se obtine exact aceeai lungime medie a cuvintelor de cod: a a a s 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 alternativ pentru paii 4 i 5 (exemplul 2.11) a a s s

Exemplul 2.12: Fie o surs avnd multimea mesajelor posibile a a M = {a, b, c, d, e, f} cu probabilitile corepsunztoare pa = 0,4, pb = 0,15, pc = 0,15, pd = 0,1, at a pe = 0,1, pf = 0,1 i e alfabetul canalului S = {0, 1, 2}. s Constructia 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 i avem s H 2,346439 1,4804382 1,6 = l log2 |S| 1,5849625 Teorema 2.15 Codul obtinut prin algoritmul Human este optim. Pentru demonstratie avem nevoie de cteva leme ce descriu pro a cele ce urmeaz vom nota cu L(c) lungimea prieti ale unui cod optim. In at a medie a cuvintelor unui cod c. Lema 2.16 Fie M multimea mesajelor sursei, e pm , m M , probabilitile at mesajelor sursei, e S alfabetul canalului i e c : M S un cod optim. s Pentru orice mesaje m1 , m2 M , dac pm1 < pm2 atunci |c(m1 )| |c(m2 )|. a

c 2008, Radu-Lucian Lupa s


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: Functionarea algoritmului lui Human, exemplul 2.12 Demonstratie. Presupunem contrariul: m1 , m2 M , pm1 < pm2 i s |c(m1 )| < |c(m2 )|. Construim atunci un alt cod, c : M S , prin interschimbarea cuvintelor de cod asociate mesajelor m1 i m2 : s c(m2 ) , m = m1 c(m1 ) , m = m2 c (m) = c(m) , m M \ {m1 , m2 } 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 c are lungimea cuvintelor de cod mai mic dect c, de unde rezult a a a a c c nu este cod optim. a

Lema 2.17 Fie M multimea mesajelor sursei, |M | 2, e S alfabetul canalu lui, e c : M S un cod optim i e lmax lungimea celui mai lung cuvnt al s a codului c (lmax = maxmM |c(m)|). Atunci exist cel putin (n 2) mod (|S| a 1) + 2 cuvinte de cod de lungime lmax .
Demonstratie. Conform corolarului 2.7, exist un cod prex cu aceleai a s lungimi ale cuvintelor de cod ca i codul c. Deoarece ne intereseaz doar s a

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei lungimile cuvintelor de cod, putem, fr a restrnge generalitatea, s preaa a a supune c c este cod prex. a Considerm arborele asociat codului c. Vom numi numrul de pozitii a a libere ale unui nod intern (un nod ce are cel putin un u) valoarea |S| minus numrul de i. Observm urmtoarele: a a a Cu exceptia penultimului nivel, ecare nod intern are zero pozitii libere Intr-adevr, caz contrar s-ar putea muta o frunz de pe a n a ultimul nivel ca descendent al nodului cu cel putin o pozite liber; a prin aceast operatie ar scdea lungimea cuvntului de cod corea a a spunztor i ca urmare ar scdea lungimea medie a cuvintelor de a s a cod, contrazicnd ipoteza c c este optim. a a Suma numerelor pozitiilor libere ale nodurilor penultimului nivel este cel mult |S| 2. Dac arborele are altime 1, atunci unicul nod a n intern este rdcina, aceasta are cel putin 2 i, deoarece |M | 2, i, a a s consecint, numrul pozitiilor libere este cel mult |S| 2. Conn a a siderm acum un arbore de altime cel putin 2 i s presupunnd a n s a a prin absurd c am avea |S| 1 pozitii libere. Fie t un nod intern de a pe penultimul nivel i e k numrul de descendenti ai si. Nodul t s a a are |S| k pozitii libere, deci mai rmn cel putin k 1 pozitii libere a a la celelalte noduri. Mutm k 1 dintre descendentii lui t pe pozitii a libere ale altor noduri ale penultimului nivel; lungimile cuvintelor de cod se pstreaz. Acum t are un singur descendent. Putem elimina a a nodul t subordonnd unicul su descendent direct parintelui lui t; a a acest fel lungimea cuvntului de cod corespunztor scade cu 1 i n a a s lungimea medie a cuvntului de cod scade cu o valoare nenul, ceea a a ce contrazice din nou ipoteza c c e optim. a Pentru un arbore cu k noduri interne i cu numrul total de pozitii s a libere 0, numrul de frunze, care este egal cu numrul n de mesaje, este a a n = k (|S|1)+1. Acest lucru se demonstreaz imediat prin inductie dup a a k. Dac arborele are total j pozitii libere, prin completarea acestora cu a n frunze ar rezulta un arbore cu 0 pozitii libere i n + j frunze; prin urmare s n = k (|S| 1) + 1 j Notnd q = |S| j 2, avem a n = k (|S| 1) + q |S| + 3 = (k 1) (|S| 1) + 2 + q Deoarece 0 j |S| 2 rezult 0 q |S| 2 de unde a q = (n 2) mod (|S| 1) Penultimul nivel contine cel putin un nod intern, de unde rezult c a a pe ultimul nivel exist cel putin |S| j frunze. Cum |S| j = q + 2 rezult a a c pe ultimul nivel avem cel putin a q + 2 = (n 2) mod (|S| 1) + 2 49

c 2008, Radu-Lucian Lupa s


50 frunze. Demonstratia teoremei 2.15. Fie n numrul de mesaje. Vom demonstra a n1 prin inductie dup numrul k = |S|1 . a a 2.3. Coduri optime

Pentru k = 1, adic n |S|, algoritmul lui Human face o singur a a unicare, rezultnd cuvinte de cod de lungime 1 pentru toate mesajele. a Un astfel de cod este optim, deoarece cuvinte de cod de lungime mai mic a dect 1 nu sunt permise. a Presupunem acum c algoritmul Human genereaz codul optim pena a tru un k dat i s-i demonstrm optimalitatea pentru k + 1. S lum deci s a a a a o multime de mesaje M cu k(|S| 1) + 1 |M | (k + 1)(|S| 1), s a notm cu pm , m M , probabilitile mesajelor, s notm cu ch codul gena at a a erat de algoritmul lui Human i cu co un cod prex optim pentru aceeai s s multime de mesaje i aceleai probabiliti i s notm cu L(ch ), respec s s at s a a tiv L(co ) lungimile medii ale cuvintelor de cod corespunztoare. Avem de a demonstrat c L(ch ) L(co ). a Deoarece co este un cod optim, aplicnd lema 2.17 deducem c co a a are cel putin (n 2) mod (|S| 1) + 2 cuvinte de lungime maxim. Din a lema 2.16, deducem c acestea sunt cuvintele corespunztoare mesajelor cu a a probabilitile cele mai mici, adic e mesajele e1 , . . . , ed alese de algoritmul at a lui Human pentru prima unicare, e mesaje de aceleai probabiliti; s at n al doilea caz putem, prin interschimbri de cuvinte de cod, s facem ca cele a a (n2) mod (|S|1)+2 cuvinte de lungime maxmim din co s e cele alese a a prima etap a algoritmului lui Human, fr ca prin aceasta s pierdem n a aa a optimalitatea lui co . De asemenea, prin interschimbri de cuvinte de cod, a putem face ca celor (n 2) mod (|S| 1) + 2 mesaje alese de algoritmul lui Human s le corespund prin co cuvinte de cod ce difer doar prin ultimul a a a simbol. Creem acum un cod co : (M \ {e1 , . . . , ed }) {t} S , unde t este un obiect nou introdus, dnd ca valoare pentru c(t) prexul comun al lui a c(e1 ),. . . ,c(ed ). acelai mod, creem un cod ch pornind de la ch . Observm In s a d s acum c, notnd pt = i=1 pei , avem L(co ) = L(co ) pt i analog, L(ch ) = a a L(ch ) pt . S mai remarcm c ch este codul produs de algoritmul lui a a a Human pentru multimea de mesaje (M \ {e1 , . . . , ed }) {t} i, conform s ipotezei de inductie, el este optim; prin urmare L(ch ) L(co ). De aici rezult L(ch ) L(co ), deci codul obtinut prin algoritmul lui Human este a optim.

2.3.4. Compresia ierelor s


Codarea optimal este ceea ce face orice program de compresie a a ierelor. Algoritmul Human este folosit aproape de orice algoritm de coms presie, a de regul nu direct asupra octetilor din datele de comprimat. ns a

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 51

Algoritmii de compresie utilizati practic se folosesc i de depen n a s dentele ntre octetii succesivi. Utilizarea oricrui cod presupune c receptorul cunoate codul folosit a a s de emittor. Transmiterea separat a codului ctre receptor risc s contrabala a a a a anseze ctigul obtinut prin codare optimal. Metodele adaptative presupun as a c emittorul a a ncepe emisia cu un cod standard, dup care modic pena l a tru a-l optimiza conform frecventelor observate date. Dac algoritmul de n a generare a codului este xat i codul folosit la un moment dat depinde doar s de datele trimise (codate) deja, atunci receptorul poate recalcula codul folosit de emittor (folosind acelai algoritm ca i emittorul). a s s a De notat c nici un cod nu poate folosi mai putini biti pentru codare a lipsa redundantei, nu e posibil dect cantitatea de informatie transmis. In a a a compresia. Ca o consecint, nici un program de compresie nu poate comprima a un ir aleator de octeti. s

2.4. Coduri detectoare i corectoare de erori s


Vom studia cele ce urmeaz problema transmisiei informatiei n a n situatia unui canal discret, dar care altereaz irul de simboluri de cod trans as mise. practic, o astfel de alterare este efectul zgomotelor ce se suprapun In a peste semnalul transmis de nivelul zic (vezi capitolul 3); din acest motiv un astfel de canal se numete canal cu zgomot sau canal cu perturbatii. s Pentru transmiterea corect a datelor printr-un canal cu perturbatii a este necesar un mecanism care s permit e detectarea e corectarea erorilor a a de transmisie. Ambele mecanisme permit receptorului s determine dac un a a cuvnt de cod a fost transmis corect sau a fost alterat de ctre canal. cazul a a In unui cuvnt alterat: a detectarea erorilor presupune c receptorul informeaz destinatia de acest a a lucru; corectarea erorilor presupune c receptorul determin cuvntul de cod cel a a a mai probabil s fost transmis de ctre emittor i d sursei mesajul a a a s a corespunztor acelui cuvnt. a a Ca principiu, att detectarea ct i corectarea erorilor se bazeaz pe a a s a un cod care nu orice secvent (de lungime adecvat) de simboluri de cod n a a este cuvnt de cod i, ca urmare, alterrile cele mai probabile ale irului de a s a s simboluri transmis conduc la secvente de simboluri de cod care nu constituie cuvinte de cod. Desigur, ntotdeauna rmne posibilitatea ca erorile de transa a misie s transforme un cuvnt de cod alt cuvnt de cod i, ca urmare, erorile a a n a s

c 2008, Radu-Lucian Lupa s


52 2.4. Coduri detectoare i corectoare de erori s

s scape nedetectate. Cu un cod bine ales, a, probabilitatea unei erori nedea ns tectate poate fcut sucient de mic. Evident, pentru aceasta este necesar a a a ca multimea cuvintelor de cod s e o submultime ,,rar a multimii secventelor a a de simboluri de cod. Prin urmare, posibilitile de detectare a erorilor in de constructia at t codului. De aici denumirea de cod detector de erori , respectiv cod corector de erori . Deoarece la orice cod detector sau corector de erori multimea irurilor s de cuvinte de cod este o submultime strict a multimii irurilor arbitrare a s de simboluri de cod, rezult c orice cod detector sau corector de erori are a a redundant. a cele ce urmeaz vom considera alfabetul canalului S = {0, 1}. In a

2.4.1. Modelul erorilor


Constructia codului detector sau corector de erori trebuie fcut a a n aa fel at s fac sucient de mic probabilitatea unei erori nedetectate. s nc a a a Este deci esential constructia unui model probabilistic al erorilor, adic de a a terminarea, pentru ecare modicare a irului de simboluri transmis de canal, s a probabilitii corespunztoare. at a Distingem urmtoarele tipuri de erori: a erori individuale, care schimb valoarea unui bit din 0 1 sau reciproc; a n rafale de erori, care schimb o parte dintr-un ir de bit (nu neaprat a s a toti). Lungimea rafalei este numrul de biti dintre primul i ultimul bit a s modicat; erori de sincronizare, care determin pierderea unui bit sau introducerea a unui bit, mpreun cu decalarea corespunztoare a bitilor urmtori. a a a Transmisia unui ir de biti poate afectat simultan de mai multe s a erori distincte. O modelare simpl a erorilor este aceea care se presupune c exa n a ist doar erori individuale i c probabilitatea ca o eroare s afecteze un bit a s a a este aceeai pentru toti bitii i independent de valorile bitilor i de pozitiile s s a s celorlalte erori. Cu alte cuvinte, ecare bit are o probabilitate p s e inversat a (dac emittorul a transmis un 1 receptorul s primeasc 0 i dac emittorul a a a a s a a a transmis 1 receptorul s primeasc 0) i 1 p s e transmis corect. a a s a Erorile ind independente, probabilitatea ca o secvent de l biti s a a n , probabilitatea ca acea secvent s e se transmit corect este p0 = (1 p) a a a afectat de exact o eroare este p1 = lp(1 p)l1 lp, probabilitatea s se a a l(l1) 2 l2 i, general, probabilitatea s n produc dou erori este p2 = 2 p (1 p) a a

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 53

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

conform distributiei binomiale. Observm c, a a ntruct p a 1, pentru l sucient de mic avem p0 p1 p2 . . ., adic probabilitatea de-a avea mai mult de cteva erori este a a extrem de mic. a

2.4.2. Principiile codurilor detectoare i corectoare de erori s


Vom analiza doar cazul codurilor de lungime x pentru multimea de a simboluri S = {0, 1}. Notm cu l lungimea cuvintelor de cod. Prin urmare, a multimea cuvintelor de cod, W , este o submultime a multimii irurilor de s simboluri de cod de lungime l: W {0, 1}l . Ca model al erorilor, considerm c avem doar erori individuale, ina a dependente (cazul studiat paragraful anterior). n Deoarece nu avem erori de sincronizare i deoarece toate cuvintele de s cod au aceeai lungime l, receptorul poate departaja cuvintele de cod succes sive, independent de erorile de transmisie survenite. Ne vom pune deci doar problema detectrii sau corectrii erorilor ce afecteaz un cuvnt de cod de a a a a lungime x l. a Intruct probabilitatea de-a avea k sau mai multe erori scade foarte a repede o dat cu creterea lui k, se alege o valoare k astfel at probabilitatea a s nc de-a avea k sau mai multe erori este neglijabil de mic i se construiete codul as s presupunnd c nu se produc mai mult de k 1 erori. a a Denitia 2.18 Spunem despre codul c : M {0, 1}l c detecteaz k erori a a individuale dac, pentru orice cuvnt de cod w W = c(M ), prin transfora a marea lui w ca urmare a k sau mai putine erori, cuvntul rezultat w nu este a cuvnt de cod: w W . a Pentru a determina numrul de erori detectate de un cod, denim a urmtoarele: a Denim pe {0, 1}l o functie distant: a
l

d(u, v) =
i=1

|ui vi |,

unde u = (u1 , u2 , . . . , ul ) i v = (v1 , v2 , . . . , vl ). Astfel, distanta s ntre dou a cuvinte este numrul de erori individuale necesare pentru a transforma primul a cuvnt cel de-al doilea. a n

c 2008, Radu-Lucian Lupa s


54 2.4. Coduri detectoare i corectoare de erori s

Notm acum a dmin (W ) = min d(u, v),


u,vW u=v

unde W este multimea cuvintelor de cod ale codului considerat. Propozitia 2.19 Fie codul c : M {0, 1}l i W = c(M ). Codul c detecteaz s a k erori dac i numai dac dmin (W ) k + 1. as a S examinm acum codurile corectoare de erori. a a Denitia 2.20 Spunem despre codul c : M {0, 1}l c corecteaz k erori a a individuale dac, pentru orice cuvnt de cod w W = c(M ), prin transa a formarea lui w ca urmare a k sau mai putine erori cuvntul rezultat w are a proprietatea c w este cel mai apropiat cuvnt de w din W : a a ws W , d(w , ws ) d(w , w). Propozitia 2.21 Fie codul c : M {0, 1}l i W = c(M ). Codul c corecteaz s a k erori dac i numai dac dmin (W ) 2k + 1. as a S analizm acum ecienta codului. De obicei, datele utile pentru un a a cod detector sau corector de erori sunt iruri de biti, obtinuti prin codicarea s datelor din universul aplicatiei. Ca urmare, multimea mesajelor este multimea irurilor de n biti, M = {0, 1}n , pentru o valoare n dat. Mesajele sunt s a 1 echiprobabile, probabilitatea oricrui mesaj ind aceeai: pm = |M | = 2n , a s m M . Ca urmare, ecienta codului este n H = . l l S mai notm c |M | = |W | = 2n . a a a Constructia efectiv a unui cod detector sau corector de erori cuprinde a dou aspecte: a constructia unei multimi W {0, 1}l cu dmin (W ) sucient de mare pentru numrul de erori de detectat sau corectat i, totodat, avnd log2l|W | ct a s a a a mai mare pentru o ecient ct mai mare a codului. a a gsirea unor algoritmi ecienti pentru codicare i pentru detectarea eroa s rilor (adic vericarea apartenentei unui ir de l biti la W ) i eventual a s s corectarea erorilor (adic gsirea celui mai apropiat cuvnt din W fat a a a a de un ir de l biti dat). s

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 55

2.4.3. Cteva coduri detectoare sau corectoare de erori a


Descriem continuare, pe scurt, cteva coduri detectoare sau corecn a toare de erori. descrierea lor vom utiliza notatiile din paragraful precedent. In general, multimea cuvintelor de cod W este astfel aleas at irul In a nc s primilor n dintre cei l biti s poat lua oricare dintre cele 2n valori posibile, a a iar ultimii l n biti sunt unic determinati de primii n biti. Primii n biti din cuvntul de cod poart denumirea de informatie util, iar ultimii l n biti a a a poart numele de biti de control. a Pentru un astfel de cod, emittorul primete de la surs n biti ce a s a constituie informatia util, calculeaz cei l n biti de control aplicnd un al a a a goritm asupra informatiei utile i transmite prin canal informatia util urmat s a a de bitii de control. Receptorul citete informatia util i bitii de control; pentru s as detectarea erorilor aplic acelai algoritm ca i emittorul asupra informatiei a s s a utile citite i veric dac rezultatul coincide cu bitii de control cititi. s a a 2.4.3.1. Bitul de paritate La codul cu bit de paritate se alege l = n + 1. Exist dou sisteme, a a paritate par (engl. even parity), care W este denit ca ind multimea a n a irurilor de l biti continnd numr par de valori 1, i paritate impar (engl. s a a s a odd parity), care W este multimea irurilor de l biti continnd un numr n s a a impar de valori 1. Unicul bit de control se mai numete bit de paritate. s Se vede imediat c dmin (W ) = 2 i prin urmare bitul de paritate a s detecteaz o eroare i nu poate corecta nici o eroare. a s Bitul de paritate se calculeaz numrnd bitii cu valoare 1 din infora aa matia util i vericnd dac este par sau impar. as a a Exemplul 2.13: Pentru codul cu paritate par i n = 7, irul de biti 1010110 as s (informatie util) se codic 10101100 (bitul de control este 0). Sirul 1110110 a a se codic 11101101 (bit de control 1). Sirul 11001100 este cuvntul de cod a a corespunztor informatiei utile 1100110. Sirul 11001101 nu este cuvnt de cod a a valid. Exemplul 2.14: Pentru codul cu paritate impar i n = 7, irul de biti a s s 1010110 se codic 10101101 (bitul de control este 1). Sirul 1110110 se codic a a 11101100 (bit de control 1). Sirul 11001100 nu este cuvnt de cod valid. Sirul a 11001101 este cuvntul de cod corespunztor informatiei utile 1100110. a a 2.4.3.2. Paritate pe linii i coloane s La un astfel de cod informatia util se consider a o matrice n1 n2 a a de biti, cu n1 i n2 xati. Ca urmare n = n1 n2 . Codul are l = (n1 + 1) (n2 + s

c 2008, Radu-Lucian Lupa s


56 2.4. Coduri detectoare i corectoare de erori s

1). Cuvintele de cod sunt vzute ca ind matrici (n1 + 1) (n2 + 1) care a n ultima linie i ultima coloan cuprind bitii de control. Multimea cuvintelor de s a cod este multimea matricilor (n1 + 1) (n2 + 1) care pe ecare linie i pe n s ecare coloan numrul de valori 1 este par. a a Se poate arta uor c dmin (W ) = 4, prin urmare codul detecteaz 3 a s a a erori sau corecteaz 1 eroare. a Codicarea i detectarea erorilor se face calculnd bitul de paritate s a pentru ecare linie i pentru ecare coloan. De remarcat c ultimul bit din s a a matrice trebuie calculat e ca bit de paritate al bitilor de paritate ai liniilor, e ca bit de paritate ai bitilor de paritate ai coloanelor; ambele variante duc la acelai rezultat. s Exemplul 2.15: Pentru n1 = n2 = 4, irul 1011010111001111 se codic s 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, cuvntul de cod rezultat este irul: 1011101010110001111011011. a s Pentru corectarea erorilor, se caut mai ai liniile i coloanele care a nt s ncalc paritatea. Presupunnd c s-a produs o singur eroare, va exista exact a a a a o linie i o coloan. Bitul eronat este la intersectia liniei i coloanei gsite. s a s a Exemplul 2.16: Sirul 101001101011010011000111111101 nu este cuvnt de a 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 c paritatea nu este respectat de linia a 2-a i de prima coloan. a a a s a Prin urmare, primul bit de pe linia a 2 este eronat, ind 0 original. Datele n utile sunt deci: 1010010101100111. 2.4.3.3. Coduri polinomiale Oricrui ir de biti v = (v1 , . . . , vk ) {0, 1}k i se asociaz un polinom a s a de grad cel mult k 1: v(X) = v1 X k1 + v2 X k2 + . . . + vk1 X + vk .

c 2008, Radu-Lucian Lupa s


Capitolul 2. Notiuni de teoria informatiei 57

Coecienti acestui polinom sunt considerati ca elemente ale corpului F2 = ({0, 1}, +, ), unde + este operatia sau exclusiv, iar este operatia i, cu s tabelele de mai jos: + 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 De remarcat c polinoamele peste orice corp pstreaz multe din proa a a prietile polinoamelor ,,obinuite, particular se poate deni la fel adunarea, at s n scderea i a s nmultirea i are loc teorema artirii cu rest. s mp Pentru constructia unui cod polinomial, se alege un aa-numit poli s nom generator g(X) de grad l n (reamintim c l este lungimea cuvintelor a de cod, iar n este numrul de biti ai informatiei utile; n < l). Multimea cua vintelor de cod W se denete ca multimea irurilor de l biti cu proprietatea s s c polinomul asociat irului este divizibil cu g(X). a s Sirul bitilor de control se calculeaz astfel: a se construiete polinomul i(X) asociat informatiei utile, s se calculeaz r(X) ca ind restul artirii lui i(X) X ln la g(X) a mp irul bitilor de control este irul de l n biti al crui polinom asociat este s s a r(X). Pentru a ne convinge de corectitudinea algoritmului de mai sus, s a observm c obtinem ca i cuvnt de cod un ir de forma i1 , . . . , in , r1 , . . . , rln a a s a s al crui polinom asociat este a v(X) =i1 X l1 + . . . + in X ln + r1 X ln1 + . . . + rln = =i(X) X ln + r(X). Deoarece r(X) este restul artirii lui i(X) X ln la g(X), rezult c polimp a a nomul i(X) X ln r(X) este divizibil cu g(X). Deoarece F2 avem c n a 1 + 1 = 0 rezult c r(X) = r(X). De aici rezult c v(X) este divizibil cu a a a a g(X). Codurile polinomiale sunt mult utilizate datorit simplitii construca at iei unor circuite (hardware) care calculeaz bitii de control. t a Dac se dorete corectarea erorilor, se observ c pozitiile erorilor nu a s a a depind dect de restul artirii polinomului asociat irului de biti receptionat, a mp s v (X), la g(X).

2.4.4. Coduri detectoare i corectoare de erori alte domenii s n


Ne alnim cu coduri detectoare sau corectoare de erori i situatii nt s n mai putin legate de calculatoare.

c 2008, Radu-Lucian Lupa s


58 2.4. Coduri detectoare i corectoare de erori s

Limbajul natural contine mult redundant; ca urmare permite de a a tetcarea i coerctarea multor ,,erori de tipar, dup cum v puteti convinge s a a uor citind aceast fraz. Din pcate a, nu garanteaz detectarea nici mcar s a a a ns a a a unei singure erori; sunt cazuri care o singur eroare poate schimba radial n a sensul unei fraze. Transmisia vocii prin radio sau prin telefonie analogic este general a n zgomotoas i adesea cu distorsiuni puternice. Ca urmare, riscul erorilor de as transmisie este ridicat. Cum, pe de alt parte, diverse indicative cum ar a numere de telefon, numere de nmatriculare, .a.m.d. nu contin redundant, s a la transmiterea acestora cifrele se pronunt cu anumite modicri, iar pentru a a litere se pronunt un cuvnt a a ntreg, dintr-un set standardizat, care ncepe cu litera ce se dorete a transmis. De exemplu, 2 minute se va pronunta doi s a minute, pentru a evita confuzia dou -nou ; de asemenea 7 se pronunt epte. a a a s Ca un alt exemplu, englez, indicativul ROT209 se va pronunta Romeo n a Oscar Tango Two Zero Niner. sfrit, codul numeric personal (CNP), codul IBAN, ISBN-ul de In a s pe crti i alte asemenea coduri de identicare ce sunt transmise frecvent prin a s intermediul unor operatori umani au o cifr de control. a

c 2008, Radu-Lucian Lupa s


59

Capitolul 3

Nivelul zic

3.1. Problema transmisiei informatiei la nivelul zic


Sarcina nivelului zic este aceea de-a transmite un ir de biti (sau, s general, un ir de simboluri) produs de o surs ctre o destinatie. Sursa i n s a a s destinatia se a la distant una fat de cealalt. a a a a Sursa i destinatia sunt ,,clientii sistemului de comunicatie; nivelul s zic trebuie s e capabil s transmit datele folosul acestora. a a a n Sirul de biti ce trebuie transmis poart denumirea de date utile. a Pentru ndeplinirea scopului su, nivelul zic dispune de un mediu de a transmisie. Mediul de transmisie se ntinde de la amplasamentul sursei pn a a la amplasamentul destinatiei i este capabil s transmit la distant o anumit s a a a a actiune zic. a Nivelul zic cuprinde trei elemente: mediul de transmisie, emitatorul i receptorul (vezi g. 3.1). Emittorul primete bitii de la surs i, cons a s a s n formitate cu valorile lor, actioneaz asupra mediului. Receptorul sesizeaz a a actiunile emittorului asupra mediului i reconstituie irul de biti produs de a s s surs. Sirul de biti reconstituit este livrat destinatiei. a Mrimea zic ce msoar actiunea produs de emittor i transmis a a a a a a s a de ctre mediu pn la receptor i care este utilizat efectiv ca purttoare a a a s a a a informatiei se numete semnal . Semnalul este s ntotdeauna analizat ca o functie continu de timp. a Mrimea zic utilizat ca semnal este aleas de proiectantul sistemua a a a lui de comunicatii dintre acele mrimi pe care mediul ales le poate propaga a conditii bune. De exemplu, pentru transmisia prin perechi de conductoare, n semnalul poate tensiunea electric dintre conductoare sau intensitatea curena tului prin conductoare.

c 2008, Radu-Lucian Lupa s


60 3.1. Problema transmisiei informatiei la nivelul fizic

Nivelul zic Sursa Emittor a Sir de biti Semnal Mediu Receptor Semnal Destinatie Sir de biti

Figura 3.1: Modelarea transmisiei la nivel zic

Emittorul transform irul de biti receptionat a as ntr-un semnal adecvat transmiterii prin mediul de comunicatie. Receptorul efectueaz operatia a invers. Corespondenta dintre irurile de biti posibile i semnalele corespunztoare a s s a poart denumirea de schem de codicare a informatiei prin semnal continuu. a a Schema de codicare utilizat trebuie s e aceeai pentru emittor a a s a i receptor. s Mediul de transmisie modic general semnalul transmis, astfel c a n a semnalul primit de receptor de la mediu nu este identic cu semnalul aplicat de emittor asupra mediului. Vom arta 3.2 care sunt transformrile suferite a a n a de semnal timpul propagrii. Schema de codicare a informatiei trebuie s n a a in cont de aceste modicri. O parte din schemele folosite vor studiate t a a n 3.3. continuarea acestui capitol vom trece revist problemele speciIn n a ce legate de transmiterea semnalelor i de codicarea informatiei prin sems nale. O analiz riguroas a acestor probleme depete cu mult cadrul acestei a a as s lucrri. Prezentarea de fat are ca scop familiarizarea cu notiunile i proba a s lemele respective, vederea elegerii solutiilor existente, limitrilor lor, n nt a parametrilor specicati documentatiile privind echipamentele folosite i, n s mai ales, posibilitii comunicrii cu specialitii domeniul electronicii i at a s n s comunicatiilor.

3.2. Transmiterea semnalelor


3.2.1. Modicrile suferite de semnale a
Pentru a studia modicrile suferite de semnale timpul propagrii a n a prin mediul de transmisie, vom considera principal cazul transmiterii tenn siunii electrice printr-o pereche de conductoare. Semnalul msurat la jonctiunea dintre emittor i mediu se numete a a s s semnal emis i vom nota cu Ue (t), unde t este timpul. Semnalul msurat s l a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 61

la jonctiunea dintre mediu i receptor se numete semnal receptionat i vom s s s l nota cu Ur (t). Transformrile suferite de semnal sunt urmtoarele: a a arziereaconst faptul c semnalul receptionat urmeaz cu o anumit nt a n a a a arziere semnalul emis. Cu notatiile de mai sus i neglijnd fenomenele nt s a ce vor descrise la punctele urmtoare, avem Ur (t) = Ue (t t). Dua rata t se numete arziere (de propagare) sau timp de propagare. s nt arzierea are valoarea t = l , unde l este lungimea mediului iar Int 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 i, pentru materialele folosite mod curent, are valoarea aproximativ s n a v 2/3c = 2 108 m/s, unde c este viteza luminii vid. n atenuarea const faptul c semnalul receptionat are amplitudine mai a n a mic dect cel emis. Neglijnd arzierea, are loc Ur (t) = g Ue (t), cu a a a nt 0 < g < 1. Tinnd cont i de arziere, avem Ur (t) = g Ue (t t). a s nt Numrul 1/g se numete factor de atenuare tensiune. a s n De cele mai multe ori atenuarea unui semnal este exprimat prin a factorul de atenuare putere, numit pe scurt factor de atenuare, denit n ca raportul dintre puterea semnalului emis i a celui receptionat. cazul s In perechii de conductoare, deoarece puterea este proportional cu ptratul a a tensiunii (raportul tensiune/intensitate ind aproximativ constant), factorul de atenuare putere este egal cu 1/g 2 . n Prin conectarea unul dup cellalt a mai multor medii de transa a misie, factorul de atenuare a mediului rezultat este produsul factorilor de atenuare ai componentelor. Din acest motiv, loc de factorul de n atenuare se folosete adesea logaritmul su: logaritmul factorului de s a atenuare rezultat este suma logaritmilor, aceeai baz, ai factorilor de n s a atenuare ai componentelor. Logaritmul factorului de atenuare se numete pe scurt atenuare. s Valoarea logaritmului depinde de baza utilizat, baze diferite dua cnd la valori proportionale. Deoarece schimbarea bazei de logaritmare a are un efect similar cu schimbarea unitii de msur pentru o mrime at a a a zic, dup valoarea logaritmului se scrie o pseudo-unitate de msur a a a a ce arat de fapt baza de logaritmare utilizat. Pentru logaritmul a a n baza zece, pseudo-unitatea de msur folosit este bel ul, avnd sima a a a bolul B. Pseudo-unitatea de msur utilizat curent este decibel ul, a a a avnd simbolul dB. Avem 1 B=10 dB. O valoare exprimat decia a n beli (dB) o putem vedea, echivalent, e ca valoarea logaritmului baza n

c 2008, Radu-Lucian Lupa s


62 3.2. Transmiterea semnalelor

10 nmultit cu 10, e ca valoarea logaritmului baza 101/10 . De ex a n 2 ) = 10, logaritmul su este emplu, dac factorul de atenuare este (1/g a a 1 B = 10 dB. Dac factorul de atenuare este 2, logaritmul su (atena a uarea) este log10 2 B 0,3 B = 3 dB. Puterea semnalului emis se msoar watti (W) sau miliwatti a a n (mW). Adesea, este specicat nu puterea ci logaritmul puterii: se ia a numrul ce reprezint puterea, miliwatti, i logaritmul su se exprim a a n s a a decibeli. Pseudo-unitatea de msur corespunztoare reprezentrii n a a a a de mai sus se numete decibel-miliwatt, avnd simbolul (neconform regs a ulilor Sistemului International de Masuri i Uniti) dBm. Ca exemple: s at o putere de emisie de 1 mW poate scris i 0 dBm, o putere de 1 W as se scrie 30 dBm, iar 0,1 mW se scrie ca 10 dBm. Puterea minim a semnalului receptionat, pentru care receptorul a este capabil s decodice corect semnalul, se numete pragul de sensibila s itate al receptorului. Ca i puterea emittorului, pragul de sensibilitate s a se poate exprima miliwatti sau decibel-miliwatti. n n distorsiunea este o modicare determinist a semnalului receptionat fat a a de cel emis, diferit de arziere i atenuare. (O modicare este detera nt s minist dac, oridecteori transmitem un acelai semnal, modicarea se a a a s manifest identic.) Mai multe detalii despre distorsiuni vor date a n 3.2.2. zgomotele sunt modicri nedeterministe ale semnalului receptionat, a cauzate de factori externi sistemului de transmisie (fulgere, ntreruptoare a electrice, alte sisteme de transmisie de date, alte echipamente electronice) sau de factori interni cu manifestare aleatoare (micarea de agitatie s termic a atomilor din dispozitivele electornice). a Zgomotul se exprim ca diferenta dintre semnalul receptionat efeca tiv i semnalul ce ar receptionat lipsa zgomotului. Raportul sems n nal/zgomot este raportul dintre puterea semnalului i puterea cores spunztoare zgomotului. Uneori termenul de raport semnal/zgomot este a utilizat i pentru logaritmul raportului semnal/zgomot; de obicei nu este s pericol de confuzie deoarece logaritmul este exprimat decibeli, timp n n ce raportul semnal/zgomot nu are unitate de msur. a a O categorie special de zgomot este diafonia, care este un zgomot a provenit din semnalul transmis pe un mediu de transmisie vecin.

3.2.2. Analiza transmiterii semnalelor cu ajutorul transformatei Fourier


Considerm un dispozitiv electronic, care are o intrare i o ieire a s s

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 63

(g. 3.2). particular, o pereche de conductoare folosit pentru transmisie In a poate considerat un astfel de dispozitiv, capetele dinspre emittor constia a tuind intrarea, iar cele dinspre receptor, ieirea. s

Ui

Ue

Figura 3.2: Un dispozitiv cu o intrare i o ieire s s

Tensiunea de la ieire depinde de tensiunea de la intrare, a s ns n general depinde de tot istoricul ei. Altfel spus, comportamentul dispozitivului poate descris de un operator L (reamintim c un operator este o functie a denit pe un spatiu de functii cu valori tot a ntr-un spatiu de functii). Acest operator primete ca argument functia timp-tensiune Ui care caracterizeaz s a semnalul de intrare. Valoarea operatorului este functia timp-tensiune Ue = L(Ui ) care caracterizeaz semnalul de ieire. a s Multe dispozitive electronice au un comportament liniar, adic opa eratorul L care le caracterizeaz este un operator liniar. Reamintim c un a a operator L este liniar dac, pentru orice functii f i g i pentru orice scalari a s s i , are loc s L(f + g) = L(f ) + L(g). Pentru un dispozitiv liniar, dac semnalul de intrare Ui (t) poate a descompus ca o sum de forma a Ui (t) = 1 Ui1 (t) + 2 Ui2 (t) + + n Uin (t), atunci pentru semnalul de ieire avem s 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, dac semnalul de intrare este a a sinusoidal , adic a Ui (t) = U0 cos (2f t + ) , atunci semnalul de ieire este tot sinusoidal i, mai mult, s s Ue (t) = g(f ) U0 cos(2f t + (f )),

c 2008, Radu-Lucian Lupa s


64 3.2. Transmiterea semnalelor

unde g(f ) i (f ) depind doar de cum este construit dispozitivul i de frecventa s s f a semnalului. Orice semnal se poate scrie unic ca o sum de semnale sinusoidale. a (Nota: conditiile matematice asupra semnalului, i alte detalii se gsesc s a n lucrrile de specialitate, de exemplu [Crstici et al. 1981]; aici facem doar o a prezentare semi-intuitiv). a Un semnal periodic de perioad T se poate descompune aa-numita a n s serie Fourier :

U (t) =
k=0

ak cos

2k t + k . T

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

U (t) =
0

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

(3.1)

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

U (f ) e2if t df,

(3.2)

unde U este o functie complex care se numete transformata Fourier a functiei a s U. Relatia (3.1) spune c semnalul U se poate scrie ca o sum de sinu a a soide cu diferite frecvente f avnd amplitudinile a(f ) i defazajul (decalajul a s sinusoidei de-a lungul axei Ox) egal cu (f ). Frecventele f pentru care amplitudinile corespunztoare a(f ) sunt a nenule alctuiesc spectrul semnalului. a Pentru un dispozitiv liniar, semnalul de ieire se poate calcula des scompunnd sinusoide semnalul de intrare, calculnd efectul dispozitivului a n a asupra ecrei sinusoide parte i a n s nsumnd nal ieirile: a n s

c 2008, Radu-Lucian Lupa s


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 ) i i (f ) sunt functiile a(f ) i (f ) din descompunerea, conform s s relatiei (3.1), a semnalului de intrare Ui . Comportamentul unui dispozitiv liniar este deci complet denit de functiile g(f ) i (f ). s Un semnal este nedistorsionat dac i numai dac, pentru toate frecas a ventele f din spectrul semnalului, g(f ) este constant i (f ) este proportional as cu f , adic exist constantele g0 i 0 astfel at a a s nc g(f ) = g0 (f ) = 0 f (3.4)

pentru toate frecventele f din spectrul semnalului. practic, conditia (3.4) este satisfcut, cu o aproximatie acceptIn a a a abil, doar pentru frecvente care se a ncadreaz a ntr-un anumit interval f [fmin , fmax ]. Acest interval se numete banda de trecere a dispozitivului. s In consecint, dac spectrul semnalului de intrare se a a ncadreaz banda de trea n cere a dispozitivului, semnalul de ieire va prezenta distorsiuni acceptabil de s mici. Diferenta fmax fmin se numete limea de band a dispozitivului. s at a De exemplu, banda de trecere a unei linii telefonice este cuprins a ntre aproximativ 300 Hz i 3 kHz. s

3.3. Codicarea informatiei prin semnale continue


3.3.1. Scheme de codicare
Cea mai simpl codicare este aceea care artim timpul ina n mp n tervale de durat xat t (pe care o numim lungimea unui bit) i, pe durata a a s

c 2008, Radu-Lucian Lupa s


66 3.3. Codificarea informatiei prin semnale continue

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

Figura 3.3: Codicarea direct a

Receptorul determin intervalele corespunztoare bitilor i msoar a a s a a semnalul la mijlocul ecrui interval. Dac tensiunea este mai mare dect o a a a valoare numit prag pentru exemplul nostru se poate lua ca prag 3 V a receptorul decide c bitul respectiv are valoarea 1, iar caz contrar decide c a n a bitul are valoarea 0. Valoarea pragului poate x sau poate stabilit dinamic functie a a n de amplitudinea semnalului receptionat pentru a ine cont de atenuare. t S observm c receptorul trebuie s e sincronizat cu emittorul, a a a a a adic s examineze semnalul receptionat la mijlocul intervalului corespunztor a a a unui bit. Acest lucru se poate face a este adesea nepractic transmitnd ns a un al doilea semnal, de sincronizare, pe un mediu separat (adic folosind o alt a a pereche de re). Sincronizarea se poate face i pe baza semnalului util, dac receptorul s a dispune de un ceas sucient de precis. acest scop, receptorul va msura In a timpul ct semnalul este ,,sus (peste prag) i va determina de cte ori se a s a cuprinde acest interval durata unui bit. Numrul de biti consecutivi identici n a trebuie s e limitat, cci receptorul nu va putea distinge a a ntre n biti i n + 1 s biti consecutivi avnd aceeai valoare, dac n este prea mare. a s a Limitarea numrului de biti identici consecutivi se poate face mai a n multe feluri: Codicarea Manchester. Semnalul are una sau dou tranzitii pentru a ecare interval corespunztor unui bit. O tranzitie la mijlocul intervala ului arat valoarea bitului: tranzitia este sus pentru 1 i jos pentru a n s n 0. Pentru a face posibil ca doi biti consecutivi s aib aceeai valoare, a a s la nceputul intervalului corespunztor unui bit mai poate s apar o a a a tranzitie (g. 3.4).

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 67

Retelele Ethernet de 10 Mbit/s utilizeaz codicarea Manchester. a

Figura 3.4: Codicarea Manchester

Codicarea Manchester diferential. Semnalul are o tranzitie la a nceputul ecrui interval de bit. Dac bitul este 1 atunci semnalul mai are a a o tranzitie la mijlocul intervalului (g. 3.5).

Figura 3.5: Codicarea Manchester diferential a

Codurile de grup sunt o familie de coduri construite dup urmtoarea a a schem: a Se xeaz un numr n (valori uzuale: n = 4 sau n = 8); irul a a s transmis trebuie s aib ca lungime un multiplu de n biti. a a Se xeaz o tabel de corespondent care asociaz ecruia dintre a a a a a cele 2n iruri de n biti posibile un ir de m biti, unde m > n este xat, cu s s restrictia ca ntre cei m biti s nu e prea multe valori egale consecutive. a Codul este determinat de numrele n i m i de aceast tabel. s s a a Sirul de biti de codicat se codic astfel: mai ai, ecare grup a nt de n biti consecutivi se nlocuiete cu irul de m biti asociat. Apoi irul s s s de biti astfel obtinut se codic direct, un bit 0 ind reprezentat printr-o a valoare a tensiunii i un bit 1 prin alt valoare. s a Retelele Ethernet de 100 Mbit/s utilizeaz un cod de grup cu n = 4 a i m = 5. s

c 2008, Radu-Lucian Lupa s


68 3.3. Codificarea informatiei prin semnale continue

S examinm acum cerintele privind banda de trecere a mediului a a necesar pentru transmiterea semnalelor de mai sus. a Semnalele de form rectangular descrise mai sus au spectru ina a nit (spectrul lor nu este mrginit superior). Trecute printr-un mediu de a comunicatie care are o lime de band nit, semnalele vor ,,rotunjite mai at a a mult sau mai putin. S notm cu durata elementar a unui palier al semnalului ideal a a a (durata minim care semnalul ideal are o valoare constant). Pentru a n a codicarea direct, = t; pentru codicarile Manchester i Manchester a s diferential, = 1 t. a 2 1 Dac banda de trecere a mediului include intervalul 0, 2 , atunci a mediul pstreaz sucient din forma semnalului pentru ca receptorul s poat a a a a decodica informatia transmis. Dac frecventa maxim a benzii de trecere a a a este mai mic dect 2 , atunci un semnal rectangular care are, alternativ, un a a 1 timp o valoare i urmtorul timp cealalt valoare va distorsionat att s a a a de mult at ,,urcuurile i ,,coborurile semnalului nu vor mai putea nc s s as identicate de ctre receptor i ca urmare informatia purtat nu mai poate a s a obtinut. a Pentru un mediu dat, cu o band de trecere dat, exist, prin urmare, a a a o valoare minim a lui pentru care receptorul poate extrage informatia util a a din semnalul receptionat. Dac limita superioar a benzii de trecere este fmax , a a 1 valoarea minim este = 2fmax . a Diversele codicri studiate mai sus au diferite rapoarte k a ntre durata medie a unui bit i valoarea lui . La codicarea direct, durata unui s a bit este egal cu i deci k = 1. La codicrile Manchester i Manchester a s a s diferential, durata unui bit este 2 i avem k = 2. La codurile de grup, durata a s s unui bit util este m i avem k = m . Debitul maxim cu care se pot transmite n n datele este fmax . k

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

c 2008, Radu-Lucian Lupa s


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 timp, functie de semnalul a n n original, rezultat direct din codicare. Semnalul original numim semnal primar sau semnal modulator. l Semnalul sinusoidal, rezultat pentru valorile ,,de repaus ale parametrilor a, f i , se numete semnal purttor, iar frecventa f de repaus se numete s s a s frecventa purttoare i o vom nota continuare cu fp . a s n Semnalul rezultat urma modulatiei se numete semnal modulat. n s Operatia de constructie a semnalului modulat pornind de la semnalul primar se numete modulatie. Operatia invers, de obtinere a semnalului pris a mar dndu-se semnalul modulat, se numete demodulatie. a s Dup parametrul modicat, avem: a modulatia de amplitudine (prescurtat MA, engl. amplitude modulation, AM ), care const modicarea amplitudinii a. Semnalul transmis este a n deci: U (t) = U0 s(t) sin(2fp t), unde s(t) este semnalul modulator. Pentru ca amplitudinea a = U0 s(t) s e mai mare dect 0, asupra semnalului s(t) se impune restrictia a a s(t) > 0. Se observ c modulatia amplitudine este liniar (modulatia a a n a sumei a dou semnale a + b este suma rezultatelor modulatiei indepena dente pentru a i b). s Dac semnalul modulator este sinusoidal a 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 Lupa s


70 3.3. Codificarea informatiei prin semnale continue

adic urma modulatiei amplitudine cu un semnal sinusoidal de a n n frecvent fs se obtine o sum de trei semnale sinusoidale avnd frecvena a a ele fp fs , fp i fp + fs . t s Din liniaritatea modulatiei amplitudine i din relatia (3.5) de n s ducem c, pentru un semnal modulator avnd un anumit spectru, speca a trul semnalului modulat contine frecventa purttoare i dou benzi lat a s a erale, stng i dreapt, acestea cuprinznd diferentele, respectiv sumele, a as a a dintre frecventa purttoare i frecventele din spectrul semnalului primar. a s Intruct spectrul semnalului modulat este simetric jurul freca n ventei purttoare, de fapt doar una dintre benzile laterale poart infor a a matie util. Din acest motiv, adesea se suprim total sau partial de la a a transimisie una dintre benzile laterale. modulatia de frecvent (prescurtat MF, engl. frequency modulation, a FM ), care const modicarea frecventei f jurul frecventei pura n n ttoare fp . a Semnalul transmis are forma U (t) = U0 sin 2 (fp + m s(t)) t unde, din nou, fp este frecventa purttoare, s(t) este semnalul modulator, a iar m este o constant. Semnalul modulator trebuie s respecte restrictia a a m s(t)s0 fp . Analiza spectrului unui semnal modulat frecvent este mult mai n a difcil dect cazul modulatiei amplitudine. a a n n modulatia de faz, care const modicarea fazei . a a n Semnalul transmis are forma U (t) = U0 sin 2fp t + m s(t) Este evident c, a ntruct receptorul nu are de obicei un reper aba solut de timp, el nu poate detecta dect variatiile de faz ale semnalului a a receptionat. Ca urmare, o valoare constant a lui s(t) nu poate de a osebit de zero i, mai mult, nici variatii lente ale lui s(t) nu pot a s detectate. consecint, spectrul lui s(t) nu poate contine frecvente In a prea apropiate de 0. Exist i posibilitatea de-a varia simultan doi sau chiar toti cei trei as parametri. Modulatia cuadratur const varierea simultan a amplitu n a a n a dinii a i a fazei , pentru a transmite simultan dou semnale utile s1 i s2 . s a s

c 2008, Radu-Lucian Lupa s


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 frecvent n a


Multiplexarea, general, const transmiterea mai multor semnale n a n independente prin acelai mediu de transmisie. s Dou semnale ale cror spectre se a a ncadreaz benzi disjuncte pot a n separate cu ajutorul unor dispozitive numite ltre (de frecvent). a Multiplexarea frecvent const transmiterea simultan prin an a a n a celai mediu a unor semnale avnd spectre s a ncadrate benzi disjuncte. n Emittoarele produc semnale cu spectre disjuncte prin modulatie utia liznd frecvente purttoare diferite. De notat c diferentele a a a ntre frecventele purttoare trebuie s e mai mari dect limile de band necesare transmisiei a a a at a semnalelor corespunztoare. a Fiecare receptor trebuie s e dotat cu un ltru care s lase s treac a a a a doar banda utilizat de emittorul coresunztor. a a a

3.3.4. Capacitatea maxim a unui canal de comunicatie a


Banda de trecere a mediului de transmisie mpreun cu raportul sema nal/zgomot determin o limit superioar a debitului transmisiei. Limitarea a a a este independent de schema de codicare utilizat pentru transmisie i ca a a s urmare este valabil pentru orice schem de codicare ne-am putea imagina. a a Este util s avem vedere existenta acestei limite, acelai fel a n n s care cunoaterea principiului conservrii energiei ne folosete pentru a nu n s a s ncerca constructia unui perpetuum mobile ncercare din start sortit eea s cului. Pentru un mediu cu limea de band f i cu raportul semnal/zgoat a s mot s/n, debitul maxim de informatie ce poate transmis este proportional cu f log(s/n + 1). Acest rezultat provine din urmtoarele dou observatii: a a 1. Teorema de eantionare a lui Shannon spune c un semnal al crui s a a 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 crui spectru este inclus intervalul a n [0, fmax ) nu poate purta mai mult informatie dect eantioanele sema a s 1 nalului luate la interval 2fmax unul de altul.

c 2008, Radu-Lucian Lupa s


72 3.3. Codificarea informatiei prin semnale continue

2. prezenta zgomotului, receptorul nu poate distinge In ntre dou vala ori posibile ale semnalului la un anumit moment de timp dect dac a a diferenta dintre cele dou valori este mai mare dect amplitudinea zgo a a motului. Ca urmare, cantitatea de informatie purtat de un eantion este a s limitat la o valoare proportional cu log(s/n + 1). a a Deoarece pentru o schem de codicare xat exist o relatie de a a a proportionalitate ntre limea de band a mediului i debitul maxim al transat a s misiei, debitul maxim al transmisiei unui echipament de comunicatie se nu mete uneori mod impropriu tot lime de band sau band de trecere. s n at a a

3.4. Transmisia prin perechi de conductoare


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

3.4.1. Constructia cablului


Conductoarele trebuie realizate dintr-un material cu conductivitate electric ridicat. Aproape toate cazurile materialul folosit este cuprul. a a n Izolatia dintre conductoare trebuie s nu absoarb mult energie a a a acest scop doar anumite dac este plasat a a ntr-un cmp electric variabil. In a substante sunt potrivite. Materialele utilizate cel mai frecvent sunt polietilena i politetrauoretilena (cunoscut sub numele de Teon TM ). Policlorura de s a vinil (PVC), utilizat adesea la izolarea conductoarelor de alimentare cu ena ergie electric, absoarbe prea mult din puterea unui semnal de frecvent mare; a a din aceast cauz nu se poate folosi circuite de semnal. Aerul este cel mai a a n bun izolator, dar nu ofer sustinere mecanic. a a Ca form i dispunere relativ, exist trei constructii utilizate: as a a Perechea simpl, care conductoarele sunt paralele unul fat de cellalt. a n a a Conductoarele pot alctuite dintr-o singur srm de cupru, sau a a a a pentru a mai exibile dintr-un mnunchi de srme subtiri. Fiecare a a conductor este nvelit ntr-un strat izolator. Adesea, mai multe perechi de conductoare sunt duse mpreun, a cadrul unui cablu, este posibil ca un paralel, formnd un cablu. In n a conductor s e comun, partajat a ntre dou sau mai multe circuite de a semnalizare. acest caz, n circuite utilizeaz n + 1 conductoare, In a n loc de 2n cte sunt cazul care perechile sunt complet separate. a n n

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 73

Avantajul este, evident, reducerea costului, iar dezavantajul este mrirea a diafoniei ntre circuite. Din cauza diafoniei i sensibilitii la zgomote, perechea simpl se s at a utilizeaz doar pe distante mici. a Perechea torsadat (engl. twisted pair ), care conductoarele sunt rsucia n a te unul jurul celuilalt. Rolul rsucirii este de-a micora interactiunea n a s cu cmpul electromagnetic a nconjurtor, adic micorerea zgomotului a a s indus de un cmp electromagnetic a nconjurtor i, totodat, micorarea a s a s cmpului electromagnetic produs de semnalul ce trece prin perechea de a conductoare. Acest lucru este important special pentru micorarea din s afoniei cu celelalte perechi de conductoare din acelai cablu. afar de s In a rsucire, restul constructiei este identic cu perechea simpl. Cablurile a a a formate din perechi torsadate nu au niciodat un conductor comun pena tru mai multe circuite. Este important ca, cazul unui cablu ce contine mai multe perechi n torsadate, ecare circuit de comunicatie s utilizeze conductoarele din a aceeai pereche i nu un conductor dintr-o pereche i un conductor din s s s alt pereche. caz contrar, apare diafonie foarte puternic a In a ntre circuite (mai mare dect la perechea simpl). De remarcat c aceast a a a a greeal este uor de comis urma unei identicri greite a conducs a s n a s toarelor dintr-un cablu i nu este pus evident de dispozitivele simple s a n a de testare, care veric doar continuitatea curent continuu a conduca n toarelor cablului. Perechea coaxial are unul din conductoare forma unui cilindru gol a n n interior, iar cellalt conductor este dus prin interiorul primului conduca tor i izolat electric fat de acesta. Conductorul exterior este format s a de obicei dintr-o plas format din srme subtiri de cupru, aurate a a a nfs elicoidal, o parte din re ind aurate nfs ntr-un sens i alt parte s a n cellalt sens. a Cablul coaxial este i mai protejat de interferente dect perechea s a torsadat. Are de obicei atenuare mai mic dect perechea simpl sau a a a a cea torsadat. Costul este a mai ridicat. a ns oricare dintre variante, pentru a reduce suplimentar interferentele In cu cmpul electromagnetic a nconjurtor, perechea de conductoare poate a ecranat , adic a a nvelit a ntr-un strat conductor continuu. Pentru ca ecranul s e ecient, trebuie s aib continuitate de jur a a a mprejurul conductoarelor (dac este realizat prin aurarea unei foite metalice, marginile foitei trebuie a nfs s fac contact ferm a a ntre ele) i pe lungime (s aib legtur prin conectoare s a a a a

c 2008, Radu-Lucian Lupa s


74 3.4. Transmisia prin perechi de conductoare

ctre elemente de ecranare ale echipamentelor la care este conectat cablul). a Ecranul unui cablu poate colectiv, mbrcnd a a ntreg cablul, sau individual pentru ecare pereche de conductoare. Pe lng elementele cu rol electric, un cablu contine elemente cu rol a a de protectie. Orice cablu este aurat cel putin nfs ntr-o manta de protectie, care ine la un loc i protejeaz mecanic conductoarele. Mantaua de protectie t s a este fabricat de obicei din PVC. a Un cablu destinat montrii aerian trebuie s e prevzut cu un cablu a a a de otel pentru sustinere mecanic. Un cablu destinat montrii subteran trebuie a a prevzut cu un scut metalic contra roztoarelor. a a

3.4.2. Proprieti ale mediului at


cele ce urmeaz vom presupune c lungimea cablului este e de In a a acelai ordin de mrime e mai mare dect raportul dintre viteza luminii s a a n vid i frecventa maxim din spectrul semnalului. aceste conditii, perechea s a In de conductoare are comportament de linie lung, adic semnalul se propag a a a din aproape, sub forma unei unde, de-a lungul perechii de conductoare. Proprietile electrice mai importante ale mediului sunt: at Viteza de propagare a semnalului prin mediu. Este identic cu viteza a de propagare a undelor electromagnetice materialul dielectric dintre n conductoare. Se specic de obicei prin raportare la viteza luminii a n vid (notat c, c 3 108 m/s). mod tipic v 0,67c 2 108 m/s a In Banda de trecere a mediului. Se ntinde de la zero pn la o frecvent a a a maxim de ordinul a cteva sute de megahertzi sau civa gigahertzi. a a at Limitrile sunt date de dou fenomene independente, pierderile dieleca a n tric (la frecvente mari dielectricul absoare o parte din energia cmpului a electric dintre conductoare) i efectul pelicular (la frecvente mari curens tul electric din conductoare nu circul uniform toat masa acestora a n a atrnirea izolatiei cablului duce ci doar vecintatea suprafetei). Imb a n a la micorarea frecventei maxime a benzii de trecere. s Atenuarea semnalului. Factorul de atenuare crete exponential cu lungimea s mediului. consecint, logaritmul factorului de atenuare crete liniar cu In a s lungimea mediului. Ca urmare, pentru un tip de cablu se specic rapora tul dintre logaritmul factorului de atenuare i lungimea corespunztoare, s a decibeli pe kilometru. Cu titlu de exemplu, dm cteva valori tipice: n a a 17 dB/km pentru cablu coaxial ,,Ethernet gros; 120 dB/km pentru cablu torsadat Ethernet. Impedanta caracteristic a mediului. S presupunem c atam la un a a a sa capt al unei buci innite de cablu o surs de tensiune alternativ. Se a at a a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 75

observ c intensitatea curentului ce trece prin surs i prin captul dina a as a spre surs al cablului este proportional cu tensiunea. Raportul dintre a a tensiune i intensitate se numete impedanta caracteristic a cablului. s s a Receptorul se caracterizeaz i el printr-o impedant de intrare, a s a denit ca raportul dintre tensiunea aplicat la bornele receptorului i a a s intensitatea curentului absorbit de receptor. Emittorul se caractera izeaz printr-o impedanta de ieire, denit ca raportul dintre scderea a s a a tensiunii la borne cauzat de absorbtia unui curent de ctre un dispozitiv a a montat la bornele emittorului i intensitatea curentului absorbit. a s Dac la un capt de cablu de o anumit impedant legm un a a a a a cablu de alt impedant sau dac emittorul sau receptorul ataat are a a a a s alt impedant dect impedanta caracteristic a cablului, spunem c a a a a a avem o neadaptare de impedant. acest caz, jonctiunea respectiv a In a reect o parte din semnalul incident (este analog reexiei luminii la a trecerea din aer sticl, sau general n a n ntre medii cu indice de refractie diferit). Reexia produce dou neajunsuri: pe de o parte scade puterea a semnalului util ce ajunge la receptor, iar pe de alt parte un semnal ce a sufer dou reexii succesive se poate suprapune peste semnalul util i, a a s ind arziat fat de acesta, distorsioneaz. nt a l a Impedanta se msoar ohmi (simbol ). Cablul pentru televiz a a n iune are impedanta de 75 . Cablul coaxial pentru retea Ethernet are impedanta de 50 . Cablul torsadat Ethernet are 100 .

3.4.3. Legtur magistral a a a


La o pereche de conductoare pot conectate mai multe emittoare a sau receptoare. O astfel de interconectare poate avea dou scopuri: pentru a a realiza simplu o comunicatie de tip difuziune (un emittor transmite simultan a ctre mai multe receptoare) sau pentru a permite mai multor calculatoare s a a comunice ecare cu ecare. O astfel de pereche de conductoare la care se leag mai multe dispoza itive se numete magistral . s a Realizarea mediului zic, acest caz, este complicat de necesitatea n a de a avea adaptare de impedant ecare punct al mediului. general, la a n In simpla conectare a trei perechi de conductoare sau, echivalent, la ramicarea unei perechi apare, punctul de ramicatie, o neadaptare de impedant. n a Exist dispozitive mai complicate (continnd transformatoare de sema a nal) care permit ramicarea unei perechi de conductoare fr a introduce o aa

c 2008, Radu-Lucian Lupa s


76 3.4. Transmisia prin perechi de conductoare

neadaptare de impedant, a nu permit propagarea semnalului de la ecare a ns ramur spre toate celelalte. a O alt solutie de conectare a mai multor dispozitive (emittoare sau a a receptoare) la un cablu const realizarea unei ramicatii foarte scurte, asta n fel at s nu aib comportament de linie lung (la frecventele cu care se lunc a a a creaz uzual, aceasta a nseamn cel mult civa centimetri), la captul creia se a at a a conecteaz emittorul sau receptorul. Emittorul sau receptorul astfel coneca a a tat trebuie s aib impedanta de ieire, respectiv de intrare, mult mai mare a a s dect impedanta perechii de conductoare la care se conecteaz. O astfel de a a conectare se utilizeaz, de exemplu, retelele Ethernet vechi (vezi 9.1.3 i a n s g. 9.1). Dac un capt de pereche de conductoare este lsat liber (neconeca a a tat), el produce reexii. De fapt, un capt neconectat poate vzut ca o a a jonctiune de la perechea ce are o anumit impedant la un dispozitiv avnd a a a impedanta innit. Pentru evitarea reexiilor, la captul unei perechi de a a conductoare trebuie montat un dispozitiv numit terminator . Terminatorul este un simplu rezistor, avnd rezistenta egal cu impedanta cablului. El aba a soarbe integral semnalul incident, neproducnd nici un fel de reexie. Notm a a c terminatoarele sunt utilizate mod normal doar pe legturi magistral; a n a a pe legturile punct la punct, emittorul i receptorul au, mod obinuit, a a s n s impedanta necesar, astel at joac i rol de terminator. a nc as

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 i prelucrarea informatiei. De asemenea, tierea la dimens a siune a cablurilor i montarea conectoarelor se pot realiza cu unelte relativ s ieftine i fr a necesita prea mult calicare din partea lucrtorilor. Aceste s aa a a motive fac ca, majoritatea situatiilor practice, perechile de conductoare s n a e a cea mai potrivit solutie pentru comunicatii pe distante mici. nc a Faptul c mediul de transmisie este conductor ridic a probleme a a ns speciale, situatiile care prin conductoarele mediului de transmisie ajung n n s curg curenti din alte surse. a a Astfel, ntre carcasele, legate la pmntarea retelei electrice, a dou a a a calculatoare sau alte echipamente, poate apare o tensiune electric de ordinul a ctorva volti; dac echipamentele sunt conectate la retelele electrice a dou a a a cldiri diferite, tensiunea dintre carcase de propagarele lor poate chiar mai a mare. Pentru ca aceasta s nu perturbe semnalul util, constructia plcilor a n a de retea trebuie luate msuri speciale de izolare. Dac unul dintre conduc a a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 77

toare este expus atingerii cu mna (este cazul la retelele Ethernet cu cablu a coaxial, unde conductorul exterior este legat la partea metalic exterioar a a a conectoarelor), standardele de protectie la electrocutare cer legarea la pmnt a a a conductorului respectiv; legarea la pmnt trebuie a fcut a a ns a a ntr-un singur punct pentru a evita suprapunerea peste semnalul util a tensiunilor dintre diverse puncte ale retelei de pmntare. a a O alt surs de tensiuni parazite a a ntre conductoarele de semnal sunt descrcrile electrice din atmosfer (fulgerele i trznetele). Deoarece mod a a a s a n normal conductoarele retelei sunt izolate fat de reteaua de pmntare, fenomenele a a a atmosferice pot induce tensiuni ridicate ntre conductoarele retelei i carcasele s echipamentelor, putnd duce la distrugerea echipamentelor retelei. Ca ura mare, cazul unor cabluri de retea duse prin exteriorul cldirilor, este necen a sar e ecranarea cablului i legarea ecranului la pmnt, e amplasarea unor a s a a descrctoare care s limiteze tensiunea dintre conductoarele retelei i pmnt. a a a s a a

3.5. Transmisia prin unde radio


Undele electromagnetice sunt oscilatii ale cmpului electromagnetic. a Aceste oscilatii se propag din aproape aproape. a n Frecventa unei unde electromagnetice este frecventa de oscilatie a cmpului electromagnetic a ntr-un punct xat din spatiu. Lungimea de und a unei unde este distanta parcurs de und a a a n timpul unei oscilatii complete. Lungimea de und se noteaz cu i are a a s v s valoarea = f , unde f este frecventa i v este viteza de propagare. Viteza de propagare depinde de mediul care se propag unda. Ca urmare, lungimea n a de und se modic la trecerea dintr-un mediu altul. a a n Lungimea de und se utilizeaz adesea locul frecventei pentru a a a n caracteriza unda. acest caz lungimea de und se calculeaz pentru viteza In a a de propagare a undelor electromagnetice vid v = c = 3 108 m/s. n Viteza de propagare aer este foarte apropiat de viteza vid; n a n pentru majoritatea scopurilor cele dou viteze pot considerate egale. a Undele radio sunt unde electromagnetice avnd frecvente la care a pot s lucreze dispozitivele electronice; functie de autori, limita de jos a a n frecventelor undelor radio este cuprins a ntre 30 Hz ( = 10000 km) i 3 kHz s ( = 100 km), iar limita de sus a frecventelor este cuprins a ntre 1 GHz ( = 30 cm) i 300 GHz ( = 1 mm), cu observatia c undele electromags a netice din intervalul 1 GHz 300 GHz se numesc microunde i unii autori s consider c microundele nu fac parte dintre undele radio ci sunt o categorie a a separat de acestea. a

c 2008, Radu-Lucian Lupa s


78 3.5. Transmisia prin unde radio

De interes practic retelele de calculatoare sunt undele radio n n intervalul 300 MHz 30 GHz, sau echivalent, cu lungimile de und cuprinse a ntre 1 m i 1 cm. s La transmisia prin unde radio, mrimile zice utilizate ca semnal a sunt intensitatea cmpului electric i inductia magnetic. Cele dou mrimi a s a a a sunt proportionale modul i au directii perpendiculare una pe cealalt i pe n s as directia de propagare a undei. Intr-un sistem de transmisie prin unde radio, emittorul cuprinde a dou blocuri distincte: un dispozitiv electronic, care produce un semnal de a tip tensiune i intensitate electric, i antena, care convertete semnalul din s a s s tensiune i intensitate electric cmp electromagnetic. s a n a Receptorul const de asemenea dintr-o anten, care plasat calea a a a n undelor electromagnetice transform semnalul din cmp electromangetic a a n tensiune i intensitate electric, i un dispozitiv electronic, care decodic s a s a semnalul electric. Orice anten poate servi att la emisie ct i la receptie. (Singura a a a s diferent ce apare a ntre antene este c antenele de emisie de putere mare a trebuie construite astfel at s suporte tensiunile i curentii mari ce apar nc a s n elementele lor.) Mai multe proprieti ale sistemului de transmisie fac ca limea benat at zii de trecere a ntregului sistem s e a ngust raport cu frecventele a n ntre care se ncadreaz banda de trecere; raportul a ntre limea benzii i limita at s inferioar a benzii este mod tipic de cel mult cteva procente. Din aceast a n a a cauz, transmisia prin unde radio este a ntotdeauna cu modulatie, iar frecventa purttoare este cel putin de cteva zeci de ori mai mare dect limea de band. a a a at a De exemplu, pentru o vitez de transmisie de 10 Mbit/s avem mod a n tipic nevoie de o lime de band apropiat de 10 MHz, pentru care frecventa at a a purttoare va de cel putin 200 MHz. a

3.5.1. Propagarea undelor


3.5.1.1. Polarizarea Cmpul electromagnetic se caracterizeaz prin dou mrimi vectoa a a a riale, denite pentru ecare punct din spatiu: intensitatea cmpului electric, a notat cu E, i inductia magnetic, notat cu B. a s a a Intr-un fascicul de unde electromagnetice, paralel i mult mai lat s dect lungimea de und, vectorii E i B sunt a a s ntotdeauna perpendiculari unul pe cellalt i pe directia de deplasare a undelor. a s Dac E are directie constant i variaz doar sensul i modulul, a a s i a s

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 79

fasciculul se numete polarizat liniar. Un fascicul polarizat liniar se caracters izeaz prin directia vectorului E, numit directia de polarizare. a a Dac E are modul constant i directia lui se rotete uniform, plan a s s n perpendicular pe directia de deplasare a undei, fasciculul se numete polarizat s circular. Se distinge polarizare circular stng dac, privind directia de a a a a n propagare a undelor, dinspre emittor spre receptor, directia lui E se rotete a s sens invers acelor de ceas; i polarizare circular dreapt dac E se rotete n s a a a s sensul acelor de ceas. n Un fascicol cu polarizare circular rezult de fapt prin suprapunerea a a a dou fascicole, de amplitudine egal, polarizate perpendicular unul pe cellalt, a a a deplasndu-se aceeai directie i cu un decalaj de un sfert de ciclu a n s s ntre ele. Dac cele dou fascicole au amplitudini diferite, rezult ceea ce se numete a a a s polarizare eliptic ; polarizarea liniar i polarizarea circular sunt de fapt a a s a cazuri particulare de polarizare eliptic. a 3.5.1.2. Absorbtia i reexia s Absorbtia undelor radio aer este neglijabil. n a Picturile de ap (din ploaie, nori, ceat) absorb destul de puternic a a a undele radio, special microundele. Apa absoarbe puternic toate undele ran dio; de aceea este greu de obtinut legtur radio sub ap. Absorbtie moderat a a a a se produce pmnt i diferite materiale de constructie. n a a s n Scderea puterii undelor radio datorit absorbtiei este exponential a a a cu distanta, ca i cazul propagrii semnalelor prin cabluri. s n a Metalele reect undele radio. Plasele metalice care au contact bun a ntre rele componente i au ochiurile mult mai mici dect lungimea de und se s a a comport ca o suprafat metalic compact. Armturile cldirilor din beton a a a a a a armat nu fac contact electric prea bun ntre ele, a perturb serios propagarea ns a undelor radio. Ionosfera reect undele cu lungimi de und de ordinul metrilor; prin a a reexii repetate ntre Pmnt si ionosfer, aceste unde pot parcurge uor multe a a a s mii de kilometri. 3.5.1.3. Difractia Orice und ocolete obstacolele mai mici dect o fractiune din lungimea a s a de und, vreme ce spatele obstacolelor mai mari de ctea lungimi de und a n n a a ,,rmne umbr. De aceea, undele lungi, cu lungime de und de ordinul kiloa a a a metrilor sau sutelor de metri sunt capabile s ocoleasc obstacole mari, inclua a siv curbura Pmntului pe distant de cteva sute sau chiar mii de kilometri. a a a a Prin contrast, undele cu lungime de und sub civa metri se propag aproape a at a numai linie dreapt, dealurile sau cldirile mai mari putnd provoca umbre. n a a a

c 2008, Radu-Lucian Lupa s


80 3.5. Transmisia prin unde radio

3.5.1.4. Interferenta undelor Dac a ntr-un punct ajung unde pe mai multe ci, de exemplu o cale a direct i o cale prin reexia pe un obstacol, unda receptionat acel punct as a n este suma undelor ce ajung pe toate cile. a Dac diferenta de drum a ntre dou ci este un numr a a a ntreg de lungimi de und, dar mult mai mic dect lungimea unui bit, undele se suprapun faz a a a n a i se adun, semnalul receptionat ind mai puternic. Dac diferenta de drum s a a este apropiat de un numr impar de lungimi de und, undele se suprapun a a a antifaz i se anuleaz reciproc, semnalul receptionat ind slab sau nul. n as a In aceste situatii, deplasarea receptorului (sau emittorului) pe o distant de la a a un sfert din lungimea de und i pn la de cteva ori lungimea de und poate as a a a a modica mult calitatea semnalului (reaminitim c transmisiile de date se a n utilizeaz lungimi de und cuprinse a a ntre 1 cm i 1 m). Schimbarea lungimii s de und pe care se face transmisia poate de asemenea modica mult efectul. a Dac diferenta de drum a ntre semnalele receptionate pe ci diferite a este comparabil sau mai mare dect lungimea unui bit i puterile semnalului a a s pe cele dou ci sunt apropiate, semnalele propagate pe cele dou ci se bruiaz a a a a a reciproc. Situatia apare mult mai rar dect cea prezentat mai sus, a nu a a ns poate corectat dect prin mutarea statiilor fat de obstacolele ce produc a a a reexiile. 3.5.1.5. Divergenta undelor Pe msur ce ne deprtm de emittor, puterea semnalului scade daa a a a a torit extinderii frontului de und. Densitatea puterii este invers proportional a a a cu suprafata frontului de und, care la rndul ei este proportional cu ptratul a a a a distantei fat de emittor. a a Ca urmare, puterea receptionat Pr este invers proportional cu p a a a tratul distantei d dintre emittor i receptor: a s Pr = Pe 1 d2

unde este o constant ce depinde de constructia antenelor de emisie i de a s receptie, iar Pe este puterea emittorului. a Scderea puterii datorit extinderii frontului de und este indepena a a dent de eventuala absorbtie a undelor mediu; aceasta din urm duce la o a n a scdere exponential cu distanta a puterii semnalului. a a

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

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 81

oscilatiile electromagnetice mediul n nconjurtor antenei. Orice anten este a a reversibil: dac i se aplic un semnal electric la borne, va radia unde electroa a a magnetice i, reciproc, dac este plasat calea undelor electromagnetice, va s a a n produce semnal electric la borne. general o anten este optimizat pentru o anumit band de treIn a a a a cere. O anten are un anumit randament, denit ca raportul dintre puta erea undei electromagnetice radiate i puterea absorbit din semnalul electric s a primit. 3.5.2.1. Directivitatea O anten nu radiaz uniform de jur a a mprejur. Prin ctigul (engl. as gain) unei antene pe o directie se elege raportul dintre puterea radiat pe nt a acea directie i puterea radiat de o anten etalon, aceleai conditii. Ca s a a n s etalon se utilizeaz de obicei o anten ipotetic care ar radia egal toate a a a n directiile i ar avea randamentul 100%. Deoarece energia se conserv, ctigul s a as este pe unele directii supraunitar i pe altele subunitar, integrala lui pe s ntreaga sfer ind 4 (unde reprezint randamentul antenei). Ctigul este dat a a as uneori direct, alteori este dat logaritmul ctigului, exprimat decibeli. as n Ctigul antenei pe diverse directii este reprezentat grac prin diaas gramele de ctig. O astfel de diagram este o reprezentare a ctigului ca as a as functie de unghi pe toate directiile dintr-un plan. O directie de maxim local al ctigului, as mpreun cu directiile apropia ate, se numete lob. Lobul care cuprinde maximul global al ctigului se s as numete lobul principal al antenei. Ceilalti lobi se numesc lobi secundari sau s lobi laterali. Valoarea maxim, pentru toate directiile posibile, a ctigului a as este numit ctigul antenei. a as O anten optimizat s aib ctig ct mai mare pe o directie, a a a a as a n detrimentul celorlalte directii, se numete anten directiv. O anten opti s a a a mizat pentru a avea ctig ct mai uniform, cel putin planul orizontal, a as a n se numete anten nedirectiv. O anten cu ctig perfect uniform de jur s a a a as mprejur (radiator izotrop) este imposibil de realizat. Exist o legtur a a a ntre dimensiunea antenei, directivitatea i lungimea s de und la care functioneaz. Anume, raza unghiular a lobului principal a a a (msurat radiani) nu poate mai mic dect raportul dintre diametrul a a n a a antenei i lungimea de und. Ca exemplu, pentru a obtine un lob principal s a de 3 ( 0,05 rad) la o lungime de und de 6 cm (f = 5 GHz) avem nevoie a de o anten de cel putin 1,2 m diametru. Limitarea aceasta este legat de a a fenomenele de difractie a undelor i nu poate ocolit. s a

c 2008, Radu-Lucian Lupa s


82 3.5. Transmisia prin unde radio

O anten de receptie plasat calea undelor receptioneaz o puta a n a ere proportional cu densitatea de putere a undei incidente. Raportul dinte a puterea disponibil la bornele antenei i densitatea de putere a undei incia s dente se numete aria efectiv sau apertura antenei. Apertura poate privit s a a ca suprafata, transversal pe directia de propagare a undelor, de pe care an a tena preia ntreaga energie. Apertura depinde de directia considerat a undei a incidente. Apertura fat de o anumit directie a undei incidente este proportia a onal cu ctigul antenei pe acea directie. Relatia este: a as S=G 2 4 (3.6)

unde S este aria efectiv, G este ctigul, iar este lungimea de und. a as a Utiliznd relatia (3.6), se poate calcula puterea receptionat, dac a a a distanta dintre emittor i receptor este mult mai mare dect dimensiunile a s a antenelor: Pr = Pe Ge 1 Sr = 4d2 2 = Pe Ge Gr 16 2 d2

unde Pr este puterea disponibil la bornele antenei receptoare, Pe este puterea a aplicat la bornele antenei emittoare, d este distanta dintre emittor i recepa a a s tor, Ge este ctigul emittorului pe directia spre receptor, iar Gr i Sr sunt as a s respectiv ctigul i apertura antenei receptoare pe directia spre emittor. as s a Exemplul 3.1: Considerm un emittor (de exemplu, un calculator dintr-o a a retea IEEE 802.11 wireless) care emite un semnal cu puterea Pe = 100 mW (sau, echivalent, +20 dBm) i frecventa f = 2,4 GHz (lungimea de und s a este atunci = 0,125 m). Mai presupunem c receptorul se gsete la o a a s distant d = 100 m fat de emittor, c absorbtia semnalului este neglijabil a a a a a (emittorul i receptorul se gsesc cmp deschis i nu plou) i c ambele a s a n a s a s a antene au un ctig Ge = Gr = 2 pe directia spre partenerul de comunicatie. as Rezult puterea semnalului receptionat: a Pr = 101 W 2 adic aproximativ 84 dBm. a (0,125 m)2 2 3,9 109 W, 16 2 (100 m)2

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 83

3.5.2.2. Polarizarea Antenele cele mai simple au polarizare liniar: unda emis este poa a larizat liniar, pe o directie stabilit prin constructia antenei. Rotirea antenei a a emittorului fat de cea a receptorului duce la variatia semnalului receptionat a a ntre un maxim (cnd directiile polarizrilor celor dou antene sunt paralele) a a a i un minim (teoretic zero) cnd directiile sunt perpendiculare. s a O anten polarizant liniar va receptiona a a ntotdeauna, indiferent de directia de polarizare, o transmisie polarizat circular; reciproc, o anten po a a larizant circular va receptiona o emisie polarizat liniar. O anten polarizant a a a a circular va receptiona o transmisie polarizat circular numai dac are acelai a a s sens al polarizrii. Rotirea antenelor jurul dreptei ce le unete nu are efect. a n s 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 caz, a Pmntul. este cellalt pol). O astfel de anten are ctig maxim planul a a a a as n orizontal (perpendicular pe baston) i zero pe directie vertical ( lungul s a n bastonului). Undele produse sunt polarizate vertical. Antenele directive cele mai rspndite pentru comunicatii de date a a sunt aa-numitele antene parabolice (denumire improprie, pentru c forma s a parabolic este a reectorului antenei). O asrfel de anten este alctuit dintra a a a o oglind form de paraboloid de rotatie, focarul creia este plasat ana n a n a a alte constructii, antena propriu-zis este plasat alt tena propriu-zis. (In a a a n a parte, iar unda electromagnetic este adus focarul reectorului parabolic a a n printr-un tub metalic numit ghid de und.) a

3.5.3. Raza de actiune a unei legturi radio a


Spre deosebire de legturile prin perechi de conductoare sau prin a bre optice, legturile prin unde radio nu pot delimitate net la un anumit a domeniu. Dm continuare factorii care inuenteaz raza de actiune a unei a n a legturi radio. Uneori vom dori s contracarm, pentru a extinde domeniul a a i a de actiune, alteori dimpotriv, vom dori s ne mentin o legtur radio a i a a a a ntrun domeniu spatial limitat pentru a nu interfera cu legturi radio din apropiere. a Cabluri electrice sau optice putem duce cte dorim; cmp electromagnetic este a a numai unul. . . 3.5.3.1. Obstacolele Obstacolele limiteaz raza de actiune a legturii radio. Mai mult, din a a cauza interferentei dintre undele reectate pe diferite ci, este dicil de analizat a

c 2008, Radu-Lucian Lupa s


84 3.5. Transmisia prin unde radio

exact punctele care este posibil receptia unei emisii radio i punctele n a s n care emisia este obstructionat. a 3.5.3.2. Linia orizontului Unul dintre obstacolele ce limiteaz raza de actiune a undelor radio a este si Pmntul, prin curbura suprafetei sale. O statie aat la o anumit nsu a a a a altime poate comunica cu o statie aat la nivelul solului dac i numai dac n a as a statia de pe sol se a mai aproape dect linia orizontului celeilalte statii. a a Dou statii pot comunica dac exist cel putin un punct comun orizontului a a a celor dou statii. a cmpie, distanta pn la linia orizontului este (r desemneaz raza In a a a a Pmntului, iar h este altimea antenei deasupra suprafetei Pmntului): a a n a a msurat de-a lungul curburii, de la baza turnului care se a obsera a n a r vatorul: d = r arccos h+r ; msurat linie dreapt de la observator: a a n a d= (r + h)2 r2 = h(2r + h);

dac h a r, d 2rh. De remarcat c dac exprimm numeric 2r a a a n 3 km) i h metri, distanta d rezult mii de kilometri (2r 12,7 10 s n a kilometri. n Exemple: Distanta pn la linia orizontului pentru un observator aat la 1,6 m a a deasupra pmntului (de exemplu un radiotelefon inut mn) este d = a a t n a a 12,7 1,6 km 4,5 km. Un turn cu altimea de 20 m (obinuit pentru un releu GSM) are n s linia orizontului la 16 km. O statie aat a ntr-un astfel de turn poate comunica cu un radiotelefon inut mn la o distant de 16 km+4,5 km = 20,5 km (de t n a a a regul raza de actiune a unui releu GSM este limitat de alte considerente). a a De pe un turn cu altimea de 50 m, distanta la linia orizontului n este d = 12,7 50 km 25 km. Dou relee de telecomunicatii avnd 50 m a a altime ecare pot comunica direct dac sunt la mai putin de 50 km unul de n a altul. Distanta la linia orizontului crete s ncet cu altimea; a se dubleaz n dac a altimea, distanta la linia orizontului crete cu un factor de 2 1,4. n s 3.5.3.3. Utilizarea satelitilor articiali ai Pmntului a a Satelitii articiali ai Pmntului sunt utilizati ca echivalentul unor a a turnuri nalte pentru montarea unor statii radio. Dup altitudinea la care a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 85

sunt plasati, distingem trei categorii de sateliti: sateliti de joas altitudine aati a ntre 200 . . . 1000 km, cu perioada de rotatie de 1,5 . . . 1,8 h; sateliti de altitudine medie ntre 10000 . . . 15000 km (raza orbitei de 34 ori raza Pmntului), cu perioada de rotatie de 6 . . . 9 h; a a sateliti geostationari aati la 35800 km deasupra ecuatorului, au pe rioada de rotatie de exact o zi i ca urmare apar ci fat de Pmnt. s s a a a Un satelit are o arie de acoperire incomparabil mai mare fat de o a statie terestr. La 200 km altitudine, un satelit acoper o raz de 1500 km, a a a iar un satelit de medie altitudine acoper o raz de peste 7000 km. a a Din cauza distantelor mari, comunicatia cu satelitii necesit e put a eri mari, e antene cu directivitate foarte bun. Este de remarcat faptul c a a distanta de la un satelit la o statie terestr este de la cteva zeci la cteva a a a sute de ori mai mare dect distanta de la un releu amplasat a ntr-un turn la o statie terestr. Ca urmare, pentru aceleai antene, puterile necesare sunt de a s la cateva sute la cteva sute de mii de ori mai mari. a La comunicatia ntre sateliti geostationari i statii xe de pe sol se pot s utiliza relativ uor antene cu directivitate bun, deoarece antenele de pe sol s a sunt xe. Orbita geostationar este a destul de ,,aglomerat: presupunnd a ns a a c avem antene ce dau un fascicul cu diametrun unghiular de 6 , (vezi exemplul a care rezulta, pentru f = 5 GHz, un diametru al antenei de peste 1,2 m) n putem distinge doar ntre 60 de sateliti distincti. Pentru satelitii care nu sunt geostationari, utilizarea antenelor direc tive necesit un sistem foarte complicat de urmrire a satelitului. a a 3.5.3.4. Zgomotul Zgomotul transmisiile radio provine din multe surse, n ntre altele aparatur electronic, a a ntreruptoare electrice (inclusiv colectoarele motoarelor a de curent continuu). Transmisiile radio sunt mult mai sensibile la zgomot dect a transmisiile prin conductoare electrice, deoarece la conductoare electrice undele radio ptrund accidental semnal, din cauza ecranrii imperfecte, pe a n a ct vreme la transmisiile radio semnalul util se amestec direct cu zgomotul aa a radio ambiant. Nivelul zgomotului radio ambiant este un factor important care limiteaz inferior pragul de sensibilitate al receptorului i, consecint, xeaz a s n a a puterea minim pentru o anumit distant emittor-receptor. a a a a Nivelul de zgomot scade general o dat cu creterea frecventei. n a s

c 2008, Radu-Lucian Lupa s


86 3.5. Transmisia prin unde radio

3.5.3.5. Scderea puterii cu distanta a Densitatea de putere a undelor electromagnetice scade cu ptratul a distantei de la emittor. Ca urmare, la o sensibilitate xat a receptorului, a a pentru a dubla raza de actiune a emittorului trebuie s-i cretem puterea de a a s 4 ori. Pe de alt parte, dac dou emittoare radio functioneaz aceeai a a a a a n s regiune geograc i emit pe frecvente identice sau foarte apropiate, atunci a s transmisia mai puternic ,,acoper transmisia mai slab. Aceasta se ampl a a a nt a deoarece semnalele celor dou emittoare se suprapun. Dac, punctul a a a n n care este plasat receptorul, puterea unuia dintre emittoare este mult mai mare a dect puterea celuilalt, atunci receptorul va receptiona doar transmisia mai a puternic, chiar dac, singur, transmisia mai slab ar putea receptionat a a a a a corect. Dac puterile sunt apropiate, receptorul nu va putea ,, elege nici a nt una dintre transmisii. 3.5.3.6. Emisia directionat i polarizat as a Domeniul de actiune a unui emittor sau receptor poate restrns a a mod voit dotnd emittorul sau receptorul (de obicei ambele) cu antene din a a rective. Trebuie a calculate cu atentie divergenta lobului principal, puterea ns emis pe lobii secundari ai antenei i reexiile de teren. a s Polarizarea se poate utiliza pentru a separa dou transmisii pe aceeai a s directie i pe aceeai lungime de und. cazul utilizrii polarizrii liniare, s s a In a a cele dou transmisii trebuie s utilizeze directii de polarizare perpendiculare; a a cazul polarizrii circulare se vor folosi cele dou sensuri (stnga i dreapta). n a a a s Lobii secundari ai antenelor, precum i undele reectate de diverse corpuri, au s polarizri greu de controlat. a

3.5.4. Spectrul radio i alocarea lui s


Incepem cu o precizare de terminologie: general cnd este vorba n a de semnale, termenul de frecvent se utilizeaz cu sensul de frecventa unei a a componente descompunerea Fourier a semnalului, iar termenul de band se n a folosete cu sensul de interval de frecvente s ntre care se ncadreaz spectrul a Fourier al unui semnal. comunicatii radio, termenul de frecvent se utilizeaz adesea i In a a s cu sensul de interval de frecvente care se n ncadreaz o transmisie (efectiv, a band sensul de la semnale). Frecvente diferite, acest sens, a n n nseamn a de fapt benzi disjuncte. Valoarea numeric a frecventei, specicat acest a a n context, este frecventa purttoare utilizat. Limitele efective ale benzii se a a determin din standardul de transmisie folosit. a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 87

Notiunea de band care se face transmisia specic acest context a n a n un interval de frecvente alocat pentru o anumit categorie de transmisii radio. a Benzile, acest sens, se specic e printr-o anumit frecvent sau lungime de n a a a und, din interiorul benzii, i avnd o valoare ,,rotund, e printr-un nume. a s a a Limitele benzii se gsesc standarde. a n Dou transmisii radio ce se fac pe frecvente diferite, sau mai precis, a a cror benzi de trecere sunt disjuncte, pot separate general uor. Separarea a n s frecvent este mult mai uor controlabil dect separarea spatial studiat n a s a a a a 3.5.3. Dou transmisii pe aceeai frecvent i aceeai zon geograc n a s a s n s a a sunt practic imposibil de separat, dac au puteri apropiate, sau transmisia a mai slab este imposibil de receptionat ind ,,acoperit de cea mai puternic. a a a Pentru evitarea suprapunerilor ntre utilizatori, utilizarea diverselor benzi de frecvente face obiectul unor reglementri legale ecare ar, precum a n t a i a unor acorduri internationale. Emiterea unui semnal radio, pe o frecvent s a pentru care operatorul emittorului nu este autorizat sau de o putere mai a mare dect cea autorizat, poate duce la sanctionarea contraventional sau a a a chiar penal a operatorului. a majoritatea cazurilor, un utilizator de comunicatii radio care doIn rete s opereze un emittor trebuie s obtin o autorizatie care se specic s a a a a n a frecventa de lucru, puterea maxim, zona geograc care opereaz, etc. a a n a Exist frecvente alocate posturilor de radio, sistemelor de comunicatii radio a ale diferitelor institutii (politie, controlorii de trac aerian, dispecerate de taxiuri, operatori de telefonie mobil, etc.). Tot aceast categorie, a cu a n a ns un statut aparte sunt radioamatorii: frecventele sunt alocate activitii de at radioamator i nu unei persoane sau institutii, a radioamatorii trebuie s s ns a se nregistreze pentru a putea emite. Exist a benzi pentru care nu este necesar o autorizare expres a a ns a a emittorului, cu conditia ca emittorul s nu depeasc o anumit putere. a a a as a a In aceast categorie intr frecventele folosite de: retelele IEEE 802.11 (Wireless a a Ethernet) i Bluetooth, tastaturi i maui fr r, telefoanele fr r, mis s s aa aa crofoanele fr r, walkie-talkie-urile de jucrie, jucrii cu telecomand prin aa a a a radio, telecomenzi pentru deschis garajul. Utilizatorul unor astfel de echipamente trebuie totui s e atent la eventualele diferente s a ntre reglementrile a din diferite ri: un echipament poate functiona legal fr autorizatie ara ta aa n t de origine, dar s necesite autorizatie alt ar. a n at a Echipamentele care lucreaz pe frecvente pentru care nu trebuie aua torizatie ajung s interfereze dac sunt plasate apropiere. Unele dintre a a n acestea permit selectarea frecventei de lucru dintre 24 frecvente predenite. Utilizatorul va selecta o frecvent diferit dac constat o functionare proast a a a a a

c 2008, Radu-Lucian Lupa s


88 3.5. Transmisia prin unde radio

i suspecteaz interferente cu echipamente vecine. Alt solutie este schimbarea s a a repetat a frecventei de lucru, dup o schem convenit a a a a ntre emittor i rea s ceptor, i tolerarea unui numr de ciocniri ale transmisiilor pe perioadele s a n care echipamentele vecine se nimeresc aceeai frecvent. Tehnica se numete s a s frequency hopping (salturi ale frecventei). Mai mentionm c, printre productorii de semnale radio parazite a a a intr i alte dispozitive, avnd alte scopuri dect comunicatiile. Ca fapt divers, as a a enumerm cteva: a a Sursele de alimentare de la aproape toate aparatele electronice moderne (aa-numitele surse comutatie), precum i blocul de baleiaj de s n s linii de la televizoarele i monitoarele cu tub catodic, emit semnicativ s pe frecvente pn la cteva sute de kiloherti (aa-numitele armonice, a a a s adic frecvente care sunt multipli ai frecventei de lucru a circuitului). a Functionarea acestora bruiaz adesea posturile de radio pe unde lungi a i uneori chiar medii. s Radioemittoarele emit i pe frecvente ce sunt multipli ai frecventei a s purttoare (armonice). Din acest motiv, se ampl uneori ca un post a nt a de televiziune s apar, cu semnal foarte slab, i pe un canal superior a a s celui pe care este transmis normal (dar atentie, uneori acest efect este datorat receptiei de la un alt releu de televiziune, mai ndeprtat). a

3.5.5. Particulariti ale sistemelor de comunicatie prin radio at


3.5.5.1. Topologia legturii a Legturile a ntre releele de comunicatie radio, amplasate turnuri n i dotate cu antene parabolice, sunt general punct la punct, ca cazul s n n legturilor prin perechi de conductoare. a Legturile a ntre satelitii geostationari i statiile terestre sunt astfel s c emisia satelitului este receptionat de mai multe statii de pe Pmnt, i a a a a s reciproc, satelitul receptioneaz emisia de la mai multe statii de pe Pmnt; a a a statiile de pe Pmnt nu comunic a direct a a a ns ntre ele. O astfel de comunicatie poate prezenta riscul ca emisiile statiilor de pe Pmnt s se ciocneasc fr a a a a aa ca statiile s observe direct acest lucru. a La echipamente mobile exist mai multe posibiliti. Pentru distante a at mari, una din statii este x i se plaseaz as a ntr-un turn de unde poate comunica direct cu toate celelalte. Celelalte statii nu se ,,vd direct una pe alta i de cele a s mai multe ori nici dac ,,se vd protocoalele folosite nu permit comunicatii a a directe ntre ele (exemplu: telefoanele GSM). Statia central primete rol de a s arbitraj al transmisiilor.

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 89

Pentru distante mici, se poate adopta o organizare mai ,,democratic a (exemplu IEEE 802.11): statiile comunic direct a ntre ele, iar arbitrarea mediului se face prin mijloace asemntoare cu cele utilizate pe cabluri magistral a a a ( 4.2). Spre deosebire a de cablurile magistral, unde un pachet emis de o ns a statie de pe cablu este receptionat de toate celelalte i, ca urmare, ciocnirea la s receptie a dou pachete este sesizat i de ctre emittoare, la legturile radio a as a a a este posibil ca dou transmisii s se ciocneasc la receptor dar nici una din a a a statiile care le-au emis s nu receptioneze transmisia celeilalte. a 3.5.5.2. Fiabilitatea Fiabilitatea unei legturi radio este general mai sczut dect a a n a a a unei legturi pe cablu: a Rata de erori este mult mai mare. La o legtur radio, probabilitatea unei a a erori de un bit este mod normal de 103 . . . 105 . Pentru comparatie, n la transmisia prin perechi de conductoare, probabilitatea unei erori de un bit este de 107 . . . 1010 , iar la brele optice, erorile sunt i mai rare, s 10 . . . 1012 . 10 La frecvente peste 10 GHz, datorit absorbtiei picturile de ap, starea a n a a legturii poate depinde de starea vremii. a Umbrele provocate de cldiri i relief, precum i interferentele a s s ntre undele reectate, sunt imposibil de calculat mod practic. O statie ce ajunge n umbr va pierde legtura mod imprevizibil. n a a n 3.5.5.3. Securitatea La comunicatiile prin cablu pe distant scurt, securitatea comunica a a iei poate asigurat pzind cablul. Din acest motiv retelele locale pe cablu t a a pot s nu prevad msuri contra intruilor. a a a s Undele radio nu pot pzite, analog cablului. Retelele fr r este a aa esential s aib incorporate msuri de securitate. Acestea presupun metode a a a criptograce (vezi capitolul 6) ce previn ascultarea sau contrafacerea unui mesaj, i eventual schimbarea frecventei (metoda frequency hopping) pentru a s preveni bruiajul.

3.6. Transmisia optic a


Transmisia optic este de fapt tot o transmisie prin unde electromaga netice, dar cu frecvente mult mai mari, anume din intervalul cuprins ntre 1,6 1014 Hz ( = 1,8 m) i 3,7 1014 Hz ( = 0,8 m). Aceste unde elecs tromagnetice fac parte din categoria undelor infraroii. Vom folosi termenul de s

c 2008, Radu-Lucian Lupa s


90 3.6. Transmisia optica

lumin pentru aceste unde, dei nu se a s ncadreaz domeniul luminii vizibile a n ( = 780 nm . . . 380 nm). Mrimea considerat ca semnal este puterea luminoas. Am putea a a a considera, mod echivalent, c semnalul transmis de mediu este intensitatea n a cmpului electric sau inductia magnetic i c utilizm modulatie amplitua as a a n dine pentru a transmite semnalul util. Emisia i receptia se realizeaz cu dispozitive semiconductoare capas a bile s emit raze infraroii la trecerea curentului prin ele (LED-uri, asemna a s a a toare celor de pe panourile de aparate, sau, dup caz, diode laser) i, respectiv, a s care permit trecerea curentului doar prezenta luminii. n Pentru unele aplicatii, presupunnd comunicatie pe distant de cel a a mult civa metri (de exemplu, pentru telecomenzi de televizoare sau pentru at dispozitive IrDA), raza de lumin se propag direct prin aer de la emittor la a a a receptor. Metoda este dicil de extins la distante mai mari. Raza de lumin poate a foarte uor ghidat printr-o br optic. a ns s a a a O br optic este esent un r dintr-un material transparent, prin interiorul a a n a cruia trece lumina. Dac raza de lumin lovete peretele lateral al brei, se a a a s acest fel, lumina ce intr printr-un capt al brei ntoarce napoi br. In n a a a iese prin cellalt capt chiar dac bra nu este perfect dreapt. a a a a Fibra optic se mai numete i ghid de und optic (engl. optical a s s a waveguide), deoarece este identic ca i scop i foarte asemntor functional cu s s a a ghidul de und utilizat pentru microunde. a Lungimea brei, ntre emittor i receptor, poate atinge cteva zeci a s a de kilometri. Lucrurile care fac posibil atingerea unor distante att de mari a a sunt atenuarea mic (sub 1 dB/km) i imunitatea aproape perfect la zgomot. a s a

3.6.1. Constructia mediului


Constructiv, o br optic este alctuit dintr-un miez (engl. core) a a a a din silica (bioxid de siliciu, SiO2 , amorf), nconjurat de un nveli (engl. clads ding), tot din silica, dar cu un indice de refractie putin mai mic. Diametrul miezului este principalul parametru dat la o br optic; este cuprins a a ntre 8 m i 62,5 m. Diametrul s nveliului este mod curent de 125 m. Pentru s n comparatie, diametrul rului de pr uman este de 20 . . . 30 m. a Intre miez i s nveli poate o discontinuitate net, sau se poate ca s a indicele de refractie s scad gradual. Fibrele cu discontinuitate net se numesc a a a bre optice cu discontinuitate (engl. step index ber ) iar brele cu trecere gradual de la miez la a nveli se numesc bre optice graduale (engl. grade s index ber ). Fibra propriu-zis ind extrem de subtire i fragil, ea este a s a nvelit a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 91

mai multe straturi cu rol de protectie mecanic. n a Ideea de baz a conducerii semnalului prin br este c o raz de a a a a lumin ce se propag oblic prin miez i atinge suprafata de contact dintre a a s miez i s nveli s se reecte s a napoi miez. Reexia trebuie s e cu pierderi n a extrem de mici, deoarece o raz se va reecta de multe ori de la un capt la a a cellalt al brei. a 3.6.1.1. Conectarea brelor optice Problemele legate de conectarea brelor optice reprezint principalul a dezavantaj al brelor optice fat de perechile de conductoare. Conectarea cap a la cap a dou tronsoane de br se poate face: a a prin lipire, alzind bra pn la temperatura de topire a sticlei i nc a a s avnd grij ca s se lipeasc capetele dar s nu se amestece miezul cu a a a a a nveliul. Conectarea prin lipire necesit echipamente mai scumpe, este s a nedemontabil, dar perturb cel mai putin transmiterea semnalului prin a a br. O lipitur produce o atenuare a semnalului jur de 0,1 dB, din a a n cauza reexiei unei prti a luminii incidente. a prin conectoare optice. Fiecare capt de br se lefuiete foarte bine i a a s s s se prinde ntr-o pies metalic cu rol de ghidaj. Piesele metalice ataate a a s capetelor de br se strng una fat de cealalt, realiznd alinierea fat a a a a a a fat a capetelor de br. Eventual, spatiul dintre capetele de br se n a a a poate umple cu un gel transparent cu indice de refractie apropiat de cel al brei, reducnd astfel reexia la captul brei. a a

3.6.2. Propagarea semnalului optic


3.6.2.1. Moduri de propagare Dac diametrul brei nu este mai mare de cteva zeci de ori lungimea a a de und a luminii, modelul opticii geometrice propagarea luminii sub forma a de raze nu mai este o aproximare acceptabil a fenomenelor ce au loc. Din a studiul ecuatiei undelor rezult doar un numr nit de solutii, numite moduri a a de propagare. Intuitiv, un mod este un posibil traseu al razei de lumin, a traversnd mod repetat, zig-zag, axul brei i pstrnd un unghi xat a n n s a a fat de acesta; bre sucient de subtiri, doar anumite unghiuri sunt permise. a n Dac o br permite existenta mai multor moduri de propagare a a a luminii, bra se numete multimod . Modurile diferite se propag general s a n cu viteze putin diferite. Intuitiv, acest lucru se ampl deoarece viteza de nt a propagare a semnalului br este egal cu valoarea componentei longitudin a a nale a vitezei de propagare a luminii, care depinde de unghiul dintre directia

c 2008, Radu-Lucian Lupa s


92 3.6. Transmisia optica

de propagare a luminii i axa brei. Datorit vitezelor diferite, semnalul emis s a de la un capt al brei este distorsionat, ind receptionat la cellalt capt a a a ca mai multe copii putin decalate timp. Acest fenomen de distorsionare a n semnalului se numete dispersie intermodal . s a Opusul brei multimod este bra monomod , care ecuatia undelor n admite o singur solutie. Existenta unui singur mod elimin dispersia intera a modal, a mbuntind calitatea propagrii semnalului. Pentru a admite un a at a singur mod, bra trebuie s e mult mai subtire, diametrele standard ind a 10 m sau 8 m. Diametrul mai mic al brei atrage dou diculti: pe de a at o parte, cerintele de aliniere mecanic a brei fat de surs sunt mai stricte, a a a iar pe de alt parte densitatea de putere luminoas emis prin br trebuie a a a a s e mai mare. Acest din urm fapt duce la necesitatea utilizrii diodelor a a a laser ca surs de lumin (LED-urile nu mai sunt adecvate) i, consecint, a a s n a la creterea preturilor echipamentelor. s 3.6.2.2. Caracteristici ale mediului Dm continuare caracteristicile principale ale propagrii: a n a viteza de propagare este viteza luminii silica, aproximativ 0,67 c; n atenuarea este, aa cum am vzut, foarte mic, de ordinul ctorva decibeli s a a a pe kilometru sau chiar cteva zecimi de decibel pe kilometru. a distorsiunile apar sub forma de dispersie, adic lirea impulsurilor. Sunt a at cauzate de mai multe fenomene, i au ca i consecint limitarea practic s s a a a produsului dintre frecventa maxim ce se poate transmite i distanta a s dintre emittor i receptor. Acest produs se numete (impropriu) banda a s s de trecere i se msoar megahertzi kilometru (MHz km). Valorile s a a n tipice, pentru o br multimod, sunt de ordinul a 500 MHz km. a zgomotul transmisia prin br optic apare aproape exclusiv datorit n a a a fotodiodei receptoare (zgomot termic); acesta limiteaz inferior sensia bilitatea receptorului i, la atenuare dat a brei, puterea emittorului. s a a Captarea de paraziti de-a lungul brei, i particular diafonia, sunt s n neglijabile.

3.6.2.3. Multiplexarea lungimea de und n a Considernd ca semnal intensitatea cmpului electric, observm c a a a a prin bra optic se transmite un semnal modulat amplitudine. Frecventa a n purttoare este frecventa undelor infraroii. Semnalul modulator este rdcina a s a a ptrat a puterii luminoase emise. a a

c 2008, Radu-Lucian Lupa s


Capitolul 3. Nivelul fizic 93

Ca urmare, este posibil realizarea multiplexrii frecvent a mai a a n a multor semnale pe aceeai br optic. Emittoarele sunt diode laser sau LEDs a a a uri de culori diferite. Receptoarele sunt dotate cu cte un ltru de culoare a corespunztoare plasat fata elementului fotosensibil. Aceast metod de a n a a multiplexare se numete multiplexare lungimea de und (engl. wavelength s n a division multiplexing WDM). Subliniem c diferenta a ntre multiplexarea lungime de und i multiplexarea frecvent este doar de terminologie, n a s n a nu una principial. Diferenta provine doar din faptul c, cazul transmisiei a a n optice, lipsa mijloacele de-a analiza direct semnalul electromagnetic (asupra n cruia opereaz multiplexarea frecvent ), analizm doar puterea semnalului a a n a a electromagnetic. Este posibil i transmisia duplex pe o singur br optic. Pentru as a a a aceasta se realizeaz o constructie cu oglinzi semitransparente care permite ca a raza de lumin emis s ptrund br, iar raza de lumin ce iese din br a a a a a n a a a s ajung pe elementul receptor. Pentru a preveni diafonia a a ntre cele dou a sensuri de propagare, este necesar ca reexiile pe capetele brei s e extrem a de reduse sau s se aplice o multiplexare lungimea de und a n a ntre cele dou a sensuri.

3.6.3. Considerente practice


Realiznd o transmisie ghidat prin cablu, brele optice concureaz a a a direct cu perechile de conductoare. Fibrele optice au cteva avantaje: sunt a izolatoare din punct de vedere electric, sunt foarte putin sensibile la zgomot, este dicil de interceptat comunicatia prin ele (fr a le tia este aproape aa a imposibil de interceptat semnalul, iar tierea brei poate uor detectat), a s a au atenuare mic i, sfrit, sunt mult mai uoare (contin mult mai putin a s n a s s material) dect perechile de conductoare. a Toate aceste avantaje fac brele optice s e extrem de atractive pena tru comunicatia pe distante mari, precum i pentru echipamente ce lucreaz s a conditii mai speciale, de exemplu la tensiuni electrice mari sau medii cu n n radiatii electromagnetice puternice. Principalele diculti la utilizarea brelor optice sunt legate de caat blare. Dei puterea luminii transportate prin bra optic este foarte mic, s a a sectiunea extrem de mic a brei face ca densitatea de putere s e sucient a a de mare pentru a periculoas. Riscul principal este ca, cazul care a n n lumina de la emittorul optic ptrunde ochi, s produc leziuni ireparabile a a n a a ale retinei. Riscul de accident este mrit prin faptul c lumina nu este vizibil. a a a Ca msur de protectie, se pot utiliza ochelari speciali prevzuti cu ltre care a a a

c 2008, Radu-Lucian Lupa s


94 3.6. Transmisia optica

las s treac lumina vizibil, dar blocheaz infraroiile transmise prin bre. a a a a a s Lipirea brelor sau montarea conectoarelor pe bre necesit echipaa mente scumpe (zeci de mii de dolari pentru un dispozitiv de lipire i jur de s n o mie de dolari pentru setul de unelte necesare montrii conectoarelor) i pera s sonal calicat. Din acest motiv, se comercializeaz cabluri, de diferite lungimi, a cu conectoare gata ataate. s Un r de praf ajuns pe captul unei bre optice obstructioneaz sea a rios trecerea luminii. De aceea, conectoarele necuplate se acoper cu capace a protectoare.

c 2008, Radu-Lucian Lupa s


95

Capitolul 4

Nivelul legturii de date a

Nivelul legturii de date are ca rol realizarea unei comunicatii stabile a ntre calculatoare sau echipamente ntre care exist o legtur direct la nivel a a a a zic (exist deci un mediu de comunicatie a ntre ele). general, legtura de date ofer servicii de transport de pachete. In a a Nivelul zic ofer servicii de transport de pachete, a aceste servicii a ns sufer de urmtoarele lipsuri: a a Pachetele pot alterate sau chiar distruse complet din cauza zgomotului. Dac un acelai mediu de transmisie este utilizat de mai multe emittoare a s a (ceea ce se ampl adesea la transmisia prin unde radio, dar uneori i nt a s la transmisia prin perechi de conductoare) i mai multe dintre aceste s emittoare transmit simultan, pachetele transmise se altereaz reciproc. a a Dac destinatia nu poate prelucra datele ritmul care sunt transmise a n n de ctre emittor, o parte din date se vor pierde. a a Constructia legturii zice este scump; mai mult, exist un cost indepen a a a dent de capacitate. Ca urmare, este de dorit s putem construim mai a multe legturi logice, care s transmit uxuri independente de pachete, a a a partajnd aceeai legtur zic. a s a a a Ca urmare, nivelul legturii de date are sarcina de-a realiza urmtoaa a rele: detectarea sau corectarea erorilor de transmisie; controlul accesului la mediu cazul care exist mai multe emittoare n n a a ce partajeaz acelai mediu de transmisie; a s retransmiterea pachetelor pierdute din cauza erorilor de transmisie, a ciocnirilor ntre pachete transmise de mai multe emittoare simultan a sau a incapacitii destinatiei de-a le prelua la timp; at

c 2008, Radu-Lucian Lupa s


96 Capitolul 4. Nivelul legaturii de date

controlul uxului de date, adic frnarea emittorului cazul care a a a n n destinatia nu este capabil s proceseze sucient de repede informatia a a primit; a multiplexarea mai multor legturi logice prin aceeai legtur zic. a s a a a

Surs a (modulul retea)

Emittor a legtur a a de date

Nivel zic

Receptor legtur a a de date

Destinatie (modulul retea)

Calculator emittor a

Calculator receptor

Figura 4.1: Alctuirea nivelului legturii de date i locul su a a s a ntre nivelele retelei.

Constructiv, nivelul legturii de date este un modul interpus a ntre nivelul superior ( mod normal, nivelul retea) i nivelul zic (g. 4.1). Pentru n s realizarea functiilor lor, modulele nivelului legturii de date ale dispozitivelor a ce comunic si transmit unul altuia, utiliznd serviciile nivelului zic, dou a a a tipuri de informatii: datele utile, ce trebuie transmise de ctre nivelul legturii de date a a n folosul nivelelor superioare; informatii de control, pentru uzul strict al nivelului legturii de date. a Informatiile de control sunt transmise e mpreun cu datele utile, acelai a n s pachet transmis prin nivelul zic, e separat, pachete de sine stttoare. n aa primul caz, informatiile de control sunt plasate e fata datelor utile, sub In n forma unui antet, e dup acestea. cazul transmiterii datelor de control a In ntr-un pachet separat, un astfel de pachet se numete pachet de control. s

4.1. Detectarea i corectarea erorilor s


vederea detectrii sau, dup caz, corectrii erorilor, emittorul In a a a a de la nivelul legturii de date adaug, la ecare pachet generat de nivelul a a superior, un numr de biti de control. Bitii de control sunt calculati conform a unui mecanism de codicare pentru canale cu perturbatii (vezi 2.4). Bitii de control sunt adugati, de regul, la nalul pachetului. a a Receptorul recalculeaz bitii de control conform continutului pachetua lui receptionat i-i compar cu cei de la nalul pachetului receptionat. caz s a In de nepotrivire, receptorul deduce c s-a produs o eroare de transmisie. a In cazul utilizrii unui cod corector de erori, receptorul reconstituie continutul a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 97

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

4.2. Controlul accesului la mediu


Problema controlului accesului la mediu se pune situatia care pe n n un acelai mediu zic actioneaz mai multe emittoare, a cror emisie simuls a a a tan interfereaz aa fel at un receptor nu poate receptiona corect oricare a a n s nc dintre transmisii. aceste conditii, problema accesului la mediu const a In a n elabora un protocol care s evite transmisia simultan. a a practic, problema accesului la mediu apare urmtoarele ipostaze: In a n a la transmisia semi-duplex , adic cazul comunicatiei bidirectionale, a n ntre dou entiti, utiliznd acelai mediu zic pentru ambele sensuri. a at a s la comunicatia prin unde radio, dac exist mai multe statii care emit pe a a general, emisia unei statii este receptionat aceeai lungime de und. In s a a de toate statiile pe o anumit raz. Este cazul aproape tuturor retelelor a a fr r: IEEE 802.11 (wireless Ethernet), Bluetooth, GSM, etc. aa dac statiile sunt conectate ,,tip magistral, adic mediul de comunicatie a a a general o pereche de conductoare trece pe la toate statiile. Este n cazul retelelor Ethernet mai vechi. Exist dou strategii de control al accesului la mediu: a a asigurarea unui interval exclusiv de emisie, pe rnd, pentru ecare statie; a acceptarea posibilitii coliziunilor i retransmisia pachetelor distruse at s n coliziuni. Asigurarea unui interval exclusiv de emisie permite garantarea, pentru ecare statie, a unui debit minim cu care poate emite i a unui interval s maxim de ateptare din momentul care are ceva de transmis i pn la s n s a a intrarea emisie; metoda cu coliziuni i retransmiteri este nedeterminist n s a i ca atare asigur un anumit debit i un anumit timp de ateptare doar cu s a s s o anumit probabilitate strict mai mic dect unu. schimb, sistemele a a a In n ce asigur un interval exclusiv de emisie, intrarea i ieirea unei statii din a s s retea, precum i revenirea dup o pan a unei statii, sunt complicate. s a a In cazul asigurrii unui interval exclusiv de emisie, o parte din capacitatea de a transmisie a mediului este consumat de mesajele de sincronizare necesare a stabilirii intervalelor ecrei statii; cazul acceptrii coliziunilor, o parte din a n a capacitate este pierdut datorit pachetelor distruse coliziuni. a a n

c 2008, Radu-Lucian Lupa s


98 4.2. Controlul accesului la mediu

general, asigurarea unui interval exclusiv de emisie este favoraIn bil sistemele timp real, cum ar retelele utilizate pentru automatizri a n n a industriale transmisie audio-video. Detectarea coliziunilor i retransmiterea s pachetelor distruse coliziuni este favorabil sistemele interactive, cum ar n a n retelele ,,obinuite de calculatoare. s Aproape orice sistem care mai multe dispozitive sunt conectate n n la acelai mediu zic este necesar ca ecare dispozitiv s aib un identicator s a a unic. Acest identicator se numete adres zic sau adres MAC (de la Mes a a a dia Access Control controlul accesului la mediu) sau, dac nu e pericol de a confuzie, adres. Alocarea adresei zice se face mod normal prin mecanisme a n exterioare retelei, adic adresele sunt alocate e manual, de ctre administra a a torul retelei, e cadrul procesului de fabricatie al dispozitivului conectat la n retea.

4.2.1. Protocoale bazate pe asigurarea unui interval exclusiv de emisie


Cea mai simpl metod din aceast categorie este s existe o statie a a a a desemnat ca arbitru, care s anunte de ecare dat ce statie primete dreptul a a a s de emisie. Anuntul se face printr-un pachet emis de arbitru i continnd adresa s a zic a statiei ce poate emite. Statia anuntat de arbitru are la dispozitie un a a interval de timp care poate s emit ceea ce are de transmis. Dac statia nu n a a a are nimic de transmis, protocolul poate prevede e c statia nu emite nimic, a e c emite un pachet special. a Incheierea perioadei alocate unei statii se poate face e la expirarea unei durate de timp prestabilite, e prin anuntul explicit al statiei c a a ncheiat transmisia. Dup a ncheierea perioadei alocate unei statii, arbitrul anunt statia urmtoare. a a Arbitrul trebuie s aib lista tuturor statiilor din retea. Ieirea unei a a s statii se face simplu prin anuntarea arbitrului; ieirea arbitrului nu este posibil s a (dect eventual prin desemnarea unui alt arbitru). Intrarea unei statii noi a necesit un mecanism special de anuntare a arbitrului. Un astfel de mecanism a este general bazat pe coliziuni i prevede ca arbitrul s n s a ntrebe, periodic, dac exist statii ce vor s intre retea. Dac o statie, alta dect arbitrul, a a a n a a se defecteaz, statia e este vzut ca o statie ce nu are nimic de transmis, a a a e este detectat de ctre arbitru c nu rspunde i este scoas de pe lista a a a a s a statiilor din retea. Defectarea arbitrului duce la cderea a ntregii retele.

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 99

Metoda cu arbitru este utilizat, de exemplu, cadrul ecrei celule a n a GSM. O alt metod de control al accesului este metoda cu jeton. a a In cadrul acestei metode, loc s existe un arbitru central care detine lista comn a plet a statiilor, lista este distribuit, ecare statie cunoscnd adresa statiei a a a urmtoare. acest fel, intervalul de emisie alocat, ecare statie emite a In n datele utile, dup care anunt statia urmtoare. Metoda cu jeton a fost utia a a lizat retelele IEEE 802.4. a n

4.2.2. Protocoale bazate pe coliziuni i retransmitere s


Cel mai simplu mecanism bazat pe coliziuni i retransmitere pres supune ca o statie ce are date de transmis s le transmit imediat. cazul a a In unei coliziuni, statia emittoare va repeta ulterior pachetul, pn la o trans a a a mitere cu succes. Detectarea unei coliziuni, de ctre ecare dintre statiile emittoare, a a se poate face prin dou metode: a prin ascultarea mediului pentru a detecta o eventual transmisie simula tan. a Datorit arzierilor de propagare diferite, este posibil ca dou a nt a pachete s e coliziune pentru o statie receptoare i s nu e cola n s a n iziune pentru alt statie (g 4.2). Din acest motiv, un emittor trebuie a a s considere coliziune orice situatie care detecteaz o transmisie prea a n a apropiat timp de o transmisie proprie. Din acelai motiv, arzierea a n s nt maxim datorat propagrii retea trebuie limitat prin standard, ceea a a a n a ce impune o limit asupra a ntinderii geograce a retelei.
A
a

B
c

A
a

B
c

A
c

B
a

(a) A i C emit simuls tan cte un pachet scurt. a Fiecare dintre ei termin a emisia propriului pachet cu mult naintea sosirii pachetului celuilalt.

(b) Ceva mai trziu, ama bele pachete ajung la B, unde se produce coliziune.

(c) Si mai trziu, A a primete pachetul lui C s i C primete pachetul lui s s A.

Figura 4.2: Dou pachete emise simultan, conditiile care timpul de propagare a n n este mai mare dect timpul de transfer. Coliziunea nu este detectat de nici unul a a dintre emittoare, a este detectat de o statie aat la jumtatea distantei dintre a ns a a a acestea.

La legturile radio poate s mai apar un fenomen, i anume, daa a a s

c 2008, Radu-Lucian Lupa s


100 4.2. Controlul accesului la mediu

torit atenurilor diferite, este posibil ca pentru un receptor s apar a a a a coliziune ntre dou pachete, timp ce pentru alt receptor unul dina n tre pachete s e att de puternic atenuat at s nu perturbe deloc a a nc a receptia celui de-al doilea pachet (g. 4.3). Din acest motiv, la trans misia radio este imposibil ca emittorul s detecteze a a ntotdeauna coliziunile propriei transmisii cu alte transmisii simultane.

Figura 4.3: Este posibil ca dou emittoare radio, A i C, s e situate prea departe a a s a pentru a-i receptiona una transmisia celeilalte, dar s existe o a treia statie, B, care s s a a receptioneze transmisiile ambelor emittoare (liniile punctate delimiteaz zona care a a n transmisia unei statii poate receptionat). acest caz, A i C pot emite simultan a In s fr a detecta coliziune, a pentru B se produce coliziune aa ns ntre transmisiile lui A i s C.

prin lipsa conrmrii, din partea receptorului, a primirii pachetului. Pena tru aceasta, este necesar utilizarea unui cod detector de erori, cu ajua torul cruia receptorul s detecteaze disturgerea pachetului urma a a n coliziunii. De asemenea, mai este necesar ca receptorul s conrme a pachetele primite cu succes (astfel de mecanisme de conrmare vor studiate 4.3). n Repetarea unui pachet distrus de o coliziune se face dup un interval a de timp aleator. Dac intervalul de timp pn la retransmitere ar x, dou a a a a statii ce au emis simultan vor emite simultan i retransmiterile, ciocnindu-i la s s innit pachetele. Mai mult, dac apar frecvent coliziuni, este bine ca timpul a pn la urmtoarea retransmitere s e mrit. a a a a a Acest protocol simplu de acces la mediu se numete Aloha pur . s O variant a mbunit a protocolului Aloha este protocolul numit atat a Aloha cuanticat (engl. slotted Aloha). acest protocol, toate pachetele au In aceeai lungime. Inceperea transmisiei unui pachet nu poate avea loc oricnd, s a ci doar la momente xate, aate la o durat de pachet unul de altul. a Alte mbuniri ce pot aduse protocolului Aloha pur (nu a i atat ns s la Aloha cuanticat) sunt: detectarea purttoarei (CSMA Carrier Sense Multiple Access): o statie a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 101

care dorete s emit ascult mai ai mediul; dac detecteaz emisia s a a a nt a a altei statii, amn emisia proprie pn dup nalul emisiei celeilalte a a a a a statii. O prim posibilitate este ca statia s a a nceap emisia proprie imea diat dup terminarea emisiei celeilalte statii. Dezavantajul este c, pe a a durata unui pachet lung, este probabil s se adune mai multe statii care a ar vrut s emit; ca urmare la nalul transmisiei acelui pachet toate a a statiile vor emite simultan, rezultnd coliziuni. a O solutie mai bun este ca o statie, care dorete s emit i con a s a as stat c mediul este ocupat, s atepte un interval de timp aleator, dup a a a s a care s verice din nou dac mediul este liber. Dac mediul este liber, a a a ncepe emisia proprie; dac nu, ateapt un nou interval de timp aleator a s a . a. m. d. s oprirea transmisiei la detectarea unei coliziuni (numit, oarecum improa priu, detectarea coliziunii collision detection, CSMA/CD): dac o a statie, timpul emisiei proprii, detecteaz o coliziune, abandoneaz n a a datele rmase de transmis, transmite un semnal de o form special pena a a tru a anunta c pachetul este invalid i apoi oprete transmisia. acest a s s In fel, se economisete timpul necesar transmisiei datelor rmase, transs a misie oricum compromis. a

4.2.3. Protocoale mixte


Exist i protocoale de control al accesului la mediu care combin a s a metode de asigurarea accesului exclusiv cu metode bazate pe coliziuni. O posibilitate este s se negocieze, prin intermediul unor pachete de a control de mici dimensiuni, accesul exclusiv la mediu vederea transmiterii n pachetelor de date, de dimensiuni mai mari. O astfel de metod este metoda CSMA/CA (carrier sense multiple a access with collision avoidance, rom. acces multiplu cu detectarea purttoarei i a s evitarea coliziunilor ), utilizat retelele IEEE 802.11. O statie A care dorete a n s s transmit un pachet de date unei statii B va trimite ai un pachet de a a i nt control, numit RTS (request to send, cerere de transmisie), care specic n a timpul necesar transmiterii pachetului (sau, echivalent, lungimea pachetului). B rspunde printr-un alt pachet de control, CTS (clear to send, liber la transa misie), destinat lui A dar receptionat de toate statiile, care pune i durata n s transmisiei copiat din pachetul RTS. La primirea pachetului CTS, statia A a transmite pachetul de date. O statie care receptioneaz un CTS adresat altei a statii nu are voie s transmit nici date, nici pachete de control, pe durata a a anuntat CTS i rezervat astfel destinatarului CTS-ului. a n s a

c 2008, Radu-Lucian Lupa s


102 4.2. Controlul accesului la mediu

Aceast metod este foarte favorabil retele fr r deoarece rea a a n aa zolv i aa-numita problema statiei ascunse: este posibil s existe trei statii, as s a A, B i C, cu B situat geograc aproximativ la mijlocul distantei s a ntre A i s C, cu distanta dintre A i C putin peste raza de actiune a transmisiei, astfel s at A nu receptioneaz transmisia lui C i nici reciproc, dar cu B sucient nc a s de aproape de A i de C astfel at s poat comunica cu ecare dintre ele. s nc a a aceast situatie, dac A i C emit simultan, din punctul de vedere al lui In a a s B se produce o coliziune, dar nici A nici C nu pot detecta acest lucru. Protocolul CSMA, descris paragraful precedent, nu permite lui C s detecteze n a dac A transmitea deja ctre B momentul care C dorete s transmit la a a n n s a a rndul lui; ca urmare, CSMA se comport exact ca Aloha pur. protocolul a a In CSMA/CA, schimb, C receptioneaz CTS-ul adresat de B lui A i amn n a s a a transmisia proprie. Alt posibilitate de combinare a celor dou strategii o constituie proa a cazul acestor protocoale, statiile sunt artite tocolalele cu conict limitat. In mp grupuri. Fiecrui grup i se aloc intervale exclusive de emisie (ca cazul n a a n protocoalelor bazate pe intervale exclusive de emisie, dar cu diferenta c ecare a interval se aloc unui a ntreg grup, nu unei statii). cadrul ecrui grup se In a aplic un protocol cu coliziuni i retransmitere. artirea grupuri poate a s Imp n fcut dinamic: dac cadrul unui grup apar frecvent coliziuni, grupul a a a n este scindat dou; dac dou grupuri au transmisii sucient de rare, pot n a a a recombinate ntr-unul singur.

4.3. Retransmiterea pachetelor pierdute


Dac un pachet de date se pierde (de exemplu datorit unei erori de a a transmisie, eroare detectat dar nu i corectat de receptor), este necesar a s a a retransmiterea acelui pachet. Evident, emittorul nu are cum s ,,ghiceasc dac un anumit pachet a a a a ajunge intact la destinatie sau este pierdut; ca urmare, trebuie stabilit o a comunicatie napoi dinspre receptor spre emittor. Principial, exist dou a a a strategii: receptorul conrm (engl. acknowledge, ACK) primirea corect a paa a chetelor receptorul inrm (engl. negative acknowledge, NAK) un pachet eronat. a Evident, conrmrile sau inrmrile sunt i ele pachete i deci sunt a a s s la rndul lor supuse eventualelor erori de transmisie. a Rolul unui protocol de retransmitere este s asigure c la destinatie a a ajung toate pachetele emise, ordinea care sunt emise i fr duplicate. n n s a a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 103

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

4.3.1. Principiul conrmrilor pozitive i retransmiterilor a s


Ideea de baz a mecanismului de retransmitere este urmtoarea: la a a primirea cu succes a ecrui pachet de date, receptorul trimite emittorului a a cte un pachet cu rol de conrmare. Dac emittorul primete conrmarea, a a a s trece la urmtorul pachet. Dac emittorul nu primete conrmarea unui a a a s pachet timpul dus- n ntors normal, repet pachetul ce nu a fost conrmat a (vezi gura 4.4).
Surs a Emittor a Receptor Destinatie

Un mesaj Un mesaj Un mesaj ACK al doilea al doilea

timeout

al doilea al doilea ACK

Figura 4.4: Retransmiterea pachetelor pierdute

S examinm acum protocolul din punctul de vedere al ecrui para a a ticipant (emittorul i receptorul) i s nu uitm c ecare are viziunea lui a s s a a a despre sistem, dat de acele informatii care sunt accesibile. a i Algoritmul emittorului este urmtorul: pentru ecare pachet al sura a sei, ct timp nu a primit conrmare de la receptor, trimite pachetul i ateapt a s s a pn cnd e primete conrmarea, e trece un timp egal cu durata dus- a a a s ntors normal. a

c 2008, Radu-Lucian Lupa s


104 4.3. Retransmiterea pachetelor pierdute

Algoritmul receptorului este urmtorul: pentru ecare pachet primit a de la emittor, trimite un pachet de conrmare spre emittor i livreaz a a s a destinatiei pachetul primit. Exist o problem cu algoritmul de mai sus. a a Intrebare pentru cititor: ce se ampl dac un pachet ajunge la destinatie a conrmarea lui se nt a a ns pierde?
Surs a Emittor a Receptor Destinatie

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

al doilea al doilea ACK

Figura 4.5: lipsa unor msuri adecvate, pierderea unei conrmri conduce la In a a dublarea unui pachet.

Rezultatul se vede gura 4.5 (pachetul ce contine textul ,,al doilea n este livrat dublu exemplar destinatiei). S observm (comparati i cu n a a s gura 4.4) c receptorul nu are cum s disting a a a ntre trimiterea urmtorului a pachet de date i retrimiterea unui pachet datorit pierderii conrmrii. s a a Pentru a obtine un algoritm corect, trebuie s furnizm receptorului a a sucient informatie pentru ca acesta s disting a a a ntre repetarea pachetului precedent i pachetul urmtor. O solutie este ca emittorul s pun ecare s a a a a n pachet trimis numrul su de ordine cadrul uxului de date; acest numr de a a n a ordine se numete numrul de secvent al pachetului. acest fel, receptorul s a a In va retine numrul ultimului pachet receptionat i va capabil s verice dac a s a a urmtorul pachet primit este repetarea acestuia sau este urmtorul pachet al a a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 105

sursei. Intrebare pentru cititor: dac receptorul primete un duplicat al paa s chetului precedent, trebuie s-l conrme sau nu? a S vedem rationamentul ce ne duce la rspuns: Emittorul nu are a a a de unde s tie dac un pachet de date a ajuns sau nu la receptor. Dac a s a a primete conrmarea unui pachet, poate sigur c pachetul conrmat a ajuns s a la receptor; dac a a trimis un pachet i nu a primit ( a) conrmarea a ns s nc acestuia, este posibil (conform informatiilor emittorului) ca pachetul s a a ajuns (i eventual s se pierdut conrmarea) sau ca pachetul s nu ajuns s a a deloc. El insist retransmiterea pachetului pn la primirea conrmrii. a n a a a Prin urmare, receptorul trebuie s conrme ecare pachet primit, chiar dac a a este un duplicat al unui pachet anterior (vezi gura 4.6).
Surs a Emittor a Receptor Destinatie

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 emittorul s repete la innit un a a a pachet a crui conrmare s-a pierdut. a

Suntem acum msur s dm algoritmii corecti pentru emittor i n a a a a a s pentru receptor: functionarea emittorului este descris algoritmul 4.1, iar a a n cea a receptorului algoritmul 4.2. Un exemplu de functionare a acestora n

c 2008, Radu-Lucian Lupa s


106 4.3. Retransmiterea pachetelor pierdute

este dat gura 4.7 n Algoritmul Emittor pas cu pas a algoritmul: n:=0 ct timp sursa mai are pachete de trimis execut a a e d urmtorul pachet al sursei a p:=(n, d) execut a trimite p receptioneaz n , fr a atepta o durat mai mare de t a aa s a ct timp n = n sau a expirat durata t a sfrit ct timp as a sfrit algoritm as
Algoritmul 4.1: Algoritmul emittorului protocolul simplu cu conrmri i rea n a s transmiteri. Parametrul t este ales putin mai mare dect durata dus- a ntors a nivelului zic.

Algoritmul Receptor pas cu pas algoritmul: n:=0 ct timp mai exist pachete de primit execut a a a receptioneaz (n , d) de la nivelul zic a dac n = n atunci a n:=n + 1 livreaz d destinatiei a sfrit dac as a trimite n spre nivelul zic sfrit ct timp as a sfrit algoritm as
Algoritmul 4.2: Algoritmul receptorului protocolul simplu cu conrmri i ren a s transmiteri.

aceti algoritmi am presupus c numrul de secvent n poate crete In s a a a s orict de mult. practic, n se reprezint pe un numr x de biti i ca urmare a In a a a s are o valoare maxim dup care revine la 0. Vom vedea 4.3.3 ce conditii a a n n acest lucru afecteaz corectitudinea algoritmului. a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 107

Surs a

Emittor a

Receptor

Destinatie

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: Functionarea corect a unui algoritm de retrasnmisie. a

c 2008, Radu-Lucian Lupa s


108 4.3. Retransmiterea pachetelor pierdute

4.3.2. Trimiterea avans a mai multor pachete n


Dei corect, algorimul pas cu pas din paragraful precedent este ins ecient situatia care timpul dus- n n ntors ntre emittor i receptor este a s mult mai mare dect timpul necesar emiterii unui pachet. Acest lucru se a ampl cazul transmiterii unor pachete mici prin legturi de debit mare nt a n a aceast situatie, emittorul emite repede un pachet, i la distant mare. In s a a a dup care ateapt (cea mai mare parte a timpului) propagarea pachetului a s a spre destinatar i s ntoarcerea conrmrii. a Pentru creterea ecientei, ar util ca emittorul s poat trimite s a a a unul dup altul mai multe pachete, fr a atepta conrmarea primului pentru a aa s a-l trimite pe urmtorul. Timpul maxim de ateaptare pentru conrmarea a s unui pachet rmne neschimbat, a permitem trimiterea mai multor pachete a a ns acest timp. n Trimiterea mai multor pachete avans schimb cteva lucruri fat n a a a de cazul trimiterii unui singur pachet: Deoarece la un anumit moment pot exista mai multe pachete trimise de emittor i neconrmate, pentru a putea corela conrmrile cu pachetele a s a de date, este necesar ca i conrmrile s e numerotate. Exist dou s a a a a strategii posibile: - Fiecare pachet de date este conrmat printr-un pachet de conrmare distinct, continnd numrul de secvent al pachetului conrmat. a a a - Un pachet de conrmare contine numrul de secvent pn la care a a a a receptorul a primit toate pachetele. Cu alte cuvinte, un pachet de conrmare conrm toate pachetele de date cu numr de secvent a a 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 cteva pachete de date sosite imediat unul dup altul. a a De mentionat c alegerea a ntre aceste variante trebuie consemnat ca a parte a protocolului stabilit ntre emittor i receptor. a s urma pierderii unui pachet, receptorul poate ajunge situatia de-a In n aceast primi un pachet fr s primit mai ai pachetul anterior. In aa a nt a situatie, receptorul nu poate livra imediat acel pachet destinatiei. Exist a dou actiuni posibile pentru receptor: a - Receptorul ignor complet pachetul ( consecint, nici nu trimite a n a conrmare). - Receptorul memoreaz pachetul, urmnd s-l livreze destinatiei a a a dup primirea pachetului (sau pachetelor) anterioare. a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 109

Alegerea uneia sau a celeilate variante privete doar receptorul, nu s este parte a protocolului de comunicatie. Mai mult, decizia de-a memora sau de-a ignora pachetul poate luat independent pentru ecare pachet a primit de receptor, functie de memoria disponibil acel moment. n a n O metod utilizat frecvent este ca receptorul s xeze o fereastr a a a a de receptie, adic un interval de numere de secvent acceptabile. Pentru a a aceasta, receptorul xeaz la a nceput un numr k. Dac la un moa a ment dat toate pachetele pn la numrul de secvent n inclusiv au fost a a a a receptionate i livrate destinatiei, receptorul accept doar pachetele cu s a numere de secvent situate a ntre n + 1 i n + k; acest interval constituie s fereastra de receptie. Un pachet cu numr de secvent mai mic sau egal a a cu n este sigur un duplicat, un pachet ntre n + 1 i n + k este memorat s (dac nu a fost primit deja) i conrmat, iar un pachet cu numr de a s a secvent strict mai mare dect n + k este ignorat. La primirea pachetua a lui n + 1, fereastra este avansat pn la primul numr de secvent ce a a a a a nu a fost a primit. nc Este esential ca un pachet, ce nu este nici memorat de receptor, nici transmis destinatiei, s nu e conrmat. cazul conrmrii unui a In a astfel de pachet, este probabil ca emittorul s nu-l mai retransmit a a a niciodat, ca urmare receptorul nu va putea s-l furnizeze destinatiei. a a Emittorul trebuie s in i el evidenta unei ferestre de emisie, a a t a s continnd pachete, primite de la surs vederea trimiterii spre receptor, dar a a n a neconrmate de ctre receptor. Notnd cu n primul numr de secvent nc a a a a neconrmat i cu k dimensiunea ferestrei emittorului, fereastra emittorului s a a poate contine pachetele cu numere de la n la n + k 1. Emittorul trimite, a mod repetat, pachetele din fereastr, pn ce primete conrmri pentru n a a a s a momentul care pachetul n este conrmat, fereastra emittorului ele. In n a avanseaz pn la urmtorul pachet neconrmat. a a a a Din cauza ferestrelor emittorului i receptorului, protocolul acesta a s se numete protocolul ferestrei glisante. Dac fereastra emittorului este de s a a dimensiune 1, protocolul ferestrei glisante functioneaz exact ca i protocolul a s pas cu pas din paragraful precedent. Functionarea protocolului ferestrei glisante, diverse variante, este n ilustrat gurile 4.84.10. a n

4.3.3. Spatiul numerelor de conrmare


Evident, practic, numerele de secvent nu pot crete la innit. n a a s In general, numerele de secvent sunt reprezentate pe un numr xat de biti i, a a s ca urmare, au o valoare maxim dup care se reiau de la 0. a a

c 2008, Radu-Lucian Lupa s


110 4.3. Retransmiterea pachetelor pierdute

Surs a Unu

Emittor a 1 Unu

Receptor

Destinatie

doi

2 doi ACK=1

Unu

trei

3 trei

patru

4 patru

nu e pachetul ateptat; s se ignor a

2 doi

nu e pachetul ateptat; s se ignor a

3 trei ACK=2 4 patru ACK=3

doi

trei

patru ACK=4

Figura 4.8: Functionarea ferestrei glisante cazul care dimensiunea ferestrei de n n receptie este 1 i dimensiunea ferestrei de emisie este cel putin 3. s

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 111

Surs a Unu

Emittor a 1 Unu

Receptor

Destinatie

doi

2 doi ACK=1

Unu

trei

3 trei

patru

4 patru ACK=3 2 doi ACK=4

memoreaz pachetul, a dar a nu-l livreaz nc a destinatiei memoreaz pachetul, a dar a nu-l livreaz nc a destinatiei

doi ACK=2 trei

patru Figura 4.9: Functionarea ferestrei glisante cazul care dimensiunea ferestrei de n n receptie este cel putin 3 i protocolul prevede conrmarea individual a pachetelor. s a

c 2008, Radu-Lucian Lupa s


112 4.3. Retransmiterea pachetelor pierdute

Surs a Unu

Emittor a 1 Unu

Receptor

Destinatie

doi

2 doi

Unu

trei

3 trei ACK=2

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

patru

4 patru

memoreaz pachetul, a dar a nu-l livreaz nc a destinatiei

3 trei

trei ACK=4 patru

Figura 4.10: Functionarea ferestrei glisante cazul care dimensiunea ferestrei n n de receptie este cel putin 2 i protocolul prevede c un pachet de conrmare conrm s a a toate pachetele de date pn la numrul de secvent continut pachet. De remarcat a a a a n posibilitatea de optimizare a numrului de pachete de conrmare prin combinarea a mai multor conrmri a ntr-un singur pachet (conrmarea cu numrul 2). a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 113

Pentru a preciza lucrurile, vom numi numr de secvent teoretic a a numrul de secvent pe care l-ar avea un pachet dac numerele de secvent a a a a nu ar limitate i numr de secvent transmis numrul transmis efectiv. s a a a Numrul de secvent transmis are ca valoare numrul de secvent teoretic a a a a modulo n, unde n este numrul de numere de secvent distincte disponibile. a a Pentru ca mecanismele de conrmare i retransmitere, descrise s n 4.3.1 i 4.3.2, s functioneze corect, ele trebuie modicate aa fel at s a n s nc s compare efectiv numerele de secvent teoretice. Pentru aceasta, este necea a sar ca, orice moment, att receptorul ct i emittorul s poat, pe baza n a a s a a a informatiilor pe care le au, s deduc univoc numrul de secvent teoretic din a a a a numrul de secvent transmis. a a Vom analiza continuare ce relatie trebuie s existe n a ntre numrul a n de valori distincte pe care le poate lua numrul de secvent transmis i a a s numrul de pachete trimise avans pentru a nu exista ambiguiti privitor a n at la numrul de secvent teoretic al unui pachet de date sau de conrmare. a a Propozitia 4.1 Dac dimensiunea ferestrei emittorului este k i dac pa a a s a chetele se pot doar pierde, fr s-i poat schimba ordinea, atunci sunt neceaa as a sare i suciente 2k numere de secvent distincte pentru identicarea univoc s a a a pachetelor.
Demonstratie. Trebuie s artm trei lucruri: c exist a aa a a ntotdeauna un interval de lungime 2k, calculabil cu datele receptorului, care se n ncadreaz a numrul de secvent al urmtorului pachet primit de receptor, c exist un a a a a a interval de lungime 2k care se n ncadreaz urmtoarea conrmare primit a a a de emittor i, nal, c dac utilizm doar 2k 1 numere de secvent a s n a a a a distincte putem da un exemplu care apare o ambiguitate. n Presupunem c cel mai mare numr de secvent primit de ctre rea a a a ceptor este n. Deoarece emitatorul a trimis deja pachetul n, rezult c a a pachetele pn la n k inclusiv au fost deja conrmate i deci nu vor mai a a s trimise. Pe de alt parte, deoarece pachetul n + 1 a nu a ajuns la a nc receptor, rezult c acest pachet nu a fost conmat i deci receptorul nu a a s poate trimite pachete cu numere de secvent strict mai mari dect n + k. a a Ca urmare, dac la un moment dat cel mai mare numr de secvent primit a a a de receptor este n, urmtorul numr de secvent primit va intervalul a a a n [n k 1, n + k]. S privim acum din perspectiva emitatorului. Fie n cel mai mare a numr de secvent trimis. Deoarece n a fost deja trimis, rezult c toate a a a a pachetele pn la nk inclusiv au fost deja conrmate. momentul primei a a In transmiteri a pachetului n k, pachetele pn la n 2k inclusiv erau deja a a 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 Lupa s


114 4.3. Retransmiterea pachetelor pierdute pachetului n k. Ca urmare, dup primirea conrmrii pachetului n k nu a a mai pot sosi la emittor conrmri ale pachetelor cu numere mai mici sau a a egale cu n 2k. Prin urmare, numrul urmtoarei conrmri se va a a a ncadra intervalul [n 2k + 1, n]. n S artm acum c 2k numere de secvent distincte sunt a aa a a ntr-adevr a necesare. Considerm dou scenarii: a a 1. Emittorul transmite pachetele de la 1 la k, toate acestea ajung a la receptor, dar toate conrmrile se pierd. Emitatorul retransmite a pachetul 1, care ajunge la receptor. 2. Emittorul transmite pachetele de la 1 la k, acestea ajung la receptor, a sunt conrmate i conrmrile ajung s a napoi la emittor. contina In uare, emittorul transmite pachetele de la k + 1 la 2k, dar toate se a pierd cu exceptia pachetului 2k. Considernd doar informatiile receptorului, observm c ambele cazuri a a a n acesta primete pachetele de la 1 la k, dup care, primul caz primete s a n s pachetul 1, iar al doilea caz primete pachetul 2k. Pentru ca receptorul n s s poat distinge aceste pachete, este necesar ca acestea s aib numere a a a a de secvent transmise distincte. Ca urmare, trebuie s existe cel putin 2k a a valori distincte pentru numrul de secvent transmis. a a

4.4. Controlul uxului


Prin controlul uxului (engl. ow control ) se elege procesul (i nt s mecanismul ce-l realizeaz) prin care o surs de date este frnat astfel at a a a a nc s nu transmit date cu debit mai mare dect este capabil destinatia s le a a a a a prelucreze. lipsa controlului uxului, dac sursa emite date mai rapid dect In a a este capabil destinatia s le prelucreze, o parte din date se pierd. De remarcat a a c stocarea datelor a ntr-o memorie tampon a destinatiei nu rezolv problema, a ci doar permite destinatiei s preia, pe durat scurt de timp (pn la umplerea a a a a a memoriei tampon), un debit mai ridicat de date. Vom presupune cele ce urmeaz c transmisia n a a ntre emittor i a s receptor este sigur (fr erori i fr pierderi, duplicri sau inversiuni de a aa s aa a pachete). Forma cea mai simpl de control al uxului este standardizarea unui a debit x de transmitere a datelor i proiectarea tuturor componentelor siss temului de comunicatie aa fel at s poat opera la acel debit. O astfel n s nc a a de abordare poate adecvat sisteme timp real, cum ar de exemplu a n n telefonia digital. astfel de sisteme, capacitatea de prelucrare a informatiei, a In

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 115

necesar sistemului, poate anticipat, iar surplusul de capacitate nu poate a a valoricat. Dac solutia unui debit x de transmisie nu este satisfctoare, este a a a necesar un mecanism prin care receptorul s informeze emittorul asupra posia a bilitii sale de preluare a datelor. Pentru aceasta este necesar un al doilea at canal de comunicatie, napoi, dinspre receptor spre emittor. a

4.4.1. Cereri de suspendare i de continuare s


Un mecanism primitiv de control al uxului prevede ca receptorul s poat trimite emittorului cereri de suspendare a transmisiei i cereri de a a a s continuare a transmisiei. Astfel, receptorul este prevzut cu o memorie tampon. Dac memoria a a tampon a receptorului este aproape plin, receptorul trimite emittorului un a a mesaj prin care cere acestuia s suspende transmisia de date. Ulterior, cnd a a destinatia consum datele din memoria tampon a receptorului, receptorul cere a emittorului s continue transmisia. a a Acest mecanism este utilizat la transmisia prin linie serial, sub nua mele de software ow control sau de xon/xo. Cererea de suspendare a transmisiei se face prin trimiterea unui caracter, numit uneori xo, avnd codul a ASCII 19. Reluarea transmisiei se cere prin transmiterea unui caracter, numit uneori xon, avnd codul 17. De la un terminal text, clasic, caracterul xo a se transmite tastnd combinatia ctrl-S, iar xon se transmite tastnd ctrl-Q. a a Astfel, un utilizator lucrnd la un terminal text poate tasta ctrl-S pentru a a cere calculatorului oprirea trimiterii de date spre aare i, dup ce citete s s a s datele aate, va tasta ctrl-Q pentru continuarea transmisiei. Evident, cu s acest mecanism de control al uxului, caracterele cu codurile 17 i 19 nu pot s utilizate pentru a transmite informatie util. a Acelai principiu, implementat putin diferit, este mecanismul numit s hardware ow control. acest caz, semnalizarea de suspendare i reluare a In s transmisiei se face printr-o pereche de conductoare separat de cea utilizat a a pentru transmiterea datelor. Deoarece din momentul care receptorul cere suspendarea transn misiei i pn momentul care receptorul nu mai primete pachete trece o s a a n n s anumit durat de timp egal cu durata dus- a a a ntors pe legtur este necea a sar ca receptorul s aib o memorie tampon sucient de mare pentru primirea a a pachetelor trimise acest interval de timp. n

4.4.2. Mecanismul pas cu pas


Un alt mecanism de control al uxului presupune ca receptorul s a semnalizeze emittorului cnd este pregtit s accepte urmtorul pachet. Ea a a a a

c 2008, Radu-Lucian Lupa s


116 4.4. Controlul fluxului

mittorul trimite un singr pachet, apoi ateapt semnalizarea receptorului c a s a a este pregtit s primeasc urmtorul pachet, apoi trimite urmtorul pachet a a a a a . a. m. d. Mecanismul este asemntor cu mecanismul de retransmitere a s a a pachetelor pierdute ( 4.3), a cu diferenta c emittorul ateapt primns a a s a irea ,,conrmrii fr a retransmite pachetul de date dac aceast ateptare a aa a a s depete o anumit durat. as s a a Ca i la mecanismul de retransmitere a pachetelor pierdute, trimiterea s a cte unui singur pachet urmat de ateptarea permisiunii de a-l trimite pe a a s urmtorul conduce la inecient dac durata dus- a a a ntors este semnicativ mai mare dect durata de transfer a unui pachet. acest caz, se poate stabili ca a In receptorul s comunice periodic emittorului numrul de pachete pentru care a a a mai are spatiu memoria tampon. Emittorul poate trimite cel mult numrul n a a de pachete anuntat de receptor nainte de-a primi un nou anunt de disponibil itate de la acesta. Deoarece anuntul de disponibilitate al receptorului ajunge la emittor cu o anumit arziere, timp care emittorul a putut trimite a a nt n a un numr de pachete, este necesar ca emittorul s scad din disponibilitatea a a a a anuntat de receptor numrul de pachete trimise a a ntre timp. Pentru aceasta este necesar ca pachetele s e numerotate i anuntul de disponibilitate s a s a acest fel, contin i numrul de ordine al ultimului pachet de date primit. In as a dac emittorul primete un anunt de disponibilitate prin care este informat a a s c receptorul tocmai a primit pachetul n i are memorie pentru a k pachete, a s nc atunci emittorul poate trimite cel mult pachetul n + k a nainte de-a primi un nou anunt de la receptor.

4.4.3. Mecanism combinat cu retransmiterea pachetelor pierdute


S observm acum c orice mecanism de retransmitere a pachetelor a a a pierdute poate folosit, fr modicri, i cu rolul de mecanism de control aa a s al uxului. Intr-adevr, receptorul nu trebuie dect s ignore complet orice a a a pachet pe care nu poate prelua ( particular, s nu-i conrme primirea). l n a In acest fel, la umplerea memoriei receptorului, pachetele trimise continuare de n emittor nu vor conrmate. consecint, ele vor retransmise pn cnd a In a a a a destinatia va consuma o parte dintre datele sosite la receptor, receptorul va putea prelua noi pachete de la emittor i va conrma emittorului primirea a s a acestor pachete. Mecanismul este a destul de inecient, deoarece emittorul ns a repet pachete care ajung corect la receptor. a Este posibil combinarea controlului uxului cu retransmiterea paa chetelor pierdute, combinnd acelai pachet conrmarea unui pachet de a n s date cu anuntul de disponibilitate i utiliznd acelai numr de secvent pen s a s a a

c 2008, Radu-Lucian Lupa s


Capitolul 4. Nivelul legaturii de date 117

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

4.5. Multiplexarea timp n


general, prin multiplexare se elege un procedeu prin care printrIn nt un acelai canal zic de comunicatie se stabilesc mai multe comunicatii care s decurg relativ independent una de alta. Serviciul oferit ecrei comunicatii a este numit canal logic; ecare comunicatie ocup deci cte un canal logic i a a s toate canalele logice sunt construite pe acelai canal zic. s 3.3.3 i 3.6.2.3 am vzut mecanisme de multiplexare ( frecIn s a n vent, respectiv lungime de und) construite la nivelul zic. La nivelul a n a legturii de date se poate construi un al treilea mecanism de multiplexare: a multiplexarea timp. n Ideea multiplexrii timp este de-a transmite intercalat, prin canalul a n zic, pe rnd, pachete sau iruri de biti apartinnd ecrui canal logic. Eva s a a ident, intercalarea trebuie fcut aa fel at receptorul s poat separa a a n s nc a a datele corespunztoare ecrui canal logic. De asemenea, emittorul trebuie s a a a a asigure o artire echitabil a capacitii canalului zic mp a at ntre canalele logice. Separarea datelor corespunztoare canalelor logice se poate face prin a dou metode: a Fiecare canal logic are asociat un identicator unic. Fiecare pachet are, antet, identicatorul canalului logic cruia apartin datele utile n a i (g. 4.11(b)). Se stabilete o ordine de succesiune s ntre canalele logice. Prin canalul zic se transmite, pe rnd, cte un pachet apartinnd ecrui canal a a a a logic (g. 4.11(c)). De notat c, dac sursa unui canal logic nu transmite a a pachete o perioad mai lung de timp, trebuie ca emittorul de la nivelul a a a legturii de date s trimit pachete vide contul acelui canal (pentru a a a n a permite celorlalte canale logice s transmit pachete fr a a a a a ncurca evidentele receptorului).

c 2008, Radu-Lucian Lupa s


118 4.5. Multiplexarea timp n

Surs 1 a

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

Surs 3 a

Surs 1 a D C B A

Surs 2 a

Surs 3 a Z

N M

Y X

Destinatie 1 Destinatie 2 Destinatie 3


(a) Transmisie fr multiplexare a a

Destinatie 1 Destinatie 2 Destinatie 3


(b) Multiplexare cu etichetarea pachetelor

Surs 1 a

Surs 2 a Multiplexor D C Z B NY A MX Demultiplexor

Surs 3 a

Destinatie 1 Destinatie 2 Destinatie 3


(c) Multiplexare cu ordine x a canalelor a logice

Figura 4.11: Functionarea mecanismelor de multiplexare timp n

c 2008, Radu-Lucian Lupa s


119

Capitolul 5

Nivelul retea i nivelul transport s

Dac nite dispozitive, relativ numeroase sau a s ntinse pe distante mari, trebuie s poat comunica ecare cu ecare, este adesea prea costisitor s se a a a construiasc cte o legtur zic a a a a a ntre ecare dou dispozitive. Este necesar a acest caz s se poat stabili comunicatii n a a ntre dispozitive ntre care nu exist a o legtur zic direct dar exist legturi indirecte prin intermediul unui ir a a a a a a s de dispozitive legate zic ecare cu urmtorul. a O retea de comunicatie este un ansamblu de dispozitive care permit stabilirea de comunicatii indirecte. Intr-o retea de comunicatie numim: nod: orice dispozitiv ce particip activ retea. a n legtur direct: orice legtur a a a a a ntre noduri, utilizabil de ctre nivelul a a retea; dou noduri a ntre care exist o legtur direct se numesc vecini . a a a a nod nal sau statie (engl. host): un nod care este surs sau destinatie a pentru date; nod intermediar sau ruter (engl. router ): un nod ce poate tranzitat de trac ce nu are ca surs sau destinatie acel nod; uneori este numit, a n mod incorect, server. adres de retea sau, simplu, adres : un identicator (un ir de simboluri) a a s ce identic unic un nod al retelei. Fiecare nod terminal trebuie s aib a a a cel putin o adres; nodurile intermediare nu au a ntotdeauna adrese. drum sau rut : o secvent de noduri, ecare vecin cu urmtorul, a a a mpreun a cu legturile directe dintre ele. a Notm c unele retele exist o distinctie net a a n a a ntre nodurile nale i nodurile intermediare: de exemplu reteaua telefonic, aparatele telefonice s n a

c 2008, Radu-Lucian Lupa s


120 Capitolul 5. Nivelul retea i nivelul transport s

sunt noduri nale iar centralele telefonice sunt noduri intermediare. alte In retele, unele sau toate nodurile sunt simultan noduri nale i noduri interme s diare. Unei retele i se asociaz un graf, construit astfel: ecrui nod al a a retelei i se asociaz un vrf al grafului, iar ecrei legturi directe i se asociaz a a a a a o muchie (sau un arc, dac legturile sunt asimetrice). Reteaua trebuie s a a a e astfel construit at graful asociat ei s e conex (respectiv tare conex), a nc a altfel, evident, vor exista perechi de noduri ce nu vor putea comunica. Functia principal a nodurilor retelei este aceea de-a retransmite a datele, asigurnd continuitatea transportului lor de la nodul surs la nodul a a destinatie. Realizarea acestei functii va studiat 5.1. Pentru retrans a n miterea datelor spre destinatie, ecare nod trebuie s decid crui vecin s re a a a a transmit datele; problema lurii aceastei decizii se numete problema dirijrii a a s a nal, 5.3 vom studia problemele (engl. routing) i va studiat 5.2. In s a n n ce apar atunci cnd solicitarea retelei este ridicat (nu este neglijabil fat de a a a a capacitatea nodurilor i legturilor utilizate). s a

5.1. Retransmiterea datelor de ctre nodurile intera mediare


Vom studia cele ce urmeaz, pe scurt, activitatea nodurilor n a ntr-o retea. Problema determinrii urmtorului nod de pe drumul spre o anumit a a a destinatie (problema dirijrii) va studiat mai trziu, 5.2. a a a n Constructiv, ntr-un nod al unei retele trebuie s existe urmtoarele a a componente (vezi gura 5.1): Adaptarea spre legtura zic, pentru ecare legtur zic ce pleac din a a a a a a nod, este o component care realizeaz transmisia i receptia datelor a a s prin acea legtur. Aceasta este format din modulul nivelului legturii a a a a de date i din modulul nivelului zic. s Adaptarea spre aplicatie, pentru nodurile terminale, este o component ce a realizeaz intermedierea a ntre serviciile oferite direct de nivelul retea i s nevoile aplicatiilor ce se execut pe acel nod. Aceasta este, de principiu, a modulul nivelului transport. Modulul de retea este componenta care dirijeaz uxul de date prin nod, a ind responsabil de alegerea vecinului cruia trebuie s-i e transmise a a datele, precum i de transmiterea efectiv a acestora ctre modulul de s a a adaptare spre mediul zic ( nodurile intermediare) sau, respectiv, ctre n a modulul de adaptare spre aplicatie ( nodul destinatie). n

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 121

Nivelul retea este ansamblul modulelor de retea ale nodurilor retelei.


Nod nal Aplicatie Adaptare aplicatie Modul de retea Adaptare legatur a zic a Modulul de retea Adaptare Adaptare legatur legatur a a zic a zic a Nod intermediar Nod nal Aplicatie Adaptare aplicatie Modul de retea Adaptare legatur a zic a Nivelul aplicatie Nivelul transport Nivelul retea Nivelul legturii a de date i s nivelul zic

Legatur zic a a

Legatur zic a a

Figura 5.1: Modulele nodurilor unei retele. Sunt gurate doar modulele din trei noduri, de-a lungul traseului datelor ntre dou aplicatii. a

Un ansamblu de calculatoare constituie o retea dac i numai dac as a graful nodurilor i legturilor directe este conex (tare conex, dac legturile pot s a a a asimetrice), i plus modulele de retea ale tuturor nodurilor pot comunica s n printr-un protocol comun. lipsa unui protocol comun In ntre modulele de retea nu se poate sta bili comunicatia ntre oricare dou noduri nale a ntr-un mod uniform, fr ca aa aplicatia client s trebuiasc s aibe cunotinte despre nodurile intermediare. a a a s Din acest punct de vedere spunem c nivelul retea, i special protocolul a s n utilizat de nivelul retea, este liantul ntregii retele. Dup serviciul oferit, o retea poate cu datagrame (numite uneori a pachete) sau cu conexiune: datagrame: Intr-o retea ce ofer serviciu tip datagrame, aplicatia surs a a creaz o datagram continnd datele de transmis i o paseze modulului a a a s retea, specicnd totodat adresa nodului destinatie. Datagrama este a a transmis din aproape aproape pn la nodul destinatie, unde este a n a a pasat aplicatiei (vezi 5.1.1). De remarcat c dou datagrame distincte a a a generate de acelai nod surs i adresate aceluiai nod destinatie sunt s a s s prelucrate, de ctre retea, complet independent una de alta. Functionaa rea retelelor ce ofer servicii de tip datagrame este similar sistemului a a de pot (pota obinuit). sa s s a conexiune: Intr-o retea ce ofer serviciu de tip conexiune, o aplicatie a ce dorete s comunice cu o aplicatie dintr-un alt nod s a ncepe prin a so-

c 2008, Radu-Lucian Lupa s


122 5.1. Retransmiterea datelor de catre nodurile intermediare

licita modulului retea deschiderea unei conexiuni ctre acel nod. Nivelul a retea informeaz nodul destinatie despre cererea de deschidere a cone a xiunii i, dac aplicatia destinatie accept, conexiunea este deschis i s a a as nodul initiator este informat de acest lucru. Dup deschiderea cone a xiunii, unul sau ambele noduri ( functie de tipul conexiunii deschise, n unidirectional sau bidirectional) poate transmite celuilalt pachete de a a date prin conexiunea deschis. La terminarea comunicatiei, una dintre a aplicatii solicit nivelului retea a nchiderea conexiunii. Ca efect, nivelul retea informeaz nodul partener cu privire la a nchiderea conexiunii i s elibereaz resursele alocate conexiunii. Functionarea retelelor ce ofer a a serviciu de tip conexiune este descris 5.1.2. Un model tipic de retea a n ce ofer conexiuni este sistemul telefonic. a

5.1.1. Retransmiterea retele bazate pe datagrame n


Vom studia cele ce urmeaz activitatea unui nod n a ntr-o retea ce ofer transport de datagrame. a O datagram este format dintr-un antet i datele utile. Antetul a s cuprinde mai multe informatii utile vederea dirijrii. Informatia ce nu n a poate lipsi din antet este adresa destinatarului. Modulul de retea al nodului primete o datagram e de la nivelul s a superior (dinspre aplicatie), e de la nivelul inferior (de pe o legtur direct). a a a Modulul de retea memoreaz temporar datagrama primit. continuare, el a a In are de fcut dou lucruri: a a s determine dac datagrama este destinat nodului curent, iar dac nu, a a a a care este urmtorul vecin direct pe ruta spre destinatie; a s initieze efectiv transmisia datagramei. a Dac legtura prin care trebuie trimis datagrama este a ocupat cu transa a a nc a miterea unei datagrame anterioare, datagrama trebuie pus ntr-o coad de a ateptare. Se poate ampla ca memoria utilizabil pentru coada de ateptare s nt a s s se epuizeze, caz care este necesar sacricarea unora dintre datagramele a n a din coad sau refuzul primirii unor datagrame noi. Detalii cu privire la opera area retelei acest caz sunt date 5.3. n n

5.1.2. Retransmiterea retele bazate pe conexiuni n


Intr-o retea bazat pe conexiuni, activitatea este artit dou a mp a n a sarcini: stabilirea i desfacerea conexiunilor, pe de o parte, i transmiterea s s efectiv a datelor pe conexiuni, pe de alt parte. a a Deschiderea conexiunii ncepe print trimiterea, de ctre nodul termia nal ce dorete initierea conexiunii, a unei cereri ctre primul nod intermediar. s a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 123

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

Y A

B Figura 5.2: O retea cu comutare de circuite zice. Cercurile mari reprezint nodurile a intermediare, iar liniile punctate reprezint interconectrile mediilor zice. De remara a cat necesitatea mai multor legturi zice a ntre cte dou noduri. a a

Comutare de circuite virtuale: Fiecare pachet ce sosete printr-o legtur s a a de date este memorat temporar i apoi retransmis prin legtura spre s a urmtorul nod. a S remarcm c, ambele cazuri, o legtur a a a n a a ntre dou noduri este a

c 2008, Radu-Lucian Lupa s


124 5.1. Retransmiterea datelor de catre nodurile intermediare

asociat unei singure conexiuni; dou conexiuni nu pot utiliza (direct) o aceeai a a s legtur. (Din acest motiv, sistemul telefonic vechi, a a n ntre dou centrale a telefonice erau duse paralel mai multe perechi de conductoare, numrul de n a convorbiri simultane utiliznd o rut trecnd prin cele dou centrale ind lima a a a itat la numrul de perechi de conductoare.) Deoarece, special pe distante a n mari, mediul zic este scump, se utilizeaz mecanisme de multiplexare. Acesa tea pot lucra e la nivel zic (multiplexare frecvent 3.3.3 sau n a n lungimea de und 3.6.2.3), e la nivelul legturii de date (multiplexare a a n timp, 4.5). Mai remarcm c multiplexarea timp poate utilizat doar a a n a sistemele cu comutare de circuite virtuale. n La utilizarea comutrii de circuite virtuale a mpreun cu multiplexarea a timp, un nod care a primit un pachet trebuie s-l memoreze pn cnd n a a a a i vine rndul s e transmis mai departe prin legtura de ieire, adic pn a a a s a a a cnd, legtura zic de ieire, vine rndul la transmisie canalului logic prin a n a a s a care trebuie trimis pachetul.
X A B C XZ ZY C XY Y A

B Figura 5.3: O retea cu comutare de circuite virtuale. Desfurarea timp a receptiei as n i transmitere mai departe a pachetelor, pentru nodul X, este prezentat gura 5.4. s a n Legturile directe a ntre nodurile intermediare utilizeaz multiplexare timp. a n

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

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 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: Desfurarea timp a receptiei i a transmiterii mai departe a paas n s chetelor, pentru nodul X din reteaua din gura 5.3. XY i XZ desemneaz legturile s a a zice ntre nodurile X i Y , respectiv X i Z. Numerele de sub axe marcheaz pes s a rioadele de timp alocate canalelor logice corespunztoare. Legturile dintre canalele a a virtuale de intrare i de ieire sunt identice cu legturile zice din gura 5.2 s s a

de datagrame. Diferenta vine din felul care un nod, care primete un pachet n s i trebuie s-l trimit mai departe, ia decizia privind legtura prin care s-l s a a a a trimit. cazul comutrii de circuite virtuale, decizia este luat functie a In a a n de circuitul virtual cruia apartine pachetul, informatie dedus din legtura a i a a de date prin care a intrat pachetul. Decizia se ia pe baza tabelei de circuite i este identic pentru toate pachetele apartinnd aceluiai circuit. O urmare s a a s a acestui fapt este c defectarea oricrui nod sau oricrei legturi de-a lungul a a a a unei conexiuni duce la nchiderea fortat a conexiunii. cazul retelei bazate a In pe datagrame, decizia de dirijare se ia functie de adresa destinatie, continut n a datagram. Dou datagrame n a a ntre aceleai dou statii pot dirijate pe rute s a diferite.

5.2. Algoritmi de dirijare


Ne vom ocupa continuare de modul care un nod decide spre care n n dintre vecini s trimit o datagram ( cazul retelelor bazate pe datagrame), a a a n respectiv spre care dintre vecini s transmit cererea de initiere a unei conea a xiuni ( cazul retelelor bazate pe conexiuni). Problema determinrii acestui n a nod vecin se numete problema dirijrii. s a

c 2008, Radu-Lucian Lupa s


126 5.2. Algoritmi de dirijare

Rezolvarea problemei dirijrii se bazeaz pe determinarea unui drum a a de cost minim, de la nodul surs la nodul destinatie al datagramei sau al a conexiunii, graful asociat retelei de calculatoare. n Graful asociat retelei de calculatoare este un graf ce are cte un vrf a a asociat ecrui nod al retelei i cte o muchie asociat ecrei legturi directe a s a a a a ntre dou noduri. Fiecrei muchii i se asociaz un cost, existnd urmtoarele a a a a a posibiliti pentru denirea costului: at toate costurile egale; functie de lungimea zic a legturii (cu ct o legtur este mai lung, n a a a a a a cu att costul asociat este mai mare); a functie de capacitatea legturii; n a functie de arcarea legturii. n nc a Remintim, din teoria grafelor, o proprietate important a drumurilor a de cost minim: Dac v0 , v1 , . . . , vj1 , vj , vj+1 , . . . , vk este un drum de cost a minim de la v0 la vk , atunci v0 , v1 , . . . , vj1 , vj este un drum de cost minim de la v0 la vj i vj , vj+1 , . . . , vk este un drum de cost minim de la vj la vk . s De asemenea, dac exist cel putin un drum de cost minim de la v0 la vk a a ce trece prin vj , dac v0 , v1 , . . . , vj1 , vj este un drum de cost minim de la a v0 la vj i vj , vj+1 , . . . , vk este un drum de cost minim de la vj la vk , atunci s v0 , v1 , . . . , vj1 , vj , vj+1 , . . . , vk este drum de cost minim de la v0 la vk . Aceast a proprietate st la baza algoritmilor de determinare a drumului minim a ntr-un graf. consecint, dac un pachet de la un nod v0 spre un nod vk ajunge In a a la un nod vj , nodul urmtor, dup vj , de pe drumul de cost minim de la v0 spre a a vk depinde doar de vk , nu i de v0 . Ca urmare, pentru a efectua retransmiterea s datelor, ecare nod vj trebuie s cunoasc doar, pentru ecare destinatie a a posibil vk , urmtorul vrf vj+1 de pe drumul optim spre acea destinatie. a a a Corespondenta, pentru ecare vj , ntre destinatia vk i nodul urmtor vj+1 s a poart denumirea de tabel de dirijare. a a Pentru a putea aplica direct un algoritm clasic de determinare a drumurilor de cost minim, este necesar centralizarea datelor despre nodurile i a s legturile din retea, vederea obtinerii efective a grafului retelei. Dup cala n a culul drumurilor, este necesar distribuirea tabelelor de dirijare ctre toate a a nodurile retelei. Intr-o retea mic, centralizarea informatiilor despre legturi i apoi a a s distribuirea informatiilor de dirijare ctre noduri se poate face manual, de a ctre administratorul retelei. a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 127

retelele mai mari, acest proces trebuie automatizat (total sau In partial). Deoarece nu este de dorit oprirea complet a retelei oridecteori a a se modic vreo legtur, trebuie luate msuri ca timpul scurs de la modia a a a carea legturilor pn la actualizarea a regulilor de dirijare pe toate nodurile a a a s e scurt i functionarea retelei acest timp s e acceptabil. Metodele a s n a a principale de calcul pentru tabelele de dirijare sunt descrise 5.2.1 i 5.2.2. n s retelele foarte mari, cum ar Internet-ul, centralizarea complet a In a datelor nu este rezonabil; trebuie utilizati algoritmi de dirijare care s permit a a a ecrui nod efectuarea dirijrii fr a necesita dect putine informatii i doar a a aa a s despre o mic parte a retelei. De asemenea, tabela de dirijare trebuie s aib a a a o reprezentare mai compact dect cte un rnd pentru ecare nod destinatie a a a a posibil. astfel de cazuri se utilizeaz dirijarea ierarhic ( 5.2.3). In a a Exist i metode ad-hoc de dirijare, utilizate diverse situatii mai as n deosebite, de exemplu dac graful asociat retelei de calculatoare are anumite a particulariti. Acestea vor studiate 5.2.4. at n

5.2.1. Calculul drumurilor cu informatii complete despre graful retelei


cadrul acestei metode, ecare nod al retelei adun toate informaIn a iile despre graful asociat retelei, dup care calculeaz drumurile de la el la t a a toate celelalte noduri. Pentru ca ecare nod s dispun permanent de graful asociat a a n a retelei de calculatoare, ecare modicare a retelei trebuie anuntat tuturor a nodurilor. Pentru aceasta, ecare nod testeaz periodic legturile cu vecinii si a a a i, oridecteori constat o modicare, transmite o stiintare toat reteaua. s a a n n a Transmisia informatiei respective se face astfel: Fiecare nod creaz, periodic, un pachet ce contine numele nodului, starea a legturilor cu vecinii (costurile actuale ale legturilor), precum i un a a s numr de secvent (numr care tot crete de la un astfel de pachet la a a a s urmtorul). Apoi transmite acest pachet tuturor vecinilor, printr-un a protocol sigur (cu conrmare i retransmitere). s Fiecare nod ce primete un pachet descriind starea legturilor veric s a a dac este sau nu mai recent (adic cu numr de secvent mai mare) a a a a dect ultimul astfel de pachet primit de la acel nod. Dac este mai a a recent, trimite tuturor vecinilor (mai putin celui dinspre care a venit l pachetul) i actualizeaz reprezentarea proprie a grafului retelei. Dac s a a pachetul este mai vechi, nseamn c este o copie ce a sosit pe alt cale a a a i este ignorat. s

c 2008, Radu-Lucian Lupa s


128 5.2. Algoritmi de dirijare

Calculul drumurilor de cost minim de la un vrf la toate celelalte este a o problem clasic teoria grafelor. Dac toate costurile sunt pozitive a a n a conditie ndeplinit de graful asociat unei retele de calculatoare algoritmul a cel mai ecient este algoritmul lui Dijkstra (algoritmul 5.1). Notnd cu n a numrul de vrfuri (noduri ale retelei) i cu m numrul de muchii (legturi a a s a a directe), complexitatea algoritmului lui Dijkstra este timp O(m + n log n) i s spatiu O(m + n). Calculul trebuie refcut complet la ecare modicare a a grafului asociat retelei de calculatoare.

5.2.2. Calculul drumurilor optime prin schimb de informatii de distant a


Aceast metod (vezi algoritmul 5.2) este inspirat din algoritmul a a a Bellman-Ford de determinare a drumurilor de cost minim ntr-un graf, a ns calculele sunt repartizate ntre nodurile retelei de calculatoare aa fel at n s nc nici un nod s nu aib nevoie de informatii complete despre graf. Metoda se a a numete cu vectori distanta deoarece prevede transmiterea, de la ecare nod s la vecinii si directi, a unor vectori reprezentnd distantele de la nodul curent a a la toate celelalte noduri. Algoritmul prevede c ecare nod detine o tabel continnd, pentru a a a ecare destinatie posibil, distanta pn la ea i primul nod de pe drumul a a a s optim spre acea destinatie. Initial, tabelul este initializat astfel: pentru vecinii directi, costul drumului este pus ca ind costul legturii directe spre acel nod, a iar primul nod spre acea destinatie este xat chiar acel nod; pentru nodurile ce nu sunt vecini directi, costul este initializat cu innit. Dup initializare, nodurile recalculeaz periodic tabelele de distante. a a Pentru ecare nod, calculul se face astfel: mai ai, nodul cere vecinilor nt directi tabelele acestora. Apoi, pentru ecare destinatie posibil, drumul op a tim este calculat ca ind cel mai putin costisitor dintre legtura direct i a a s drumurile prin ecare dintre vecinii directi. Costul drumului printr-un vecin direct este calculat ca ind costul legturii dintre nodul curent i vecinul cona s siderat adunat cu costul, conform tabelei vecinului, al drumului de la vecinul respectiv la nodul destinatie. De remarcat c, calculul tabelei de distante a a n unui nod, nu se utilizeaz deloc tabela de distante a acelui nod de la iteratia a precedent. a Dup cteva iteratii ale buclei principale, algoritmul se stabilizeaz a a a (converge), sensul c tabelele calculate la ecare iteratie sunt identice cu n a cele calculate la iteratia precedent. Numrul de iteratii pn la stabilizare a a a a este egal cu numrul cel mai mare de muchii de-a lungul vreunui drum optim. a Dup stabilizare, algoritmul este lsat continuare s se execute a a n a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 129

Algoritmul Dijkstra intrarea: G = (V, E) graf orientat (E V V ) c : E [0, ) costurile asociate arcelor x0 V vrful curent a ieirea: t : V {(x0 , y) E} tabela de dirijare; t(x) este legtura direct prin s a a care x0 trebuie s trimit pachetele destinate lui x. a a algoritmul: pentru i V execut a d[i]: = sfrit pentru as d[x0 ]: = 0 Q: = V ct timp Q = execut a 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 d[v] + c(v, y) < d[y] atunci a d[y]: = d[v] + c(v, y) dac v = x0 atunci a t(y): = (x0 , y) altfel t(y): = t(v) sfrit dac as a sfrit dac as a Q: = Q {y} sfrit pentru as sfrit ct timp as a sfrit algoritm as
Algoritmul 5.1: Algoritmul lui Dijkstra cu adugirea pentru calculul tabelei de a dirijare.

c 2008, Radu-Lucian Lupa s


130 5.2. Algoritmi de dirijare

Algoritmul Vector dist intrarea: V multimea de noduri a retelei; x nodul curent; N out (i) multimea vecinilor directi ai lui i; (ci,j )i,jV costurile legturilor directe; ci,j = dac i N out (i); ecare a a nod x cunoate doar (cx,j )jV . s ieirea: (di,j )i,jV costurile drumurilor optime; ecare nod va calcula doar s (dx,j )jV ; (pi,j )i,jV primul nod, dup i, pe drumul optim de la i la j. a algoritmul: pentru i V execut a dx,i :=cx,i sfrit pentru as ct timp adevrat execut a a a obtine de la vecinii directi 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 obtinut minimul sfrit pentru as sfrit ct timp as a sfrit algoritm as
Algoritmul 5.2: Algoritmul de dirijare cu vectori distant a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 131

pentru ca, dac ulterior se modic legturile directe, s actualizeze cona a a a n tinuare tabelele de dirijare. Dealtfel, este destul de dicil de determinat, n interiorul algoritmului, momentul care s-a produs stabilizarea. Dac apare n a o legtur direct nou sau dac scade costul unei legturi directe existente, a a a a a a tabelele de dirijare se stabilizeaz din nou dup un numr de iteratii cel mult a a a egal cu numrul maxim de muchii de-a lungul unui drum optim. Dac se a a elimin o legtur direct sau crete costul unei legturi directe, tabelele de a a a a s a dirijare se stabilizeaz mult mai a ncet, aa cum se vede exemplul 5.2. s n
A 2 B 21 20 D 3 5 C

Figura 5.5: Reteaua pentru exemplele 5.1 i 5.2. Numerele reprezint costurile s a asociate legturilor directe. a

Exemplul 5.1: Fie reteaua din gura 5.5. Calculul tabelelor de dirijare, con form algoritmului 5.2, de la initializare pn la stabilizare, duce la urmtoarele a a a tabele: Initializarea: aceast faz, sunt luate considerare doar legturile In a a n a directe; dac un nod nu este accesibil direct, ruta pn la acesta este a a a marcat ca avnd cost innit. a a 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 Iteratia 1: Pentru ecare destinatie posibil, se ia considerare legtura a n a direct (dac exist) i rutele prin ecare din vecinii directi. Costul a a a s legturii directe este cunoscut, iar costul rutei printr-un vecin este costul a legturii spre acel vecin plus costul raportat de acel vecin. De exemplu, a nodul B ia considerare ca rute spre D: legtura direct de cost 20, n a a

c 2008, Radu-Lucian Lupa s


132 5.2. Algoritmi de dirijare

legtura prin A de cost 2+21=23 i legtura prin C de cost 5+3=8; cea a s a mai bun este cea prin C. Ca alt exemplu, nodul A are urmtoarele rute a a spre D: legtura direct de cost 21 i legtura prin B de cost 2+20=22; a a s a de notat c pentru legtura prin B se ia costul BD raportat de B, a a calculat de ctre B la initializare. a 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 Iteratia 2: S urmrim ruta calculat de A ctre D. Sunt luate con a a a a n siderare legtura direct de cost 21 i legtura prin B a crui cost este a a s a a acum 2+8=10 ntruct se bazeaz pe costul legturii BD calculat de a a a ctre B la iteratia 1. a 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 Incepnd cu iteratia 3, tabelele calculate sunt identice cu cele de la itaretia a 2. Exemplul 5.2: Fie reteaua din gura 5.5 i e tabelele de dirijare rezultate s dup stabilizarea algoritmului cu vectori distant (vezi exemplul 5.1). S prea a a supunem c legtura BC cade, rezultnd reteaua din gura 5.6. S urmrim a a a a a evolutia, continuare, a tabelelor de dirijare. n La prima iteratie, la recalcularea rutelor nodului B spre C i spre D, s nodul B ia calcul rute prin A sau prin D. Rutele optime gsite sunt cele n a prin A, bazate pe vechile tabele ale lui A; nodul B nu are cum s determine a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s A 2 B 21 20 D 3 C 133

Figura 5.6: Reteaua rezultat prin cderea legturii BC din reteaua din gura 5.6. a a a

c aceste rute nu mai sunt valide deoarece se bazau pe legtura BC. La fel a a procedeaz i nodul C, gsind c rutele optime spre A i B trec prin D. as a a s 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 urmtoarea iteratie se vor modica costurile rutelor din A spre C a i D i din D spre A i B: s s s 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

continuare, costurile aparente ale rutelor cresc de la o iteratie la In alta, pn cnd ajung la valorile rutelor reale optime. La a 3-a iteratie de la a a a cderea legturii BC, tabelele ajung forma urmtoare: a a n a

c 2008, Radu-Lucian Lupa s


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, la a 4-a iteratie, descoperirea de ctre D a rutelor reale a a spre A i spre B: s 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 i mai trziu, stabilizarea tabelelor s a survenind abia la a 8-a iteratie. Nodul dest. B C D Nodul dest. A B C general, numrul de iteratii dup care se stabilizeaz tabelele dup In a a a a cderea sau creterea costului unei legturi poate cel mult egal cu raportul a s a dintre cea mai mare cretere de cost s ntre dou noduri i cel mai mic cost al a s cazul exemplului 5.2, costul drumului optim de la B unei legturi directe. In a la C crete, prin cderea legturii directe BC, de la 5 la 23, o cretere de s a a s 18 uniti. Costul cel mai mic al unei legturi directe este 2 (legtura AB). at a a In Ca urmare, stabilizarea tabelelor poate lua cel mult 18 = 9 iteratii. cazul 2 care cderea unei legturi duce la deconectarea retelei, acest lucru nu va n a a detectat niciodat, numrul de iteratii necesar ind innit. a a Pentru a mbunti comportamentul cazul cderii sau creterii a at n a s costului legturilor, se poate modica algoritmul astfel: tabelele vor ine ruta a t complet spre destinatie, iar la recalcularea rutelor, rutele ce trec de dou ori a a prin acelai nod nu sunt luate considerare. s n Exemplul 5.3: S relum reteaua din exemplul 5.2, cu memorarea a a ntregului

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 135

drum tabela de distante. Dup stabilizarea tabelelor pe reteaua din gura 5.5, n a se obtin urmtoarele tabele: a 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 cderea legturii BC (g. 5.6), evolutia tabelelor de dirijare a a a are loc dup cum urmeaz: a a Iteratia 1: S considerm drumurile posibile de la nodul B spre nodul C. a a Legtur direct nu exist. Drumul prin A a a a a ncepe cu muchia AB i cons tinu cu ruta din tabela, de la iteratia anterioar, a lui A, adic drumul a a a ABC. Prin urmare, drumul prin A este BABC i este respins datorit s a repetrii vrfului B. De mentionat c nu se face vreo vericare urma a a a n creia s se observe c drumul BABC contine muchia inexistent BC; a a a a din lipsa unor informatii 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 optim de la B la C. a a Analog, calculul rutei de la B la D, ruta prin A, anume BABCD, n este respins i, ca urmare, rmne s e aleas doar legtura direct a s a a a a a a BD. La calculul rutei de la C la A, ar exista o singur posibilitate, prin a nodul D, a aceasta conduce la drumul CDCBA care este respins din ns cauza repetrii nodului C. Ca urmare, nodul C marcheaz lipsa rutei a a punnd costul . Analog, se determin inexistenta vreunei rute valide a a 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 Lupa s


136 5.2. Algoritmi de dirijare

Nodul D: dest. ruta cost A C,B,A 10 B C,B 8 C C 3 Iteratia 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 Iteratia 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 se aplic cu precdere retelele foarte mari, unde a a a n este imposibil ca ecare nod s aib informatii despre toate celelalte noduri. a a Exemple clasice de astfel de retele sunt Internet-ul i reteaua telefonic. s a Ideea dirijrii ierarhice este ca reteaua s e artit subretele. a a mp a n Subretelele alctuiesc o ierarhie arborescent: o subretea rdcin (considerat a a a a a a pe nivelul 0), cteva subretele subordonate ei (nivelul 1), subretele subordoa nate cte unei subretele de pe nivelul 1 (alctuind nivelul 2), . a. m. d. Fiecare a a s nod are informatii de dirijare: ctre nodurile din subreteaua proprie, individual pentru ecare nod; a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 137

ctre subreteaua imediat superioar ierarhic: o singur rut, comun, a a a a a pentru toate nodurile din acea subretea, ruta conducnd spre cel mai a apropiat ctre ecare din subretelele imediat inferioare ierarhic, cte o rut pentru a a a ecare subretea. Ruta de la un nod initial ctre o subretea vecin subretelei nodului initial este a a ruta de la nodul initial ctre cel mai apropiat nod de la granita dintre cele a dou subretele. a Fiecare subretea este sucient de mic, astfel at, interiorul a nc n ecrei subretele, calculul rutelor se face prin metode de dirijare ,,obinuite. a s Pentru ca orice nod s poat determina din ce subretea face parte a a nodul destinatie a unui pachet, precum i localizarea subretelei respective s n ierarhie, adresa ecrui nod este astfel construit at s descrie pozitia nodua a nc a lui ierarhia de retele. Astfel, adresele sunt formate din componente, prima n component identicnd subreteaua de nivel 1 din care face parte sau creia a a a i este subordonat nodul, urmnd identicatorul subretelei de nivel 2, . a. m. d., a s ncheind cu identicatorul nodului cadrul subretelei din care face parte. n De remarcat c, general, dirijarea ierarhic nu conduce la drumul a n a optim ctre destinatie. Aceasta deoarece dirijarea ierarhic se caut optimul a n a a local ecare subretea i, ca urmare, este posibil s se rateze optimul global n s a (a se vedea exemplul 5.4). Exemplul 5.4: gura 5.7 este reprezentat o retea cu dirijare ierarhic pe In a a dou nivele. Reteaua este format dintr-o subretea rdcin i patru subretele a a a a as subordonate ei. Adresa ecrui nod este format din dou componente, prima idena a a ticnd subreteaua de nivel 1 din care face parte i a doua identicnd nodul a s a cadrul subretelei respective. n S presupunem c nodul 1.1 are de trimis un pachet ctre nodul 3.4. a a a Dirijarea decurge astfel: Nodul 1.1 determin c destinatia 3.4 face parte din alt subretea dect a a a a el si; ca urmare, caut drumul spre cel mai apropiat nod ce are nsu a legtur cu reteaua ierarhic superioar. Nodul acesta este 1.2. a a a Nodul 1.2 caut drumul spre cel mai apropiat nod din subreteaua 3. a Nodul gsit este 3.1 i drumul pn la el este 1.2, 2.3, 3.1 (echivalent, se a s a a poate lua drumul 1.2, 2.1, 3.1). Nodul 3.1 trimite pachetul spre destinatia 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 observm c drumul pe care urmeaz pachetul, 1.1, 1.2, 2.3, 3.1, 3.2, 3.3, a a a l a

c 2008, Radu-Lucian Lupa s


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 reteaua. Subretelele de pe nivelul 1 sunt a ncercuite cu linie punctat. a

1.3 1.2 2.3 3.3 2.1 3.1 4.1

(b) Reprezentarea (micorat) s a doar a subretelei rdcin. a a a

Figura 5.7: O retea cu dirijare ierarhic pe dou nivele. Reteaua de pe nivelul a a rdcin are nodurile reprezentate prin cercuri pline (mici) i legturile reprezentate a a a s a cu linii ngroate. s

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 139

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

5.2.4. Metode particulare de dirijare


5.2.4.1. Inundarea Inundarea este o metod aplicabil retele bazate pe datagrame. a a n Inundarea const a trimite cpii ale unei datagrame prin toate legturile a n o a directe, cu exceptia celei prin care a intrat datagrama. Inundarea garanteaz c, dac destinatia este accesibil i nodurile nu a a a as sunt prea arcate (astfel at s se sacrice datagrame din lips de spatiu de nc nc a a memorare), datagrama ajunge la destinatie. Ca avantaj fat de alte metode, a inundarea nu necesit ca nodurile s adune nici un fel de informatie despre a a retea. Pe de alt parte, inundarea face ca ecare datagram s ajung la a a a a ecare nod al retelei, nu doar la destinatarul dorit. Ca urmare, la ecare nod ajung toate pachetele care circul prin retea. La un numr de noduri mai a a mare de cteva zeci, metoda inundrii genereaz prea mult trac pentru a a a a general acceptabil. n a Dac graful retelei este un arbore, atunci, considernd nodul surs a a a a datagramei ca rdcin, copiile datagramei circul arbore de la ecare nod a a a a n la i si; transmisia se oprete la frunze. De notat a c o retea al crei graf a s ns a a ataat este un arbore este extrem de vulnerabil la pene: defectarea oricrui s a a nod intern duce la deconectarea retelei. Dac a graful retelei contine cicluri, atunci o datagram, o dat a ns a a ajuns a ntr-un ciclu, cicleaz la innit. Pentru ca inundarea s e utilizabil a a a n retele cu cicluri, trebuie fcut o modicare pentru prevenirea ciclrii innite. a a a O posibil solutie utilizat i pentru alte metode de dirijare este a as aceea de-a asocia ecrei datagrame un contor de salturi care marcheaz prin a a cte noduri a trecut datagrama. La atingerea unei anumite valori prestabilite, a datagrama nu mai este trimis mai departe. Cu aceast modicare, inundarea a a transmite datagramele pe toate drumurile (nu neaprat simple) de la sursa a datagramei i de lungime dat. s a O alt solutie, cu avantajul suplimentar c asigur ca ecare pachet a a a s ajung a a ntr-un singur exemplar la destinatie, este ca ecare nod al retelei s a identice (de exemplu, prin mentinerea unor numere de secvent) duplicatele a unui pachet i s trimit mai departe un pachet doar la prima lui sosire. s a a Inundarea se utilizeaz retelele Ethernet. Graful unei retelele Etha n ernet trebuie s e a ntotdeauna un arbore.

c 2008, Radu-Lucian Lupa s


140 5.2. Algoritmi de dirijare

5.2.4.2. aarea rutelor din adresele surs ale pachetelor Invt a O metod simpl de constructie a tabelelor de dirijare este ca, la a a primirea unui pachet de la un nod surs S dinspre un nod vecin V , s se a a introduc sau s se actualizeze tabela de dirijare regula pentru destinatia a a n S prevznd ca urmtor nod pe V . Regulile astfel introduse trebuie s aib a a a a a valabilitate limitat timp altfel apar probleme la modicarea legturilor a n a din retea. De asemenea, mai trebuie un mecanism pentru dirijarea pachetelor pentru care a nu exist reguli de dirijare de exemplu, se poate folosi nc a inundarea. Metoda este utilizat retelele Ethernet. a n

5.2.5. Metode de difuziune


Ne vom ocupa continuare de metodele de dirijare aplicabile vedn n erea trimiterii cpiilor unei datagrame spre mai multe destinatii. Distingem o dou posibile cerinte, difuziune complet (engl. broadcast) trimiterea spre a a toate nodurile unei retele i difuziune selectiv (engl. multicast) trim s a iterea datagramei spre o submultime dat a multimii nodurilor. a Desigur, ntotdeauna este posibil difuzarea prin transmiterea sepaa rat a unei datagrame spre ecare nod. O astfel de metod este a neecoa a ns nomic. a O posibilitate simpl de realizare a difuziunii complete este inuna darea. ( 5.2.4.1). O alt posibilitate este s se construiasc ai un arbore partial a a a nt (preferabil de cost minim) de acoperire a vrfurilor destinatie, iar apoi s se a a aplice metoda inundrii acest arbore. Aceast metod este utilizabil att a n a a a a pentru difuzare complet ct i pentru difuzare partial. Datorit necesitii a a s a a at calculului arborelui partial, este favorabil cazul care trebuie trimise a n n multe datagrame aceleiai multimi de destinatari. s Descriem i o a treia posibilitate, util special situatia care s a n n n destinatarii sunt putini i nu se trimit multe datagrame aceleiai multimi de s s destinatari. Metoda const a trimite datagram multimea adreselor a n n a destinatie. Fiecare nod determin legtura de ieire pentru ecare destinatie a a s din lista din datagram. Apoi trimite cte o datagram pe ecare legtur a a a a a direct ce apare pe ruta spre cel putin una dintre destinatii. Datagrama trimis a a prin ecare legtur direct va avea lista de destinatii doar acele noduri ctre a a a n a care ruta trece prin acea legtur direct. Intuitiv, metoda ar putea privit a a a a astfel: se trimite cte o datagram ctre ecare nod destinatie, a, ct timp a a a ns a drumul a dou sau mai multe datagrame este comun, datagramele cltoresc a aa reunite ntr-o singur datagram cu mai multe adrese destinatie. a a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 141

5.3. Functionarea la trac ridicat


Pn aici am studiat comportamentul unei retele doar pentru cazul a a n care debitul uxului de date care intr a ntr-un nod nu depete niciodat nici as s a capacitatea legturilor prin care trebuie trimis mai departe, nici capacitatea a modulului de retea de-a efectua prelucrrile necesare. Dac debitul cu care a a intr pachete a ntr-un nod depete e capacitatea de prelucrare a nodului, as s e capacitatea legturii prin care pachetele trebuie s ias, nodul memoreaz a a a a pachetele ntr-o structur de coad, de unde le extrage pe msur ce pot a a a a transmise prin legtura de ieire. Un efect imediat este creterea timpului a s s de propagare, din cauza stationrii pachetelor coada de ateptare. Dac a n s a excesul de debit de intrare se pstreaz mai mult timp, coada crete pn cnd a a s a a a memoria alocabil cozii de ateptare este epuizat; acel moment, nodul va a s a n trebui e s sacrice pachete, e s solicite, prin intermediul mecanismului a a de control al uxului de la nivelul legturii de date, micorarea debitului de a s intrare. De notat c reducerea i, extremis, blocarea uxului de date la a s n intrarea ntr-un nod poate duce la acumularea de date de transmis nodului n vecin dinspre care vine acel ux, ducnd mai departe la blocarea reciproc a a a unui grup de noduri. Principalele probleme ce apar cazul care capacitatea nodurilor n n sau legturilor directe este depit sunt urmtoarele: a as a a Intr-o retea aglomerat, pachetele sau datagramele arzie mult sau chiar a nt se pierd, lucru care poate declana retrimiteri intempestive de pachete, s ducnd la aglomerare i mai mare a retelei i la performante i mai a s s s sczute. O astfel de situatie, de degradare suplimentar a performantelor a a urma creterii arcrii, se numete congestie i trebuie evitat sau, n s nc a s s a cel putin, inut sub control. t a Capacitatea disponibil a retelei trebuie artit mod echitabil a mp a n ntre utilzatori. Diferite aplicatii au diferite prioriti cu privire la caracteristicile necesare at ale serviciului oferit de retea. Reactia unei retele aglomerate trebuie s a in cont de aceste prioriti. De exemplu, un nod supraaglomerat poate t a at s e nevoit s arunce o parte dintre datagramele aate tranzit. Dac a a n a datagramele apartin unei aplicatii de transfer de iere, este preferabil s s e aruncate cele mai recente (acestea ind retransmise mai trziu; a a dac se arunc datagramele mai vechi, este posibil ca destinatarul s nu a a a aib ce face cu cele mai noi i s trebuiasc retransmise toate). Dima s a a potriv, dac datagramele apartin unei aplicatii de tip videoconferint, a a a

c 2008, Radu-Lucian Lupa s


142 5.3. Functionarea la trafic ridicat

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

5.3.1. Alegerea pachetelor de transmis


Considerm un ruter ale crui linii de ieire sunt utilizate la maximul a a s capacitii. Vom analiza continuare modul care el poate alege, dintre at n n pachetele primite, care va urmtorul pachet pe care s-l retransmit. a a a O posibilitate simpl este de a mentine o singur coad i de a accepta a a as un pachet proaspt sosit dac are loc coad i de a-l distruge dac nu are a a n as a loc. Atunci cnd debitul de intrare este mare, solutia duce la a accepta primul a pachet ce sosete dup eliberarea unei pozitii coad. Ca urmare, un emittor s a n a a care produce multe pachete este avantajat fat de un emittor care produce a a putine pachete. O distribuire mai echitabil a capacitii este de-a construi cte o a at a coad pentru ecare nod surs, legtur de intrare sau cicruit virtual. Nodul a a a a extrage, vederea retransmiterii, pe rnd, cte un pachet din ecare coad. n a a a acest fel, ecare surs ecare linie de intrare sau, dup caz, circuit virtual In a a obtine trimiterea aceluiai numr de pachete unitatea de timp. Metoda se s a n numete ateptare echitabil (engl. fair queueing). s s a O variant a metodei anterioare este de a oferi ecrei intrri nu a a a un numr egal de pachete preluate ci un numr egal de biti preluati. Pentru a a aceasta, se poate asocia ecrei cozi numrul total de biti ai pachetelor preluate a a din acea coad i retransmise mai departe. De ecare dat nodul intermediar as a extrage urmtorul pachet din coada cu cel mai mic numr de biti transmii. a a s Pe lng posibilitatea de a oferi intrrilor transmiterea aceluiai nua a a s mr de biti sau de pachete, se poate oferi numere de biti sau pachete transmise a proportionale cu anumite valori. De exemplu, se poate oferi unei legturi mai a importante, dinspre un grup mai mare de calculatoare, un numr dublu de a biti preluati i retransmii fat de o legtur secundar. Metoda se numete s s a a a a s ateptare echitabil ponderat (engl. weighted fair queueing). s a a afar de metodele de ateptare echitabil eventual, In a s a mpreun cu a ele se poate pune aplicare i un sistem de prioriti. Astfel, ecrui pachet n s at a i se poate asocia un nivel de prioritate: pachetele pentru aplicatii timp real n i pachetelor asociate sesiunilor interactive li se asociaz nivele de prioritate s a mai ridicate, iar aplicatiilor care transfer iere mari li se asociaz nivele de a s a prioritate cobort. a a Intr-un ruter, ecrui nivel de prioritate i se asociaz o a a coad separat, cu spatiu de memorare rezervat. Atunci cnd linia de ieire a a a s este liber i ruterul trebuie s decid care este urmtorul pachet, examineaz as a a a a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 143

cozile ordine descresctoare a nivelelor de prioritate pn gsete o coad n a a a a s a nevid. Pachetul urmtor ce va transmis este extras din prima coad nevid. a a a a Dac metoda prioritilor este combinat cu ateptarea echitabil, a at a s a ecrui nivel i se asociaz un set de cozi, interiorul setului functionnd a a n a regulile de la ateptarea echitabil. Urmtorul pachet trimis este extras din s a a setul de cozi cel mai prioritar care exist cel putin o coad nevid. n a a a

5.3.2. Controlul congestiei


Prin congestie se elege scderea debitului tracului util retea nt a n n situatia care cererea de trac printr-o legtur sau printr-un nod depete n a a as s capacitatea acesteia. Scderea debitului util, opozitie cu limitarea tracului a n la capacitatea legturii sau nodului respectiv, este datorat unei functionri a a a defectuoase a retelei, special datorit pierderii i retransmiterii unui numr n a s a mare de pachete. Ca principiu general, este bine ca, dac reteaua este foarte arcat, a nc a nodurile terminale s a ncerce s reduc frecventa i mrimea pachetelor transa a s a mise. Evident, pentru acest lucru, este necesar un mecanism care s semnaleze a nodurilor nale asupra prezentei sau iminentei congestiei. Descriem continuare, pe scurt, mecanisme utilizate pentru semn nalarea congestiei, precum i mecanismele prin care nodurile nale pot reactiona s la astfel de semnale. Prima posibilitate de semnalizare a congestiei este ca, atunci cnd un a nod intermediar este arcat la limita capacitii sale, pentru ecare pachet nc at de date primit spre livrare s trimit sursei pachetului de date un pachet de a a control prin care s-i cear s reduc tracul. Cusurul metodei const a a a a a n faptul c pachetele de cerere de reducere a tracului a ncarc suplimentar o a retea deja arcat. Metoda este utilizabil Internet, existnd un tip de nc a a n a pachete ICMP pentru acest scop (vezi 10.2.5.4). A doua posibilitate este ca nodul arcat s semnalizeze destinatiei nc a ecrui pachet de date faptul c reteaua este arcat. Aceast semnalizare a a nc a a este mai uor de fcut s a ntruct poate transmis odat cu pachetul de date, a a a sub forma unui bit din antetul ecrui pachet. Dezavantajul, fat de metoda a a precedent, este c nu semnalizeaz sursei tracului, ci destinatiei; rmne a a a a a deci necesar de elaborat un protocol de informare a sursei. Informarea sursei poate fcut simplu dac a a a ntre surs i destinatie se utilizeaz un protocol de as a control al uxului: cazul care destinatiei este semnalizat c reteaua este n n i a congestionat, destinatia cere sursei, prin intermediul protocolului de control a al uxului, s reduc debitul transmisiei. Metoda semnalizrii destinatiei este a a a utilizat Internet, sub numele de explicit congestion notication; pentru a n

c 2008, Radu-Lucian Lupa s


144 5.3. Functionarea la trafic ridicat

informarea, mai departe, a sursei se poate utiliza dimensiunea ferestrei TCP ( 10.3.1.8). O semnalizare implicit a faptului c reteaua este arcat const a a nc a a ai pierderea pachetelor. Pierderea poate observat de nodul surs n nss a a prin aceea c nu primete conrmri ( cazul utilizrii unui protocol cu cona s a n a rmare i retransmitere, 4.3) sau rspuns la mesajele trimise ( cazul unei s a n aplicatii care trimite o datagram de cerere i ateapt o datagram care s a s s a a a rspund la cerere). Pentru ca pierderea pachetelor s poat utilizat ca a a a a a semnalizare a congestiei, mai este necesar ca pierderea unui pachet din alte cauze dect congestia s e putin probabil. Rezult, pentru legturile directe a a a a a cu rat a erorilor ridicat ( principal, legturi radio), necesitatea utilizrii, a a n a a la nivelul legturii de date, e a unui cod corector de erori, e a unui protocol a de conrmare i retransmitere . s Indiferent de metoda de semnalizare utilizat, o implementare simpl a a risc s duc la oscilatii: dac un nod intermediar ajunge congestionat, sema a a a nalizeaz tuturor nodurilor terminale ale legturilor stabilite prin el despre a a congestie. Reactia este diminuarea tracului prin toate legturile i ca ur a s mare scderea tracului mult sub maximul admis. Dup un timp, nodurile a a terminale vor crete din nou tracul, pn la congestionarea, din nou, a nodus a a lui intermediar considerat. Solutionarea problemei oscilatiilor se face punnd a nodul intermediar s trimit semnale c este supra arcat cu putin a a a nc nainte de-a ajunge la limita capacitii sale i de-a alege aleator legturile crora li at s a a se semnalizeaz arcarea. a nc

5.3.3. Formarea (limitarea) tracului


Prin formarea tracului se eleg metode de uniformizare a debitului nt unui ux de date. Mecanismele de limitare pot plasate nodul surs sau n a ntr-un ruter i pot actiona asupra uxului de pachete provenit de la un anumit s nod surs, asupra uxulul a ntre dou statii date, asupra uxului printr-un a circuit virtual sau asupra uxului ce intr sau iese printr-o anumit legtur a a a a direct. a Cel mai simplu mecanism de formare a tracului este limitarea debitului de date la o anumit valoare xat. Mecanismul se numete gleat a a s a a gurit, prin analogie cu urmtorul mecanism zic: a a a ntr-o gleat (reprezentnd a a a coada de ateptare a ruterului) se toarn ap (reprezentnd pachetele unui s a a a ux). Gleata are o gaur prin care curge ap (pachete ce sunt preluate din a a a coad i retransmise de ctre ruter). Debitul apei care curge (debitul uxului as a de ieire) este constant att timp ct gleata nu este goal. De asemenea, s a a a a dac gleata este plin, o parte din apa ce intr se revars afar (surplusul a a a a a n a

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 145

de pachete se pierd). Un mecanism mai elaborat permite scurte rafale. Ca idee, ruterul ine evidenta capacitii nefolosite (diferenta dintre debitul maxim acceptat t at i debitul uxului) i permite, contul acesteia, un exces de debit. Mai s s n n detaliu, ruterul asociaz cozii un numr de jetoane. Periodic, numrul de a a a jetoane este crescut cu o unitate, fr a a depi o valoare maxim. Dac a a ns as a a exist un pachet coad i numrul de jetoane este mai mare sau egal cu a n a s a numrul de biti ai pachetului, pachetul este preluat din coad i retransmis, a as iar numrul de jetoane asociat cozii este sczut cu o valoare egal cu numrul a a a a de biti ai pachetului. Mecanismul se numete gleata cu jeton. s a

5.3.4. Rezervarea resurselor


Pentru a avea, mod garantat, o anumit capacitate i un anumit n a s timp de propagare oferite unui ux de date, este necesar s e rezervate uxului a resursele necesare capacitatea de prelucrare noduri i capacitatea de n s transfer prin legturile directe. a Rezervarea resurselor se poate face doar retele ce ofer servicii de n a tip conexiune utilizarea rezervrii retele cu datagrame duce la necesitatea a n implementrii unui mecanism de inerea evidentei uxurilor de datagrame a t similar celui din retelele cu circuite virtuale. La deschiderea conexiunii, timpul stabilirii rutei conexiunii se stan bilete i capacitatea pe care o va garanta conexiunea i ecare nod se asigur s s s a c dispune de capacitile necesare (c suma capacitilor alocate conexiunilor a at a at ce partajeaz o legtur direct nu depete capacitatea legturii directe). a a a a as s a Dac resursele necesare nu sunt disponibile, conexiunea este refuzat sau se a a negociaz o capacitate mai mic. a a Asociat conexiunii se plaseaz, la nodul surs, un mecanism de lima a itare a debitului de date, astfel at operarea conexiunii s se nc a ncadreze n resursele alocate. Rezervarea resurselor este util special aplicatiilor timp real. a n n Reteaua telefonic utilizeaz astfel de mecanisme. a a Avantajul unui debit garantat se pltete prin limitarea drastic a a s a debitului permis. Dac debitul efectiv utilizat de un ux de date este adesea a sub debitul alocat uxului sau dac o parte din capacitatea unei legturi dia a recte rmne adesea nealocat complet conexiunilor ce trec prin ea, reteaua a a a nu este folosit la maximul de capacitate. a acest caz, valoricarea capacitii rmase, cu pstrarea capacitii In at a a at garantate prin rezervarea resurselor, se poate face astfel: Datelor ce apartin conexiunilor cu trac garantat li se asociaz un nivel de prioritate ridicat. a

c 2008, Radu-Lucian Lupa s


146 5.3. Functionarea la trafic ridicat

Sunt permise i alte date (de exemplu, prin conexiuni fr trac garantat), s aa a acestora li se asociaz un nivel de prioritate sczut. ecare ruter se ns a a In utilizeaz un mecanism bazat pe prioriti. acest fel, uxurile ce au rezervat a at In resurse au capacitate garantat, iar restul datelor sunt transmise, fr vreo a aa garantie, dac mai rmn resurse i pentru ele. a a a s

5.4. Nivelul transport


Rolul nivelului transport este de-a face o adaptare ntre serviciile oferite de nivelul retea i nevoile aplicatiilor. Functiile s ndeplinite de nivelul transport sunt similare cu unele dintre functiile nivelului legturii de date: a Transport sigur : O retea congestionat se poate s distrug pachete din a a a lips de spatiu de memorare. plus, a In ntr-o retea ce ofer transport de a datagrame este posibil ca dou datagrame s ajung la destinatie ora a a n dine invers fat de cea care au fost emise, iar anumite cazuri este a a n n posibil ca o datagram s ajung mai multe exemplare la destinatie a a a n (de exemplu dac se utilizeaz dirijare prin inundare i reteaua nu este un a a s arbore). Metodele bazate pe conrmri i retransmiteri (vezi 4.3) pot a s utilizate, cu mici modicri, pentru a asigura transport sigur la nivelul a transport. O diferent important fat de transportul sigur la nivelul a a a legturii de date este c nivelul retea poate inversa ordinea unor dataa a grame, vreme ce nivelul zic nu inverseaz pachete. O alt diferent n a a a este c la nivelul retea timpul de propagare al unei datagrame variaz a a limite foarte largi. De aceea, pe de o parte trebuie luate msuri n a pentru a xa o durat maxim de viat a unei datagrame retea, iar a a a n pe de alt parte algoritmul de conrmare i retransmitere trebuie s se a s a atepte s primeasc astfel de datagrame arziate i s nu le confunde s a a nt s a cu datagrame noi aceasta din urm a nseamn c spatiul numerelor a a de secvent trebuie s e sucient de mare. a a Controlul uxului: Controlul uxului are acelai rol i se implementeaz s s a acelai mod la nivelul transport ca i la nivelul legturii de date. n s s a Multiplexarea: Multiplexarea poate util mai multe scopuri: pentru a n a permite mai multor aplicatii care se execut pe acelai calculator s a s a comunice independent una de alta i pentru a permite unei perechi de s aplicatii care comunic s-i transmit independent mai multe uxuri a as a de date.

c 2008, Radu-Lucian Lupa s


Capitolul 5. Nivelul retea i nivelul transport s 147

5.5. Interconectarea retelelor


Probleme privind interconectarea retelelor se pun situatia care n n se dorete ca dou sau mai multe retele ce nu pot functiona unitar ca o singur s a a retea s ofere totui servicii de comunicare similare unei retele unitare. a s Motivele de existent a retelelor distincte pot : retele ce utilizeaz a a protocoale diferite la nivel retea, retele ce utilizeaz acelai protocol, dar exist a s a suprapuneri ntre adresele alocate aceste retele, dorinta unor administratori n de-a nu divulga informatii despre legturile din retea sau de-a ltra pachetele a care intr sau ies i altele. a s Problema interconectrii este complex i necesit solutii ad-hoc, a a s a adaptate nevoilor de interoperabilitate i particularitilor retelelor de inters at conectat. Exist a cteva metode generale, dintre care vom analiza aici a ns a metoda tunelrii. a
Reteaua A
2 1 4 3 5 8 4 10 6 7
(a) Reteaua A, avnd legturi directe proprii a a (reprezentate prin linii continue) i legturi res a alizate ca tunele prin reteaua B (b) Reteaua B

9 5 8

Reteaua B

Figura 5.8: Legturi prin tunel. O parte dintre legturile directe din reteaua A, a a gurate cu linie punctat, sunt obtinute apelnd la serviciile retelei B. Legtura 45 a a a apare ca legtur direct pentru reteaua A, dar este construit de reteaua B prin a a a a intermediul nodului 6.

Un tunel este o legtur, realizat prin intermediul unei retele, care a a a este utilizat de o alt retea ca i cnd ar o legtur direct (vezi g. 5.8). a a s a a a a Pachetele celei de-a doua retele, incluznd antetele specice acesteia, sunt a transportate ca date utile printr-o conexiune sau, dup caz, prin datagrame a ale primei retele.

c 2008, Radu-Lucian Lupa s


148 Capitolul 5. Nivelul retea i nivelul transport s

c 2008, Radu-Lucian Lupa s


149

Capitolul 6

Metode i protocoale criptograce s

Vom studia acest capitol cum se poate proteja comunicatia dintre n dou entiti contra actiunilor unui tert, numit adversar sau intrus, care intera at cepteaz sau altereaz comunicatia a a ntre ele. Protectia comunicatiei mpotriva actiunilor unui adversar se numete securizarea comunicatiei. s Adversarul poate : adversar pasiv , care doar intercepteaz mesajele transmise; a adversar activ , care i intercepteaz i modic mesajele. s as a Protectia comunicatiei fat de actiunile adversarului cuprinde: a Asigurarea condentialitii are ca obiectiv s impiedice un adversar at a pasiv s eleag un mesaj interceptat sau s extrag vreo informatie a nt a a a din el. Vericarea autenticitii mesajelor, numit i autenticarea mesajelor, at as are ca obiectiv detectarea, de ctre receptor, a falsurilor, adic a mesajelor a a create sau modicate de un adversar activ. Vericarea autenticitii at mesajelor se aseamn cu detectarea erorilor. Spre deosebire a de a a ns detectarea erorilor, unde modicrile produse de mediul de transmisie a sunt aleatoare, la vericarea autenticitii mesajelor avem un adversar at care ncearc mod deliberat s produc modicri nedetectabile. a n a a a Asigurarea non-repudiabilitii mesajelor are ca obiectiv s permit at a a receptorului s dovedeasc autenticitatea unui mesaj fata unui tert, a a n altfel spus, emittorul s nu poat nega faptul c a transmis un anumit a a a a mesaj. Asigurarea non-repudiabilitii este similar cu autenticarea at a mesajelor, dar plus trebuie s nu permit nici mcar receptorului s n a a a a creeze un mesaj care s par autentic. a a

c 2008, Radu-Lucian Lupa s


150 Capitolul 6. Metode i protocoale criptografice s

Vericarea prospetimii are ca obiectiv detectarea, de ctre receptor, a a eventualelor copii ale unui mesaj (autentic) mai vechi. Este posibil ca un adversar s intercepteze, de exemplu, un ordin de transfer de bani a favoarea sa i apoi s transmit bncii multiple copii ale ordinului n s a a a de transfer de bani. lipsa vericrii prospetimii, banca va efectua de In a mai multe ori transferul de bani. Vericarea autenticitii mesajelor, at singur, nu rezolv problema, deoarece ecare copie este identic cu a a a originalul i, ca atare, este autentic. s a Autenticarea entitilor are ca obiectiv vericarea, de ctre o entitate, at a a identitii entitii cu care comunic. Mai exact, exist un server i at at a a s unul sau mai multi clienti legitimi care deschid conexiuni ctre server. a Modelul adversarului, acest caz, este putin diferit: adversarul poate s n a deschid o conexiune spre server i s a s a ncerce s se dea drept un client lea gitim. Eventual, adversarul poate s intercepteze comunicatiile clientilor a legitimi, pentru a obtine informatii vederea pclirii serverului, dar n a a nu poate altera comunicatia printr-o conexiune deschis de altcineva. a prezenta unui adversar activ, autenticarea entitilor nu este prea In at util, deoarece adversarul poate s lase protocolul de autenticare s a a a se desfoare normal i apoi s trimit orice numele clientului. as s a a n In prezenta unui adversar activ, este mai degrab necesar un mecanism de a stabilirea cheii (vezi mai jos). Stabilirea cheii are ca obiectiv obtinerea, de ctre partenerii de comu a nicatie legitimi, a unui ir de biti, numit cheie, ce urmeaz a utilizat s a a la asigurarea condentialitii i la vericarea autenticitii mesajelor. at s at Cheia obtinut trebuie s e cunoscut doar de ctre cei doi parteneri a a a a care doresc s comunice. a multe lucrri, loc de autenticarea mesajelor se pune problema In a n vericrii integritii mesajelor vericarea de ctre receptor c mesajul a at a a este identic cu cel emis de emittor (c nu a fost modicat pe traseu) i a a s a autenticrii sursei mesajului vericarea de ctre receptor a identitii a a at autorului unui mesajului. Cele dou operatii vericarea integritii i aua at s tenticarea sursei nu au sens dect a mpreun. Aceasta deoarece, dac a a un mesaj a fost alterat de ctre adversar (lucru care se constat cu ocazia a a vericrii integritii), mesajul poate vzut ca un mesaj produs de adversar a at a i pretinznd c provine de la autorul mesajului original; acest din urm mesaj s a a a nu a fost modicat timpul transportului (de la adversar spre destinatar), n dar sursa sa nu este autentic (mesajul provine de la altcineva dect autorul a a indicat mesaj). n

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 151

6.1. Asigurarea condentialitii at


6.1.1. Introducere
Problema asigurrii condentialitii unui mesaj const a transa at a n mite informatii aa fel at doar destinatarul dorit s le poat obtine; un n s nc a a adversar care ar intercepta comunicatia nu trebuie s e capabil s obtin a a a informatia transmis. a Formal, presupunem c emittorul are un mesaj de transmis, nua a mit text clar (engl. plaintext). Emittorul va genera, printr-un algoritm, a plecnd de la textul clar, un aa-zis text cifrat (engl. ciphertext). Receptorul a s autorizat trebuie s poat recupera textul clar aplicnd un algoritm asupra a a a textului cifrat. Adversarul, care dispune de textul cifrat dar nu cunoate ans umite detalii ale algoritmului aplicat de emittor, trebuie s nu e capabil a a s reconstituie textul clar. Operatia prin care emittorul transform textul a a a clar text cifrat se numete criptare sau, uneori, cifrare (engl. encryption). n s Operatia prin care receptorul obtine textul clar din textul cifrat se numete s decriptare sau descifrare (engl. decryption). Impreun, algoritmii de criptare a i decriptare constituie un cifru. s Pentru a formaliza notatiile, vom nota cu T multimea mesajelor posi bile de transmis; ecare text clar posibil este un element t T . Criptarea este o functie c : T M , unde M este multimea textelor cifrate posibile. m = c(t) este textul cifrat corespunztor textului clar t. Textul cifrat este trimis pe a canalul nesigur i este presupus accesibil adversarului. Decriptarea o vom s nota cu d, unde d : M T . Spunem c (c, d) formeaz o pereche criptare-decriptare dac a a a ndeplinesc simultan conditiile: orice text cifrat poate decriptat corect prin d, adic d c = 1T ; a un adversar care cunoate textul cifrat m = c(t) dar nu cunoate c sau d s s nu poate deduce t sau aa informatii despre t. practic, este necesar ca producerea unei perechi de functii (c, d) In a s e uor de fcut, inclusiv de ctre persoane fr pregtire deosebit. Acest a s a a aa a a lucru este necesar deoarece dac perechea (c, d) utilizat de dou entiti care a a a at comunic este aat, sau se bnuiete c a fost aat, de ctre cineva din a a a s a a a afar, ea trebuie schimbat repede. De asemenea, este bine ca persoanele ce a a nu au pregtire de matematic i informatic s poat utiliza singure metode a as a a a criptograce. Pentru acest scop, algoritmii de criptare i decriptare sunt fcuti s s a a primeasc, pe lng textul clar i respectiv textul cifrat, a un argument a a a s nc

c 2008, Radu-Lucian Lupa s


152 6.1. Asigurarea confidentialitatii

numit cheie. Fiecare valoare a cheii produce o pereche criptare-decriptare distinct. Cheia se presupune a uor de generat la nevoie. a s Multimea cheilor posibile se numete spatiul cheilor i o vom nota s s n continuare cu K. Functiile de criptare i decriptare sunt de forma c : T K s M i respectiv d : M K T . Cheia este scris ca parametru. Pentru o s a valoare xat a cheii k K, criptarea devine ck : T M , iar decriptarea a dk : M T , cu dk ck = 1T . Pentru ecare k K, (ck , dk ) formeaz o a pereche criptare-decriptare. Algoritmii propriu-zii, adic functiile c : T K M i d : M K s a s T , se presupune c sunt cunoscuti adversarului; dac merit s puteti schimba a a a a cheia, nseamn c deja aveti a a ndoieli privitoare la ct de secret puteti ine a t algoritmul fat de adversar. . . Ca urmare, pentru o aplicatie, un algoritm a public nu este mai nesigur dect un algoritm ,,secret, necunoscut publicului a dar posibil cunoscut adversarului. Un algoritm foarte cunoscut, dar fr vulaa nerabiliti cunoscute, este preferabil fat de un algoritm ,,secret deoarece at a exist anse mult mai mari ca autorul i utilizatorul aplicatiei s ae despre as s a vulnerabiliti at nainte ca vulnerabilitile s e exploatate at a mpotriva lor. Adesea avem T = M ; acest caz ck este o functie bijectiv (o n a aceste conditii, uneori rolurile functiilor c i d pot permutare pe T ). In s interschimbate, adic dk s se foloseasc ca functie de criptare i ck pentru a a a s decriptare. Exemplul 6.1 (Substitutia monoalfabetic ): Considerm un alfabet (nit) S a a i notm cu n numrul de litere (n = |S|). De exemplu, s a a S = {a, b, c, . . . , z}; acest caz n = 26. Textele clare sunt iruri de litere din alfabet: T = S . n s Multimea textelor cifrate este identic cu multimea textelor clare: M = T . a Cheile posibile sunt permutrile lui S; |K| = n!. Pentru un text clar p = a (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 i decriptarea sunt simplu de executat, chiar i manual. s s Cheile sunt uor de reprezentat. Dac alfabetul are o ordine cunoscut, s a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 153

reprezentarea cheii poate consta siruirea literelor ordinea dat de pern n n a mutare. De exemplu qwertyuiopasdfghjklzxcvbnm nseamn k(a) = q, k(b) = w, etc. Cu aceast cheie, cuvntul ,,criptic devine, a a a prin criptare, ,,ekohzoe. S examinm putin siguranta. S presupunem c un adversar a a a a ncearc decriptarea textului cifrat cu ecare cheie posibil. O astfel de a a ncercare se numete atac prin fort brut. S mai presupunem c adversarul reuete s s a a a a s s a verice un miliard de chei ecare secund. Deoarece numrul de chei este n a a 26! 4 1026 , adversarul ar avea nevoie medie de 6,5 miliarde de ani pentru n a gsi cheia corect. a a Pe de alt parte, a ntr-un text limba romna, anumite litere (de n a exemplu e, a, t, s) apar mai frecvent dect altele. Ca urmare, permutrile a a primelor prin functia k vor apare textul cifrat cu frecvent mai mare dect n a a permutrile celorlalte. Un adversar, care dispune de sucient text cifrat, va a ncerca doar acele chei care fac s corespund unei litere din textul cifrat doar a a litere a cror frecvent normal de aparitie este apropiat de frecventa de a a a a aparitie a literei considerate textul cifrat. acest fel, numrul de n In a ncercri a se reduce considerabil, astfel at un astfel de cifru poate spart uor nc s n cteva minute. a Exemplul 6.2 (Cifrul Vernam, numit i cheia acoperitoare, engl. One time s : |t| n} (multimea irurilor de biti pad ): La acest cifru, T = {t {0, 1} s de lungime mai mic sau egal cu un n I xat), M = T i K = {0, 1}n . a a N s Functia de criptare este ck (t1 , t2 , . . . , tl ) = (t1 k1 , t2 k2 , . . . , tl kl ), unde este operatia sau exclusiv. Decriptarea coincide cu criptarea, dk = ck . Din punctul de vedere al sigurantei, criptarea cu cheie acoperitoare este un mecanism perfect de criptare: adversarul nu poate deduce nimic din mesajul criptat ( afar de lungimea textului clar), deoarece orice text clar n a putea , cu egal probabilitate, originea textului cifrat receptionat. a Criptarea cu cheie acoperitoare este dicil de utilizat practic deoarece necesit o cheie la fel de lung ca i mesajul de transmis i, plus, cheia nu a a s s n poate refolosit (dac se transmit dou mesaje folosind aceeai cheie, se a a a s pierde siguranta metodei).

c 2008, Radu-Lucian Lupa s


154 6.1. Asigurarea confidentialitatii

6.1.2. Refolosirea cheilor


Pn aici am considerat problema criptrii unui singur mesaj. Utia a a lizarea aceleiai chei pentru mai multe mesaje aduce adversarului noi posis biliti de actiune: at 1. Dou mesaje identice vor criptate identic; adversarul poate detecta a astfel repetarea unui mesaj. 2. Anumite informatii transmise criptat la un moment dat pot deveni publice ulterior. Adversarul poate obtine astfel perechi (ti , mi ) cu mi = ck (ti ). Incercrile de determinare a cheii de criptare sau de decriptare a a unui text cifrat, pe baza informatiilor aduse de astfel de perechi text clar, text cifrat, se numete atac cu text clar cunoscut. s 3. anumite cazuri, adversarul poate determina emittorul s trimit In a a a mesaje continnd prti generate de adversar. Acest lucru poate ajuta a a mult tentativelor de spargere de la punctul precedent. Atacul se numete s cu text clar ales. De asemenea, innd cont i de posibilitile de la t a s at punctul 1, dac adversarul bnuiete textul clar al unui mesaj, poate s a a s a ncerce s-i conrme sau inrme bnuiala. as a 4. Anumite cifruri, de exemplu cifrul cu cheie acoperitoare, sunt uor de s atacat de un adversar dispunnd de dou texte cifrate cu aceeai cheie. a a s Punctele 2 i 3 pot contracarate prin anumite proprieti ale cifrului s at (vezi 6.1.3). Pentru punctele 1 i 4, orice cifru, forma care este folosit s n n n practic, mai primete functia de criptare un argument aleator. O parte a s n din acest argument, numit vector de initializare, are rolul de-a face ca acelai a s text clar s e cifrat mod diferit mesaje diferite. a n n acest caz, criptarea are forma c : T K R M i decriptarea In s d : M K T , cu: dk (ck (t, r)) = t , t T, k K, r R. Evident, pentru ca decriptarea s e posibil, informatia corespunza a a toare argumentului aleator trebuie s se regseasc textul cifrat. Ca urmare, a a a n lungimea textului cifrat trebuie s e cel putin egal cu lungimea textului clar a a plus lungimea argumentului aleator. Adesea, argumentul aleator nu este secret; ca urmare, poate transmis clar. Trebuie a ca adversarul s nu poat s controleze generarea n ns a a a argumentului aleator utilizat de emittor. De asemenea, nu este permis ca a adversarul s mai aib vreun control asupra continutului textului clar dup a a a ce obtine informatii despre argumentul aleator ce urmeaz a folosit. a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 155

6.1.3. Problema spargerii unui cifru


Un cifru este complet spart dac un adversar care nu cunoate dia s nainte cheia poate decripta orice text cifrat. Dac adversarul obtine cheia, a nseamn c cifrul este complet spart. a a Un cifru este partial spart dac un adversar care nu cunoate initial a s cheia poate dobndi informatii despre textul clar prin observarea textului a cifrat. Dac adversarul poate decripta o parte din textul clar sau poate s a a verice dac un anumit ir apare textul clar, a s n nseamn c cifrul este partial a a spart. Se poate presupune c un adversar poate estima textele clare ce ar a putea transmise i eventual probabilitile lor; exist cazuri care textul s at a n clar transmis este dintr-o multime mic, de exemplu poate doar da sau a nu. Dac un adversar ce a interceptat textul cifrat poate elimina anumite a texte clare, sau, estimnd probabilitile diverselor chei de cifrare, poate esa at tima probabiliti, pentru textele clare, diferite fat de estimrile sale initiale, at a a nseamn de asemenea c adversarul a extras informatie din textul cifrat i a a s n consecint cifrul este partial spart. a Exemplul 6.3: Considerm c, din informatiile adversarului, textul clar este a a este cu probabilitate de 30% ION, cu probabilitate de 40% ANA i cu probs abilitate de 30% DAN. De asemenea, presupunem c adversarul tie c se a s a utilizeaz substitutie monoalfabetic. a a momentul care adversarul interceptez textul cifrat AZF, el calIn n a culeaz probabilitile diverselor texte clare cunoscnd textul cifrat i gsete a at a s a s 50% ION, 0% ANA i 50% DAN (exclude ANA deoarece ar da aceeai liter pe s s a prima i pe ultima pozitie textul cifrat). Adversarul a dobndit o informatie s n a asupra textului clar, ceea ce nseamn c cifrul a fost spart partial. a a Cu privire la informatiile de care dispune adversarul ce ncearc a spargerea cifurlui, exist trei nivele posibile: a atac cu text cifrat: adversarul dispune doar de o anumit cantitate de a text cifrat; atac cu text clar cunoscut: adversarul dispune, pe lng textul cifrat a a de spart, de un numr de perechi (ti , mi ), cu mi = ck (ti ); a atac cu text clar ales: adversarul dispune de perechi (ti , mi ) care ti n este la alegerea adversarului. Afar de cazul care cheia se schimb la ecare mesaj, este necesar a n a ca cifrul s nu poat spart printr-un atac cu text clar ales. a a

c 2008, Radu-Lucian Lupa s


156 6.1. Asigurarea confidentialitatii

Dicultatea spargerii unui cifru este de dou feluri: a dicultatea probabilistic sau informational, a a dicultate computational. a Dicultatea informational const faptul c pot exista mai multe a a n a perechi text clar, cheie, care ar putut produce textul cifrat interceptat m. Presupunnd |T | = |M | i c orice bijectie c : T M putea aleas, a s a a cu egal probabilitate, ca functie de criptare, adversarul care receptioneaz un a a text cifrat m nu poate deduce nimic cu privire la textul clar t orice text clar avea aceeai probabilitate de a genera m. Un astfel de cifru este perfect s textul cifrat nu aduce nici o informatie adversarului. Deoarece exist (|T |)! bijectii posibile, lungimea necesar a cheii este a a log2 ((|T |)!). Presupunnd c T este multimea irurilor de n biti, avem |T | = 2n a a s i lungimea cheii este log2 ((2n )!) biti, lungime a crei comportament asimptotic s a n ). Pentru n = 20, cheia are civa megabiti. este de forma (n2 at De notat c un algoritm de criptare secret nu este un cifru perfect, a deoarece nu toate cele (2n )! functii de criptare posibile au aceeai probabilitate s de a alese. Cifrul Vernam (vezi exemplul 6.2) este de asemenea un cifru perfect, ct vreme cheia nu este refolosit. aa a exemplul 6.3, dicultatea informational const imposibilitatea In a a n adversarului de a distinge ntre DAN i ION s Incertitudinea adversarului asupra textului clar este cel mult egal cu a incertitudinea asupra cheii. De aici rezult c, pentru a obtinerea unui cifru a a perfect, numrul de biti ai cheii trebuie s e mai mare sau egal cu numrul a a a de biti de informatie din mesaj. Cifrul Vernam este acelai timp perfect n s (sub aspectul dicultii informationale a spargerii) i optim din punctul de at s vedere al lungimii cheii. Dicultatea computational const imposibilitatea adversarului de a a n a deduce informatii asupra textului clar cu un efort computational rezonabil. Un prim lucru care se cere de la un cifru este ca, dndu-se un numr a a de perechi text clar text cifrat, s nu existe o metod rapid de a determina a a a cheia. Un atac prin fort brut (engl. brute force attack ) const a decripta a a a n textul cifrat folosind toate cheile posibile i a verica dac se obtine textul s a clar (sau un text clar inteligibil, dac textul clar adevrat nu este cunoscut a a dinainte). Fezabilitatea unui atac prin fort brut depinde direct de lungimea a a cheii (de fapt, de numrul de chei posibile). Pentru o cheie de 56 de biti a (exemplu cifrul DES), un atac prin fort brut este perfect posibil, la viteza a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 157

actual necesitnd un efort jur de un an-calculator. Un atac prin fort brut a a n a a este nefezabil deocamdat de la 80 de biti sus; se consider c va fezabil a n a a jurul anului 2015. De la 128 de biti sus atacul prin fort brut necesit, n n a a a din cauza unor limitri zice teoretice, o cantitate de energie comparabil cu a a productia mondial pe cteva luni; o astfel de cheie este putin probabil c va a a a putea spart vreodat prin fort brut. a a a a Un cifru se consider a vulnerabil momentul care se descoper a n n a o metod de decriptare a unui mesaj semnicativ mai ecient dect un atac a a a prin fort brut. Inexistenta unei metode eciente de spargere nu este nicioa a dat demonstrat; cel mai bun caz se demonstreaz c spargerea unui cifru a a n a a este cel putin la fel de dicil ca rezolvarea unei anumite probleme de matem a atic, problem cunoscut de mult vreme dar fr rezolvare ecient cunosa a a a aa a cut. Acest din urm tip de demonstratie se aplic mai mult la cifrurile asia a a metrice din 6.1.5; problemele de matematic sunt de exemplu descompunerea a factori primi a unui numr mare de ordinul sutelor de cifre sau logn a aritmul discret rezolvarea x {0, . . . , p 1} a ecuatiei ax = b (mod p), n cu p numr prim mare. a Pentru un cifru bloc (un cifru care cripteaz independent blocuri de a text clar de o anumit lungime x), dimensiunea blocului trebuie s e mare a a a pentru a face repetrile blocurilor sucient de rare. Dac dimensiunea blocului a a este de n biti, exist 2n posibiliti pentru continutul unui bloc. Considernd a at a o distributie uniform a continutului ecrui bloc, un ir de 2n/2 blocuri are a a s probabilitate cam 1/2 s aib cel putin dou blocuri cu continut identic. (Acest a a a fapt este cunoscut ca paradoxul zilei de natere: s ntr-un grup de 23 de persoane, probabilitatea s existe dou dintre ele nscute aceeai zi din an este a a a n s a peste 50%; general, n ntr-un grup de k numere aleatoare avnd k valori posibile, probabilitatea ca cel putin dou s e egale este jur de 1/2). a a n Ca o consecint, dimensiunea n a blocului trebuie s e sucient a a de mare i cheia s e schimbat sucient de des, astfel at numrul de s a a nc a blocuri criptate cu o cheie dat s e mult mai mic dect 2n/2 . majoritatea a a a In cazurilor, valoarea minim rezonabil pentru n este 64 de biti. La aceast a a a lungime, repetarea unui bloc de text cifrat este probabil s apar a a ncepnd de a la 232 blocuri, adic 32 GiB. a

6.1.4. Algoritmi de criptare utilizati practic n a


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

c 2008, Radu-Lucian Lupa s


158 6.1. Asigurarea confidentialitatii

de lungime arbitrar i produc bitii textului cifrat pe msur ce primesc bitii as a a corespunztori din textul clar. a Pentru a cripta un text de lungime arbitrar, cu ajutorul unui cifru a bloc, exist cteva metode standard, pe care le vom descrie continuare. a a n In cele ce urmeaz, notm cu n lungimea blocului, biti. a a n ECB Electronic Code Book: Textul clar se mparte blocuri de n lungime n. Ultimul bloc se completeaz la lungimea n; bitii adugati a a pot zerouri, biti aleatori sau se pot utiliza alte scheme de completare. Fiecare bloc se cripteaz apoi independent de celelalte (vezi g. 6.1). a

Text clar

1 0 1 0 1 0
C

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

Text cifrat

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

Text clar
(b) Decriptarea

1 0 1 0 1 0

Figura 6.1: Criptarea mod ECB n

Metoda ECB nu se recomand deoarece pentru o cheie x acelai a a s text clar se transform acelai text cifrat. a n s O alt critic citat frecvent este c un adversar care permut a a a a a blocurile de text cifrat va obtine permutarea blocurilor corespunztoare a de text clar, chiar dac nu elege nimic din textul cifrat. Dei armatia a nt s este adevrat, critica este nefondat a a a ntruct un cifru nu are ca scop a protejarea integritii mesajelor. at CBC Cipher Block Chaining: (Vezi g. 6.2.) Ca i la ECB, textul s clar se mparte blocuri i ultimul bloc se completeaz cu biti aleatori. n s a plus, se alege un ir de n biti aleatori; acesta se numete vector de In s s initializare. Vectorul de initializare se transmite de obicei separat. Se efectueaz xor pe biti a ntre vectorul de initializare i primul bloc de text s clar; rezultatul se cifreaz i se trimite. Apoi, se face xor as ntre ecare bloc de text clar i blocul precedent de text cifrat, i rezultatul se cifreaz s s a i se transmite destinatarului. s Fat de ECB, metoda CBC face ca un acelai bloc de text clar s a s a se cripteze diferit, functie de vectorul de initializare utilizat. Dac n a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 159

Nume DES

lungime bloc 64

lungime cheie 56

observatii A fost utilizat pe scar destul de larg, a a ind sustinut ca standard de ctre gu a vernul Statelor Unite ale Americii. In prezent este nesigur datorit lungimii a mici a cheii (a fost deja spart prin fort a brut). Au existat i speculatii cum c a s a ar fost proiectat astfel at s e uor nc a s de spart de ctre cei care ar cunoate a s nite detalii de proiectare. s Const aplicarea de 3 ori succesiv a a n cifrului DES, cu 2 sau toate 3 cheile distincte. A fost creat pentru a nu inventa un cifru total nou, dar fcnd imposibil a a a spargerea prin fort brut. a a Desemnat, urma unui concurs, ca nou n standard utilizat de guvernul american. Proiectat de doi belgieni, Joan Daemen i Vincent Rijmen i publicat sub numele s s rijndael. Creat de Carlisle Adams i Staord s Tavares 1996. n Creat de Bruce Schneier 1993. n Creat de Bruce Schneier i altii i a pars s ticipat la concursul pentru AES. Creat de Ross Anderson, Eli Biham i s Lars Knudsen; candidat pentru AES. Creat de Ronald Rivest; candidat pentru AES; patentat favoarea rmei RSA n Security. Creat de Ronald Rivest 1987; foarte n rapid; are cteva slbiciuni, care pot a a 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 i 128 s biti 64 pn la a a 448 biti 128 pn la a a 256 biti 128 128, 192 sau 256 128 128, 192 sau 256 ux pn la a a 256 biti

RC4

Tabelul 6.1: Cifruri mai cunoscute.

c 2008, Radu-Lucian Lupa s


160 6.1. Asigurarea confidentialitatii

1111 0000 1111 0000 1111 0000


C C

Vector initia lizare

Text clar

11 00 11 00 11 00 11 00

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

Vector Text cifrat initia 111111111 000000000 lizare 111111111111 000000000000

111111111111 000000000000 111 000 111 000


D D D

Text clar
(b) Decriptarea

1 0 1 0 1 0 1 0

Figura 6.2: Criptarea mod CBC n

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 161

vectorul de initializare este ales aleator, repetrile unui bloc de text a cifrat vor extrem de rare (imposibil de exploatat de adversar). Vectorul de initializare trebuie ales satisfcnd : a a - s e distribuit uniform i necorelat cu textul clar sau alti vectori a s de initializare; - s nu poat controlat de adversar; a a - s nu poat aat de adversar ct timp adversarul ar putea inuenta a a a textul clar, pentru a mpiedica un atac cu text clar ales. Vectorul de initializare se construiete utiliznd una din urmtoa s a a rele variante: - se genereaz cu un generator de numere aleatoare criptograc (vezi a 6.4) i se transmite clar s n naintea mesajului; - se stabilete prin metode asemntoare cu stabilirea cheii (vezi s a a 6.3); - dac se transmit mai multe mesaje unul dup altul, vectorul de a a initializare pentru un mesaj se ia ca ind ultimul bloc al mesajului precedent (ca la antiurea blocurilor cadrul aceluiai mesaj). nl n s Pentru a mpiedica un atac cu text clar ales, dac textul clar al a unui mesaj este format dup expedierea mesajului precedent este a necesar trimiterea unui mesaj care s e ignorat de destinatar i a s cu continut aleator. CFB Cipher Feedback: CFB i urmtorul mod, OFB, sunt utilizate s a special acolo unde mesajele sunt mult mai scurte dect dimensiunea n a blocului, a emittorul transmite aceluiai receptor o secvent mai ns a s a lung de mesaje (presupunem c un mesaj nu poate grupat a a mpreun a cu urmtorul deoarece, de exemplu, un mesaj depinde de rspunsul rea a ceptorului la mesajul precedent; prin urmare, un mesaj nu este disponibil pentru criptare nainte ca mesajul precedent s e criptat totalitate a n i trimis). s CFB cripteaz fragmente de text clar de dimensiune x m. Dia a mensiunea m a fragmentului trebuie s a ndeplineasc o singur restrictie, a a i anume s e un divizor al dimensiunii n a blocului cifrului. Se s a poate lua m = 8 i atunci cifrul cripteaz cte un caracter. CFB s a a functioneaz astfel (vezi g. 6.3): Emittorul genereaz aleator un vec a a a tor de initializare de n biti, pe care transmite receptorului i l s l ncarc a totodat a ntr-un registru de deplasare. Apoi, pentru ecare caracter de

c 2008, Radu-Lucian Lupa s


162 6.1. Asigurarea confidentialitatii registru de deplasare

registru de deplasare

Se ignor a

Se ignor a

+
Text clar
(a) Criptarea

Text cifrat

1 0 1 0 1 0

11 00 11 00 11 00

+
Text clar
(b) Decriptarea

Text cifrat

Figura 6.3: Criptarea mod CFB n

criptat, emittorul: a - cripteaz continutul registrului de deplasare utiliznd cheia secret, a a a - execut xor pe biti a ntre urmtorii m biti din textul clar i primii a s m biti din rezultatul criptrii, a - transmite ca text cifrat rezultatul pasului precedent, - deplaseaz continutul registrului de deplasare cu m biti spre stnga, a a - introduce, pe pozitiile cele mai din dreapta ale registrului de de plasare, m biti de text cifrat produs. CFB are o proprietate interesant de autosincronizare: dac la un a a moment dat, din cauza unor erori de transmisie, se pierde sincronismul dintre emittor i receptor, sincronismul se reface automat dup n biti. a s a De remarcat, de asemenea, c decriptarea CFB utilizeaz tot funca a ia de criptare a cifrului bloc. t OFB Output Feedback: OFB este un mecanism asemntor cu cifrul a a Vernam (cu cheie acoperitoare) (exemplul 6.2), a cheia este un ir ns s pseudoaleator generat cu un algoritm de criptare. Primii n biti din irul s pseudoaleator se obtin criptnd vectorul de initializare, urmtorii n biti a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 163

se obtin criptnd precedentii n biti pseudoaleatori, . a. m. d. a s La OFB utilizarea unui vector de initializare aleator este chiar mai important dect la celelalte moduri de criptare, a a ntruct refolosirea unui a vector de initializare conduce la repetarea irului pseudoaleator (cheia s Vernam), rezultnd un cifru relativ uor de spart. a s CTR Counter: Se construiete similar cu OFB, a irul pseudoaleator s ns s se obtine criptnd numerele v, v + 1, v + 2, etc., reprezentate pe n biti, a v ind vectorul de initializare. Modul CTR este foarte asemnntor cu a a OFB, a are avantajul c destinatarul poate decripta un fragment de ns a mesaj fr a decripta tot mesajul pn la fragmentul dorit. Acest fapt aa a a face potrivit pentru criptarea ierelor pe disc. Totui, deoarece cifrul l s s Vernam aat la baz este vulnerabil unui adversar avnd la dispozitie a a dou texte clare criptate cu aceeai cheie, metoda este vulnerabil dac a s a a adversarul are posibilitatea de-a obtine dou variante ale unui ier. a s

6.1.5. Criptograe asimetric (cu cheie public) a a


Intuitiv, s-ar putea crede c, dac functia de criptare este complet a a cunoscut (inclusiv cheia), functia invers decriptarea este de asemenea a a calculabil mod rezonabil. realitate, exist functii de criptare (injective) a n In a a cror cunoatere nu permite decriptarea timp rezonabil. esent, ideea a s n In a este c, dei m = c(t) este rezonabil de uor de calculat, determinarea lui t a s s din ecuatia c(t) = m nu se poate face mult mai rapid dect prin a ncercarea tuturor valorilor posibile pentru t. Pentru ca o astfel de metod de criptare s e util, trebuie ca desa a a tinatarul autorizat al mesajului s-l poat totui decripta timp rezonabil. a a s n Pentru aceasta, se cere ca functia de criptare c s poat inversat uor a a a s de ctre cineva care cunoate o anumit informatie, dicil de dedus din c. a s a Aceast informatie va fcut cunoscut doar destinatarului mesajului cripa a a a tat. De fapt, cazul criptograei asimetrice, destinatarul mesajului este chiar n autorul acestei informatii secrete i a functiei de criptare. s Ca i cazul criptograei simetrice, functia de criptare c primete s n s un parametru, cheia kc , numit cheie de criptare sau cheie public. Astfel, a a criptarea se calculeaz m = ckc (t). a Pentru decriptare, vom nota cu d algoritmul general i cu kd infors matia care permite decriptarea timp rezonabil. Decriptarea o scriem t = n dkd (m). kd o numim cheie de decriptare sau cheie secret. Fiecare cheie secret a a kd este asociat unei anumite chei publice kc , putnd servi la decriptarea a a mesajelor criptate doar cu cheia public pereche. a

c 2008, Radu-Lucian Lupa s


164 6.1. Asigurarea confidentialitatii

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

(mod n) (mod n)

(6.1) (6.2)

Cifrul a fost inventat de Rivest, Shamir i Adelman 1977. Numele s n RSA vine de la initialele autorilor. 6.1.5.1. Utilizarea criptograei asimetrice Pentru pregtirea comunicatiei, receptorul genereaz o pereche de a a chei (kc , kd ) i face public kc . Emittorul poate cripta un mesaj, folosind s a a kc , i numai posesorul lui kd va putea decripta. Notm c odat criptat un s l a a a mesaj, acesta nu mai poate decriptat nici mcar de autorul su (dei autorul a a s i dealtfel oricine poate verica dac un text cifrat dat corespunde sau s a nu unui text clar dat). Dac se dorete comunicatie bidirectional, se utilizeaz cte o pereche a s a a a de chei (kc , kd ) distinct pentru ecare sens. a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 165

O aceeai pereche de chei poate utilizat de o entitate pentru toate s a mesajele pe care le primete, indiferent cu ci parteneri comunic. Astfel, s at a ecare entitate si stabilete o pereche de chei din care cheia public o trans s a mite tuturor partenerilor de comunicatie i cheia secret o folosete pentru a s a s decripta mesajele trimise de toti ctre ea. Pentru comparatie, criptograa a n simetric, ecare pereche de parteneri ce comunic trebuie s aib propria a a a a cheie secret. a Un sistem criptograc asimetric este esent un cifru bloc. Pentru n a a cripta o cantitate arbitrar de text clar, se pot utiliza modurile ECB sau a CBC. Modurile CFB, OFB i CTR nu sunt utilizabile deoarece utilizeaz doar s a functia de criptare, care cazul criptograei asimetrice este public. n a Algoritmii criptograci asimetrici sunt mult mai lenti dect cei si a metrici. Din acest motiv, datele propriu-zise se cripteaz de obicei cu algoritmi a simetrici, iar cheia de criptare pentru date se transmite utiliznd criptograe a asimetric (vezi i 6.3). a s

6.2. Autenticarea mesajelor


Autenticarea mesajelor este un mecanism prin care destinatarul unui mesaj poate verica faptul c autorul mesajului este o anumit entitate i c a a s a mesajul nu a fost modicat de altcineva. Vericarea autenticitii unui mesaj const aplicarea de ctre reat a n a ceptor a unui test de autenticitate asupra mesajului primit. Un test de autenticitate trebuie s a ndeplineasc dou proprieti: a a at orice mesaj autentic s treac testul; a a pentru un mesaj neautentic, produs cu un efort computational rezonabil, probabilitatea ca mesajul s treac testul s e extrem de mic. a a a a Exist dou nivele distincte de ,,spargere a unui test de autenticitate: a a fals existent (engl. existential forgery): posibilitatea ca un adversar s a genereze un mesaj neautentic care s treac testul de autenticitate. a a Mesajul astfel produs nu trebuie s aib un continut inteligibil; trebuie a a doar s e acceptat de algoritmul de autenticare. a fals ales (engl. choosen forgery): plus fat de falsul existent, continutul n a mesajului neautentic este (total sau mare parte) la alegerea adversarun lui. Evident, un mesaj, acceptat ca autentic o dat, va acceptat ca a autentic i cazul unei repetri ulterioare. Prevenirea unor atacuri bazate pe s n a

c 2008, Radu-Lucian Lupa s


166 6.2. Autentificarea mesajelor

repetarea unor mesaje anterioare este o problem separat i va studiat a as a n 6.2.4. studiul metodelor de autenticare a mesajelor, presupunem c In a mesajul de transmis nu este secret. Aceasta deoarece practic apare frecvent n a necesitatea ca un mesaj public s poat testat de oricine privinta auta a n enticitii. De exemplu, textul unei legi este o informatie public, dar un at a cetean ar trebui s poat verica dac textul ce i-a parvenit este textul at a a a autentic emis de autoritatea abilitat. a Remarcm de asemenea c faptul c un mesaj criptat utiliznd un a a a a algoritm simetric poate decriptat de ctre receptor (utiliznd cheia secret) a a a i este inteligibil nu e o garantie privind autenticitatea mesajului. s Intr-adevr, a pentru unele metode de criptare, cum ar modul OFB al oricrui cifru bloc, a un adversar poate opera modicri asupra textului cifrat cu efecte previzibile a asupra textului clar, chiar dac nu cunoate efectiv textul clar. Din acest a s motiv, metodele de asigurare a condentialitii se separ de metodele de at a control a autenticitii. at

6.2.1. Functii de dispersie criptograce


general (nu neaprat criptograe), prin functie de dispersie In a n (engl. hash function) se elege o functie h care asociaz unui ir de biti nt a s t, de lungime orict de mare, o valoare a ntreag a ntr-un interval de forma [0, 2n ) cu n xat (sau echivalent, un ir de biti de lungime n), satisfcnd s a a conditia c, pentru irurile care apar in problema unde se folosete functia de a s s dispersie, dou iruri distincte s nu aib aceeai valoare a functiei de dispersie as a a s cu probabilitate semnicativ mai mare de 2n . Valoarea functiei de dispersie aplicat unui ir se numete dispersia acelui ir. a s s s O functie de dispersie criptograc este o functie de dispersie care a are anumite proprieti suplimentare, dintre cele enumerate continuare: at n 1. rezistenta la preimagine (engl. preimage resistence): dndu-se h(t), s a a e dicil de regsit t. Eventual, dicultatea s se pstreze chiar cazul a a a n cunoaterii unei prti din t. s a 2. rezistenta la a doua preimagine (engl. second preimage resistence): dndu-se un ir t, s e dicil de gsit un al doilea ir t , cu t = t, astfel a s a a s at h(t) = h(t ). nc 3. rezistenta la coliziuni (engl. collision resistence): s e dicil de gsit a a dou iruri distincte t1 i t2 (t1 = t2 ), astfel at h(t1 ) = h(t2 ). as s nc De remarcat c cele trei conditii sunt diferite. Totui, conditia de a s rezistent la coliziuni implic rezistenta la a doua preimagine. De asemenea, a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 167

majoritatea functiilor rezistente la coliziuni satisfac i conditia de rezistent s a la preimagine. Numrul de biti n ai dispersiei trebuie s e sucient de mare pentru a a a mpiedica cutarea unei coliziuni prin fort brut. Conform paradoxului zilei a a a de natere, exist anse mari de gsire a unei coliziuni s as a ntr-o multime de 2n/2 intrri. Pentru a face impractic un atac prin fort brut, trebuie ca n/2 64 a a a (i mai bine n/2 80), de unde n 128 sau mai bine n 160. s Functiile de dispersie mai cunoscute sunt descrise tabelul 6.2. n Nume MD5 lungime 128 observatii Creat de Ronald Rivest 1991. Este extrem a n de rspndit, a cteva slbiciuni descoperite a a a ns a a recent o fac destul de nesigur. a Dezvoltat de NSA (National Security Agency, a SUA). Deocamdat este mai sigur dect MD5, a a a dar are deja cteva slbiciuni. a a Dezvoltat la Katholieke Universiteit Leuven a n 1996.

SHA1

160

RIPEMD-160

160

Tabelul 6.2: Functii de dispersie criptograce.

6.2.1.1. Utilizarea functiilor de dispersie Presupunem existenta ntre emittor i receptor a dou canale de a s a transmitere a informatiei: un canal principal nesigur i un canal sigur dar cu s capacitate foarte redus. Ca exemplu practic, canalul nesigur este Internet-ul, a iar canalul sigur este un bilet scris sau o convorbire telefonic. a Presupunem de asemenea c h este o functie de dispersie rezistent a a la a doua preimagine i preferabil rezistent la coliziuni. s a Emittorul unui mesaj t calculeaz s = h(t). Apoi, transmite t prin a a canalul principal i transmite s prin canalul sigur. Receptorul testeaz dac s a a h(t) = s. Un adversar care ar modica t t ar trebui s gseasc un t cu n a a a h(t ) = h(t) pentru a pcli receptorul; acest lucru este nefezabil virtutea a a n proprietii de rezistent la a doua preimagine a functiei de dispersie h. at a Exist situatii practice care t este (partial) la dispozitia adversarua n lui. De exemplu, presupunem c secretara redacteaz un mesaj t la cererea a a efului, secretara putnd alege formularea exact a mesajului t. Seful si exs a a prim acordul asupra mesajului calculnd i trimitnd destinatarului s = h(t). a a s a Dac adversarul este secretara, ea nu se gsete situatia de-a crea un t sata a s n isfcnd h(t ) = h(t) pentru t xat (adic de-a crea a doua preimagine) ci a a a

c 2008, Radu-Lucian Lupa s


168 6.2. Autentificarea mesajelor

este situatia de-a crea t i t distincte cu h(t) = h(t ) (adic de-a gsi o n s a a coliziune). Din acest motiv, o functie de dispersie utilizat pentru controlul a autenticitii mesajelor se cere s e rezistent la coliziuni. at a a Exist pe sistemele Linux comenzile md5sum i sha1sum care cala s culeaz i aeaz dispersia md5 respectiv sha1 a continutului unui ier. a s s a s Dispersia este aat hexa. Dac notm s a n a a ntr-un loc sigur dispersia unui ier, putem controla ulterior dac ierul a fost sau nu modicat s a s ntre timp.

6.2.2. Functii de dispersie cu cheie


O functie de dispersie cu cheie (engl. keyed hash function), nu mit i MAC (message authentication code), este o functie de dispersie hk (t), as parametrizat cu o cheie k, avnd proprietatea c, pentru cineva care nu a a a cunoate dinainte cheia k, este nefezabil computational s obtin o (nou) s a a a pereche (s, t) care s = hk (t), chiar dac cunoate un numr de perechi n a s a (si , ti ) cu si = hk (ti ). O functie de dispersie cu cheie se utilizeaz astfel: Mai ai, emit a nt a torul i receptorul se eleg asupra unei chei secrete k (de exemplu conform s nt metodelor din 6.3). La trimiterea unui mesaj t, emittorul calculeaz s = a a hk (t) i trimite s mpreun perechea (s, t). Receptorul testeaz dac s = hk (t). a a a Orice autenticare prin dispersie cu cheie este a priori vulnerabil a la un atac numit atac prin reexie, descris continuare. Notm cu A i n a s B cele dou prti care comunic i cu k cheia de dispersie utilizat pentru a a a s a autenticarea mesajelor. Un adversar activ poate intercepta un mesaj trimis de A ctre B i s-l trimit a s a a napoi lui A. Dac aceeai cheie k este utilizat a s a pentru autenticarea ambelor sensuri de comunicatie (i de la A la B, i de s s la B la A) i dac mesajele au acelai format, atunci A accept mesajul ca s a s a venind de la B. Pentru a preveni un atac prin reexie, exist dou solutii: a a Se utilizeaz chei distincte pentru cele dou sensuri. a a Fiecare mesaj contine numele entitii emittoare. Eventual, numele at a entitii nu apare efectiv mesajul transmis, dar particip la calculul at n a dispersiei: s = hk (t A) i A trimite spre B perechea (t, s). s Argumente similare cu cele privind dimensiunea blocurilor la cifrurile bloc i dimensiunea cheii de cifrare conduc la cerinte pentru s mpiedicarea atacurilor prin fort brut: dimesiunea cheii i dimensiunea dispersiei de minim a a s 64 de biti, preferabil 80 de biti. O constructie uzual pentru functii de dispersie cu cheie pornind de a la functii de dispersie rezistente la coliziuni i rezistente la preimagine este s

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 169

(conform [RFC 2104, 1997]): hk (m) = hash(K opad hash(K ipad m)) unde: reprezint concatenarea, a este operatia sau exclusiv, hash este functia de dispersie criptograc (de exemplu md5 sau sha1 ), a K este cheia k completat la o lungime B aleas functie de anumite a a n particulariti ale functiei de dispersie de la baz; pentru md5 i sha1, at a s B se ia de 64 de octeti. ipad i opad sunt iruri obtinute prin repetarea de B ori a octetului cu s s valoarea (hexa) 36, respectiv 5C. Rezultatul functiei hash se poate trunchia la lungime mai mic (notm a a c functia de dispersie hash d 128160 biti, iar pentru o dispersie cu cheie a a sunt sucienti 6480 de biti). Trunchierea are ca avantaj micorarea cantitii s at de informatie pus la dispozitia adversarului. a O constructie uzual pentru functii de dispersie cu cheie pornind de a la un cifru bloc este urmtoarea: a se completeaz mesajul la un numr a a ntreg de blocuri; se execut o criptare mod CBC cu un vector de initializare zero (sau a n initializat cu dispersia mesajului precedent); rezultatul criptrii ultimului bloc se cripteaz utiliznd o a doua cheie a a a (cheia functiei de dispersie este considerat ca ind concatenarea celor a dou chei de criptare), rezultnd valoarea dispersiei. a a

6.2.3. Semntura digital a a


Semntura digital este o constructie similar dispersiei cu cheie, stua a a diat paragraful precedent. Constructia este a asimetric, utiliznd chei a n ns a a diferite pentru crearea dispersiei (numit, acest caz, semntur) i, respeca n a a s tiv, pentru vericare dispersiei. Astfel, relatia dintre semntura digital i a a s dispersia cu cheie este similar cu cea dintre criptograa asimetric i cripa a s tograa simetric. a O schem de semntur digital are urmtoarele elemente: a a a a a un algoritm prin care se poate genera aleator o pereche de chei (ks , kv ), unde ks este cheia secret sau cheia de semntur, iar kv este cheia a a a public sau cheia de vericare. a

c 2008, Radu-Lucian Lupa s


170 6.2. Autentificarea mesajelor

o functie de semnare h; o functie de vericare v. faza pregtitoare, autorul de mesaje semnate genereaz o pereche In a a de chei (ks , kv ) i transmite cheia public kv receptorului sau receptoarelor. s a La transmiterea cheii publice, trebuie utilizat un canal sigur, astfel at cheia nc s nu poat modicat timpul transmisiei. a a a n Autorul mesajului t creaz semntura s = hks (t) i transmite perechea a a s (s, t). Receptorul veric dac vkv (t, s) = true. a a Aa cum se vede, semntura s depinde i de mesajul de semnat t i s a s s de semnatarul acestuia (mai exact de cheia ks ). Ca urmare, o semntur nu a a poate tiat de pe un mesaj i plasat pe alt mesaj. a a s a Unii algoritmi de semntur digital necesit un al treilea argument a a a a pentru functia de semntur; acest argument trebuie s e un numr aleator. a a a a acest caz exist mai multe semnturi valide pentru un acelai mesaj. In a a s O posibilitate de constructie pentru semntur este pe baza unui a a mecanism de criptare asimetric care criptarea este bijectiv; de exemplu n a RSA are aceast proprietate. Constructia simplicat este: a a hks (t) = dks (t) vkv (t, s) = (ckv (s) = t) Constructia de mai sus se bazeaz pe nefezabilitatea calculului lui s = a dks (t) fr cunoaterea lui ks . Totui, constructia aceasta permite adversarului aa s s s produc un fals existent: un adversar poate alege aleator un s i calcula a a s t = ckv (s). O mbuntire a semnturii electronice de mai sus este s nu se a at a a aplice dks direct asupra lui t ci asupra unei dispersii rezistente la preimagine i la coliziuni a lui t. Metoda are dou avantaje, pe de o parte c algoritmul s a a de criptare asimetric, lent, se aplic asupra dispersiei i nu asupra a s ntregului mesaj (dispersia se calculeaz mai repede dect criptarea asimetric), iar pe de a a a alt parte se a mpiedic falsul existent deoarece chiar dac adversarul calculeaz a a a ckv (s) nu poate gsi un mesaj t cu dispersia astfel xat. a a Semntura digital asigur nu doar autenticarea mesajelor, ci i a a a s nonrepudiabilitatea mesajelor. Acest lucru se ampl deoarece cheia de nt a semntur este cunoscut doar de ctre emittor. Ca urmare, doar emittorul a a a a a a poate genera semntura. Prin urmare, prezenta unei semnturi vericabile a a atest faptul c documentul a fost produs de emittor. Functiile de dispersie a a a cu cheie nu realizeaz (direct) mesaje nerepudiabile deoarece receptorul poate a produce mesaje semnate la fel de bine ca i emittorul. s a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 171

6.2.4. Vericarea prospetimii mesajelor


Este adesea necesar ca receptorul s poat distinge a a ntre un mesaj (autentic) ,,nou i o copie a unui mesaj mai vechi. De exemplu, dac mesajul s a cere destinatarului s execute o operatie neidempotent, cum ar s transfere a a a o sum de bani dintr-un cont altul, este necesar ca destinatarul s accepte a n a mesajul doar o singur dat. a a O copie a unui mesaj ,,vechi este identic cu originalul din momentul a cnd acesta era ,,nou. Ca urmare, un test de autenticitate nu detecteaz a a niciodat vechimea mesajului. a Notm c testul de prospetime nu poate consta simpla vericare a a n dac un mesaj este identic cu vreunul dintre mesajele anterioare. Aceasta a deoarece, pe de o parte, producerea unui mesaj identic cu un mesaj anterior este perfect legitim (de exemplu, se poate cere un nou transfer, constnd a a n aceeai sum de bani ctre acelai destinatar), iar pe de alt parte, memorarea s a a s a tuturor mesajelor deja primite nu este fezabil. a Solutiile problemei vericrii prospetimii sunt similare cu metodele a de transmisie sigur ( 4.3), cu diferenta c trebuie s reziste la atacuri voite, a a a nu numai la disfunctionaliti ampltoare. at nt a Ideea este s introducem mesajul autenticat un ,,identicator de a n mesaj care s e diferit de la un mesaj la altul i asupra cruia s se execute a s a a de fapt testul de prospetime. Un astfel de element se numete numr unic s a (engl. nonce, de la number (used) once). Numrul unic poate : a un numr de ordine: Emittorul ine evidenta unui numr curent de a a t a ordine. Pentru ecare mesaj, emittorul scrie numrul curent mesaj a a n i incrementeaz apoi numrul curent. Receptorul ine de asemenea s a a t evidenta numrului curent de ordine. La ecare mesaj primit, veric a a dac numrul din mesaj coincide cu numrul curent de ordine; caz a a a n contrar mesajul nu este acceptat. Dup acceptarea unui mesaj, numrul a a curent de ordine este incrementat. Remarcm c numrul de ordine a a a poate omis din mesajul transmis efectiv; el trebuie doar s participe a la calculul semnturii mesajului. a Metoda are dou neajunsuri: necesit mentinerea pe termen lung a a a numerelor de ordine curente i necesit un contor separat de numr s a a de ordine pentru ecare partener de comunicatie. ora curent: Emittorul scrie, mesajul autenticat, ora curent. Rea a n a ceptorul consider mesajul proaspt dac ora din mesaj coincide cu ora a a a curent a receptorului. Din pcate, receptorul este nevoit s accepte un a a a decalaj de cel putin cteva zecimi de secund, deoarece ceasurile nu sunt a a

c 2008, Radu-Lucian Lupa s


172 6.2. Autentificarea mesajelor

perfect sincronizate i deoarece transportul mesajului nu este instantas interiorul acestui decalaj admis, adversarul poate trimite copii neu. In ale mesajului, copii ce vor acceptate ca proaspete de destinatar. Pentru corectarea acestei probleme, mecanismul se face astfel: Emittorul se asigur c dou mesaje distincte vor avea numrul unic a a a a a distinct. Pentru aceasta, e rezolutia marcajului de timp se face mai n dect timpul necesar emiterii unui mesaj, e emittorul mai ine un a a a t contor care se incrementeaz la ecare mesaj trimis i fcut astfel at a s a nc s nu se reseteze a nainte ca marcajul de timp s treac la urmtoarea a a a valoare. Receptorul memoreaz numerele unice ale mesajelor primite, a pe durata ct marcajul de timp din mesaj este acceptabil de ctre testul a a de prospetime (de exemplu, dac mesajul este trimis la ora 08:12:45 i a s testul de prospetime accept un decalaj de 10 secunde, numrul unic al a a mesajului va pstrat pn la ora 08:12:55). La primirea unui mesaj, a a a receptorul veric dac marcajul de timp este actual ( interiorul intera a n valului acceptabil) i dac numrul unic nu este identic cu cel al unuia s a a dintre mesajele memorate. Utilizarea orei la vericarea prospetimii necesit un mecanism a sigur care s mentin sincronismul ceasurilor dispozitivelor care comua a nic. a un numr (aleator) ales de receptor: Receptorul care ateapt un a s a mesaj trimite emittorului un numr aleator proaspt generat. Numrul a a a a aleator trebuie s aib cel putin 6480 biti, pentru ca s nu se repete a a a (dect cu probabilitate neglijabil de mic) i s nu poat prezis de a a s a a ctre adversar. Emittorul adaug numrul la mesajul trimis. Recepa a a a torul accept un mesaj ca proaspt doar dac numrul aleator din mesaj a a a a coincide cu numrul aleator tocmai trimis. Ca i pentru varianta cu a s numr de ordine, numrul aleator nu este necesar s e inclus mesaj; a a a n este sucient s participe la calculul semnturii mesajului. a a Neajunsul principal al metodei este necesitatea de-a transfera numrul aleator dinspre receptor spre emittor. plus, este necesar ca a a In receptorul s tie c urmeaz s primeasc un mesaj, ceea ce necesit a s a a a a a adesea a un mesaj (emittorul spune vezi c vreau s-ti spun ceva, nc a a a receptorul rspunde trimitnd numrul aleator i, nal, emittorul a a a s n a trimite mesajul propriu-zis). Acest lucru face aplicarea metodei scump a i anumite cazuri imposibil de exemplu metoda nu este aplicabil s n a a pentru securizarea potei electronice sau pentru protocoale de difuziune s (broadcast). cazul unui schimb de mai multe mesaje, de exemplu o sesiune In

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 173

ssh, se poate combina numrul aleator cu un numr de ordine. La dea a schiderea conexiunii, receptorul trimite numrul aleator. Emittorul a a include ecare pachet al conexiunii numrul aleator primit la den a schiderea conexiunii i numrul de ordine al pachetului. s a

6.2.5. Combinarea criptrii, autenticrii i vericrii prospea a s a imii t


Vericarea prospetimii unui mesaj se face pe baza unui numr unic a inclus mesaj, numr unic pe care receptorul veric la primirea mesajului. n a l a Dac numrul unic are o singur valoare valid, se poate conveni c numrul a a a a a a nu se transmite efectiv, a dispersia sau semntura se calculeaz ca i cnd ns a a s a numrul ar parte a mesajului. a Combinarea criptrii cu autenticarea se poate face trei moduri: a n Se calculeaz ai semntura sau dispersia, iar apoi se cripteaz rezula nt a a tatul concatenrii datelor utile cu dispersia sau semntura. Dei nu a a s exist o slbiciune cunoscut, unii criptogra sustin c prezenta dispera a a a siei mesajul criptat ar putea oferi unui adversar o posibilitate de-a n sparge criptarea [Rogaway 1995]. Se cripteaz mai ai mesajul, iar apoi se calculeaz dispersia sau sema nt a ntura mesajului criptat. Pentru aceast metod, este necesar ca o a a a anumit cheie pentru semntur sau dispersie s nu se utilizeze dect a a a a a cu o singur cheie de criptare. caz contrar, este posibil ca un mesaj a In criptat cu o cheie s e copiat de adversar i trimis destinatarului dup a s a schimbarea cheii de criptare. Mesajul trece testul de autenticitate, a, ns urma decriptrii cu noua cheie, rezult un alt text clar dect cel n a a a original (vulnerabilitate de tip fals existent). Se cripteaz doar textul clar, iar apoi la textul cifrat rezultat se adaug a a semntura sau dispersia textului clar. Dac autenticarea se face prin a a dispersie cu cheie, metoda nu prezint vulnerabiliti ( caz contrar, a at n se poate arta c functia de dispersie este vulnerabil la fals existent). a a a Acest mod de combinare a criptrii cu dispersia cu cheie este utilizat de a protocolul ssh versiunea 2. Dac autenticarea se face prin semntur a a a digital, metoda nu este corect deoarece permite unui adversar care a a bnuiete textul clar s verice dac textul clar este cel bnuit de el. a s a a a

6.3. Stabilirea cheilor


paragrafele precedente, am presupus c partenerii de comunicatie In a dispun deja de cheile necesare criptrii i autenticrii mesajelor transmise. a s a In

c 2008, Radu-Lucian Lupa s


174 6.3. Stabilirea cheilor

cele ce urmeaz, vom studia cum se poate face ca aceste chei s e disponibile a a partenerilor. Cheile respective pot chei pentru criptograe simetric sau a pentru autenticare prin dispersie cu cheie, caz care cheile le vom numi n chei simetrice, sau pot chei publice pentru criptograe asimetric sau pentru a semntur digital. Transmiterea celor dou tipuri de chei au cerinte distincte. a a a a cazul unei chei simetrice, actiunea prin care cheia este generat i In as fcut disponibil partenerilor de comunicatie se numete stabilirea cheii . Un a a a s protocol de stabilire a cheii trebuie s a ndeplineasc urmtoarele cerinte: a a Cheia stabilit s nu poat cunoscut de altcineva dect de entitile a a a a a at ce doresc s comunice. Actiunea de satisfacere a acestei cerinte poart a a denumirea de autenticarea cheilor i este obligatorie orice proces de s n stabilire a cheilor. Cheia stabilit s e proaspt i, eventual, s nu poat impus unilata a a as a a a eral de vreuna dintre prti ci s e calculat din elemente generate de a a a ecare dintre parteneri. Aceast cerint este util pentru a pre ampina a a a nt situatia care un adversar, care reuete s obtin o cheie mai veche, n s s a a ar putea determina entitile care comunic s refoloseasc acea cheie. at a a a Fiecare entitate ce comunic s aib conrmarea c partenerul de coa a a a municatie a primit efectiv cheia. Actiunea care veric satisfacerea a aceastei cerinte poart denumirea de conrmarea cheii, iar conrmarea a cheii mpreun cu autenticarea cheii poart denumirea de autenticarea a a explicit a cheii. Este posibil s nu se prevad conrmarea cheii ca parte a a a a protocolului de stabilire a cheii; acest caz, n nceperea comunicatiei propriu-zise cu ajutorul cheii respective constituie conrmarea cheii. Notm c, anumite cazuri, autenticarea cheii stabilite se face a a n unilateral (adic doar una dintre entiti tie cu certitudine ce entitate mai a at s cunoate cheia negociat). astfel de cazuri, a doua entitate e nu are nevoie s a In s o autentice pe prima (de exemplu, a doua entitate este un server public), a e utilizeaz un mecanism de autenticare a utilizatorilor ( 6.5). a cazul unei chei publice, actiunea prin care cheia este fcut disponiIn a a bil partenerilor se numete certicarea cheii. Spre deosebire de cazul cheilor a s simetrice, unde transmisia unei chei ntre partenerii de comunicatie se face doar pentru o cheie proaspt generat, cazul cheilor publice se ampl a a n nt a frecvent ca o aceeai cheie public s e transmis de mai multe ori ctre o s a a a a aceeai entitate. Certicarea unei chei are urmtoarele cerinte: s a Receptorul unei chei publice s poat verica dac cheia primit este a a a a ntr-adevr cheia public a partenerului de comunicatie. a a Receptorul cheii s poat verica dac cheia mai este valid. O cheie a a a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 175

public trebuie s poat invalidat dac se suspecteaz c a fost coma a a a a a a promis cheia secret corespunztoare. a a a prezenta unui adversar, stabilirea cheilor simetrice i certicarea In s cheilor publice necesit mecanisme de securizare a comunicatiei (criptare i a s autenticare). Stabilirea cheilor sau certicarea cheilor ntre dou entiti care nu a at au deja chei care s le permit o comunicatie securizat a a a ntre ele se poate face prin dou metode: a cu ajutorul unui tert de ncredere: Aceast metod necesit existenta a a a unei a treia entiti care s poat deja comunica securizat cu ecare din at a a primele dou i care s prezinte as a ncredere acestora. prin intermediul unui utilizator uman ( 6.3.5). Dup rolul lor fat de un mecanism de stabilire a cheilor, cheile se a a numesc: chei efemere (engl. ephemeral key) sau chei de sesiune (engl. session key), utilizate pentru comunicatia propriu-zis a ntre dou entiti. O a at cheie efemer se utilizeaz pe durat scurt, de exemplu pe durata unei a a a a conexiuni sau pentru a cripta un singur mesaj. Ea este creat special a pentru o anumit ocazie i este distrus imediat dup aceea. Deoarece, a s a a din motive de vitez, comunicatia propriu-zis este protejat prin cripa a a tograe simetric i, uneori, prin dispersie cu cheie, cheile efemere sunt as chei simetrice. chei de lung durat (engl. long-term key), utilizate cadrul mecanisa a n melor de stabilire sau certicare a cheilor. Cheile de lung durat pot a a chei simetrice sau chei asimetrice. Mai dm cteva considerente practice legate de stabilirea sau certia a carea cheilor: Numrul de chei pe care trebuie s le posede o entitate pentru a putea a a comunica trebuie s e ct mai mic. Ideal, ecare entitate dispune de o a a singur cheie de lung durat, permitnd o comunicatie securizat cu un a a a a a tert de ncredere. Atunci cnd entitatea are nevoie s comunice cu o alt a a a entitate, obtine, prin intermediul tertului de ncredere, cheia necesar a comunicrii cu partenerul dorit. Dup utilizare, cheia respectiv poate a a a tears. s a Interventia manual stabilirea cheilor trebuie s e minim. Totui, a n a a s un prim transport manual al unei chei este ntotdeauna necesar.

c 2008, Radu-Lucian Lupa s


176 6.3. Stabilirea cheilor

Deoarece cheile de lung durat pot aate de adversari, cheile trea a buie s poat schimbate periodic. De asemenea, dac un adversar a a a nregistreaz comunicatia legat de stabilirea unei chei de sesiune i, ula a s terior, obtine o cheie de lung durat utilizat stabilirea acelei chei a a a n de sesiune, este bine s nu poat s obtin cheia de sesiune, pentru a nu a a a a putea mai departe decripta sesiunea.

6.3.1. Stabilirea cheilor prezenta unui adversar pasiv n


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

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 177

durat. Avantajul obtinut este c dac un adversar obtine cheia secret de a a a a lung durat a lui A, dar a a ntre timp cheia proaspt a expirat i a fost distrus, aa s a adversarul nu mai poate decripta comunicatiile vechi. Solutia varianta simpl este utilizat de PGP/GPG. Aici emitto n a a a rul mesajului are rolul lui B i receptorul are rolul lui A. Emittorul obtine s a cheia public a receptorului, iar la trimiterea unui mesaj genereaz aleator o a a cheie de sesiune, cripteaz mesajul folosind cheia de sesiune i cripteaz cheia a s a de sesiune folosind cheia public a destinatarului. Mesajul transmis contine a cele dou elemente criptate. a Solutia varianta n mbuntit este aplicat de protocolul ssh vera at a a siunea 1. Serverul are rolul lui A, genernd perechile de chei i transmitnd a s a clientului cele dou chei publice. Clientul genereaz cheia de sesiune i i-o a a s trimite serverului criptat pe rnd cu cele dou chei. a a a 6.3.1.2. Stabilirea cheii prin metoda Die-Hellman Protocolul este urmtorul: a 1. Se genenereaz (pe o cale oarecare) un numr prim p mare i un numr a a s a g; 2. A alege un numr aleator x i calculeaz i-i transmite lui B numrul a s as a nA = g x mod p; 3. B alege un numr aleator y i calculeaz i-i transmite lui A numrul a s as a nB = g y mod p; 4. A i B calculeaz cheia de sesiune k astfel: A calculeaz s a a k = (nB )x mod p, iar B calculeaz a k = (nA )y mod p. Cheia de sesiune calculat de cei doi este aceeai: a s (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 cunoscnd doar g, n, g x mod p i g y mod p este a s foarte dicil. a Ca avantaj fat de solutia din paragraful precedent, nu este necesar a a o cheie de lung durat. De asemenea, aplicarea metodei Die-Hellman este a a

c 2008, Radu-Lucian Lupa s


178 6.3. Stabilirea cheilor

mai rapid dect regenerarea la ecare mesaj a unei perechi de chei pentru a a un cifru asimetric. Ca dezavantaj, este necesar o comunicatie interactiv; a a protocolul Die-Hellman nu este aplicabil transmiterii mesajelor prin pot sa electronic. a 6.3.1.3. Atacul man-in-the-middle Protocoalele descrise paragrafele 6.3.1.1 i 6.3.1.2 sunt aplicabile n s doar absenta unui adversar activ. Un adversar activ I se poate interpune n ntre A i B astfel: s comunic cu A jucnd rolul lui B pentru a stabili o cheie de sesiune k1 ; a a comunic cu B jucnd rolul lui A pentru a stabili o cheie de sesiune k2 ; a a decripteaz mesajele trimise de A lui B (acestea ind criptate cu k1 ), a le citete, eventual le modic, dup care le cripteaz (i eventual le s a a a s autentic) utiliznd cheia k2 . a a Rezultatul atacului este c A i B cred c comunic ecare cu cellalt a s a a a cnd de fapt ei comunic cu I. a a Exist metode, bazate pe transmiterea fragmente a mesajelor, care a n mpiedic forma pur a atacului man-in-the-middle; totui, general, pentru a a s n ca A s-l disting pe B de un adversar este necesar ca B s aib o caracteristic a a a a a distinctiv inimitabil; o astfel de caracteristic este cunoaterea unei chei a a a s secrete. Ca urmare, orice comunicatie sigur trebuie s existe cel putin un n a a pas din initializare care s se transfere o cheie n a ntre B i A, sau s ntre B i s un tert de ncredere i s ntre tert i A. s

6.3.2. Stabilirea cheilor prezenta unui adversar activ n


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

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 179

3. Fiecare parte trimite celeilalte o semntur sau o dispersie calculat din a a a informatiile de la punctele 1 i 2. s Primul punct are ca scop obtinerea unei chei pe care s o cunoasc doar prtile a a a ntre care a avut loc schimbul de mesaje. Al doilea punct are rolul de-a asigura c negocierea i, consecint, cheia rezultat este proaspt. Al treilea punct a s n a a aa are rolul de-a asigura ecare parte c mesajele de la punctele 1 i 2 au fost a s schimbate cu partenerul dorit. Dac vericarea semnturii sau dispersiei de a a la punctul 3 eueaz, s a nseamn c protocolul a fost inuentat de un adversar a a activ i, consecint, cheia negociat este compromis. Este esential deci ca, s n a a a pn momentul care vericarea auenticitii mesajelor transmise a fost a a n n at efectuat cu succes, cheia negociat s nu e utilizat. a a a a Exemplul 6.5: Transmiterea unei chei prin criptare simetric se poate face a dup cum urmeaz. Notm cu A i B cele dou entiti care comunic, cu a a a s a at a Kc o cheie pentru criptare simetric, cunoscut doar de A i de B i cu Kh o a a s s cheie pentru dispersie, de asemenea cunoscut doar de A i de B. a s 1. A alege un numr aleator rA i-l transmite lui B. a s 2. B alege cheia de sesiune k. Apoi calculeaz i transmite x = cKc (k) i as s s = hKh (rA k). 3. A decripteaz x obtinnd k i veric dispersia s. a a s a De remarcat c, dac transmisia continnd cheia de sesiune k criptat cu cheia a a a a de lung durat Kc este interceptat de un adversar, iar adversarul obtine a a a ulterior cheia Kc , atunci adversarul poate decripta cheia de sesiune i s ntreaga sesiune protejat cu aceast cheie. a a Exemplul 6.6: Stabilirea cheii de sesiune prin schimb Die-Hellman i auts enticare prin semntur digital se face dup cum urmeaz. Protocolul este, a a a a a cu mici modicri, cel utilizat de ssh versiunea 2. cele ce urmeaz, notm a In a a cu A i B cele dou entiti, cu g i p baza i modulul din schimbul Dies a at s s Hellman, cu KsA i KsB cheile (secrete) de semntur ale lui A i B i cu KvA s a a s s i KvB cheile (publice) de vericare corespunztoare. s a 1. A alege dou numere aleatoare, rA , utilizat pentru asigurarea prospetimii a schimbului de chei, i xA utilizat pentru derivarea cheii prin metoda s Die-Hellman. Apoi A transmite lui B numerele rA i nA = g xA mod p s (unde g i p sunt parametrii pentru Die-Hellman). s 2. B procedeaz similar, alegnd rB i xB i transmitnd rB i nB = a a s s a s xB mod p. g 3. A transmite lui B semntura sA = hKsA (rA nA rB nB ). a

c 2008, Radu-Lucian Lupa s


180 6.3. Stabilirea cheilor

4. analog, B transmite lui A semntura sB = hKsB (rB nB rA nA ). a 5. A veric semntura sB i, dac se potrivete, calculeaz cheia de sesiune a a s a s a k = nxA mod p. B 6. B veric semntura sA i, dac se potrivete, calculeaz cheia de sesiune a a s a s a xB k = nA mod p.

6.3.3. Stabilirea cheilor cu ajutorul unui tert de ncredere


Vom studia continuare problema stabilirii unei chei n ntre dou a entiti A i B care nu partajeaz prealabil nici un fel de cheie, prezenta at s a n n unui adversar activ. Presupunem, schimb, existenta unei a treia entiti n at (un tert de ncredere, engl. trusted third party), T , satisfcnd conditiile: a a A i T partajeaz chei pentru criptare i autenticare (KcA , respectiv s a s KhA ); B i T partajeaz chei pentru criptare i autenticare; (KcB , respectiv s a s KhB ); A i B au s ncredere serviciile oferite de T . n T se mai numete server de distribuire a cheilor (engl. Key Distribution Center s KDC). Mai presupunem c protocolul de stabilire a cheii este initiat de ctre a a A. Ideea solutiei este urmtoarea: serverul T genereaz aleator o cheie a a de sesiune, pe care o transmite lui A i lui B. Transmisia ctre A este criptat s a a i autenticat cu cheia partajat s a a ntre A i T , iar transmisia ctre B este s a criptat i autenticat cu cheia partajat as a a ntre B i T . s Deoarece este de presupus c T face acest serviciu pentru mai multe a entiti, pachetele transmise ctre A i B trebuie s contin i numele lor, at a s a a s astfel at, la primirea pachetului, A i B s tie cine este partenerul cu care nc s as comunic. a Simplicat, protocolul ar urmtorul: a 1. A transmite spre T o cerere clar prin care cere o cheie de sesiune n pentru B; 2. T genereaz o cheie de sesiune k; a 3. T transmite spre A un pachet (A, B, cKcA (k), hKcA (k A B))

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 181

4. T transmite spre B un pachet (A, B, cKcB (k), hKcB (k A B)) 5. A decripteaz cheia de sesiune k i veric dispersia, precum i numele a s a s A i B; s 6. B procedeaz la fel ca i A. a s Protocolul de mai sus ofer doar autenticarea cheii; nu veric i a a s prospetimea acesteia. Vulnerabilitatea introdus este dat de faptul c un a a a adversar poate trimite mesajele de la paii 3 i 4 locul serverului T pentru a s s n forta stabilirea unei chei vechi. Dac adversarul reuete s obtin o cheie de a s s a a sesiune, el poate forta astfel stabilirea aceleiai chei, compromise, sesiunile s n urmtoare. a Pentru vericarea prospetimii, trebuie introduse mesaje nite ele n s mente de control al prospetimii. O prim posibilitate, exploatat de protocolul Kerberos, este adua a a garea unei perioade de valabilitate. Perioada de valabilitate este adugat a a mesajele transmise paii 1, 3 i 4. A i B resping, cadrul pailor 5 n n s s s n s i 6, cheia de sesiune dac timpul curent este afara perioadei de valabilitate s a n nscrise pachete lng cheie. n a a Protocolul Kerberos mai aduce cteva modicri fat de protocolul a a a descris mai sus, una dintre ele ind aceea c mesajul de la pasul 4 este trimis a de T lui A mpreun cu mesajul de la pasul 3, urmnd ca A s-l transmit a a a a ctre B la deschiderea conexiunii ctre acesta. a a O a doua posibilitate, exploatat de protocolul Otway-Rees, se bazeaz a a pe numere aleatoare. Acesta prevede c A i B transmit ctre T cte un numr a s a a a aleator, iar T include numrul aleator transmis de A mesajul de la pasul 3 a n i numrul aleator transmis de B mesajul de la pasul 4. A i B veric, s a n s a n cadrul pailor 5, respectiv 6, c numerele aleatoare incluse mesajul autens a n ticat de la T sunt ntr-adevr numerele trimise de ele. a Utilizarea practic a stabilirii cheilor cu ajutorul unui tert de a ncredere se face construind un server T care creaz chei de sesiune, la cerere, pentru a toate entitile din retea. Astfel, T partajeaz o cheie simetric (de fapt, dou: at a a a una pentru criptare, cealalt pentru auteticare) cu ecare dintre entitile din a at retea. Intr-o retea mare, nu mai este posibil s se lucreze cu un singur a server T , deoarece aceasta ar cere tuturor s aib a a ncredere administran torul serverului T . Pentru stabilirea de chei ntre orice dou entiti aceste a at n

c 2008, Radu-Lucian Lupa s


182 6.3. Stabilirea cheilor

conditii, se construiete un sistem astfel: s Se congureaz mai multe servere de distribuire a cheilor, ecare entitate a avnd o cheie partajat cu unul dintre aceste servere. a a Se congureaz chei partajate a ntre cte dou servere de distribuire a a a cheilor. Aceste chei partajate formeaz legturi securizate a a ntre servere. Graful format de serverele de distribuire a cheilor i de legturile securs a izate trebuie s e conex. a Atunci cnd o entitate A dorete s comunice cu o entitate B, se caut un a s a a lant de servere, T1 ,. . . ,Tn , astfel at A s aib cheie partajat cu T1 , T1 s nc a a a a aib cheie partajat cu T2 , . a. m. d. Apoi, se stabilete, cu ajutorul lui T1 , a a s s o cheie ntre A i T2 ; cu ajutorul lui T2 se stabilete o cheie s s ntre A i T3 s . a. m. d. pn la obtinerea unei chei s a a ntre A i B. s acest sistem, loc s aib toat lumea In n a a a ncredere ntr-un singur server, ecare pereche de entiti care doresc s comunice trebuie s aib at a a a ncredere lantul de servere ce particip la stabilirea cheii. n a

6.3.4. Certicarea cheilor publice


Presupunnd c ecare entitate are o pereche cheie secret cheie a a a public, o entitate A care dorete s comunice cu o entitate B si pune proba s a lema s dobndeasc cheia public a lui B. Cheia public nu este un secret, a a a a a a trebuie ca autenticitatea ei s e vericabil. ns a a Solutia imediat este transportul cheii lui B de ctre un utilizator a a uman (vezi 6.3.5 pentru detalii). Acest lucru nu este a fezabil dect ns a pentru un numr mic de chei. O solutie aplicabil retele mari const a a n a n utilizarea certicatelor. Un certicat este un ansamblu cuprinznd o cheie public, un nume a a de entitate i o semntur a unui tert pe ansamblul celor dou. Tertul sems a a a natar se numete autoritate de certicare. Prin semntur, autoritatea de s a a certicare atest c cheia public din certicat apartine entitii al crei nume a a a at a gureaz certicat. a n Utilizarea certicatelor se face astfel. Dac A nu are cheia public a a a lui B, dar: are cheia public a lui C dintr-o surs sigur, a a a are un certicat pentru B semnat de C, dintr-o surs nesigur, a a are ncredere C c a vericat corect identitatea lui B n a nainte de a-i semna certicatul, atunci A poate verica semntura lui C pe certicatul lui B i, dac este a s a corect, poate prelua cheia lui B de pe certicat. a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 183

Schema de mai sus poate cuprinde mai multe autoriti de certicare, at din care o prim autoritate a crei cheie se obtine prin transport de ctre om a a a i un lant de autoriti din care ecare semneaz certicatul urmtoareia. s at a a Pentru schimbarea cheilor, cazul compromiterii unei chei secrete, n se prevd dou mecanisme: a a expirarea cheilor. Un certicat are durat de valabilitate limitat; data a a creerii i data expirrii sunt de asemenea s a nscrise certicat i semnate n s de autoritatea de certicare. O entitate a crui certicat se apropie a de expirare va crea o nou pereche de chei i va solicita autoritii de a s at certicare eliberarea unui nou certicat pentru noua cheie public. Dup a a expirare, un certicat nu mai este recunoscut de nimeni ca valid i nu s mai este folosit. revocarea certicatelor. Se in, pe servere accesibile public, aa-zise t s certicate de revocare ale certicatelor ale cror chei secrete se consider a a compromise. Un certicat de revocare al unui certicat este un ansamblu cuprinznd datele de identicare ale certicatului revocat i semntura a s a autoritii de certicare a certicatului revocat asupra acelor date de at identicare. Publicarea unui certicat de revocare pentru un certicat anunt a invalidrii certicatului original. O entitate care utilizeaz un certicat a a va verica nainte, de ecare utilizare, dac nu exist un certicat de a a revocare al certicatului respectiv. Certicatul de revocare poate produs doar de ctre autoritatea a de certicare emitent sau de posesorul certicatului. a

6.3.5. Transportul prin utilizatori umani


Orice protocol sigur de stabilire a cheilor are nevoie cel putin o dat a de un canal sigur bazat pe alte mijloace dect cele criptograce. Acest canal a este necesar pentru transportul unei prime chei criptograce, utilizabil pena tru transportul sigur al altor chei. Acest canal sigur implic a ntotdeauna interventia omului, i se prezint sub una din urmtoarele forme: s a a 1. Omul transport, pe un suport amovibil (dischet, CD, DVD, memorie a a ash) sau printr-o legtur ad-hoc securizat (cablu direct), o cheie de a a a pe sistemul surs pe sistemul destinatie. Eventual aceast cheie poate a a cheia public a unei autoriti recunoscute, cheie a at nglobat a ntr-un produs soft (de regul browserele web au a nglobate astfel de chei); 2. Omul citete o informatie de pe sistemul surs i o introduce sau o s a s veric pe sistemul destinatie. Cantitatea de informatie astfel transa

c 2008, Radu-Lucian Lupa s


184 6.3. Stabilirea cheilor

portabil este mic, de ordinul ctorva sute de biti cel mult. Metoda a a a este greu de aplicat pentru informatii secrete, deoarece informatia este aat pe ecranul sistemului surs i ca urmare este vizibil persoanelor s a as a din apropiere. Informatiile astfel transportate sunt de obicei dispersiile criptograce ale unor chei publice. 3. Omul inventeaz o parol i o introduce pe ambele sisteme. Parola este a as utilizat pe post de cheie secret. Omul este utilizat att cu rolul de a a a canal sigur de transport, ct i ca generator de ,,numere aleatoare. a s Ne vom ocupa continuare de aspecte privind implementarea metoden lor 2 i 3. s Metoda 2 necesit o scriere a unui ir de biti a s ntr-o form uor de a s citit de ctre un om. Trebuie inut cont de faptul c omul nu poate atent a t a simultan la un ansamblu prea mare de obiecte diferite (simboluri, grupuri de simboluri, cuvinte). Intre citirile unor astfel de grupuri, omul trebuie sa i poat lua puncte de reper pentru a ti unde a rmas. Ca urmare, un s a s a grup de cifre sau simboluri fr legtur intre ele (adic care nu constituie aa a a a un cuv din vocabularul utilizatorului) nu trebuie s e mai mare de 68 nt a simboluri. O dispersie md5 scris direct hexa cuprinde 32 simboluri (cifre a n hexa); utilizatorul va avea nevoie s pun degetul pe ecran pentru a o citi. a a Dac aceeai dispersie md5 este scris ca 8 grupuri de cte 4 cifre, cu spatiu a s a a sau alt separator ntre grupuri, devine mult mai uor de citit. Pentru iruri s s mai lungi, devine necesar un al doilea nivel de grupare. O alt metod, mai dicil de pus practic, este transformarea a a n a irului de biti s ntr-un ir de cuvinte dintr-un dictionar standard sau s ntr-un ir s de silabe ce alctuiesc cuvinte, probabil fr sens, dar pronuntabile. Pentru un a aa dictionar de 4096 cuvinte, un cuvnt codic 12 biti. O dispersie md5 poate a a scris ca un ir de 11 cuvinte. Un astfel de ir de cuvinte poate memorat a s s mai uor dect secvanta de 32 cifre hexa echivalent. s a a Pentru a aplica metoda 3, remarcm pentru a nceput c o parol ina a ventat i memorat de om nu poate utilizat direct pe post de cheie. Ideal, as a a dac caracterele utilizate pentru parol sunt cele 94 caractere ASCII imprimaa a bile, parola ar avea o entropie de 6,44 biti pe caracter. Se estimeaz c un a a text limbaj natural nu are mai mult de 12 biti pe caracter. O parol ce n a poate memorat rezonabil va avea o entropie cuprins undeva a a ntre aceste dou limite. Pe de alt parte, securitatea unui sistem criptograc se bazeaz a a a pe faptul c entropia cheii este de 1 bit pe cifr binar (vezi 6.1.3). Rezult a a a a de aici dou lucruri: a Parola trebuie trecut printr-un ,,concentrator de entropie a nainte de-a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 185

utilizat ca i cheie. Acest ,,concentrator de entropie poate o functie a s de dispersie (nu neaprat criptograc). a a Parola trebuie s e sucient de lung (i de aleator aleas) ca s furnizeze a a s a a efectiv bitii de entropie necesari. O fraz limbaj natural, utilizat a n a pentru derivarea unei chei de 128 biti, trebuie s aib cam 85 litere ( a a n jur de 20 de cuvinte). De obicei este nerezonabil s cerem unui om s utilizeze o parol cu a a a entropie sucient de mare. acest caz, micorarea lungimii efective a cheii In s derivate din parol trebuie compensat prin a a ngreunarea ncercrii cheilor de a ctre adversar. Mai exact, protocolul ce utilizeaz cheia derivat din parol a a a a trebuie modicat aa fel at s nu permit unui adversar s fac n s nc a a a a ncercarea exhaustiv a cheilor pe maina lui (unde poate dispune de putere mare de a s calcul i nu las urme) ci s trebuiasc s contacteze una din mainile care s a a a a s cunosc cheia (maini care s nregistreaz tentativa i pot refuza un numr prea a s a mare de tentative timp scurt). n Ca terminologie, distingem tentative de spargere o-line, care adn versarul poate verica dac o parol este corect utiliznd doar echipamentele a a a a proprii, i tentative de spargere on-line, care adversarul contacteaz serverul s n a atacat, ncercnd s deschid o conexiune cu parola supus vericrii. Dac o a a a a a a cheie nu poate spart o-line, o lungime efectiv (entropie) de 3040 biti este a a sucient. O parol bun, acest context, trebuie s aib doar 56 cuvinte, a a a n a a sau, dac contine cifre i punctuatie, 1012 caractere. a s

6.4. Numere aleatoare


Un sistem criptograc utilizeaz numere aleatoare, diverse scopuri: a n generarea cheilor, generarea vectorilor de initializare sau a salt-urilor, generarea numerelor unice (nonce). Numerele aleatoare generate trebuie s e uniform distribuite i ina s plus fat de alte aplicatii, numerele aleatoare dependente unul de altul. In a pentru scopuri criptograce trebuie s nu poat prevzute sau inuentate a a a de un eventual adversar. (Conditii similare trebuie ndeplinite de numerele aleatoare utilizate pentru jocuri de noroc cu miz serioas.) a a Exist dou metode utilizabile pentru generarea numerelor aleatoare: a a generatoare zice, care functioneaz pe baza unor fenomene zice sucient a de aleatoare;

c 2008, Radu-Lucian Lupa s


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 sucient de bine numerele pentru ca irul de numere a s rezultat s par aleator. a a

6.4.1. Generatoare zice


Generatoarele zice se mpart mai departe generatoare zice dedn icate, pe de o parte, i dispozitive avnd alte scopuri, dar utilizabile pentru s a producerea de numere aleatoare, pe de alt parte. a Dispozitivele dedicate se pot baza pe zgomotul termic al unui rezistor, dezintegrarea unei substante radioactive sau curentii de aer din interiorul carcasei unui harddisc. Dispozitivele dedicate sunt cele mai sigure i relativ s rapide. Pe de alt parte, utilizatorul este nevoit s aib a a a ncredere c proa ductorul dispozitivului l-a construit corect i nu a instalat o ,,u dosnic, a s sa a permitndu-i acestuia s prevad numerele generate. plus, ind produse a a a In n serie mai mic, dispozitivele sunt relativ scumpe. a Orice dispozitiv periferic prezint un anumit grad de nedeterminism a comportamentul su. De exemplu, s msurm timpul scurs n a a a a ntre momentele care sunt apsate dou taste consecutive i s exprimm printr-un n a a s a a numr durata respectiv. Vom constata c cifrele cele mai putin semnicative a a a ale numrului respectiv sunt destul de aleatoare. Prin anumite prelucrri, a a se poate extrage de aici un ir de numere aleatoare de calitate bun. Alte s a dispozitive utilizabile acest scop sunt: mausul, o videocamer (eventual n a ndreptat spre o acr sau spre o ,,lamp cu lav), placa de retea ( a aici a aa a a ns trebuie mult grij, deoarece pachetele primite de placa de retea pot supravea a gheate de adversar), un ceas (de fapt, dou ceasuri independente, exploatnd a a uctuatia derivei relative a celor dou ceasuri). a Dispozitivele nededicate au ca avantaj pretul mai redus i riscul mai s mic de-a ,,msluite de ctre fabricant. Debitul de biti aleatori produi a a s variaz a functie de utilizarea sistemului; particular, pentru un server a ns n n care nu admite utilizatori locali este dicil de obtinut un debit satisfctor de a a biti aleatori.

6.4.2. Generatoare de numere pseudoaleatoare


Un generator de numere pseudoaleatoare functioneaz astfel: a ecare moment t, generatorul are asociat o stare intern st . Starea In a a intern este o valoare dintr-o multime arbitrar sucient de mare. a a Atunci cnd este nevoie de un numr aleator, acest numr este obtinut a a a aplicnd o functie asupra strii interne. Numrul produs este deci xt = a a a

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 187

f (st ), unde f este o functie xat. a Dup producerea unui numr aleator, starea intern este modicat, a a a a pentru ca urmtorul numr s nu mai aib aceeai valoare. Actua a a a s alizarea strii interne se face pe baza unei a doua functii, g. Avem a deci st+1 = g(st ). Dac functiile f i g ,,amestec sucient de bine bitii, irul pseua s a s doaleator produs, (xt )tIN are proprieti statistice sucient de apropiate de at numerele cu adevrat aleatoare. a De remarcat c a ntregul ir depinde de valoarea strii initiale s0 a s a generatorului; pentru aplicatii non-criptograce i pentru teste, acest lucru s este bun deoarece face comportamentul programelor reproductibil. De asemenea, trebuie remarcat c, deoarece, practic, multimea a n a strilor interne posibile este nit, mai devreme sau mai trziu starea intern a a a a se repet i, ca urmare, a s ntregul ir pseudoaleator este periodic. Perioada s irului pseudoaleator este cel mult egal cu numrul de stri interne posibile. s a a a Pentru o functie g cu comportament apropiat de o functie aleatoare sau de o permutare aleatoare, perioada irului este de ordinul rdcinii ptrate din s a a a numrul de stri interne posibile. a a Pentru scopuri criptograce, sunt necesare cteva proprieti suplia at mentare: Un adversar care cunoate functiile f i g utilizate i cunoate o parte s s s s dintre elementele irului pseudoaleator (xt ) s nu poat calcula alte eles a a mente ale irului pseudoaleator. O conditie necesar pentru aceasta este s a ca functia f s e rezistent la preimagine. O alt conditie necesar este a a a a ca multimea strilor interne posibile s e sucient de mare pentru ca a a explorarea ei prin fort brut s nu e posibil practic. a a a a Starea initial s0 trebuie s e creat pornind de la un generator zic. a a a caz contrar, starea initial este previzibil pentru un adversar i, ca In a a s urmare, ntregul ir este previzibil. s Este bine ca, dac un adversar reuete s obtin starea intern st , s nu a s s a a a a poat calcula numerele pseudoaleatoare deja generate (adic x0 . . . xt1 ). a a Aceast lucru este util pentru ca, dac un adversar reuete s spagr a s s a a un calculator, s nu poat decripta comunicatiile anterioare. Pentru a a a ndeplini aceast cerint, este necesar ca i g s e rezistent la preimaga a s a a ine. Generatoarele de numere pseudoaleatoare utilizate practic nu se n a bazeaz pe generatoare zice doar pentru starea initial s0 , ci modic starea a a a

c 2008, Radu-Lucian Lupa s


188 6.4. Numere aleatoare

intern i timpul functionrii generatorului, pe msur ce obtin biti aleatori a s n a a a de la generatorul zic. Acest lucru are scopul ca, dac un adversar reuete s a s s a obtin starea intern la un moment dat sau s ae starea intern initial, s a a a a a a nu poat prevedea dect o mic parte dintre numerele aleatoare produse ultea a a rior. De asemenea, starea initial nu este generat la pornirea calculatorului, a a ntruct, de obicei, acel moment nu sunt disponibili prea multi biti aleatori a n de la generatoarele zice. Starea intern este salvat la oprirea calculatorua a lui, ntr-un ier ce nu poate citit de utilizatorii obinuiti, i re arcat la s s s nc a pornirea calculatorului.

6.4.3. Generatoare utilizate practic n a


Sistemele de operare moderne ofer utilizatorului generatoare cripa tograce de numere aleatoare gata implementate. Acestea sunt disponibile astfel: Pe unele sisteme de tip unix, ierul special /dev/random ofer numere s a aleatoare de la un generator zic bazat pe actiunile utilizatorului. De asemenea, ierul special /dev/urandom ofer numere pseudoaleatoare s a utilizabile pentru aplicatii criptograce. Sistemul Windows ofer functia CryptGenRandom(), declarat ierul a a n s antet wincrypt.h. De remarcat c utilizarea unor functii non-criptograce pentru genera area numerelor aleatoare, cum ar rand() sau random() din biblioteca C standard este extrem de riscant. a

6.5. Autenticarea utilizatorilor


Prezentm continuare cteva utilizri ale metodelor criptograce a n a a autenticarea utilizatorilor. n

6.5.1. Stocarea parolelor


Un sistem de operare are nevoie s verice parolele utilizatorilor ce a doresc s se conecteze. Solutia trivial este inerea unei baze de date cu a a t corespondenta nume, parol. Aceast solutie (stocarea parolelor clar) are un a a n dezavantaj: un adversar care reuete s sparg sistemul sau un administrator s s a a indiscret poate obtine direct parolele tuturor utilizatorilor. ,,Recolta este valoroas dac utilizatorii folosesc aceleai parole i pe alte sisteme. a a s s O mbuntire a securitii se face prin ,,criptarea parolelor. De a at at fapt, nu este vorba de criptare, ci de transformarea parolei printr-o dispersie

c 2008, Radu-Lucian Lupa s


Capitolul 6. Metode i protocoale criptografice s 189

criptograc h rezistent la preimagine. baza de date este stocat locul a a In a n parolei p transformata parolei s = h(p). La conectarea unui utilizator, sistemul cere parola utilizatorului i s veric, pentru parola introdus p , dac h(p ) = s. Deoarece h este rezistent a a a a la preimagine, probabilitatea ca un adversar, care nu cunoate parola p, s s a gseasc o parol p satisfcnd h(p ) = s este neglijabil de mic. a a a a a a Solutia are continuare o slbiciune, legat de faptul c un adversar n a a a care obtine s poate obtine p printr-un dictionar creat o-line: adversarul ia o multime de parole i, pentru ecare parol, calculeaz i memoreaz dispersia, s a as a obtinnd astfel un dictionar care asociaz dispersiei parola corespunztoare. a a a Inarmat cu un astfel de dictionar, un adversar care obtine s poate regsi foarte a rapid p dac p era dictionarul a n ncercat. Metoda de mai sus poate mbuntit, a at a mpiedicnd crearea unui a dictionar de dispersii i oblignd adversarul s fac toat munca de spargere s a a a a a parolelor dup obtinerea lui s. Conform noii metode, la initializarea parolei, a sistemul genereaz un numr aleator r i scrie ierul de parole perechea a a s n s (r, s) unde s = h(p r). Vericarea parolei p dat de utilizator se face testnd a a dac s = h(p r). Un adversar care ar dori s fac un dictionar ar avea nevoie a a a de un numr de dispersii egal cu produsul dintre numrul de parole de a a ncercat i numrul de valori posibile pentru r. s a Notm c, indiferent de mecanismul folosit la stocarea parolelor, a a un adversar ce a spart un sistem, sau un administrator indiscret, va putea ntotdeauna s obtin parola cu care se conecteaz un utilizator la acel sistem. a a a De exemplu, adversarul poate nlocui programul obinuit de login cu un pros gram care scrie undeva parola clar. Schemele de mai sus protejeaz doar n a parolele neutilizate dup momentul spargerii sistemului. a Mai notm c, vederea transmiterii parolei prin retea, transforma a n a rile descrise mai sus nu pot nlocui criptarea ,,adevrat. Dac, vederea a a a n autenticrii utilizatorului, serverul cere h(p) ( loc de p), atunci h(p) devine a n efectiv parola de conectare prin retea i orice adversar care cunoate h(p) poate s s impersona utilizatorul, fr a avea nevoie de p aa

6.5.2. Parole de unic folosint a a


O parol de unic folosint (engl. One Time Password ) este o parol a a a a care este acceptat de sistem ca ind parol valid cel mult o dat. a a a a Una din aplicatiile parolelor de unic folosint este conectarea la un a a sistem, prezenta unui adversar pasiv, fr a recurge la criptare. Notm c n aa a a aplicativitatea este foarte limitat: a comunicatia neind criptat, metoda este inaplicabil dac datele trans a a a

c 2008, Radu-Lucian Lupa s


190 6.5. Autentificarea utilizatorilor

mise trebuie s rmn secrete; a a a a un adversar activ poate ,,deturna conexiunea dup deschidere i poate a s da orice comenzi numele utilizatorului conectat. n Unul dintre sistemele de parole de unic folosint este descris cona a n tinuare. cele ce urmeaz, h este o dispersie rezistent la preimagine, iar In a a hn (x) = h(h(. . . h(x) . . .)). 1. Utilizatorul alege o parol primar, de lung durat, p. a a a a 2. La initializarea parolei pe sistem, sistemul genereaz i aeaz un numr as s a a aleator, nesecret, r. De asemenea, sistemul aeaz un numr de iteratii, s a a n, precongurat (uzual n = 10000). 3. Utilizatorul calculeaz, cu ajutorul unui dispozitiv de calcul de a ncredere, pn = hn (p r). Apoi transmite pn sistemului pe care dorete s-i cons as gureze autenticarea. 4. Sistemul memoreaz baza de date ansamblul (pn , n, r). a n 5. La prima conectare, sistemul aeaz r i n 1 i cere utilizatorului s a s s s calculeze i s introduc parola de unic folosint pn1 = hn1 (p r). a s a a a a Sistemul veric parola de unic folosint testnd dac h(pn1 ) = pn . a a a a a Apoi sistemul nlocuiete baza de date (pn , n, r) cu (pn1 , n 1, r). s n Un avantaj al sistemului este faptul c parola primar p este cunosa a cut doar de ctre dispozitivul utilizat pentru calculul parolelor de unic a a a particular, calculatorul care autentic utilizatorul nu obtine folosint. In a a niciodat i nici nu poate deduce parola primar. Administratorul unui astas a fel de calculator nu poate impersona utilizatorul pe un alt calculator pe care utilizatorul utilizeaz aceeai parol primar. a s a a Dezavantajul sistemului, fat de parola clasic, este c utilizatorul a a a are nevoie de un dispozitiv de calcul vederea calculrii parolelor de unic n a a folosint. Proceduri de lucru pentru utilizator pot : a Utilizatorul ruleaz local un program pentru calculul parolelor de unic a a folosint. Aceast metod este aplicabil doar dac utilizatorul are a a a a a deplin a ncredere calculatorul local. n Utilizatorul calculeaz, cu ajutorul unui calculator de a ncredere, urmtoaa rele 45 parole de unic folosint i le noteaz pe hrtie. Ca de obicei, a a s a a scrierea parolelor pe hrtie implic un risc, a aarea parolelor de ctre a a ns a un adversar nu permite dect deschiderea unui numr mic de sesiuni i a a s mai ales nu permite aarea, de ctre adversar, a parolei primare. a Utilizatorul folosete un dispozitiv de calcul dedicat. Aceasta este metoda s cea mai sigur, dar i cea mai scump. a s a

Retele de calculatoare
Protocoale

Radu-Lucian Lupa s

c 2008, Radu-Lucian Lupa s


192 Aceasta este editia electronic a crtii Retele de calculatoare, publicat la a a a Casa Crtii de Stiint, 2008, ISBN: 978-973-133-377-9. a a n Drepturile de autor apartin subsemnatului, Radu-Lucian Lupa. s Subsemnatul, Radu-Lucian Lupa, acord oricui dorete dreptul de a copia s s continutul acestei crti, integral sau partial, cu conditia atribuirii corecte autorului i a s a pstrrii acestei notite. a a Cartea poate descrcat gratuit de la adresa a a http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf

c 2008, Radu-Lucian Lupa s


195

Cuprins

Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de retea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei retele de calculatoare . . . . . . . . . . 1.3 Premise generale elaborarea i implementarea protocoalelor retele n s n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notiuni de teoria informatiei 2.1 Problema codicrii informatiei pentru un canal discret . . a 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a codurilor prex . . . . . a 2.2.2 Decodicarea cazul codurilor prex . . . . . . . . . n 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informatie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia ierelor . . . . . . . . . . . . . . . . . . . s 2.4 Coduri detectoare i corectoare de erori . . . . . . . . . . . s 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare i corectoare de erori . s 2.4.3 Cteva coduri detectoare sau corectoare de erori . . . a 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii i coloane . . . . . . . . . . . . . s 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare i corectoare de erori alte domenii s n 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 Lupa s


196 3 Nivelul zic 3.1 Problema transmisiei informatiei la nivelul zic . . . . . . . 3.2 Transmiterea semnalelor . . . . . . . . . . . . . . . . . . . . 3.2.1 Modicrile suferite de semnale . . . . . . . . . . . . . . a 3.2.2 Analiza transmiterii semnalelor cu ajutorul transformatei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Codicarea informatiei prin semnale continue . . . . . . . . 3.3.1 Scheme de codicare . . . . . . . . . . . . . . . . . . . . 3.3.2 Modulatia . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3 Multiplexarea frecvent . . . . . . . . . . . . . . . . n a 3.3.4 Capacitatea maxim a unui canal de comunicatie . . . . a 3.4 Transmisia prin perechi de conductoare . . . . . . . . . . . . 3.4.1 Constructia cablului . . . . . . . . . . . . . . . . . . . . 3.4.2 Proprieti ale mediului . . . . . . . . . . . . . . . . . . at 3.4.3 Legtur magistral . . . . . . . . . . . . . . . . . . . . a a 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 Absorbtia i reexia . . . . . . . . . . . . . . . . . s 3.5.1.3 Difractia . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1.4 Interferenta undelor . . . . . . . . . . . . . . . . . 3.5.1.5 Divergenta 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 actiune a unei legturi radio . . . . . . . . . . a 3.5.3.1 Obstacolele . . . . . . . . . . . . . . . . . . . . . . 3.5.3.2 Linia orizontului . . . . . . . . . . . . . . . . . . . 3.5.3.3 Utilizarea satelitilor articiali ai Pmntului . . . . a a 3.5.3.4 Zgomotul . . . . . . . . . . . . . . . . . . . . . . . 3.5.3.5 Scderea puterii cu distanta . . . . . . . . . . . . . a 3.5.3.6 Emisia directionat i polarizat . . . . . . . . . . as a 3.5.4 Spectrul radio i alocarea lui . . . . . . . . . . . . . . . s 3.5.5 Particulariti ale sistemelor de comunicatie prin radio at 3.5.5.1 Topologia legturii . . . . . . . . . . . . . . . . . . a 3.5.5.2 Fiabilitatea . . . . . . . . . . . . . . . . . . . . . . 3.5.5.3 Securitatea . . . . . . . . . . . . . . . . . . . . . . 3.6 Transmisia optic . . . . . . . . . . . . . . . . . . . . . . . . a 3.6.1 Constructia 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 Lupa s


Cuprins 3.6.2.2 Caracteristici ale mediului . . . . . . . . . . . . . . . . . . . 3.6.2.3 Multiplexarea lungimea de und . . . . . . . . . . . . . . n a 3.6.3 Considerente practice . . . . . . . . . . . . . . . . . . . . . . . . 4 Nivelul legturii de date a 4.1 Detectarea i corectarea erorilor . . . . . . . . . . . . . . . . . . . . s 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 i retransmitere . . . . . . . . . s 4.2.3 Protocoale mixte . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Retransmiterea pachetelor pierdute . . . . . . . . . . . . . . . . . . 4.3.1 Principiul conrmrilor pozitive i retransmiterilor . . . . . . . a s 4.3.2 Trimiterea avans a mai multor pachete . . . . . . . . . . . . n 4.3.3 Spatiul numerelor de conrmare . . . . . . . . . . . . . . . . . 4.4 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Cereri de suspendare i de continuare . . . . . . . . . . . . . . s 4.4.2 Mecanismul pas cu pas . . . . . . . . . . . . . . . . . . . . . . 4.4.3 Mecanism combinat cu retransmiterea pachetelor pierdute . . . 4.5 Multiplexarea timp . . . . . . . . . . . . . . . . . . . . . . . . . . n Nivelul retea i nivelul transport s 5.1 Retransmiterea datelor de ctre nodurile intermediare . . . . . . . . a 5.1.1 Retransmiterea retele bazate pe datagrame . . . . . . . . . . n 5.1.2 Retransmiterea retele bazate pe conexiuni . . . . . . . . . . n 5.2 Algoritmi de dirijare . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 Calculul drumurilor cu informatii complete despre graful retelei 5.2.2 Calculul drumurilor optime prin schimb de informatii 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 aarea rutelor din adresele surs ale pachetelor . . . . Invt a 5.2.5 Metode de difuziune . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Functionarea 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 retelelor . . . . . . . . . . . . . . . . . . . . . . . . Metode i protocoale criptograce s 6.1 Asigurarea condentialitii . . . at 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 Lupa s


198 6.1.4 Algoritmi de criptare utilizati practic . . . . . . . . . . n a 6.1.5 Criptograe asimetric (cu cheie public) . . . . . . . . . . a a 6.1.5.1 Utilizarea criptograei asimetrice . . . . . . . . . . . . 6.2 Autenticarea mesajelor . . . . . . . . . . . . . . . . . . . . . . 6.2.1 Functii de dispersie criptograce . . . . . . . . . . . . . . . 6.2.1.1 Utilizarea functiilor de dispersie . . . . . . . . . . . . . 6.2.2 Functii de dispersie cu cheie . . . . . . . . . . . . . . . . . . 6.2.3 Semntura digital . . . . . . . . . . . . . . . . . . . . . . . a a 6.2.4 Vericarea prospetimii mesajelor . . . . . . . . . . . . . . . 6.2.5 Combinarea criptrii, autenticrii i vericrii prospetimii a a s a 6.3 Stabilirea cheilor . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3.1 Stabilirea cheilor prezenta unui adversar pasiv . . . . . . n 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 prezenta unui adversar activ . . . . . . n 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 practic . . . . . . . . . . . . . . . n a 6.5 Autenticarea utilizatorilor . . . . . . . . . . . . . . . . . . . . . 6.5.1 Stocarea parolelor . . . . . . . . . . . . . . . . . . . . . . . 6.5.2 Parole de unic folosint . . . . . . . . . . . . . . . . . . . a 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 Codicri de interes practic a 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezentri pe biti . . . . . . . . . . . . . . . . . . . . . . a 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 Siruri de biti . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe biti a numerelor ntregi . . . . . . . 7.1.2 Reprezentri pe octeti . . . . . . . . . . . . . . . . . . . . . a 7.1.2.1 Octeti . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 Siruri de octeti . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un numr a ntreg de octeti 7.1.2.4 Reprezentarea numerelor pe un ir arbitar de biti . . . s 7.1.3 Probleme privind reprezentarea lungimii irurilor . . . . . . s 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 Lupa s


Cuprins 7.2 Codicarea textelor . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 Codicarea ASCII . . . . . . . . . . . . . . . . . . . . . . 7.2.2 Codicrile ISO-8859 . . . . . . . . . . . . . . . . . . . . a 7.2.3 Codicrile Unicode . . . . . . . . . . . . . . . . . . . . . a 7.2.3.1 Codicarea UTF-8 . . . . . . . . . . . . . . . . . . . 7.2.3.2 Codicrile UTF-16 . . . . . . . . . . . . . . . . . . a 7.2.3.3 Codicrile UTF-32 . . . . . . . . . . . . . . . . . . a 7.3 Reprezentarea datei i orei . . . . . . . . . . . . . . . . . . . . s 7.3.1 Msurarea timpului . . . . . . . . . . . . . . . . . . . . . a 7.3.2 Obiectivele alegerea reprezentrii timpului calculator n a n 7.3.3 Formate utilizate practic . . . . . . . . . . . . . . . . n a 7.3.3.1 Formatul utilizat de pota electronic . . . . . . . . s a 7.3.3.2 ISO-8601 i RFC-3339 . . . . . . . . . . . . . . . . . s 7.3.3.3 Timpul POSIX . . . . . . . . . . . . . . . . . . . . . 7.3.3.4 TAI 64 . . . . . . . . . . . . . . . . . . . . . . . . . . 7.4 Recodicri . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 7.4.1 Codicarea hexazecimal . . . . . . . . . . . . . . . . . . a 7.4.2 Codicarea baza 64 . . . . . . . . . . . . . . . . . . . . n 7.4.3 Codicri bazate pe secvente de evitare . . . . . . . . . . a 8 Programarea retea introducere n 8.1 Interfata de programare socket BSD . . . . . . . . . . 8.1.1 Comunicatia prin conexiuni . . . . . . . . . . . . 8.1.1.1 Deschiderea conexiunii de ctre client . . . a 8.1.1.2 Deschiderea conexiunii de ctre server . . . a 8.1.1.3 Comunicatia propriu-zis . . . . . . . . . . a 8.1.1.4 Inchiderea conexiunii . . . . . . . . . . . . . 8.1.2 Comunicatia prin datagrame . . . . . . . . . . . 8.1.3 Principalele apeluri sistem . . . . . . . . . . . . 8.1.3.1 Functia socket() . . . . . . . . . . . . . . . 8.1.3.2 Functia connect() . . . . . . . . . . . . . . 8.1.3.3 Functia bind() . . . . . . . . . . . . . . . . 8.1.3.4 Functia listen() . . . . . . . . . . . . . . . 8.1.3.5 Functia accept() . . . . . . . . . . . . . . . 8.1.3.6 Formatul adreselor . . . . . . . . . . . . . . 8.1.3.7 Interactiunea dintre connect(), listen() i s 8.1.3.8 Functiile getsockname() i getpeername() s 8.1.3.9 Functiile send() i recv() . . . . . . . . . s 8.1.3.10 Functiile shutdown() i close() . . . . . . s 8.1.3.11 Functiile sendto() i recvfrom() . . . . . s 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 Lupa s


200 8.2.1 Formate binare . . . . . . . . . . . . . . . 8.2.1.1 Tipuri ntregi . . . . . . . . . . . . . 8.2.1.2 Siruri de caractere i tablouri . . . . s 8.2.1.3 Variabile compuse (struct-uri) . . . 8.2.1.4 Pointeri . . . . . . . . . . . . . . . . 8.2.2 Formate text . . . . . . . . . . . . . . . . 8.2.3 Probleme de robustete i securitate . . . s 8.2.4 Probleme privind costul apelurilor sistem 8.3 Probleme de concurent comunicatie . . . . a n 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

Retele IEEE 802 9.1 Retele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Legturi punct la punct prin perechi de conductoare a 9.1.2 Legturi prin bre optice . . . . . . . . . . . . . . . a 9.1.3 Legturi prin cablu magistral . . . . . . . . . . . . a a 9.1.4 Repetoarele i comutatoarele . . . . . . . . . . . . . s 9.1.5 Dirijarea efectuat de comutatoare (switch-uri) . . . a 9.1.6 Faciliti avansate ale switch-urilor . . . . . . . . . . at 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz de adrese MAC . . . . . . . . a 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Legturi redundante . . . . . . . . . . . . . . . a 9.1.6.5 Retele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei retele . . . . . 9.2 Retele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura retelei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea retelelor 802.11 . . . . . . . . . . . . . .

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

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

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

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

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

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

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

10 Internetul 10.1 Arhitectura retelei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirijrii pachetelor IP . . . . . . . . a 10.2.2.1 Subretele i interfete . . . . . . . . . . s 10.2.2.2 Prexul de retea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor i prexelor . . s 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de retea . . . . . . . 10.2.4 Alocarea adreselor IP i prexelor de retea s 10.2.4.1 Alocarea pe utilizri . . . . . . . . . . a 10.2.4.2 Alocarea adreselor i dirijarea ierarhic s a

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

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

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

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

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

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

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

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

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

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

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

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

c 2008, Radu-Lucian Lupa s


Cuprins 10.2.5 Erori la dirijare i protocolul ICMP . . . . . . . . . . . . . . . . s 10.2.5.1 Pachete nelivrabile . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.2 Diagnosticarea functionrii rutelor . . . . . . . . . . . . . . a 10.2.5.3 Ciclarea pachetelor IP . . . . . . . . . . . . . . . . . . . . . 10.2.5.4 Congestia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5.5 Redirectionarea . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.6 Alte chestiuni privind dirijarea pachetelor . . . . . . . . . . . . . 10.2.6.1 Dimensiunea maxim a pachetelor i fragmentarea . . . . . a s 10.2.6.2 Calitatea serviciului . . . . . . . . . . . . . . . . . . . . . . 10.2.7 Congurarea i testarea unei retele IP locale . . . . . . . . . . . s 10.2.7.1 Alegerea parametrilor . . . . . . . . . . . . . . . . . . . . . 10.2.7.2 Congurarea parametrilor de retea pe diverse sisteme de op erare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.7.3 Testarea i depanarea retelelor . . . . . . . . . . . . . . . . s 10.3 Nivelul transport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1 Conexiuni cu livrare garantat: protocolul TCP . . . . . . . . . a 10.3.1.1 Principiul conexiunii TCP . . . . . . . . . . . . . . . . . . . 10.3.1.2 Comunicatia bidirectional . . . . . . . . . . . . . . . . . . a 10.3.1.3 Deschiderea i s nchiderea conexiunii . . . . . . . . . . . . . 10.3.1.4 Alegerea numrului initial de secvent . . . . . . . . . . . . a a 10.3.1.5 Inchiderea fortat a conexiunii . . . . . . . . . . . . . . . . a 10.3.1.6 Identicarea aplicatiei destinatie . . . . . . . . . . . . . . . 10.3.1.7 Corespondenta ntre functiile socket() i actiunile modulu s lui TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.8 Controlul uxului . . . . . . . . . . . . . . . . . . . . . . . . 10.3.1.9 Stabilirea time-out-ului pentru retransmiterea pachetelor . . 10.3.1.10Algoritmul lui Nagle i optimizarea numrului de pachete . s a 10.3.1.11Trimiterea datelor speciale (out of band) . . . . . . . . . . . 10.3.2 Datagrame nesigure: UDP . . . . . . . . . . . . . . . . . . . . . 10.4 Identicarea nodurilor dup nume: sistemul DNS . . . . . . . . . . . a 10.4.1 Numele de domeniu . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Structura logic a bazei de date DNS . . . . . . . . . . . . . . . a 10.4.3 artirea domenii de autoritate . . . . . . . . . . . . . . . . Imp n 10.4.4 Mecanismul de interogare a serverelor . . . . . . . . . . . . . . . 10.4.5 Sincronizarea serverelor pentru un domeniu . . . . . . . . . . . . 10.4.6 Cutarea numelui dup IP . . . . . . . . . . . . . . . . . . . . . a a 10.5 Legturile directe a ntre nodurile IP . . . . . . . . . . . . . . . . . . . 10.5.1 Rezolvarea adresei ARP . . . . . . . . . . . . . . . . . . . . . 10.6 Congurarea automat a statiilor DHCP . . . . . . . . . . . . . . a 10.7 Situatii speciale dirijarea pachetelor . . . . . . . . . . . . . . . . . n 10.7.1 Filtre de pachete (rewall) . . . . . . . . . . . . . . . . . . . . . 10.7.2 Retele private . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.7.3 Translatia adreselor (NAT) . . . . . . . . . . . . . . . . . . . . . 10.7.3.1 Translatia 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 Lupa s


202 Cuprins 10.7.3.2 Translatia adresei destinatie . . . . . . . . . . . . . . . . . . 350 10.7.4 Tunelarea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 11 Aplicatii retele n 11.1 Pota electronic . . . . . . . . . . . . . . . . . . . . . . . . s a 11.1.1 Formatul mesajelor . . . . . . . . . . . . . . . . . . . 11.1.1.1 Antetul mesajelor . . . . . . . . . . . . . . . . . . 11.1.1.2 Extensii MIME . . . . . . . . . . . . . . . . . . . 11.1.1.3 Ataarea ierelor i mesaje din mai multe prti s s s a 11.1.1.4 Codicarea corpului mesajului i a ataamentelor s s 11.1.2 Transmiterea mesajelor . . . . . . . . . . . . . . . . . 11.1.2.1 Protocolul SMTP . . . . . . . . . . . . . . . . . . 11.1.2.2 Determinarea urmtorului MTA . . . . . . . . . a 11.1.2.3 Congurarea unui MTA . . . . . . . . . . . . . . 11.1.3 Securitatea potei electronice . . . . . . . . . . . . . . s 11.2 Sesiuni interactive la distant . . . . . . . . . . . . . . . . a 11.2.1 Protocolul ssh . . . . . . . . . . . . . . . . . . . . . . 11.2.1.1 Conexiunea ssh protejat criptograc . . . . . . a 11.2.1.2 Metode de autenticare ssh . . . . . . . . . . . n 11.2.1.3 Multiplexarea conexiunii, tunelarea i aplicatii . s 11.2.2 Sistemul X-Window . . . . . . . . . . . . . . . . . . . 11.3 Transferul ierelor retea . . . . . . . . . . . . . . . . . s n 11.3.1 Protocolul ftp . . . . . . . . . . . . . . . . . . . . . . 11.3.2 Protocolul HTTP . . . . . . . . . . . . . . . . . . . . 11.3.2.1 Structura cererilor i a rspunsurilor . . . . . . . s a 11.3.2.2 URL-urile . . . . . . . . . . . . . . . . . . . . . . 11.3.2.3 Alte faciliti HTTP . . . . . . . . . . . . . . . . at 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 i subchei . . . . . . . . . . . . . . s 11.4.1.2 Utilizatori i identiti . . . . . . . . . . . . . . . s at 11.4.1.3 Generarea i modicarea cheilor . . . . . . . . . . s 11.4.1.4 Controlul perioadei de valabilitate a cheilor . . . 11.4.1.5 Gestiunea cheilor secrete . . . . . . . . . . . . . . 11.4.2 Transmiterea i certicarea cheilor publice . . . . . . . s 11.4.2.1 Transmiterea cheilor publice . . . . . . . . . . . . 11.4.2.2 Vericarea autenticitii cheilor . . . . . . . . . . at 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 Lupa s


203

Capitolul 7

Codicri de interes practic a

7.1. Probleme privind reprezentarea numerelor ntregi


Pn aici am privit un mesaj transmis printr-o retea ca un ir de sima a s boluri dintr-un alfabet nit. Intre simbolurile ce alctuiesc irul se stabilete o a s s ordine, existnd un prim element al irului, un al doilea, etc. Transmisia elea s mentelor se face ordinea care apar ele ir, primul simbol transmis ind n n n s cel care ocup prima pozitie din ir. Pn aici am considerat c transmisia a s a a a unui ir de la un dispozitiv la altul conserv ordinea s a ntre elemente. Aa cum vom vedea a paragraful de fat, din ratiuni legate s ns n a de standardizarea reprezentrii numerelor a ntregi, transmiterea unui ir nu s conserv a ntotdeauna ordinea elementelor. cele ce urmeaz, vom examIn a ina interferentele ntre reprezentarea numerelor calculator i ordinea simn s bolurilor ce alctuiesc un mesaj. Vom oferi cititorului o perspectiv, inspirat a a a din [Cohen 1980] i mai putin alnit alte lucrri, asupra relatiilor dintre s nt a n a biti, octeti i reprezentarea numerelor. s

7.1.1. Reprezentri pe biti a


paragraful de fat vom face abstractie de anumite complicatii conIn a structive ale sistemelor de calcul reale. Vom considera reprezentri pe biti, a ignornd deocamdat aspectele legate de gruparea bitilor octeti i de faptul a a n s c, memoria calculatorului, adresele identic octeti i nu biti. a n a s Ca urmare, rugm cititorul s uite, pentru moment, notiunea de octet a a (byte).

c 2008, Radu-Lucian Lupa s


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 din dou motive. Pe de o parte, este cel mai mic a a alfabet posibil, ca urmare alegerea unui alfabet cu dou elemente aduce o a anumit simplitate i naturalete constructiei matematice. Pe de alt parte, a s a din punct de vedere practic, al constructiei echipamentelor zice, dispozitive cu dou stri stabile sunt mult mai uor de construit dect dispozitive cu mai a a s a multe stri. a scris, cele dou simboluri sunt notate mod obinuit cu 0 i 1. In a n s s Atragem atentia c: a Alegerea celor dou simboluri utilizate, precum i a corespondentei dintre a s starea dispozitivului zic i simbolul asociat, poate fcut oricum. s a a Odat a fcut o alegere, aceasta trebuie respectat de toate entitile a ns a a a at implicate comunicatie. n Numai unele cazuri simbolurile au rol de cifr, adic au asociate valn a a ori numerice. Valoarea numeric a unui simbol este important doar a a dac simbolul este interpretat ca numr sau intr reprezentarea unui a a a n numr. restul cazurilor, este important doar s existe simboluri disa In a tincte. Un simbol dintr-un alfabet cu dou elemente se numete bit, de la a s binary digit (rom. cifr binar ). a a 7.1.1.2. Siruri de biti cadrul unui ir de biti, avem nevoie s identicm ecare bit al In s a a irului. Pentru aceasta, se stabilete o ordine a bitilor: avem un prim bit, un s s al doilea bit, etc. Trebuie remarcat a c ordinea este o conventie: nu exist o ns a a legtur direct a a a ntre ordinea conventional a unui ir de biti i amplasamentul a s s dispozitivelor zice care memoreaz acei biti. Numrul de ordine al unui bit, a a cadrul acestei ordini conventionale, se numete mod obinuit pozitia (sau, n s n s eventual, adresa sau deplasamentul ) bitului. Numerotarea pozitiilor se face de obicei ncepnd de la 0 sau de la 1; cele ce urmeaz vom utiliza numerotarea a n a de la 0. La transmiterea unui ir de biti, este natural ca primul bit transmis, s considernd ordinea cronologic, s e primul bit al irului (pozitia 0). La a a a s memorarea unui ir s ntr-o memorie cu acces direct (memorie RAM sau ier s pe disc), este natural ca celula cu adresa cea mai mic, dintre celulele alocate n a irului, s e plasat primul bit al irului (bitul de pe pozitia 0). acest fel, s a s In primul bit al unui ir s nseamn, simultan, bitul de pe pozitia (conventional) a a 0, bitul transmis primul (cronologic) i bitul memorat la adresa cea mai mic. s a

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 205

7.1.1.3. Reprezentarea pe biti a numerelor ntregi Reprezentarea numerelor naturale prin iruri de biti se bazeaz pe s a ceea ce matematicienii numesc reprezentare pozitional baza 2, pe care o a n presupunem cunoscut. reprezentarea a In ntr-o baz de numeratie, distingem a cifra unitilor, avnd ponderea 20 = 1, cifra de pondere 21 = 2 ( baza zece at a n s-ar numi cifra zecilor; pentru baza 2 nu avem un nume), cifra de pondere 22 = 4, etc. Exist dou alegeri posibile cu privire la legtura dintre ponderile a a a cifrelor numr i pozitiile lor ir: n a s n s 1. Primul bit al irului este cifra de pondere maxim. Aceasta alegere s a este identic celei utilizate scrierea numerelor limbile ,,obinuite a n n s (indo-europene), cu scriere de la stnga spre dreapta. Se mai numete a s big endian. aceast schem de reprezentare, un ir de biti b0 b1 . . . bn1 In a a s reprezint numrul a a b0 2n1 + b1 2n2 + . . . + bn1 20 . 2. Primul bit al irului este cifra de pondere 1. Aceast reprezentare este s a asemntoare scrierii numerelor limbile semite (araba i ebraica, cu a a n s scriere de la dreapta spre stnga i unde numerele sunt scrise tot cu cifra a s unitilor dreapta). Se mai numete little endian. at n s Aceast alegere are avantajul unei scrieri mai simple a relatiei dina tre valoarea numrului i irul de biti: valoarea unui numr reprezentat a s s a pe n biti este b0 20 + b1 21 + . . . + bn1 2n1 . Fiind dou scheme de reprezentare distincte, dac un sistem transa a mite un numr reprezentare little endian, iar cellalt sistem interpreteaz a n a a irul de biti primit ca ind s ntr-o reprezentare big endian, receptorul ,, elege nt alt numr dect cel transmis de emittor. Ca urmare, orice protocol care spea a a cic transmitere binar a numerelor trebuie s precizeze dac se utilizeaz o a a a a a reprezentare little endian sau una big endian. Exemplul 7.1: Fie irul de biti 11001, care am scris primul bit ( sensul s n n din 7.1.1.2) pe pozitia cea mai din stnga. a Dac acest ir este reprezentarea big endian a unui numr, numrul a s a a respectiv este 25. Dac reprezentarea a fost fcut format little endian, a a a n numrul este 19. a

c 2008, Radu-Lucian Lupa s


206 7.1. Probleme privind reprezentarea numerelor ntregi

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

7.1.2. Reprezentri pe octeti a


paragraful precedent, am ignorat mod deliberat notiunea de In n octet (byte) i am presupus c, memorie, ecare bit ar avea o adres indis a n a vidual. Vom studia, continuare, problemele legate de gruparea, cadrul a n n sistemelor de calcul reale, a bitilor octeti i de faptul c, general, ordinea n s a n bitilor octeti nu este vizibil programatorului. n a 7.1.2.1. Octeti memoria calculatoarelor, bitii sunt grupati grupuri de dimenIn n siune x, mod obinuit cte 8 biti. Un astfel de grup se numete octet a n s a s (denumire intrat pe lier francez) sau bait (adaptare a englezescului byte). a a a Un octet poate privit dou moduri distincte: n a ca un ir de 8 biti, s ca un numr a ntreg cuprins ntre 0 i 255. s Echivalenta ntre aceste dou moduri de-a privi un octet este o problem ce a a necesit mult atentie. Dac identicm bitii dup ponderile lor, exist o a a a a a a corespondent biunivoc a a ntre un astfel de grup de 8 biti i un numr s a ntreg ntre 0 i 255. Dac a identicm bitii dup pozitia lor irul de 8 biti s a ns a a n s (bitul 0, bitul 1,. . . , bitul 7), atunci corespondenta biunivoc a ntre numr i a s ir de biti exist doar dup ce am stabilit o corespondent s a a a ntre pozitia unui bit ir i ponderea sa (big endian, little endian sau eventual o corespondent n s s a mai complicat). a Dup modul care se identic bitii unui octet denitia operatiilor a n a n efectuate de diverse componente ale unui sistem de calcul, operatiile se pot arti trei categorii: mp n 1. Operatii pentru care bitii se identic dup pondere sau, echivalent, a a octetul este privit ca numr. Aici se a ncadreaz operatiile aritmetice i a s operatiile de deplasare pe biti. De remarcat c operatiile deplasare la a stnga (engl. shift left), respectiv deplasare la dreapta (engl. shift right) a pot descrise termeni de operatii aritmetice: deplasarea la stnga n a este o nmultire cu 2, iar deplasarea la dreapta este o artire la 2. mp acest context, ,,spre stnga i ,,spre dreapta In a s nseamn spre pozitiile a cu pondere mai mare, respectiv mai mic, neavnd nici o legtur cu a a a a

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 207

primele sau cu ultimele pozitii. Aceste operatii sunt efectuate de uni tatea aritmetic din microprocesorul calculatorului. a 2. Operatii pentru care bitii sunt identicati dup numrul lor de ordine a a sau, echivalent, octetul este privit ca un ir arbitrar de biti, fr a avea s aa asociat o valoare numeric. Aici intr transmiterea bit cu bit (transa a a mitere serial) a unui octet. Aceast operatie este efectuat de placa de a a a retea i de alte adaptoare seriale (de exemplu, adaptoarele USB). Tot s aici s-ar ncadra, dac ar exista, o operatie de obtinere sau de modicare a a unui bit (al octetului) identicat prin numrul su de ordine. O asemea a nea operatie nu este oferit, mod normal, a n ntr-un sistem de calcul nu exist o instructiune care s extrag, de exemplu, bitul numrul 5 a a a a dintr-un octet. 3. Operatii care pot denite e identicnd bitii dup ponderea lor, e a a identicnd bitii dup numrul lor de ordine. aceast categorie se a a a In a ncadreaz transmiterea unui octet ca un tot unitar, vericarea egalitii a at a doi octeti i operatiile logice pe bit (i, sau, sau exclusiv i negatia). s s s Pentru oricare dintre aceste operatii, dac denim operatia identi a cnd bitii dup numrul lor de ordine, efectul ei asupra valorii numerice a a a a octetului nu depinde de corespondenta aleas a ntre pozitiile bitilor i s ponderile lor. aceste conditii, interiorul unui calculator, bitii din cadrul unui In n octet sunt identicati dup ponderea lor. constructia calculatorului, proiec a In tantul are grij ca atunci cnd un bit avnd, a a a ntr-un modul al calculatorului, o anumit pondere este transferat ctre alt modul al calculatorului, s ajung a a a a acolo pe o pozitie cu aceeai pondere. s La transmisia unui octet ntre dou sisteme de calcul, mecanismele a de transmisie sunt astfel construite at s transmit valoarea octetului. nc a a Intruct, prin mediul zic al retelei, bitii sunt transmii secvential, bitii unui a s octet sunt aici identicati prin numrul lor de ordine in cadrul transmisiei. a Pentru a pstra valoarea octetului timpul transmisiei prin mediul retelei, a n corespondenta dintre numrul de ordine al unui bit i ponderea sa (little en a s dian sau big endian) trebuie s fac parte din specicatiile protocolului de a a nivel zic al retelei. Numerotarea bitilor unui octet intervine, de asemenea, descrierea n unor scheme de reprezentare a datelor unde un numr este reprezentat pe un a grup de biti ce nu formeaz un numr a a ntreg de octeti. Este cazul schemelor de reprezentare pentru structuri de date ce contin cmpuri de 1 bit, 2 biti, 12 a biti, etc. Si aici este necesar s se specice dac numerotarea bitilor este little a a

c 2008, Radu-Lucian Lupa s


208 7.1. Probleme privind reprezentarea numerelor ntregi

endian sau big endian. Mai multe detalii despre astfel de reprezentri vor a studiate 7.1.2.4. n 7.1.2.2. Siruri de octeti Ca i cazul bitilor (vezi 7.1.1.2), i cu octetii putem construi s n s iruri. cadrul unui ir de octeti, octetii sunt aezati s In s s ntr-o ordine, existnd a un prim octet (numerotat ca octetul 0), al doilea octet (pozitia 1), etc. La transmisia printr-o legtur retea, primul octet al irului este, cronologic, a a n s primul octet transmis. La memorare, primul octet este cel memorat la adresa cea mai mic. a virtutea celor dou moduri de-a privi un octet, un ir de n octeti In a s poate , la rndul lui, privit ca: a un ir de 8n biti, s un ir de n numere, ecare cuprins s ntre 0 i 255. s Pentru a putea privi un ir de n octeti ca un ir de 8n biti, este necesar s s s avem o numerotare, bine denit, a bitilor cadrul unui octet. Rezult un a a n a ir de biti care s n ntre pozitia pB a unui bit irul de 8n biti, pozitia pBO n s a bitului cadrul octetului care se gsete i pozitia pO a acelui octet n n a s s n irul de octeti are loc relatia: s pB = 8 pO + pBO . (7.1)

Relatia de mai sus are aceast form simpl dac se utilizeaz numerotare de a a a a a la 0; pentru numerotarea de la 1, forma relatiei e mai complicat. a Transmiterea unui ir de octeti printr-o conexiune, precum i mems s orarea irului s ntr-un ier pe disc urmat de citirea lui s a napoi memorie, n pstreaz ordinea i valorile octetilor din ir. Valorile octetilor sunt pstrate a a s s a dac privim octetii ca numere a ntre 0 i 255; dac privim octetii ca iruri de s a s 8 biti, valorile octetilor se pstreaz numai dac pe ambele sisteme utilizm a a a a aceeai corespondent s a ntre numerele de ordine i ponderile bitilor. s 7.1.2.3. Reprezentarea numerelor pe un numr a ntreg de octeti Cel mai mare numr ce poate reprezentat pe un octet este 255, a ceea ce este mult prea putin pentru majoritatea aplicatiilor. Pentru a putea reprezenta numere din intervale mai largi, sunt necesare scheme de reprezentare pe mai mult de 8 biti. Schemele cele mai simple sunt cele care utilizeaz un a numr a ntreg de octeti; acestea vor prezentate continuare. Schemele de n reprezentare ce utilizeaz iruri de biti ce nu formeaz neaprat un numr a s a a a ntreg de octeti vor studiate 7.1.2.4. n

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 209

Deoarece un octet are valoarea ntre 0 i 255, putem considera ecare s octet ca ind o cifr baza 256. Reprezentarea unui numr printr-un ir de a n a s octeti se face ca reprezentare pozitional baza 256. Exist dou reprezentri a n a a a 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 numrul de a n2 . a. m. d., octeti ai reprezentrii), al doilea octet are ponderea 256 a s penultimul octet are ponderea 256, iar ultimul octet are ponderea 1. Reamintim c prin primul octet elegem octetul care este transmis primul, a nt ordine cronologic, de la un dispozitiv la altul i, totodat, octetul memorat n a s a la adresa cea mai mic. a Exemplul 7.2: Descriem mai jos reprezentarea numrului 300 schemele a n de reprezentare little endian i big endian, pe 2 i pe 4 octeti. Pentru ecare s s dintre aceste patru scheme de codicare, este dat irul de octeti ce reprezint s a numrul 300. a pozitie octet (nr. ordine) 0 1 2 3 Valorile octetilor pentru diverse reprezentri a 2 octeti 2 octeti 4 octeti 4 octeti big endian little endian big endian little endian 1 44 0 44 44 1 0 1 1 0 44 0

De exemplu, cadrul reprezentrii pe 2 octeti format big endian, n a n valoarea numrului reprezentat se regsete ca valoarea octetului 0 a a s nmultit a cadrul cu 256 plus valoarea octetului 1, anume: 1 256 + 44 = 300. In reprezentrii pe 4 octeti format little endian, octetul 0 are ponderea 2560 = a n 1, octetul 1 are ponderea 2561 = 256, octetul 2 are ponderea 2562 = 65536, iar octetul 3 are ponderea 2563 = 16218368. Valoarea numrului reprezentat a este 44 1 + 1 256 + 0 2562 + 0 2563 = 300

Unitatea aritmetic a calculatorului poate efectua operatii aritmeta ice asupra numerelor reprezentate pe 2 octeti sau, pentru unele calculatoare, pe 4 sau 8 octeti. Pe unele calculatoare, unitatea aritmetic lucreaz cu nu a a mere reprezentate dup sistemul big endian; pe alte calculatoate, unitatea a

c 2008, Radu-Lucian Lupa s


210 7.1. Probleme privind reprezentarea numerelor ntregi

aritmetic cere reprezentare little endian. Dup acest criteriu, calculatoarele a a ale cror uniti aritmetice lucreaz cu numere reprezentate pe mai mult de a at a un octet se mpart calculatoare little endian i calculatoare big endian. n s Variabilele de tip ntreg, majoritatea limbajelor de programare, n sunt reprezentate pe 2, 4 sau 8 octeti, ordinea xat de unitatea aritmetic. n a a Este posibil utilizarea, pentru anumite variabile a ntregi, a unei reprezentri a diferite de cea a unitii aritmetice. De asemenea, se pot utiliza reprezentri at a pe mai multi octeti dect permite unitatea aritmetic. La manipularea aces a a tor variabile, programatorul trebuie s aib vedere c operatiile aritmetice a a n a ,,normale e nu pot executate deloc, e nu se efectueaz corect asupra lor. a Astfel de numere se manipuleaz, de obicei, prelucrnd separat ecare octet. a a La memorarea pe disc sau la transmiterea printr-o conexiune, trebuie stabilit printr-un standard dac se utilizeaz un format little endian sau big a a endian, precum i numrul de octeti pe care se reprezint ecare numr memos a a a rat sau, respectiv, transmis. Majoritatea protocoalelor pentru Internet prevd a formate big endian pentru numerele ntregi transmise. Multe dintre formatele de iere prevd formate little endian. Exist i formate (de exemplu, fors a a s matul TIFF pentru imagini, formatele UTF-16 i UTF-32 pentru texte) care s permit emittorului s aleag formatul dorit i prevd un mecanism prin care a a a s a emittorul informeaz receptorului despre alegerea fcut. a a a a Dac formatul de pe disc sau de pe conexiune coincide cu formatul a unitii aritmetice locale, un program poate transfera direct iruri de octeti at s ntre o variabil a ntreag local i ierul de pe disc sau, respectiv, conexiunea a as s spre cellalt calculator. Dac formatul de pe disc sau de pe conexiune este a a invers fat de cel local, un program care transfer date trebuie s inverseze a a a ordinea octetilor imediat nainte de scrierea pe disc sau de trimiterea pe conexiune, precum i imediat dup citirea de pe disc sau receptionarea de pe s a conexiune. 7.1.2.4. Reprezentarea numerelor pe un ir arbitar de biti s Ne vom ocupa continuare de metode de reprezentare, pentru nun mere ntregi, care bitii ce intr reprezentarea unui numr nu formeaz n a n a a neaprat un numr a a ntreg de octeti. O astfel de schem este o generalizare a a schemei prezentate paragraful precedent. n O astfel de metod de reprezentare se bazeaz pe reprezentarea nua a merelor baza 2 (vezi i 7.1.1.3). Pentru ca o astfel de schem s e n s a a complet denit, este necesar s e stabilit (standardizat) corespondenta a a a a descrierea dintre pozitia ecrui bit din reprezentare i ponderea asociat. In a s a

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 211

unei astfel de scheme de reprezentare, trebuie precizate trei lucruri: dac reprezentarea numrului prin irul de biti se face dup metoda big a a s a endian sau little endian; dac numerotarea bitilor cadrul ecrui octet se face a n a ncepnd de a la bitul de pondere 1 (adic valoarea octetului este reprezentat dup a a a schema little endian) sau ncepnd de la bitul de pondere 128 (adic a a valoarea octetului este reprezentat dup schema big endian). a a dac numerotarea bitilor cadrul irului de biti se face dup relatia (7.1) a n s a sau dup o alt metod. a a a Intr-o schem de reprezentare ,,rational, la primele dou puncte se utilizeaz a a a a e formatul big endian pentru amndou, e formatul little endian pentru a a amndou, iar la punctul al treilea se utilizeaz relatia (7.1). a a a Rezult astfel dou metode coerente: a a aceast metod, numerotarea bitilor big endian. In a a ncepe cu cel mai semnicativ bit al primului octet, iar dup cel mai putin semnicativ a bit al primului octet urmeaz cel mai semnicativ bit al celui de-al doilea a octet. Orice numr, indiferent pe ci biti s-ar reprezenta, se reprezint a at a format big endian. n little endian. aceast metod, numerotarea bitilor In a a ncepe cu cel mai putin semnicativ bit al primului octet, iar dup cel mai semnicativ a bit al primului octet urmeaz cel mai putin semnicativ bit al celui dea al doilea octet. Orice numr, indiferent pe ci biti s-ar reprezenta, se a at reprezint format little endian. a n cadrul acestor dou metode, dac reprezentm un numr folosind un ir de In a a a a s biti ce formeaz un numr a a ntreg de octeti, formatele de reprezentare rezultate coincid cu formatele de reprezentare pe octeti studiate paragraful precedent. n Exemplul 7.3: Considerm o schem de reprezentare pentru dou numere a a a ntregi, a i b, care a se reprezint pe 4 biti i b se reprezint pe 12 biti. s n a s a In total avem 4 + 12 = 16 biti, adic 2 octeti. a Dac alegem metoda big endian, schema de reprezentare va utiliza cei a mai semnicativi 4 biti ai primului octet pentru a-l reprezenta pe a, ceilalti 4 biti ai primului octet vor cei mai semnicativi 4 biti ai lui b, iar cel de-al doilea octet va contine cei mai putin semnicativi 8 biti din b. Aceast schem a a de reprezentare este ilustrat gura 7.1, cu valori concrete a = 11 i b = 300. a n s Dac alegem metoda little endian, schema de reprezentare va utiliza a cei mai putin semnicativi 4 biti ai primului octet pentru a-l reprezenta pe a, ceilalti 4 biti ai primului octet vor cei mai putin semnicativi 4 biti ai lui b,

c 2008, Radu-Lucian Lupa s


212 7.1. Probleme privind reprezentarea numerelor ntregi

iar cel de-al doilea octet va contine cei mai semnicativi 8 biti din b. Aceast a schem de reprezentare este ilustrat gura 7.2, cu valori concrete a = 11 a a n i b = 300. s
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 ca ir de biti a s

Valoare (binar) c3 c4 1 0 0 1

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

(b) Valorile octetilor. La scrierea valorilor bitilor octet n (coloana din mijloc) s-a utilizat conventia obinuit, de-a scrie s a cifrele mai semnicative stnga. n a

Figura 7.1: Reprezentare big endian pentru numrul 11 pe 4 biti urmat de a numrul 300 reprezentat pe 12 biti (exemplul 7.3). a

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 ca ir de biti a s

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 octetilor. La scrierea valorilor bitilor octet n (coloana din mijloc) s-a utilizat conventia obinuit, de-a scrie s a cifrele mai semnicative stnga. n a

Figura 7.2: Reprezentare little endian pentru numrul 11 pe 4 biti urmat de a numrul 300 reprezentat pe 12 biti (exemplul 7.3). a

Un alt exemplu care avem de-a face cu numere reprezentate pe n iruri arbitrare de biti este legat de aa-zisa codicare baza 64, descris s s n a n 7.4.2.

7.1.3. Probleme privind reprezentarea lungimii irurilor s


Oridecteori se transmite un ir de obiecte, este necesar ca receptorul a s s poat determina numrul de obiecte transmise. Acest lucru este valabil a a a

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 213

indiferent de natura obiectelor: biti, octeti, cifre zecimale, caractere ale unui text, numere cadrul unui ir de numere. n s Exist trei metode de a face ca receptorul s poat determina numrul a a a a de obiecte ce-i sunt transmise: Numrul de obiecte este xat. acest caz, indiferent de valorile datelor a In ce se transmit, numrul de obiecte transmise este acelai. Metoda este a s utilizat frecvent la memorarea unui ir memoria RAM sau pe disc, a s n deoarece permite alocarea de la nceput a memoriei pentru reprezentarea lui i permite accesul direct la datele memorate dup irul discutie. s as n Dezavantajul principal al metodei este acela c dimensiunea xat trea a buie astfel aleas at s e sucient orice caz ce poate s apar a nc a a n a a la executie. De asemenea, trebuie s existe o valoare potrivit pentru a a pozitiile ,,neutilizate din ir; de exemplu, reprezentarea numerelor, s n pozitiile cele mai semnicative se completeaz cu zerouri. a Deoarece la transmisia printr-o conexiune nu se poate pune problema accesului direct (adic altfel dect secvential) la date, metoda este a a putin utilizat transmisia datelor prin retea. Siruri de lungime x a n a se utilizeaz la reprezentarea binar a numerelor. a a Numrul de obiecte este transmis separat, fata irului. Aceast metod a n s a a uureaz munca receptorului, care tie exact ce s astepte i poate aloca s a s a s memorie pentru receptionarea datelor. schimb, munca emittorului In a este complicat prin faptul c acesta trebuie s cunoasc de la a a a a nceput numrul de obiecte din ir. Acest fapt face metoda inaplicabil anua s a n mite situatii. Transmiterea de la nceput a numrului de obiecte este utilizat, a a de exemplu, de protocolul HTTP ( 11.3.2) la transmiterea, de ctre a server, a continutului paginii cerute de client. Serverul transmite ai nt numrul de octeti ai paginii i apoi irul de octeti ce formeaz pagina. a s s a Dup ultimul obiect din irul propriu-zis, se transmite o valoare special, a s a cu rol de terminator. Aceast metod uureaz munca emittorului, a a s a a care poate s a nceap transmiterea irului a s nainte de-a ti cte elemente s a are, schimb n ngreuneaz munca receptorului, care trebuie s citeasc a a a elementele irului unu cte unu i s verice dac nu a alnit terminas a s a a nt torul. De asemenea, trebuie xat valoarea terminatorului, care trebuie a s e o valoare reprezentabil formatul pentru element, dar care nu a a n apare niciodat ca valoare a unui element valid. a Metoda este utilizat frecvent transmiterea unui ir de caraca n s tere. Rolul de terminator poate acordat caracterului null (caracterul cu codul ASCII zero), caracterului newline (sfrit de rnd), caracterului as a

c 2008, Radu-Lucian Lupa s


214 7.1. Probleme privind reprezentarea numerelor ntregi

spatiu, etc. Orice alegere s-ar face, caracterul sau caracterele astfel alese pentru a marca sfritul unui ir nu pot s apar irul propriu-zis. as s a a n s Ca urmare, transmiterea unui ier cu continut arbitrar (ir de octeti s s cu valori arbitrare) nu se poate face prin metoda cu terminator (dect a dac un octet al ierului se codic pe mai mult de 8 biti). a s a

7.1.4. Alte metode de reprezentare a numerelor ntregi


Schemele de reprezentare (formatele) pentru numere ntregi, studiate 7.1.2.3 i 7.1.2.4, se numesc formate binare. Pe lng formatele binare, n s a a pentru reprezentarea numerelor ntregi se mai utilizeaz urmtoarele tipuri de a a formate: Formatul text. cadrul acestui format, reprezentarea numrului este un In a text format din caracterele corespunztoare cifrelor reprezentrii zecia a male (obinuite) a numrului. s a Formatul binar-zecimal, numit i BCD din engl. binary coded decimal. s In cadrul acestui format, numrul este reprezentat mai ai baza 10, iar a nt n apoi ecare cifr zecimal este reprezentat pe 4 biti conform metodelor a a a din 7.1.2.4. Descriem putin mai pe larg reprezentarea numerelor format text, n deoarece o astfel de reprezentare se utilizeaz frecvent protocoalele retea. a n n Motivul principal al utilizrii formatului text este uurinta depanrii aplicatiia s a lor ce utilizeaza astfel de protocoale: comunicatia poate nregistrat a ntr-un ier i examinat cu un program obinuit pentru vizualizarea ierelor text. s s a s s format text, se utilizeaz conventiile de reprezentare a numerelor In a textele scrise: se n ncepe cu cifra cea mai semnicativ, numrul de cifre este a a variabil (depinde de valoarea numrului) i prima cifr (cea mai semnicativ) a s a a scris nu este zero, cu exceptia cazului numrului 0 care se reprezint ca o a a a singur cifr zero. a a Fiecare cifr se reprezint ca un caracter, ind necesar mai departe a a a cazul codicrii ASCII, o schem de reprezentare a textelor (vezi 7.2). In a a reprezentarea ecrei cifre ocup exact un octet. De remarcat a c, acest a a ns a n caz, cifra 0 nu se reprezint ca un octet cu valoarea 0, ci ca un octet avnd a a ca valoare codul ASCII pentru caracterul ,,0; acesta este 48 (sau, echivalent, 3016 ). Deoarece lungimea reprezentrii este variabil, este necesar s e a a a transmis sub o form sau alta informatia privind lungimea reprezentrii a a a numrului (numrul de cifre). acest scop, reprezentrile text, numerele a a In n a sunt separate de obicei prin spatii, caractere tab, caractere newline etc.

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 215

Exemplul 7.4: Redm mai jos reprezentrile text ASCII terminat cu spatiu, a a BCD big endian pe 4 octeti i BCD little endian pe 4 octeti, pentru numrul s a 300. Valorile octetilor sunt scrise baza 2, bitul cel mai semnicativ ind n scris stnga. n a pozitie octet (nr. ordine) 0 1 2 3 Valorile octetilor 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 elegem aici un text scris limbaj natural sau nt n ntr-un limbaj de programare, fr formatare avansat. aa a Un text este vzut general ca o succesiune de caractere. Caraca n terele sunt principal literele din alfabetul limbii care este scris textul, n n semne de punctuatie, cifre i diferite alte semne grace. Nu se face distinctie s ntre diferitele variante de-a scrie o aceeai liter (litere ,,normale, cursive s a (,,italice), adline (,,bold), etc). Pe lng caracterele grace, descrise mai sus, sunt denite caractere a a de control, avnd rolul de a marca puncte (locuri) cadrul textului sau fraga n mente din text. Utilizri ale caracterelor de control sunt, de exemplu, trecerea a la rnd nou sau interzicerea trecerii la rnd nou (ruperea rndului) a a a ntr-un anumit punct. Un aspect discutabil legat de alegerea setului de caractere este dac a o liter cu un semn diacritic este cazul s e caracter distinct fat de litera a a a simpl din care provine sau s e format din caracterul corespunztor literei a a a respective fr semne diacritice i un caracter de control care s marcheze aa s a semnul diacritic adugat. aceeai idee, s-ar putea face i distinctia dintre a In s s literele mari (majuscule) i literele mici (minuscule) corespunztoare tot pe s a baza unor caractere de control cu rol de modicator. Operatiile efectuate asupra textelor, care trebuie s e permise de a codicarea aleas, sunt principal urmtoarele: a n a aarea textului; s concatenarea unor texte sau alte operatii de sintez; a

c 2008, Radu-Lucian Lupa s


216 7.2. Codificarea textelor

cutarea unui cuvnt, extragerea unor cuvinte sau unor fragmente de text a a i diverse alte operatii de analiz a textului; s a sortarea alfabetic. a De notat c regulile de sortare alfabetic sunt complexe i depind a a s de limb. De exemplu, limba romn, literele cu diacritice sunt consida n a a erate imediat dup literele fr diacritice. Urmtoarele cuvinte sunt sortate a aa a alfabetic: sac, suc, iret; de notat c orice cuvnt ce s a a ncepe cu este sortat s francez, a, literele cu diacritice sunt dup toate cuvintele ce a ncep cu s. In a ns considerate, prima faz, echivalente cu cele fr diacritice, intervenind n a aa n ordinea alfabetic doar pentru cuvinte care difer doar prin diacritice. Exa a emplu: t, tre, tude; de notat c apar amestecate cuvinte ce ee e e a ncep cu i e s . e Majoritatea codicrilor sunt bazate pe reprezentarea una dup alta a a a literelor (caracterelor) ce formeaz cuvintele textului. a Codicrile caracterelor sunt de obicei descrise dou etape. a n a In prima etap, ecrui caracter este asociat un numr a a i a ntreg pozitiv, numit codul caracterului. a doua etap, ecrui cod de caracter este asociat o In a a i a codicare ca ir de biti sau ca ir de octeti. s s Pentru o schem de codicare trebuie aadar specicate trei elemente: a s setul de caractere; numerotarea (codicarea) caracterelor; reprezentarea pe biti sau pe octeti a codurilor caracterelor.

7.2.1. Codicarea ASCII


Codicarea (codul) ASCII este codicarea cea mai des alnit pennt a tru texte. Setul de caractere cuprinde 128 caractere dintre care: 33 de caractere de control; caracterul spatiu (considerat de unii ca ind caracter imprimabil i de s altii ca ind caracter de control); 94 de caractere imprimabile, cuprinznd: 52 de litere (cele 26 litere ale a alfabetului latin, cu cele dou forme, majuscule i minuscule) cele 10 cifre a s zecimale i un numr de 32 de semne de punctuatie i alte simboluri. s a s Codurile asociate caracterelor ASCII sunt cuprinse ntre 0 i 127, s caracterele de control primind codurile 031 i 127, spatiul are codul 32, iar s

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 217

(celelalte) caractere imprimabile au codurile cuprinse ntre 33 i 126. Pentru s a uura sortarea alfabetic, codurile sunt grupate astfel: s a 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 i c diferenta dintre codul oricrei litere mici i codul literei mari s a a s corespunztoare este 32 (20 hexa). a Pentru reprezentarea unui caracter ASCII sunt necesari doar 7 biti, a cel mai adesea un caracter ASCII se reprezint pe un octet, al crui cel ns a a mai semnicativ bit este ntotdeauna 0. Datorit faptului c pe de o parte caracterele ASCII se reprezint pe a a a un octet, iar pe de alt parte c dintre caracterele de control multe nu sunt a a utilizate deloc majoritatea aplicatiilor, rmn multe coduri reprezentabile n a a (cca. 140) care nu sunt utilizate. Se poate extinde setul de caractere, asociind noilor caractere coduri ntre 128 i 255 sau coduri s ntre 0 i 31 a cror caractere s a corespunztoare nu sunt folosite efectiv. Toate aceste codicri rezultate se a a numesc generic seturi ASCII extinse.

7.2.2. Codicrile ISO-8859 a


ISO-8859 este o familie de coduri, construite toate ca extensii (alternative) ale codicrii ASCII. a Fiecare cod din familie cuprinde cte 256 caractere: cele 128 caractere a ASCII, plus 128 de caractere alese pentru a acoperi alfabetul cte unui grup a de limbi. Limbile acoperite de cteva dintre codicrile ISO-8859 sunt: a a 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 i numere de la 128 la 255 pentru s caracterele suplimentare. Reprezentarea pe octeti pentru un text ISO-8859-n se face cu cte a un octet pentru ecare caracter, octetul continnd codul caracterului. a Fiecare cod din familie este extensie a codului ASCII sensul c n a multimea caracterelor din ecare astfel de cod include multimea caracterelor

c 2008, Radu-Lucian Lupa s


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 romne i codicrile a s a ISO-8859-2 corespunztoare a

ASCII i codurile asociate caracterelor comune cu setul ASCII coincid cu cos durile ASCII. Ca urmare, un text ASCII este ntotdeauna interpretat corect ca text ISO-8859-n. Pe de alt parte, un text scris ISO-8859-n i interpretat a n s ca ISO-8859-m va evident interpretat greit. s Ordinea numeric a codurilor din oricare dintre codicrile ISO-8859 a a este diferit de ordinea alfabetic. general, ordinea alfabetic, literele a a In n a cu diacritice si au locul imediat lng literele similare fr diacritice; a a aa n codicrile ISO-8859-1 sau ISO-8859-2, de exemplu, literele cu diacritice au a codurile mai mari de 128 vreme ce literele fr diacritice au coduri n aa ntre 65 i 123. s

7.2.3. Codicrile Unicode a


Unicode este un set de caractere ce se dorete s cuprind litere din s a a toate scrierile de pe Pmnt. Numrul de caractere din unicode este limitat, a a a datorit modurilor de codicare denite, la aproximativ un milion (mai exact, a la 11000016 = 1114112). Nu toate aceste coduri sunt denite prezent, con durile a nedenite putnd denite versiuni urmtoare ale standardului. nc a n a Codurile unicode sunt numere de la 0 la 220 + 216 1. Codurile de la 0 la 127 corespund acelorai caractere ca i codicarea ASCII. s s n Reprezentarea codurilor unicode ca iruri de octeti poate fcut s a a n mai multe moduri. Cele mai rspndite codicri sunt: a a a UTF-8 este o codicare de lungime variabil, a ntre 1 i 4 octeti pentru s un caracter; UTF-16, UTF-16LE, UTF-16BE sunt codicri de lungime variabil, 2 a a sau 4 octeti pentru un caracter; UTF-32, UTF-32LE, UTF-32BE sunt codicri de lungime x, de 4 a a octeti pentru ecare caracter.

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 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 romne i codicrile a s a unicode corespunztoare. Not: caracterele S, , T i au cte dou forme utilizate: a a s s t a a una cu virgul dedesupt, cealalt cu sedil. Conform normelor stabilite de Academia a a a Romn, forma corect este cea cu virgul. Codicarea formei cu virgul a fost a a a a a standardizat mai recent, motiv pentru care multe documente utilizeaz a forma a a nc cu sedil. a

c 2008, Radu-Lucian Lupa s


220 7.2. Codificarea textelor

7.2.3.1. Codicarea UTF-8 Corespondenta de la codul caracterului la irul de octeti este dat s a n tabelul 7.3.
Valorile lui c ( baza 16) n 07F 807FF 800FFFF 100001FFFFF reprezentarea UTF-8 ( baza 2) n 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 codul unicode al caracterului; c20 . . . c0 a reprezint cifrele reprezentrii binare a lui c, cu c20 reprezentnd cifra cea mai semnia a a cativ i c0 cea mai putin semnicativ. Codicarea exist doar pentru 0 c < 221 . as a a

De remarcat c schema pentru coduri mari (de exemplu, schema pena tru c ntre 8016 i 7FF16 ) poate principial aplicat i la coduri mai mici (de s as exemplu, pentru c = 4116 , rezultnd doi octeti, C116 urmat de 8116 ). O asta fel de codicare este a interzis de standard pentru a asigura unicitatea ns a codicrii UTF-8. a Codicarea UTF-8 permite recuperarea sincronismului (dac recepa torul pierde civa octeti poate regsi unde at a ncepe un caracter nou), deoarece ecare caracter nou ncepe cu un octet cuprins ntre 0 i 127 sau s ntre 192 i 255, iar ceilalti octet din codicarea unui caracter sunt cuprini s s ntre 128 i 191. O alt proprietate este c lungimea codicrii UTF-8 a unui caracter s a a a poate determinat dup citirea primului octet. a a 7.2.3.2. Codicrile UTF-16 a Codicarea UTF-16 este descris dou etape: a n a ntr-o prim etap, a a codul unicode este transformat ntr-unul sau dou numere de cte 16 biti, iar a a a doua etap ecare astfel de numr este scris ca 2 octeti consecutivi. n a a Caracterele cu codul unicode ntre 0 i D7FF16 sau s ntre E00016 i s FFFF16 se scriu ca un singur ntreg pe 16 biti. Caracterele cu codul unicode ntre 1000016 i 10FFFF16 se scriu ca s doi ntregi de cte 16 biti astfel: Mai ai, din codul unicode se scade 1000016 , a nt rezultnd o valoare a ntre 0 i FFFFF16 (20 biti). Primul s ntreg de 16 biti se formeaz punnd cifrele 110110 urmate de primii 10 din cei 20 de biti. Al a a doilea ntreg se formeaz punnd cifrele 110111 urmate de ultimii 10 din cei a a 20 de biti. De exemplu, codul unicode 1030216 se scrie ca doi ntregi astfel: D83C16 DF0216 .

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 221

Intr-o a doua etap este denit scrierea ecrui a a a ntreg de 16 biti ca un ir de doi octeti. Exist dou modaliti de a reprezenta ecare astfel s a a at de ntreg, ncepnd de la octetul mai semnicativ (de rang mai mare) sau a ncepnd de la octetul mai putin semnicativ. Pentru a reecta aceste variante a diferite de alegere, exist trei codicri distincte numite generic UTF-16 : a a UTF-16LE : Primul octet este cel mai putin semnicativ (little endian); UTF-16BE : Primul octet este cel mai semnicativ (big endian); UTF-16 : Ordinea octetilor poate e big endian, e little endian, la alegerea emittorului. Primul caracter codicat trebuie s e caracterul a a cu codul FEFF16 (denit initial ca ind un caracter de control ce in terzice ruperea rnduri acel punct, dar este utilizat prezent doar n a n n ca marcaj pentru identicarea ordinii octetilor). Ordinea octetilor este dedus de receptor prin examinarea primilor doi octeti: dac acetia a a s sunt FE16 urmat de FF16 , nseamn c ordinea octetilor este big ena a dian; dac este FF16 urmat de FE16 , a nseamn c ordinea octetilor este a a little endian. 7.2.3.3. Codicrile UTF-32 a Codicarea UTF-32 const codicarea ecrui caracter ca un a n a ntreg pe 32 de biti, reprezentat la rndul lui ca un ir de 4 octeti. Ca i cazul a s s n codicrilor UTF-16, exist trei codicri UTF-32 : a a a UTF-32LE : Primul octet este cel mai putin semnicativ (little endian); UTF-32BE : Primul octet este cel mai semnicativ (big endian); UTF-32 : Ordinea octetilor poate e big endian, e little endian, la alegerea emittorului. Primul caracter codicat trebuie s e caracterul a a cu codul F EF F16 . Ordinea octetilor este dedus de receptor prin ex a aminarea primilor patru octeti: dac acetia sunt 0, 0, F E16 , F F16 , a s nseamn c ordinea octetilor este big endian; dac este F F16 , F E16 , 0, a a a 0, nseamn c ordinea octetilor este little endian. a a

7.3. Reprezentarea datei i orei s


Determinarea datei i orei producerii unui eveniment, precum i mems s orarea sau transmiterea acestora, sunt operatii frecvente ntr-o retea de calcu latoare. Problema reprezentrii datei i orei este mult mai dicil dect pare a s a a la prima vedere. Din acest motiv, vom ncepe prin a studia ce se poate elege nt

c 2008, Radu-Lucian Lupa s


222 7.3. Reprezentarea datei i orei s

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

7.3.1. Msurarea timpului a


Exist dou metode utilizate pentru indicarea timpului curent (datei a a i orei curente): s pe baza unor fenomene astronomice, anume alternanta zi-noapte ( ter n meni astronomici, ziua solar mijlocie), alternanta anotimpurilor (anul a tropic) i, eventual, fazele lunii (luna sinodic ); s a pe baza unui fenomen zic repetabil, de exemplu oscilatia unui pendul sau vibratia unui cristal de cuart. Prima variant este de interes practic imediat pentru sincronizarea a activitilor umane. Are a complicatii inerente legate de urmtoarele fapte: at ns a alternanta zi-noapte nu este simultan pe tot Pmntul ci este decalat a a a a pe longitudine; anul, luna i ziua sunt incomensurabile (rapoartele duratelor lor sunt s numere irationale); anul, luna i ziua nu au durate constante (fenomenele corespunztoare nu s a sunt perfect periodice) i nici mcar previzibile exact ( special rotatia s a n Pmntului are neuniformiti imprevizibile datorate redistribuirii maa a at sei interiorul Pmntului). n a a A doua variant msoar direct timpul ca mrime zic i ofer avana a a a as a taje atunci cnd avem de determinat ordinea cronologic a unor evenimente a a sau de calculat duratele de timp dintre ele. Timpul (zic) a ajuns s poat a a denit independent de micarea Pmntului doar dup dezvoltarea, a s a a a ncepnd a cu anii 1950, a ceasurilor atomice, mai precise dect micrile Pmntului. a s a a a Msurarea timpului se face pe baza secundei denite Sistemul International a n de uniti (SI) ca 9192631770 de perioade ale oscilatiei corespunztoare tranzitiei at a ntre cele dou nivele hiperne ale strii fundamentale a atomului de cesiu 133. a a Ca urmare a acestor complicatii, exist mai multe standarde de m a a surare i reprezentare a timpului: s Timpul atomic international (TAI) este dat de numrul de secunde SI a scurse de la un anumit moment ales ca reper. Secundele TAI se grupeaz a minute, ore, zile, etc. n Timpul universal UT1 este de fapt msura unui anumit unghi, legat a de rotatia Pmntului, exprimat uniti de timp (24 h loc de a a a n at n ). (Unghiul respectiv este unghiul orar, pentru un observator aat 360

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 223

pe meridianul 0 , al soarelui mijlociu.) Curge neuniform datorit neunia formitii micrii de rotatie a Pmntului; dup media ultimilor civa at s a a a a at ani, 24 h UT1 este aproximativ 86400,002 s SI. Timpul universal coordonat (UTC) este bazat pe secunda SI, dar gruparea secundelor zile este modicat pentru a mentine diferenta n a dintre UT1 i UTC la sub o secund. s a Astfel, o zi UTC normal are 24 ore a 60 minute a 60 secunde SI a ecare, adic 86400 s. Dac UT1UTC se apropie de 1 s, se adaug o a a a secund de corectie (engl. leap second ) la o zi, astfel at acea zi UTC a nc are 86401 s, proces aproape echivalent cu a muta UTC cu o secund a acest scop, ultimul minut al zilei are 61 de secunde loc de napoi. In n 60, dup ora 23:59:59 urmeaz, la o secund, 23:59:60 i abia dup a a a a s a nc o secund ora 0:00:00 a zilei urmtoare. Dac UT1UTC se apropie a a a de 1 s, se elimin o secund din ultimul minut al unei zile, astfel c la a a a o secund dup 23:59:58 urmeaz ora 0:00:00 a zilei urmtoare. Din a a a a anul 1972 (de la introducerea UTC forma actual) pn 2008 au n a a a n fost adugate 23 de secunde de corectie i nu a fost eliminat nici una. a s a A 24-a secund de corectie se va aduga la sfritul anului 2008, astfel a a as at ziua de 31 decembrie 2008 va avea 86401 secunde. Datorit unei nc a diferente initiale de 10 s ntre TAI i UTC, diferenta TAIUTC este s n prezent de 33 s. Timpul legal ecare ar este denit e pe baza UT1, e pe baza UTC n t a (diferenta este neglijabil pentru uzul practic), ca ind UTC (sau UT1) a plus sau minus un anumit numr de ore i uneori i fractiuni de or a s s a (exemplu, India are ora legal UTC+5h30min). a rile care exist or de var, la trecerea de la ora de iarn la In ta n a a a a cea de var i invers, diferenta dintre ora legal i UTC crete, respectiv as as s scade, cu o or (de notat c UTC nu are or de var). De exemplu, a a a a ora legal Romnia este UTC+2 h timpul iernii (din ultima dua n a n minic din octombrie pn ultima duminic din martie) i UTC+3 h a a a n a s timpul verii. n Ora suplimentar introdus la trecerea de la ora de var la cea de a a a iarn nu are notatie distinct, de tipul secundelor de corectie din UTC. a a Ca urmare, la trecerea de la ora de var la ora de iarn, exist perechi de a a a momente de timp care sunt notate la fel i ca urmare ora legal este ams a bigu. Exemplu: dac prin trecerea de la ora de var la cea de iarn ora a a a a 4:00:00 devine 3:00:00, atunci notatia 3:30:00 poate corespunde la dou a momente de timp, ora de var 3:30:00 (la 30 min a naintea schimbrii a orei) i ora de iarn 3:30:00 (la 30 min dup schimbarea orei). s a a

c 2008, Radu-Lucian Lupa s


224 7.3. Reprezentarea datei i orei s

Pentru gruparea zilelor uniti mai mari, special ani, sunt n at n n utilizate mai multe sisteme (calendare): Calendarul gregorian , introdus anul 1582 i vigoare Romnia n s n n a din anul 1924, este calendarul actual. Anii bisecti (de 366 de zile) sunt anii cu numrul anului divizibil cu 4, cu exceptia celor divizibili cu 100 a fr a divizibili cu 400. Ani bisecti sunt 1600, 2000, 2400 etc; ani aa nebisecti divizibili cu 100 sunt 1700, 1800, 1900, 2100, 2200 etc. Durata medie a anului gregorian este 365,2425 zile, ceva mai lung dect anul a tropic de aproximativ 265,2422 zile. Calendarul iulian , predecesorul calendarului gregorian, introdus anul n 45 .e.n. i avnd regula mai simpl cum c sunt bisecti toti anii cu s a a a numr divizibil cu 4. Este utilizat adesea de istorici pentru a data i a s evenimente dinainte de anul 45 .e.n., caz care el este numit calendar n iulian proleptic. Cu o durat medie a anului de 365,25 zile, calendarul a iulian rmne urm cu 1 zi la aproximativ 128 de ani. a a n a Ziua iulian este un simplu numr ce arat numrul de zile scurse de la a a a a o dat de referint. Acest sistem este utilizat frecvent astronomie a a n deoarece permite uor calculul duratelor dintre dou date; din acelai s a s motiv reprezint o schem potrivit pentru reprezentarea datei cala a a n culator. Exist dou variante. Prima, JD (julian day), are ca referinta a n a data de 1 ianuarie 4713 .e.n. conform calendarului iulian proleptic, la amiaza UT1. Momentul respectiv este JD 0,0, miezul noptii urmtoare a este JD 0,5, etc. Cealalt, MJD (modied julian day), are ca referint a a 17 noiembrie 1858 ora 0, adic este JD2400000,5 . a

7.3.2. Obiectivele alegerea reprezentrii timpului calculan a n tor


De obicei, operatiile ce trebuiesc efectuate asupra reprezentrii tim a pului sunt: 1. Citirea sau scrierea timpului ca or legal conform calendarului gregorian a a formatul obinuit, precum i efectuarea de operatii aritmetice de genul n s s adunrii sau scderii unei durate formale (exemplu: mine la aceeai or; a a a s a aceasta nseamn mod obinuit peste 24 de ore, dar poate a n s nsemna peste 23 sau 25 de ore dac intervine trecerea de la ora de iarn la cea a a de var sau invers). a 2. determinarea ordinii cronologice a dou momente de timp; a 3. determinarea exact, ca timp zic, a duratei a ntre dou momente de a timp,

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 225

4. pentru aplicatii speciale, citirea sau aarea timpului alte formate s n (timpul legal al altui fus orar, UTC, TAI, JD, etc). Punctul 1 este cerut de toate sistemele. Punctul 2 este important pentru foarte multe aplicatii i rezolvarea lui corect interzice mutarea ceasului s a napoi. Punctul 3 este important aplicatiile timp real; de asemenea, n n functionarea ceasului sistem presupune, mod repetat, adunarea unei durate n de timp la un moment de timp. Reprezentarea direct a orei legale, sub forma an, lun, zi, or, minut, a a a secund, fractiuni de secund, rezolv simplu punctul 1. Ea ridic a proba a a a ns leme la punctul 2 dac sunt implicate calculatoare aate pe fusuri orare disa tincte sau dac se efectueaz operatii intervalul de o or jurul trecerii de a a n a n la ora de var la cea de iarn; pentru tratarea corect a acestor cazuri este a a a necesar s se tie, despre ecare or, pe ce fus orar este considerat i care a s a a s sunt regulile privind ora de var. Punctul 3 ridic, pe lng problemele coa a a a mune cu cele legate de punctul 2, complicatii legate de saltul cu o or a nainte la trecerea de la ora de iarn la ora de var i calculele legate de calendar; a a s de asemenea, pentru calcule exacte ale duratelor, sunt necesare informatii cu privire la secundele de corectie. Reprezentarea orei UTC permite determinarea ordinii cronologice i s a duratelor fr a necesita date despre fusurile orare sau regulile privind ora aa de var, schimb aceste date sunt necesare la conversia a n ntre reprezentarea UTC i timpul legal. s Reprezentarea TAI ca numr de uniti de timp scurse de la un ana at umit moment xat rezolv extrem de simplu punctele 2 i 3 schimb mut a s n a dicultile la rezolvarea punctului 1. at

7.3.3. Formate utilizate practic n a


Deoarece ntr-o retea pot prezente calculatoare situate pe fusuri orare distincte, aproape orice format util retea e transmite direct ora n UTC sau TAI, e transmite sucient informatie pentru ca receptorul s poat a a a calcula uor ora UTC. s 7.3.3.1. Formatul utilizat de pota electronic s a Pentru pota electronic ( 11.1), reprezentarea datei se face ca text s a i contine, ordine: s n optional ziua din sptmn, ca prescurtare de 3 litere din limba englez), a a a a a ziua, ca numr a ntre 1 i 31, s luna, ca ir de trei litere, prescurtare din englez, s a

c 2008, Radu-Lucian Lupa s


226 7.3. Reprezentarea datei i orei s

anul, ca ir de 4 cifre, s ora, totdeauna ca 2 cifre, ntre 00 i 23, s minutul, ca dou cifre, a ntre 00 i 59, s optional, secunda, ca dou cifre a ntre 00 i 60, s diferenta dintre ora legal conform creia a fost scris data i ora UTC; a a a s aceasta este dat ca 4 cifre, 2 pentru numrul de ore i 2 pentru numrul a a s a de minute, cele patru cifre ind precedate de semnul + sau . Componentele datei sunt separate printr-un amestec de virgule, spatii i carac s tere dou puncte. a De exemplu, data:

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

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

urmat la jumtate de or, dup trecerea la ora de iarn, de a a a a


Sun, 28 Oct 2007, 03:10 +0200

7.3.3.2. ISO-8601 i RFC-3339 s ISO-8601 este o standardizare a modului de scriere ca text a datei i orei. Standardul ind foarte complex, a aprut RFC-3339 care cuprinde s a cazurile mai utile i mai frecvent folosite din ISO-8601. s RFC-3339 prevede reprezentarea datelor astfel: anul, ca patru cifre (nu sunt admise prescurtri de genul 07 pentru 2007), a luna, ca 2 cifre (01 pentru ianuarie, 12 pentru decembrie), ziua, ca 2 cifre (de la 01 pn la 31 sau mai putin, functie de lun). a a n a Cele trei componente sunt separate prin liniute (ISO-8601 permite i alipirea s lor):

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 2007-10-28 227

Ora se reprezint prin 2 cifre pentru or (0023), 2 cifre pentru minut a a (0059), dou cifre pentru secund (0060, functie i de prezenta unei sea a n s cunde de corectie), eventual fractiunile de secund i eventual specicarea fusu as lui orar. Ora, minutul i secunda sunt separate prin dou puncte, fractiunile s a de secund se separ de cmpul pentru secunde prin punct, iar specicarea a a a fusului orar se face printr-un semn plus sau minus urmat de dou cifre pentru a numrul de ore diferent urmat de caracterul dou puncte i a dou cifre a a a s nc a pentru numrul de minute diferent. Exemplu: a a
21:12:58.342+02:00

reprezint acelai moment de timp, dar pe alt fus orar, cu a s


14:12:58.342-05:00

Data i ora se specic s a mpreun punnd litera T a a ntre ele:


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

7.3.3.3. Timpul POSIX sistemele de tip UNIX (conforme standardului POSIX), reprezentarea In timpului este fcut printr-un numr a a a ntreg considerat de obicei c reprezint a a numrul de secunde scurse de la 1 ianuarie 1970 ora 0:00 UTC. Ora UTC a formatul obinuit se obtine grupnd secundele minute, ore, zile, luni i n s a n s ani conform regulilor obinuite. De fapt, numrul dat ca dat nu este exs a a act numrul de secunde scurse de la 1 ianuarie 1970, ci difer de acesta prin a a numrul de secunde de corectie adugate pentru mentinerea sincronism a a a n UTC cu rotatia Pmntului. De aceea, ,,timpul unix are salturi a a napoi de cte a o secund la ecare introducere a unei astfel de secunde de corectie. Timpul a POSIX este reprezentat mod obinuit ca n s ntreg cu semn pe 32 de biti, i ca s urmare valoarea cea mai mare ce poate reprezentat corespunde datei de 19 a ianuarie 2038, ora 3:14:07 UTC. 7.3.3.4. TAI 64 TAI 64 este un standard ce presupune reprezentarea timpului ca numr de secunde, incluznd secundele de corectie. Numrul de secunde este a a a reprezentat pe 63 de biti (plus un bit rezervat), cu valoarea 262 corespunznd a datei de 1 ianuarie 1970 ora 0 TAI. Intervalul de timp reprezentabil este imens, de ordinul a 1011 ani.

c 2008, Radu-Lucian Lupa s


228 7.3. Reprezentarea datei i orei s

Pentru aplicatii ce au nevoie de rezolutie mai bun de o secund, a a standardul prevede a dou cmpuri de cte 32 de biti (total 128 de biti), nc a a a reprezentnd respectiv numrul de nanosecunde i de attosecunde (valori a a s ntre 0 i 109 1). s

7.4. Recodicri a
Este necesar uneori s codicm un ir mai mult sau mai putin arbia a s trar de octeti sub forma unui ir de caractere supus unor restrictii. Astfel de s situatii apar: La trimiterea ierelor ataate la mesajele de pot electronic, s s sa a ntregul mesaj, inclusiv partea ce cuprinde ierele ataate, trebuie s s s a ndeplineasc anumite restrictii, a ntre altele, s nu contin caractere ASCII a a de control cu exceptia perechilor carriage returnline feed de la nalul ecrui rnd, s nu aib rnduri prea lungi, etc. Pe de alt parte, ierele a a a a a a s ataate pot iere binare cu continut arbitrar. s s La stocarea iere text a unor informatii reprezentate natural ca ir n s s arbitrar de octeti, de exemplu la stocarea iere text a unor chei de n s criptare, semnturi electronice, etc. a limbaje de programare, la scrierea irurile de caractere a unor carIn n s actere cu rol special, ca de exemplu a ghilimelelor (care mod normal n sunt interpretate ca terminatorul irului de caractere). s astfel de situatii, este necesar s se codice un ir arbitrar de octeti In a s (ecare octet poate lua orice valori ntre 0 i 255) pe un alfabet constnd s a litere, cifre i cteva simboluri speciale. Deoarece numrul de simboluri n s a a disponibile este mai mic dect numrul de valori posibile ale octetilor, un a a octet nu se va putea codica numai pe un singur caracter.

7.4.1. Codicarea hexazecimal a


Codicarea hexazecimal prevede ca ecare octet s se reprezinte pe a a dou caractere, ecare caracter putnd din multimea cuprinznd cifrele zeca a a imale (09) i literele AF. s Exemplu: irul de octeti 120, 0, 23, 45, 20 se scrie: 7800172D14. s Uneori, irul de cifre hexa se insereaz spatii sau caractere newline n s a pentru lizibilitate sau pentru evitarea rndurilor foarte lungi. a Deoarece un caracter se reprezint de obicei pe un octet, prin aceast a a recodicare rezult o dublare a lungimii irului. a s

c 2008, Radu-Lucian Lupa s


Capitolul 7. Codificari de interes practic 229

7.4.2. Codicarea baza 64 n


Codicarea baza 64 codic un ir de 3 octeti cu valori arbitrare n a s ca un ir de 4 caractere din multimea cuprinznd literele mari, literele mici, s a cifrele i caracterele +, / i =. s s Codicarea se face modul urmtor: n a 1. Sirul initial de octeti se completeaz la un multiplu de 3 octeti prin a adugarea a 0, 1 sau 2 octeti cu valoarea 0. a 2. Se formeaz un ir de 24 de biti punnd unul dup altul cei cte 8 biti a s a a a din ecare octet; din ecare octet se ncepe cu bitul cel mai semnicativ. 3. Sirul de 24 de biti se mparte 4 grupuri de cte 6 biti. n a 4. Fiecare ir de 6 biti se consider ca ind un numr cuprins s a a ntre 0 i 63, s considernd primul bit din ir ca ind cel mai semnicativ. a s 5. Fiecare numr obtinut la pasul anterior se reprezint printr-un caracter. a a Cele 64 de valori posibile, de la 0 la 63, se reprezint ca: litere mari (0A, a 25Z), litere mici (26a, 51z), cifre (520, 619) i caracterele + i s s / (62+, 63/). Dac o valoare 0 provine din biti 0 proveniti integral a dintr-un octet completat la pasul 1, loc de A se scrie =. n De exemplu, irul de octeti 120, 0, 23, 45, 20 devine irul de biti s s 01111000 00000000 00010111 00101101 00010100 00000000 ultimul octet ind adugat la pasul 1. Sirul de biti se regrupeaz a a 011110 000000 000000 010111 001011 010001 010000 000000 rezultnd irul de numere ,, baza 64: 30, 0, 0, 23, 11, 17, 16, 0, care se a s n codic eAAXLRQ= a

7.4.3. Codicri bazate pe secvente de evitare a


Recodicrile prin secvente de evitare sunt utilizate situatia care a n n majoritatea octetilor sau caracterelor din textul de recodicat sunt codurile unor caractere ce se regsesc alfabetul care se face recodicarea. a n n In aceast situatie, este favorabil ca, pe ct posibil, octetii sau caracterele din a a textul de recodicat s e codicate prin ele a nsele, special pentru ca textul n s poat eles (partial, cel putin) de ctre un utilizator uman direct a a nt a n forma recodicat. a Recodicarea se face astfel. Se distinge un caracter alfabetul n destinatie, caracter ce este denumit caracter de evitare (enlg. escape char acter ). Orice caracter din alfabetul surs care se regsete alfabetul destinatie a a s n i este diferit de caracterul de evitare se recodic ca el si. s a nsu

c 2008, Radu-Lucian Lupa s


230 7.4. Recodificari

Caracterul de evitare (dac face parte din alfabetul surs), precum i a a s caracterele din alfabetul surs ce nu se gsesc alfabetul destinatie, se a a n codic ca secvente de caractere ce a ncep cu un caracter de evitare. Exemple: Pentru pota electronic, un caracter ce nu pot transmise direct este s a codicat ca o secvent de trei caractere, un caracter egal (=) i dou a s a cifre hexa reprezentnd codul caracterului de transmis. Aceast recodia a care se numete quouted printables. Caracterele ASCII imprimabile, cu s exceptia caracterului egal, se transmit direct (fr recodicare). Ca ur aa mare, un text care caracterele ce trebuie recodicate sunt rare poate n eles de ctre un utilizator uman fr prea mari diculti. Ca exnt a aa at emplu, fraza precedent se scrie (presupunnd o codicare ISO-8859-2 a a pentru caractere i apoi o recodicare quouted printables): s
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.

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

limbajul C i alte limbaje derivate din el, ghilimelele (") servesc In s n la delimitarea irurilor de caractere. Dac se dorete introducerea unor s a s astfel de caractere ntr-un ir, sau a caracterelor ASCII de control, se s introduc secvente escape cum ar : \" pentru ghilimele ("), \\ pentru backslash (\), \n pentru newline (caracterul ASCII cu codul 10). HTML, caracterele unicode sunt scrise prin secvente &#cod ;. De ex In emplu, litera se scrie &#539;. t

c 2008, Radu-Lucian Lupa s


231

Capitolul 8

Programarea retea introducere n

8.1. Interfata de programare socket BSD


Interfata socket este un ansamblu de functii sistem utilizate de pro grame (de fapt, de procese) pentru a comunica cu alte procese, aate n executie pe alte calculatoare. Interfata socket a fost dezvoltat cadrul a n sistemului de operare BSD (sistem de tip UNIX, dezvoltat la Universitatea Berkley) de aici denumirea de socket BSD. Interfata socket este disponibil a aproape toate sistemele de operare actuale. n Termenul socket se utilizeaz att pentru a numi ansamblul functiilor a a sistem legate de comunicatia prin retea, ct i pentru a desemna ecare capt a s a al unei conexiuni deschise cadrul retelei. n
proces utilizator socket nucleul S.O. proces utilizator

nucleul S.O. legtur logic a a a retea

Figura 8.1: Comunicatia ntre dou procese prin retea a

Prezentm continuare principiile de baz ale interfetei socket (vezi a n a

c 2008, Radu-Lucian Lupa s


232 8.1. Interfata de programare socket BSD

i gura 8.1): s Pe ecare calculator ruleaz mai multe procese i ecare proces poate avea a s mai multe ci de comunicatie deschise. Prin urmare, pe un calculator a trebuie s poat exista la un moment dat mai multe legturi (conexiuni) a a a active. Realizarea comunicrii este intermediat de sistemele de operare de pe a a calculatoarele pe care ruleaz cele dou procese. Deschiderea unei conea a xiuni, nchiderea ei, transmiterea sau receptionarea de date pe o cone xiune i congurarea parametrilor unei conexiuni se fac de ctre sistemul s a de operare, la cererea procesului. Cererile procesului se fac prin apelarea functiilor sistem din familia socket. cadrul comunicatiei dintre procesul utilizator i sistemul de operare In s local (prin intermediul apelurilor din familia socket), capetele locale ale conexiunilor deschise sunt numite socket-uri i sunt identicate prin nus mere ntregi, unice cadrul unui proces la ecare moment de timp. n Fiecare entitate care comunic cadrul retelei este identicat printr-o a n adres unic. O adresa este asociat de fapt unui socket. Adresa este a a a format conform regulilor protocolului de retea utilizat. a Interfata socket contine functii pentru comunicatiei att conform mod a elului conexiune ct i conform modelului cu datagrame. a s Functiile sistem oferite permit stabilirea comunicatiei prin diferite pro tocoale (de exemplu, IPv4, IPv6, IPX), dar au aceeai sintax de apel s a independent de protocolul dorit.

8.1.1. Comunicatia prin conexiuni


cele ce urmeaz, prin client desemnm procesul care solicit In a a a n mod activ deschiderea conexiunii ctre un partener de comunicatie specicat a printr-o adres, iar prin server elegem procesul care ateapt mod pasiv a nt s a n conectarea unui client. Vom da cele ce urmeaz o scurt descriere a operatiilor pe care n a a trebuie s le efectueze un proces pentru a deschide o conexiune i a comunica a s prin ea. Descrierea este artit patru prti: deschiderea conexiunii de mp a n a ctre client, deschiderea conexiunii de ctre server, comunicatia propriu-zis a a a i s nchiderea conexiunii. O descriere mai amnuntit a functiilor sistem apelate i a parametrilor a a s mai des utilizati este fcut separat ( 8.1.3), iar pentru detalii suplimentare a a se recomand citirea paginilor corespunztoare din documentatia on-line. a a

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 233

8.1.1.1. Deschiderea conexiunii de ctre client a Procesul client trebuie s cear mai ai sistemului de operare local a a nt crearea unui socket. Trebuie specicat protocolul de retea utilizat (TCP/IPv4, TCP/IPv6, etc), dar a nu se specic partenerul de comunicatie. Socket-ul nc a proaspt creat este starea neconectat. a n Dup crearea socket-ului, clientul cere sistemului de operare conectarea a 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) i numrul portului (vezi 10.3.1). s a Functiile sistem apelate sunt: socket() pentru crearea socket-ului i s connect() pentru deschiderea efectiv a conexiunii. a

8.1.1.2. Deschiderea conexiunii de ctre server a 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 cu un client, ci doar pentru ateptarea a s conectrii clientilor; ca urmare este numit uneori socket de ateptare. Dup a s a crearea acestui socket, serverul trebuie s cear sistemului de operare stabilirea a a adresei la care serverul ateapt cereri de conectare (desigur, acea parte din s a adres care identic maina serverului nu este la alegerea procesului server) a a s i apoi cere efectiv s nceperea ateptrii clientilor. Functiile apelate aceast s a n a faz sunt, ordinea care trebuie apelate: socket() pentru crearea socketa n n ului, bind() pentru stabilirea adresei i listen() pentru s nceperea ateptrii s a clientilor. Preluarea efectiv a unui client conectat se face prin apelarea unei a functii sistem numit accept(). La apelul functiei accept(), sistemul de a operare execut urmtoarele: a a ateapt cererea de conectare a unui client i deschide conexiunea ctre s a s a acesta; creaz un nou socket, numit socket de conexiune, care reprezint captul a a a dinspre server al conexiunii proaspt deschise; a returneaz apelantului (procesului server) identicatorul socket-ului de a conexiune creat. Dup un apel accept(), socket-ul de ateptare poate utilizat pentru a a s atepta noi clienti, iar socket-ul de conexiune nou creat se utilizeaz pentru a s a comunica efectiv cu acel client.

c 2008, Radu-Lucian Lupa s


234 8.1. Interfata de programare socket BSD

8.1.1.3. Comunicatia propriu-zis a O dat deschis conexiunea, clientul poate trimite iruri de octeti a a s ctre server i invers, serverul poate trimite iruri de octeti ctre client. Cele a s s a dou sensuri de comunicatie functioneaz identic (nu se mai distinge cine a a a fost client i cine a fost server) i complet independent (trimiterea datelor pe s s un sens nu este conditionat de receptionarea datelor pe cellalt sens). a a Pe ecare sens al conexiunii, se poate transmite un ir arbitrar de s octeti. Octetii trimii de ctre unul dintre procese spre cellalt sunt plasati s a a ntr-o coad, transferati prin retea la cellalt capt i cititi de ctre procesul a a a s a de acolo. Comportamentul acesta este similar cu cel al unui pipe UNIX. Trimiterea datelor se face prin apelul functiei send() (sau, cu functio nalitate mai redus, write()). Apelul acestor functii plaseaz datele coad a a n a spre a transmise, dar nu ateapt transmiterea lor efectiv (returneaz, de s a a a principiu, imediat controlul ctre procesul apelant). Dac dimensiunea datelor a a din coad este mai mare dect o anumit valoare prag, (aleas de sistemele a a a a de operare de pe cele dou maini), apelul send() se blocheaz, returnnd a s a a controlul procesului apelant abia dup ce partenerul de comunicatie citete a s date din coad, ducnd la scderea dimensiunii datelor din coad sub valoarea a a a a prag. Receptionarea datelor trimise de ctre partenerul de comunicatie se a face prin intermediul apelului sistem recv() (cu functionalitate mai redus a se poate utiliza read()). Aceste functii returneaz procesului apelant datele a deja sosite pe calculatorul receptor i le elimin din coad. cazul care nu s a a In n sunt a date disponibile, ele ateapt sosirea a cel putin un octet. nc s a Sistemul garanteaz sosirea la destinatie a tuturor octetilor trimii a s (sau stiintarea receptorului, printr-un cod de eroare, asupra cderii conen a xiunii), ordinea care au fost trimii. Nu se pstreaz a demarcarea n n s a a ns ntre secventele de octeti trimise apeluri send() distincte. De exemplu, este n posibil ca emittorul s trimit, dou apeluri succesive, irurile abc i def, a a a n a s s iar receptorul s primeasc, apeluri recv() succesive, irurile ab, cde i f. a a n s s 8.1.1.4. Inchiderea conexiunii Inchiderea conexiunii se face separat pentru ecare sens i pentru s ecare capt. Exist dou functii: a a a shutdown() nchide, la captul local al conexiunii, sensul de comunicatie a cerut de procesul apelant; close() nchide la captul local ambele sensuri de comunicatie i plus a s n distruge socket-ul, elibernd resursele alocate (identicatorul de socket a

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 235

i memoria alocat spatiul nucleului). s a n Terminarea unui proces are efect identic cu un apel close() pentru toate socket-urile existente acel moment posesia acelui proces. n n Dac captul de emisie al unui sens de comunicatie a fost a a nchis, receptorul poate citi continuare datele existente acel moment coad, n n n a dup care un eventual apel recv() va semnaliza apelantului faptul c a fost a a nchis conexiunea. a Dac captul de receptie al unui sens a fost a a nchis, o scriere ulterioar a de la cellalt capt este posibil s returneze un cod de eroare (pe sistemele a a a de tip UNIX, scrierea poate duce i la primirea, de ctre procesul emittor, a s a a unui semnal SIGPIPE).

8.1.2. Comunicatia prin datagrame


comunicatia prin datagrame, datagramele sunt transmise indepenIn dent una de cealalt i ecare datagram are o adres surs, o adres destinatie as a a a a i nite date utile. Un proces ce dorete s trimit sau s primeasc datagrame s s s a a a a trebuie mai ai s creeze un socket de tip dgram; un astfel de socket contine nt a principal adresa de retea a procesului posesor al socket-ului. Dup crearea n a unui socket, se poate cere sistemului de operare s asocieze socket-ului o ana umit adres sau se poate lsa ca sistemul de operare s-i atribuie o adres a a a a a liber arbitrar. Crearea unui socket se face prin apelul functiei socket(), iar a a atribuirea unei adrese se face prin apelul bind(). O dat creat un socket, procesul poate trimite datagrame de pe acel a socket, prin apelul functiei sendto(). Datagramele trimise vor avea ca adres a surs adresa socket-ului i ca adres destinatia i continut util valorile date ca a s a s parametri functiei sendto(). De pe un socket se pot trimite, succesiv, oricte a datagrame i orictor destinatari. s a Datagramele emise sunt transmise ctre sistemul de operare al desa tinatarului, unde sunt memorate buer-ele sistemului. Destinatarul poate n citi o datagram apelnd functia recvfrom(). Aceast functie ia urmtoarea a a a a datagram adresat socket-ului dat ca parametru la recvfrom() i o transfer a a s a din buer-ele sistemului local memoria procesului apelant. Functia ofer n a apelantului continutul datagramei (datele utile) i, separat, adresa expeditoru s lui datagramei. ciuda numelui, recvfrom() nu poate instruit s ia In a a n considerare doar datagramele expediate de la o anumit adres. a a Sistemul nu garanteaz livrarea tuturor datagramelor (este posibil a a pierderea unor datagrame) i nici nu ofer vreun mecanism de informare a s a expeditorului cazul unei pierderi. Mai mult, exist posibilitatea (e drept, n a rar) ca o datagam s e duplicat (s ajung dou copii la destinatar) i a a a a a a a s

c 2008, Radu-Lucian Lupa s


236 8.1. Interfata de programare socket BSD

este posibil ca dou sau mai multe datagrame adresate aceluiai destinatar s a s a ajung la destinatie alt ordine dect cea care au fost emise. Dac astfel a n a a n a de situatii sunt inadmisibile pentru aplicatie, atunci protocolul de comunicatie trebuie s prevad conrmri de primire i repetarea datagramelor pierdute, a a a s precum i numere de secvent sau alte informatii pentru identicarea ordinii s a corecte a datagramelor i a duplicatelor. Implementarea acestor mecanisme s cade sarcina proceselor. n La terminarea utilizrii unui socket, procesul posesor poate cere disa trugerea socket-ului i eliberarea resurselor asociate (identicatorul de socket, s memoria ocupat sistemul de operare pentru datele asociate socket-ului, a n portul asociat socket-ului). Distrugerea socket-ului se face prin apelul functiei close(). mod curent, In ntr-o comunicatie prin datagrame, unul dintre pro cese are rol de client, sensul c trimite cereri, iar cellalt actioneaz ca n a a a server, sensul c prelucreaz cererile clientului i trimite n a a s napoi clientului rspunsurile la cereri. a Intr-un astfel de scenariu, serverul creaz un socket a cruia asociaz o adres prestabilit, dup care ateapt cereri, apelnd a i a a a a s a a mod repetat recvfrom(). Clientul creaz un socket, cruia nu-i asociaz n a a a o adres (nu execut bind()). Clientul trimite apoi cererea sub forma unei a a datagrame de pe socket-ul creat. La trimiterea primei datagrame, sistemul de operare d o adres socket-ului; datagrama emis poart ca adres surs a a a a a a acest adres. La primirea unei datagrame, serverul recupereaz datele utile a a a i adresa surs, proceseaz cererea i trimite rspunsul ctre adresa surs a s a a s a a a cererii. acest fel, rspunsul este adresat exact socket-ului de pe care clienIn a tul a trimis cererea. Clientul obtine rspunsul executnd recvfrom() asupra a a socket-ului de pe care a expediat cererea. Cu privire la tratarea datagramelor pierdute, un caz simplu este acela care clientul pune doar n ntrebri (interogri) serverului, iar procesarea ina a terogrii nu modic nici un fel starea serverului. Un exemplu tipic acest a a n n sens este protocolul DNS ( 10.4). acest caz, datagrama cerere contine inIn terogarea i daatgrama rspuns contine att cererea la care se rspunde ct i s a a a a s rspunsul la interogare. Serverul ia ( mod repetat) cte o cerere, calculeaz a n a a rspunsul i trimite o a s napoi o datagram cu cererea primit i rspunsul la a as a cerere. Clientul trimite cererile sale i ateapt rspunsurile. Deoarece ecare s s a a rspuns contine el i cererea, clientul poate identica ecare rspuns la ce a n s a cerere corespunde, chiar i cazul inversrii ordinii datagramelor. Dac la o i s n a a cerere nu primete rspuns s a ntr-un anumit interval de timp, clientul repet cera erea; deoarece procesarea unei cereri nu modic starea serverului, duplicarea a cererii de ctre retea sau repetarea cererii de ctre client ca urmare a pierderii a a

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 237

rspunsului nu au efecte nocive. Clientul trebuie s ignore rspunsurile duplia a a cate la o aceeai interogare. s

8.1.3. Principalele apeluri sistem


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

Functia creaz un socket i returneaz identicatorul su. Parametrii a s a a sunt: type: desemneaz tipul de servicii dorite: a SOCK STREAM:conexiune punct la punct, ux de date bidirectional la nivel de octet, asigurnd livrare sigura, cu pastrarea ordinii a octetilor i transmisie fara erori. s SOCK DGRAM:datagrame, att punct la punct ct i difuziune; transa a s misia este garantat a fr erori, dar livrarea nu este sigura i a aa s nici ordinea datagramelor garantata. SOCK RAW:acces la protocoale de vel cobort; este de exemplu utilizat a de ctre comanda ping pentru comunicatie prin protocolul ICMP. a a a proto family identic tipul de retea cu care se lucreaz (IP, IPX, etc). Valori posibile: PF INET:protocol Internet, versiunea 4 (IPv4) PF INET6:protocol Internet, versiunea 6 (IPv6) PF UNIX:comunicatie local pe o main UNIX. a s a protocol selecteaz protocolul particular de utilizat. Acest parametru a este util dac pentru un tip de retea dat i pentru un tip de serviciu a s xat exist mai multe protocoale utilizabile. Valoarea 0 desemneaz a a protocolul implicit pentru tipul de retea i tipul de serviciu alese. s 8.1.3.2. Functia connect() Functia are sintaxa:
int connect(int sock_id, struct sockaddr* addr, int addr_len)

Functia are ca efect conectarea socketului identicat de primul parametru care trebuie s e un socket de tip conexiune proaspt creat ( a neconectat) a a nc

c 2008, Radu-Lucian Lupa s


238 8.1. Interfata de programare socket BSD

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

Functia are ca efect atribuirea adresei specicate parametrul addr n socket-ului identicat prin identicatorul sd. Aceast functie se apeleaz a a n mod normal dintr-un proces server, pentru a pregti un socket stream de a ateptare sau un socket dgram pe care se ateapt cereri de la clienti. s s a Partea, din adresa de atribuit socket-ului, ce contine adresa mainii s poate e una dintre adresele mainii locale, e valoarea special INADDR_ANY s a (pentru IPv4) sau IN6ADDR_ANY_INIT (pentru IPv6). primul caz, socket-ul In va primi doar cereri de conexiune (sau, respectiv, pachete) adresate adresei IP date socket-ului, i nu i cele adresate altora dintre adresele mainii server. s s s Exemplul 8.1: S presupunem c maina server are adresele 193.226.40.130 a a s i 127.0.0.1. Dac la apelul functiei bind() se d adresa IP 127.0.0.1, atunci s a a socket-ul respectiv va primi doar cereri de conectare destinate adresei IP 127.0.0.1, nu i adresei 193.226.40.130. Dimpotriv, dac adresa acordat s a a a prin bind() este INADDR_ANY, atunci socket-ul respectiv va accepta cereri de conectare adresate oricreia dintre adresele mainii locale, adic att adresei a s a a 193.226.40.130 ct i adresei 127.0.0.1. a s Adresa atribuit prin functia bind() trebuie s e liber acel moa a a n ment. Dac momentul apelului bind() exist un alt socket de acelai tip a n a s avnd aceeai adres, apelul bind() eueaza. a s a s

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 239

Pe sistemele de tip UNIX, pentru atribuirea unui numr de port mai a mic dect 1024 este necesar ca procesul apelant s ruleze din cont de admina a istrator. Functia bind() poate apelat doar pentru un socket proaspt creat, a a cruia nu i s-a atribuit a o adres. Aceasta a nc a nseamn c functia bind() a a nu poate apelat de dou ori pentru acelai socket. De asemenea, functia a a s bind() nu poate apelat pentru un socket de conexiune creat prin functia a accept() i nici pentru un socket asupra cruia s-a apelat prealabil vreuna s a n dintre functiile connect(), listen() sau sendto() aceste functii avnd ca a efect atribuirea unei adrese libere aleatoare. Functia returneaz 0 caz de succes i 1 caz de eroare. Eroarea a n s n cea mai frecvent este c adresa dorit este deja ocupat. a a a a 8.1.3.4. Functia listen()
int listen(int sd, int backlog)

Functia cere sistemului de operare s accepte, din acel moment, cererile a de conexiune pe adresa socket-ului sd. Dac socketului respectiv nu i s-a a atribuit a o adres (printr-un apel bind() anterior), functia listen() nc a i atribuie o adres aleas aleator. a a Parametrul backlog xeaz dimensiunea cozii de ateptare aca s n ceptarea conexiunilor. Anume, vor putea exista backlog clienti care au exe cutat connect() fr ca serverul s creat a pentru ei socket-uri de coneaa a nc xiune prin apeluri accept(). De notat c nu exist nici o limitare a numrului a a a de clienti conectati, preluati deja prin apelul accept(). 8.1.3.5. Functia accept()
int accept(int sd, struct sockaddr *addr, socklen_t *addrlen)

Apelul functiei accept() are ca efect crearea unui socket de cone xiune, asociat unui client conectat (prin apelul connect()) la socket-ul de ateptare sd. Dac nu exist a nici un client conectat i pentru care s nu s a a nc s a se creat socket de conexiune, functia accept() ateapt pn la conectarea s a a a urmtorului client. a Functia returneaz identicatorul socket-ului de conexiune creat. a Dac procesul server nu dorete s ae adresa clientului, va da valori a s a NULL parametrilor addr i addrlen. Dac procesul server dorete s ae adresa s a s a clientului, atunci va trebui s aloce spatiu pentru o structur pentru memoa a rarea adresei clientului, s pun adresa structurii respective parametrul a a n

c 2008, Radu-Lucian Lupa s


240 8.1. Interfata de programare socket BSD

addr, s plaseze a ntr-o variabil de tip a ntreg dimensiunea memoriei alocate pentru adresa clientului i s pun adresa acestui s a a ntreg parametrul adrlen. n acest caz, la revenirea din apelul accept(), procesul server va gsi strucIn a n tura de adres adresa socket-ului client i variabila a s n ntreag a crui adres a a a a fost dat parametrul adrlen va gsi dimensiunea efectiv utilizat de sisa n a a temul de operare pentru a scrie adresa clientului. 8.1.3.6. Formatul adreselor Pentru functiile socket ce primesc de la apelant (ca parametru) o adres din retea (bind(), connect() i sendto()), precum i pentru cele ce rea s s turneaz apelantului adrese de retea (accept(), recvfrom(), getsockname() a i getpeername()), sunt denite structuri de date (struct) care se plaseaz s n a adresele socket-urilor. Pentru ca functiile de mai sus s poat avea aceeai sintax de apel a a s a independent de tipul de retea (i, consecint, de structura adresei), functiile s n a primesc adresa printr-un pointer la zona de memorie ce contine adresa de retea. Structura zonei de memorie respective depinde de tipul retelei utilizate. toate cazurile, aceasta In ncepe cu un ntreg pe 16 biti reprezentnd tipul de a retea. Dimensiunea structurii de date ce contine adresa de retea depinde de tipul de retea i, plus, pentru anumite tipuri de retea, dimensiunea este s n variabil. Din acest motiv: a functiile care primesc de la apelant o adres (connect(), bind() i a s sendto()) au doi parametri: un pointer ctre structura de adres i a a s un ntreg reprezentnd dimensiunea acestei structuri; a functiile care furnizeaz apelantului o adres (accept(), recvfrom(), a a getsockname() i getpeername()) primesc doi parametri: un pointer s ctre structura de adres i un pointer ctre o variabil de tip a as a a ntreg pe care apelantul trebuie s-o initializeze, naintea apelului, cu dimensiunea pe care a alocat-o pentru structura de adres i care functia pune, a s n n timpul apelului, dimensiunea utilizat efectiv de astuctura de adres. a a ambele cazuri, parametrul pointer ctre structura de adres este declarat In a a ca ind de tip struct sockaddr*. La apelul acestor functii este necesar con a versia a pointer-ului ctre structura de adres de la pointer-ul specic tipului a a de retea la struct sockaddr*. O adres a unui capt al unei conexiuni TCP sau a unei legturi a a a prin datagrame UDP este format din adresa IP a mainii i numrul de port a s s a (vezi 10.2.3.1, 10.3.1.6 i 10.3.2). Pentru nevoile functiilor de mai sus, s adresele socket-urilor TCP i UDP se pun, functie de protocolul de nivel s n

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 241

retea (IPv4 sau IPv6), ntr-o structur de tip sockaddr_in pentru IPv4 sau a sockaddr_in6 pentru IPv6. Pentru adrese IPv4 este denit structura sockaddr_in avnd urma a a torii membrii: sin family:trebuie s contin constanta AF_INET; a a sin port:de tip ntreg de 16 biti (2 octeti), fr semn, ordine retea (cel aa n mai semnicativ octet este primul), reprezentnd numrul portului; a a sin addr:contine adresa IP. Are tipul struct in_addr, avnd un singur a cmp, s_addr, de tip a ntreg pe 4 octeti ordine retea. n Adresa IPv4 poate convertit de la notatia obinuit (notatia zeca s a imal cu puncte) la struct in_addr cu ajutorul functiei a
int inet_aton(const char *cp, struct in_addr *inp);

Conversia invers, de la structura in_addr la string notatie zecia n mal cu punct se face cu ajutorul functiei a
char *inet_ntoa(struct in_addr in);

care returneaz rezultatul a ntr-un buer static, apelantul trebuind s copieze a rezultatul nainte de un nou apel al functiei. Pentru adrese IPv6 este denit structura sockaddr_in6 avnd ura a mtorii membrii: a a a sin6 family:trebuie s contin constanta AF_INET6; ntreg de 16 biti (2 octeti), fr semn, ordine retea (cel aa n sin6 port:de tip mai semnicativ octet este primul), reprezentnd numrul portului; a a sin6 flow:eticheta de ux. sin6 addr:contine adresa IP. Are tipul struct in6_addr, avnd un singur a cmp, s6_addr, de tip tablou de 16 octeti. a Obtinerea unei adrese IPv4 sau IPv6 cunoscnd numele de domeniu a (vezi 10.4) se face cu ajutorul functiei
struct hostent *gethostbyname(const char *name);

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

c 2008, Radu-Lucian Lupa s


242 8.1. Interfata de programare socket BSD

char **h addr list:pointer la un ir de pointeri ctre adresele IPv4 sau s a IPv6 ale mainii cu numele name, formatul in_addr sau respectiv s n in6_addr; int h length:lungimea irului h_addr_list. s 8.1.3.7. Interactiunea dintre connect(), listen() i accept() s La apelul connect(), sistemul de operare de pe maina client trimite s mainii server o cerere de conectare. La primirea cererii de conectare, sistemul s de operare de pe maina server actioneaz astfel: s a dac adresa din cerere nu corespunde unui socket pentru care s-a efectuat a deja apelul listen(), refuz conectarea; a dac adresa corespunde unui socket pentru care s-a efectuat listen(), a ncearc plasarea clientului a ntr-o coad de clienti conectati i nepreluati a s a prin accept(). Dac plasarea reuete (coada ind mai mic dect nc a s s a a valoarea parametrului backlog din apelul listen()), sistemul de operare trimite sistemului de operare de pe maina client un mesaj de s acceptare; caz contrar trimite un mesaj de refuz. n Apelul connect() revine procesul client momentul sosirii acceptului sau n n refuzului de la sistemul de operare de pe maina server. Revenirea din apelul s connect() nu este deci conditionat de apelul accept() al procesului server. a Apelul accept() preia un client din coada descris mai sus. Dac a a coada este vid momentul apelului, functia ateapt sosirea unui client. a n s a Dac coada nu este vid, apelul accept() returneaz imediat. a a a Parametrul backlog al apelului listen() se refer la dimensiunea a cozii de clienti conectati (prin connect()) i a nepreluati prin accept(), s nc i nu la clientii deja preluati prin accept(). s 8.1.3.8. Functiile getsockname() i getpeername() s
int getsockname(int sd, struct sockaddr *name, socklen_t *namelen); int getpeername(int sd, struct sockaddr *name, socklen_t *namelen);

Functia getsockname() furnizeaz apelantului adresa socket-ului sd. a Functia getpeername(), apelat pentru un socket de tip conexiune deja conec a tat, furnizeaz adresa partenerului de comunicatie. a Functia getsockname() este util dac un proces actioneaz ca server, a a a cre acest scop un socket de ateptare, dar numrul portul pe care nd n s a ateapt conexiunile nu este prestabilit ci este transmis, pe alt cale, viitorilor s a a acest caz, procesul server creaz un socket (apelnd socket()), client. In a a

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 243

cere primirea cererilor de conexiune (apelnd listen(), dar fr a apelat a aa bind()) dup care determin, prin apelul getsockname(), adresa atribuit la a a a listen() socket-ului respectiv i transmite aceast adres viitorilor clienti. s a a 8.1.3.9. Functiile send() i recv() s Apelurile sistem send() i recv() sunt utilizate faza de comunis n catie pentru socket-uri de tip conexiune. Descriem continuare utilizarea n acestor functii considernd un singur sens de comunicatie i ca urmare ne vom a s referi la un proces emitator i un proces receptor raport cu sensul considerat. s n De notat a c o conexiune socket stream este bidirectional i comunicarea ns a as cele dou sensuri se desfoar independent i prin aceleai mecanisme. n a as a s s Sintaxa functiilor 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);

Functia send() trimite pe conexiunea identicat prin socket-ul sd a un numr de len octeti din variabila a crui adres este indicat de pointer-ul a a a a buf. Functia returneaz controlul dup plasarea datelor de transmis buer a a n ele sistemului de operare al mainii locale. Valoarea returnat de functia s a send() este numrul de octeti scrii efectiv, sau 1 caz de eroare. Datele a s n plasate buer-e prin apelul send() urmeaz a trimise spre receptor fr n a aa alte actiuni din partea emittorului. a modul normal de lucru, dac nu exist spatiu sucient buer-ele In a a n sistemului de operare, functia send() ateapt ca aceste buer-e s se elibereze s a a (prin transmiterea efectiv a datelor ctre sistemul de operare al receptorului a a i citirea lor de ctre procesul receptor). Aceast ateptare are ca rol frnarea s a a s a procesului emittor dac acesta produce date la un debit mai mare dect cel a a a cu care este capabil reteaua s le transmit sau procesul receptor s le preia. a a a a Prin plasarea valorii MSG_DONTWAIT parametrul flags, acest comportament n este modicat. Astfel, acest caz, dac nu exist sucient spatiu buer-ele n a a n sistemului de operare, functia send() scrie doar o parte din datele furnizate i returneaz imediat controlul procesului apelant. cazul care functia s a In n send() nu scrie nimic, ea returneaz valoarea 1 i seteaz variabila global a s a a cazul care functia send() scrie cel putin un errno la valoarea EAGAIN. In n octet, ea returneaz numrul de octeti scrii efectiv. ambele cazuri, este a a s In sarcina procesului emittor s apeleze din nou, la un moment ulterior, functia a a send() vederea scrierii octetilor rmai. n a s Deoarece functia send() returneaz a nainte de transmiterea efectiv a a datelor, eventualele erori legate de transmiterea datelor nu pot raportate

c 2008, Radu-Lucian Lupa s


244 8.1. Interfata de programare socket BSD

apelantului prin valoarea returnat de send(). Pot s apar dou tipuri de a a a a erori: cderea retelei i a s nchiderea conexiunii de ctre receptor. Aceste erori a vor raportate de ctre sistemul de operare al emittorului procesului emittor a a a prin aceea c apeluri send() ulterioare pentru acelai socket vor returna 1. a s plus, pe sistemele de tip UNIX, apelul send() pentru o conexiune al crui In a capt destinatie este a nchis duce la primirea de ctre procesul emittor a unui a a semnal SIGPIPE, care are ca efect implicit terminarea imediat a procesului a emittor. a Functia recv() extrage date sosite pe conexiune i aate buer s n ul sistemului de operare local. Functia primete ca argumente identicatorul s socket-ului corespunztor conexiunii, adresa unei zone de memorie unde s a a plaseze datele citite i numrul de octeti de citit. s a Numrul de octeti de citit reprezint numrul maxim de octeti pe care a a a functia va transfera din buer-ul sistemului de operare zona procesului i n apelant. Dac numrul de octeti disponibili buer-ele sistemului de operare a a n este mai mic, doar octetii disponibili acel moment vor transferati. Dac n a momentul apelului nu exist nici un octet disponibil buer-ele sistemului n a n de operare local, functia recv() ateapt sosirea a cel putin un octet. Functia s a returneaz numrul de octeti transferati (cititi de pe conexiune). a a Comportamentul descris mai sus poate modicat prin plasarea uneia din urmtoarele valori parametrul flags: a n n n MSG DONTWAIT: cazul care nu este nici un octet disponibil, functia recv() returneaz valoarea 1 i seteaz variabila global errno la a s a a valoarea EAGAIN; s a a MSG WAITALL:functia recv() ateapt s e disponibili cel putin len octeti i citete exact len octeti. s s Este important de notat c datele sunt transmise de la sistemul de opa erare emittor spre cel receptor fragmente (pachete), c artirea datelor a n a mp fragmente este independent de modul care au fost furnizate prin apeluri n a n send() succesive i c, nal, fragmentele ce vor disponibile succesiv pentru s a n receptor sunt independente de fragmentele furnizate apelurile send(). Ca n urmare, este posibil ca emittorul s trimit, prin dou apeluri send() conseca a a a utive, irurile de octeti abc i def, iar receptorul, apelnd repetat recv() cu s s a len=3 i flags=0, s primeasc ab, cd i ef. Singurul lucru garantat este c s a a s a prin concatenarea tuturor fragmentelor trimise de emittor se obtine acelai a s ir de octeti ca i prin concatenarea tuturor fragmentelor primite de receptor. s s cazul In nchiderii conexiunii de ctre emittor, apelurile recv() efeca a tuate de procesul receptor vor citi mai ai datele rmase buer-e, iar nt a n

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 245

dup epuizarea acestora vor returna valoarea 0. Prin urmare, functia recv() a returneaz valoarea 0 dac i numai dac emittorul a a a s a a nchis conexiunea i s toate datele trimise nainte de nchiderea conexiunii au fost deja citite. Dealtfel, valoarea 0 returnat de recv() sau read() este semnalizarea uzual a a a terminrii datelor de citit i se utilizeaz i pentru a semnaliza sfritul unui a s as as ier sau s nchiderii captului de scriere a ntr-un pipe UNIX. 8.1.3.10. Functiile shutdown() i close() s
int shutdown(int sd, int how); int close(int sd);

Functia shutdown() nchide sensul de emisie, sensul de receptie sau ambele sensuri de comunicatie ale conexiunii identicate de indeticatorul de socket sd, conform valorii parametrului how: SHUT_WR, SHUT_RD sau respectiv SHUT_RDWR. Utilitatea principal a functiei este a nchiderea sensului de emisie pentru a semnaliza celuilalt capt terminarea datelor transmise (apelurile a recv() din procesul de la cellalt capt al conexiunii vor returna 0). Functia a a shutdown() poate apelat doar pe un socket conectat i nu distruge socketa s ul. Functia close() distruge socket-ul sd. Dac socket-ul era un socket a conectat acel moment, n nchide ambele sensuri de comunicatie. Dup apelul a close(), identicatorul de socket este eliberat i poate utilizat ulterior de s ctre sistemul de operare pentru a identica socket-uri sau alte obiecte create a ulterior. Apelul close() este necesar pentru a elibera resursele ocupate de socket. Poate efectuat oricnd asupra oricrui tip de socket. a a Terminarea unui proces, indiferent de modul de terminare, are ca efect i distrugerea tuturor socket-urilor existente acel moment, printr-un s n mecanism identic cu cte un apel close() pentru ecare socket. a 8.1.3.11. Functiile sendto() i recvfrom() s
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);

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

c 2008, Radu-Lucian Lupa s


246 8.1. Interfata de programare socket BSD

to: pointer spre structura ce contine adresa de retea a destinatarului; tolen reprezint lungimea structurii pointate de to; a buf: pointer spre o zon de memorie ce contine datele utile; len reprezint a a lungimea datelor utile. Datele utile sunt un ir arbitrar de octeti. s Functia returneaz numrul de octeti ai datagramei trimise (adic valoarea a a a lui len) caz de succes i 1 caz de eroare. Functia returneaz conn s n a trolul apelantului nainte ca pachetul s e livrat destinatarului i ca urmare a s eventuala pierdere a pachetului nu poate raportat apelantului. a Functia recvfrom() citete din buerele sistemului de operare local s urmtoarea datagram adresat socket-ului dat ca parametru. Dac nu exist a a a a a nici o datagram, functia ateapt sosirea urmtoarei datagrame, cu exceptia a s a a cazului care flags contine valoarea MSG_DONTWAIT, caz care recvfrom() n n returneaz imediat valoarea 1 i seteaz errno la valoarea EAGAIN. a s a Datagrama este citit zona de memorie pointat de parametrul a n a buf i a crei dimensiune este dat variabila len. Functia recvfrom() s a a n returneaz dimensiunea datagramei. Dac datagrama este mai mare dect a a a valoara parametrului len, nalul datagramei este pierdut; functia recvfrom() nu scrie niciodat dincolo de len octeti memoria procesului. a n Adresa emittorului datagramei este plasat de functia recvfrom() a a variabila pointat de from. Parametrul fromlen trebuie s pointeze la o n a a variabil de tip a ntreg a crui valoare, a nainte de apelul recvfrom(), trebuie s a e egal cu dimensiunea, octeti, a zonei de memorie alocate pentru adresa a n emittorului. Functia recvfrom() modic aceast variabil, punnd ea a a a a a n dimensiunea utilizat efectiv pentru scrierea adresei emittorului. a a

8.1.4. Exemple
8.1.4.1. Comunicare prin conexiune Dm mai jos textul surs ( C pentru Linux) pentru un client care se a a n conecteaz la un server TCP/IPv4 specicat prin numele mainii i numrul a s s a portului TCP (date ca argumente linia de comand), trimite un ir de n a i s caractere xat (abcd), dup care citete i aeaz tot ce trimite server-ul. a s s s a
#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 Lupa s


Capitolul 8. Programarea retea introducere n 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

Dm continuare textul surs pentru un server care ateapt conectarea a n a s a unui client pe portul specicat linia de comand, aeaz adresa de la care n a s a s-a conectat clientul (adresa IP i numrul de port), citete de pe conexiune s a s

c 2008, Radu-Lucian Lupa s


248 8.1. Interfata de programare socket BSD

i aeaz pe ecran tot ce transmite clientul (pn la s s a a a nchiderea sensului de conexiune de la client la server) i apoi trimite s 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 Lupa s


Capitolul 8. Programarea retea introducere n 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 la un a server specicat prin numele mainii sau adresa IP i numrul de port. Clientul s s a trimite serverului o datagram de 4 octeti continnd textul abcd i ateapt a a s s a o datagram ca rspuns, a crei continut aeaz. a a a l s 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 Lupa s


250 8.1. Interfata 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; }

continuare descriem un server UDP/IPv4. Acesta ateapt o dataIn s a gram de la un client, aeaz adresa de la care a fost trimis datagrama a s a a precum i continutul datagramei primite. Apoi trimite s napoi, la adresa de la care a sosit datagrama de la client, o datagram continnd irul de 3 octeti a a s 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 Lupa s


Capitolul 8. Programarea retea introducere n 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 Lupa s


252 8.2. Formatarea datelor

8.2. Formatarea datelor


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

8.2.1. Formate binare


Formatele binare sunt asemntoare cu formatele utilizate de proa a gramele compilate pentru stocarea datelor variabilele locale. Pn la un n a a punct, este rezonabil transmiterea unei informatii prin instructiuni de forma a
Tip msg; ... send(sd, &msg, sizeof(msg), 0);

i receptia prin s
Tip msg; ... recv(sd, &msg, sizeof(msg), MSG_WAITALL);

unde Tip este un tip de date oarecare declarat identic ambele programe n (emittor i receptor). a s Exist a cteva motive pentru care o astfel de abordare nu este, a ns a n general, acceptabil. Vom descrie continuare problemele legate de ecare a n tip de date parte, precum i cteva idei privind rezolvarea lor. n s a 8.2.1.1. Tipuri ntregi La transmiterea variabilelor ntregi apar dou probleme de portabila itate: dimensiunea unui ntreg nu este, general, standardizat exact ( n a n C/C++ un int poate avea 16, 32 sau 64 de biti); ordinea octetilor memorie (big endian sau little endian) depinde de n arhitectura calculatorului. Dac scriem un program pentru un anumit tip de calculatoare i a s pentru un anumit compilator, pentru care tim exact dimensiunea unui int i s s ordinea octetilor, putem transmite i receptiona date prin secvente de tipul: s
int a; ... send(sd, &a, sizeof(a), 0);

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 253

pentru emittor i a s
int a; ... recv(sd, &a, sizeof(a), MSG_WAITALL);

pentru receptor. Dac a emittorul este compilat pe o platform pe care a ns a a int are 16 biti i este reprezentat big endian, iar receptorul este compilat pe s o platform pe care int are 32 de biti i este little endian, cele dou programe a s a nu vor comunica corect. Pentru a putea scrie programe portabile, biblioteca C standard pe sisteme de tip UNIX contine, header-ul arpa/inet.h: n typedef-uri pentru tipuri ntregi de lungime standardizat (independent a a de compilator): uint16_t de 16 biti i uint32_t de 32 de biti; s functii de conversie ntre formatul locat (little endian sau big endian, dup a caz) i formatul big endian, utilizat cel mai adesea pentru datele transs mise Internet. Aceste functii sunt: htons() i htonl() (de la host n s to network, short, respectiv host to network, long), pentru conversia de la format local la format big endian (numit i format retea), i ntohs() s s i ntohl() pentru conversia sens invers. Variantele cu s (htons() i s n s ntohs()) convertesc ntregi de 16 biti (de tip uint16_t, iar cele cu l convertesc ntregi de 32 de biti (uint32_t). Implementarea acestor typedef-uri i functii depinde de platform (de arhis a tectur i de compilator). Utilizarea lor permite ca restul sursei programului as s nu depind de platform. a a 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 sunt compilate, fragmentele de mai sus emit, rea spectiv receptioneaz, un a ntreg reprezentat pe 32 de biti format big endian. n

c 2008, Radu-Lucian Lupa s


254 8.2. Formatarea datelor

8.2.1.2. Siruri de caractere i tablouri s Transmiterea sau memorarea unui tablou necesit transmiterea (rea spectiv memorarea), ntr-un fel sau altul, a numrului de elemente din tablou. a Dou metode sunt frecvent utilizate acest scop: transmiterea prealaa n n bil a numrului de elemente i transmiterea unui element cu valoare speciale a s (terminator) dup ultimul element. a Pe lng numrul de elemente efective ale tabloului este necesar a a a a cunoaterea numrului de elemente alocate. La reprezentarea memorie sau s a n iere pe disc, sunt utilizate frecvent tablouri de dimensiune xat la comn s a pilare. Avantajul dimensiunii xe este c variabilele situate dup tabloul rea a spectiv se pot plasa la adrese xe i pot accesate direct; dezavantajul este s un consum sporit de memorie i o limit mai mic a numrului de obiecte ce s a a a pot puse tablou. n La transmiterea tablourilor prin conexiuni retea, de regul numrul n a a de elemente transmise este egal cu numrul de elemente existente mod real, a n plus elementul terminator (dac este adoptat varianta cu terminator). Nu a a sunt utilizate tablouri de lungime x deoarece datele situate dup tablou a a oricum nu pot accesate direct. cazul reprezentrii cu numr de elemente, receptorul citete ai In a a s nt numrul de elemente, dup care aloc spatiu (sau veric dac spatiul aloa a a a a cat este sucient) i citete elementele. cazul reprezentrii cu terminator, s s In a receptorul citete pe rnd ecare elemen i-i veric valoarea; la alnirea s a s a nt terminatorului se oprete. s Inainte de-a citi ecare element, receptorul trebuie s verice dac mai are spatiu alocat pentru acesta, iar caz contrar e s rea a n a aloce spatiu pentru tablou i s copieze spatiul nou alocat elementele citite, s a n e s renunte i s semnaleze eroare. a s a Exemplul 8.2: Se cere transmiterea unui ir de caractere. Reprezentarea s irului pe conexiune este: un s ntreg pe 16 biti big endian reprezentnd lungimea a irului, urmat de irul propriu-zis (reprezentare diferit deci de reprezentarea s s a uzual memorie, unde irul se termin cu un caracter nul). Descriem a n s a n continuare emittorul: a
char* s; uint16_t l; ... l=htons(strlen(s)); send(sd, &l, 2, 0); send(sd, s, strlen(s), 0);

i receptorul: s

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 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 retea. Exemplul 8.3: Se cere transmiterea unui ir de caractere. Reprezentarea s pe conexiune va ca un ir de caractere urmat de un caracter nul (adic s a reprezentare identic celei din memorie, dar pe lungime variabil, egal cu a a a minimul necesar). Emittorul este: a
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 i memorie i pe conexiune se reprezint cmpurile unul dup s n s a a a altul i ca urmare transmiterea lor nu ridic probleme deosebite. s a Din pcate a, reprezentarea unei structuri memorie depinde a ns n de platform (arhitectura calculatorului i compilator), datorit problemelor a s a

c 2008, Radu-Lucian Lupa s


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), accesarea de a ctre procesor a unei variabile de tip a ntreg sau real a crui adres memorie a a n nu este multiplu de un anumit numr de octeti este pentru unele procesoare a imposibil iar pentru celelalte inecient. Numrul ce trebuie s divid adresa a a a a a se numete aliniere i este de obicei minimul dintre dimensiunea variabilei i s s s limea magistralei. Astfel, dac magistrala de date este de 4 octeti, at a ntregii de 2 octati trebuie s e plasati la adrese pare, iar a ntregii de 4 sau 8 octeti trebuie s e la adrese multiplu de 4; nu exist restrictii cu privire la caractere a a ( ntregi pe 1 octet). Compilatorul, mpreun cu functiile de alocare dinamic a a a memoriei, asigur alinierea recurgnd la urmtoarele metode: a a a adaug octeti nefolositi a ntre variabile, adaug octeti nefolositi a ntre cmpurile unei structuri, a adaug octeti nefolositi la nalul unei structuri ce face parte dintr-un a tablou, aloc variabilele de tip structur la adrese multiplu de o limea magisa a at tralei. Ca urmare, reprezentarea memorie a unei strcturi depinde de platn form i, consecint, un fragment de cod de forma: a s n a
struct Msg { char c; uint32_t i; }; Msg m; ... m.i=htonl(m.i); send(sd, &m, sizeof(m), 0);

este neportabil. functie de limea magistralei, de faptul c alinierea inIn at a corect duce la imposibilitatea accesrii variabilei sau doar la inecient i, a a a s n acest din urm caz, de optiunile de compilare, dimensiunea structurii Msg de a mai sus poate 5, 6 sau 8 octeti, ntre cele dou cmpuri ind respectiv 0, 1 a a sau 3 octeti neutilizati. Rezolvarea problemei de portabilitate se face transmitnd separat a ecare cmp: a
struct Msg { char c; uint32_t i;

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n }; 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 cadrul unui proces, transmiterea a n unui pointer ctre un alt proces este complet inutil. a a

8.2.2. Formate text


Intr-un format text, ecare cmp este esent un ir de caractere a n a s terminat cu spatiu, tab, newline sau un alt caracter specicat prin standard. Metodele descrise pentru transmiterea i receptionarea unui ir de caractere s s se aplic i la obiectele transmise formate de tip text. as n

8.2.3. Probleme de robustete i securitate s


Orice apel de functie sistem poate eua din multe motive; ca urmare, s la ecare apel send() sau recv() programul trebuie s verice valoarea rea turnat. a Un receptor robust trebuie s se comporte rezonabil la orice fel de a date trimise de partenerul de comunicatie, inclusiv cazul alcrii de ctre n nc a a acesta a standardului de reprezentare a datelor i inclusiv cazul care s n n emittorul a nchide conexiunea mijlocul transmiterii unei variabile. n Validitatea datelor trebuie vericat a ntotdeauna dup citire. Dac a a receptorul ateapt un s a ntreg pozitiv, este necesar s se verice prin program a c numrul primit este a a ntr-adevr pozitiv. Este de asemenea necesar s se a a stabileasc i s se impun explicit nite limite maxime. Astfel, s presupunem as a a s a c programul receptor primete un ir de a s s ntregi reprezentat prin lungimea, ca numr de elemente, pe 32 de biti, urmat de elementele propriu-zise. Chiar a a dac de principiu numrul de elemente ne ateptm s e a a s a a ntre 1 i cteva sute, s a trebuie s ne asigurm c programul se comport rezonabil dac numrul de a a a a a a elemente anuntat de emittor este 0, 2147483647 (adic 231 1) sau alte aseme a a nea valori. Comportament rezonabil nseamn e s e capabil s proceseze a a a corect datele, e s declare eroare i s a s a ncheie curat operatiile ncepute. Orice program care nu este robust este un risc de securitate.

c 2008, Radu-Lucian Lupa s


258 8.2. Formatarea datelor

8.2.4. Probleme privind costul apelurilor sistem


Apelul functiilor send() i recv() este scump, termeni de timp s n de procesor, deoarece, ind functii sistem, necesit o comutare de drepturi a n procesor, salvarea i restaurarea contextului apelului i o serie de vericri din s s a partea nucleului sistemului de operare; total, echivalentul ctorva sute de n a instructiuni. Acest cost este independent de numrul de octeti transferati. a Este, prin urmare, ecient ca ecare apel send() sau recv() s transa fere ct de multi octeti se poate. Un program care trimite date este bine s a a pregteasc datele a a ntr-o zon tampon local i s trimit totul printr-un sina as a a gur apel send(). Un program care primete date este bine s cear (prin s a a recv()) cte un bloc mai mare de date i apoi s analizeze datele primite. a s a Acest mod de lucru se realizeaz cel mai bine prin intermediul unor functii de a bibliotec adecvate. a Descriem continuare functiile din biblioteca standard C utilizabile n acest scop. Biblioteca poate utilizat att pentru emisie i receptie printr-o n a a s conexiune socket stream ct i pentru citire sau scriere a s ntr-un ier sau pentru s comunicare prin pipe sau fo. Elementul principal al bibliotecii este structura FILE, ce contine: un identicator de ier deschis, conexiune socket stream, pipe sau fo; s o zon de memorie tampon, a mpreun cu variabilele necesare gestionrii a a ei. Functiile de citire ale bibliotecii sunt fread(), fscanf(), fgets() i fgetc(). Fiecare dintre aceste functii extrage datele din zona tampon a s structurii FILE dat ca parametru. Dac zona tampon nu sunt sucienti a a n octeti pentru a satisface cererea, aceste functii apeleaz functia sistem read() a asupra identicatorului de ier din structura FILE pentru a obtine octetii s urmtori. Fiecare astfel de apel read() a ncearc s citeasc civa kiloocteti. a a a at Pentru ecare din functiile de mai sus, dac datele de returnat aplicatiei se a gsesc deja zona tampon, costul executiei este de cteva instructiuni pena n a tru ecare octet transferat. Ca urmare, la citirea a cte un caracter o dat, a a utilizarea functiilor de mai sus poate reduce timpul de executie de cteva zeci a de ori. Exemplul 8.4: Fie urmtoarele fragmente de cod: a
int sd; char s[512]; int i,r; ... while( ((r=recv(sd, s+i, 1, 0))==1 && s[i++]!=0 ) {}

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 259

i s
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 ir de octeti ters minat cu un caracter nul. Primul fragment de cod apeleaz recv() o dat a a pentru ecare caracter al irului. Al doilea fragment apeleaz fgetc() o dat s a a pentru ecare caracter al irului. La o mic parte dintre aceste apeluri, functia s a fgetc() va apela spate functia sistem read() pentru a citi efectiv datele n de pe conexiune; la restul apelurilor, fgetc() returneaz apelantului cte un a a caracter aat deja zona tampon. Ca rezultat global, al doilea fragment de n cod se va executa de cteva zeci de ori mai repede dect primul. a a Testarea nchiderii conexiunii i terminrii datelor se poate face apes a lnd functia foef(). De notat c aceast functie poate s returneze false a a a a chiar dac s-a ajuns la nalul datelor; rezultatul true este garantat doar dup a a o tentativ nereuit de-a citi dincolo de nalul datelor transmise. a s a Pentru scriere, functiile de bibliotec corespunztoare sunt fwrite(), a a fprintf(), fputs() i fputc(). Aceste functii scriu datele zona tampon s n din structura FILE. Transmiterea efectiv pe conexiune (sau scrierea ier) a n s se face automat la umplerea zonei tampon. Dac este necesar s ne asigurm a a a c datele au fost transmise efectiv (sau scrise ier), functia fflush() a n s efectueaz acest lucru. Functia fclose() de asemenea trimite sau scrie ula timele date rmase zona tampon. a n Asocierea unei zone tampon unei conexiuni deja deschise se face apelnd functia fdopen(). Functia fdopen() primete doi parametri. Primul a s parametru este identicatorul de socket cruia trebuie s-i asocieze zona tama a pon (identicatorul returnat de functia socket() sau accept()). Al doilea parametru specic functiei fdopen() dac trebuie s asocieze zona tampon a a a pentru citire sau pentru scriere; este de tip ir de caractere i poate avea vals s oarea "r" pentru citire sau "w" pentru scriere. Pentru un socket stream, cele dou sensuri functionnd complet independent, aceluiai socket i se pot asocia a a s dou zone tampon (dou structuri FILE), cte una pentru ecare sens. a a a Functia fclose() scrie informatiile rmase zona tampon (dac a n a zona tampon a fost creat pentru sensul de scriere), elibereaz memoria aloa a cat zonei tampon i a s nchide conexiunea.

c 2008, Radu-Lucian Lupa s


260 8.3. Probleme de concurenta comunicatie n

8.3. Probleme de concurent comunicatie a n


O particularitate a majoritii programelor ce comunic retea este at a n aceea c trebuie s rspund prompt la mesaje provenind din surse diferite i a a a a s ntr-o ordine necunoscut dinainte. a S lum de exemplu un server ssh ( 11.2.1). Serverul poate avea mai a a multi clienti conectati simultan. La ecare moment, este imposibil de prezis care dintre clienti va trimite primul o comand. a Dac serverul execut un apel recv() blocant de pe socket-ul unui a a client, serverul va pus ateptare pn ce acel client va trimite date. Este n s a a posibil ca utilizatorul ce comand acel client s stea 10 minute s se gndeasc. a a a a a Dac acest timp un alt client trimite o comand, serverul nu o va putea a n a ,,vedea ct timp este blocat ateptarea datelor de la primul client. Ca a n s urmare, datele de la al doilea client vor atepta cel putin 10 minute pentru a s procesate. Exist mai multe solutii la problema de mai sus: a Serverul citete de la clienti, pe rnd, prin apeluri recv() neblocante (cu s a 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 */ } }

acest fel, serverul nu este pus ateptare dac un client nu i-a trimis In n s a nimic. Dezavantajul solutiei este acela c, dac o perioad de timp a a a nici un client nu trimite nimic, atunci bucla se execut mod repetat, a n consumnd inutil timp de procesor. a Pentru evitarea inconvenientului solutiei anterioare, sistemele de operare de tip UNIX ofer o functie sistem, numit select(), care primete o a a s list de identicatori de socket i, optional, o durat, i pune procesul a s a s n ateptare pn cnd e exist date disponibile pe vreunul din socket-ii s a a a a dati, e expir durata de timp specicat. a a O abordare complet diferit este aceea de-a crea mai multe procese sau, a sistemele de operare moderne, mai multe re de executie (thread-uri) n cardul procesului server ecare proces sau r de executie urmrind n a un singur client. acest caz, procesul sau rul de executie poate executa In recv() blocant asupra socket-ului corespunztor clientului su. lipsa a a In

c 2008, Radu-Lucian Lupa s


Capitolul 8. Programarea retea introducere n 261

activitii clientilor, ecare proces sau r de executie al serverului este at blocat apelul recv() asupra socket-ului corespunztor. momentul n a In care un client trimite date, nucleul sistemului de operare trezete n s procesul sau rul ce executa recv() pe socket-ul corespunztor; procesul a sau rul execut prelucrrile necesare dup care probabil execut un nou a a a a recv() blocant. Cazul unui server cu mai multi clienti nu este singura situatie care n este nevoie de a urmri simultan evenimente pe mai multe canale. Alte situatii a sunt: un client care trebuie s urmreasc simultan actiunile utilizatorului i a a a s mesajele sosite de la server; un server care poate trimite date cu debit mai mare dect capacitatea a retelei sau capacitatea de prelucrare a clientului; acest caz serverul n are de urmrit simultan, pe de o parte noi cereri ale clientilor, iar pe de a alt parte posibilitatea de-a trimite noi date spre clienti urma faptului a n c vechile date au fost prelucrate de acetia. a s un server care trebuie s preia mesaje de la clientii conectati i, acelai a s n s timp, s poat accepta clienti noi. a a Un aspect important ce trebuie urmrit proiectarea unui server a n concurent este servirea echitabil a clientilor, independent de comportamentul a acestora. Dac un client trimite cereri mai repede dect este capabil serverul a a s-l serveasc, serverul trebuie s execute o parte din cereri, apoi s serveasc a a a a a cereri ale celorlalti clienti, apoi s revin la primul i s mai proceseze o parte a a s a din cereri i aa mai departe. Nu este permis ca un client care inund serverul s s a cu cereri s acapareze a ntreaga putere de calcul a serverului i ceilalti clienti s s atepte la innit. a s

c 2008, Radu-Lucian Lupa s


262 Capitolul 8. Programarea retea introducere n

c 2008, Radu-Lucian Lupa s


263

Capitolul 9

Retele IEEE 802

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

9.1. Retele IEEE 802.3 (Ethernet)


Cele mai multe retele locale (retele cu ntinderi geograce reduse, de pn la civa kilometri) sunt construite pe baza standardului IEEE 802.3 a a at [IEEE 802.3, 2005]. Astfel de retele mai sunt numite, mod curent, retele n Ethernet (denumirea standardului original, din care a fost dezvoltat standardul IEEE 802.3) sau retele UTP 10/100/1000 (UTP vine de la unshielded twisted pairs perechi torsadate neecranate i desemneaz tipul de cas a blu utilizat cel mai frecvent instalatiile actuale, iar 10/100/1000 sunt can pacitile posibile ale legturilor, msurate megabiti pe secund). at a a n a Standardul este complex (are peste 1500 de pagini) i a rezultat s n urma unei evolutii ntinse pe mai mult de 20 de ani. cele ce urmeaz vom In a trece revist aspectele mai importante. n a Componentele din care se realizeaz o retea Ethernet sunt: a Interfata de retea sau placa de retea (engl. Network Interface Card NIC ) este dispozitivul prin care se conecteaz un calculator la retea. a Cablul magistral. O retea constrit cu cablu magistral consta a a a ntrun cablu, format din dou conductoare izolate a ntre ele, la care sunt

c 2008, Radu-Lucian Lupa s


264 9.1. Retele IEEE 802.3 (Ethernet)

conectate, paralel, interfetele de retea ale calculatoarelor (g. 9.1). n In acest sistem, semnalul emis de orice interfat de retea este receptionat a de toate celelalte interfete de retea conectate la acel cablu.
statie statie statie statie

terminator

cablu magistral a

terminator

Figura 9.1: O retea Ethernet construit cu un cablu magistral a a

Comunicatia se face prin pachete de dimensiune variabil. a Dou interfete care emit simultan si bruiaz reciproc semnalele a a emise; este necesar deci un mecanism de control al accesului la mediu (vezi 4.2). IEEE 802.3 alege solutia cu detectarea coliziunilor i re s transmiterea pachetelor distruse de coliziuni. Deoarece ecare interfat de retea ,,aude toate pachetele emise a retea, este prevzut un mecanism prin care interfata s identice i n a a s s livreze sistemului de operare numai pachetele ce sunt destinate. a i Anume, ecare interfat de retea are o adres unic, numit adres a a a a a zic sau adres MAC i ecare pachet poart adresa sursei i adresa a a s a s destinatiei. Repetorul (engl. repeater ) este un dispozitiv care este conectat la mai multe cabluri de retea i copiaz pachetele de date de pe ecare cablu s a pe celelalte. Repetorul este conectat la ecare cablu de retea ntocmai ca o interfat de retea a unui calculator. Interfata repetorului ctre cablul a a de retea se numete port. s Oridecteori repetorul receptioneaz un pachet printr-unul dintre a a porturile sale (printr-unul din cablurile de retea conectate la repetor), l retransmite (repet) pe toate celelalte cabluri de retea conectate (toate a cu exceptia celui prin care a intrat pachetul). Retransmiterea se face cu arziere de ordinul duratei ctorva biti, orice caz mai putin dect nt a n a durata unui pachet. Dac repetorul receptioneaz simultan pachete prin a a dou sau mai multe porturi, consider c are loc o coliziune i semnala a a s izeaz acest lucru emitnd, prin toate porturile, un semnal special de a a anuntare a coliziunii. Acest semnal de coliziune se propag toat a n a reteaua.

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 265

repetor

repetor

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

Repetoarele permit construirea unei retele ntinse pe o distant a mai mare dect lungimea maxim a unui singur cablu (lungime limitat a a a de atenuarea semnalului pe cablu). O retea construit cu repetoare este a desenat gura 9.2. a n Odat cu ieftinirea repetoarelor, a devenit curent utilizarea cte a a a acest unui cablu pentru conectarea ecrui calculator la un repetor. In a fel, un cablu de retea va avea legate la el doar dou echipamente: e a o interfat de retea i un repetor, e dou repetoare, e dou interfete a s a a de retea ( acest din urm caz rezult o retea format doar din dou n a a a a calculatoare). De regul, cablul de legtur folosit aceste cazuri este o a a a n legtur duplex (vezi mai jos) i poate conecta doar dou echipamente. a a s a Repetoarele utilizate aceast situatie se mai numesc hub-uri (engl. n a hub = butuc de roat). a Comutatoarele. Un comutator (eng. switch) este un dispozitiv asema ntor cu un repetor, dar cu urmtoarele modicri: a a a - este capabil s memoreze cte un pachet a a ntreg pentru ecare port; - dac primete simultan dou sau mai multe pachete, le memoreaz a s a a i le retransmite pe rnd; s a - dac este posibil, loc s retransmit un pachet prin toate porturile a n a a comutatorului, retrimite doar pe calea ctre interfata de retea l a

c 2008, Radu-Lucian Lupa s


266 9.1. Retele IEEE 802.3 (Ethernet)

creia este destinat pachetul (a se vedea 9.1.5 pentru detalii). a i Legturile duplex. Cablurile de legtur a a a ntre dou echipamente pot a fcute cu ci independente pentru cele dou sensuri. Dac i echipaa a a as mentele conectate sunt capabile s emit i s receptioneze simultan, este a as a posibil realizarea unei comunicatii duplex a ntre cele dou echipamente. a Exist cadrul IEEE 802.3 mai multe sub-standarde legate de nivelul a n zic, privitoare la cablurile de legtur a a ntre echipamente. Cu exceptia debitu lui de comunicatie i a existentei sau absentei posibilitii comunicatiei duplex, s at tipul cablului de legtur ales nu afecteaz restul retelei. a a a Pentru echipamente capabile s functioneze dup mai multe stana a darde privind nivelul zic (debite diferite i mod semi-duplex sau duplex), s exist un protocol de negociere al modului de transmisie la nivel zic folosit; a acesta va studiat 9.1.1 cu ocazia prezentrii standardului 10 Base T. n a

9.1.1. Legturi punct la punct prin perechi de conductoare a


Grupm la un loc studiul legturilor punct la punct prin perechi de a a conductoare datorit multiplelor aspecte comune a ntre toate tipurile de astfel de legturi admise de standard. a Toate aceste variante de legturi sunt gndite pentru a realiza un a a cablaj ieftin i abil interiorul unei singure cldiri. s n a toate cazurile, mediul de transmisie este format din dou sau patru In a perechi de conductoare torsadate. Cu cablurile recomandate de standard, lungimea maxim a unei legturi este de 100 m. a a Conditiile de izolare electric i de pmntare nu permit utilizarea a s a a sigur pentru legturi aeriene prin exteriorul cldirilor. Pentru astfel de scopa a a uri standardul recomand utilizarea brelor optice. a Descriem continuare particularitile tuturor standardelor privin at toare la nivelul zic construit pe perechi torsadate. 10 Base T . Este o legtur duplex la 10 Mbit/s utiliznd dou perechi de a a a a conductoare torsadate, cte o perechie pentru ecare sens (4 conductoare a n total). Denumirea standardului vine de la viteza de comunicatie (10 Mbit/s), codicarea ( banda de baz) i tipul mediului (Twisted pairs perechi n a s torsadate). Cablul de legtur const, aa cum am vzut, din 4 conductoare a a a s a izolate. Conductoarele sunt mperecheate 2 cte 2 (formnd deci 2 perechi). a a cadrul ecrei perechi, conductoarele sunt rsucite unul jurul celuilalt In a a n

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 267

pentru reducerea interferentelor cu cmpurile electromagnetice din jur. Car a acteristicile electrice ale cablurilor, specicate prin standard, sunt general n ndeplinite de ctre tronsoanele de pn la 100 m construite din cablurile a a a folosite mod curent pentru reteaua telefonic i clasicate, sistemul amern as n ican de telefonie, UTP Cat 3 (UTP de la Unshielded Twisted Pairs perechi torsadate neecranate, iar Cat 3, de la Category 3 ). Dm continuare, cu titlu informativ, cteva caracteristici: a n a impedanta caracteristic: 100 ; a atenuare: maxim 11,5 dB pentru tot tronsonul de cablu (de fapt acesta este parametrul care limiteaz lungimea unui tronson de cablu; dac a a folosim un cablu cu atenuarea pe 200 m mai mic de 11,5 dB, putem a cabla un tronson de 200 m cu astfel de cablu fr probleme); aa timpul de propagare al semnalului: maxim 1000 ns. Standardul cere, n plus, ca viteza de propagare s e cel putin 0,585 c (adic cel putin de a a 0,585 de ori viteza luminii vid). n Conectarea cablului la interfata de retea sau la repetoare se real izeaz prin intermediul unui conector cu 8 pini, asemntor cu cel de telefon, a a a standardizat sub numele RJ45. Utilizarea pinilor este urmtoarea: emisia a ntre pinii 1 i 2 i receptia s s ntre pinii 3 i 6. Pinii 4, 5, 7 i 8 sunt neutilizati. s s Conductoarele legate la emittor la un capt trebuie legate la receptor a a la cellalt capt (g. 9.3). Acest lucru se poate realiza dou moduri: a a n a 1. Legarea cablului la conectoare se face ,, X: pinul 1 de pe un conector n se leag la pinul 3 de pe cellalt conector, 2 cu 6, 3 cu 1 i respectiv 6 a a s cu 2, conform g. 9.3(a)). Un astfel de cablu se numete cablu inversor s sau cablu X. 2. Cablul este ,,unu-la-unu(adic pinul 1 de pe un conector este legat cu a pinul 1 de pe cellalt conector, 2 cu 2, 3 cu 3 i 6 cu 6), iar inversarea a s se face dispozitivul de la un capt al cablului, prin legarea inversat n a a a conectorului la circuite: pinii 1 i 2 la receptor i 3 i 6 la emittor, ca s s s a g. 9.3(b). n Standardul recomand inversarea legturilor conectoarele repetoarelor a a n i cere marcarea conectoarelor cu inversare printr-un simbol ,,X. s Conectarea a dou echipamente prevzute cu inversare conector se face cu a a n ajutorul unui cablu inversor, ca gura 9.3(c). n Exist i dispozitive care detecteaz automat pinii folositi la emisie as a i receptie. Aceste dispozitive sunt desemnate auto MDI/MDIX. Dac la unul s a

c 2008, Radu-Lucian Lupa s


268 Retele IEEE 802.3 (Ethernet)

emittor a

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

emittor a

receptor

(a) Inversare realizat cablul de legtur a n a a


emittor a
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

emittor a

receptor

conector normal

conector cu inversare

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


receptor
1 2 3 4 5 6 7 8

alb-portocaliu portocaliu alb-verde verde

alb-verde verde alb-portocaliu portocaliu

emittor a

1 2 3 4 5 6 7 8

receptor

emittor a

conector cu inversare

conector cu inversare

(c) Conectarea a dou echipamente prevzute cu inversare conector a a n

Figura 9.3: Conectarea a dou echipamente 10 Base T. Sunt date i culorile standard a s pentru izolatiile conductoarelor din cablu.

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 269

dintre capete se gsete un astfel de dispozitiv, se poate utiliza att cablu a s a unu-la-unu ct i cablu inversor, fr nici un fel de restrictii. Mecanismul de a s aa detectare a pinilor utilizati se bazeaz pe pulsurile pentru vericarea mediului, a descrise mai jos. Transmiterea bitilor se face codicare Manchester. Cele dou n a nivele de tensiune, la emittor, sunt unul a ntre 2,2 V i 2,8 V i cellalt s s a ntre 2,2 V i 2,8 V. s Pe lng transmiterea informatiei utile, standardul prevede emiterea a a periodic, de ctre ecare echipament, a unui puls de testare a cablului. O a a interfat de retea sau un repetor care nu primete periodic pulsuri de test a s de la cellalt capt va ,,deduce c legtura nu este valid. Starea legturii a a a a a a este semnalat printr-un led; de asemenea, plcile de retea semnaleaz starea a a a legturii printr-un bit de control ce poate citit de driver-ul plcii de retea. a a O adugire ulterioar la standard prevede ca secventa de pulsuri a a n de testare a cablului s se codice disponibilitatea echipamentului ce le emite a de a functiona regim duplex sau la o vitez mai mare de 10 Mbit/s (adic n a a conform unuia din standardele descrise mai jos). Un echipament capabil de comunicatie duplex i care este informat c echipamentul de la cellalt capt s a a a este capabil de asemenea de comunicatie duplex va intra automat mod n duplex. Un echipament vechi, datnd dinaintea acestei adugiri la standard, a a va functiona numai regim semiduplex. Pstrarea compatibilitii este asig n a at urat de faptul c echipamentul vechi va elege pulsurile doar ca testarea a a nt liniei, iar pulsurile generate de el este putin probabil s coincid ampltor a a nt a cu pulsurile de negociere a modului de transmisie. 100 Base Tx. Este foarte asemntor cu 10 Base T, dar obtine o vitez de a a a transmisie de 100 Mbit/s. Cablul const tot din dou perechi de conductoare torsadate, a cu a a ns proprieti mai bune de transmitere a semnalului (obtine aceleai caracteristici at s de atenuare pn la frecvente de 10 ori mai mari). Cablurile utilizate sunt cele a a desemnate UTP Cat 5 . Lungimea maxim a unui tronson este de 100 m. a Conectoarele i utilizarea pinilor sunt identice cu 10 Base T. Din acest s motiv un cablu pentru 100 Base Tx poate ntotdeauna utilizat la o legtur a a 10 Base T. general, echipamentele capabile s opereze conform standardului In a 100 Base Tx sunt capabile s lucreze i cu 10 Base T. Stabilirea vitezei se a s face printr-un mecanism similar cu cel utilizat la 10 Base T pentru negocierea modului semiduplex sau duplex. Trebuie a spus c mecanismul de negociere ns a

c 2008, Radu-Lucian Lupa s


270 Retele IEEE 802.3 (Ethernet)

nu testeaz i calitatea cablului; din acest motiv, dac legm o plac de retea de as a a a 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 loc de Cat 5 ), este necesar s congurm n a a manual viteza de 10 Mbit/s. 100 Base T4. Transmite 100 Mbit/s semi-duplex, utiliznd cabluri Cat 3. a Sunt necesare 4 perechi de conductoare (8 conductoare total). n Cte o pereche de conductoare este rezervat pentru ecare sens. a a Celelalte dou perechi se utilizeaz sensul care are loc efectiv transmiterea a a n n informatiei (adic, a ntotdeauna trei perechi sunt utilizate pentru transmiterea informatiei i a patra este temporar nefolosit). s a Codicarea informatiei este mai special, utiliznd 3 nivele de sem a a nalizare loc de obinuitele 2 i transmitnd simultan pe trei canale, pentru n s s a a obtine un semnal ce se ncadreaz banda de trecere a unui cablu Cat 3. a n
emittor a receptor bidirectional 1 bidirectional 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

emitator receptor bidirectional 1 bidirectional 2

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

Conectoarele sunt tot RJ45, cu urmtoarea utilizare a pinilor: emisie: a pinii 1 i 2; receptie: 3 i 6, bidirectional 1: pinii 4 i 5; bidirectional 2: pinii 7 s s s i 8. Ca i la celelalte cabluri, descrise mai sus, este necesar o s s a ncruciare, res alizat e cablu, e conectorul unuia dintre echipamente. Standardul cere a n n inversarea att a emisiei cu receptia ct i a celor dou legturi bidirectionale a a s a a (g. 9.4). Intruct majoritatea instalatiilor sunt disponibile cabluri Cat 5, a n utilizarea standardului 100 Base T4 este extrem de rar. a 100 Base T2. Transmite 100 Mbit/s duplex, utiliznd dou perechi Cat 3. a a Ca i la 100 Base T4, se utilizeaz o codicare complicat, a obtine perfors a a ns mantele lui 100 Base Tx pe cabluri identice cu cele folosite de 10 Base T. Utilizarea lui este rar, datorit rspndirii cablului Cat 5. a a a a 1000 Base T. Transmite 1 Gbit/s duplex, utiliznd 4 perechi Cat 5. a Legtura const patru perechi torsadate (8 conductoare) conforme a a n Cat 5, de lungime maxim 100 m.

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 271

Se utilizeaz o schem de codicare mai complicat, ce utilizeaz a a a a ecare pereche de conductoare regim duplex. n Conectoarele folosite sunt tot RJ45. Din ratiuni de compatibilitate, legturile trebuie s realizeze aceeai inversare a unor perechi de re ca i la a a s s 100 Base T4 (g. 9.4). Majoritatea plcilor de retea i celorlalte echipamente pentru retele a s IEEE 802.3, produse recent i desemnate Ethernet gigabit, implementeaz s a standardele 10 Base T, 100 Base Tx i 1000 Base T. s 1000 Base Cx. Transmite 1 Gbit/s duplex utiliznd 2 perechi de conductoare a de constructie specal. a Se utilizeaz cte o pereche pentru ecare sens. a a Standardul permite dou tipuri de conectoare: conectoare trapea zoidale cu 9 pini (identice cu cele utilizate pentru porturile seriale) sau nite s conectoare cu 8 pini asemntoare, dar incompatibile, cu RJ45. a a Datorit incompatibilitii cu 10 Base T i 100 Base Tx, putine a at s echipamente utilizeaz 1000 Base Cx. a Realizarea practic a cablajelor a Cablurile UTP Cat 5 folosite au de obicei 4 perechi de re torsadate (8 re total), invelite toate n ntr-o teac protectoare. Doar 2 perechi (4 re) a sunt utilizate efectiv de legturile 10 Base T i 100 Base Tx. a s cadrul ecrei perechi, unul din re are izolatia In a ntr-o culoare plin a iar cellalt este combinat, alb alternnd cu culoarea rului pereche. Culorile a a folosite pentru perechi sunt portocaliu, verde, albastru i maro. Mentionm c s a a se comercializeaz, din pcate, i cabluri care rele ce ar trebui s e colorate a a s n a cu alb plus o culoare sunt doar albe i, ca urmare, pentru a le identica este s necesar s se desfac teaca protectoare pe o lungime sucient de mare pentru a a a vedea cum sunt torsadate rele (care cu care este mperecheat prin rsucire). a Schema de conectare standardizat este dat tabela 9.1. Varianta a a n ,,normal este utilizat la cablurile unu-la unu, precum i la unul din capetele a s cablurilor inversoare. Varianta ,,inversat este utilizat la cellalt capt al a a a cablurilor inversoare. Varianta ,,semi-inversat a fost utilizat frecvent pena tru al doilea capt al cablurilor inversoare, dar nu functioneaz dect pentru a a a retele 10 Base T i 100 Base Tx, care nu utilizeaz deloc perechile albastru s a i maro. Pentru 1000 Base T, varianta ,,semi-inversat nu este prevzut de s a a standard; ca urmare unele echipamente functioneaz cu astfel de cabluri, iar a alte echipamente nu functioneaz. a

c 2008, Radu-Lucian Lupa s


272 9.1. Retele 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: Ataarea conectoarelor RJ45 s

Atragem atentia c este foarte important s se respecte schema de a a conectare din urmtoarele motive: a Rsucirea relor afecteaz transmiterea semnalului i sensibilitatea la a a s paraziti. Nerespectarea perechilor, adic utilizarea pentru un circuit a a dou re care nu sunt a mperecheate prin rsucire, duce la pierderi a aleatoare de pachete, cu att mai multe cu ct cablul este mai lung. a a Este necesar un efort inutil de mare pentru ataarea corect a conectorului s a la al doilea capt, dac ataarea primului s-a fcut nestandard. Amatorii a a s a s se gndeasc la cazul cnd captul cablat nestandard se gsete a a a a a a s ntrun dulap nghesuit, iar captul unde trebuie ataat cellalt conector este a s a cteva etaje mai sus sau mai jos. . . a Toate sistemele IEEE 802.3 ce utilizeaz perechi torsadate sunt proieca tate pentru legturi interiorul unei singure cldiri. La cablurile trase prin a n a exterior, descrcrile electrice din atmosfer risc s induc cablul de retea a a a a a a n tensiuni sucient de mari pentru a distruge plcile de retea sau hub-urile sau a switch-urile ataate. Pentru legturi exterioare se recomand utilizarea brelor s a a optice.

9.1.2. Legturi prin bre optice a


IEEE 802.3 standardizeaz mai multe tipuri de legturi prin bre a a optice. Toate acestea sunt foarte similare din punctul de vedere al logicii functionrii; diferentele sunt aproape totalitate aspecte minore legate de a n realizarea nivelului zic. Toate legturile pe br optic sunt punct-la-punct (nu magistral). a a a a Exist totui un echipament, numit stea pasiv, la care se pot conecta mai a s a

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 273

multe plci de retea i care distribuie semnalul transmis de o plac spre toate a s a celelalte. Astfel, o stea pasiv se comport a a ntructva similar cu un cablu a magistral. a O legtur punct la punct const din dou bre optice, cte una a a a a a pentru ecare sens; astfel, ecare legtur este capabile de transmisie duplex. a a 10 Base F: standardizeaz transmisia prin br optic la un debit de transa a a misie de 10 Mbit/s. Rata erorilor, obtinut cu o astfel de legtur, este jur a a a n 9 (1 bit eronat la 109 biti transmii). de 10 s Grupeaz trei variante, cu diferente foarte mici a ntre ele ( general, n echipamentele corespunztoare pot interconectate fr probleme): a aa 10 Base FP, destinat utilizrii conguratii cu stea pasiv, ca atare a n a functionnd mod semi-duplex. a n 10 Base FB, destinat utilizrii conjunctie cu multe repetoare cascad a n n a i functionnd mod semi-duplex. s a n 10 Base FL, functionnd mod duplex. a n Se utilizeaz o br optic cu diametrul miezului de 62,5 m (i dia a a s ametrul exterior, al nveliului, de 125 m), avnd o vitez de propagare de s a a minim 0,67c, o atenuare de 3,75 dB/km (dac atenuarea brei utilizate este a mai mare, lungimea maxim a unei legturi trebuie micorat corespunztor) a a s a a i o band de 160 MHzkm. Lungimea unui tronson de cablu este maxim 2 km s a (pentru 10 Base FP, lungimea ecrei conexiuni dintre placa de retea i steaua a s pasiv este de cel mult 1 km). a Conectarea cablului la echipamente se face cu ajutorul a dou coneca toare (cte unul pentru ecare br; reamintim c se utilizeaz o br pentru a a a a a ecare sens). Conectoarele sunt descrise de standardul IEC 60874-10:1992 sub numele BFOC/2.5. Atenuarea introdus de conector nu trebuie s depeasc a a as a 1 dB, iar puterea undei reectate nu trebuie s depeasc 25 dB din puterea a as a undei incidente. Pentru semnalizare se folosesc unde infraroii cu lungimea de und s a cuprins a ntre 800 nm i 910 nm. Nivelul semnalului emittorului este s a ntre 15 dBm i 11 dBm pentru 10 Base FP i s s ntre 12 dBm i 11 dBm pentru s 10 Base FB i 10 Base FL. Nivelul acceptabil pentru semnalul receptionat este s ntre 41 dBm i 27 dBm pentru 10 Base FP i s s ntre 32,5 dBm i 12 dBm s pentru 10 Base FB i 10 Base FL. s Semnalizarea utilizeaz codicarea Manchester, a ntocmai ca cazul n lui 10 Base T.

c 2008, Radu-Lucian Lupa s


274 Retele IEEE 802.3 (Ethernet)

Spre deosebire de 10 Base T, nu se utilizeaz pulsuri de testare a a legturii care s permit negocierea modului semiduplex sau duplex sau a a a a vitezei de transmisie; ca urmare, aceti parametri trebuie congurati manual. s 100 Base FX: ofer o vitez de transfer de 100 Mbit/s. Pe lng viteza mai a a a a mare, 100 Base FX aduce cteva modicri fat de 10 Base F, i anume utia a a s lizarea unor conectoare duble (conectnd ambele bre simultan) i un mecana s ism de negociere a vitezei de transfer. 1000 Base SX i 1000 Base LX. Aceste standarde ofer vitez de transfer s a a de 1 Gbit/s. Varianta 1000 Base SX transmite pe lungimea de und de 850 nm, a prin bre cu diametrul miezului de 62,5 m sau de 50 m. Lungimea maxim a de cablu ntre dou echipamente este cuprins a a ntre 220 m pentru br cu a dispersie intermodal de 160 MHzkm i 550 m pentru br cu dispersie intera s a modal de 500 MHzkm. a Varianta 1000 Base LX transmite pe lungimea de und de 1310 nm, a prin bre multimod de 62,5 m sau de 50 m sau monomod de 10 m. Lungimea maxim de cablu a ntre dou echipamente este de 550 m pentru bra multimod a i 5 km pentru bra monomod. s

9.1.3. Legturi prin cablu magistral a a


Exist dou variante de legturi prin cablu magistral standarda a a a izate prin IEEE 802.3; ambele variante realizeaz o vitez de transmisie de a a 10 Mbit/s. Cele dou variante sunt foarte asemntoare, motiv pentru care le a a a vom studia mpreun. a Mediul de comunicatie este un cablu format dintr-o pereche de con ductoare coaxiale. Impedanta caractersitic a cablului este de 50 (este deci a incompatibil cu cablul utilizat pentru televiziune, care are impedanta de 75 ). Cablul nu are voie s aib ramicatii i trebuie a a s ncheiat la ambele capete prin terminatoare. Ramicatiile sau lipsa terminatoarelor duc la reexia semnalu lui la ramicatie sau la captul fr terminator, rezultnd bruierea semnalului a aa a de ctre reexia lui. a Pe cablu se leag, paralel, interfetele de retea i eventual repetoarele. a n s Derivatia pentru legtura la interfata de retea este construit special pentru a a a reduce la minim reexiile produse (impedanta emittorului i receptorului a s este mult mai mare dect impedanta cablului, anume de cel putin 100 k); din a acest motiv circuitele emittorului i receptorului trebuie plasate la cel mult a s civa centimetri de cablu. at

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 275

Semnalul este produs codicare Manchester, cu durata unui bit de n 100 ns; de aici viteza brut de transmisie de 10 Mbit/s. a Ca modicare fat de codicarea Manchester clasic, peste semnal a a este suprapus o component continu, scopul simplicrii detectrii cola a a n a a iziunilor. Pe cablul repaus, tensiunea n ntre conductoare este 0 V. Dac o a interfat emite date, apare o tensiune continu a a ntre conductorul central i s tres. Dac dou sau mai multe interfete emit simultan, tensiunea continu a a a a crete peste un anumit prag la care se declar coliziune. La detectarea unei s a coliziuni, interfetele de retea conectate la cablu opresc transmisia, conform metodei CSMA/CD ( 4.2.2). Exist dou sub-standarde privitoare la caracteristicile mecanice i a a s electrice ale cablului de conectare: 10 Base 5 i 10 Base 2. s 10 Base 5, numit i cablu galben sau cablu gros, prevede utilizarea unui cablu s coaxial avnd aproximativ 10 mm grosime total, preferabil colorat galben a a n pentru o mai bun vizibilitate. Lungimea total maxim a unui cablu este de a a a 500 m. Standardul este gndit pentru cablare prin exteriorul cldirilor. a a Denumirea sub-standardului vine de la viteza (10Mbit/s), codicarea ( banda de baz Base) i lungimea maxim a cablului, sute de metri. n a s a n Cu titlu informativ, dm cteva detalii, specicate prin standard, cu a a privire la caracteristicile cablului: impedanta caracteristic: 50 2 ; a 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 i maxim 12 dB/km (6 dB pe tot cablul) la 5 MHz; s se accept maxim 100 interfete de retea pe un tronson de cablu. a Cablul trebuie conectat la pmnt (la instalatia de pmntare a a a a a cldirii) a ntr-un singur punct. Se specic explicit prin standard c att cablul a a a ct i elementele legate de el trebuie s e izolate fat de pmnt sau fat de a s a a a a a alte conductoare (cu exceptia sus-mentionatei unice legturi de pmntare). a a a De asemenea, interfetele de retea trebuie s realizeze o izolare electric a a ntre cablul de retea i circuitele calculatorului care s reziste la o tensiune de 1500 V. s a La efectuarea lucrrilor asupra retelei, persoanele care lucreaz trebuie s aib a a a a grij s nu ating simultan cablul de retea i un conductor legat la pmnt, iar a a a s a a cazul care conecteaz sau deconecteaz dou tronsoane de retea s aib n n a a a a a grij s nu a a nchid contactul electric a ntre cele dou tronsoane prin corpul lor. a Toate aceste msuri sunt luate deoarece este posibil s apar tensiuni electrice a a a ntre legturile de pmntarea ale instalatiilor electrice cldiri diferite. De a a a n a

c 2008, Radu-Lucian Lupa s


276 Retele IEEE 802.3 (Ethernet)

asemenea, este posibil ca ntr-un cablu, special dac este dus prin exterior, n a s se induc, inductiv sau capacitiv, tensiuni parazite importante din cauza a a retelelor de alimentare electric din apropiere sau din cauza fulgerelor. a Circuitele electronice ale interfetelor de retea sunt artite dou mp n a module: un modul, continnd emittorul i receptorul propriu-zise, se ataeaz a a s s a direct pe cablu; al doilea modul cuprinde logic de comand i este construit a as sub forma unei plci ce se introduce calculator. a n Ataarea modulului de semnal la cablul de retea se poate realiza s n dou moduri: a prin conectarea celor dou segmente de cablu de-o parte i de alta prin a s conectoare standardizate (conectoare coaxiale, numite conectoare N, cu prindere cu let); prin realizara unei prize vampir : se d o gaur cablu fr a-i intrerupe a a n aa conductoarele, prin gaur se introduce o clem ce va face contact cu rul a a central, iar legtura cu tresa se face printr-o alt clem ce se strnge pe a a a a o zon de pe care s-a a ndeprtat mantaua exterioar a cablului. a a Legtura dintre modulul emittor-receptor (engl. transceiver ) i moda a s ulul de logic al plcii de retea sau al repetorului este de asemenea standarda a izat, sub numele de interfat AUI . Cablul de legtur dintre cele dou module a a a a a const din 5 perechi de conductoare torsadate i ecranate individual, utilizeaz a s a conectoare trapezoidale cu 15 pini i poate avea lungime maxim de aproxis a mativ 50m. 10 Base 2 se mai numete cablu subtire, cablu negru sau cablu BNC (oarecum s incorect, BNC ind numele conectoarelor prevzute a utilizate pentru acest a tip de legtur). Este foarte asemntor cu 10 Base 5, a folosete un cablu a a a a ns s mai potrivit pentru cablaje interior. Lungimea maxim a unui tronson este n a de 185 m. Cablul este tot coaxial, dar este mai subtire ( 5 mm) pentru a putea ndoit mai uor (standardul cere s poat s a a ndoit la raza de 5 cm), schimb n este admis s aib atenuare mai mare i, ca urmare, tronsoanele sunt limitate a a s la lungime mai mic. a Dm din nou cteva caracteristici ale cablului: a a viteza de propagare: 0,65 c; atenuarea, pentru 185 m: maxim 8,5 dB la 10 MHz i maxim 6 dB la s 5 MHz; maxim 30 interfete ataate pe un tronson. s

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 277

Conectarea interfetelor de retea i a terminatoarelor se face prin s conectori standardizati sub numele BNC (conectorii BNC sunt standardizati pentru aparatur electronic general, nu se folosesc doar la retele Ethernet), a a n astfel (g. 9.5): Fiecare bucat de cablu trebuie s aib montate pe capete a a a conectoare BNC mam. Exist elemente numite jonctiuni T care contin o a a ramicatie i sunt prevzute cu un conector BNC mam (pe mijlocul T-ului) i s a a s dou conectoare BNC tat. La conectoarele tat se ataeaz bucile de cablu a a a s a at de-o parte i de alta, iar la conectorul mam al T-ului se ataeaz conectorul s a s a tat de pe placa de retea. Terminatoarele sunt prevzute cu conector BNC a a mam i se ataeaz pe T-urile de la plcile de retea extreme. as s a a
conectori BNC

terminator jonctiuni T cablu coaxial

Figura 9.5: Conectarea unei retele 10 Base 2

Pana cea mai frecvent ce apare la o retea, afectnd conexiunile dia a recte, este ntreruperea unui r (de obicei o pan de contact a ntre srm i a a s conector sau ntre contactele unui conector). O ntrerupere a cablului magistral duce de regul la oprirea functionrii a a a ntregii retele, nu doar ,,ruperea dou a retelei. Aceasta se ampl deoarece captul de cablu unde s-a n a nt a a produs ntreruperea reect semnalul (este ca un cablu fr terminator) i, ca a aa s urmare, orice pachet emis pe acel cablu se ciocnete cu reexia lui. Solutia cea s mai ecient de gsire a penei este o cutare binar prin izolarea neaprat a a a a a cu terminatoare a unor portiuni din ce ce mai lungi din cablul retelei. n

9.1.4. Repetoarele i comutatoarele s


Ca functie cadrul unei retele, att repetorul ct i comutatorul n a a s este un dispozitiv la care sunt conectate mai multe cabluri de retea i care, s la primirea unui pachet pe un cablu, retransmite pachetul pe toate celelalte cabluri conectate. Interfata repetorului sau comutatorului ctre ecare dintre a cabluri se numete port. s Exceptie fcnd cazul comutatoarelor mai evoluate (vezi 9.1.6.4), a a o retea construit cu repetoare sau comutatoare trebuie s aib o topologie a a a

c 2008, Radu-Lucian Lupa s


278 9.1. Retele IEEE 802.3 (Ethernet)

arborescent, adic a a ntre orice dou interfete de retea trebuie s existe un a a drum i numai unul format din cabluri directe i repetoare sau comutatoare. s s Intr-o retea construit corect, arborescent, un pachet emis de o plac a a de retea se propag prin cabluri i repetoare sau comutatoare din ce ce mai a s n departe de interfata de origine, sfrind prin a ajunge la toate plcile din retea. as a cazul care reteaua, loc s e arborescent, contine circuite, se In n n a a va ampla ca dou copii ale aceluiai pachet s ajung pe dou ci distincte nt a s a a a a la un anumit repetor sau comutator. Dac este un repetor, cele dou copii, a a ajungnd aproximativ simultan, vor produce o coliziune. Cum acest lucru se a ampl cu orice pachet trimis retea, ecare pachet va suferi o coliziune cu nt a n el si i va repetat la innit cu acelai insucces, rezultnd astfel trac util nsu s s a cazul comutatoarelor, dac dou copii ale unui pachet ajung pe dou nul. In a a a ci diferite la un comutator, acesta le va considera ca ind pachete distincte. a consecint, le va memora i retransmite, ecare copie ind retransmis In a s a inclusiv pe calea prin care a intrat cealalt copie. acest fel, copiile cicleaz a In a la innit prin retea, rezultnd o ,,furtun de pachete, adic o multiplicare a a a incontrolabil a pachetelor. a cazul utilizrii repetoarelor, pe lng topologia arbore mai treIn a a a n buie respectate nite conditii, i anume: s s toate componentele legate la repetoare trebuie s lucreze la aceeai vitez a s a (e 10 Mbit/s, e 100 Mbit/s, e 1 Gbit/s). Aceasta deoarece un repetor nu memoreaz pachetul de retransmis i, ca urmare, nu-l poate retransa s mite la alt cadent a bitilor dect cea cu care receptioneaz. a a a l a s nu existe mai mult de 4 repetoare de-a lungul nici unui drum a ntre dou a interfete de retea. Aceast restrictie este impus pentru ca diferentele a a de vitez de transmisie a repetoarelor i variatia arzierii introduse a s nt de repetoare s nu duc la micorarea sub o anumit limit a timpului a a s a a dintre dou pachete consecutive. a arzierea cea mai mare a transmisiei nt ntre dou interfete de retea ( a ntrzierea pe cablu plus arzierea introdus de repetoare) s nu e mai a nt a a mare dect jumtate din durata necesar emiterii unui pachet. Pentru a a a o retea de 10 Mbit/s, aceasta nseamn o lungime maxim total de a a a 2500 m ntre oricare dou interfete de retea. a cazul switch-urilor, nu apare nici una din limitrile expuse mai sus, In a cu exceptia faptului c pe eventualele legturi semi-duplex arzierea trebuie a a nt s e de cel mult jumtate din durata minim a pachatului. a a a La retele ce utilizeaz att switch-uri ct i repetoare, restrictiile a a a s de la repetoare se aplic, separat, pe ecare subretea format din repetoare a a

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 279

interconectate i legturile acestora spre interfetele de retea i switch-uri. s a s

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


Comutatoarele (switch-urile) sunt capabile s realizeze o dirijare prima itiv a pachetelor primite. Anume, un comutator ine o tabel cu asocierea a t a ntre adresa zic (adresa MAC) a unei interfete de retea i portul (conectorul) a s la care este conectat, direct sau indirect, acea interfat. a a Dac un comutator primete un pachet cu o anumit adres MAC a s a a surs, comutatorul va asocia acea adres cu portul prin care a intrat pachetul. a a Ulterior, dac comutatorul primete un pachet avnd ca destinatie acea adres a s a a MAC, va trimite doar prin portul asociat acelei adrese. l Asocierea ntre adresa MAC i port este mentinut doar un timp s a scurt (de ordinul secundei) pentru ca s se asigure actualizarea asocierii a n cazul mutrii interfetei de retea de la un port la altul (prin mutarea zic a a a cablului). Mai multe adrese MAC pot avea asociat acelai port; aceast situatie s a apare dac la acel port este conectat un repetor sau un alt comutator. Unei a adrese poate asociat cel mult un port. i La primirea unui pachet, comutatorul caut portul asociat adresei. a Dac exist, va trimite pachetul doar prin acel port. Dac nu exist asociere, a a a a pachetul este trimis prin toate porturile cu exceptia celui prin care a intrat. Evident, pachetele de broadcast se ncadreaz aceast din urm categorie. a n a a

9.1.6. Faciliti avansate ale switch-urilor at


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

c 2008, Radu-Lucian Lupa s


280 9.1. Retele IEEE 802.3 (Ethernet)

congurabil (adresa IP initial se congureaz prin intermediul conea a a xiunii 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 interfata de congurare prezentat mai sus. Evident, pen a tru mpiedicarea congurrii switch-ului de ctre persoane neautorizate, a a switch-ul permite congurarea unei parole, care este cerut la conectare. a Prin interfat web: Ca i la conectarea prin telnet, switch-ul prezint o a s a adres IP. Administratorul se poate conecta cu orice navigator web la a aceast adres i va primi pagini ce contin parametrii actuali i formulare a as s pentru modicarea parametrilor. Ca i cazul congurrii prin telnet, s n a accesul poate i este recomandabil s e restrictionat prin parol. s a a Pentru cazul uitrii parolei, exist o procedur de revenire la conga a a urarea implicit. Aceasta const de obicei apsarea unui buton de reset a a n a timp de 1015 secunde sau punerea sub tensiune a switch-ului timp ce se n ine apsat butonul de reset. t a 9.1.6.2. Filtrare pe baz de adrese MAC a Unele switch-uri pot congurate s nu accepte, pe un anumit port, a dect pachete ce provin de la o anumit adres MAC sau de la o adres dintra a a a o anumit list. De asemenea, un pachet destinat unei adrese MAC dintr-o a a astfel de list nu va trimis dect prin portul pe a crui list se gsete adresa. a a a a a s Aceast facilitate este introdus pentru a a a mpiedica eventuali intrui s s intre retea racordndu-se pur i simplu la prizele de retea accesibile. a n a s Dei s mbuntete securitatea unei retele, solutia are cteva limitri: a at s a a lista adreselor asociabile unui port este limitat (de multe ori la 8 sau 16 a adrese); multe plci de retea permit schimbarea (prin soft) a adresei MAC. a 9.1.6.3. Trunking Prin trunking se elege utilizarea mai multor cabluri paralel ca nt n legtur a a ntre dou switch-uri. acest fel, tracul ce se poate stabili a In ntre acele dou switch-uri este suma capacitilor legturilor congurate trunka at a n ing. Porturile utilizate regim trunking trebuie congurate pe ambele n switch-uri. Este de asemenea posibil ca legarea trunking s utilizeze o n a extensie a protocolului IEEE 802.3 care este proprietatea rmei productoare a a switch-ului; acest caz este posibil ca dou swithc-uri realizate de rme n a diferite s nu se poat lega trunking. a a n

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 281

9.1.6.4. Legturi redundante a IEEE 802.1D [IEEE 802.1D, 2004] prevede un protocol pentru descoperirea i dezactivarea ciclurilor ( sensul teoriei grafelor) formate de legturile s n a dintre switch-uri. Majoritatea switch-urilor nu implementeaz a acest algoritm i, a ns s ca urmare, majoritatea cazurilor existenta ciclurilor duce la ,,furtuni de n pachete (multiplicarea incontrolabil a pachetelor retea). a n Dac toate swicth-urile de pe traseul unui ciclu implementeaz protoa a colul de descoperire a ciclurilor, ele colaboreaz automat pentru dezactivarea a uneia dintre legturi i utilizarea doar a unui arbore partial al grafului initial a s al legturilor. La cderea unei legturi, switch-urile vor colabora pentru reaca a a tivarea unei legturi dezactivate, vederea pstrrii conexitii retelei. a n a a at Mentionm c, cazul existentei unui ciclu, nu este posibil ar a a n a mp irea tracului t ntre drumurile alternative. Unul din drumuri va obligatoriu dezactivat complet, ct timp cellalt este functional. a a 9.1.6.5. Retele virtuale (VLAN) Mecanismul de retele virtuale (Virtual Local Area Network ) const a artirea unei retele zice mai multe retele virtuale disjuncte. Fiecare n mp n retea virtual se comport exact ca o retea IEEE 802.3 independent. Con a a a structiv, retelele virtuale partajeaz aceleai echipamente (comutatoare, ca a s bluri sau chiar plci de retea). a A nu se confunda VLAN cu VPN (Virtual Private Network retea privat virtual descris 10.7.4). a a a n Partitionarea VLAN-uri poate dezirabil din mai multe motive, n a cum ar : limitarea tracului de broadcast sau separarea tracului din motive de securitate. Exist dou posibiliti de constructie a VLAN-urilor. a a at O prim posibilitate const partitionarea porturilor unui switch. a a n acest fel, un switch se comport ca mai multe switch-uri (virtuale) indeIn a pendente, ecare avnd doar o parte a porturilor switch-ului zic. Un port al a unui switch poate s apartin doar unui singur VLAN. a a O a doua posibilitate este cea denit [IEEE 802.1Q, 2003]. Fiecare a n VLAN const dintr-o parte din echipamentele (interfete de retea, cabluri i a s switch-uri) retelei zice; VLAN-uri distincte pot partaja voie echipamente n zice. Astfel, ecare interfat de retea apartine unuia sau mai multor VLANa uri, ecare cablu apartine unuia sau mai multor VLAN-uri i ecare port al s ecrui switch apartine unuia sau mai multor VLAN-uri. Fiecare switch, la a primirea unui pachet de broadcast sau pentru a crui destinatie nu are asociere, a

c 2008, Radu-Lucian Lupa s


282 9.1. Retele IEEE 802.3 (Ethernet)

va trimite pachetul prin toate porturile apartinnd VLAN-ului pachetului, cu a exceptia portului prin care a intrat pachetul. Pentru ca mecanismul descris mai sus s poat functiona, este necesar a a ca, pe cablurile ce apartin mai multor VLAN-uri, pentru ecare pachet s a se poat deduce crui VLAN apartine. Pentru aceasta, ecare pachet este a a etichetat cu un identicator de VLAN (VLAN-ID); acest VLAN-ID este un numr reprezentabil pe 12 biti. a Pentru pstrarea compatibilitii cu echipamentele ce nu suport a at a VLAN-uri 802.1Q, un segment de retea care apartine doar unui singur VLAN poate congurat s utilizeze pachete neetichetate; switch-ul ce realizeaz a a legtura dintre un astfel de segment i restul retelei zice realizeaz adugarea a s a a i eliminarea etichetei de VLAN pe pachetele ce tranziteaz spre, respectiv dins a spre, restul retelei. Echipamentele incompatibile 802.1Q pot montate doar pe cabluri prin care trac pachete neetichetate. O plac de retea compatibil 802.1Q poate congurat s fac parte a a a a a din mai multe VLAN-uri. Pentru aceasta, ea se monteaz pe un cablu prin a care trec pachete etichetate. Placa de retea se comport ca i cnd ar de a s a fapt mai multe plci de retea, virtuale, cte una ecare VLAN. Fiecare a a n plac virtual are asociat un VLAN-ID, primete doar pachetele ce poart a a s a acel VLAN-ID i marcheaz cu VLAN-ID-ul su toate pachetele emise. s a a Pe ecare switch trebuie congurate porturile care apartin ecrui a VLAN. De asemenea, pentru ecare port trebuie stabilit dac utilizeaz paa a chete etichetate (cu VLAN ID-ul) sau pachete neetichetate. Un port ce utilizeaz pachete neetichetate poate apartine unui singur VLAN. a

9.1.7. Considerente privind proiectarea unei retele


Proiectarea i constructia unei retele Ethernet este general extrem s n de uoar; acesta este i unul din motivele popularitii Ethernet-ului. s a s at De obicei este necesar s se construiasc o retea care toate calcua a n latoarele s se ,,vad a a ntre ele (la nivel de retea Ethernet; controlul accesului la diversele resurse oferite de sisteme se face prin soft, la nivel superior). Tot ce este necesar acest caz este s se amplaseze un numr de switch-uri i n a a s cabluri astfel at ecare calculator s e legat la un switch i switch-urile s nc a s a e legate ntre ele ntr-o reta conex i fr ,,bucle. as aa Se utilizeaz de obicei o structurare ierarhic a legturilor (aa-numita a a a s cablare structurat ): de la calculatoarele dintr-o apere sau eventual 23 a nc aperi vecine se adun cablurile nc a ntr-un switch, iar de la aceste switch-uri se adun cabluri ctre un switch central. Pentru retelele mai mari, a a ntre switch-ul central i switch-urile asociate aperilor se mai adaug un nivel. s nc a

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 283

instalatiile mici i fr pretentii, cablurile se duc aparent i se xIn s aa s eaz de pereti sau pe mobil numai acolo unde este strict necesar. Uurinta rea a s alizrii i recongurrii este pltit prin faptul c apar diculti la curenie, a s a a a a at at cablurile se degradeaz uor dac se calc pe ele i, sfrit, se mai ampl a s a a s n a s nt a ca cineva s se a mpiedice de un cablu, rezultnd echipamente trase pe jos sau a cabluri smulse din conectoare. Pentru evitatarea neajunsurilor expuse mai sus, se prefer s se trag a a a cablurile prin paturi de cablu, tuburi ngropate (ca la instalatiile electrice) sau prin tavane false. Deoarece astfel de cablaje se modic mai dicil, este bine a s se aib vedere posibilele modicri ce ar putea de dorit viitor. Asta a a n a n nseamn: a S se prevad mai multe cabluri de la posibile amplasamente de calcua a latoare la amplasamentul switch-ului asociat aperii. Cablurile neunc tilizate nu e necesar s aib toate loc switch; se vor conecta sau a a n deconecta dup necesiti. a at S se prevad 23 cabluri de la switch-urile corespunztoare unei aperi a a a nc la switch-ul central. Astfel, dac va nevoie s se construiasc dou a a a a retele distincte, o parte din calculatoarele din apere conectndu-se la nc a o retea i altele la alt retea, se vor pune dou switch-uri apere, s a a n nc ecare conectat prin cte un cablu la switch-ul central. a

9.2. Retele IEEE 802.11 (Wireless)


9.2.1. Arhitectura retelei
Elementul de baz a ntr-o retea wireless [IEEE 802.11, 1999] este celula wireless (termenul original conform standardului este Basic Service Set BSS). O celul wireless este format din mai multe statii (STA) situate a a ntr-o zon geograc destul de restrns (de ordinul ctorva zeci de metri) pentru a a a a a ca semnalul emis de ecare statie s e receptionat de toate statiile din celul. a a Fiecare celul are asociat un identicator de 48 de biti, unic, numit a Basic Service Set ID BSSID. Acest identicator este nscris ecare pachet n de date vehiculat retea, astfel at pentru orice pachet de date receptionat n nc prin anten se poate determina celula wireless creia apartine. Mai multe a a i celule wireless pot coexista aceeai zon, tracul din cadrul ecrei celule n s a a putnd distins pe baza BSSID-ului de tracul celorlalte celule. a Fiecare statie apartine (este asociat) la un anumit moment cel mult a unei celule. Asocierile sunt dinamice o statie poate s intre sau s ias a a a

c 2008, Radu-Lucian Lupa s


284 9.2. Retele IEEE 802.11 (Wireless)

oricnd dintr-o celul. Fiecare statie se identic printr-o adres unic de 48 a a a a a de biti, numit mod curent adresa MAC a statiei. a n Accesul la mediu este controlat principal prin metode bazate pe n urmrirea tracului pe mediu, detectarea coliziunilor i, a s ntr-o anumit ma a sur, metode de rezervare prealabil a accesului la mediu. Acestea vor a n descrise detaliu 9.2.2. n n Prezenta unei celule wireless organizate ntr-o anumit zon este mana a ifestat prin emiterea periodic de ctre una dintre statii a unui pachet special, a a a numit beacon. Pe lng BSSID-ul celulei, pachetele beacon mai contin un ir de a a s caractere numit SSID sau uneori numele retelei (engl. network name). Acest ir este xat de administratorul retelei i servete la identicarea retelei pentru s s s utilizatorii umani. O statie poate obtine lista celulelor active zona sa ascultnd pa n a chetele beacon. Lista aat utilizatorului va contine SSID-urile retelelor. s a Exist dou moduri de lucru care poate functiona o retea 802.11: a a n Retea format dintr-o singur celul independent, neconectat prin mi a a a a a terminologia standardului, o jloace IEEE 802 de alte echipamente. In astfel de celul se numete Independent BSS IBSS; mod curent a s n reteaua astfel format se numete ad-hoc. a s Retea format din una sau mai multe celule, opernd a a mpreun i posibil as conectate la o infrastructur IEEE 802 (de exemplu la o retea Ethernet a 802.3). Un astfel de mod de lucru se numete mod infrastructur sau s a managed . mod infrastructur, cadrul ecrei celule exist o statie care In a n a a are rolul legrii celulei la infrastructur (altfel spus, la restul retelei IEEE a a 802.11). O astfel de statie poart denumirea de Access Point AP. Un AP a este o statie, i ca atare are o adres MAC. s a Intr-o celul a unei retele de tip a infrastructur, o statie ce intr sau iese dintr-o celul trebuie s anunte AP-ul a a a a responsabil de celula respectiv. a AP-ul este responsabil de generarea pachetelor beacon i BSSID-ul s celulei este adresa MAC a AP-ului. AP-urile unei aceleiai retele 802.11 trebuie s e interconectate, s a formnd aa-numitul Distribution System (DS). DS-ul poate conectat la a s alte retele din familia IEEE 802 prin intermediul unor dispozitive numite por tal -uri. Celulele din aceeai retea vor avea acelai SSID. s s Standardul original nu prevede nimic legtur cu modul de conectare n a a a AP-urilor i deci de realizare a DS-ului. Ca urmare, ecare fabricant de APs uri i-a construit propriul protocol de comunicare inter-AP. Ulterior IEEE a s

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 285

emis un standard, [IEEE 802.11F, 2003], care xeaz un protocol de comunia care ntre AP-uri. De obicei un dispozitiv vndut sub numele de access point contine a un AP i un portal ctre retele Ethernet. Un astfel de dispozitiv prezint un s a a modul radio prin intermediul cruia se comport ca o statie cu rol de AP i a a s un conector Ethernet. Intr-o prim aproximatie, un astfel de dispozitiv poate a privit ca un switch conectat pe de o parte la ecare dintre statiile membre ale celulei i pe de alt parte la un dispozitiv Ethernet. s a Unele access point-uri ce se gsesc comert ofer functionaliti a n a at suplimentare fat de un AP combinat cu un portal. Aceste functii sunt a oferite prin extensii ale protocolului i ca urmare pot utilizate de regul s a doar mpreun cu echipamente produse de aceeai rm. Functionalitile a s a at sunt: functie de switch (punte) ntre o retea Ethernet (x) i o celul wireless, a s a actionnd a ca i statie oarecare (nu AP). Aceast functie se numete a ns s a s wireless bridge sau AP client (uneori exist functii cu ambele nume, cu a diferente minore ntre ele); functie de AP, dar utiliznd tot reteaua wireless pentru partea de infra a structur. acest mod, dispozitivul este acelai timp AP pentru o a In n s celul i statie oarecare alt celul, iar a dou legtur este utilizat as n a a a a a a pentru dirijarea spre reteaua x a datelor din celula care dispozitivul a n este AP.

9.2.2. Accesul la mediu


Deoarece ntr-o retea 802.11 avem un mediu partajat ntre mai multi emittori, este necesar s avem un mecanism de control al accesului la mediu. a a Metoda de control al accesului la mediu IEEE 802.11 se numete Carriern s Sense Multiple Access with Collision Avoidance (CSMA/CA; rom: acces multiplu cu detectarea semnalului purttor i evitarea coliziunilor). a s principal, strategia de control al accesului la mediu se bazeaz In a pe detectarea coliziunilor i repetarea pachetelor ce au suferit coliziuni, adic s a aceeai strategie ca i pentru Ethernet-ul pe cablu coaxial. s s Datorit conditiilor specice retelelor fr r, sunt aduse cteva modicri. a aa a a principal, la transmisia radio nu exist o delimitare comun In a a ntre zonele de actiune pentru diverse statii din aceeai celul: este posibil ca o statie B s s a a receptioneze bine transmisia statiei A, statia C s receptioneze transmisia lui a B, dar statia C s nu receptioneze transmisia lui A. a Intr-un astfel de caz, dac a A i C transmit simultan, pachetele emise se ciocnesc la B, dar deoarece nici s

c 2008, Radu-Lucian Lupa s


286 9.2. Retele IEEE 802.11 (Wireless)

una din statiile A i C nu receptioneaz transmisia celeilalte ele nu au cum s s a a detecteze coliziunea. retelele IEEE 802.11, o statie care dorete s trimit un pachet In s a a va trimite ai un pachet de control, numit Request To Send (RTS; rom: nt cerere de transmisie), care specic destinatarul i durata de timp necesar n a s a transmiterii pachetului. Dac destinatarul a primit pachetul RTS i este liber, a s va trimite napoi un pachet de control Clear To Send (CTS; rom: accept transmisia). La primirea pachetului CTS, emittorul trimite pachetul de date. a O statie care receptioneaz un pachet CTS destinat altei statii nu a are voie s trimit nimic pe durata rezervat de pachetul CTS, pentru a nu a a a interfera cu transmisia acceptat prin acel CTS. Aceast restrictie trebuie a a respectat i cazul receptiei unui pachet CTS destinat altei retele din aceeai a s n s zon (adic purtnd un BSS-ID diferit). a a a Utilizarea pachetelor RTS i CTS nu este obligatorie. Pentru pas chetele mici este preferabil trimiterea direct a pachetului de date i repetarea a s acestuia cazul unei coliziuni. Pentru pachetele de broadcast, utilizarea RTS n i CTS este imposibil; ca urmare un pachet de broadcast este trimis direct. s a

9.2.3. Generarea pachetelor beacon


modul infrastructur, pachetele beacon ale unei celule sunt generIn a ate exclusiv de ctre AP-ul celulei. a modul ad-hoc, generarea pachetelor beacon este fcut distribuit, In a a de ctre toate statiile membre ale celulei IBSS. Simplicat, o statie care nu a receptioneaz un beacon a ntr-un anumit interval de timp predenit genereaz a ea ai pachetul beacon. nss

9.2.4. Securitatea retelelor 802.11


Deoarece la retelele 802.11 comunicatia este prin unde radio, a cror a domeniu de actiune nu poate net limitat, utilizarea unor metode care s a asigure condentialitatea i integritatea datelor transportate este esential. s a Exist mai multe mecanisme de securitate ce pot utilizate. cadrul a In unei celule se poate utiliza, la alegere, unul singur dintre acestea: Open system: nseamn, de fapt, lipsa oricrui mecanism de securitate. a a Se utilizeaz acolo unde se dorete s se ofere acces public la Internet. De a s a remarcat a c, datorit lipsei oricrui mecanism de condentialitate ns a a a sau asigurarea integritii mesajelor, oricine poate asculta sau modica at comunicatia oricui cadrul celulei. n Wired Equivalent Privacy WEP (rom. securitate echivalent cu reteaua a cablat ): ofer condentialitate i autenticarea i vericarea integritii a a s s at

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 287

mesajelor. acest scop, toti membrii celulei trebuie s cunoasc o anIn a a umit cheie de lung durat, numit pre-shared key (rom. cheie para a a a tajat prealabil ); aceast cheie trebuie dat de utilizator la initierea a n a a celulei sau, dup caz, la introducerea statiei celul. Criptarea se a n a face utiliznd cifrul RC4, cu o cheie construit din secretul partajat a a i dintr-un vector de initializare ales aleator, pentru ecare pachet, de s ctre emittor i transmis antetul pachetului. Controlul integritii a a s n at pachetului este fcut tot pe baza secretului partajat. WEP are dou a a slbiciuni: pe de o parte, datorit existentei unei slbiciuni a cifrului a a a RC4 (exist cteva chei slabe, foarte uor de spart), WEP poate spart a a s destul de uor; pe de alt parte, modelul de securitate oferit este destul s a de neexibil. WiFi Protected Access WPA: corecteaz problemele WEP, pstrnd a a a compatibilitatea cu plcile de retea existente. privinta criptrii, WPA a In a pstreaz cifrul RC4 din motive de compatibilitate, dar vine cu o schem a a a diferit de gestiune a cheilor de criptare, capabil s evite cheile slabe. a a a privinta obtinerii unui model de securitate mai exibil, WPA In are dou moduri de lucru: a - WPA-Personal, numit i WPA-PSK (de la Pre-Shared Key), s n care se utilizeaz un secret partajat a ntre toti membrii celulei, ind similar cu WEP (dar mult mai sigur). - WPA-Entreprise, care cheile se obtin pe baza unor chei individn uale ale utilizatorilor. Controlul accesului i obtinerea cheilor se s face printr-un mecanism numit Extensible Authentication Protocol (EAP ), descris mai jos. IEEE 802.11i [IEEE 802.11i, 2004], numit i WPA2, extinde WPA as dugnd, a a ntre altele, posibilitatea utilizrii cifrului AES. Ca i cazul a s n WPA, exist dou moduri de lucru, cu cheie partajat prealabil sau a a a n utiliznd EAP. a Protocolul de autenticare extensibil, EAP [RFC 3748, 2004], este un protocol generic, ce permite utilizarea mai multor scheme de autenticare. EAP este utilizat i de alte protocoale afar de WPA i WPA2, i s n a s s anume poate utilizat cadrul legturilor PPP [RFC 1661, 1994], precum n a i pentru autenticarea conectrilor la o retea cablat IEEE 802.3, conform s a a [IEEE 802.1X, 2001]. Arhitectura EAP contine urmtoarele componente: a clientul ce trebuie s-i dovedeasc identitatea scopul obtinerii accesului as a n

c 2008, Radu-Lucian Lupa s


288 9.2. Retele IEEE 802.11 (Wireless)

la retea. Rolul clientului are placa de retea 802.11 (sau placa de l terminologia EAP, acesta este numit retea 802.3 sau clientul PPP). In supplicant. punctul de acces este entitatea care trebuie s autentice clientul pentru a a-i oferi acces la serviciile retelei. Rolul de punct de acces are AP-ul l 802.11 (sau switch-ul 802.3 sau serverul PPP). terminologia EAP, In acesta se numete authenticator. s serverul de autenticare este entitatea care detine baza de date cu cheile clientilor i realizeaz efectiv autenticarea. s a Protocolul EAP prevede un schimb de mesaje ntre client i serverul de autens ticare. Dac serverul de autenticare este distinct fat de punctul de acces, a a comunicatia dintre client i serverul de autenticare trece prin punctul de ac s ces, iar portiunea din calea de comunicatie dintre punctul de acces i serverul s de autenticare este protejat criptograc pe baza unui secret partajat a ntre punctul de acces i serverul de autenticare. Serverul de autenticare este de s obicei un server RADIUS. Unele dintre mecanismele efective de autenticare utilizabile cadrul n EAP sunt: EAP-MD5 prevede c serverul de autenticare trimite clientului un numr a a aleator, iar clientul rspunde cu dispersia MD5 a concatenrii numrului a a a aleator cu parola clientului. Functionarea mecanismului necesit ca a serverul s aib baza de date, clar, parola clientului. EAP-MD5 a a n n permite doar autenticarea clientului, nu i stabilirea unor chei pentru s criptarea sau autenticarea mesajelor. EAP-TLS necesit ca att clientul ct i serverul de autenticare s aib a a a s a a prestabilite chei secrete SSL/TLS, iar ecare dintre ei s aib certicatul a a TLS al celuilalt (vezi i 11.3.2.5). Se stabilete o conexiune TLS s s ntre client i serverul de autenticare, utiliznd certicatele acestora, iar s a n cadrul acestei conexiuni stabilesc cheile pentru comunicatia ulterioar a ntre client i punctul de acces. s PEAP (de la Protected EAP ) prevede utilizarea TLS pentru deschiderea unei conexiuni securizate ntre client i serverul de autenticare, a s ns doar serverul are o cheie TLS, clientul autenticnd serverul pe baza a certicatului corespunztor. Dup deschiderea conexiunii TLS, urmeaz a a a autenticarea clientului de ctre server, iar caz de succes are loc nea n gocierea cheilor pentru securizarea comunicatiei ntre client i punctul s de acces. terminologia PEAP, conexiunea TLS se numete mecanisIn s mul exterior de autenticare, iar mecanismul de autenticare a clientului

c 2008, Radu-Lucian Lupa s


Capitolul 9. Retele IEEE 802 289

se numete mecanismul interior. Mecanismul interior cel mai rspndit s a a este MSCHAP, care este un mecanism similar cu EAP-MD5.

c 2008, Radu-Lucian Lupa s


290 Capitolul 9. Retele IEEE 802

c 2008, Radu-Lucian Lupa s


291

Capitolul 10

Internetul

Denumirea Internet desemneaz dou lucruri: pe de o parte un proa a tocol de nivel retea (Internet Protocol, IP, protocolul Internet), iar pe de alt a parte reteaua Internet, care este o retea la scar mondial bazat pe protocolul a a a Internet. Capitolul de fat prezint: a a protocolul Internet (IP), mpreun cu celelalte protocoale de baz ale a a retelelor de tip Internet (TCP, DNS, ARP, etc.); cteva aspecte administrative legate de reteaua mondial Internet. a a

10.1. Arhitectura retelei


Facem continuare o scurt trecere revist a conceptelor de baz n a n a a ale unei retele bazate pe protocolul Internet. Aceste concepte vor detaliate paragrafele care urmeaz. n a Serviciul de comunicatie oferit de o retea Internet este de tip data grame; terminologia Internet acestea se numesc pachete. n Ca orice retea (vezi capitolul 5), o retea Internet este alctuit din a a noduri , interconectate ntre ele. Intr-o retea Internet, toate nodurile pot actiona ca noduri nale (adic s e surs sau destinatie pentru comunicatie). a a a Sunt numite statii (engl. hosts) nodurile ce nu pot actiona ca noduri interme diare i rutere nodurile ce pot actiona ca noduri intermediare. s Statiile sunt mod uzual calculatoare (PC-uri, mainframe-uri), dis n pozitive mobile (PDA-uri), imprimantele de retea sau alte dispozitive. Re marcm c switch-urile Ethernet sunt noduri IP numai dac sunt conguraa a a bile. acest caz, ele au doar rol de statie i doar scopul de-a putea In s n contactate vederea congurrii. n a

c 2008, Radu-Lucian Lupa s


292 10.1. Arhitectura retelei

Nodurile intermediare sunt e PC-uri, e dispozitive dedicate (rutere dedicate). Legturile directe pot realizate prin linii seriale, linii telefonice cu a modemuri, retele locale IEEE 802, cablu TV, etc. Modul de utilizare a ecrui a tip de legtur direct de ctre o retea Internet este standardizat prin stana a a a darde auxiliare ( 10.5). Exist chiar un standard [RFC 1149, 1990] de utia lizare ca legturi directe a porumbeilor cltori; dei standardul a fost publicat a aa s ca o glum de 1 aprilie, el ilustreaz foarte bine independenta a a ntre nivele ntr-o retea. Din punctul de vedere al unei retele Internet, o legtur direct este a a a orice fel de canal de comunicatie pe care reteaua de tip Internet o poate folosi. Fiecare nod este identicat prin una sau mai multe adrese IP . Cu exceptia unor adrese cu rol special, o adres IP identic unic un nod. Unele a a noduri, special cele intermediare, au mai multe adrese IP asociate. n Adresele IP sunt arareori folosite direct de utilizatorii umani. locul In lor se utilizeaz numele de domeniu. Corespondenta a ntre un nume de domeniu i adresa IP se realizeaz cu ajutorul sistemulul DNS (Domain Name Service), s a descris 10.4. n Protocolul Internet a fost proiectat pentru a asigura o tolerant dea osebit de mare la pene. Dup cderea unor noduri sau a unor legturi, dac a a a a mai exist totui un drum a s ntre dou noduri el va gsit i utilizat cele a a s n din urm. Aceast tolerant la pene vine cu un pret: nu exist garantii cu a a a a privire la arzierea maxim livrarea unui pachet sau debit minim garannt a n tat; ba chiar este posibil ca un pachet s e pierdut complet (acest lucru se a poate ampla cu pachetele surprinse pe drum de o pan, precum i caz nt a s n de arcare mare a retelei), s ajung dublu exemplar sau dou pachete s nc a a n a a ajung la destinatie ordine invers a trimiterii. a n a Este sarcina nivelelor superioare s se descurce aceste conditii. a n In acest scop, ntre aplicatie i nivelul retea este plasat un nivel intermediar, s nivelul transport, cu rolul de-a furniza aplicatiei un serviciu mai potrivit.

10.2. Protocolul IP
Protocolul Internet (engl. Internet Protocol IP ) descrie formatul pachetelor i cteva aspecte privind activitatea nodurilor retelei. s a Protocolul IP are dou versiuni aate curent uz: versiunea 4 a n (cea mai utilizat prezent, numit prescurtat IPv4 ) standardizat prin a n a a [RFC 791, 1981] i versiunea 6 (care se rspndete relativ s a a s ncet, numit presa curtat IPv6 ) standardizat prin [RFC 2460, 1998]. a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 293

10.2.1. Structura pachetului IP


Un pachet IP este alctuit dintr-un antet x, un numr variabil de a a optiuni i, nal, datele utile. s n Antetul x contine datele necesare pentru dirijarea pachetului. Con inutul antetului x este dat tabelele 10.1 (pentru versiunea 4) i 10.2 (pent n s tru versiunea 6). Semnicatia diferitelor cmpuri va descris paragrafele a a n care urmeaz. a Nume cmp a Versiune IHL Lungime (biti) 4 4 Rol Versiunea protocolului; valoarea este x: a 4. Lungimea antetului, inclusiv optiunile, n grupuri de 32 biti (valoarea minim este a 5, adic 160 biti). a Tip serviciu (vezi 10.2.6.2). Lungimea total, antet plus date utile, a n octeti. Identicator pentru reasamblarea fragmentelor (vezi 10.2.6.1). Rezervat pentru extinderi ulterioare; are valoarea 0. vezi 10.2.6.1. Marcheaz ultimul fragment sau un paa chet nefragmentat (vezi 10.2.6.1). Deplasament pentru reasamblarea fragmentelor. Timpul rmas pn la distrugerea paa a a chetului (vezi 10.2.5.3). Identicarea protocolului de nivel superior cruia apartin datele utile. a i 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 surs a a Adres destinatie a

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

Tabelul 10.1: Antetul IP versiunea 4

Optiunile sunt informatii pentru dirijarea pachetului pentru cazuri mai speciale; deoarece aceste informatii nu sunt necesare dect pentru anumite a tipuri de pachete, ele sunt prezente doar pachetele care este nevoie de n n

c 2008, Radu-Lucian Lupa s


294 10.2. Protocolul IP

Nume cmp a Versiune Clas trac a Etichet ux a Lungime rest Tip antet urmtor a

Lungime (biti) 4 8 20 16 8

Rol Versiunea protocolului IP. Valoarea este x: 6. a tip serviciu (vezi 10.2.6.2). vezi 10.3.1.8. Lungimea pachetului minus antetul x, n octeti. Dac exist optiuni, tipul primului ana a tet optional; altfel, protocolul cruia a i apartin datele utile. Numrul maxim de salturi pn la disa a a trugerea pachetului (vezi 10.2.5.3). Adresa nodului ce a emis pachetul. Adresa destinatarului nal al pachetului.

Limit salturi a Adresa surs a Adresa destinatie

8 128 128

Tabelul 10.2: Antetul IP versiunea 6

ele. Datele utile sunt un ir de octeti asupra cruia protocolul IP nu s a impune nici o restrictie, cu exceptia lungimii. Lungimea maxim admis de a a protocol este de 65515 octeti (65535 octeti pachetul ntreg) pentru IPv4 i s 65535 octeti, inclusiv antetele optionale, pentru IPv6. Este permis ca unele noduri s nu poat procesa pachete care datele utile sunt mai lungi de 556 a a n octeti (576 octeti tot pachetul) pentru IPv4 i 1240 octeti (1280 octeti tot s pachetul) pentru IPv6 (a se vedea i 10.2.6.1). s

10.2.2. Bazele dirijrii pachetelor IP a


10.2.2.1. Subretele i interfete s O subretea este o multime de noduri legate direct ecare cu ecare. De exemplu, o retea Ethernet construit cu cabluri magistral este o subretea a a IP. O retea Ethernet cu hub-uri sau switch-uri este de asemenea o subretea IP ntruct, din punctul de vedere al calculatorului la care este ataat o plac a s a a de retea, o retea Ethernet construit cu cablu magistral se comport identic a a a cu o retea construit cu hub-uri sau switch-uri. Ca alt exemplu, o linie serial a a construiete o subretea cu dou calculatoare. s a Interfata de retea este un concept abstract care desemneaz legtura a a cazul care legtura direct este realizat de dintre un nod i o subretea. In s n a a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 295

o retea IEEE 802, interfata de retea este placa de retea mpreun cu driver-ul a ei. Fiecare interfat de retea are propria adres IP. Ca urmare, un nod a a ce are n plci de retea va avea n adrese IP distincte. a Are sens s vorbim despre interfetele membre ale unei subretele, ca a ind interfetele prin care nodurile din subretea sunt conectate la acea subretea. Adresele IP dintr-o subretea sunt adresele IP ale interfetelor din acea subretea. 10.2.2.2. Prexul de retea Fiecare subretea are asociat un prex de retea, adic un anumit ir a s de biti de lungime mai mic dect lungimea unei adrese IP. Toate adresele IP a a ale interfetelor din acea subretea trebuie s a nceap cu acel prex de retea. a Prexul unei subretele nu este permis s e prex al unei adrese IP din afara a acelei subretele. Ca urmare, un prex identic unic o subretea. a Suxul unei adrese, adic irul de biti din adres care nu fac parte as a din prexul subretelei, vom numi adresa cadrul subretelei. Numrul de l n a biti ai suxului determin numrul de noduri ce pot membre ale subretelei. a a Adresele care suxul este format numai din biti 0 sau numai din n biti 1 (aadar dou adrese pentru ecare subretea) sunt rezervate i nu pot s a s asignate nodurilor retelei (a se vedea i [RFC 1700, 1994]). s Exemplul 10.1: Pentru simplicarea exemplului vom presupune c adresele a IP sunt doar de 8 biti. Presupunem c o subretea ar avea prexul de retea a 10110. Adresa 10110010, dac exist, trebuie s desemneze o interfat din a a a a acea retea. Adresa 10111010 nu poate face parte din acea subretea, deoarece nu ncepe cu prexul subretelei. Notm c un nod care are o interfat a a a n subreteaua 10110 i o interfat alt retea ar putea avea adresa 10111010 pe s a n a cea de-a doua interfat. a Din subreteaua considerat, cu prexul 10110, pot face parte adresele, a numr de 23 = 8, din intervalul 1011000010110111. Adresele 10110000 i n a s 10110111 sunt rezervate; rmn deci 6 adrese ce pot asignate nodurilor a a subretelei. Un exemplu de asignare a adreselor este prezentat gura 10.1. n Ptrelele numerotate reprezint calculatoarele, iar liniile reprezint legturile a at a a a directe, gurate aici ca i cnd ar realizate prin cabluri magistral. De res a a marcat c nodul cu numrul 3 are dou adrese, 10110001 i 10111010, cte a a a s a una pentru ecare interfat. a

c 2008, Radu-Lucian Lupa s


296 10.2. Protocolul IP

1 10110010 10110001 3 10111010 10111001 4

Subretea cu prexul 10110


10110100

10111011 5

Alt subretea, cu prexul 10111 a Figura 10.1: O retea format din dou subretele. Vezi exemplul 10.1 a a

10.2.2.3. Tabela de dirijare La primirea unui pachet IP, un nod execut urmtorul algoritm: a a 1. dac adresa destinatie este una din adresele nodului curent, pachetul a este livrat local (nivelului superior); 2. altfel, dac adresa destinatie este adresa unui vecin direct, pachetul este a livrat direct acelui vecin; 3. altfel, se determin vecinul direct cel mai apropiat de destinatarul paa chetului i i se d pachetul, urmnd ca acesta s-l trimit mai departe. s a a a a Pentru pasul 2, este necesar ca nodul s determine dac adresa destia a natie corespunde unui vecin direct i care este interfata prin care se realizeaz s a legtura. Livrarea efectiv este realizat de interfata de retea; acesteia i se d a a a a pachetul i adresa IP a vecinului. s Pentru pasul 3, trebuie determinat primul rnd vecinul direct n a cruia i se va trimite pachetul. Dac acesta are mai multe interfete, trebuie a a utilizat interfata prin intermediul cruia el este vecin nodului curent. O dat a a a determinat adresa interfetei, trimiterea pachetului se face ca la pasul 2. a Deciziile de la paii 2 i 3 se iau pe baza tabelei de dirijare a nodus s lui curent. O tabel de dirijare const dintr-o multime de reguli de dirijare. a a Fiecare regul asociaz o int unui grup de adrese destinatie. a a t a Grupul de adrese este specicat printr-un prex de retea. Pentru un pachet dat se aplic acea regul de dirijare care prexul ce specic grupul a a n a este prex al adresei destinatie a pachetului. Dac exist mai multe astfel de a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 297

reguli de dirijare, se aplic regula cu prexul cel mai lung adic cea mai a a specic dintre regulile de dirijare aplicabile. a Tinta poate e o interfat, e o adres IP. a a Dac inta este o interfat, destinatia trebuie s e un vecin direct, at a a accesibil prin acea interfat; acest caz pachetul de dirijat este livrat direct a n destinatarului prin interfata dat regul, conform pasului 2. a n a Dac inta este o adres, aceasta trebuie s e adresa unei interfete at a a vecine. acest caz pachetul de dirijat este trimis nodului vecin a crui adres In a a este specicat tabela de dirijare. Nodul vecin respectiv poart denumirea a n a de gateway i trebuie s e congurat s actioneze ca nod intermediar. s a a De notat c adresa surs i adresa destinatie din antetul IP nu se a a s modic cursul acestei proceduri. Sursa rmne nodul care a emis paa n a a chetul, iar destinatia rmne nodul cruia trebuie s-i e livrat cele din a a a a n urm pachetul. Atunci cnd modulul de retea paseaz unei interfete de retea a a a un pachet vederea transmiterii pachetului ctre un nod vecin, modulul de n a retea va comunica interfetei dou lucruri: pachetul, care adresa destinatie a n reprezint destinatarul nal, i adresa vecinului direct cruia interfata va a s a i livra pachetul. Acesta din urm poate diferit fat de destinatarul nal dac a a a este doar un intermediar pe drumul ctre destinatarul nal. a
Subreteaua 10110
1 2

Subreteaua 1000
6 7

10110010

10110100

10000010

10000011

eth0: 10110001
3 5

10000001 10111011 10111001


4

eth1: 10111010

Subreteaua 10111 Figura 10.2: O retea pentru exemplul 10.2

Exemplul 10.2: Fie reteaua din gura 10.2, format din trei subretele. Pen a tru nodul nr. 3, au fost gurate i numele interfetelor de retea: eth0 ctre s a subreteaua de sus i eth1 ctre subreteaua de jos. Tabela de dirijare a nodu s a lui 3 este cea ilustrat tabelul 10.3. a n

c 2008, Radu-Lucian Lupa s


298 10.2. Protocolul IP

Nr. crt. 1. 2. 3.

Grup de adrese (prex) 10110 10111 1000

Tinta interfata eth0 interfata eth1 nodul 10111011

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

Considerm c nodul 3 primete un pachet cu destinatia 10110010 a a s (nodul 1). Singura regul aplicabil este regula 1, deoarece 10110 este prex a a pentru 10110010. Conform acestei reguli, pachetul poate livrat direct prin interfata eth0. Fie acum un pachet cu destinatia 10000010 (nodul 6). Regula apli cabil este regula 3. Conform acesteia, pachetul trebuie trimis nodului cu a adresa 1011101, urmnd ca acesta s-l trimit mai departe. Modulul IP caut a a a a continuare regula aplicabil pentru destinatia 10111011 i gsete regula 2, n a s a s conform creia pachetul se trimite prin interfata eth1. Prin urmare, pachetul a destinat lui 10000010 va trimis lui 10111011 prin interfat eth1 (urmnd ca a a nodul 5 s-l livreze mai departe nodului 6). a De remarcat c nodurile ce apar ca int regulile tabelelor de diria t a n jare trebuie specicate prin adresele interfetelor accesibile direct din nodul curent. exemplul 10.2, este esential ca, ultima regul a tabelei de dirijare In n a a nodului 3, nodul 5 s e specicat prin adresa 10111011 i nu prin adresa a s 10000001. Nodul cu adresa 10111011 este accesibil prin interfata eth1, con form regulii 2; dac ar fost specicat prin adresa 10000001, nodul 3 nu ar a putut determina cum s-i trimit pachetul. a a majoritatea cazurilor, tabela de dirijare are o regul numit imIn a a plicit, corespunztoare prexului vid i, ca urmare, aplicat pentru pachetele a a s a pentru care nu este aplicabil nici o alt regul. Aceast regul, dac exist, a a a a a a a are totdeauna ca int o adres IP a unui nod vecin al nodului curent. Acest t a a nod (de fapt, aceast adres IP) poart denumirea de default gateway. a a a

10.2.3. Scrierea ca text a adreselor i prexelor s


10.2.3.1. Scrierea adreselor IP Atunci cnd o adres IP este scris pe hrtie sau a a a a ntr-un ier text, s se aeaz pe ecran sau se citete de la tastatur, adresa este scris s a s a a ntr-un format standard descris continuare. n

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 299

Adresele IP versiunea 4, care sunt iruri de 32 de biti, se scriu ca ir de s s 4 numere, scrise baza 10, separate prin puncte. Fiecare numr este de n a fapt valoarea cte unui grup de 8 biti, vzut ca numr. Aceast scriere a a a a se numete notatie zecimal cu punct. s a Pe lng notatia zecimal cu punct, adresele IP versiunea 4 pot a a a scrise notatia zecimal simpl : se scrie direct valoarea adresei ca n a a numr, scris baza 10. a n Exemplul 10.3: Fie adresa 1100-0000-1010-1000-0000-0000-0010-0010 (liniutele au fost scrise numai pentru uurarea citirii). Notatia zecimal s a cu punct este 192.168.0.34. Notatia zecimal simpl este 3232235554. a a Adresele IP versiunea 6 sunt iruri de 128 de biti. Scrierea lor obinuit s s a se face ca un ir de 32 cifre hexa, ecare reprezentnd cte 4 biti din s a a adres. Cifrele hexa sunt grupate cte 4, iar grupurile succesive sunt a a separate prin cte un caracter dou puncte. Pentru a scurta scrierea, se a a permit urmtoarele optimizri: a a - zerourile de la nceputul unui grup pot s nu e scrise; a - un grup cu valoarea 0 sau mai multe astfel de grupuri consecutive se pot elimina, mpreun cu separatorii dou puncte dintre ei, a a rmnnd doar dou caractere dou puncte succesive. Acest lucru a a a a a se poate face ntr-un singur loc al adresei, altfel s-ar crea evident o ambiguitate. Exemplul 10.4: O posibil adres IPv6 este a a
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 vederea compatibilitii cu IPv4, n at este acceptat scrierea care primii 96 biti sunt scrii format IPv6, a n s n iar ultimii 32 de biti sunt scrii format IPv4, separati de primii printr s n un caracter dou puncte. a

c 2008, Radu-Lucian Lupa s


300 10.2. Protocolul IP

Exemplul 10.5: Adresa 0:0:0:0:0:0:c100:e122 se poate scrie i s


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

sau, mai compact,


::193.0.225.34

10.2.3.2. Scrierea prexelor de retea Prexele de retea ind de lungime variabil, trebuie precizat att a a a valoarea efectiv a prexului ct i lungimea acestuia. Exist dou notatii: a a s a a notatia cu adresa subretelei i lungimea prexului i notatia cu adresa subre s s elei i masca de retea. t s notatia cu adres i lungime, prexul se completeaz cu zerouri la In as a lungimea unei adrese IP (adic la 32 de biti pentru versiunea 4 i la 128 de biti a s pentru versiunea 6); rezultatul se numete adresa de retea. Adresa de retea se s scrie ca i cnd ar o adres IP normal, dup care se scrie (fr spatiu) un s a a a a aa caracter slash (/) urmat de lungimea prexului scris ca numr baza 10. a a n Exemplul 10.6: Prexul IPv4 1100-0000-1010-1000-110 se scrie, notatia cu n adres de retea i lungime (notatie cu slash) 192.168.192.0/19. Prexul 1100a s 0000-1010-1000-1100-0000 se scrie 192.168.192.0/24. De remarcat importanta specicrii lungimii. a notatia cu adres de retea i masc de retea, se scrie mai ai In a s a nt adresa de retea, ca i cazul scrierii cu adres i lungime, dup care se scrie s n as a (cu un slash ntre ele sau rubrici separate) aa-numita masc de retea. n s a Masca de retea const dintr-un ir de biti 1 de lungimea prexului de retea a s urmat de un ir de biti 0, avnd total lungimea unei adrese IP. Masc de s a n a retea, se scrie ca i cnd ar o adres IP. s a a Notatia cu adres i masc se utilizeaz numai pentru IP versiunea as a a 4. Exemplul 10.7: Prexul 1100-0000-1010-1000-110 se scrie, notatia cu n adres de retea i masca, 192.168.192.0/255.255.224.0. Prexul 1100-0000a s 1010-1000-1100-0000 se scrie 192.168.192.0/255.255.255.0.

10.2.4. Alocarea adreselor IP i prexelor de retea s


Alocarea adreselor IP pentru reteaua mondial Internet se realizeaz a a de ctre Internet Assigned Numbers Authority (IANA). Mai multe despre aloa care se gsete la [IANA, ]. Dei nu este actualizat, este instructiv de citit i a s s s [RFC 1700, 1994].

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 301

10.2.4.1. Alocarea pe utilizri a Adresele IPv4 sunt artite dup cum urmeaz: mp a a Adresele cu prexele 0.0.0.0/8 i i 127.0.0.0/8 sunt rezervate. Adresa s s 127.0.0.1, pentru ecare nod, desemneaz acel nod, cu alte cuvinte un a pachet destinat adresei 127.0.0.1 este totdeauna livrat nodului curent. Adresa 0.0.0.0 nseamn adres necunoscut; poate folosit doar ca a a a a adres surs pachete emise de un nod care a a n ncearc s si ae propria a a adres. a Adresele cu prexul 224.0.0.0/4 sunt utilizate ca adrese de multicast (aas numita clas D). a Adresele cu prexul 240.0.0.0/4 sunt rezervate (aa-numita clas E ). s a Adresele cu prexele 10.0.0.0/8, 172.16.0.0/12 i 192.168.0.0/16 sunt nus mite adrese private [RFC 1918, 1996]. Aceste adrese pot utilizate intern de oricine, fr s e necesar alocarea la IANA, a cu conditia ca aa a ns pachetele purtnd astfel de adrese ca surs sau destinatie s nu ajung a a a a n afara nodurilor gestionate de acea persoan sau institutie. Aceste adrese a se utilizeaz pentru acele noduri, din reteaua proprie a unei institutii, a care nu au nevoie de acces direct la Internet. Mai multe detalii despre utilizarea acestor adrese vor date 10.7.2 n Restul adreselor se aloc normal nodurilor din Internet. a 10.2.4.2. Alocarea adreselor i dirijarea ierarhic s a lipsa oricror grupri ale adreselor, majoritatea nodurilor din InIn a a ternet ar trebui s aib tabela de dirijare cte o regul pentru ecare nod. a a n a a O asemenea solutie nu este realizabil practic la scar mondial. Din aceast a a a a cauz, adresele se aloc institutiilor doritoare blocuri de adrese, ecare bloc a a n avnd un prex unic, a ntocmai ca cazul subretelelor. n Un bloc de adrese se aloc unei subretele sau grup de subretele ina terconectate care apar, din restul Internetului, ca o singur subretea. Din a afara subretelei corespunztoare unui bloc, toate pachetele destinate adreselor a din bloc sunt dirijate identic, conform unei reguli care are ca prex prexul blocului. tabela de dirijare a unui nod oarecare din Internet va necesar In astfel cte o regul pentru ecare bloc, i nu cte o regul pentru ecare nod. a a s a a Pentru stabilirea dimensiunilor blocurilor, initial adresele IP versi unea 4 au fost artite clase: mp n A: Adresele cu prexul 0.0.0.0/1 au fost artite 128 blocuri alocabile, mp n ecare bloc avnd cte 224 adrese. Lungimea prexului unui bloc este a a de 8 biti.

c 2008, Radu-Lucian Lupa s


302 10.2. Protocolul IP

B: Adresele cu prexul 128.0.0.0/2 au fost artite 16384 blocuri de mp n cte 65536 adrese. Prexul unui bloc este de 16 biti. a C: Adresele cu prexul 192.0.0.0/3 au fost artite 221 blocuri de cte mp n a 256 adrese. Lungimea prexului unui bloc este de 24 de biti. Ideea artirii mp ntre clasele A, B i C era aceea ca, dndu-se o adres s a a IP, s se poat determina lungimea prexului blocului din care face parte. a a Acest lucru simplic mult calcularea tabelelor de dirijare i chiar cutarea a s a n tabela de dirijare a regulii aplicabile. artirea clase s-a dovedit prea inexibil. Pe de o parte, Imp n a mprtirea este inecient, ducnd la alocarea cte unui bloc de clas B (adic a a a a a a 65536 adrese) pentru institutii care nu aveau nevoie de mai mult de cteva a sute de adrese. Pe de alt parte, nu exist nici o corelatie a a ntre blocurile de adrese alocate unor institutii diferite dar din aceeai zon geograc; s a a n consecint, pentru majoritatea ruterelor din Internet este nevoie de cte o a a regul de dirijare pentru ecare institutie creia i s-a alocat un bloc de adrese. a a Ca urmare s-a decis o nou schem de alocare a blocurilor de adrese. a a Noua schem se numete CIDR (engl. Classless InterDomain Routing) i este a s s descris [RFC 1518, 1993]. a n schema CIDR, un prex de bloc poate avea orice lungime. O In institutie ce dorete acces Internet poate solicita alocarea unui bloc de adrese, s cu un numr de adrese egal cu o putere a lui 2. a O institutie care furnizeaz acces Internet altor institutii este a ncurajat s aloce mai departe, din blocul alocat ei, sub-blocuri pentru institutiile a a crora le ofer acces Internet. Astfel, din afara retelei furnizorului de acces a a Internet, reteaua furnizorului mpreun cu toti clientii lui se vede ca o singur a a subretea care toate adresele au acelai prex. n s CIDR mai prevede o grupare a blocurilor pe continente, astfel at nc pentru un nod aat pe un continent toate (sau majoritatea) adreselor de pe un alt continent s se dirijeze conform unei singure reguli. Aceast grupare este a a aplicabil doar adreselor care nu erau deja alocate la momentul introducerii a CIDR; CIDR nu i-a pus problema realocrii adreselor deja alocate. s a Pentru adresele IP versiunea 6 se folosete numai schema CIDR. s

10.2.5. Erori la dirijare i protocolul ICMP s


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

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 303

Protocolul const transmiterea, anumite situatii, a unor pachete a n n ICMP. Un pachet ICMP este un pachet IP care cmpul protocol are valn a oarea 1 pentru ICMPv4, respectiv 58 pentru ICMPv6, iar zona de date utile este structurat conform standardului ICMP. a Pachetele ICMP sunt de obicei generate de modulul de retea al unui nod, ca urmare a unei erori aprute livrarea unui pachet IP. Pachete ICMP a n mai pot generate i de programe utilizator, prin intermediul socket-urilor de s tip SOCK RAW. Astfel de aplicatii servesc la testarea functionrii retelei. a O dat generat, un pachet ICMP este transmis prin retea ca orice a alt pachet IP. Ajuns la destinatie, modulul de retea (IP) al nodului destinatie examineaz cmpul protocol i, constatnd c este vorba de un pachet ICMP, a a s a a livreaz modulului ICMP al nodului destinatie. Modulul ICMP trebuie s l a a e prezent i functional orice nod IP; implementrile obinuite este parte s n n a s a nucleului sistemului de operare al calculatorului ce constituie nodul. Datele utile sunt formatate conform standardului ICMP i s ncep cu doi ntregi pe cte 8 biti reprezentnd tipul i subtipul mesajului ICMP (vezi a a s tabelul 10.4). Formatul restului pachetului depinde de tipul mesajului ICMP; majoritatea cazurilor, este prezent o copie a primilor cteva zeci de octeti n a a din pachetului IP care a dus la generarea pachetului ICMP. Situatiile ce duc la generarea pachetelor ICMP, precum i actiunile s ntreprinse de un nod la primirea unui pachet ICMP, sunt descrise paran grafele urmtoare. a 10.2.5.1. Pachete nelivrabile Un nod declar un pachet nelivrabil dac: a a nici o regul din tabela de dirijare a nodului nu este aplicabil destinatiei a a pachetului; sau interfata de retea prin care trebuie trimis pachetul nu este functional a sau nu poate livra pachetul destinatarului (destinatarul nu rspunde). a aceste cazuri, nodul curent trimite un pachet ICMP, avnd: In a adresa sursa: adresa nodului curent, adresa destinatie: adresa surs a pachetului nelivrabil, a 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 analizeze antetul pachetului returnat i s informeze nivelul a s a superior (probabil TCP sau UDP) asupra problemei.

c 2008, Radu-Lucian Lupa s


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 i s agul nu fragmenta setat; vezi 10.2.6.1 pachetul a avut optiunea dirijare de ctre surs i ruta speca as icat este invalid. a a pachetul se a de a prea mult timp retea n (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 redirectionare, 10.2.5.5 cerere ecou, 10.2.5.2 rspuns ecou, 10.2.5.2 a

8 echo request 9 echo reply

Tabelul 10.4: Tipuri i subtipuri mai importante de pachete ICMPv4 s

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 305

10.2.5.2. Diagnosticarea functionrii rutelor a Testarea functionrii comunicatiei la nivel retea este un test simplu a i extrem de util gsirea penelor dintr-o retea. s n a acest scop, pe majoritatea sistemelor exist o comand utilizator, In a a numit ping, care testeaz legtura dintre nodul curent i nodul specicat. a a a s Comanda ping functioneaz prin trimiterea unui pachet ICMP cu a tipul echo request (rom. cerere ecou) ctre nodul specicat. Nodul destinatie a al unui pachet echo request rspunde prin trimiterea a napoi (ctre sursa paa chetului echo request) a unui pachet ICMP cu tipul echo reply (rom. rspuns a ecou). Pachetul echo reply este livrat comenzii ping. Pachetele echo request i echo reply se mai numesc uneori ping i s s pong. Pachetele cu tipurile ping i pong au prevzute, conform standardului, s a dou cmpuri, identicare i nr. secvent, pe baza crora nucleul sistemului a a s a a i comanda ping identic corespondentele s a ntre pachetele ping trimise i pas chetele pong receptionate. Pachetele ping i pong au prevzut i un cmp, de s a s a dimensiune arbitrar, de date utile; scopul acestui cmp este testarea transa a miterii pachetelor mari. Pe lng comanda ping care testeaz functionarea unei legturi, exa a a a ist o comand, traceroute (pe sisteme de tip Unix) sau tracert (pe Wina a dows), care aeaz adresele ruterelor prin care trece un pachet pentru o ans a umit destinatie. a Exist mai multe metode pentru a aa drumul spre un anumit nod. a Metoda utilizat de comanda traceroute se bazeaz pe trimiterea, spre acel a a nod, a unor pachete ping cu valori mici pentru timpul de viat (vezi 10.2.5.3). a Un astfel de pachet parcurge nceputul drumului spre nodul destinatie, a, ns dup parcurgerea unui numr de noduri intermediare egal cu valoarea initial a a a a timpului de viat, provoac trimiterea a a napoi a unui pachet ICMP de tip TTL exceeded. Trimitnd pachete ping cu diferite valori pentru timpul de a viat, se primesc pachete TTL exceeded de la diferitele noduri de pe traseul a spre destinatie. O alt posibilitate de-a aa ruta spre un anumit nod este furnizat a a de un antet optional, standardizat i IPv4 i IPv6, care cere ruterelor s n s n s-i scrie ecare adresa acest antet optional. as n 10.2.5.3. Ciclarea pachetelor IP Este posibil s existe (temporar) inconsistente tabelele de dirijare. a n De exemplu, se poate ca tabela de dirijare a nodului A s indice nodul B ca a nod urmtor pe ruta ctre C, iar tabela nodului B s indice ca nod urmtor a a a a acest caz, dac A primete un pachet destinat lui pe ruta ctre C nodul A. In a a s

c 2008, Radu-Lucian Lupa s


306 10.2. Protocolul IP

C i-l va trimite lui B, B va pasa pachetul napoi lui A, . a. m. d. s Pentru a preveni ciclarea nelimitat a pachetelor astfel de cazuri, a n antetul IP este prevzut un cmp numit timp de viat. Valoarea acestui n a a a cmp este initializat de ctre nodul surs al pachetului (valoarea initial este a a a a a de ordinul zecilor) i este sczut cel putin cu 1 de ctre ecare nod prin care s a a a trece pachetul. Dac valoarea ajunge la 0, nodul nu mai trimite mai departe a pachetul ci ignor sau trimite l a napoi un pachet ICMP cu tipul time exceeded, subtipul time to live (TTL) exceeded (rom. depire timp de viat ) pentru a as a semnala situatia. 10.2.5.4. Congestia general, prin congestie se elege situatia care In nt n ntr-un nod intr pachete a ntr-un ritm mai rapid dect poate nodul s retrimit pachetele, a a a rezultnd de aici o functionare proast a retelei (vezi 5.3). a a cazul congestiei, nodul congestionat poate cere sursei s reduc In a a tracul prin trimiterea ctre aceasta a unui pachet ICMP cu tipul source a quench. 10.2.5.5. Redirectionarea Un nod, care primete un pachet i constat c trebuie trimis mai s s a a departe aceeai subretea din care a sosit pachetul, poate informa sursa pan s chetului cu privire la faptul c pachetul a mers pe o rut neoptim. Informarea a a a 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 retea pentru ilustrarea redirectionrii pachetelor (vezi exemplul 10.8) a

Exemplul 10.8: Considerm reteaua din gura 10.3. Pentru nodurile din a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 307

subreteaua 192.168.1.0/24, ar trebui s existe tabela de dirijare: a n o regul care s asocieze prexului 192.168.7.0/24 gateway-ul 192.168.1.3; a a o regul indicnd ca default gateway adresa 192.168.1.1. a a practic, pentru simplicarea administrrii, se omite congurarea In a a primei reguli pe toate nodurile cu exceptia nodului 192.168.1.1. consecint, In a o statie din subreteaua 192.168.1.0/24, de exemplu 192.168.1.9, care are de trimis un pachet ctre un nod din subreteaua 192.168.7.0/24, de exemplu a ctre 192.168.7.7, va trimite pachetul lui 192.168.1.1 loc de 192.168.1.3. a n Nodul 192.168.1.1 trimite mai departe pachetul ctre 192.168.1.3 i, totodat, a s a trimite un pachet ICMP redirect ctre 192.168.1.9; aceasta din urm si poate a a actualiza tabela de dirijare pentru a trimite direct la 192.168.1.3 urmtoarele a pachete destinate nodurilor din subreteaua 192.168.7.0/24.

10.2.6. Alte chestiuni privind dirijarea pachetelor


10.2.6.1. Dimensiunea maxim a pachetelor i fragmentarea a s Dimensiunea maxim a unui pachet IP este de 64 KiB. a Pe de alt parte, legtura direct a a a ntre dou noduri, dac are notiunea a a de pachet, are o dimensiune maxim a pachetului, care poate mai mic dect a a a dimensiunea maxim a pachetului IP: de exemplu, un pachet Ethernet are o a dimensiune maxim de 1500 octeti. a Dac un pachet IP de transmis este mai mare dect dimensiunea a a maxim a pachetelor admise de legtura direct a a a ntre dou noduri de pe traseu, a exist urmtoarele actiuni posibile: a a se face o fragmentare i reasamblare la nivelul legturii directe, mod s a n invizibil fat de nivelul retea; a se face o fragmentare i reasamblare la nivelul retea (IP); s se refuz livrarea pachetelor IP i se las sarcina nivelului superior s a s a n a se descurce, eventual furnizndu-i acestuia dimensiunea maxim accepta a abil a pachetului. a Trebuie remarcat c, 1981, cnd s-a standardizat protocolul Intera n a net, era mult prea mult s se cear ecrui nod s dispun de cte 64 KiB de a a a a a a memorie pentru memorarea ecrui pachet. a Fragmentarea la nivelul legturii directe nu privete protocolul IP. a s Protocolul IP versiunea 6 cere ca nivelul legturii directe s permit transa a a miterea pachetelor IP de pn la 1280 B, recomandabil pn la 1500 B. a a a a

c 2008, Radu-Lucian Lupa s


308 10.2. Protocolul IP

Pentru a permite producerea, de ctre nivelul superior, a unor pachete a IP sucient de mici, exist un protocol pentru aarea dimensiunii maxime a a pachetelor ce pot trece prin legturile directe. Protocolul este descris a n [RFC 1981, 1996]. Protocolul Internet permite i fragmentarea la nivel retea a pachetelor. s Pentru IP versiunea 4, cmpurile necesare pentru fragmentarea i a s reasamblarea pachetelor sunt prevzute antetul standard. De asemenea, a n exist un ag, nu fragmenta, care cere ruterelor de pe traseu s nu a a ncerce fragmentarea ci schimb s abandoneze transmiterea pachetului. n a Pentru IP versiunea 6, cmpurile privind fragmentarea au fost mua tate ntr-un antet optional, deoarece este probabil s nu e utilizate frecvent. a Fragmentarea poate fcut doar de emittorul pachetului, ruterele de pe a a a traseu ind obligate s abandoneze transmiterea cazul care pachetul este a n n prea mare. Fragmentele sunt pachete IP obinuite, care se transmit independent s unul de altul din punctul care s-a efectuat fragmentarea. n Nodul destinatie efectueaz reasamblarea pachetelor. acest scop a In se utilizeaz cmpurile identicare i deplasament i agul mai urmeaz fraga a s s a mente. Astfel, un pachet se va asambla din fragmente avnd toate aceeai a s valoare cmpurile identicare, adres surs, adres destinatie i proton a a a a s col. Pachetul asamblat va avea antetul identic cu al fragmentelor (mai putin cmpurile ce controleaz fragmentarea). Datele utile vor reconstituite din a a datele utile ale fragmentelor. Cmpul deplasament al unui fragment arat a a locul datelor utile din fragment cadrul pachetului (reamintim c fragmentele, n a ca orice pachete IP, se pot pierde, pot duplicate i ordinea lor de sosire poate s inversat). Lungimea pachetului este determinat din faptul c, ultimul a a a n fragment, agul mai urmeaz fragmente are valoarea 0. a Destinatia ncearc reasamblarea unui pachet din momentul care a n a primit primul fragment al pachetului. Dac celelalte fragmente nu sosesc a ntr-un interval de timp sucent de scurt, nodul abandoneaz reasamblarea a i trimite s napoi un pachet ICMP cu tipul time exceeded, subtipul fragment reassembly time exceeded. 10.2.6.2. Calitatea serviciului Dac un nod este relativ aglomerat, acesta trebuie s ia decizii privind a a prioritatea pachetelor: dac unele pachete trebuie trimise ct mai repede, fat de altele care pot a a a inute mai mult coada de ateptare; t n s la umplerea memoriei ruterului, care pachete pot aruncate (distruse).

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 309

Cmpul tip serviciu din antetul IP contine informatii despre nivelul a de calitate a serviciului cerut de emittorul pachetului; functie de acesta, a n modulul de retea ia deciziile privind ordinea de prioritate a pachetelor.

10.2.7. Congurarea i testarea unei retele IP locale s


10.2.7.1. Alegerea parametrilor majoritatea cazurilor, In ntr-o retea local, subretelele IP, adic a a legturile directe a ntre nodurile IP, se realizeaz prin intermediul unor retele a din familia IEEE 802 (Ethernet sau 802.11). Primul lucru ce trebuie stabilit este alctuirea subretelelor. a continuare se stabilete, pentru ecare subretea IP, prexul de In s retea corespunztor. Prexul ecrei subretele trebuie, pe de o parte, s per a a a mit alocarea unui numr sucient de adrese nodurilor din subretea i, pe de a a s alt parte, s duc la alocarea de adrese dintre adresele alocate de furnizorul a a a de acces Internet sau dintre adresele rezervate pentru retele private (vezi i s 10.7.2 pentru alte considerente privind utilizarea adreselor private). Pentru ecare subretea IP, nodurile componente trebuie s fac parte a a din acelai VLAN 802.1Q (dac se denesc VLAN-uri) i ca urmare trebuie s a s s fac parte din aceeai retea 802 zic. Aceast cerint este determinat de a a s a a a a faptul c, cadrul unei subretele IP, ecare nod trebuie s poat comunica a n a a cu orice alt nod al subretelei fr a implica dirijare la nivel IP; comunicarea aa trebuie s e realizat de nivelul inferior, adic de reteaua 802. a a a De notat a c cadrul aceleiai retele IEEE 802, i chiar ns a n s s n cadrul aceluiai VLAN 802.1Q, se pot deni mai multe subretele IP. Astfel s de subretele lucreaz independent una de cealalt i necesit rutere pentru a a s a a legate logic ntre ele. Pentru ca un nod s e membru subretelele IP a n stabilite aceeai retea zic este sucient s deneasc mai multe adrese IP n s a a a pe aceeai plac de retea (vezi 10.5, special 10.5.1 pentru detalii). s a n Not: independenta subretelelor IP de pe acelai VLAN este limitat a s a de faptul c subretelele partajeaz debitul maxim de transmisie i c un intrus a a s a care ar sparge un calculator ar putea avea acces la toate subretelelel IP stabilite pe VLAN-ul sau reteaua zic din care face parte calculatorul spart. a Congurarea tabelelor de dirijare trebuie s e fcut astfel at, a a a nc pentru orice nod surs i pentru orice nod destinatie, ecare nod de pe traseul as unui pachet s gseasc corect urmtorul nod. retelele cu structur arboresa a a a In a cent ( care a n ntre oricare dou subretele exist un singur drum posibil), acest a a lucru se realizeaz de regul astfel: a a Pentru ecare subretea se alege, dintre nodurile ce actioneaz ca rutere a ctre alte subretele, un default gateway. Acesta se alege de regul ca a a

c 2008, Radu-Lucian Lupa s


310 10.2. Protocolul IP

ind nodul din subretea cel mai apropiat de ieirea spre restul Internet s ului. Se obinuiete ca nodul ales ca default gateway s primeasc adresa s s a a IP cea mai mic din subretea (adic adresa care suxul are valoarea a a n 1). Pe toate nodurile subretelei se congureaz ca default gateway nodul a ales ca default gateway al subretelei. Pentru nodurile care fac parte din mai multe subretele, se ia default gateway-ul din subreteaua cea mai apropiat de exterior (astfel un nod nu va avea ca default gateway pe el a si). nsu Pe nodul ales ca default gateway pentru o subretea se vor congura rutele ctre subretelele ,,din subordine subretelele mai deprtate de a a legtura spre exterior dect subreteaua considerat. a a a Mai notm c a a ntr-o tabel de dirijare static nu se pot congura, a a pentru tolerant la pene, mai multe ci spre o aceeai destinatie. Dac se a a s a dorete aa ceva este necesar instalarea unui program de calcul automat al s s a tabelei de dirijare.
Subretea secretariat 193.0.227.192/27 S1 193.0.227.194 S2 193.0.227.222 Subretea 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 Subretea 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 reteaua furnizorului

Figura 10.4: Retea pentru exemplul 10.9

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 311

Exemplul 10.9: S considerm c avem de construit o retea a a a ntr-o coal. s a Presupunem c am obtinut alocarea blocului de adrese 193.0.224.0/22 pentru a utilizare reteaua proprie i c ruterul ce asigur legtura cu reteaua furnin s a a a zorului de acces Internet a primit adresa ( reteaua furnizorului) 193.226.40.130 n cu masca 255.255.255.240 (prex de 28 de biti). S presupunem, de asemenea, c s-a decis artirea retelei interne a a mp trei subretele (g. 10.4), respectiv pentru secretariat, laboratorul de inforn matic i o retea special pentru experimente. artirea luat ca exemplu as a Imp a este o artire tipic din considerente de trac i de securitate: reteaua exmp a s perimental trebuie s poat izolat uor de restul retelei, iar secretariatul a a a a s este separat fat de tracul i eventual atacurile dinspre laboratorarele de a s informatic. a Fiecare subretea este construit dintr-un numr de switch-uri Ether a a net, access point-uri 802.11 i calculatoarele respective. Switch-urile i access s s point-urile nu au fost gurate explicit deoarece ele nu sunt vizibile din punctul de vedere al nivelului IP. Pentru conectarea celor trei subretele mpreun i la Internet cona s gurm dou rutere: G, dotat cu trei plci de retea, care leag reteaua secrea a a a tariatului, reteaua din laboratoare i reteaua furnizorului de acces Internet i s s L4 (probabil amplasat laborator, pentru a la n ndemn timpul experia a n mentelor), dotat cu dou plci de retea, care leag reteaua experimental de a a a a reteaua din laborator. Odat stabilite subretelele, s alocm adresele. Blocul de adrese a a a disponibile este 193.0.224.0/22, continnd 1024 de adrese. Putem crea blocuri a avnd ca dimensiuni puteri ale lui 2: 512, 256, 128, 64, 32, 16, 8 sau 4 adrese. a Incepem prin a aloca laboratoarelor un bloc ct mai mare, de 512 adrese (510 a utilizabile efectiv), anume 193.0.224.0/23. Din blocul de 512 adrese rmas a (193.0.226.0/23), s alocm 32 adrese secretariatului i 16 adrese retelei exa a s perimentale. Este bine s le alocm ct mai compact, pentru ca dintre adresele a a a nealocate s pstrm posibilitatea de-a aloca blocuri ct mai mari. Vom aloca a a a a cele dou blocuri de 32 i 16 adrese din ultimul bloc de 64 de adrese din cele 512 a s libere: 193.0.227.192/27 pentru secretariat i 193.0.227.224/28 pentru reteaua s experimental. a Pentru ecare din cele trei subretele, exist o alegere natural pentru a a default gateway: G pentru reteaua secretariatului i pentru reteaua din labo s ratoare i, respectiv, L4 pentru reteaua experimental. ecare caz, default s a In gateway-ul este nodul cel mai apropiat de exterior. ecare subretea, adresa In dat ruterului cu rol de default gateway este cea mai mic adres din acea a a a subretea.

c 2008, Radu-Lucian Lupa s


312 10.2. Protocolul IP

S vedem acum cum trebuie congurate tabelele de dirijare. Pentru a statii, tabelele sunt formate din cte dou reguli: o regul pentru livrarea a a a direct, care asociaz prexului subretelei unica interfat de retea, i o regul a a a s a implicit, care asociaz prexului vid adresa default gateway-ului. a a Pentru nodul L4 , tabela de dirijare are trei reguli, dou ind pentru a livrarea direct prin cele dou interfete, iar a treia este regula implicit: a a 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 prin cele a trei interfete, o regul implicit indicnd default gateway-ul retelei furnizorului a a a de acces Internet i o regul pentru dirijarea spre subreteaua ,,subordonat s a 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 retea pe diverse sisteme de operare Pe sistemele Windows, exist dou posibiliti de congurare: coa a at manda ipconfig ( mod text) i seria de casete de dialog din Start/ Control n s panel/ Network/ interfat. Prin ambele interfete se realizeaz att modia a a carea parametrilor din modulul IP din nucleul sistemului de operare ct i a s scrierea lor Windows registry pentru re arcarea lor la repornirea sistemun nc lui. Comportamentul de ruter, dac este dorit, trebuie activat explicit. a Pe sistemele de tip Linux congurarea este putin mai complicat, a dar i mult mai exibil. Comanda ifconfig seteaz parametrii legati de s a a interfetele de retea, anume adresa IP i masca de retea. Tot comanda ifconfig s introduce tabela de dirijare regulile de livrare direct (de fapt acesta este n a motivul pentru care are nevoie de masca de retea). Tabela de dirijare se aeaz i se modic cu comenzile route sau ip (prima este mai simpl i s as a as se gsete pe toate sistemele, a doua este mai complex i servete i altor a s a s s s scopuri). De remarcat c oprirea unei interfete de retea cu ifconfig duce a automat la eliminarea din tabela de dirijare a tuturor regulilor ce au ca int t a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 313

adrese accesibile prin acea interfat. Activarea comportamentului de ruter se a face cu o comand sysctl. a Comenzile ifconfig, route, ip i sysctl au efect imediat asupra s modulului IP din nucleu, dar congurrile respective se pierd la repornirea a sistemului. Parametrii de retea utilizati la pornirea sistemului sunt luati de script-urile de initializare din nite iere text; din pcate, ecare distributie s s a de Linux are propriile iere de congurare. De exemplu, Fedora plaseaz s a datele iere directorul /etc/sysconfig/network-scripts. n s n 10.2.7.3. Testarea i depanarea retelelor s Cel mai util instrument de depanare pentru problemele de conectivitate este comanda ping. Pentru buna functionare a acesteia i a comenzii s traceroute, este necesar ca, dac este instalat un ltru de pachete (rewall), a acesta s permit trecerea pachetelor ICMP cu tipurile echo-request, echoa a reply, destination unreachable i time exceeded. s Primul lucru ce trebuie testat, cazul unei probleme de conecn tivitate sau dup o lucrare mai ampl la retea, este dac legturile directe a a a a functioneaz. Acest lucru se face dnd comanda ping pentru cte un vecin a a a din ecare subretea din care face parte calculatorul de pe care se efectueaz a testul. Dac ping-ul merge, a nseamn c legtura functioneaz (plcile de a a a a a retea, cablurile, switch-urile i access point-urile de pe traseu) i c adresele s s a IP i mtile de retea sunt ,,sucient de bune pentru ca nodurile s e vzute s as a a ca fcnd parte din aceeai subretea. Dac ping-ul nu merge i pachetele ping a a s a s i pong nu sunt ltrate, pana trebuie cutat printre lucrurile enumerate pn s a a a a aici. Dac ping-ul merge pe legturile directe, se trece la vericarea lega a a turilor ntre subretele diferite. Dac o legtur indirect nu functioneaz dei a a a a a s toate legturile directe ce ar trebui s e utilizate functioneaz, problema este a a a de la regulile de dirijare (sau de la un ltru de pachete; de aceea este bine ca pachetele ping i pong s nu e ltrate). Exist dou lucruri uor de scpat s a a a s a din vedere aici: faptul c pentru ca ping-ul s mearg este necesar ca dirijarea a a a s functioneze corect ambele sensuri i faptul c a n s a ntre regulile de dirijare intr inclusiv regulile de default gateway de pe statii. a De exemplu, o statie care nu are congurat default gateway va putea comunica cu vecinii directi, dar nu i cu alte calculatoare nici mcar cu s a default gateway-ul, dac esre specicat prin alt adres dect cea din aceeai a a a a s subretea cu statia congurat. Alt exemplu: la reteaua din exemplul 10.9, a dac pe nodul G nu se pune regula care asociaz prexului 193.0.227.224/28 a a gateway-ul 193.0.224.4, atunci pachetele dinspre subreteaua 193.0.227.224/28

c 2008, Radu-Lucian Lupa s


314 10.2. Protocolul IP

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

10.3. Nivelul transport


Aplicatiile nu folosesc direct protocolul IP din mai multe motive: dac dou aplicatii se execut pe acelai calculator, este necesar ca nucleul a a a s sistemului de operare s determine crei aplicatii este destinat ecare a a i pachet sosit; serviciul oferit direct de nivelul retea (pachete ce se pot pierde, pot sosi alt ordine i, anumite cazuri, pot duplicate) este de obicei inn a s n adecvat. Adaptarea ntre nevoile aplicatiilor i serviciile oferite de nivelul retea s IP cade sarcina nivelului transport. Nivelul transport const dintr-o compon a nent a nucleului sistemului de operare, la care se adaug uneori nite functii a a s de bibliotec. a Componenta nivelului transport situat nucleul din sistemului de a n operare furnizeaz aplicatiei functiile sistem din familia socket(). Serviciile a oferite aplicatiei prin socket-uri de tip stream sunt implementate utiliznd pro a tocolul TCP. Serviciile oferite prin socket-uri de tip dgram sunt implementate prin protocolul UDP. Modulele retelei IP i locul modulelor TCP i UDP sunt s s artate gura 10.5. a n

10.3.1. Conexiuni cu livrare garantat: protocolul TCP a


Scopul protocolului TCP (Transmission Control Protocol ) este acela de a realiza o conexiune de tip ux de octeti, bidirectional, cu livrare garan a tat. Protocolul este descris [RFC 793, 1981]. a n Mai detaliu, TCP ofer: n a serviciu de tip conexiune, cu cele trei faze, de deschidere conexiune, comunicatie i s nchidere conexiune; trasnport ux de octeti, adic emittorul trimite un ir de octeti, negrua a a s pati mesaje, de lungime arbitrar; n a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul Nod nal Aplicatie modulul TCP sau UDP Modul IP Interfat a de retea Modulul IP Interfat a de retea Interfat a de retea Nod intermediar Nod nal Aplicatie modulul TCP sau UDP Modul IP Interfat a de retea 315

Retea de nivel inferior (de exemplu, Ethernet)

Retea de nivel inferior (de exemplu, Ethernet)

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

legtur bidirectional, adic ecare din cei doi parteneri de comunicatie a a a a poate trimite date celuilalt; livrare sigur, adic octetii trimii de emittor ajung la receptor sigur, a a s a fr duplicate i aceeai ordine care au fost trimii. aa s n s n s Modulul TCP are la dispozitie, pentru realizarea conexiunilor TCP, facilitile oferite de reteaua IP. at 10.3.1.1. Principiul conexiunii TCP Livrarea sigur este obtinut pe baza unui mecanism de numerotare a a i conrmare a pachetelor, aa cum am vzut 4.3. Mecanismul este imples s a n mentat dup cum urmeaz. Pentru a a nceput considerm transmisia unidirectional a a i conexiunea deja deschis. s a Zona de date utile a unui pachet IP ce transport date pentru proa tocolul TCP contine un antet TCP i datele utile TCP. Antetul TCP este s descris tabelul 10.5. n Fiecrui octet al uxului de date utile (de transportat de ctre TCP) a a i se asociaz un numr de secvent ; octeti consecutivi au asociate numere de a a a secvent consecutive. a Fiecare pachet TCP contine, zona de date utile, un ir de octeti n s utili consecutivi. Cmpul numr de secvent din antetul TCP contine numrul a a a a de secvent al primului octet din datele utile. a

c 2008, Radu-Lucian Lupa s


316 10.3. Nivelul transport

Nume cmp a Port surs a Port destinatie Nr. secvent a Nr. conrmare Deplasament date Rezervat Urgent Acknowledge Push Reset Synchronize Finalize Dim. fereastr a Suma de control Pozitie date urgente Optiuni

Dim. (biti) 16 16 32 32 4 6 1 1 1 1 1 1 16 16 16 variabil

Observatii

pozitia datelor utile pachet, dependent n de dimensiunea optiunilor valoarea 0 vezi 10.3.1.11 indic faptul c numrul de conrmare a a a este valid arat c pachetul trebuie trimis urgent, a a fr a inut diverse zone tampon aa t n cere nchiderea fortat a conexiunii a 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 Lupa s


Capitolul 10. Internetul 317

Modulul TCP receptor ine evidenta numrului de secvent al ultimt a a ului octet primit. La primirea unui pachet TCP, modulul receptor determin a dac datele utile sunt octeti deja primiti (duplicate), octeti ce vin imediat a n continuarea celor primiti pn acel moment sau octeti pn la care exist a a n a a a octeti lips (nereceptionati a din cauza unui pachet pierdut sau arziat). a nc nt Octetii primiti continuarea celor deja primiti sunt pui n s ntr-o coad pentru a a livrati aplicatiei la cererea acesteia. La primirea unui pachet TCP, receptorul trimite napoi un pachet TCP de conrmare. Un pachet TCP de conrmare are antetul TCP agul n acknowledge setat i cmpul numr de conrmare numrul de secvent al s n a a a a urmtorului octet ateptat de la emittor. Un pachet cu numr de conrmare a s a a n informeaz emittorul c toti octetii cu numere de secvent mai mici sau a a a a egale cu n 1 au fost primiti de receptor i nu mai trebuie retransmii. s s Emittorul retransmite octetii neconrmati. Datele utile, furnizate a de aplicatie emittorului, sunt pstrate a a ntr-o zon tampon i inute acolo pn a s t a a la conrmarea primirii lor de ctre receptor. Datele trimise i neconrmate a s ntr-un anumit interval de timp se retransmit. Datele noi intrate zona n tampon sunt trimise cu un nou pachet. Dac un pachet nu este conrmat i a s ntre prima trimitere i momentul retrimiterii au mai sosit date de la aplicatie, s emittoul poate la retrimitere s concateneze datele vechi neconrmate cu cele a a noi. Exemplul 10.10: gura 10.6 este prezentat (simplicat) o parte dintr-un In a schimb de pachete corespunztor unei conexiuni TCP. Presupunem c aplicatia a a surs are de trimis irul abcdefghi, i c acesta este pasat modulului TCP a s s a emittor etape, ai irul abcd, apoi efg, h i nal i. Mai presupunem a n nt s s n conexiunea TCP deja deschis i numrul curent de secvent 10. S analizm as a a a a putin schimbul de pachete: Emittorul trimite un prim pachet, cu numr de secvent 10 i date utile a a a s irul de 4 octeti abcd. Aceti 4 octeti au numere de secvent respectiv s s a 10, 11, 12 i 13; primul dintre acestea este scris cmpul numr de s n a a secvent al antetului TCP. a La primirea acestui pachet, receptorul rspunde cu un pachet de cona rmare, cu numrul de conrmare 14 (acesta este urmtorul numr de a a a secvent ateptat). a s Emittorul trimite acum urmtorul pachet de date, cu numrul de seca a a vent 14 i date utile efg. Presupunem c acest pachet se pierde. a s a Ca urmare a primirii de la aplicatia surs a urmtorului octet, h, emi a a torul TCP trimite imediat urmtorul pachet, cu numrul de secvent ta a a a

c 2008, Radu-Lucian Lupa s


318 10.3. Nivelul transport

Surs a abcd

Emittor TCP a secv.=10 abcd

Receptor TCP conrm=14

Destinatie 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 de pachete TCP schimbate a ntre emittor (stnga) i rea a s ceptor (dreapta); vezi exemplul 10.10.

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 319

17 i date utile h (presupunem c emittorul nu utilizeaz algoritmul s a a a Nagle, 10.3.1.10). La primirea acestui pachet (cu numr de secvent 17), receptorul nu a a l poate conrma deoarece nu a primit numerele de secvent 1416; dac a a n acest moment receptorul ar trimite un pachet cu numr de conrmare 18, a emittorul ar crede c toate numerele de secvent pn la 17 inclusiv au a a a a a fost primite i nu ar mai retrimite niciodat numerele de secvent 1416. s a a Ca urmare, receptorul are dou posibiliti: s ignore pachetul primit a at a (adic s nu trimit nici un pachet a a a napoi) sau s retrimit numrul de a a a conrmare 14; exemplul de fat am considerat a doua variant. n a a Presupunem acum c pe de o parte a expirat time-out-ul emittorului a a pentru numerele de secvent 1417 i pe de alt parte c a primit de la a s a a aplicatia surs urmtorul octet (i). Emittorul a a a mpacheteaz acum tot a ce are de (re)trimis ntr-un singur pachet i trimite numrul de secventa s a 14 i datele utile efghi. s Receptorul conrm pachetul primit, trimitnd numrul de conrmare a a a 19. Presupunem c pachetul de conrmare respectiv se pierde. a Emittorul retrimite pachetul anterior, dup expirarea time-out-ului de a a la trimiterea lui. Receptorul constat c a primit un duplicat al datelor precedente, a a a ns retrimite conrmarea cu numrul 19. Netrimiterea acest moment a a n conrmrii ar duce la repetarea la innit de ctre emittor a pachetului a a a precedent. De notat c, dei receptorul primete un duplicat, emittorul a s s a a nu tie de primirea datelor de ctre receptor. nc s a continuarea schimbului de pachete ilustrat, nu se vor mai trimite pachete In pn ce aplicatia surs nu va da emittorului TCP noi date de transmis. a a a a Am presupus pna aici c numerele de secvent sunt numere natua a a rale care pot crete nedeterminat de mult. realitate, numerele de secvent s In a sunt reprezentate (vezi tabelul 10.5) pe 32 de biti. Cum un numr de secvent a a este asociat unui octet transmis, rezult c exist numere de secvent distincte a a a a doar pentru 4 GiB de date; dup aceea numerele de secvent a a ncep s se repete. a Aceasta nu era o problem anii 80, deoarece la 10 Mbit/s repetarea unui a n numr de secvent apare cel mai repede dup aproape o or, timp care a a a a n este putin probabil s mai existe retea un pachet vechi cu acelai numr a n s a de secvent. Intr-o retea cu debit de 1 Gbit/s, se pot transmite 4 GiB a n 34 secunde, ceea ce face foarte posibil o confuzie a ntre un pachet care s-a ,, ncurcat prin retea timp de 34 s i un pachet nou care poart informatie sit s a uat, cadrul conexiunii, 4 GiB mai a n ncolo, i are acelai numr de secvent. s s a a

c 2008, Radu-Lucian Lupa s


320 10.3. Nivelul transport

Eliminarea riscului de confuzie ntre pachete la debite mari de transmisie a datelor se realizeaz, conform [RFC 1323, 1992], prin introducerea antetul a n TCP a unui cmp optional cuprinznd un marcaj de timp. Metoda se aplic a a a doar la comunicatia ntre module TCP care implementeaz RFC 1323. In a cazul care unul din modulele TCP nu implementeaz RFC 1323, modulele n a TCP vor avea grij s nu repete un numr de secvent mai devreme de cteva a a a a a minute, oprind efectiv transmisia la nevoie. 10.3.1.2. Comunicatia bidirectional a Cele dou sensuri de comunicatie ale unei conexiuni TCP functioneaz a a (aproape) complet independent. Numerele de secvent utilizate pe cele dou a a sensuri evolueaz independent. a Totui, datele utile pentru un sens sunt plasate acelai pachet s n s TCP cu conrmarea pentru cellalt sens. Astfel, ecare pachet TCP contine a ntotdeauna date pentru un sens i conrmare pentru cellalt sens. s a Dac este necesar transmiterea unor date, dar nu i a unei cona a s rmri, cmpul numr de conrmare se repet ultimul numr de conrmare a n a a a a transmis. Dac este necesar s se transmit doar o conrmare, fr date utile a a a aa pentru cellalt sens, atunci zona de date utile se face de dimensiune 0 iar a n cmpul numr de secvent se pune numrul de secvent al urmtorului octet a a a a a a ce va transmis. 10.3.1.3. Deschiderea i s nchiderea conexiunii Pentru ecare sens de comunicatie se consider cte doi octeti ctivi: a a un octet de pornire aat naintea primului octet util al datelor transmise i un s octet de ncheiere aat dup ultimul octet al datelor utile. Aceti octetii ctivi a s au asociate numere de secvent ca i cnd ar octeti obinuiti. Ei nu sunt a s a s transmii zona de date utile; prezenta lor s n ntr-un pachet este semnalizat a prin setarea agurilor synchronize i respectiv nalize din antetul TCP. s Astfel, dac un pachet TCP are agul synchronize setat, numrul a a de secvent n i zona de date utile continnd k octeti, a s a nseamn c pachetul a a transmite k+1 octeti dintre care primul, cu numrul de secvent n, este octetul a a ctiv de pornire, urmat de cei k octeti din zona de date utile, cu numere de la n + 1 la n + k. Initiatorul unei comunicatii TCP trimite un pachet TCP continnd a un octet ctiv de pornire, fr a seta agul acknowledge (acesta este sinaa gurul pachet ce nu are agul acknowledge setat) i punnd o valoare ars a bitrar (care va ignorat la destinatie) cmpul numr de conrmare. a a n a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 321

Numrul de secvent al octetului ctiv de pornire este la alegerea initiatorului a a comunicatiei. Receptorul pachetului initial rspunde, dac dorete s accepte co a a s a nexiunea, printr-un pachet TCP care, pe de o parte, conrm pachetul de a initiere primit, iar pe de alt parte contine la rndul lui un octet ctiv de a a pornire. Fiecare parte consider conexiunea deschis momentul care sunt a a n n satisfcute simultan conditiile: a 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; datele primite a nainte de momentul care conexiunea este deschis n a nu pot livrate aplicatiei pn la deschiderea complet a conexiunii. a a a Inchiderea conexiunii se face separat pe ecare sens de comunicatie. Marcarea nchiderii unui sens se face trimitnd un octet ctiv de a ncheiere. Dup trimitera octetului de a ncheiere este interzis s se mai trimit date noi. a a Ca urmare, orice pachete (de conrmare) trimise de partea care a nchis conexiunea vor avea ca numr de secvent numrul imediat urmtor octetului a a a a ctiv de ncheiere i date utile vide. Octetul ctiv de s ncheiere se conrm a normal. O conexiune poate functiona orict de mult timp cu un sens a 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 cadrul unei conexiuni. Vezi n exemplul 10.11.

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

c 2008, Radu-Lucian Lupa s


322 10.3. Nivelul transport

Pentru a urmri uor schimbul de pachete, s remarcm c A trimite a s a a a lui B un numr de 7 octeti din care 2 ctivi, ,, syn abcde n , cu numerele de a secvent de la 123 la 129 inclusiv, iar B trimite lui A un numr de 5 octeti din a a care 2 ctivi, ,, syn xyz n , cu numerele de secvent de la 25 la 29 inclusiv. a Fiecare pachet care transport octeti numerotati, indiferent dac acetia sunt a a s date utile sau octeti ctivi syn sau n , trebuie conrmat. Pachetele ce contin doar numrul de conrmare nu se conrm. a a Din punctul de vedere a lui A, conexiunea este complet deschis la a primirea pachetului nr. 2; din punctul de vedere al lui B conexiunea este complet deschis la primirea pachetului 3. Dup trimiterea pachetului 5, A a a nu mai are voie s trimit date noi; poate doar s repete datele vechi (dac a a a a nu ar primit pachetul 6 ar trebuit s retrimit pachetul 5) i s trimit a a s a a conrmri. B consider conexiunea complet a a nchis dup primirea pachetului a a 10 (a primit un n de la A i a trimis i i s-a conrmat n -ul propriu). s s A poate considera de asemenea conexiunea complet nchis dup trimiterea a a pachetului 10, a mai trebuie s pstreze un timp datele despre conexiune ns a a pentru cazul care pachetul 10 s-ar pierde i B ar repeta pachetul 9. n s O problem special legat de a a a nchiderea conexiunii este problema determinrii duratei de la a nchiderea conexiunii pn la momentul care a a n datele asociate conexiunii nu mai sunt necesare i memoria asociat poate s a eliberat. a Din punctul de vedere al unui modul TCP, conexiunea este nchis a momentul care sunt n n ndeplinite conditiile: 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 posibilitatea ca modulul TCP partener s nu primeasc cona nc a a rmarea modulului TCP local pentru octetul special de nchidere trimis de modulul TCP partener). Urmarea este c modulul TCP partener nu cona sider a nchis conexiunea (conform regulilor de mai sus) i retrimite octea s tul special de ncheiere pn la conrmarea acestuia. Modulul TCP local a a ar trebui s pstreze informatiile despre conexiune pn cnd modulul TCP a a a a a partener primete conrmarea octetului su de s a ncheiere. Din pcate, detera minarea acestui moment este imposibil, deoarece din acel moment modulul a TCP partener nu va mai trimite nici un pachet (conexiunea ind nchis). Ca a solutie de compromis, protocolul TCP prevede pstrarea datelor despre cone a xiune un anumit interval de timp (de ordinul ctorva minute) dup a a nchiderea

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 323

conexiunii. 10.3.1.4. Alegerea numrului initial de secvent a a Numrul de secvent al octetului ctiv de pornire, numit i numr a a s a initial de secvent (engl. initial sequence number, ISN ), trebuie ales aa fel a n s at s nu poat exista confuzie nc a a ntre numere de secvent dintr-o conexiune a veche i cele din conexiunea curent s a ntre aceleai dou prti (aceleai adrese s a a s IP i numere de port). s Ideal, modulul TCP ar trebui s pstreze datele despre o conexiune a a att timp ct mai pot exista retea pachete apartinnd conexiunii. aceste a a n a In conditii, la redeschiderea unei conexiuni ntre aceleai dou prti, ecare parte s a a poate atribui octetului ctiv de pornire numrul de secvent imediat urmtor a a a numrului de secvent asociat octetului ctiv de a a ncheiere al conexiunii precedente. acest caz, putem privi conexiunile succesive ca ind o singur In a conexiune care transmisiile sunt delimitate prin secvente de octeti ctivi n n syn . Dac de la precedenta conexiune a trecut destul timp pentru ca paa chetele corespunztoare s nu mai existe retea (e au ajuns la destinatie, e a a n au fost distruse ca urmare a depirii timpului de viat), alegerea numrului as a a initial de secvent poate fcut oricum. Exist cteva considerente, enumer a a a a a ate 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 trima n ite pachete IP care se falsic valoarea cmpului adres surs. Scopul unui n a a a a astfel de atac este de-a sela un mecanism de autenticare bazat pe adresa n IP a partenerului de comunicatie sau de-a deturna o conexiune TCP deja acest din urm caz, adversarul las un client legitim s se autenticat. In a a a a conecteze la server i, dup efectuarea autenticrii, adversarul injecteaz un s a a a mesaj destinat serverului i avnd ca adres surs adresa clientului autentis a a a cat. Mesajul este interpretat de server ca provenind de la clientul autenticat i, dac contine o comand autorizat pentru client, comanda este executat, s a a a a dei realitate provine de la adversar. s n De multe ori, ntr-un atac de tip spoong adversarul nu are i posibilis tatea de-a determina ruterele de pe traseu s-i permit recuperarea pachetelor a a de rspuns. Un atac astfel de conditii se numete blind spoong. a n s Un atac blind spoong se contracareaz foarte simplu genernd aleator a a numrul initial de secvent, adic fcnd ca valoarea lui s e imprevizibil a a a a a a a pentru adversar. Cum adversarul trebuie s emit pachete cu numere de a a secvent i de conrmare valide, cazul acestor msuri adversarul trebuie a s n a

c 2008, Radu-Lucian Lupa s


324 10.3. Nivelul transport

efectiv s ghiceasc numrul de secvent. a a a 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 i acknowledge pe 0), cu diferite valori s pentru cmpurile port surs i uneori adres surs (este posibil ca adversarul a as a a s execute i IP spoong). Maina atacat trebuie s aloce o structur de date a s s a a a care s memoreze datele despre conexiune pn la terminarea conexiunii sau n a a a la expirarea unui time-out. Adversarul a nu mai trimite nimic pe nici una ns dintre conexiuni, multumindu-se s in ocupat memorie pe maina atacat; at a a s a este vorba deci de un atac denial of service. Contramsura, numit syn cookie, se realizeaz astfel. O main a a a s a care ateapt cereri de conectare genereaz aleator un ir de biti, pe care s a a s l ine secret. La primirea unei cereri de conectare, maina alege, ca numr de t s a secvent initial (pentru sensul dinspre ea spre initiatorul conexiunii), valoarea a unei functie de dispersie criptograc, aplicat asupra numrului de secvent a a a a al pachetului primit concatenat cu un irul secret. Apoi, maina int a cos s t a nexiunii trimite pachetul de rspuns, acceptnd numrul de secvent proa a a a pus de initiatorul conexiunii i continnd numrul de secvent astfel generat. s a a a Maina int nu s t a nregistreaz a, tabela de conexiuni, conexiunea astfel a nc n deschis. cazul unei conexiuni reale, la trimiterea urmtorului pachet de a In a ctre initiatorul conexiunii, maina int veric numrul de secvent folosind a s t a a a a aceeai functie de dispersie, dup care memoreaz conexiunea tabelul de cos a a n nexiuni. acest fel, o conexiune creat dintr-un atac syn ooding nu ocup In a a memorie, schimb o conexiune legitim se poate deschide. n a 10.3.1.5. Inchiderea fortat a conexiunii a Refuzul cererii de deschidere a unei conexiuni se face trimitnd inia iatorului un pachet TCP cu agul reset setat. t La primirea unui pachet care nu corespunde unei conexiuni deschise (adic pachetul este primit a ntr-un moment care conexiunea este n nchis a i pachetul nu are agul synchronize setat), modulul TCP trebuie s trimit s a a napoi un pachet cu agul reset setat. Ideea este ca, dac nodul curent a czut a a i a fost repornit, pierznd evidenta conexiunilor deschise, s informeze toti s a a partenerii de comunicatie care ncearc s continue comunicatia cu el c datele a a a despre comunicatie au fost pierdute. Un nod care a primit un pachet cu agul reset ca rspuns la un a pachet TCP pentru o conexiune trebuie s abandoneze fortat conexiunea. a Aplicatia ce utilizeaz acea conexiune este informat, printr-un cod de eroare, a a la urmtoarea operatie privind conexiunea. a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 325

Alte situatii care conduc la abandonarea unei conexiuni sunt: depirea unui numr de as a ncercri de trimitere de date fr a primi cona aa rmare; primirea unui pachet ICMP cu tipul destination unreachable. Timpul ct emittorul a a ncearc retrimiterea pachetelor neconrmate, a pn momentul care declar legtura czut, este de ordinul zecilor a a n n a a a a de secunde pn la 23 minute. Ca urmare, a a ntreruperea pe termen scurt a unui cablu de retea nu duce la ntreruperea conexiunilor TCP ce utilizau acel cablu. De asemenea, dac un nod sau o legtur a retelei IP cade, dar a a a rmne un drum alternativ a a ntre capetele conexiunii TCP, iar nivelul retea reface tabelele de dirijare pentru a folosi acel drum alternativ i acest lucru se s ampl sucient de repede pentru ca modulul TCP s nu declare conexiunea nt a a czut, atunci conexiunea TCP continu s functioneze normal, cu pachetele a a a a IP circulnd pe noua rut. a a Dac, pe o conexiune TCP deschis, toate datele vechi au fost trimise a a i conrmate, atunci nu se transmit pachete IP ct vreme nu sunt date utile s aa noi de transmis. Ca urmare, dac aplicatiile nu comunic vreme a a ndelungat a pe o conexiune TCP deschis, cderea legturii sau a unuia din capete nu este a a a detectat de cellalt capt dect momentul care acesta are de transmis a a a a n n date. Dac acel capt nu are de transmis date vreme a a ndelungat, de exemplu a cteva ore sau chiar zile, conexiunea rmne deschis din punctul de vedere al a a a a modulului TCP local. Pentru a evita o astfel de situatie, modulul TCP poate instruit via un apel fcntl() asupra socket-ului corespunztor conexiunii a s trimit din cnd cnd cte un pachet fr date utile, doar pentru a a a a n a a aa solicita o conrmare de la cellalt capt. Optiunea aceasta se numete keep a a s alive (rom. mentine viata ), dei mai degrab ar trebui numit testeaz c n s a a a a mai este viat. Utilizarea optiunii keep alive are i un dezavantaj: cderea n a s a temporar a retelei are anse mai mari s duc la abandonarea conexiunii. a s a a 10.3.1.6. Identicarea aplicatiei destinatie Pentru a identica aplicatia creia sunt destinate datele primite, a i conexiunile TCP sunt identicate printr-un cvadruplet format din adresele IP ale celor dou capete i porturile celor dou capete. Porturile sunt numere a s a n intervalul 165535 utilizate pentru a deosebi conexiunile stabilite ntre aceleai s adrese IP. Sistemul de operare ine evidenta conexiunilor deschise. Pentru ecare t conexiune, sistemul retine adresa IP local, portul local, adresa IP a celuilalt a capt i portul de la cellalt capt. De asemenea, sistemul retine aplicatia a s a a care a deschis conexiunea.

c 2008, Radu-Lucian Lupa s


326 10.3. Nivelul transport

La primirea unui pachet TCP, sistemul ia adresele surs i destinatie as din antetul IP i portul surs i destinatie din antetul TCP. Pe baza acestora s as sistemul identic conexiunea creia apartine pachetul. De aici sistemul a a i regsete pe de o parte informatiile necesare gestionrii conexiunii (zone tama s a pon, numere de secvent, etc) i pe de alt parte aplicatia creia sunt desa s a a i tinate datele. 10.3.1.7. Corespondenta ntre functiile socket() i actiunile modul s ului TCP Functionalitatea modulului TCP este oferit programului utilizator a prin intermediul functiilor sistem din familia socket(). Functiile socket() i s modul lor de utilizare ntr-o aplicatie au fost studiate 8.1. Aici vom arta n a legtura dintre apelarea de ctre o aplicatie a functiilor socket i actiunile a a s modulului TCP de expediere i de receptie a unor pachete. s 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() i listen() au, de asemenea, ca s efect doar completarea unor informatii structurile de date. Dac aplicatia n a a apelat direct listen() fr a apelat aa nainte bind(), sistemul (modulul TCP) aloc un port liber. i a La primirea unui pachet de deschidere conexiune (cu agul synchronize setat) pentru o adres i un numr de port pentru care se ateapt deas a s a schiderea unei conexiuni (a fost deja apelat listen()), modulul TCP execut schimbul de pachete de deschidere a conexiunii. Dup aceea, modulul a a TCP ateapt ca aplicatia s apeleze accept() pentru a-i putea semnaliza s a a deschiderea unei noi conexiuni. cazul care nu se ateapt deschiderea In n s a unei conexiuni, modulul TCP trimite un pachet cu agul reset. Dac, adresa local dat functiei bind(), s-a specicat constanta a n a a a INADDR ANY, este acceptat un pachet de deschidere de conexiune ce specic ca adres destinatie oricare dintre adresele nodului curent. Dac apelul bind() a a n s-a specicat o anumit adres a nodului curent, este acceptat deschiderea a a a conexiunii doar dac adresa destinatie a pachetului de deschidere este adresa a specicat apelul bind(). a n Pe partea de client, apelul connect() este cel care determin trima iterea unui pachet cu agul synchronize. Functia connect() ateapt e de s a schiderea complet a conexiunii (conrmarea pachetului syn plus un pachet a syn de la server), e o semnalizare de eroare (un pachet TCP cu agul reset sau un pachet ICMP). caz favorabil, functia connect() returneaz 0, In a n caz defavorabil semnalizeaz eroarea survenit. a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 327

10.3.1.8. Controlul uxului TCP are i rol de control al uxului, adic de-a s a ncetini emittorul a n cazul care receptorul nu este capabil s proceseze datele sucient de repede. n a O metod extrem de control al uxului este neconrmarea de ctre a a a receptor a octetilor ce nu pot procesati. Metoda aceasta are a dezavan ns tajul c determin emittorul s retrimit octetii respectivi, genernd trac a a a a a a inutil. Metoda utilizat de TCP este ca receptorul s semnalizeze emittoa a a rului, prin valoarea cmpului dimensiune fereastr din antetul TCP, numrul a a a de octeti pe care receptorul este capabil s-i receptioneze acel moment. a n Emittorul nu va trimite mai multi octeti dect dimensiunea ferestrei trimis a a a de receptor. Exist o singur exceptie: dac receptorul a semnalizat dimena a a siunea ferestrei 0, emittorul poate trimite un singur octet; aceasta se face a pentru cazul care receptorul a anuntat o fereastr de dimensiune 0 i apoi n a s a anuntat o fereastr mai mare dar pachetul ce anunta mrirea ferestrei s-a a a pierdut. Pe lng mecanismul sus-mentionat, emittorul TCP reduce debitul a a a de date emise i cazul care constat pierderi de pachete. Ideea este c s n n a a pachetele IP se pot pierde e ca urmare a erorilor la nivel zic, e ca urmare a congestiei nodurilor intermediare. Cu exceptia transmisiei radio, erorile la nivel zic sunt rare, astfel at pierderile de pachete IP se datoreaz nc a n majoritatea cazurilor congestiei nodurilor. 10.3.1.9. Stabilirea time-out-ului pentru retransmiterea pachetelor Aa cum am vzut, pachetele TCP neconrmate s a ntr-un anumit interval de timp sunt retransmise. Valoarea aleas a timpului dup care se face a a retransmiterea inuenteaz performantele transferului de date. O valoare prea a mic duce la repetarea inutil a unor pachete ce ajung la destinatie a a a ns ntrun timp mai lung i, ca urmare, la generarea unui trac inutil. O valoare prea s mare duce la detectarea cu arziere a pachetelor pierdute. nt Modulul TCP ncearc s estimeze durata de timp necesar unui a a a pachet emis s ajung la destinatie, s e procesat i s se a a a s a ntoarc i s se as a receptioneze conrmarea. Acest timp se numete timp dus- s ntors (engl. roundtrip time, RTT ). Timpul dus- ntors nu este x, ci depinde de perechea emittorreceptor considerat i de arcarea retelei momentul considerat. a as nc n Modulul TCP estimeaz statistic media i dispersia timpului dus- a s ntors pentru ecare conexiune deschis i xeaz timpul dup care se retrimit pachetele a s a a neconrmate la o valoare ceva mai mare dect media timpului dus- a ntors.

c 2008, Radu-Lucian Lupa s


328 10.3. Nivelul transport

10.3.1.10. Algoritmul lui Nagle i optimizarea numrului de pachete s a La primirea datelor de la programul aplicatie, prin apelul sistem send(), modulul TCP poate trimite imediat un pachet sau poate atepta; s ateptarea este util dac astfel se pot plasa mai multe date acelai pachet s a a n s IP. Algoritmul lui Nagle prevede c, la primirea unor date de la utilizator a prin send(): dac nu sunt date trimise i neconrmate, sau dac datele noi sunt sua s a cient de mari pentru a umple un pachet, datele se trimit imediat; altfel, modulul TCP ateapt pn la primirea conrmrii sau expirarea s a a a a timpului de retransmitere, i abia atunci trimite datele primite s ntre timp de la aplicatie. O alt optimizare const a arzia cteva fractiuni de secund a a n nt a a trimiterea conrmrii pentru un pachet TCP primit. Ideea este c, dac a a a aplicatia care receptioneaz datele din acel pachet are de trimis date ca rspuns a a la datele primite, datele ce constituie rspunsul s e trimise acelai pachet a a n s cu conrmarea datelor primite. 10.3.1.11. Trimiterea datelor speciale (out of band) TCP prevede un mecanism de transmitere, cadrul uxului normal n de date, a unor date cu un marcaj special. Mecanismul este ntructva echivaa lent cu a avea dou uxuri de date ataate conexiunii, unul pentru datele a s ,,obinuite i cellalt pentru date ,,speciale. Datele speciale poart denus s a a mirea, terminologia angloamerican, out of band data (OOB ). n a O posibil utilizare este urmtoarea: presupunem o aplicatie care a a transfer iere. Presupunem c emittorul trimite mai ai lungimea iea s a a nt s rului i apoi continutul. Dac utilizatorul lanseaz trimiterea unui ier mare s a a s (s zicem civa gigaocteti) i apoi se rzgndete i dorete s abandoneze a at s a a s s s a operatia, partea de emittor a aplicatiei nu poate semnaliza receptorului a n nici un fel abandonarea transmiterii. Aceasta deoarece octetii transmii sunt s interpretati de receptor ca ind continutul ierului. Aici intervin datele cu s marcajul special (out of band ): emittorul trimite continutul ierului ca date a s normale, iar o eventual semnalizare de abandonare a transferului este trimis a a ca date speciale. Datele speciale se consider c trebuie s e livrate ct mari repede a a a a cu putint aplicatiei destinatie. terminologia TCP, ele sunt denumite date a In urgente (engl. urgent data). Transmiterea lor se face astfel: datele speciale se plaseaz a ntr-un pachet TCP fr a precedate de date aa normale;

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 329

pachetul respectiv are agul urgent setat; cmpul pozitie date urgente contine dimensiunea datelor speciale rmase a a de transmis ( pachetul curent i urmtoarele). n s n a De principiu un pachet continnd date speciale va avea setat i agul a s push, care indic faptul c modulul TCP receptor ar trebui s livreze datele a a a ctre aplicatia destinatie ct mai repede. a a

10.3.2. Datagrame nesigure: UDP


Exist aplicatii care se descurc acceptabil cu datagrame nesigure. a a Pentru acestea, nivelul transport trebuie s rezolve doar problema gsirii a a aplicatiei creia este destinat datagrama. Aceast problem este rezolvat a i a a a a de protocolul UDP. Fiecrei aplicatii ce utilizeaz UDP i se acord, de ctre modulul a a a a UDP al sistemului de operare local, un port UDP . Un port UDP alocat unei aplicatii nu va acordat i altei aplicatii dect dup ce este eliberat de prima. s a a O datagram UDP poart ca adrese surs i destinatie perechi fora a as mate din cte o adres IP i un numr de port. Adresa IP este adresa nodului a a s a pe care ruleaz aplicatia surs, respectiv destinatie, iar portul este portul aloa a cat de sistem aplicatiei. O datagram UDP este construit dintr-un pachet IP cu identicaa a torul protocolului UDP protocol i cu zona de date utile continnd un antet n s a UDP i datele datagramei UDP. Antelul UDP contine portul surs i pors a s tul destinatie. Adresele IP surs i destinatie sunt cele plasate cmpurile as n a corespunztoare ale pachetului IP. a Deoarece o datagram UDP trebuie s e plasat a a a ntr-un singur pachet IP, dimensiunea datelor utile ale unei datagrame UDP este limitat de a dimensiunea maxim a pachetului IP. a Programul utilizator cere trimiterea unei datagrame UDP prin intermediul apelului sendto() sau sendmsg(). Programul trebuie s specice a adresa destinatie adresa IP i portul. Adresa surs este adresa asociat s a a socket-ului de pe care se emite pachetul. Dac nu s-a asociat prealabil o a n adres (prin apelul bind()), sistemul aloc automat un numr de port liber. a a a Deoarece, conform protocolului UDP, receptia datagramei trimise nu este conrmat nici un fel, functiile sendto() sau sendmsg() nu au cum a n s returneze programului apelant informatii despre livrarea pachetului. Dealta fel, ambele functii se termin (returneaz controlul apelantului) a a nainte ca pachetul s e efectiv livrat. a Functiile sistem recvfrom() i recvmsg() ateapt receptia unei s s a datagrame avnd ca adres destinatie adresa asociat socket-ului dat ca argua a a

c 2008, Radu-Lucian Lupa s


330 10.3. Nivelul transport

ment. Functia returneaz datele utile din datagram precum i adresa surs a a s a a datagramei.

10.4. Identicarea nodurilor dup nume: sistemul a DNS


Utilizarea adreselor IP direct de ctre utilizatorii umani este dicil a a deoarece: adresele IP sunt greu de inut minte de ctre oameni; t a adresele IP sunt legate de topologia retelei i se schimb odat cu aceasta; s a a spre exemplu, dac o rm schimb furnizorul de Internet folosit, adresele a a a statiilor rmei este probabil s se schimbe. a 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 retea printr-un nume uor de memorat de ctre om i care s e independent de topologia retelei. s a s a DNS este construit ca o baz de date ce cuprinde a nregistrri ce asoa ciaz unui nume o adres IP. Aceast baz de date este artit a a a a mp a ntre mai multe servere de nume, care pot interogate de oricine. O aplicatie care dorete s comunice i s foloseasc nume loc de adrese IP interogheaz s a s a a n a ai nite servere de nume, pn ce a adresa IP corespunztoare numelui nt s a a a a dat, dup care lucreaz cu adresa astfel obtinut. a a a Baza de date DNS este stocat distribuit (pe mai multe servere, pena tru a nu avea un server supraaglomerat) i redundant (exist mai multe servere s a capabile s rspund la o cerere dat). a a a a DNS este proiectat ideea c informatiile se citesc frecvent i se n a s modic rar. Cu ocazia modicrilor se admite s existe temporar incoerente a a a un utilizator s obtin informatia nou timp ce altul detine informatia a a a n veche.

10.4.1. Numele de domeniu


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

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 331

nu e minus. Literele mari sunt echivalente cu literele mici corespunztoare. a Componentele au asociat o ordine ierarhic. a a Scrierea text a unui nume de domeniu se face scriind componentele, n ncepnd cu cea mai de jos, din punct de vedere al ierarhiei, i terminnd cu a s a cea mai de sus. Dup ecare component se scrie un caracter punct (.). a a In particular, numele vid (format din zero componente) se scrie ,,. (un caracter punct). Exemplul 10.12: adresa nessie.cs.ubbcluj.ro. componentele sunt, In n ordine descresctoare ierarhic: a ro Romnia, a ubbcluj Universitatea Babe-Bolyai Cluj-Napoca, s cs Departamentul de Informatic (din engl. Computer Science), a nessie numele statiei. Aceast scriere este inspirat din scrierea adreselor potale, care a a s ncep cu numele destinatarului i se termin cu ara. s a t majoritatea cazurilor, aplicatiile accept specicarea numelor de In a domenii fr punctul nal. lipsa punctului nal, interpretarea este a aa In ns diferit. Anume, dac numele nu este terminat cu punct, aplicatia va a a ncerca s adauge la nume iruri de componente superioare ierarhic dintr-o list cona s a gurat de administratorul sistemului. Primul nume de domeniu, astfel cona struit, care exist DNS este considerat ca ind semnicatia numelui dat de a n utilizator. Exemplul 10.13: Presupunem c lista de cutare congurat de adminisa a a trator pentru un sistem contine, ordine, scs.ubbcluj.ro, cs.ubbcluj.ro n i ubbcluj.ro. O cutare pentru numele www va duce la cutarea numelui s a a www.scs.ubbcluj.ro. care va gsit i vor returnate informatiile dea s spre acest nume. O cutare pentru numele www.cs va duce la cutarea, a a n ordine, a numelor www.cs.scs.ubbcluj.ro., www.cs.cs.ubbcluj.ro. i s www.cs.ubbcluj.ro.; acesta din urm este gsit i cutarea este a a s a ncheiat. a Structurarea numelui mai multe componente servete la adminn s istrarea ierarhic a spatiului de nume. O organizatie care dobndete un a a s nume de domeniu poate crea i administra dup voie numele formate prin s a adugare de componente ierarhic inferioare. De exemplu, Universitatea Babea s Bolyai din Cluj-Napoca a obtinut numele ubbcluj.ro. . Crearea numelui nessie.cs.ubbcluj.ro. este decizia exclusiv a Universitii Babe-Bolyai. a at s O institutie care dorete un nume de domeniu trebuie s contacteze s a institutia care administreaz domeniul printe i s cear alocarea unui nume. a a s a a

c 2008, Radu-Lucian Lupa s


332 10.4. Identificarea nodurilor dupa nume: sistemul DNS

Alocarea numelui se pltete e o tax pltit o singur dat, e o tax a s a a a a a a anual. Institutia ce a obtinut numele este responsabil de a a ntretinerea unui server de nume (vezi 10.4.3 i 10.4.4) pentru domeniul ce i-a fost alocat. s Adesea rmele care ofer acces Internet ofer gratuit clientilor nume a a de domeniu ca subdomenii ale domeniului rmei. Exemplu ipotetic, rma XYNet, posesoarea domeniului xynet.example, ofer clientului ABC s.r.l. a domeniul abc.xynet.example. Din pcate, numele mainilor rmei ABC sunt a s legate acest caz de furnizorul de acces Internet, iar dac rma ABC s.r.l. va n a schimba furnizorul de Internet, va nevoit s-i schimbe numele de domeniu a as ale serverelor sale, ceea ce poate duce la pierderea clientilor ce nu a noul a nume al site-ului rmei. De remarcat c, dei organizarea ierarhic a numelor de domeniu a s a seamn cu organizarea numelor de iere i directoare, nu exist o restrictie a a s s a similar cu aceea c a a ntr-un director nu e permis s aib acelai nume un ier i a a s s s un subdirector. Anume, ca exemplu, numele ubbcluj.ro. i cs.ubbcluj.ro. s pot desemna simultan noduri retea. n

10.4.2. Structura logic a bazei de date DNS a


S ignorm deocamdat problemele legate de implementarea DNS. a a a DNS se prezint ca un tabel cu cinci coloane: numele de domeniu, a tipul, clasa, valoarea i termenul de valabilitate. Tipul i clasa se utilizeaz pens s a tru a putea pune DNS i alte informatii afar de adrese IP. Inregistrrile n s n a a corespunztoare adreselor IP au tipul A (de la address=adres) i clasa IN (de a a s la Internet). Cmpul valoare a unei a nregistrri cu tipul A i clasa IN contine a s adresa IP a nodului cu numele de domeniu dat. DNS permite cutarea unei a nregistrri pentru care s-au specicat a numele de domeniu, clasa i tipul. s Este permis s existe mai multe a nregistrri pentru acelai nume, a s clas i tip, dac au valori diferite. Cineva care obtine prin interogarea DNS as a mai multe adrese IP pentru un nume dat poate folosi oricare din adrese; acestea se presupune c sunt ale aceluiai calculator sau ale unor calculatoare ce a s furnizeaz servicii echivalente. a O list a tipurilor de a nregistrri DNS mai des utilizate este dat a a n tabelul 10.7. Remarcm mod deosebit tipul CNAME (nume canonic). O a n nregistrare avnd numele nume1, tipul CNAME i valoarea nume2 denete a s s nume1 ca pseudonim pentru nume2. acest caz, nume2 este considerat In numele canonic al acelui obiect. Dac pentru un nume exist o a a nregistrare CNAME, nu este permis s mai existe vreo alt a a nregistrare pentru acel nume.

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 333

Tip A AAAA CNAME PTR SOA

Valoare adres IPv4 a adres IPv6 a nume de domeniu nume de domeniu date de identicare ale informatiilor despre zon a nume de domeniu nume de domeniu i s prioritate

Observatii adresa corespunztoare numelui solicitat a adresa IPv6 corespunztoare numelui solicitat a ([RFC 3596, 2003]) numele canonic corespunztor numelui solicitat a numele canonic al nodului cu adresa IP solicitat, vezi 10.4.6 a vezi 10.4.5

NS MX

numele canonic al serverului de domeniu pentru zona avnd ca rdcin numele solicitat a a a a serverele de pot electronic pentru domeniul sa a solicitat, 11.1

Tabelul 10.7: Tipuri de nregistrri DNS mai des folosite a

Mai mult, numele canonic din cmpul valoare al unei a nregistrri CNAME nu a este permis s apar ca nume de domeniu alt a a n a nregistrare CNAME. O aplicatie care caut o a nregistrare de un anumit tip pentru un nume trebuie s caute i o a s nregistrare CNAME pentru acel nume. Dac gsete o a a s nregistrare CNAME, trebuie s caute o a nregistrare cu numele canonic gsit a i avnd tipul cutat initial. Valoarea astfel gsit trebuie utilizat ca i cnd s a a a a a s a ar fost gsit pentru numele original. a a

10.4.3. artirea domenii de autoritate Imp n


Multimea numelor de domeniu este artit zone. Pentru ecare mp a n zon exist unul sau mai multe servere de nume sau server DNS care detin a a toate nregistrrile corespunztoare numelor din acea zon. a a a Privim spatiul de nume ca un arbore care rdcina este domeniul n a a rdcin i ecare nume are ca printe numele obtinut din el prin aturarea a a as a nl celei mai din stnga componente. O zon este o submultime de nume care, a a mpreun cu legturile dintre ele, formeaz un arbore. De remarcat c rdcina a a a a a a zonei face parte din zon. a Un server care este responsabil de o zon trebuie s detin toate a a a nregistrrile corespunztoare numelor din zon. Faptul c un nume care ar a a a a

c 2008, Radu-Lucian Lupa s


334 10.4. Identificarea nodurilor dupa nume: sistemul DNS

apartine zonei nu gureaz tabela inut de acel server a n t a nseamn c numele a a respectiv nu exist. a Din motive de tolerant la pene, pentru ecare zon exist de regul a a a a cel putin dou servere responsabile. De principiu, tabelele despre o zon dat a a a ale serverelor responsabile de acea zon trebuie s e identice; pot exista a a a ns temporar incoerente ntre tabele cu ocazia modicrilor unor informatii. a Pe lng a a nregistrrile despre zonele pentru care este responsabil, un a server de nume trebuie s mai detin a a nregistrri care s permit regsirea a a a a serverelor de nume ale zonelor adiacente zona imediat superioar ierarhic a i zonele imediat subordonate, dac exist i a serverelor de nume pentru s a a s zona rdcin. Aceste a a a nregistrri se numesc glue records a nregistrri lipici a deoarece creaz legtura cu zonele a a nvecinate. Pentru numele rdcin al ecrei zone trebuie s existe urmtoarele a a a a a a nregistrri: a O nregistrare SOA (Start Of Authority), care contine nite date admin s istrative despre zon (vezi 10.4.5); a Una sau mai multe nregistrri NS (Name Server ) care contin numele a serverelor de nume responsabile de zon. De remarcat c serverele de a a nume nu este obligatoriu s e ele a nsele membre ale zonei. Inregistrrile NS ale rdcinii unei zone a a a mpreun cu a nregistrrile A a ale acelor nume sunt ,, nregistrrile lipici ce trebuie inute de un server cu a t privire la zonele vecine. Un server poate ine i alte t s nregistrri, afar de a n a nregistrrile din a zonele pentru care este responsabil i de s nregistrrile de legtur. a a a

10.4.4. Mecanismul de interogare a serverelor


Protocolul utilizat pentru interogarea serverelor de nume este descris [RFC 1035, 1987]. n Un server de nume ateapt cereri prin datagrame UDP trimise pe s a portul 53 i prin conexiuni TCP pe portul 53. Clientul trimite cererea ai s nt ca datagram UDP. Dac rspunsul este prea lung pentru a a a a ncape ntr-o datagram UDP atunci clientul repune a ntrebarea printr-o conexiune TCP. Interogarea cuprinde numele de domeniu cutat, tipul i clasa. Rsa s a punsul contine interogarea i un ir de s s nregistrri, artite trei categorii: a mp n nregistrri din zonele pentru care este responsabil, a nregistrri de legtur i a a as alte nregistrri. a Dac numele din interogare este dintr-o zon pentru care serverul a a este responsabil, serverul va rspunde cu a nregistrarea sau nregistrrile care a constituie rspunsul la interogare eventual va spune c nu exist a a a nregistrri. a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 335

Dac numele cutat este din afara zonei de responsabilitate, exist a a a dou comportamente posibile pentru server: a iterativ. Serverul rspunde cu a nregistrrile de legtur ctre zona cutat a a a a a a de client. Clientul urmeaz s interogheze alte servere. a a recursiv. Serverul interogheaz (el si) un server pentru zona vecin a nsu a mai apropiat de zona numelui cutat de client, eventual interogheaz a a a continuare servere din n nregistrrile returnate, pn ce a rspunsul a a a a a la ntrebarea clientului. Inregistrrile gsite sunt plasate categoria a a a n treia alte nregistrri. a Un server recursiv poate congurat s retin a a nregistrrile astfel a obtinute, astfel at la o interogare ulterioar s poat rspunde direct, nc a a a a fr a mai cuta un server responsabil pentru numele cerut de client. O aa a nregistrare astfel memorat este inut un timp cel mult egal cu tera t a menul de valabilitate al nregistrrii, dup care se consider c informatia a a a a s-ar putut modica i ca urmare s nregistrarea este aruncat. a Cutarea adresei corespunztoare unui nume se face de ctre proa a a gramul utilizator care are de contactat nodul cu numele dat. Interogarea DNS se face de regul prin intermediul unor functii de bibliotec, cum ar a a gethostbyname(). Aceste functii de bibliotec trebuie s gseasc un prim a a a a server de nume pe care s-l interogheze. Pentru aceasta, sistemul de opera n are exist un loc standardizat unde administratorul scrie adresele IP ale unuia a sau mai multor servere de nume. sistemele de tip Unix, locul este ieru In s /etc/resolv.conf, iar Windows este registry. n n

10.4.5. Sincronizarea serverelor pentru un domeniu


Protocolul de interogare DNS prevede posibilitatea de-a cere toate nregistrrile dintr-o anumit zon ([RFC 1035, 1987], [RFC 1995, 1996]). a a a Acest lucru se utilizeaz pentru a putea a ntretine uor mai multe servere re s sponsabile de o anumit zon. Toate a a nregistrrile privind zona se scriu a n baza de date a unuia dintre servere, denumit master . Celelalte servere, numite slave, sunt congurate s copieze periodic informatiile de pe master. a De notat c, a ntr-o astfel de conguratie, att serverul master ct i a a s serverele slave sunt considerate responsabile de zon; mecanismul este invizibil a pentru cineva care face o interogare DNS pentru un nume din zon. a Momentele la care un server slave copiaz datele de pe serverul master a depind de urmtorii parametri din a nregistrarea SOA a zonei: serial este numrul de ordine al datelor; administratorul zonei trebuie s a a creasc numrul serial oridecteori modic vreo a a a a nregistrare din zon. a

c 2008, Radu-Lucian Lupa s


336 10.4. Identificarea nodurilor dupa nume: sistemul DNS

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

10.4.6. Cutarea numelui dup IP a a


DNS nu permite cutarea unei a nregistrri dup valoare, deoarece a a gsirea serverului ce detine a nregistrarea ar necesita interogarea tuturor serverelor DNS din Internet. Pentru a putea rspunde la a ntrebri de tipul cine are o adres IP a a dat, se utilizeaz urmtorul mecanism: a a a Fiecrei adrese IP versiunea 4 i se asociaz un nume de domeniu a a astfel: se scrie adresa form zecimal cu punct, cu componentele orn a a n dine invers, i se adaug in-addr.arpa. . Astfel, adresei IP 193.0.225.34 a s a i corespunde numele 34.225.0.193.in-addr.arpa. . Pentru aceste nume se pun DNS n nregistrri cu tipul PTR i avnd a s a ca valoare numele de domeniu al nodului respectiv. Interogarea i adminiss trarea acestor nume de domeniu se fac ntocmai ca i pentru numele obinuite. s s De principiu, un subdomeniu din in-addr.arpa. corespunde unui bloc de adrese IP alocat unei institutii; subdomeniul corespunztor din dome a niul in-addr.arpa. este administrat de aceeai institutie. s situatia care alocarea blocurilor de adrese IP se face dup In n a schema CIDR, granitele blocurilor nu coincid cu granitele subdomeniilor lui in-addr.arpa. . De exemplu, dac rma X are alocat blocul de adrese a 193.226.40.128/28, ea nu va putea primi administrare n ntregul domeniu 40.226.193.in-addr.arpa., deoarece acesta contine i alte adrese decte cele s a ale rmei X. Administrarea numelor din in-addr.arpa. se face, acest caz, n conform [RFC 2317, 1998]: numele corespunztoare IP-urilor se denesc ca a pseudonime pentru nite nume din domenii create special pentru blocurile s alocate. Pentru exemplul dat, constructia este urmtoarea: a se creaz domeniul 128/28.40.226.193.in-addr.arpa., asociat blocului a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 337

193.226.40.128/28, a crui administrare este delegat rmei X; a a numele de domeniu de la 128.40.226.193.in-addr.arpa. pn la a a 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. pn la a a 143.128/28.40.226.193.in-addr.arpa. Pentru adresele IPv6 se folosete un mecanism asemntor, denit s a a [RFC 3596, 2003]. Anume, ecrei adrese IPv6 i se asociaz un nume n a a n domeniul ip6.arpa . Numele se construiete astfel: s Se iau grupuri de ctre 4 biti din adresa IPv6 i se scrie cifra hexa corea s spunztoare ca o component separat. a a a Ordinea ierarhic a componentelor astfel obtinute este aceea care coma n ponentele corespunztoare bitilor mai semnicativi din adresa IP sunt a superioare ierarhic componentelor corespunztoare bitilor mai putin sema nicativi. 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. Legturile directe a ntre nodurile IP


10.5.1. Rezolvarea adresei ARP
multe cazuri, ceea ce, din punctul de vedere al unei retele Internet In este o legtur direct, este de fapt o legtur a a a a a ntre dou noduri a ntr-o retea de alt tip, de exemplu o retea IEEE 802. O astfel de retea joac rolul nivelului a legturii de date contextul protocolului Internet i ca urmare o vom numi a n s aici retea de nivel inferior. Transmiterea unui pachet IP de la un nod A ctre un nod B, cadrul a n aceleiai retele de nivel inferior, se face astfel: s mai ai, nodul A determin adresa, cadrul retelei de nivel inferior nt a n (adic adresa MAC, pentru IEEE 802), a nodului B; a apoi A trimite pachetul IP nodului B, sub form de date utile cadrul a n unui pachet al retelei de nivel inferior, pachet destinat adresei gsite a anterior.

c 2008, Radu-Lucian Lupa s


338 10.5. Legaturile directe 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 functioneaz astfel: a A trimite reteaua de nivel inferior un pachet de difuziune (broadcast) n continnd adresa IP a lui B. Acest pachet este un fel de a ntrebare ,,cine are adresa IP cutare?. La un astfel de pachet rspunde doar nodul cu adresa IP specicat a a n pachet adic doar nodul B cazul de fat. Pachetul de rspuns este a n a a adresat direct lui A (prin adresa MAC a lui A recuperat din interogare) a i contine adresa IP i adresa MAC ale lui B. Pachetul are semnicatia s s ,,eu am adresa IP cutare i am adresa MAC cutare. s Dup determinarea corespondentei IP MAC prin mecanismul ARP, a nodul A pstreaz corespondenta memorie un anumit timp (de ordinul a a n minutelor), astfel at, dac nodurile A i B schimb mai multe pachete nc a s a n timp scurt, mecanismul ARP este invocat doar o singur dat. a a Dac nodul A primete mai multe rspunsuri ARP cu adrese MAC a s a diferite pentru aceeai adres IP, s a nseamn c exist mai multe noduri crora a a a a li s-a dat din greeal aceeai adres IP. aceast situatie A ar trebui s s a s a In a a semnalizeze situatia: printr-un pachet ICMP cu tipul destination unreachable destinat sursei pachetului destinat lui B, i s printr-un mesaj aat pe ecran i s s nregistrat ierele jurnal ale sisn s temului de operare. Mecanismul ARP este utilizat de asemnea la congurarea adresei unei interfete de retea ca vericare c adresa congurat este unic subretea. a a a n Mai exact, dac administratorul congureaz o anumit adres IP pentru o a a a a interfat, sistemul emite mai ai o cerere ARP pentru adresa ce urmeaz a a nt a setat. Dac cererea primete rspuns a a s a nseamn c mai exist un nod ce a a a are adresa respectiv, caz care sistemul tiprete un mesaj de avertisment a n a s i eventual refuz congurarea adresei respective. Dac cererea nu primete s a a s rspuns este probabil ca adresa s e unic i ca urmare sistemul o poate a a a s accepta ca adres proprie. a Informatiile despre asocierile IP MAC cunoscute nodului curent se determin, pe sistemele de tip UNIX, cu ajutorul comenzii arp. Trimiterea, a vedera testrii, a unei cereri ARP ctre o statie se poate face cu ajutorul n a a comenzii arping.

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 339

10.6. Congurarea automat a statiilor DHCP a


Sunt situatii care este util ca un nod s-i determine propria adres n as a IP, mpreun cu alti civa parametri (masca de retea, default gateway, servere a at DNS) prin interogri retea, loc ca aceti parametri s e stocati a n n s a ntr-o memorie nevolatil (disc sau memorie ash) a nodului. Situatii care acest a n lucru este util sunt: pentru un calculator fr harddisc; aa pentru un laptop, PDA sau alt dispozitiv mobil, care este mutat frecvent dintr-o retea alta, unde parametrii trebuie congurati de ecare dat n a functie de reteaua la care este conectat; n ntr-o retea mare care este de dorit ca parametrii de retea ai statiilor n s poat schimbati uor de pe un calculator central. a a s Exist trei protocoale ce au fost utilizate de-a lungul timpului pentru a determinarea parametrilor de retea: RARP, BOOTP i DHCP. Vom studia s mai detaliu protocolul DHCP, celelalte dou nemaiind utilizate prezent. n a n De notat a c protocolul DHCP este conceput ca o extensie a protocolului ns a BOOTP. Un nod care dorete s-i determine parametrii de retea (adresa IP s as proprie, masca de retea, default gateway-uri, numele propriu, adresele serverelor DNS) se numete client DHCP. Clientul DHCP trimite o cerere, la care rspunde s a un server DHCP stabilit pentru reteaua respectiv. Rspunsul contine parametrii a a solicitati. Vom studia continuare: n cum se transmit cererea i rspunsul DHCP, conditiile care mods a n n ulul IP al clientului nu este congurat i ca urmare nu este complet s functional; cum determin serverul parametri clientului. a Transmiterea cererii i a rspunsului DHCP. Presupunem continuare s a n c nodul client este conectat la o singur retea de tip IEEE 802. a a Cererea DHCP este transmis ca un pachet UDP. Adresa IP destinatie a a pachetului este adresa de broadcast local (255.255.255.255), iar portul a destinatie este portul standard pe care ascult serverul DHCP, anume portul a 67. Adresa IP surs este 0.0.0.0 (valoarea standard pentru adres necunosa a cut). Pachetul IP este a ncapsulat ntr-un pachet Ethernet destinat adresei de broadcast (FF:FF:FF:FF:FF:FF) i purtnd ca adres surs adresa plcii s a a a a de retea locale. Serverul DHCP trebuie s e aceeai subretea cu clientul a n s

c 2008, Radu-Lucian Lupa s


340 Configurarea automata a statiilor DHCP

(sau s existe aceeai subretea un server proxy DHCP care s preia cererea a n s a clientului i s-o retrimit serverului). s a Rspunsul DHCP este plasat la rndul lui a a ntr-un pachet UDP purtnd ca adres surs adresa serverului DHCP i ca adres destinatie adresa a a a s a alocat clientului DHCP, cu portul destinatie 68. Pachetul este a ncapsulat ntrun pachet Ethernet destinat adresei MAC a clientului. Asocierea IP MAC pentru transmiterea pachetului de ctre server nu se face prin mecanismul a ARP (care ar eua deoarece clientul DHCP nu poate a rspunde la cererea s nc a ARP) ci este setat de ctre serverul DHCP prin intermediul unui apel sistem. a a Determinarea parametrilor de ctre server. Pentru ecare subretea a pentru care actioneaz, un server DHCP trebuie s aib dou categorii de date: a a a a parametrii comuni tuturor nodurilor din subretea (masca de retea, gateway uri, servere DNS) i parametrii specici ecrui nod parte (adresa IP a s a n nodului). Parametrii comuni sunt setati de administratorul serverului DHCP ntr-un ier de congurare al serverului. s Pentru adresele IP ale nodurilor din retea exist dou strategii ce pot a a folosite: Alocare manual: Adresa ecrui nod este xat manual de ctre ada a a a ministratorul serverului DHCP. Nodul client este identicat prin adresa MAC sau prin nume. primul caz administratorul trebuie s scrie In a ntrun ier de congurare al serverului toate adresele MAC ale plcilor de s a retea i adresele IP corespunztoare. al doilea caz, pe serverul DHCP s a In se scriu numele statiilor i adresele corespunztoare iar pe ecare statie s a se seteaz numele statiei (a doua solutie nu este aplicabil pe calculaa a toare fr harddisc). aa Alocare dinamic: Serverul dispune de o multime de adrese pe care le a aloc nodurilor. Serverul pstreaz corespondenta dintre adresele MAC a a a ale clientilor i adresele IP ce le-au fost alocate. Adresele alocate pot s eliberate la cererea explicit a clientului sau la expirarea perioadei de a alocare (vezi mai jos). Adresele se atribuie de regul pe o durat determinat. Perioada de a a a alocare poate prelungit la solicitarea clientului printr-o cerere DHCP de a prelungire. Dup expirarea perioadei de alocare, clientul nu mai are voie s a a utilizeze adresa. Atribuirea adreselor pe perioad determinat are dou avantaje (fat a a a a de atribuirea pe durat nedeterminat): a a la alocarea dinamic a adreselor, dac clientul este scos din retea fr a a aa

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 341

a elibera explicit adresa, adresa este eliberat automat la expirarea pea rioadei de atribuire; dac este necesar modicarea strategiei de atribuire a adreselor se pot a a opera modicrile necesare congurarea serverului DHCP iar clientii a n vor primi noile adrese cu ocazia ncercrii de prelungire a atribuirii adrea sei.

10.7. Situatii speciale dirijarea pachetelor n


Vom studia paragraful de fat anumite procedee mai deosebite utin a lizate dirijarerea pachetelor. Aceste procedee se aplic n a ndeosebi retelele n interne ale unor institutii.

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 functionare ale unui nod IP ci, n functie de anumite reguli, ignor complet sau trimite pachete ICMP de eroare a pentru anumite pachete. Scopul unui ltru de pachete este de-a interzice anumite actiuni n retea, special pentru a contracara anumite n ncercri de spargere a unui a calculator. Congurarea unui ltru de pachete const stabilirea unui ansamblu a n de reguli de ltrare. Prezentm continuare posibilitile oferite de mecanisa n at mul iptables din sistemul Linux, cu mentiunea c facilitile de baz se regsesc a at a a toate sistemele. n O regul de ltrare este o pereche format dintr-o conditie i o actiune. a a s Regulile sunt grupate iruri numite lanturi. Exist trei lanturi predenite: n s a INPUT aplicat pachetelor destinate nodului curent, OUTPUT aplicat pachetelor generate de nodul curent, FORWARD aplicat pachetelor generate de alt nod i avnd ca destinatie s a alt nod (pentru care nodul curent actioneaz ca ruter). a Pentru ecare pachet ajuns la modulul IP, acesta aplic prima regul, din a a lantul corespunztor traseului pachetului, pentru care pachetul a ndeplinete s conditia specicat regul. Aplicarea regulii a n a nseamn executarea actiunii a specicate de regul. a Principalele actiuni ce pot specicate sunt: ACCEPT pachetul este livrat normal, DROP pachetul este ignorat (ca i cnd nu ar fost primit), s a

c 2008, Radu-Lucian Lupa s


342 10.7. Situatii speciale dirijarea pachetelor n

REJECT se trimite napoi un pachet semnalnd o eroare implicit a ICMP destination unreachable. Conditiile specicate ntr-o regul pot privi: a interfata prin care a intrat pachetul (cu exceptia lantului OUTPUT ), interfat prin care ar iei pachetul (cu exceptia lantului INPUT ), a s adresa IP surs i adresa IP destinatie (se poate specica i un prex de as s retea, conditia ind satisfcut de pachetele ce au adres a a a ncepnd cu a acel prex sau, eventual, pachetele ce au adres ce nu a ncepe cu acel prex), adresa MAC surs sau destinatie (pentru pachete ce intr, respectiv ies, a a prin interfete ce au conceptul de adres MAC), a protocolul (TCP, UDP, ICMP), portul surs sau destinatie (pentru protocoale care au notiunea de port), a tipul i subtipul ICMP (pentru pachete ICMP), s ag-uri ale diverselor protocoale, dimensiunea pachetului, starea conexiunii TCP creia apartine pachetul (vezi mai jos). a i Un nod (intermediar) prin care trec toate pachetele asociate unei conexiuni TCP poate, examinnd antetul TCP al ecrui pachet, s in a a a t a evident strii conexiunii. Ca urmare, nodul poate stabili dac un pachet a a a deschide o conexiune nou, apartine unei conexiuni deschise sau este un paa chet invalid. Este adevrat, acest lucru a nseamn o alcare a principiului separrii a nc a nivelelor: TCP este un protocol de nivel transport, deasupra nivelului retea. Ca urmare, modulele de retea nu ar trebui s interpreteze protocolul TCP (an a tetele TCP ar trebui considerate pur i simplu date utile). Ca urmare, nodurile s intermediare, din care nu actioneaz asupra pachetelor tranzit dect mod a n a ulul retea i modulele inferioare, nu ar trebui s ,, eleag protocolul TCP. s a nt a Regulile de ltrare se congureaz de ctre administratorul sistemua a lui. Ca i cazul parametrilor IP: s n Pe sistemele Linux, regulile aplicate de nucleul sistemului de operare se examineaz i se modic cu ajutorul unei comenzi iptables. a s a Regulile valabile la initializarea sistemului sunt congurate de script urile invocate la pornire, ind arcate dintr-un ier text. nc s

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 343

Pe sistemele Windows exist o interfat grac cu care se congureaz a a a a simultan regulile curente aplicate de nucleu i acelai timp acele reguli s n s sunt scrise registry pentru a arcate la repornirea sistemului. n nc Prin regulile de ltrare se urmresc de obicei urmtoarele lucruri: a a S e blocate pachetele pentru care se poate determina c adresa surs a a a a fost falsicat. Aici intr: a a - pachete ce intr pe interfat ctre Internet i au ca adres surs o a a a s a a adres din reteaua intern, a a - pachete ce au ca surs o adres de broadcast (clasa D) sau de clas a a a E, - pachete ce intr dinspre o anumit subretea au ca surs o adres ce a a a a nu face parte din subreteaua respectiv i nici din alte subretele as din directia respectiv. a S e interzise conexiunile din afara retelei locale ctre servicii care sunt a a oferite doar pentru reteaua local. De exemplu, accesul la un share a Windows este adesea de dorit s nu e posibil din afara retelei locale. a Pentru aceasta exist dou strategii: a a - se blocheaz pachetele destinate porturilor pe care ateapt conea s a xiuni serviciile respective; - se permit conexiunile ctre serviciile ce se doresc a accesibile din a afar (web, mail, eventual ssh), se permit conexiunile initiate din a interior i se interzic toate celelalte pachete. s Prima metod este mai simpl a necesit lista complet a serviciilor a a ns a a ce trebuie blocate. A doua metod este mai sigur, a a ntruct serviciile a sunt inaccesibile dac nu s-a specicat explicit contrariul, a este dicil a ns de permis intrarea pachetelor de rspuns pentru conexiunile initiate din a interior. Aceasta se ampl deoarece o conexiune initiat din interior nt a a are alocat un port local cu numr imprevizibil; ca urmare nu se poate a stabili o regul simpl pentru permiterea intrrii pachetelor destinate a a a acelui port. Solutia uzual este: a - pentru conexiun TCP, se permit pachetele asociate unei conexiuni deja deschise, se permit pachetele ctre exterior, se permit paa chetele destinate serviciilor publice i se interzic toate celelalte s pachete.

c 2008, Radu-Lucian Lupa s


344 10.7. Situatii speciale dirijarea pachetelor n

- pentru UDP, unde nu se poate ine evidenta unor conexiuni, se int terzic pachetele destinate unor servicii private, se permit pachetele spre exterior, se permit pachetele provenite de la serviciile ce se dorete a accesate exterior (serverele DNS sau NTP utilizate) s n i se interzic toate celelalte pachete. s S e interzise diferite alte pachete ,,dubioase, cum ar : a - pachete destinate adresei de broadcast a retelei locale sau adresei de broadcast generale (255.255.255.255), - pachete avnd ca adres surs sau destinatie adresa mainii locale a a a s (127.0.0.1) sau o adres privat. a a

Exemplul 10.15: Fie un ruter avnd spate o retea intern avnd adrese cu a n a a prexul 193.226.40.128/28. Ruterul are interfata eth0 cu adresa 193.0.225.20 ctre exterior i interfata eth1 cu adresa 193.226.40.129 ctre subreteaua loa s a cal. a Din reteaua local dorim s se poat deschide orice fel de conexiuni a a a TCP ctre exterior; din exterior dorim s nu se poat deschide alte conexiuni a a a dect ctre serverul http i https de pe 193.226.40.130 i ctre serverele ssh de a a s s a pe toate mainile din reteaua local. s a Din reteaua local dorim s putem accesa servicii DNS i NTP. Aces a a s tea le furnizm astfel: a pe ruter instalm un server DNS i un server NTP, accesibile din reteaua a s local; acestea furnizeaz serviciile respective pentru reteaua local a a a permitem cererile emise de serverele DNS i NTP de pe ruter, precum i s s rspunsurile corespunztoare. Cererile NTP provin de pe portul UDP a a 123 al ruterului i sunt adresate portului UDP 123 al unui nod din s exterior, iar cererile DNS sunt emise de pe un port UDP mai mare sau egal cu 1024 i sunt adresate portului DNS 53 de pe un nod extern. s Pentru diagnosticarea functionrii retelei vom mai permite trecerea a pachetelor ICMP ping, pong, destination unreachable i time exceeded. s Tracul interiorul retelei locale permitem fr restrictii. n l aa Blocm toate a ncercrile de spoong detectabile. a
# 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 Lupa s


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 Lupa s


346 10.7. Situatii speciale dirijarea pachetelor n

10.7.2. Retele private


O retea privat este o retea, conectat sau nu la Internet, a crei a a a calculatoare nu pot comunica direct cu calculatoarele din Internet. O utilizare tipic este cea prezentat gura 10.7. O institutie A a a n are o retea proprie de calculatoare. Din aceast retea proprie, o parte dintre a calculatoare s le numim publice trebuie s comunice nerestrictionat cu a a alte calculatoare din Internet, vreme ce restul calculatoarelor le vom n numi private este acceptabil s poat comunica doar cu alte calculatoare a a din reteaua 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

Reteaua institutiei B Reteaua institutiei A

Figura 10.7: Dou retele locale avnd ecare aceleai adrese private pentru o parte a a s din calculatoare.

Calculatoarele private nu este necesar s aib adrese unice Internet. a a n Adresele calculatoarelor private pot refolosite de ctre calculatoare private a din alte astfel de retele interne, de exemplu de cele ale institutiei B din gur. a De fapt, general, o adres trebuie s e unic doar multimea nodurilor n a a a n cu care un anumit nod ar putea dori s comunice. a situatia descris, este necesar ca adresele din Internet-ul ,,public In a s e unice, adresele din reteaua local s e unice i s nu existe suprapuneri a a a s a ntre adresele din Internet i adresele din reteaua local. Cerinta din urm s a a este determinat de cerinta ca nodurile cu adrese publice din reteaua proprie a s poat comunica i cu nodurile private i cu nodurile din Internet. a a s s Un pachet a crui adres destinatie este o adres privat este dirijat a a a a de ctre rutere astfel: a dac ruterul face parte dintr-o retea local care exist acea adres, a a n a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 347

pachetul este dirijat ctre unicul nod din reteaua local purtnd adresa a a a respectiv; a altfel, ruter-ul declar pachetul nelivrabil. a Aa cum am vzut 10.2.4.1, urmtoarele blocuri de adrese IP sunt s a n a alocate pentru astfel de utilizri retele private: 10.0.0.0/8, 172.16.0.0/12 i a n s 192.168.0.0/16. De cele mai multe ori, calculatoarelor private li se ofer posibiliti a at limitate de-a comunica cu calculatoare din Internet, prin intermediul unor mecanisme descrise paragrafele urmtoare. n a

10.7.3. Translatia adreselor (NAT)


Translatia adreselor este un mecanism prin care un ruter modic a adresa surs sau adresa destinatie a unor pachete. a 10.7.3.1. Translatia adresei surs a Presupunem c avem o retea privat i dorim ca de pe calculatoarele a as cu adrese private s se poat deschide conexiuni ctre calculatoare din Internet a a a spre exemplu, pentru a putea accesa pagini web. Fr vreun mecanism aa special, acest lucru nu este posibil, din urmtorul motiv: Un calculator C cu a adres privat care dorete s deschid o conexiune ctre un calculator S din a a s a a a Internet trimite un pachet IP avnd ca adres surs adresa proprie (privat) C, a a a a ca adres destinatie adresa serverului S (adres care este public) i continnd a a a s a o cerere de deschidere de conexiune TCP. Pachetul ajunge la destinatie, iar serverul S vom presupune c accept conexiunea. Serverul S trimite a a napoi un pachet IP avnd ca adres surs adresa proprie S i ca adres destinatie a a a s a adresa, privat, a clientului C. Deoarece adresa clientului nu este unic la a a nivelul Internet-ului (ci doar la nivelul propriei retele interne), pachetul de rspuns nu poate livrat. a Translatia adresei surs rezolv problema de mai sus modul ur a a n primul rnd, trebuie s existe un nod (ruter) G reteaua intern, mtor: In a a a n a avnd adres public i prin care s tranziteze toate pachetele de la C ctre a a as a a S (vezi g. 10.8). Un pachet provenind de la C ctre S este modicat de a ctre G, acesta punnd adresa proprie G locul adresei lui C. Serverul S a a n primete pachetul ca provenind de la G i ca urmare rspunde cu un pachet s s a (de acceptarea conexiunii) destinat lui G. Deoarece adresa lui G este public, a pachetul de rspuns ajunge la G. acel moment, G trebuie s determine fapa In a tul c pachetul este rspuns la o cerere adresat de C. Ca urmare,G modic a a a a adresa destinatie a pachetului, punnd adresa lui C locul propriei adrese, a n

c 2008, Radu-Lucian Lupa s


348 10.7. Situatii speciale dirijarea pachetelor n Internet S 193.226.40.130 193.0.225.20 G 192.168.0.1 C 192.168.0.123 Retea privat a

Figura 10.8: Retea privat pentru exemplicarea mecanismului de translatie a adre a sei surs a

dup care trimite mai departe pachetul ctre C acest lucru este acum posia a bil deoarece G este reteaua intern, i ca urmare adresa lui C indic singurul n a s a nod din reteaua proprie avnd acea adres. a a Pentru ca mecanismul de mai sus s e realizabil, este necesar ca a ruterul G s poat determina crui nod privat este destinat mod real a a a i n ecare pachet avnd ca adres destinatie adresa G. De regul, acest lucru a a a necesit identicarea ecrui pachet venit din Internet ca rspuns la un pachet a a a dinspre un nod privat spre Internet. Acest lucru este cel mai simplu de fcut pentru conexiunile TCP. a Pentru o conexiune TCP, ruterul G urmrete pachetele de deschidere a coa s nexiunii. La primirea unui pachet de deschiderea conexiunii dinspre un nod privat C, de pe un port pc , ctre un server S, ruterul G aloc un port TCP a a local pg (de preferint pg = pc , a dac pc nu este liber se poate aloca un pg a ns a diferit). Pachetul de deschidere a conexiunii este modicat de G astfel at nc adresa surs s e G i portul surs s e pg . G pstreaz asocierea (C, pc , pg ). a a s a a a a La sosirea unui pachet cu adresa destinatie G i portul destinatie pg , ruterul s G pune adresa destinatie C i portul destinatie pc ; la primirea unui pachet s cu adresa surs C i portul surs pc ruterul G pune adresa surs G i pora s a a s tul surs pg . Asocierea (C, pc , pg ) este pstrat pn la a a a a a nchiderea conexiunii, determinat prin schimbul corespunztor de pachete. a a Exemplul 10.16: Pentru reteaua ilustrat gura 10.8, presupunem c a n a clientul C avnd adresa (privat) 192.168.0.123 deschide o conexiune TCP a a de pe portul efemer 3456 ctre serverul S, avnd adresa 193.226.40.130, pe a a

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 349

Sens CS CS

Intre C i G s surs a destinatie 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 i S s surs a destinatie 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 i destinatie ale pachetelor schimbate as ntre clientul C i serverul S exemplul 10.16 s n

portul 80 (pentru a aduce o pagin web). Ruterul G avnd adresa public a a a 193.0.225.20 efectueaz translatia adresei surs. Adresele pachetelor transmise a a ntre C i S sunt date tabelul 10.8. s n Pentru alte protocoale, asocierea este mai dicil de fcut. Pentru a UDP, exist notiunea de port i ca urmare identicarea pachetelor primite a s de G pe baza portului destinatie pg este posibil. Este a dicil de deter a ns minat durata valabilitii asocierii (C, pc , pg ), at nturct nu exist pachete de a a ,, nchiderea conexiunii UDP. Se poate a utiliza un timp de expirare, de ns ordinul ctorva minute, de exemplu, care dac nu trec pachete asocierea a n a este desfcut. Pentru ICMP ping i pong exist un numr de identicare a a s a a care poate folosit cu acelai rol ca i un numr de port. Translatia adreselor s s a pentru astfel de pachete functioneaz a ntocmai ca i cazul UDP. s n Mecanismul de translatie a adresei surs, descris mai sus, permite a deschiderea unei conexiuni de la un nod cu adres privat ctre un nod public a a a din Internet. Nodul privat ,,are impresia c comunic direct cu serverul din a a Internet. Serverul din Internet ,,are impresia c comunic cu ruterul G pe a a portul alocat de acesta. Fat de utilizarea adreselor publice, utilizarea adreselor private i a a s translatiei adresei surs are dou limitri majore: a a a nu permite deschiderea conexiunilor sens invers, dinspre Internet ctre n a un nod privat; dac pe conexiune sunt trimise, sub forma de date utile pentru protocolul a TCP, informatii privind adresa IP i portul de pe client, vor constatate s incoerente ntre IP-ul i portul clientului vzute de ctre server (acess a a tea ind G i respectiv pg ) i IP-ul i portul clientului vzute de client s s s a (acestea ind C i respectiv pc ). s Cea de-a doua limitare poate eliminat dac G cunoate protocolul a a s de nivel aplicatie dintre C i S i modic datele despre conexiune schimbate s s a

c 2008, Radu-Lucian Lupa s


350 10.7. Situatii speciale dirijarea pachetelor n

ntre C i S. Prima limitare poate eliminat msura care este vorba de s a n a n conexiuni initiate urma unor negocieri pe o conexiune anterioar (de exem n a plu, conexiunile de date din protocolul FTP); pentru aceasta, G trebuie, din nou, s urmreasc comunicatia dintre C i S i s modice datele privitoare a a a s s a la adresa i portul pe care clientul ateapt conexiune dinspre server. s s a 10.7.3.2. Translatia adresei destinatie Presupunem c avem o retea privat, un server S cu adres privat, a a a a un ruter G situat reteaua proprie dar avnd adres public i un client C n a a as din Internet. Clientul C dorete s deschid o conexiune ctre serverul S. s a a a Desigur, comunicarea ,,normal nu este posibil deoarece contextul lui C a a n adresa privat a lui S nu este unic. a a Este posibil a ca adresa publicat ( DNS-ul public) pentru serverul ns a n S s e adresa lui G. acest caz, C deschide conexiunea ctre G. Printr-un a In a mecanism similar cu cel din paragraful precedent, G modic de data aceasta a adresa destinatie, punnd, locul propriei adrese, adresa privat a lui S. Pa a n a chetul de rspuns de la S este de asemenea modicat de ctre G, care pune a a ca adres surs adresa proprie G loc de S. Astfel, S ,,are impresia c a a n a comunic direct cu C, iar C ,,are impresia c comunic cu G. a a a Translatia adresei destinatie poate util urmtoarele situatii: a n a dac avem o singur adres public i dorim s avem mai multe servere a a a as a accesibile din exterior, servere ce nu pot functiona pe aceeai main. s s a Putem furniza astfel un server HTTP i un server SMTP care apar din s Internet ca ind la aceeai adres IP dar sunt gzduite realitate pe s a a n calculatoare distincte. Necesitatea utilizrea calculatoarelor distincte a pentru aceste servicii poate rezulta din motive de securitate sau din motive legate de performantele calculatoarelor utilizate. dac dorim totui acces din afar ctre calculatoarele din reteaua intern. a s a a a De exemplu, pe ecare calculator ruleaz un server SSH. Fiecrui cala a culator vom asocia un port pe ruterul G. O conexiune din afar, prin i a protocolul SSH, ctre un anumit port de pe G va redirectionat ctre a a a serverul SSH de pe calculatorul privat corespunztor. a pentru a distribui cererile ctre un server foarte solicitat. acest caz, a In serverul va avea ca adres publicat DNS adresa lui G, a vor exista a a n ns de fapt mai multe servere pe calculatoare S1 , S2 , . . . , Sn reteaua n intern. Conexiunile deschise din Internet ctre G vor redirectionate a a echilibrat ctre serverele S1 , S2 , . . . Sn . Mai exact, la deschiderea unei a conexiuni ctre G, G alege un server Sk ctre care redirectioneaz acea a a a conexiune. Orice pachet ulterior de pe acea conexiune va redirectionat

c 2008, Radu-Lucian Lupa s


Capitolul 10. Internetul 351

ctre Sk . Conexiuni noi pot redirectionte ctre alte servere. a a

10.7.4. Tunelarea
Prin tunelare se elege, general, transmiterea unor date aparnt n innd unui anumit protocol ca date utile cadrul unui protocol de acelai t a n s nivel sau de nivel superior. Ne vom ocupa cele ce urmeaz de tunelarea pachetelor IP, adic de n a a transmiterea pachetelor IP prin protocoale de nivel retea sau de nivel aplicatie. O situatie care este necesar tunelarea este aceea care exist n a n a dou retele private i se dorete ca nodurile din cele dou retele s poat a s s a a a comunica nerestrictionat ntre ele. De exemplu, avem o institutie care are dou sedii i are o retea privat in ecare sediu. Exist mai multe solutii a s a a pentru a realiza legtura: a Translatia adreselor realizeaz o legtur supus unor restrictii, studiate a a a a 10.7.3. n Unicarea zic a celor dou retele private, ducnd o legtur zic a a a a a a ntre ele (g. 10.9), ofer conectivitate complet, a ducerea unui cablu a a ns specual pentru aceasta poate extrem de costisitor.
Retea privat a Retea sediu A Retea sediu B

192.168.1.0/24

192.168.2.0/24

192.168.1.1

Legtur direct a a a (subretea 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 retelelor private printr-o legtur zic direct. a a a a

c 2008, Radu-Lucian Lupa s


352 10.7. Situatii speciale dirijarea pachetelor n

Tunelarea ofer conectivitate completa ca i legtura zic folosind lea s a a gturile la Internet existente. Constructia const realizarea unei coa a n nexiuni (de exemplu TCP) ntre dou rutere cu adrese publice din cele a dou retele interne (g. 10.10). Conexiunea dintre rutere este un ,,cablu a virtual ce preia rolul conexiunii zice.
Retea privat virtual (VPN) a a Retea sediu A Retea 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

Legtur virtual (tunel) a a a (subretea 192.168.0.0/24)

Internet

Figura 10.10: Unicarea retelelor private printr-un tunel

Tunelul se prezint fat de nivelul retea ca i cnd ar o legtur a a s a a a zic. Ca urmare, ecare capt al tunelului este o interfat de retea, avnd o a a a a adres IP i o masc de retea. a s a Pentru tunelarea propriu-zis exist mai multe protocoale. Unele a a dintre protocoale cripteaz pachetele tunelate; astfel de protocoale ofer secua a ritatea unui cablu direct bine pzit. a Un tunel poate avea mai mult de dou capete. Un tunel cu mai multe a capete se comport ca o subretea cu mai multe interfete conectate la ea de a exemplu o retea Ethernet.

c 2008, Radu-Lucian Lupa s


353

Capitolul 11

Aplicatii retele n

11.1. Pota electronic s a


Pota electronic servete la transferul de mesaje electronice s a s ntre utilizatori aati pe sisteme diferite. Protocolul a fost creat initial pentru mesaje text i a fost modicat ulterior pentru a permite transferul de iere s s cu continut arbitrar. Sistemul este conceput ideea c este acceptabil ca n a transferul mesajului s dureze cteva ore, pentru a putea functiona pe sisteme a a ce nu dispun de o legtur permanent retea. a a a n Pota electronic este una dintre primele aplicatii ale retelelor de s a calculatoare i a fost dezvoltat aceeai perioad cu Internet-ul. Ca urmare, s a n s a protocolul cuprinde prevederi create ideea transferului prin alte mijloace n dect o legtur prin protocol Internet. a a a Arhitectura sistemului cuprinde urmtoarele elemente (vezi g. 11.1): a Un proces de tip mail user agent (MUA), controlat de utilizatorul ce dorete expedierea mesajului. Acesta interactioneaz cu utilizatorul s a pentru a-l asista compunerea mesajului i stabilirea adresei destin s natarului. La nal, mail user agent-ul trimite mesajul unui proces de tip mail transfer agent (MTA). Transferul este initiat de MUA-ul uti lizatorului expeditor i utilizeaz protocolul SMTP ( 11.1.2.1). s a O serie de procese de tip mail transfer agent care trimit ecare urmtoa rului mesajul. Transferul este initiat de MTA-ul emittor i utilizeaz a s a tot protocolul SMTP. De ecare adres destinatie este rspunztor un mail transfer agent care a a a memoreaz mesajele destinate acelei adrese. Odat mesajul ajuns la a a

c 2008, Radu-Lucian Lupa s


354
Expeditor

11.1. Posta 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 potei electronice. Sgetile s a arat sensul care se initiaz comunicatia (de la client spre server), nu sensul care a n a n se transfer mesajul de pot electronic. a sa a

mail transfer agent-ul rspunztor de adresa destinatie, el este memoa a rat local (afar de cazul care are loc aici o rescriere de adres, vezi a n a 11.1.2.3). Utilizatorul destinatie citete mesajul cu ajutorul unui proces de tip mail s user agent. Acesta contacteaz mail transfer agent-ul responsabil de a adresa utilizatorului destinatie i recupereaz mesajul de la el. Trans s a ferul este initiat de MUA (adic de receptor). Exist dou protocoale a a a utilizate pentru transfer: POP3 i IMAP. s

11.1.1. Formatul mesajelor


Formatul mesajelor este denit [RFC 2822, 2001] (care n nlocuiete s ,,clasicul [RFC 822, 1982]). Fiecare mesaj ncepe cu un antet cuprinznd a adresa expeditorului, adresa destinatarului, data i alte cteva informatii. s a Dup antet urmeaz corpul mesajului, care contine mesajul propriu-zis. a a Intreg mesajul este de tip text ASCII. Rndurile sunt delimitate prin a secvente formate din caracterul carriage return (cod 13) urmat de line feed (cod 10). Rndurile nu au voie s aib lungime mai mare de 998 caractere i se a a a s recomand s nu aib mai mult de 78 de caractere. Caracterele de control (cu a a a codul ntre 0 i 31 sau egal cu 127) nu sunt permise, cu exceptia secventelor s carriage return line feed care separ rndurile. particular, caractere a a In carriage return izolate sau caractere line feed izolate nu sunt permise.

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 355

Pentru a permite transmiterea mesajelor prin linii seriale incapabile s transmit caractere de 8 biti (ci doar caractere de 7 biti), este recomandabil a a ca mesajele s nu contin caractere cu codul a a ntre 128 i 255. s Datorit unor protocoale folosite pentru transmiterea i pentru stoa s carea mesajelor, se impun urmtoarele restrictii suplimentare asupra continutului a mesajelor: nici un rnd s nu constea doar dintr-un caracter punct; a a un rnd ce urmeaz dup un rnd vid s nu a a a a a nceap cu cuvntul From. a a De mentionat c protocolul de comunicatie dintre dou mail trans a n a fer agent-uri sunt transferate informatii privind adresa expeditorului i adresa s destinatarului, independente de cele plasate antetul mesajului. Aceste n informatii formeaz aa-numitul plic (engl. envelope) al mesajului. Expedi a s torul i destinatarul date antetul mesajului sunt informatii pentru utilizas n torul uman; informatiile de pe plic sunt cele utilizate efectiv transmiterea n mesajului. 11.1.1.1. Antetul mesajelor Antetul mesajelor este constituit dintr-un numr de cmpuri, ecare a a cmp avnd un nume i o valoare. De principiu, ecare cmp este un rnd a a s a a separat continnd numele, caracterul dou puncte (:) i valoarea; secventa a a s carriage return urmat de line feed actioneaz ca separator a ntre cmpuri. Ana tentul se termin cu dou secvente carriage return line feed consecutive. a a Dac un cmp este prea lung pentru a a a ncape ntr-un rnd (standardul a recomand ca rndurile s nu depeasc 78 de caractere i interzice rndurile a a a as a s a mai lungi de 998 caractere), cmpul poate continuat pe rndurile urmtoare, a a a care trebuie s a nceap cu spatiu sau tab; spatiile i tab-urile de la a s nceputul rndurilor urmtoare se consider ca fcnd parte din cmp. a a a a a a Exemplul 11.1: Un posibil document (vezi mai jos explicatiile privind sem nicatiile diverselor cmpuri): a
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 Lupa s


356 11.1. Posta electronica

Principalele cmpuri ce pot apare a ntr-un mesaj sunt: To, Cc i Bcc reprezint adresele la care trebuie livrat mesajul. s a Adresele din cmpul To reprezint persoanele crora le este adresat a a a mesajul. Adresele din cmpul Cc reprezint persoane ce trebuie informate a a de trimiterea mesajului; de exemplu, corespondenta ocial n a ntre un angajat al unei rme i un client al rmei, angajatul va pune adresa s clientului cmpul To (deoarece acestuia este destinat mesajul), iar n a i cmpul Cc va pune adresa efului (care trebuie informat cu privire la n a s comunicatie). Adresele din cmpul Bcc reprezint pesoane crora le va livrat a a a mesajul, fr ca ceilalti destinatari s e informati despre aceasta. Cmpul aa a a Bcc este completat de ctre mail user agent i este eliminat de ctre a s a primul mail transfer agent de pe traseu. From, Sender i Reply-to reprezint adresa expeditorului i adresa la s a s care trebuie rspuns. a conditii obinuite, un mesaj contine doar cmpul From, reprezentnd In s a a adresa expeditorului mesajului i totodat adresa la care trebuie trimis s a un eventual rspuns. a Cmpul Sender este utilizat atunci cnd o persoan trimite un a a a mesaj numele altei persoane sau numele unei organizatii pe care o n n reprezint. Exist dou situatii practice care conduc la aceast situatie: a a a a Dac mesajul provine de la ef, dar este scris i trimis efectiv de secrea s s tara efului, atunci adresa efului este pus cmpul From, iar adresa s s a n a secretarei cmpul Sender. Dac o persoan trimite un mesaj nun a a a n mele unei organizatii, atunci adresa organizatiei va trecut cmpul a n a From i adresa persoanei ce scrie mesajul va plasat cmpul Sender. s a n a ne, cmpul Reply-to reprezint adresa la care trebuie trimis In a a un eventual rspuns la mesaj, dac aceast adres este diferit de adresa a a a a a din cmpul From. Dac destinatarul rspunde la un mesaj primit, utia a a liznd functionalitatea de reply a mail user agent-ului su, MUA-ul ofer a a a implicit, ca adres destinatie a mesajului de rspuns, adresa preluat din a a a cmpul Reply-to a mesajului original. lipsa unui cmp Reply-to, a In a MUA-ul ofer adresa din cmpul From. De asemenea, chiar prezenta a a n unui cmp Reply-to, este bine ca MUA-ul s ofere posibilitatea de-a a a trimite rspunsul la adresa din cmpul From. a a Un exemplu de utilizare a cmpului Reply-to este urmtorul: a a un mesaj adresat unei liste de discutii are ca From adresa autorului mesajului i ca To adresa listei. Mesajul se transmite centrului de s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 357

distributie al listei (un mail transfer agent), care retransmite mesajul ctre abonatii listei. Mesajul retransmis ctre abonati va avea adugat a a a un cmp Reply-to indicnd adresa listei. Astfel, mesajul primit de a a abonat are From autorul mesajului, To adresa listei i Reply-to tot s adresa listei. Abonatul listei va rspunde foarte uor pe adresa listei a s deoarece mail user agent-ul su va prelua adresa listei din Reply-to i a s o va pune ca adres destinatie mesajul de rspuns. Totui, e bine ca a n a s utilizatorul s nu foloseasc orbete aceast facilitate, a a s a ntruct uneori a rspunsul este bine s ajung doar la autorul mesajului original, nu la a a a toat lista. . . a Received i Return-path au ca rol diagnosticarea sistemului de livrare a s mesajelor. Fiecare mail transfer agent de pe traseul mesajului adaug a fata mesajului un cmp Received care scrie numele mainii sale, n a n s numele i adresa IP a mail transfer agent-ului care i-a trimis mesajul, s data i ora curent i emittorul i destinatarul mesajului conform cererii s as a s mail transfer agent-ului care transmite mesajul (cei indicati pe ,,plicul i mesajului, nu cei din cmpurile To sau From). Astfel, un mesaj a ncepe cu un ir de antete Received continnd, ordine invers, nodurile prin s a n a care a trecut mesajul. Ultimul mail transfer agent adaug un cmp Return-path, cona a innd adresa surs a mesajului conform plicului (datele furnizate de t a a MTA-ul surs). a Cmpurile Received i Return-path sunt utilizate pentru a rea s turna un mesaj la autorul su cazul care apar probleme la livrarea a n n mesajului. De notat diferenta ntre Reply-to, care reprezint destia natarul unui eventual rspuns dat de utilizator la mesaj, i Return-path, a s care reprezint destinatarul unui eventual mesaj de eroare. a Date reprezint data generrii mesajului. Este mod normal completat a a n de mail user agent-ul expeditorului mesajului. Are un format standard, cuprinznd data i ora local a expeditorului precum i indicativul fusua s a s lui orar pe care se gsete expeditorul. Formatul cuprinde: ziua din a s sptmn (prescurtare de trei litere din limba englez), un caracter a a a a a virgul, ziua din lun, luna (prescurtarea de trei litere din limba ena a glez), anul, ora, un caracter dou puncte, minutul, optional a un a a nc caracter dou puncte urmat de secund i nal indicativul fusului a a s n orar. Indicativul fusului orar cuprinde diferenta, ore i minute, n s ntre ora local i ora universal coordonat (UTC ; vezi 7.3.1 pentru dea s a a talii). Faptul c ora local este or de var sau nu apare indicativul a a a a n de fus orar. Romnia are timpul iernii ora local egal cu UTC+2h, a n a a

c 2008, Radu-Lucian Lupa s


358 11.1. Posta electronica

iar timpul verii UTC+3h. n Subject reprezint o scurt descriere (ct mai sugestiv) a mesajului, a a a a dat de autorul mesajului. a Message-ID, In-reply-to, Reference servesc la identicarea mesajelor. Valoarea cmpului Message-ID este un ir de caractere care identic a s a unic mesajul. El este construit de ctre mail user agent-ul expeditorului a pornind de la numele calculatorului, de la ora curent i de la nite a s s numere aleatoare, astfel at s e extrem de improbabil ca dou mesaje nc a a s aib acelai Message-ID. a a s cazul rspunsului la un mesaj prin functia reply a mail user In a agent-ului, mesajul de rspuns contine un cmp In-reply-to avnd ca a a a valoare Message-ID-ul mesajului la care se rspunde. Valoarea cmpului a a Reference se creaz din cmpurile Reference i Message-ID ale mesajua a s lui la care se rspunde. Cmpurile Reference i Message-ID pot a a s folosite de exemplu pentru aarea, de ctre mail user agent-ul destinatie, s a a succesiunilor de mesaje legate de o anumit problem i date ecare a as ca replic la precedentul. a Resent-from, Resent-sender, Resent-to, Resent-cc, Resent-bcc, Resent-date i Resent-msg-id sunt utilizate dac destinatarul unui s a mesaj dorete s retrimit mesajul, fr modicri, ctre altcineva. O s a a aa a a astfel de retrimitere se poate efectua printr-o comand bounce sau rea send a MUA-ului. acest caz, cmpurile din antetul mesajului original In a (inclusiv From, To sau Date) sunt pstrate, reectnd expeditorul, destia a natarii i data trimiterii mesajului original. Pentru informatiile privind s retransmiterea (adresa utilizatorului ce efectueaz retransmiterea, desa tinatarii mesajului retransmis, data retransmiterii, etc.), se utilizeaz a cmpurile Resent-. . . enumerate mai sus. Semnicatia ecruia dintre a a aceste cmpuri Resent-. . . este identic cu semnicatia cmpului fr a a a aa Resent- corespunztor, dar se refer la retransmitere, nu la mesajul a a original.

11.1.1.2. Extensii MIME Standardul original pentru mesaje de pot electronic (rfc 822) a sa a suferit o serie de extensii. Acestea sunt cunoscute sub numele Multipurpose Internet Mail Extension (MIME ) i sunt descrise [RFC 2045, 1996], s n [RFC 2046, 1996] i [RFC 2047, 1996]. s Extensiile MIME servesc principal pentru a putea transmite iere n s ataate unui mesaj de pot electronic. s sa a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 359

Un mesaj conform standardului MIME trebuie s aib un cmp a a a n antet cu numele Mime-version. Valoarea cmpului este versiunea standardua lui MIME conformitate cu care a fost creat mesajul. n 11.1.1.3. Ataarea ierelor i mesaje din mai multe prti s s s a Standardul MIME ofer posibilitatea atarii unor iere la un mesaj a sa s de pot electronic. Mecanismul se sa a ncadreaz a ntr-unul mai general, care permite formarea unui mesaj din mai multe prti. Un mesaj cu ataamente a s este dat exemplul 11.2. n Fiecare mesaj are antet un cmp, Content-type, care arat ce n a a tip de date contine i ce format sunt ele reprezentate. Exemple de tipuri s n sunt: text/plain (text normal), text/html (document HTML), image/jpeg (imagine format JPEG), etc. n De regul, partea din fata caracterului slash (/) arat tipul de docua a ment, iar partea a doua arat formatul (codicarea) utilizat. Astfel, o imaga a ine va avea Content-type de forma image/format; de exemplu, image/gif, image/jpeg, etc. Mesajele ce contin doar text obinuit trebuie s aib Content-type: s a a text/plain. Acesta este dealtfel tipul implicit cazul absentei cmpului n a Content-type. Mesajele cu ataamente au Content-type: multipart/mixed. s In general, un mesaj de tip multipart/subtip este format de fapt din mai multe ,,iere (oarecum ca un ier arhiv zip). s s a Intr-un mesaj multipart/mixed, de obicei una dintre prti este mesajul propriu-zis, iar ecare dintre celelalte a prti este cte un ier ataat. a a s s Fiecare parte a unui mesaj multipart are un antet i un corp, similar s cu un mesaj de sine stttor. Antetul prtii poate contine doar cmpuri aa a a specice MIME. Astfel, ecare parte are propriul tip, care poate particular n chiar un multipart. Cele mai importante subtipuri ale tipului multipart sunt: multipart/mixed nseamn pur i simplu mai multe componente puse a s mpreun, ca un ier arhiv. a s a multipart/alternative arat c prtile sunt variante echivalente ale a a a aceluiai document, formate diferite. s n Separarea prtilor unui mesaj de tip multipart se face printr-un a rnd ce contine un anumit text, ce nu apare nici una dintre prtile mesajua n a lui. Textul utilizat ca separator este plasat cmpul Content-type dup n a a multipart/subtip. Este scris sub forma (utilizabil i alte cmpuri i pena s n a s

c 2008, Radu-Lucian Lupa s


360 11.1. Posta electronica

tru alte informatii) unui ir boundary=ir situat dup irul multipart/subtip s s as i separat prin punct i virgul fat de aceasta. Exemplu: s s a a
Content-type: multipart/mixed; boundary="abcdxxxx"

Corpul mesajului multipart este separat dup cum urmeaz: a a fata primei prti precum i n a s ntre ecare dou prti consecutive se a a gsete un rnd format doar din textul de dup boundary= precedat de a s a a dou caractere minus (--); a dup ultima parte se gsete un rnd format doar din textul de dup a a s a a boundary=. Fiecare parte a unui mesaj de tip multipart/mixed are un cmp a Content-disposition [RFC 2183, 1997]. Valoarea acestui cmp arat ce a a trebuie s fac mail user agent-ul destinatie cu partea de mesaj care se a a n gsete acest antet. Valori posibile sunt: a s inline arat c mesajul sau partea de mesaj trebuie s e aat utia a a s a lizatorului; attachment arat c mesajul sau partea de mesaj nu trebuie aat a a s a dect la cerere. Un astfel de cmp poate avea continuare o informatie a a n suplimentar, filename=nume, arat numele sugerat pentru salvarea a a prtii respective. De notat c, din motive de securitate, mail user agenta a ul destinatie trebuie s nu salveze orbete partea de mesaj sub numele a s extras din mesaj, ci s cear mai ai permisiunea utilizatorului. caz a a nt In contrar, un adversar poate s trimit un ier avnd ataat un anumit a a s a s ier, cu care s suprascrie un ier al destinatarului. s a s

11.1.1.4. Codicarea corpului mesajului i a ataamentelor s s Standardul original al formatului mesajelor prevede c mesajele cona in doar text ASCII, cu utilizare restrictionat a caracterelor de control. Sint a gurele caractere de control (cele cu codurile ntre 0 i 31) admise sunt carriage s return (cod 13) i line feed (cod 10), utilizate pentru separarea rndurilor din s a mesaj. De asemenea, se recomand s nu se utilizeze caracterele cu coduri a a ntre 128 i 255, datorit imposibilitii transmisiei lor unele sisteme. s a at n Ca urmare, transmiterea unui ier arbitrar (inclusiv a unui text s ISO-8859) nu este posibil direct. a Transmiterea unui continut arbitrar se face printr-o recodicare a acestuia utiliznd doar caracterele permise corpul mesajului. Ca urmare, a n

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 361

mesajele apar, fat de mail transfer agent-uri, identice cu cele conforme fora matului original. Un mail user agent vechi, conform standardului original, nu va capabil s transmit un mesaj cu extensii MIME, iar cazul primirii unui a a n astfel de mesaj va aa l s ntr-un mod mai putin inteligibil pentru utilizator. Recodicarea este aplicat doar asupra corpului mesajului, nu i a s asupra antetului. Antetul contine un cmp, Content-transfer-encoding, a a crui valoare arat dac i ce recodicare s-a aplicat asupra continutului. a a a s Codicrile denite de [RFC 2045, 1996] sunt: a 7bit nseamn de fapt lipsa oricrei recodicri. plus, arat c a a a In a a mesajul nu contine dect caractere ASCII (cu codurile cuprinse a ntre 0 i 127). s 8bit arat c mesajul nu a fost recodicat, dar poate contine orice a a caractere (cu coduri ntre 0 i 255). s quoted-printables arat c ecare caracter de control i ecare cara a s acter egal (=) a fost recodicat ca o secvent de trei caractere, format a a dintr-un caracter egal (=) urmat de dou cifre hexa; acestea din urm a a reprezint codul caracterului original. De exemplu, caracterul egal se a recodic =3D, iar caracterul escape (cod 27) se recodic =1B. Restul a a caracterelor pot scrise direct sau pot recodicate ca i caracterele s speciale; de exemplu litera a poate scris a sau =61. a base64 corpul mesajului a fost recodicat baza 64 (vezi 7.4.2). n lipsa vreunui antet Content-transfer-encoding, se presupune In codicarea 7bit. Pentru un mesaj (sau o parte de mesaj) de tip multipart, mesajul (respectiv partea) nu este permis s e codicat dect 7bit sau 8bit, a a a ns ecare parte a unui multipart poate codicat independent de restul. a In mod curent, un mesaj cu ataamente are corpul mesajului codicat 7bit, s partea corespunztoare mesajului propriu-zis este codicat 7bit sau quoted-printables, a a iar prtile corespunztoare ataamentelor sunt codicate base64. a a s Exemplul 11.2: Un mesaj cu iere ataate este dat continuare: s s n
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 Lupa s


362 11.1. Posta 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


Aa cum am vzut, mesajele sunt transmise din aproape aproape, s a n ecare mesaj parcurgnd un lant de MTA-uri. Fiecare MTA, cu exceptia a ultimului, determin urmtorul MTA i-i paseaz mesajul. a a s a 11.1.2.1. Protocolul SMTP Protocolul utilizat pentru transmiterea mesajelor de la un MTA la urmtorul este protocolul Simple Mail Transfer Protocol SMTP . Este un a protocol de tip text, construit de obicei peste o conexiune TCP. Rolul de client SMTP are MTA-ul ce are mesajul de trimis mai l departe; rolul de server apartine MTA-ului ce primete mesajul. Clientul s deschide o conexiune TCP ctre portul 25 al serverului. a Dup deschiderea conexiunii, serverul trimite un mesaj continnd un a a cod de rspuns urmat de numele serverului. continuare, clientul trimite cte a In a o cerere, la care serverul rspunde cu un cod ce arat dac cererea a fost exea a a cutat cu succes sau nu, urmat de un text explicativ. Cererile sunt formate de a regul dintr-un cuvnt-cheie urmat de eventuali parametri i se a a s ncheie printro secvent carriage return line feed. Rspunsurile sunt formate dintr-un a a numr, transmis ca secvent de cifre, urmat de un text explicativ. Numrul a a a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 363

arat, a ntr-o form uor de procesat de ctre calculator, dac cererea s-a exea s a a cutat cu succes sau nu i cauza erorii. Textul cuprinde informatii suplimentare s pentru diagnosticarea manual a transmiterii mesajelor. a Clientul trebuie s a nceap printr-o cerere HELO care are ca parametru a numele mainii clientului. Prin aceasta clientul se identic fat de server. De s a a notat c nu exist posibilitatea autenticrii clientului de ctre server; serverul a a a a este nevoit s ,,ia de bun numele transmis de client. a Dup identicarea prin cererea HELO, clientul poate transmite serverua lui mai multe mesaje de pot electronic. sa a Transmiterea ecrui mesaj va a ncepe printr-o cerere MAIL FROM:, avnd ca parametru adresa expeditorului mesajului. Dup acceptarea de a a ctre server a comenzii MAIL FROM:, clientul va trimite una sau mai multe a cereri RCPT TO:; ecare cerere are ca parametru o adres destinatie. Fiecare a cerere RCPT TO: poate acceptat sau refuzat de ctre server independent a a a de celelalte. Serverul va transmite mesajul ecreia dintre adresele destinatie a nal, clientul trimite o cerere DATA fr parametrii. Serverul acceptate. In aa rspunde, mod normal cu un cod de succes. caz de succes, clientul trima n In ite corpul mesajului, ncheiat cu un rnd pe care se gsete doar caracterul a a s punct. Dup primirea corpului mesajului, serverul trimite a un rspuns. a nc a Mesajele primite de MTA sunt plasate ntr-o coad de ateptare, stoa s cat de obicei iere pe disc. MTA-ul receptor a n s ncearc imediat s trimit a a a mai departe ecare mesaj primit. Dac trimiterea mai departe nu este posia bil imediat, mesajul este pstrat coad i MTA-ul re a a n as ncearc periodic s-l a a trimit. Dup un numr de a a a ncercri euate sau cazul unei erori netempoa s n rare (de exemplu, dac nu exist adresa destinatie), MTA-ul abandoneaz i a a as ncearc trimiterea unui mesaj (e-mail) de eroare a napoi ctre expeditor. a Dac adresa destinatie este local, MTA-ul plaseaz mesajul ierul a a a n s corespunztor cutiei potale a destinatarului. a s De notat c trimiterea mai departe, livrarea local sau trimiterea a n a unui mesaj de eroare, MTA-ul utilizeaz doar informatiile de pe plic, adic a a parametrii comenzilor MAIL FROM: i RCPT TO:, i nu valorile cmpurilor From s s a sau To din antetul mesajului. Exemplul 11.3: Fie mesajul din exemplul 11.1. Transmiterea lui de la MTAul de pe cs.ubbcluj.ro ctre example.com decurge astfel (rndurile transa a mise de la cs.ubbcluj.ro la example.com sunt precedate de o sgeat la a a dreapta, iar rndurile transmise sens invers de o sgeat la stnga): a n a a a
220 example.com HELO nessie.cs.ubbcluj.ro

c 2008, Radu-Lucian Lupa s


364 11.1. Posta 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: Urmtorul mesaj ilustreaz utilizarea cmpurilor cazul a a a n unui mesaj transmis unei liste de utilizatori. Mesajul este reprodus aa cum s ajunge la un abonat al listei, avnd adresa test@example.com. Mesajul ilusa treaz, de asemenea, utilizarea cmpului Sender de ctre cineva care transmite a a a un mesaj numele altcuiva i a cmpului Cc. n s a
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 Lupa s


Capitolul 11. Aplicatii retele n 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 urmtorului MTA a Un MTA care are un mesaj de transmis ctre o anumit adres dea a a termin urmtorul MTA cruia trebuie s-i transmit mesajul astfel: a a a a a 1. MTA-ul caut mai ai, printre informatiile sale de congurare (vezi a nt 11.1.2.3), dac are vreo regul privind adresa destinatie. Dac MTAa a a ul este responsabil de adresa destinatie a mesajului, memoreaz lo l a cal. Dac MTA-ul este poart de intrare a mesajelor pentru MTA-urile a a din reteaua local, transmite mesajul ctre MTA-ul determinat conform a a congurrii. a 2. Dac nu exist informatii de congurare pentru adresa destinatie, MTAa a ul caut DNS o a n nregistrare cu tipul MX pentru numele de domeniu din adresa destinatie. O astfel de nregistrare contine una sau mai multe nume de servere SMTP capabile s preia mesajele destinate unei a adrese din acel domeniu. Dac gsete o astfel de a a s nregistrare, MTA-ul contacteaz una din mainile specicate a s n nregistrrile MX gsite i-i a a s transmite mesajul. 3. Dac nu exist nici a a nregistrri MX, MTA-ul contacteaz maina cu a a s numele de domeniu din adresa destinatie i-i transmite mesajul. s 4. Dac nu exist nici un server cu numele de domeniu din adresa destinatie, a a adic dac toate cele trei variante de mai sus eueaz, atunci MTA-ul a a s a declar c mesajul este nelivrabil i transmite a a s napoi spre emittor un a mesaj de eroare. Un MUA lucreaz, de obicei, mult mai simplu. Acest lucru duce la a simplicarea MUA-ului prin separarea clar a rolurilor: MUA-ul trebuie s a a ofere faciliti de editare i s prezinte utilizatorului o interfat prietenoas, at s a a a iar MTA-ul are toate complicatiile legate de livrarea mesajelor. Pentru trans miterea oricrui mesaj, un MUA contacteaz un acelai MTA, a crui adres a a s a a este congurat optiunile MUA-ului. Pe sistemele de tip UNIX, MUA-urile a n contacteaz implicit MTA-ul de pe maina local (localhost). a s a

c 2008, Radu-Lucian Lupa s


366 11.1. Posta electronica

11.1.2.3. Congurarea unui MTA De cele mai multe ori, un MTA este resposnabil de adresele utilizatorilor calculatoarelor dintr-o retea local. acest caz, MTA-ul memoreaz a In a local mesajele adresate acestor utilizatori i le ofer acestora posibilitatea de s a a le citi prin IMAP sau POP3. De asemenea, MTA-ul preia i transmite spre s exterior mesajele utilizatorilor, generate de MUA-urile ce ruleaz pe calculaa toarele din reteaua local. a conguratii mai complicate, un MTA actioneaz ca punct de treIn a cere pentru mesajele care pleac sau sosesc la un grup de MTA-uri dintr-o a retea local. El preia mesajele de la toate MTA-urile din reteaua local a a n scopul retransmiterii lor ctre exterior. De asemenea, preia mesajele din extea rior destinate tuturor adreselor din reteaua local i le retrimite MTA-urilor, as din reteaua local, responsabile. Un astfel de MTA este numit mail gateway. a Un mail gateway poate util ca unic ltru contra viruilor i spam-urilor pens s tru o ntreag retea local ( opozitie cu a congura ecare MTA din reteaua a a n local ca ltru). a Un MTA trebuie congurat cu privire la urmtoarele aspecte: a care sunt adresele locale i cum se livreaz mesajele destinate acestor s a adrese; care sunt mainile ( principiu, doar din reteaua local) de la care se s n a accept mesaje spre a trimise mai departe spre Internet; a ce transformri trebuie aplicate mesajelor. a Implicit, un MTA consider ca ind adrese locale acele adrese care a au numele de domeniu identic cu numele mainii pe care ruleaz MTA-ul i s a s avnd partea de utilizator identic cu un nume de utilizator al mainii locale. a a s Pe sistemele de operare de tip UNIX, un mesaj adresat unui utilizator local este adugat la nalul unui ier avnd ca nume numele utilizatorului i situat a s a s directorul /var/mail. n MTA-ul responsabil de o anumit adres destinatie poate congurat a a de ctre utilizatorul destinatar s execute anumite prelucrri asupra mesajului a a a primit. Pe sistemele de tip UNIX, aceast congurare se face prin directive a plasate ierele .forward i .procmailrc din directorul personal al utilizan s s torului. Fiierul .forward contine un ir de adrese la care trebuie retrimis s s mesajul loc s e livrat local /var/mail/user. n a n Fiierul .procmailrc cuprinde instructiuni mai complexe de proces sare a mesajelor primite: functie de aparitia unor iruri, descrise prin exn s presii regulare, mesajul primit, mesajul poate plasat iere specicate n n s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 367

.procmailrc sau poate pasat unor comenzi care s-l proceseze. n a Pentru cazuri mai complicate, un MTA poate congurat de ctre a administrator s execute lucruri mai complicate: a Este posibil s se congureze adrese de pot, situate domeniul numelui a sa n mainii locale, care s e considerate valide chiar dac nu exist utilizas a a a tori cu acele nume. Pentru ecare astfel de adres trebuie denit o list a a a de adrese, de regul locale, la care se va distribui ecare mesaj primit. a Ca exemplu, adresa root@cs.ubbcluj.ro este congurat acest fel; a n un mesaj trimis la aceast adres nu este plasat /var/mail/root ci a a n este retrimis utilizatorilor (congurati ierul /etc/aliases) care se n s ocup de administrarea sistemului. a Un MTA poate congurat s se considere responsabil de mai multe a domenii, ale cror nume nu au nimic comun cu numele mainii MTA-ului. a s De exemplu, se poate congura MTA-ul de pe nessie.cs.ubbcluj.ro s accepte mesajele destinate lui ion@example.com i s le livreze utia s a lizatorului local gheorghe. Desigur, pentru ca un mesaj destinat lui ion@example.com s poat livrat, mai trebuie ca mesajul s ajung a a a a pn la nessie.cs.ubbcluj.ro. Pentru aceasta, trebuie ca MUA-ul exa a peditor sau un MTA de pe traseu s determine ca urmtor MTA maina a a s nessie.cs.ubbcluj.ro, lucru care se ampl dac DNS se pune nt a a n o nregistrare MX pentru numele de domeniu example.com indicnd a ctre nessie.cs.ubbcluj.ro. Un astfel de mecanism este utilizat a n mod curent de furnizorii de servicii Internet pentru a gzdui pota eleca s tronic a unor clienti care au nume propriu de domeniu dar nu detin a servere de pot electronic care s preia pota adresat adreselor din sa a a s a domeniul respectiv. Dac utilizatorii expediaz mesaje de pe mai multe maini dintr-o retea a a s local, nu este de dorit ca numele mainii interne s apar adresa de a s a a n pot electronic. De exemplu, dac un acelai utilizator are cont pe sa a a s mai multe maini, nu este de dorit ca adresa expeditorului s depind s a a de maina de pe care utilizatorul scrie efectiv mesajul. De exemplu, nu s este de dorit ca dac scrie un mesaj pe maina linux.scs.ubbcluj.ro a s mesajul s apar avnd adresa surs From: ion@linux.scs.ubbcluj.ro, a a a a iar dac scrie de pe freebsd.scs.ubbcluj.ro s apar cu adresa a l a a From: ion@freebsd.scs.ubbcluj.ro. Pentru aceasta, MTA-ul care se ocup de livrarea spre exterior a mesajelor generate reteaua ina n tern va schimba, att antetul mesajului (valoarea cmpului From) a a n a ct i pe ,,plic (valoarea parametrului comenzii SMTP MAIL FROM:), a s adresa expeditorului, eliminnd numele mainii locale i pstrnd doar a s s a a

c 2008, Radu-Lucian Lupa s


368 11.1. Posta electronica

restul componentelor numelui de domeniu. exemplul de mai sus, din In adres rmne doar ion@scs.ubbcluj.ro. Modicarea poate mai a a a complex: astfel, dac nessie.cs.ubbcluj.ro este congurat s aca a a cepte mesajele destinate lui ion@example.com i s le livreze utilizatorus a lui local gheorghe, este probabil de dorit ca pentru mesajele compuse de utilizatorul local gheorghe s fac transformarea adresei surs din a a a gheorghe@nessie.cs.ubbcluj.ro ion@example.com. n Un alt element important de congurare privete decizia unui MTA de a s accepta sau nu spre livrare un mesaj. mod normal, un MTA trebuie s In a accepte mesajele generate de calculatoarele din reteaua local i mesajele as destinate adreselor locale, dar s nu accepte trimiterea mai departe a a mesajelor provenite din exterior i destinate exterior. Un MTA care s n accept spre livrare orice mesaje este numit mod curent open relay. a n Un open relay este privit de obicei ca un risc pentru securitate, deoarece este adesea utilizat de utilizatori ru-voitori pentru a trimite mesaje a ascunzndu-i identitatea. a s

11.1.3. Securitatea potei electronice s


Principalele probleme privind securitatea sunt: spoong-ul falsicarea adresei surs (From sau Sender); a spam-urile mesaje, de obicei publicitare, trimise unui numr mare de a persoane i fr a legate de informatii pe care destinatarii le-ar dori; s aa viruii programe executabile sau documente, ataate unui mesaj elecs s tronic, a cror executie sau respectiv vizualizare duce la trimiterea de a mesaje electronice ctre alti destinatari. a Falsicarea adresei surs este extrem de simpl deoarece, transa a n miterea obinuit a mesajelor, nu este luat nici o msur de autenticare a s a a a a expeditorului. Falsicarea adresei surs (spoong) poate depistat anumite a a n cazuri examinnd cmpurile Received din antetul mesajului i vericnd dac a a s a a exist neconcordante a ntre numele declarat prin HELO a unui client SMTP i adresa sa IP sau neconcordante s ntre numele primului MTA i partea de s domeniu din adresa expeditorului. De notat c anumite neconcordante pot a legitime, cazul care csutele potale dintr-un domeniu sunt inute de un n n a s t calculator al crui nume nu face parte din acel domeniu (vezi 11.1.2.3). a O metod mai ecient pentru depistarea falsurilor este utilizarea a a semnturii electronice. Exist dou standarde de semntur electronic utia a a a a a lizate, OpenPGP [RFC 2440, 2007, RFC 3156, 2001] i S-MIME [S/MIME, ]. s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 369

Vericarea semnturii necesit a ca destinatarul s dispun de cheia public a a ns a a a autentic a expeditorului. Pn la generalizarea utilizrii mesajelor semnate, a a a a sistemul de pot electronic trebuie s asigure livrarea mesajelor nesemnate sa a a i consecint cu risc de a falsicate. s n a Uurinta falsicrii adresei surs i uurinta pstrrii anonimatului s a a s s a a autorului unui mesaj a dus la proliferarea excrocheriilor. Adesea excrocheriile constau trimiterea de mesaje unui numr mare de utilizatori (acest fapt n a sine este spam) speranta de-a gsi printre acetia unii care s se lase n n a s a pcliti. a a Spam-urile duneaz deoarece consum mod inutil timpul destia a a n plus, exist riscul ca un mesaj legitim, ,, natarului. In a ngropat ntre multe spam-uri, s e ters din greeal. a s s a Exist detectoare automate de spam-uri, bazate pe diferite metode a din domeniul inteligentei articiale. Astfel de detectoare se instaleaz pe a MTA-uri i resping sau marcheaz prin antete speciale mesajele detectate ca s a spam-uri. Un MTA care detecteaz i respinge sau marcheaz spam-urile se as a numete ltru anti-spam. s De mentionat ltrele anti-spam nu pot fcute 100% sigure deoarece a nu exist un criteriu clar de diferentiere. Ca urmare, orice ltru anti-spam va a lsa s treac un anumit numr de spam-uri i exist i riscul de-a respinge a a a a s as mesaje legitime. Majoritatea furnizorilor de servicii Internet nu permit, prin contract, clientilor s trimit spam-uri i depun eforturi pentru depistarea i penalizarea a a s s acest scop, ei primesc sesizri i autorilor. In a s ntretin liste cu adresele de la care provin spam-urile (liste negre blacklist). Trimiterea spam-urilor necesit recoltarea, de ctre autorul spama a urilor, a unui numr mare de adrese valide de pot electronic. Acest lucru a sa a se realizeaz cel mai uor prin cutarea, paginile web, a tot ceea ce arat a s a n a a adres de pot electronic. Contramsura la aceast recoltare este scrierea a sa a a a adreselor, din paginile web, doar forme dicil de procesat automat de n exemplu, ca imagine ( ntr-un ier jpeg, gif sau png). s Termenul de virus poate desemna mai multe lucruri, nrudite dar dis general, un virus informatic este un fragment de program a crui tincte. In a executie duce la inserarea unor cpii ale sale alte programe de pe calcula o n torul pe care se execut virusul. Impropriu, prin virus se mai desemneaz un a a fragment, inserat ntr-un program util, care execut actiuni nocive utilizatorua lui contul cruia se execut acel program. Denumirea corect pentru un n a a a astfel de program este aceea de cal troian. Denumirea de virus poate dat, a corect, doar fragmentelor de program capabile s se reproduc (s-i insereze a a as

c 2008, Radu-Lucian Lupa s


370 11.1. Posta electronica

cpii alte programe). o n contextul potei electronice, un virus este un fragment dintr-un In s program plasat ca ier ataat la un mesaj electronic. Virusul se poate repros s duce e prin mijloace independente de pota electronic, e prin expedierea, s a ctre alti utilizatori, a unor cpii ale mesajului. acest al doilea caz, virusul a o In utilizeaz, de obicei, adrese extrase din lista, inut de MUA, a adreselor a t a partenerilor de corespondent ai utilizatorului care primete mesajul virusat. a s Indiferent de forma de propagare (infectarea ierelor locale sau transs miterea de mesaje spre alti utilizatori), pentru a-i realiza scopul, un virus s trebuie s ajung s determine executia, cu drepturile utilizatorului victim, a a a a a unei secvente de instructiuni aleas de autorul virusului. Acest lucru se poate a ampla dou moduri: nt n a Virusul se gsete a s ntr-un program executabil, pe care utilizatorul exel cut. a Virusul este un document astfel construit at, exploatnd o eroare din nc a programul utilizat pentru vizualizarea documentului, s determine proa gramul de vizualizare s execute actiunea dorit de autorul virusului. a a Pentru a pcli destinatarul i a-l determina s execute sau s vizuala a s a a izeze ierul atat, corpul mesajului este construit astfel at s ctige s s nc a as ncrederea utilizatorului. Astfel, mesajul este adesea construit ca i cnd ar proveni de s a la administratorul de sistem sau de la un prieten al destinatarului. Metodele de prevenire a viruilor de pot electronic sunt aceleai s sa a s ca i metodele de prevenire a viruilor general. Pentru programele exes s n cutabile, dac utilizatorul are a ncredere autorul declarat al programului (de n exemplu, autorul este o rm de soft de a ncredere), atunci programul poate semnat electronic, iar utilizatorul poate verica aceast semntur pentru a se a a a convinge de autenticitatea programului. Pentru programe provenite din surse ce nu sunt de ncredere, executia lor se poate face ntr-un mediu controlat, de exemplu dintr-un cont separat, cu drepturi minime, sau prin intermediul unui interpretor care s nu execute instructiunile potential nocive. Aceast a a din urm abordare este utilizat de applet-urile Java. a a Pe lng aceste metode de prevenire, exist cteva actiuni care micoa a a a s reaz riscul sau consecintele executiei unui virus. Una dintre ele este reducerea a la minimul necesar a lucrului din cont de administrator. Alt msur prea a a ventiv este aceea de a nu vizualiza sau executa ierele ataate unui mesaj a s s suspect; pentru aceasta, este bine ca expeditorul unui mesaj s nu trimit a a niciodat un mesaj numai cu iere ataate, ci s scrie un mic text explicativ, a s s a care s-i permit destinatarului s identice autorul i scopul ierelor ataate. a a a s s s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 371

11.2. Sesiuni interactive la distant a


O sesiune interactiv local a unui utilizator (vezi g. 11.2) presupune a a c tastatura, ecranul i eventual alte dispozitive cu ajutorul crora utilizatorul a s a interactioneaz cu sistemul de calcul (mouse, difuzoare, etc.) sunt conectate a direct la calculatorul pe care se desfoar sesiunea utilizatorului. Conectarea as a este realizat printr-o interfat hardware de conectare a dispozitivelor pera a iferice (RS232, PS/2, VGA, USB, DVI), care permite legturi pe distante de a cel mult cteva zeci de metri. Un dispozitiv (tastatur, ecran, etc.) este coneca a tat la un singur calculator, mutarea lui de la un calculator la altul putndu-se a face e prin mutarea zic a conectorului, e prin comutatoare speciale (KVM a switch).

login bash S. O. driver terminal

hard Terminal zic

Figura 11.2: Componentele implicate ntr-o sesiune interactiv local a a

general ne gndim c pe un astfel de sistem lucreaz un singur utiIn a a a lizator la un moment dat. Totui, exist i posibilitatea de-a conecta mai multe s as ansambluri tastaturecran la un acelai calculator, felul acesta lucrnd sia s n a multan mai multi utilizatori. Acest mecanism s-a utilizat masiv anii 1970, n sistemele ind numite cu time-sharig. PC-urile au repetat, pn la un punct, a a istoria calculatoarelor mari: au nceput ca sisteme monoutilizator, monotasking (sistemul DOS), au continuat cu un multitasking primitiv, bazat pe solutii ad-hoc (deturnarea ntreruperilor DOS, sistemul Windows pn la versiun a a nile 3.x), sisteme multitasking fr protectie aa ntre utilizatori (Windows 9x i s ME) i nal sisteme multitasking propriu-zise (Windows NT/2000/XP i s n s sistemele de tip UNIX Linux i porturile FreeBSD, Solaris, etc). s Linux (prin mecanismul consolelor virtuale) i Windows XP (prin s mecanismul switch user ) permit deschiderea simultan a mai multor sesiuni a locale de la acelai ansamblu tastaturecran, pentru acelai utilizator sau s a s pentru utilizatori distincti. O singur sesiune poate activ la un moment a a dat, celelalte ind ,, nghetate. Sistemul permite comutarea ntre sesiuni.

c 2008, Radu-Lucian Lupa s


372 11.2. Sesiuni interactive la distanta

cazul unei sesiuni la distant, locul unui terminal, conectat In a n printr-o interfat specializat la calculatorul pe care se desfoar sesiunea, a a as a se utilizeaz un calculator, conectat prin retea la calculatorul pe care se a desfoar sesiunea. felul acesta, un utilizator aat fata unui calcuas a In n lator conectat la Internet poate deschide o sesiune la distant ctre orice alt a a calculator din Internet (bine eles, cu conditia s aib un cont acolo). Prinnt a a cipial, numrul de sesiuni deschise simultan ctre un calculator este limitat a a doar de resursele calculatorului (memorie i vitez de procesare). s a Deschiderea unei sesiuni prin mecanismul de sesiune la distant se a poate face i ctre calculatorul local. Acest mecanism poate utilizat pentru s a deschiderea unei sesiuni ca alt utilizator, fr a a a nchide prima sesiune.
server login bash telnet S. O. driver pseudoterminal hard client telnet S. O. driver terminal

hard

Calculator server

Retea

Calculator client

Terminal zic

Figura 11.3: Componentele implicate ntr-o sesiune interactiv la distant. a a

Sistemul pentru deschiderea sesiunilor la distant (vezi g. 11.3) a const din dou componente majore: a a Pe sistemul la care este conectat zic utilizatorul ruleaz o aplicatie care a trimite prin retea ceea ce utilizatorul introduce de la tastatur i aeaz as s a pe ecran ceea ce trimite sistemul de la distant. Aarea se poate face pe a s tot ecranul sau ntr-o fereastr. Aceast aplicatie deschide mod activ a a n conexiunea la deschiderea sesiunii, motiv pentru care este un client. Pe sistemul de la distant, pe care are loc sesiunea, ruleaz o aplicatie a a care primete prin retea datele trimise de aplicatia client i le livreaz s s a proceselor ce ruleaz cadrul sesiunii. De asemenea, preia datele de a n ieire ale acestor procese datele care cazul unei sesiuni locale s-ar s n aa pe ecran i le trimite prin retea clientului. Aceast aplicatie este s s a lansat la pornirea sistemului i ateapt conexiuni ind acest sens a s s a n un server. La conectarea unui client, aplicatia server autentic clientul a dup care ( cazul unei autenticri cu succes) lanseaz procesele care a n a a sunt lansate mod normal la deschiderea unei sesiuni. De exemplu, n

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 373

cazul unui sistem de tip UNIX, serverul lanseaz executie un shell n a n rulnd contul utilizatorului. a n Pentru ca serverul s comunice cu procesele din cadrul sesiunii, a este necesar ca sistemul de operare s ofere un mecanism adecvat de a comunicatie ntre procese. Mecanismul de comunicatie trebuie s apar a a fat de procesele din sesiunea utilizatorului ca i cnd ar tastatura a s a i ecranul adevrate. cazul sistemelor de tip UNIX, acest mecanism s a In este mecanismul pseudoterminalelor . De notat c mecanismul pipe nu a este adecvat deoarece un pipe nu apare procesului ca un terminal i s nu permite, de exemplu, unui editor de texte, ce ar rula sesiunea n utilizatorului, s solicite primirea ecrui caracter tastat parte. De a a n notat c, mod normal, un proces primete cte o linie momentul a n s a n care utilizatorul apas enter ; pn atunci nucleul sistemului permite n a a a utilizatorului editarea liniei.

11.2.1. Protocolul ssh


Protocolul ssh a fost dezvoltat ca o alternativ, protejat criptograc, a a la telnet. Protocolul ssh este a extensibil, permitnd tunelarea protejat ns a a criptograc a conexiunilor TCP pentru alte aplicatii. Protocolul ssh este construit pe mai multe nivele. Nivelul cel mai de jos [RFC 4253, 2006] realizeaz protejarea criptograc a conexiunii i se a a s bazeaz pe serviciile de conexiune TCP oferite de sistemul de operare. Nivelul a urmtor realizeaz multiplexarea conexiunii protejate criptograc. Nivelul cel a a mai de deasupra cuprinde aplicatia propriu-zis i permite sesiuni de lucru, a s interactive sau nu, mod text, ctre sisteme de tip UNIX, tunelarea unor n a conexiuni TCP arbitrare, transferul de iere i transmiterea informatiilor de s s autenticare criptograc pentru alte sesiuni ssh. a 11.2.1.1. Conexiunea ssh protejat criptograc a Descriem continuare modul care ssh realizeaz protejarea cripn n a tograc a conexiunii. Protocolul este un exemplu instructiv de utilizare praca tic a primitivelor criptograce. a secventa de initializare a conexiunii care va descris mai jos In a clientul i serverul stabilesc un identicator de sesiune i, pentru ecare s s sens, o cheie de criptare i o cheie de autenticare. De asemenea, se stabilesc s algoritmii de criptare simetric, compresie i dispersie cu cheie utilizati pentru a s ecare sens al comunicatiei. Comunicatia decurge complet independent cele n dou sensuri. a

c 2008, Radu-Lucian Lupa s


374 11.2. Sesiuni interactive la distanta

Pentru ecare sens, datele de transmis sunt grupate pachete, de n dimensiune variabil. Pentru ecare pachet de date utile, se construiete i se a s s transmite pe conexiune un pachet generat astfel: 1. Datele utile sunt comprimate utiliznd algoritmul de compresie curent a pentru sensul de comunicatie curent. 2. Se adaug, dup datele comprimate, un ir de octeti aleatori, iar fata a a s n lor se adaug un octet reprezentnd lungimea irului aleator. Apoi, a a s n fata irului astfel obtinut, se adaug lungimea total a irului, reprezen s a a s tat pe patru octeti. Numrul de octeti aleatori adugati trebuie astfel a a a ales at s rezulte urma concatenrii un ir de lungime multiplu de nc a n a s lungimea blocului cifrului utilizat. 3. Rezultatul pasului precedent se cripteaz. a fata blocului (necriptat) rezultat din pasul 2 se adaug numrul 4. In a a de ordine al pachetului curent, dup care din rezultatul concatenrii a a se calculeaz dispersia cu cheia de autenticare curent. Numrul de a a a ordine ncepe de la 0 i crete cu 1 la ecare pachet independent de s s eventuala schimbare a cheilor sau algoritmilor criptograci utilizati. 5. Pachetul transmis efectiv este rezultatul concatenrii pachetului criptat a (rezultat din pasul 3) cu dispersia cu cheie (rezultat din pasul 4). a Rolul acestor transformri este urmtorul. Pe de o parte, compresia a a crete entropia datelor de criptat, fcnd mai dicil spargerea cifrului. Octetii s a a a adugati la nalul blocului fac ca cazul repetrii aceluiai bloc de date a n a s utile s rezulte blocuri criptate diferite. Lungimea completrii aleatoare este a a i ea criptat, fcnd dicil determinarea lungimii datelor utile din blocul s a a a a criptat. Pe de alt parte, dispersia criptograc cu cheie se calculeaz dintra a a un bloc continnd datele utile i numrul de ordine al blocului, fapt ce permite a s a receptorului s verice c datele sunt autentice i c sunt proaspete numrul a a s a a de ordine al blocului primit este cel ateptat. Numrul de ordine al blocului s a ind cunoscut receptorului, nu este nevoie s e trimis efectiv. a cazul vreunei nepotriviri privitoare la dispersia criptograc cu In a cheie a unui bloc, conexiunea este abandonat. Remarcm faptul c o astfel a a a de nepotrivire poate cauzat doar de o tentativ de modicare a datelor a a de ctre un adversar activ, nivelul TCP i nivelele inferioare corectnd erorile a s a de transmisie la nivel zic i eventualele pierderi de pachete IP datorate unei s congestii retea. n La deschiderea conexiunii ssh, compresia, criptarea i dispersia cu s cheie sunt dezactivate. Negocierea primului set de chei i a algoritmilor de s compresie, criptare i dispersie cu cheie se face clar. O dat alese cheile s n a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 375

i algoritmii, acestea sunt activate i se poate s s ncepe comunicatia folosul n aplicatiilor. Algoritmii i cheile pot renegociate ulterior oridecteori una s a dintre prti (clientul sau serverul) o solicit. a a Negocierea cheilor i algoritmilor se face dup cum urmeaz. Fiecare s a a parte trimite liste, ordinea descresctoare a preferintei, cu algoritmii de n a criptare, compresie, dispersie cu cheie, semntur digital i schimb de chei sua a as portate. Algoritmul utilizat, pentru ecare categorie, este primul algoritm de pe lista clientului care se regsete i lista serverului (adic cel mai favorabil a s s n a clientului, dintre cei acceptati de server). Urmeaz schimbul de mesaje con a form protocolului Die-Hellman (ssh nu are denite deocamdat alte metode a de schimb de chei). Din informatia secret construit prin schimbul Die a a Hellman se construiesc (pe baza unor functii de dispersie fr cheie) cheile aa secrete pentru criptare i pentru autenticare pentru ecare sens. s Mai rmne de autenticat schimbul Die-Hellman, despre care am a a vzut c, singur, este vulnerabil la atacul unui adversar activ. Autentia a carea cheii fat de client (adic autenticarea, fat de client, a serverului cu a a a care comunic acesta) se face dup cum urmeaz. Serverul are o pereche de a a a chei pentru semntur electronic. Clientul trebuie s aib cheia public a a a a a a a serverului. Dup realizarea schimbului Die-Hellman, serverul trimite cliena tului o semntur, calculat cu cheia sa secret, asupra a a a a ntregului schimb de informatie de pn atunci adic listele de algoritmi suportati i pachetele a a a s corespunztoare protocolul Die-Hellman, emise de ambele prti. Prin vera a icarea semnturii, clientul se asigur c negocierea a avut loc a a a ntr-adevr a cu serverul autentic. Autenticarea clientului fat de server se face ulterior, a existnd acest scop mai multe mecanisme posibile (vezi 11.2.1.2). a n Pentru facilitarea rspndirii utilizrii protocolului ssh, serverul transa a a mite la deschiderea conexiunii cheia sa public ctre client. Notm c, deoarece a a a a transmisia cheii publice a serverului nu poate a autenticat, utilizarea de nc a ctre client a cheii publice transmise de server prezint riscul ca un adversar a a activ s se dea drept serverul autentic. Dac a adversarul n-a modicat a a ns cheia public transmis de server, restul comunicatiei este sigur. Mai mult, a a la prima conectare, clientul stocheaz local cheia primit de la server. La a a urmtoarele conectri, clientul compar cheia primit de la server cu cea stoa a a a cat locat; dac sunt diferite, avertizeaz utilizatorul. acest fel, dac la a a a In a prima conectare cheia primit de client de la server este cea autentic, orice a a atac ulterior din partea unui adversar activ este descoperit. a La prima conectare a programului client ssh la un server nou, clientul avertizeaz utilizatorul cu privire la faptul c nu poate verica cheia serverului. a a La aceast prim conectare, a a mpiedicarea unui atac al unui eventual adversar

c 2008, Radu-Lucian Lupa s


376 11.2. Sesiuni interactive la distanta

se poate face dou moduri: n a Inainte de prima conectare, utilizatorul copiaz, de pe maina server a s sau dintr-o surs autenticat, cheia public a serverului i o introduce a a a s manual lista de chei memorate local de programul client ssh. acest n In fel, clientul ssh poate verica cheia serverului chiar de la prima sesiune, ntocmai ca cazul unei sesiuni ulterioare. n Utilizatorul obtine, dintr-o surs autenticat (de exemplu, vorbind la a a telefon cu administratorul mainii server), dispersia criptograc a cheii s a publice a serverului. La prima conectare, utilizatorul compar dispersia a astfel obtinut cu dispersia cheii trimise de server (aceasta este aat a s a de clientul ssh mpreun cu mesajul de avertisment prin care anunt a a imposibilitatea vericrii cheii). Dac cele dou dispersii coincid, cheia a a a trimis de server este autentic. a a Pe sistemele de tip UNIX, cheile publice ale serverului (pentru diferitele protocoale de semntur) se gsesc directorul /etc/ssh, ierele ssh_host_rsa_key.pub, a a a n n s respectiv ssh_host_dsa_key.pub. Aceste iere pot citite de orice utilizator s al sistemului. Amprenta cheii dintr-un astfel de ier se determin cu comanda s a ssh-keygen -l -f ier. Cleintul ssh memoreaz cheile serverelor ierul s a n s ~/.ssh/known_hosts. 11.2.1.2. Metode de autenticare ssh n ssh, exist autenticare reciproc In a a ntre client i server. s Aa cum am vzut, serverul se autentic fat de client cu ajutorul s a a a unui mecanism cu cheie privat i cheie public. as a Dup initializarea mecanismului de protectie criptograc a conexiua a nii, este rndul clientului s-i declare identitatea (numele de utilizator) i s a as s a se autentice. Clientul poate autenticat de server prin mai multe metode. Cele mai comune sunt autenticarea prin parol i autenticarea prin semntur a s a a digital (numit i autenticare cu cheie public). a as a Autenticarea prin parol presupune trimiterea de ctre client a parolei. a a Este esential faptul c serverul este deja autenticat i condentialitatea, in a s tegritatea i prospetimea comunicatiei sunt protejate. Ca urmare clientul s nu risc s trimit parola unui adversar i nici ca un adversar ce capteaz a a a s a comunicatia criptat s retrimit datele interceptate pentru a repeta o sesiune a a a legitim. a Autenticarea prin semntur digital presupune ca faza de initia a a n alizare utilizatorul s congureze pe server o cheie public, corespunztoare a a a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 377

cheii sale secrete. La conectare, clientul se autentic trimitnd semntura, cu a a a cheia sa secret, asupra identicatorului de sesiune creat faza de stabilire a n a comunicatiei protejate criptograc. Serverul veric semntura utiliznd a a a cheia public ce a fost congurat. a a Congurarea autenticrii cu cheie public, pe sistemele de tip UNIX a a avnd server OpenSSH, este descris continuare. a a n Perechile de chei se genereaz cu ajutorul utilitarului ssh-keygen. a Cheia public admisibil pentru conectarea contul unui utilizator a a n se scrie ierul ~/.ssh/authorized_keys (sub directorul personal al utin s lizatorului). Deoarece acest ier poate modicat doar de ctre posesorul s a contului, doar posesorul contului poate stabili cheia admisibil pentru auta enticare. Fiierul ~/.ssh/autthorized_keys poate contine mai multe chei. s acest caz, oricare dintre cheile secrete corespunztoare este valid pentru In a a autenticare. Este posibil ca, pentru anumite chei, s se congureze lansarea a unei anumite aplicatii; acest caz, dac clientul utilizeaz cheia pereche pen n a a tru autenticare, i se va lansa automat aplicatia respectiv i nu o sesiune a s nerestrictionat. a Pentru schimbarea cheii, de exemplu cazul compromiterii cheii sen crete, utilizatorul trebuie s genereze o nou pereche de chei, s scrie noua a a a cheie public ierul ~/.ssh/authorized_keys, s tearg vechea cheie a n s a s a public din acest ier i s furnizeze noua cheie secret clientului ssh la a s s a a conectrile ulterioare. Deoarece cheia public nu este o informatie secret, a a a compromiterea sistemului server nu duce la compromiterea, i deci la neces sitatea schimbrii, cheii. Acesta este un avantaj fat de cazul autenticrii a a a prin parole, unde compromiterea serverului duce la compromiterea parolei i s la necesitatea schimbrii parolei nu numai pe acel sistem ci i pe alte sisteme a s pe care utilizatorul avea aceeai parol. s a Pentru furnizarea cheii secrete ctre clientul ssh, exist dou posia a a biliti. Prima posibilitate este ca ierul cu cheia secret s e fcut disponiat s a a a bil clientului ssh. Dac ierul contine cheia secret ca atare, conectarea se a s a face fr ca utilizatorul s mai dea vreo parol. Dac utilizatorul dorete s aa a a a s a se conecteze de pe maini (client) diferite, trebuie e s poarte cheia cu el pe s a un suport amovibil, e s pun copii ale cheii secrete pe ecare sistem, e s a a a utilizeze chei diferite pentru conectarea de pe ecare sistem. Ultima solutie ofer avantajul c, cazul compromiterii unuia dintre sistemele client, este a a n necesar schimbarea cheii secrete doar de pe acel sistem. a Deoarece compromiterea unui sistem client duce, cazul stocrii ca n a atare a cheii secrete, la compromiterea imediat a contului utilizatorului, cheile a secrete se stocheaz, mod obinuit, form criptat iere. Criptarea a n s n a a n s

c 2008, Radu-Lucian Lupa s


378 11.2. Sesiuni interactive la distanta

se realizeaz printr-un algoritm simetric cu ajutorul unei chei derivate dintr-o a parol aleas de utilizator. Stocarea cheii numai form criptat ofer un a a n a a a plus de sigurant (un intrus trebuie s obtin att ierul cu cheia secret, ct a a a a s a a i parola de decriptare a acestuia), a duce la necesitatea de a da clientului s ns ssh parola de decriptare la ecare utilizare. A doua posibilitate de a furniza aplicatiei client accesul la cheia se cret este prin intermediul unui program numit agent de autenticare. Agena tul de autenticare este un proces server care are memorie cheia secret a n a utilizatorului, forma decriptat. Clientul ssh se conecteaz la agentul de n a a autenticare pentru a obtine accesul la cheie. Agentul de autenticare, avnd ca nume de executabil ssh-agent, se a lanseaz de regul la deschiderea sesiunii pe maina client. Cheile secrete se a a s ncarc agentul de autenticare cu ajutorul unui program numit ssh-add. a n Acest program permite i listarea i tergerea cheilor secrete. Dac cheia ses s s a cret este stocat criptat, ssh-add solicit utilizatorului parola de decriptare. a a a Cheia secret decriptat se gsete doar memoria agentului de autenticare, a a a s n nu se stocheaz pe disc. a La lansare, clientul ssh caut s vad dac pe maina local ruleaz a a a a s a a un agent de autenticare. Dac da, contacteaz agentul de autenticare i-i soa a s licit accesul la cheile secrete stocate de acesta. Clientul ssh paseaz agentului a a identicatorul de sesiune i primete s s napoi semntura cu cheia secret asupra a a acestuia. acest fel, clientul ssh nu ajunge s cunoasc efectiv cheia secret. In a a a Deschiderea sesiunii ctre maina server se face fr a solicita utilizatorului a s aa vreo parol. a Comunicatia dintre clientul ssh sau utilitarul ssh-add i agentul de s autenticare se face printr-un socket de tip UNIX, al crui nume este pus a n variabila de mediu SSH_AUTH_SOCK. Comunicatia ind local, ea nu poate a interceptat sau modicat. Autenticarea clientului (ssh sau ssh-add ) se face a a prin aceea c drepturile de acces la socket-ul corespunztor sunt acordate doar a a proprietarului agentului de autenticare. Protocolul ssh permite constructia unei conexiuni securizate dinspre maina server ssh spre agentul de autenticare de pe maina client ssh. s s In acest caz, la deschiderea sesiunii, serverul ssh actioneaz i ca un agent de a s autenticare. Cererile de semntur primite de serverul ssh sunt trimise prin a a conexiunea ssh ctre client, iar clientul le trimite agentului local (de pe maina a s client). Prelungirea nu se poate face lipsa unui agent de autenticare pe n maina client. s Analiznd securitatea prelungirii conexiunii la agentul de autentia care, observm c serverul nu obtine efectiv cheia secret, a, pe durata a a a ns

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 379

conexiunii, poate deschide sesiuni numele clientului ctre orice main care n a s a accept cheile stocate agentul de autenticare. Din acest motiv, clientul a n ssh nu face prelungirea conexiunii la agentul de autenticare dect la cererea a explicit a utilizatorului. a 11.2.1.3. Multiplexarea conexiunii, tunelarea i aplicatii s O dat deschis conexiunea i realizat autenticarea clientului, cliena a s a tul ssh poate solicita serverului deschiderea unei sesiuni de lucru, adic a n esent lansarea unui shell contul utilizatorului autenticat. Tot la solica n itarea clientului, canalul de comunicatie creat de server ntre server i shell -ul s lansat poate realizat printr-un pseudoterminal (cazul obinuit al unei sesiuni s interactive) sau printr-o pereche de pipe-uri. A doua variant se utilizeaz a a n cazul care utilizatorul a lansat clientul ssh cu specicarea unei comenzi de n executat pe server. acest caz, comanda specicat de utilizator este transIn a mis serverului i acesta o execut cu intrarea i ieirea redirectionate ctre a s a s s a server i prelungite prin conexiunea securizat ctre client. Redirectionnd pe s a a a client intrarea sau ieirea standard a comenzii ssh, se realizeaz, per ansams a blu, redirectionarea intrrii sau ieirii standard ctre iere sau pipe-uri de pe a s a s maina local pentru comanda executat la distant. s a a a Exemplul 11.5: Comanda
ssh rlupsa@nessie.cs.ubbcluj.ro ls -l > lista

are ca efect nal crearea, pe maina local, a unui ier lista, continnd s a s a lista numelor de iere de pe maina nessie.cs.ubbcluj.ro din directorul s s 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 mod grac. a n Descriem continuare arhitectura X Window. Mentionm c este n a a diferit fat de sistemele studiate pn aici. Diferenta provine primul rnd a a a a n a din faptul c sistemul X Window are i scopul de-a asigura proceselor acces la a s ecranul grac local. O prim component a sistemului este serverul X. Acesta este un a a proces, avnd de regul acces privilegiat la sistem, care gestioneaz tastatura a a a i ecranul local. O aplicatie ce are nevoie de acces la un ecran grac i la s s

c 2008, Radu-Lucian Lupa s


380 11.2. Sesiuni interactive la distanta

tastatura ataat se numete client X. Un client X se conecteaz la serverul X s a s a i, dup auteticare, poate: s a s cear serverului s deseneze diverse lucruri pe ecran; a a a s solicite s primeasc informri cu privire la tastele apsate de utilizator a a a a a i la micrile mouse-ului. s s a La un server se pot conecta simultan mai multi clienti, inclusiv de pe calcula toare diferite. Serverul ine evidenta unor ferestre, ecare operatie de desenare at vnd specicat o fereastr care s deseneze. Ecranul cu totul este consida a a n a erat o fereastr, iar ecare fereastr se pot deschide subferestre. Serverul a n a ine evidenta modului care se suprapun ferestrele i determin ce parte din t n s a desenul efectuat ntr-o fereastr este vizibil i trebuie desenat pe ecran. a s Un client autenticat are acces deplin la tastatura i ecranul gestions ate de server. Asta nseamn, de exemplu, c un client poate s deseneze a a a ntr-o fereastr deschis de alt client i poate s capteze tot ceea ce tasteaz a a s a a utilizatorul acea fereastr. De principiu, sunt admise la un moment dat s n a a se conecteze doar aplicatii rulnd contul aceluiai utilizator. a n s Pentru ca aplicatii distincte s nu se a ncurce reciproc, exist nite a s linii mari, acestea conventii pe care aplicatiile se recomand s le respecte. In a a prevd ca o aplicatie s nu deseneze ferestrele deschise de alt aplicatie i a a n a s s nu capteze tastele cnd nu este activ. a a a Comutarea ntre aplicatii, precum i mutarea i redimensionarea fer s s estrelor principale ale aplicatiilor, cad sarcina unui client mai special numit n window manager . Window manager -ul se conecteaz i se autentic ca un a s a client obinuit, dup care solicit serverului s e informat de cererile de des a a a schidere de ferestre trimise de ceilalti clienti. La ecare fereastr principal de a a schis, window manager -ul adaug bara de titlu i marginile. Deoarece oricum a a s nu exist protectie a ntre clientii conectati la un server X, un client nu are nevoie de privilegii speciale ca s actioneze ca window manager. Totui, cteva dina s a tre operatiile de care are nevoie un window manager ca s functioneze sunt a acordate de serverul X doar unui client la un moment dat. Ca urmare, nu pot exista dou window manager -e simultan. a

11.3. Transferul ierelor retea s n


Cerinta de-a transfera iere retea poate avea diferite particu s n lariti. Exist mai multe protocoale i mai multe aplicatii pentru transferul at a s ierelor retea, adaptate pentru diferite necesiti. s n at

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 381

O prim categorie de protocoale i aplicatii privete, principal, a s s n transferul ierelor unui utilizator de pe o main pe alta, conditiile care s s a n n utilizatorul are cont pe ambele maini. Protocoalele construite pentru aceasta s sunt ftp i ssh. De notat c i pota electronic poate servi ca mecanism de s as s a transfer de iere. s O a doua categorie privete transferul ierelor publice de la un cals s culator ce stocheaz astfel de iere la calculatorul unui utilizator ce dorete a s s s citeasc ierele respective. Initial se utiliza protocolul ftp acest scop. a a s n Protocolul utilizat mod curent este a http. n ns O a treia categorie pivete accesul proceselor de pe un calculator la s iere stocate pe alt calculator ca i cnd ierele ar locale. De principiu s s a s ierele respective sunt private, ca i pentru prima categorie de protocoale. s s Protocoalele din aceast categorie trebuie s satisfac dou cerinte specice a a a a (fat de prima categorie): s permit transferul doar a unei prti mici dintra a a a un ier i s permit controlul partajrii ierului s s a a a s ntre procese. Protocoalele utilizate aici sunt SMB (utilizat retelele Windows) i NFS. n s

11.3.1. Protocolul ftp


Descriem pe scurt conceptele de baz ale protocolului ftp. Pentru a detalii, a se vedea [RFC 765, 1985]. Clientul deschide o conexiune TCP ctre portul 21 al serverului; a aceast conexiune se numete conexiune de control. Prin conexiunea de cona s trol, clientul transmite comenzi format text, cte o comand pe o linie. n a a Fiecare comand a ncepe cu numele comenzii urmat de eventuali parametrii. Parametrii sunt separati prin spatii, att fat de numele comenzii ct i a a a s ntre ei. Serverul rspunde tot format text, ecare rspuns a n a ncepnd cu un cod a care arat dac comanda s-a executat cu succes sau ce erori s-au produs, dup a a a care urmeaz un text ce descrie, limbaj natural, rezultatul executiei comena n zii. Cu o singur exceptie ( cazul comenzii PASV, descris mai jos), textul a n a din rspuns nu este interpretat de ctre aplicatia client. El este a aat, de a a ns s obicei, pe ecran utilizatorului aplicatiei client. Autenticarea se face la solicitarea clientului. Clientul trimite succesiv dou comenzi, USER i PASS, avnd ca parametrii respectiv numele utia s a lizatorului i parola acestuia. Serverul refuz executia majoritii comenzilor s a at clientului nainte de autenticarea cu succes a acestuia. Dup autenticare, a serverul accept s efectueze operatiile cerute de client doar dac utilizatorul a a a contul cruia s-a fcut autenticarea are dreptul la operatiile respective. n a a Pe sistemele de tip UNIX, reglementarea drepturilor de acces se face de obicei astfel: la lansare, serverul ruleaz din contul root; la conectarea unui client, a

c 2008, Radu-Lucian Lupa s


382 11.3. Transferul fisierelor retea n

serverul creaz (prin apelul sistem fork()) un proces u care se ocup de a a acel client; dup autenticare, procesul u trece contul utilizatorului auta n enticat (prin apelul setuid()); continuare, serverul accept orice comenzi n a de la client i s ncearc s le execute, iar vericarea drepturilor de acces este a a fcut de nucleul sistemului de operare momentul care procesul server a a n n u ncearc s acceseze sistemul de iere. a a s Pentru transferul de iere publice, serverul este congurat s accepte s a autenticare cu numele de utilizator ftp sau anonymous fr s solicite parol aa a a vremurile de sau acceptnd orice ir de caractere pe post de parol. In a s a nceput ale Internet-ului, se obinuia ca un utilizator ce dorea acces la iere publice ss s a i dea, pe post de parol, adresa sa de pot electronic. O dat cu rspndirea s a sa a a a a spam-urilor, s-a renuntat la acest obicei. Transferul ierelor se cere prin comenzile SEND (dinspre client spre s server) i RETR (dinspre server spre client). Comenzile au ca argument numele s de pe server al ierului de transferat. Transferul propriu-zis are loc printr-o s conexiune separat, numit conexiune de date. Pentru ecare ier se deschide a a s o nou conexiune de date, care se a nchide la nalul transferului ierului. s Dimensiunea ierului nu este specicat explicit nicieri, receptorul ierului s a a s obtinnd lungimea din faptul c emittorul a a a nchide conexiunea de date la nalul ierului. s Exist dou moduri de deschidere a conexiunii de date: a a Modul activ prevede c serverul deschide conexiunea de date ca o conea xiune TCP dinspre portul 20 al serverului ctre un port specicat de a client. Clientul specic portul pe care ateapt conexiunea prin coa s a manda PORT. Conexiunea se deschide ca urmare a comenzii de transfer (SEND sau RETR), nu imediat dup primirea comenzii PORT. a Modul pasiv prevede deschiderea conexiunii de date de ctre client, dina spre un port oarecare al su, ctre un port specicat de server. Portul a a specicat de server se obtine ca rspuns al comenzii PASV date de client. a Acesta este singurul caz care clientul interpreteaz din rspunsul n a a serverului i altceva dect codul returnat. s a Listarea ierelor de pe server este solicitat de client prin comanda s a LIST. Trasnferul listei de iere se face tot printr-o conexiune de date, ca i s s n cazul comenzii RETR.

11.3.2. Protocolul HTTP


HyperText Transmission Protocol (HTTP) este un protocol elaborat pentru transferul dinspre server spre client a ierelor cu informatii disponibile s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 383

public. El nlocuiete protocolul ftp utilizat cu conectare ca utilizator anonys mous. Dei numele protocolului face referire la hipertext, el poate utilizat s pentru a transfera orice fel de continut. Protocolul de baz const trimiterea de ctre client a unei cereri, a a n a care informatia principal este numele ierului cerut. Rspunsul serverului n a s a contine nite informatii despre ier i continutul efectiv al ierului. Implicit, s s s s conexiunea se nchide dup transferul unui ier. Dac clientul dorete mai a s a s multe iere de pe acelai server, va trebui s deschid cte o conexiune pentru s s a a a ecare ier. s Protocolul a fost a extins, ajungnd s e folosit ca protocol de ns a a transfer de date pentru aplicatii de orice tip. 11.3.2.1. Structura cererilor i a rspunsurilor s a Formatul comunicatiei este mixt, att la cereri ct i la rspunsuri. a a s a Partea de nceput este text, iar continutul ierului este binar. s Cererea cuprinde, pe prima linie, un cuvnt reprezentnd numele a a operatiei cerut. Pentru solicitarea unui ier public de pe server, numele este a s GET. Dup numele operatiei urmeaz numele ierului i apoi identicarea a a s s versiunii de protocol conformitate cu care este format cererea. Cele trei n a elemente sunt separate prin cte un spatiu. a Urmtoarele linii sunt de forma nume:valoare, similar cu antetul unui a mesaj de pot electronic. Dup ultima linie de antet urmeaz o linie vid. sa a a a a Pentru unele tipuri de cereri, dup linia goal se gsete un continut. acest a a a s In caz, una dintre liniile din antet are numele Content-length i are ca valoare s lungimea continutului, dat ca ir de cifre zecimale. a s Rspunsul este structurat similar cu cererea. Pe prima linie se a a a identicatorul versiunii HTTP, numr de trei cifre i un text. Numrul arat a s a a dac cererea a fost satisfcut cu succes sau nu, iar textul, neinterpretat a a a de client, este o descriere cuvinte a semnicatiei codului de trei cifre. n Urmtoarele linii sunt de forma nume:valoare i dau informatii despre ierul a s s solicitat. Dup ultima linie de antet urmeaz o linie vid i apoi continutul a a as (binar) al ierului. antet se gsete o linie cu numele Content-length s In a s avnd ca valoare lungimea ierului. Determinarea sfritului continutului a s as propriu-zis de ctre client trebuie fcut prin numrea octetilor din partea de a a a a continut. Adesea, mai multe servere HTTP sunt gzduite zic pe acelai cala s culator. acest caz, e numele serverelor corespund, prin DNS, unor adrese In IP diferite, dar apartinnd aceluiai calculator, caz care serverul este con a s n gurat s rspund functie de IP-ul ctre care a fost deschis conexiunea, a a a n a a

c 2008, Radu-Lucian Lupa s


384 11.3. Transferul fisierelor retea n

e numele serverelor corespund aceleiai adrese IP, caz care este necesar ca s n cererea HTTP s e specicat serverul dorit. Acest lucru se realizeaz prin n a a aceea c, cererea clientului, se plaseaz un antet cu numele Host i avnd a n a s a ca valoare numele de server dorit. 11.3.2.2. URL-urile O pagin web este general un ier scris HyperText Markup a n s n Language (HTTP) i oferit acces public prin protocolul HTTP. s n O pagin web const, de obicei, din mai multe iere. Exist un ier a a s a s de baz, scris limbajul HTML, i alte iere, continnd anumite elemente ale a n s s a paginii: imagini ( iere separate formate specice JPEG, PNG, GIF), n s n applet-uri (Java), specicri de formatare a paginii (iere Cascading Style a s Sheet CSS). De asemenea, o pagin contine general legturi (link -uri) a n a spre alte pagini. Toate acestea necesit referiri dintr-un ier HTML ctre alte a s a iere disponibile acces public. Referirea acestor iere se face prin nume s n s care s permit regsirea lor uoar. a a a s a Un Universal Resource Locator (URL) este un nume prin care se poate identica i cu ajutorul crora se potate regsi o resurs disponibile s a a a n Internet. URL-urile au aprut ca un format standard de scriere a numelor a ierelor referite din paginile web; ele permit a utilizri mult mai vaste. s ns a Un URL este alctuit general din trei componente: a n Tipul identic protocolul utilizat. Exemple mai cunoscute sunt: http, a ftp, https, mailto. Numele mainii este numele de domeniu sau adresa IP a mainii pe care s s se gsete resursa (ierul). a s s Pe lng numele mainii, cadrul acestei componente se poate a a s n aduga numele de utilizator contul cruia trebuie s se autentice un a n a a client pentru a obtine accesul dorit la resurs. Numele de utilizator se a d fata numelui sau adresei mainii, separat de acesta prin caracterul a n s @. Standardul original prevedea i posibilitatea de-a scrie URL parola s n necesar conectrii. Aceast utilizare este nerecomandat. a a a a Calea identic resursa (ierul) cadrul serverului care o gzduiete. a s n a s In principiu, ea este calea complet a ierului cerut, relativ la un director a s a de baz, xat, al documentelor publice. a URL-urile se pot utiliza i se utilizeaz efectiv multe alte scopuri s a n dect identicarea paginilor web. De exemplu, sistemul SubVersion (SVN) a utilizeaz URL-uri de forma svn://main /cale pentru a referi ierele dintra s a s un repository.

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 385

11.3.2.3. Alte faciliti HTTP at Antetul rspunsului HTTP ofer mai multe informatii despre ierul a a s returnat: Tipul continutului ierului este specicat de ctre server prin intermediul s a unui antet cu numale Content-type i cu valoarea construit ca i s a s n cazul antetului Mime-type de la pota electronic. Tot ca i cazul lui s a s n Mime-type, tipul continutului poate urmat de specicarea codicrii a utilizate pentru text; de exemplu,
Content-type: text/html; charset=utf-8

nseamn c ierul este de tip HTML, iar codicarea utilizat pentru a a s a caractere este UTF-8. Data ultimei modicri a ierului este specicat prin valoarea antetului a s a cu numele Date. Tipul de compresie utilizat (dac ierul returnat este comprimat) este a s dat ca valoare a antetului Content-transfer-encoding. Limba care este scris textul din ier (dac este cazul) este returnat n s a a ca valoare a antetului Language:. Este posibil ca unui URL s-i corespund mai multe iere pe server, a a s avnd continut echivalent, dar diverse formate, limbi sau codicri. Pentru a n a a selectiona varianta dorit, clientul poate anunta posibilitile i preferintele a at s sale cu privire la tipul de ier, limb i codicare. Antetele corespunztoare, s as a din cererea clientului, sunt: Accept, Accept-language i Accept-encoding. s Fiecare dintre acestea are ca valoare o list de variante, ordinea preferintei. a n De exemplu,
Accept-language: ro,en,fr

solicit serverului, de preferint, varianta limba romn a textului. Dac o a a n a a a variant limba romn nu este disponibil, se solicit una limba englez, a n a a a a n a iar lipsa acesteia una limba francez. n n a Protocolul HTTP permite formularea de cereri conditionate sau par iale. O cerere partial este util dac ierul cerut este mare i clientul dorete t a a a s s s s-l aduc din buci sau dac la o cerere precedent a czut legtura dup a a at a a a a a transferul unei prti din ier. O cerere conditionat determin serverul s a s a a a transmit clientului ierul numai dac este a s a ndeplinit o anumit conditie, cel a a mai adesea dac a fost modicat mai recent dect o anumit dat specicat a a a a a

c 2008, Radu-Lucian Lupa s


386 11.3. Transferul fisierelor retea n

de client. Dac nu este a ndeplinit conditia, serverul d un rspuns format a a a doar din antet, fr continutul propriu-zis. Aceast facilitate este util dac aa a a a clientul detine o copie a unui ier i dorete s s s mprosptarea acesteia. Cererea a partial se specic de ctre client prin intermediul antetului Range; cererea a a a conditionat se specic prin antetul If-modified-since. a a Pentru optimizarea tracului, cazul care un client dorete mai n n s multe iere de pe acelai server (aceasta se ampl adesea cazul care s s nt a n n clientul aduce un ier html, iar apoi are de adus imaginile i eventual alte s s obiecte din document), este prevzut posibilitatea de-a pstra conexiunea a a a acest scop, clientul cere pstrarea deschis pe durata mai multor cereri. In a a conexiunii deschise, plasnd cerere antetul a n
Connection: keep-alive

Pentru a nu permite unor clienti s deschid o conexiune i apoi s o lase a a s a deschis la nesfrit, innd ocupate resurse pe server, serverul trebuie conga as t a urat s a nchid automat conexiunea dac nu se transfer date o perioad de a a a a timp. Este uneori util ca un utilizator care acceseaz un URL s e redireca a ionat automat ctre alt URL. Aceasta se ampl dac administratorul saitt a nt a a ului decide o reorganizare a paginilor i dorete ca utilizatorii care au retinut s s URL-uri desintate urma reorganizrii s e redirectionati ctre paginile n a a a corespunztoare din noua organizare. Aceast redirectionare se face prin trima a iterea de ctre server a unui antet cu numele Location i avnd drept continut a s a URL-ul spre care se dorete redirectionarea clientului. acest caz, programul s In client nu aeaz continutul returnat de server (continut care mod normal s a n lipsete complet), ci cere i aeaz continutul de la URL-ul indicat antetul s s s a n Location. 11.3.2.4. Proxy HTTP Un proxy HTTP este un proces care, fat de un client HTTP, actioa neaz aproape ca un server HTTP, iar pentru satisfacerea cererii contacteaz a a serverul solicitat de client i actioneaz, fat de acest server, ca un client. s a a Un proxy HTTP este utilizat mod normal pentru urmtoarele n a functii: dac dintr-o retea local exist anse mari ca mai multi utilizatori s a a a s a acceseze aceleai pagini web: acest caz, clientii HTTP ai calculas In toarelor din retea se congureaz s utilizeze un acelai proxy HTTP a a s din reteaua local. Dac exist mai multe cereri pentru aceeai pagin, a a a s a la prima cerere proxy-ul memoreaz pagina adus, iar la urmtoarele a a a cereri o servete clientilor din memoria local. s a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 387

dac a ntr-o retea se utilizeaz adrese IP locale (vezi 10.2.4.1 i 10.7.2) i a s s nu se dorete congurarea unui mecanism de translatie de adrese (NAT, s 10.7.3): acest caz, se instaleaz un proxy HTTP pe un calculator In a din reteaua local dar avnd i adres IP public. Clientul acceseaz a a s a a a proxy-ul prin reteaua local, iar proxy-ul, avnd adres public, poate a a a a accesa fr restrictii serverul dorit. aa dac este de dorit un control n asupra paginilor ce pot accesate dintra o retea local (de exemplu, pentru a restrictiona accesul angajatilor la a saituri nelegate de activitatea lor normal). acest caz, se conga In ureaz un proxy care se congureaz toate restrictiile de acces dorite. a n a Apoi, pentru a mpiedica accesul direct, prin evitarea proxy-ului, pe ruterul ce leag reteaua intern la Internet se congureaz un ltru de a a a pachete ( 10.7.1) care s blocheze pachetele adresate portului TCP 80 a al serverelor exterioare. O diferenta ntre protocolul de comunicatie dintre un client i un s proxy fat de protocolul client-server este c, dup o cerere (de exemplu, GET), a a a la protocolul client-server urmeaz calea local din URL, iar la protocolul a a client-proxy urmeaz URL-ul solicitat (inclusiv numele protocolului i numele a s serverului). O a doua diferent este dat de existenta unei cereri, CONNECT, ce a a poate adresat doar unui proxy. La primirea unei cereri CONNECT, proxya ul deschide o conexiune ctre serverul specicat comanda CONNECT i apoi a n s retrimite datele dinspre client direct spre server i, reciproc, dinspre server s napoi spre client. cazul unei cereri CONNECT, proxy-ul nu se implic mai In a departe comunicatia dintre client i server. Ca urmare, acest caz proxy-ul n s n nu mai memoreaz paginile aduse i nu permite ltrarea cererilor dect dup a s a a serverul i portul la care se conecteaz, schimb permite tunelarea oricrui s a n a protocol (nu numai a protocolului HTTP) ntre un client dintr-o retea cu adrese interne i un server din Internet. s 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 vederea securizrii comunicatiei n a ntre clientul i serverul HTTP. s Protocolul este a sucient de exibil pentru a permite oricrei aplicatii ce ns a comunic prin conexiuni s-l foloseasc. TLS [RFC 4346, 2006] Transport a a a Layer Security, rom. securitate la nivel transport este derivat din SSL versiunea 3, dar dezvoltat de IETF (Internet Engineering Task Force). cele ce In

c 2008, Radu-Lucian Lupa s


388 11.3. Transferul fisierelor retea n

urmeaz, vom discuta doar despre TLS, a toate chestiunile prezentate sunt a ns valabile i pentru SSL. s Protocolul TLS presupune existenta unei legturi nesecurizate a ntre un client (entitatea care initiaz activ comunicatia) i un server (entitatea a s care ateapt s e contactat de ctre client). Legtura nesecurizat este, s a a a a a a mod obinuit, o conexiune TCP. Protocolul TLS ofer un serviciu de tip n s a conexiune. TLS asigur condentialitatea i autenticitatea datelor utile transa s portate. Datele utile transportate de TLS pot apartine oricrui protocol. Pro a tocolul ale crui date sunt transportate ca date utile de ctre TLS este numit a a tunelat prin TLS. cadrul initierii unei conexiuni TLS, se realizeaz stabilirea unei In a chei de sesiune care este utilizat continuare pentru securizarea transportua n lui datelor utile. Autenticarea stabilirii cheii poate unilateral, doar cliena tul autenticnd serverul cu care a realizat negocierea cheii de sesiune, sau a bilateral. cazul autenticrii unilaterale, se poate utiliza o autenticare a a In a clientului fat de server cadrul protocolului tunelat. acest caz, deoarece a n In serverul este deja autenticat, autenticarea clientului poate fcut prin a a parol, fr riscul ca parola s e transmis unui adversar. a aa a a Autenticarea stabilirii cheii de sesiune se face printr-un mecanism de semntur digital. Pentru distribuirea sigur a cheilor publice, utilizate a a a a cadrul autenticrii, se utilizeaz certicate ( 6.3.4). n a a Serverul trebuie s aib o pereche de chei pentru semntur digital a a a a a i un certicat, semnat de o autoritate care clientul are s n ncredere, pentru cheia public. La initierea conexiunii TLS, serverul transmite clientului certia catul su Clientul veric faptul c numele din certicat coincide cu numele a a a serverului la care dorea conectarea, c semntura autoritii de certicare a a at asupra certicatului este valid, c autoritatea de certicare este de a a ncredere i, nal, utilizeaz cheia public din certicatul clientului pentru a autens n a a tica stabilirea cheii de sesiune. Dac se dorete i autenticarea clientului a s s fat de server tot prin TLS, atunci clientul trebuie s aib, la rndul su, o a a a a a pereche de chei i un certicat. s vederea vericrii semnturii din certicat i a faptului c semIn a a s a natarul (autoritatea de certicare) este de ncredere, ecare dintre parteneri trebuie s aib o list cu cheile autoritilor de certicare de a a a at ncredere. Cheia unei autoriti de certicare este, mod obinuit, plasat tot at n s a ntr-un certicat. Certicatul unei autoriti de certicare poate semnat de ctre o at a alt autoritate de certicare sau chiar de ctre autoritatea posesoare a certia a catului. acest din urm caz, certicatul se numete certicat autosemnat In a s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 389

(engl. self-signed certicate) sau certicat rdcin (engl. root certicate). a a a In majoritatea cazurilor, clientul are o multime de certicate autosemnate ale autoritilor care are at n ncredere. Exist mai multe produse soft pentru crearea perechilor de chei i a s pentru crearea i semnarea certicatelor. Un astfel de produs este OpenSSL, s disponibil pe sistemele de tip UNIX. 11.3.2.6. Utilizarea TLS pentru web Transferul securizat al paginilor web se realizeaz prin tunelarea proa tocolului HTTP peste SSL sau TLS. Constructia realizat se numete HTTPS. a s URL-urile resurselor accesibile prin conexiuni securizate au, ca nume al protocolului, irul de caractere https ( loc de http). s n Un navigator web care are de adus o pagin a crei URL are, a a n partea de protocol, https, execut urmtoarele: a a Afar de cazul care URL-ul specic explicit un numr de port, clientul a n a a deschide conexiunea ctre portul 443 al serverului ( loc de portul 80, a n implicit pentru HTTP). Dac, locul contactrii directe a serverului web, se utilizeaz un proxy, a n a a clientul trimite serverului proxy o cerere CONNECT pentru stabilirea conexiunii spre server. Prin aceast conexiune, stabilit prin intermediul a a proxy-ului, se transmit mesajele SSL sau TLS, cadrul crora se transn a mit datele HTTP. La deschiderea conexiunii (e conexiune TCP direct, e un lant de coa nexiuni TCP prin intermediul proxy-ului), are loc mai ai schimbul de nt mesaje legat de stabilirea cheii SSL sau TLS. Dup initializarea conea xiunii securizate, prin canalul securizat are loc un dialog conform protocolului HTTP. Cu alte cuvinte, cererile i rspunsurile HTTP constituie s a date utile pentru nivelul SSL sau TLS. Autenticarea serverului, cadrul protocolului TLS, necesit, aa n a s cum am vzut, ca navigatorul web s dispun de certicatele autoritilor de a a a at certicare de ncredere. general, productorii de navigatoare In a ncorporeaz a acestea nite certicate, ale unor autoriti de certicare larg recunoscute. n s at Utilizatorul poate a s dezactiveze oricare dintre aceste certicate, precum ns a i s adauge alte certicate. s a Atragem atentia asupra unor particulariti legate de utilizarea HTTPS: at Deoarece autenticarea serverului, prin mecanismul TLS, se face naintea trimiterii cererii HTTP, certicatul trimis de server nu poate depinde de antetul Host transmis de ctre client. Ca urmare, dac mai multe a a

c 2008, Radu-Lucian Lupa s


390 11.3. Transferul fisierelor retea n

saituri web securizate sunt gzduite de un acelai calculator, este necea s sar ca aceste saituri s e distinse prin adresa IP sau prin numrul de a a port. cazul care s-ar utiliza doar antetul Host pentru ca serverul s In n a determine saitul cerut de client, serverul ar trimite acelai certicat ins diferent de saitul dorit de client. Ca urmare, ar exista o nepotrivire ntre numele din certicat i numele saitului solicitat de client. consecint, s In a clientul ar declara saitul ca ind unul fals. O pagin web este format, mod obinuit, din mai multe obiecte, cu a a n s URL-uri diferite (pagina HTML propriu-zis i imaginile din pagin). a s a aceste conditii, este posibil ca, In ntr-o aceeai pagin, unele dintre eles a mente s e securizate i celelalte elemente s e nesecurizate. De asemea s a nea, este posibil ca diferite elemente s provin de pe saituri diferite, a a autenticate prin certicate diferite. Intr-un astfel de caz, navigatorul web trebuie s avertizeze utilizatorul. a

11.4. PGP/GPG
Preety Good Privacy (PGP) este un program pentru criptarea i s semnarea digital a mesajelor de pot electronic i a ierelor general. a sa as s n Gnu Privacy Guard, abreviat GPG sau GnuPG, este o reimplementare a PGP, cu statut de soft liber. Prezentm continuare principalele concepte legate de constructia a n i functionarea GnuPG. s

11.4.1. Structura cheilor GnuPG


PGP cripteaz mesajele, utiliznd metode simetrice i chei efemere, a a s transmite cheile efemere prin criptare asimetric i creaz semnturi electronas a a ice asupra mesajelor. acest scop, ecare utilizator GnuPG trebuie s aib nite perechi In a a s de chei pentru criptare asimetric i pentru semntur. as a a GnuPG memoreaz, nite iere gestionate de el, cheile publice i a n s s s private ale utilizatorului ce execut comanda gpg, precum i cheile publice ale a s partenerilor utilizatorului ce execut gpg. a Descriem continuare structura cheilor GnuPG, precum i operatiile n s ce pot executate asupra cheilor memorate local. Transmiterea cheilor publice ntre utilizatori va descris 11.4.2. a n Aarea cheilor publice din ierele gestionate de GnuPG se face prin s s comanda gpg --list-keys

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 391

Aarea cheilor secrete se face prin comanda s gpg --list-secret-keys 11.4.1.1. Chei primare i subchei s Cheile GnuPG sunt de dou tipuri: chei primare i subchei. O cheie a s primar (de fapt, o pereche primar de chei) este a a ntotdeauna o pereche de chei pentru semntur digital. O subcheie (de fapt, sub-pereche de chei) este a a a subordonat unei anumite perechi primare. Fiecare subcheie poate cheie de a criptare sau cheie de semntur. a a Fiecare utilizator are o cheie primar i, subordonate acesteia, zero as sau mai multe subchei. modul cel mai simplu de lucru, ecare utilizator In GnuPG are asociate, dou perechi de chei: o pereche primar de chei pena a tru semntur digital i o sub-pereche de chei pentru criptare asimetric. a a a s a Perechea de chei de criptare este folosit pentru a trimite mesaje secrete posa esorului perechii de chei. Perechea de chei de semntur este folosit atunci a a a cnd posesorul trimite mesaje semnate. a Fiecare cheie public are asociat aa-numita amprent a cheii (engl. a a s a key ngerprint). Aceasta este un ir de biti, calculati, printr-o functie de s dispersie criptograc, din cheia public respectiv. a a a Pentru a ne putea referi la o pereche de chei, ecare pereche de chei (e ea primar sau subcheie) are asociate doi identicatori de cheie (engl. key a ID): Identicatorul lung (engl. long key ID) este format din 16 cifre hexa. Sansele ca dou chei distincte s aib acelai identicator lung sunt a a a s extrem de mici, astfel at identicatorul lung este sucient pentru a nc identica unic orice cheie. Totui, identicatorul lung nu este utilizabil, s locul amprentei cheii, pentru vericarea autenticitii acesteia. n at 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 chei cu acelai identicator scurt, el poate folosit pentru a ne a s referi la o cheie. Identicatorul unei perechi de chei este calculat, printr-o functie de dispersie, din cheia public din pereche. a Identicatorii scurti ai cheilor pot listati prin comanda
gpg --list-keys

Pentru a lista identicatorii lungi, se poate da comanda

c 2008, Radu-Lucian Lupa s


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 pot electronic sau sa a numele complet al proprietarului cheii. 11.4.1.2. Utilizatori i identiti s at Fiecrei chei primare este asociat una sau mai multe identiti. a i a at Fiecare identitate este un nume complet de utilizator, format din trei componente: numele real (numele i prenumele persoanei), adresa de pot elecs sa scrierea numelui complet, adresa de tronic i, optional, un comentariu. In a s pot electronic se scrie sa a ntre semne mai mic i mai mare, iar comentariul se s scrie ntre paranteze. Exemple:
Ion Popescu <ion@example.com> Gheorghe Ionescu (Presedinte ONG) <gion@ong.example.com>

Este posibil ca o cheie primar s aib asociate mai multe identiti. a a a at Acest lucru este util dac un utilizator are mai multe adrese de pot eleca sa tronic i dorete asocierea tuturor acestora cu aceeai cheie. as s s Reciproc, un acelai nume complet poate asociat mai multor chei s primare. Acest lucru se ampl deoarece nu poate nimeni s nt a a mpiedice doi utilizatori s genereze dou chei i s le asocieze acelai nume complet. a a s a s Mai mult, aceast posibilitate este utilizat frecvent situatia care a a n n aceast situatie, cheia primar a unui utilizator expir sau este revocat. In a a a a utilizatorul poate crea o nou cheie primar creia s-i asocieze acelai nume a a a a s complet. 11.4.1.3. Generarea i modicarea cheilor s Generarea unei chei primare se face cu comanda
gpg --gen-key

Comanda este interactiv, solicitnd utilizatorului urmtoarele informatii: tipul a a a cheilor generate i dimensiunea acestora, durata de valabilitate a cheilor, nus mele complet al utilizatorului i parola utilizat pentru criptarea cheii secrete. s a Comanda genereaz o pereche primar de chei (de semntur) i a a a a s i asociaz o identitate. Optional, comanda poate genera i o sub-pereche de a s

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 393

chei de criptare, subordonat perechii primare. Ulterior, se pot aduga noi a a subchei i identiti sau se pot terge subcheile i identitile asociate. s at s s at La generarea cheilor, GnuPG aeaz amprenta a cheii primare gens a erate. Este bine ca utilizatorul s noteze amprenta cheii generate. Acest lucru a este util la transmiterea cheii publice ctre partenerii de comunicatie. a Pentru o cheie primar dat, proprietarul ei poate crea (i, eventual, a a s terge) subchei. Pentru acestea, se lanseaz comanda s a gpg --edit-key cheie La lansarea acestei comenzi, gpg ateapt, de la utilizatori, subcomenzi pentru s a modicarea unor date privitoare la cheia primar identicat prin parametrul a a cheie. Terminarea seriei de subcomenzi se face dnd, mai ai, subcomanda a nt save pentru a memora efectiv modicrile efectuate, urmat de subcomanda a a quit. Crearea unei noi subchei se face cu subcomanda addkey. Subcheia creat poate o cheie de criptare sau o cheie de semntur. a a a La tergerea unei subchei se utilizeaz subcomenzile key i delkey. s a s Stergerea unei subchei este util doar dac subcheia nu a fost a transmis a a nc a nimnui. Nu exist o metod simpl de a propaga tergerea asupra cpiilor a a a a s o subcheii respective. Ca urmare, dac proprietarul dorete ca o subcheie, deja a s transmis partenerilor si, s nu mai e utilizat, solutia este revocarea suba a a a cheii i nu tergerea ei. s s Pentru a aduga, terge sau revoca o identitate asociat unei chei, se a s a lanseaz comanda a gpg --edit-key cheie i apoi se utilizeaz subcomenzile: adduid, uid, deluid, revuid, primary. s a Dup modicarea identitilor asociate unei chei primare, este necesar rea at a transmiterea cheii spre partenerii de comunicatie (vezi 11.4.2.1). 11.4.1.4. Controlul perioadei de valabilitate a cheilor Valabilitatea unei chei sau subchei este controlat pe dou ci: prin a a a xarea unei perioade de valabilitate, dup expirarea creia cheia nu mai este a a valid, i prin revocarea cheii. Controlul valabilitii unei chei este necesar a s at pentru a pre ampina utilizarea unei chei publice cazul care cheia secret nt n n a corespunztoare a fost aat de o persoan neautorizat. a a a a Perioada de valabilitate a unei chei sau subchei se xeaz la generarea a acesteia. Ulterior, perioada de valabilitate poate modicat cu comanda a gpg --edit-key cheie

c 2008, Radu-Lucian Lupa s


394 11.4. PGP/GPG

cu subcomenzile key i expire. s Pentru revocarea unei chei primare, se creaz un certicat de revocare, a semnat de proprietarul cheii primare. Certicatul de revocare se transmite apoi partenerilor de comunicatie. Generarea certicatului de revocare se face prin comanda gpg -a -o ier --edit-key cheie s Certicatul de revocare este scris ierul cu nume ier. Pentru ca revocarea n s s s aib efect, certicatul de revocare trebuie importat prin comanda a a gpg --import ier s Odat importat un certicat de revocare pentru o cheie primar, semnturile a a a create cu acea cheie primar sau cu o subcheie a acesteia sunt considerate a invalide i, general, la orice utilizare a acelei chei sau a unei subchei gpg d s n a un avertisment. De asemenea, atunci cnd acea cheie primar este transmis a a a spre alti utilizatori (vezi 11.4.2.1), certicatul de revocare este transmis mpreun cu cheia revocat. a a Ca utilizare recomandabil, este bine ca, la crearea unei chei primare, a proprietarul ei s genereze imediat un certicat de revocare pe care s-l in a a t a ntr-un loc sigur. cazul care pierde cheia sau bnuiete c acea cheie In n a s a secret a fost aat de un adversar, proprietarul transmite partenerilor si a a a certicatul de revocare. Inainte de revocare, certicatul de revocare trebuie s a nu poat citit de nimeni; caz contrar, un adversar care obtine certicatul a n de revocare poate provoca neplceri proprietarului revocndu-i cheia. a a Revocarea unei subchei const adugarea la subcheie a unui mara n a caj, semnat de proprietarul subcheii, prin care se anunt c acea subcheie a a trebuie s nu mai e utilizat. O subcheie revocat este tratat similar cu o a a a a subcheie sau cheie expirat: dac se a a ncearc utilizarea ei, gpg d un mesaj a a de avertisment. Revocarea unei subchei se face cu ajutorul comenzii gpg --edit-key cheie cu subcomenzile key i revkey. s De notat c, dup revocarea sau schimbarea perioadei de valabilitate a a a unei subchei, subcheia modicat trebuie s ajung la partenerii propria a a etarului cheii (vezi 11.4.2.1).

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 395

11.4.1.5. Gestiunea cheilor secrete GnuPG plaseaz cheile secrete a ntr-un ier gestionat de GnuPG. s Acest ier este creat cu drepturi de citire ( sistemul de operare) doar pentru s n utilizatorul curent. Cheile sunt, mod normal, criptate cu o parol dat de utilizator. n a a Parola de criptare poate schimbat cu comanda a gpg --edit-key cheie subcomanda passwd. Cheile secrete pot exportate, prin comanda gpg -a -o ier --export-secret-keys cheie s Aceast comand export cheia secret primar identicat prin parametrul a a a a a a cheie, precum i subcheile sale secrete. Cheile secrete pot importate prin s comanda gpg --import ier s Acest lucru este util dac utilizatorul lucreaz pe mai multe calculatoare i a a s dorete s utilizeze aceeai chei pe mai multe calculatoare. Cheia secret este s a s a exportat forma criptat. a n a Exist posibilitatea de-a exporta doar subcheile secrete ale unei chei a primare. Acest lucru se face prin comanda gpg -a -o ier --export-secret-subkeys cheie s Cu ajutorul acestei comenzi, un utilizator poate ine cheia primar secret t a a pe un calculator sigur i poate transmite subcheile secrete ctre un calculator s a mai putin sigur pe care utilizeaz frecvent. acest mod, el poate utiliza l a In calculatorul mai nesigur pentru transmite mesaje semnate i primi mesaje s criptate utiliznd subcheile, fr a a risca compromiterea cheii primare a a a ns n cazul care cineva ar sparge acel calculator. Pentru o astfel de utilizare, n subcheile se creaz cu durat de valabilitate scurt i se revoc la nevoie. a a a s a Cheia primar este bine s aib durat lung de utilizare pentru a benecia a a a a a de semnturile obtinute de la alti utilizatori asupra ei (vezi 11.4.2.2). a

11.4.2. Transmiterea i certicarea cheilor publice s


11.4.2.1. Transmiterea cheilor publice Cheile publice primare, identitile asociate, semnturile asupra idenat a titilor (vezi 11.4.2.2), subcheile publice subordonate cheilor primare i cerat s ticatele de revocare ale cheilor primare sau subcheilor sunt memorate ntr-un ier gestionat de GnuPG. s

c 2008, Radu-Lucian Lupa s


396 11.4. PGP/GPG

Transmiterea acestor obiecte de la un utilizator la altul se poate face prin dou metode: a prin iere (transmise, de exemplu, prin pot electronic sau prin web); s sa a prin servere de chei. La transmiterea prin iere, un utilizator export una sau mai multe s a chei primare, mpreun cu identitile, semnturile, subcheile i certicatele a at a s de revocare asociate acelor chei primare, ntr-un ier. Cellalt utilizator s a primete ierul (transmis prin pot electronic, web, pe o dischet sau prin s s sa a a alte mijloace) i import continutul GnuPG-ul local. s i a n Exportul unei chei publice primare, mpreun cu toate identitile, a at subcheile publice, semnturile i certicatele de revocare asociate, se face prin a s comanda gpg -a -o ier --export cheie s unde parametrul cheie este identicatorul cheii sau a uneia dintre subchei sau numele utilizatorului creia apartine, iar parametrul ier reprezint a i s a ierul care se vor scrie datele. Parametrul cheie poate lipsi sau poate s s n a nu identice o unic cheie primar; acest caz, toate cheile primare respective a a n sunt exportate. Importarea unei chei dintr-un ier se face prin comanda s gpg --import ier s Prin operatia de import, cheile i celelalte obiecte din ierul importat s s sunt adugate celor locale sau, eventual, le modic pe acestea. Niciodat a a a a ns nu sunt terse obiecte locale pe motiv c nu se regsesc ierul importat. Din s a a n s acest motiv, tergerea unei chei primare, subchei, identiti sau semnturi nu s at a poate transmis asupra partenerilor de comunicatie. Invalidarea unei chei, a identiti sau semnturi se poate face doar prin revocarea acesteia i apoi at a s transmiterea certicatului de revocare. La transmiterea prin servere de chei, primul utilizator ncarc, pe un a server de chei, cheile i celelalte obiecte de transmis, iar cellalt utilizator le s a descarc de pe serverul de chei. a Transmiterea unei chei primare i a obiectelor asociate ctre un server s a de chei se face prin comanda gpg --keyserver server --send-key cheie Descrcarea unei chei i a obiectelor asociate de pe un server de chei a s se face prin comanda gpg --keyserver server --recv-key cheie

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 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, implicit, GnuPG nu consider o cheie a a proaspt importat ca ind autentic. La utilizarea unei chei publice a crei a a a a autenticitate nu a putut vericat, GnuPG d un mesaj de avertizare. Vera a icarea autenticitii este descris paragraful urmtor. at a n a 11.4.2.2. Vericarea autenticitii cheilor at GnuPG veric automat, a nainte de utilizarea unei chei publice, autenticitatea acesteia. Autenticitatea cheilor se veric cu ajutorul certicatelor a (vezi 6.3.4). terminologia GnuPG, un certicat este numit semntur In a a asupra unei chei. O sub-cheie este mod normal semnat cu cheia primar creia n a a a i este subordonat. O sub-cheie a crei semntur este valid este considerat a a a a a a autentic dac i numai dac cheia primar coresunztoare este considerat a a s a a a a autentic. consecint, dac se import noi sub-chei pentru o cheie primar a In a a a a declarat autentic, sub-cheile respective sunt imediat considerate autentice. a a Restul paragrafului de fat trateaz doar cheile primare. Reamintim a a c o cheie primar este a a ntotdeauna o cheie de semntur. a a O cheie public pentru care GnuPG dispune de cheia secret corea a spunztoare este automat considerat autentic. De asemenea, este consida a a erat autentic orice cheie specicat printr-o optiune a a a --trusted-key cheie e la executia comenzii gpg, e ierul cu optiunile implicite. afara n s In acestor dou cazuri, GnuPG consider o cheie autentic numai dac dispune a a a a de un certicat valid pentru ea i mai sunt s ndeplinite urmtoarele conditii: a cheia cu care este semnat certicatul este deja declarat ca autentic, a a semnatatul certicatului este considerat de ncredere. GnuPG retine, asociate ecrei chei primare, dou informatii (inde a a pendente una de alta): dac autenticitatea ei este vericat sau nu; a a nivelul de ncredere, acordat de utilizatorul care execut gpg, proprietarua lui acelei chei.

c 2008, Radu-Lucian Lupa s


398 11.4. PGP/GPG

Un utilizator poate acorda proprietarului unei chei: ncredere deplin (full trusting) semntura acelui utilizator asupra a a unei identiti este sucient pentru ca acea identitate s e considerat at a a a vericat; a ncredere minimal (marginally trusting) o identitate semnat doar de a a utilizatori de ncredere minimal s e considerat vericat este necesar a a a a un anumit numr de astfel de semnturi (implicit 3). a a zero ncredere (no trusting) semntura unui astfel de utilizator nu este a luat considerare. a n Nivelul de ncredere acordat proprietarului unei chei este implicit zero. El poate modicat cu comanda gpg --edit-key cheie i subcomanda trust a acesteia. s Implicit, GnuPG are ncredere deplin proprietarul unei chei pena n tru care dispune de cheia secret corespunztoare (altfel spus, utilizatorul a a n care lanseaz comanda gpg), precum i proprietarii cheilor specicate prin a s n optiunea --trusted-key. Crearea, de ctre utilizatorul ce execut gpg, a unei semnturi asupra a a a unei identiti asociate unei chei se face prin comanda at gpg --sign-key cheie sau gpg --lsign-key cheie cazul primeia dintre comenzi, semntura poate transmis i altor utilizaIn a as tori GnuPG (vezi 11.4.2.1). A doua comand creaz o semntur pentru uz a a a a local. Este esential, pentru securitatea sistemului, ca un utilizator s nu a semneze un set de chei fr s-i verice mai ai autenticitatea. Autenticitatea aa a nt setului de chei se poate asigura dou moduri: n a Fiierul din care se import setul de chei este adus pe o cale sigur, de s a a exemplu printr-o dischet dat personal de ctre proprietarul cheii sau a a a este descrcat de pe un sait web securizat (https) i de a s ncredere. ai, amprenta cheii primare este transmis pe o cale sigur, de exemInt a a plu pe un bilet scris de ctre proprietarul cheii sau printr-o convorbire a telefonic cu proprietarul cheii. Apoi, la importarea i semnarea setului a s de chei, utilizatorul veric amprenta cheii primare din set. a

c 2008, Radu-Lucian Lupa s


Capitolul 11. Aplicatii retele n 399

11.4.3. Transmiterea mesajelor criptate sau semnate


Crearea unui mesaj criptat i semnat se face astfel: s gpg -o -ieire -r cheie-dest -se -intrare s s s sau gpg -a -o -ieire -r cheie-dest -se -intrare s s s unde -intrare este ierul ce trebuie semnat i criptat, -ieire este ierul s s s s s s n care comanda gpg va pune datele criptate i semnate, iar cheie-dest reprezint s a numele utilizatorului destinatie sau identicatorul cheii de criptare de utilizate. Cea de-a doua variant produce un ier text ASCII, prin recodicare baza a s n 64. Un mesaj poate adresat mai multor destinatari; pentru aceasta, se pot da, comanda gpg, mai multe optiuni -r, ecare urmat de numele n a unui utilizator destinatie. Oricare dintre destinatarii astfel specicati poate s decripteze mesajul criptat. a La criptarea unui mesaj, GnuPG genereaz aleator o cheie efemer, a a cripteaz textul clar utiliznd cheia efemer, iar apoi cripteaz cheia efemer a a a a a utiliznd cheia public a destinatarului. Dac sunt mai multi destinatari, a a a GnuPG cripteaz, pentru ecare destinatar, cte o copie a cheii efemere, utia a liznd cheia public a acelui destinatar. a a Decriptarea unui mesaj se face prin comanda gpg -o -ieire --decrypt -intrare s s s unde -intrare este ierul semnat i criptat, iar -ieire este ierul care s s s s s s n comanda gpg va pune rezultatul decriptrii. Comanda veric i semntura a as a i aeaz pe ecran rezultatul vericrii. s s a a 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 autenticitii mesajului. Comanda de criptare este similar cu cea pentru criptare at a i semnare, dar cu -e loc de -se. Comanda de decriptare este identic cu s n a cea pentru un mesaj criptat i semnat. s Pentru generarea unui mesaj semnat dar necriptat exist trei posia biliti: semntur inclus mesaj, semntur detaat i semntur clar. at a a a n a a s as a a n Semntura inclus se genereaz similar cu generarea unui mesaj cripa a a tat i semnat, dar lipsesc destinatarii (optiunile -r) i loc de -se se d doar s s n a -s. Fiierul generat contine datele originale i semntura. Extragerea datelor s s a

c 2008, Radu-Lucian Lupa s


400 11.4. PGP/GPG

i vericarea semnturii se face exact ca cazul unui mesaj criptat i semnat, s a n s adic prin comanda: a gpg -o -ieire --decrypt -intrare s s s Semntura detaat se genereaz prin comanda a s a a gpg -a -o -sign --detach-sign -date s s Rezultatul comenzii este scrierea ierul -sign a semnturii continutului n s s a ierului -date. Fiierul produs, -sign, este mic i contine doar semntura; s s s s s a datele utile nu pot recuperate din el. Vericarea semnturii se face prin a comanda: gpg --verify -sign -date s s Semntura detaat este util deoarece pstreaz intact ierul de a s a a a a s date, neind nevoie de gpg pentru recuperarea datelor. De asemenea, permite mai multor utilizatori s semneze un acelai ier de date. a s s ne, semntura clar se poate utiliza doar dac datele sunt text In a n a ASCII. Semntura se genereaz prin comanda: a a gpg -o -ieire --clearsing -intrare s s s Fiierul astfel produs este un ier text, care poate citit uor de ctre utis s s a lizatorul uman. Textul original este pus ntre nite marcaje, iar semntura s a este adugat la sfrit. Vericarea semnturii se face prin comanda: a a as a gpg --verify s Semntura clar este util pentru semnarea documentelor text. a n a Acestea rmn uor de citit de ctre om i, spre deosebire de semntura a a s a s a detaat, datele utile i semntura sunt puse s a s a ntr-un singur ier. s Dac GnuPG are mai multe chei secrete (inclusiv subchei, 11.4.1.1) a utilizabile pentru semntur, se poate specica ce cheie trebuie utilizat pentru a a a crearea semnturii. Specicarea cheii se face adugnd optiunea a a a -u cheie GnuPG se utilizeaz curent pentru autenticarea softului liber. a In acest scop, alturi de programul distribuit, se distribuie un ier ce contine a s semntura detaat a ierului ce contine programul. a s a s

c 2008, Radu-Lucian Lupa s


401

Bibliograe

[Boian 1999] Florian Mircea Boian. Programarea distribuit Internet. a n Editura Albastr, 1999. a [Cohen 1980] Danny Cohen. On holy wars and a plea for peace, 1980. http://www.ietf.org/rfc/ien/ien137.txt. [Crstici et al. 1981] B. Crstici, T Banzaru, O. Lipovan, M. Neagu, N. Neamtu, N. Neuhaus, B. Rendi, D. Rendi, I Sturz. Matem atici speciale. Editura didactic i pedagogic, Bucureti, 1981. as a s [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 Lupa s


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, Bucureti, 1987. a s [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 Lupa s


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 Lupa s


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. [Sptaru 1965] Al. Spataru. Teoria transmisiunii informatiei. Editura a Tehnic, Bucureti, 1965. a s [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. Retele de calculatoare. Byb los, 2003.

c 2008, Radu-Lucian Lupa s


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, 98, 266 a Internet, 294, 297, 300 IP, Vezi adres, Internet a MAC, 98, Vezi adres zic, 340 a a privat, 303, 348, 349 a de retea, 119 , subretea, 297 n , unei subretele, 302 , translatie, 349 , adversar, O entitate care intercepteaz sau a modic mesajele schimbate a ntre alte dou entitti, cu scopul obtinerii sau a a, , modicrii informatiei transmise. Vezi a , pg. 149

activ, Un adversar care intercepteaz a si modic dup voie mesajele a a , schimbate ntre dou entitti. Vezi a a, pg. 149 pasiv, Un adversar care intercepteaz a doar comunicatia, fr a o modia a , ca. Vezi pg. 149 agent de autenticare, 380 Aloha, 100 AM, Vezi modulatie de amplitudine , anten, 78 a anycast, 17 AP, Vezi access point ARP, 340 atenuare, 61 factor de, Raportul ntre puterea semnalului msurat la bornele a emittorului si puterea semnalu,a , lui msurat la bornele receptorua lui. Vezi pg. 61 AUI, 278 autenticare entitate, 150 mesaj, 149 surs, 150 a B B, Vezi bel band a lateral, 70 a ltime de, Diferenta dintre frecventa a, , , maxim si frecventa minim a a , a , benzii de trecere. Prin abuz

c 2008, Radu-Lucian Lupa s


406
de limbaj, mai are sensul de debit maxim de transmitere a informatiei al unui dispozitiv. Vezi , pg. 65, 72 de trecere, Interval de frecvente care , n dac se a ncadreaz spectrul unui a 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 informatiei. Vezi pg. 65, , 72 de trecere (br optic), 92 a a Basic Service Set, Vezi celul wireless a baza 64, Vezi codicare baza 64 n BCD, Vezi codicare binar-zecimal (pentru a numere) beacon, 286, 288 bel, Pseudo-unitate de msur pentru logaa a ritmul raportului ntre dou mrimi, a a de regul mrimile ind puterile a a a dou semnale. a Indic faptul c a a numrul din fata unittii este un loga a, , aritm zecimal. Are simbolul B. Este utilizat mai mult submultiplul numit decibel. Vezi pg. 62 BNC, 279 broadcast, Vezi difuziune complet, 140 a BSS, Vezi celul wireless a BSS-ID, 285 C cablu inversor, 269 unu-la-unu, 269 canal de comunicatie, 25 , continuu, 25 discret, 25 cu perturbatii, 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 lung, 175 a a efemer, 175 a 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, 28 a prex, 27 unic decodabil, 27 codicare baza 64, 231 n big endian, 255 binar-zecimal (pentru numere), a 216 binar (pentru numere), 255 a hexazecimal, 230 a little endian, 255 retea (pentru numere), 255 , text (pentru numere), 216 coliziune, 266, 277 comutator, 267 condentialitate, 149 , conrmare, 102 si retransmitere, 103, 318 , congestie, 308 controlul uxului, 114 corectarea erorilor, 51 criptare, 151 cryptographic hash function, Vezi dispersie criptograc, functie de a , CSMA, 100 CSMA/CA, 101, 287 CSMA/CD, 101, 277

c 2008, Radu-Lucian Lupa s


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 msur avnd ca a a a valoare o zecime de bel. Are simbolul dB. Vezi pg. 62 decibel-miliwatt, Pseudo-unitate de msur pentru logaritmul puterii unui a a semnal, indicnd logaritmul, decia n beli, ai raportului dintre puterea semnalului msurat si o putere de 1 mW. a , Vezi pg. 62 decriptare, 151 decryption, Vezi decriptare descifrare, Vezi decriptare destinatie, 25, 59 , detectarea erorilor, 51 diafonie, Zgomot ce are ca provenient un ,a semnal transmis pe un mediu apropiat zic de mediul ce transmite semnalul considerat. Vezi pg. 62 difuziune, 17 complet, 17, 140 a selectiv, 17, 140 a dirijare, 126, 298 dispersie, 166 criptograc a functie de, 166 , functie de, 166 , intermodal, 92 a distorsiune, Modicare determinist a sema nalului receptionat fat de cel emis, a , , diferit de arziere si atenuare. a nt , Distorsiuniea se manifest la fel a oridecteori se transmite un acelasi a , semnal prin acelasi dispozitiv, n , opozitie cu zgomotul care este aleator. , Vezi pg. 62 distribution system, 286 DS, Vezi Distribution System duplex legtur Ethernet, 268 a a E echo reply, Vezi ecou, rspuns a request, Vezi ecou, cerere ecou cerere, 307 rspuns, 307 a ecran, 73 ecient ,a unui cod, 42 emittor, 25, 59 ,a 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 modulatie de frecvent , ,a forgery choosen, Vezi fals ales existential, Vezi fals existent format, Vezi codicare frecvent, 77 ,a purttoare, 69 a FTP, 383 G gateway, 299 default, 300 H hash function, Vezi dispersie, functie de , host, Vezi nod nal htonl, 255 htons, 255 HTTP, 384

407

c 2008, Radu-Lucian Lupa s


408
HTTPS, 391 hub, 267 I IBSS, 286 ICMP, Vezi Internet Control Message Protocol ICMPv4, 304 ICMPv6, 304 IMAP, 356 impedant ,a caracteristic, 74 a de iesire, 75 , de intrare, 75 informatie, 25 , cantitate de, 40 infrastructur (wireless), 286 a arziere, 61 nt integritate vericare, 150 interfat ,a de retea, 265, 296 , Internet, 1. Protocol de comunicatie de , nivel retea. 2. Retea la scar mona , , dial construit pe baza protocolului a a 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 lung a a session, Vezi cheie efemer a L ltime a, de band, Vezi band, ltime a a a, lob al antenei, 81 lungimea de und, Vezi und, lungime de a a M magistral, 75, 265 a

Index: HTTPSnetwork
mail transfer agent, 355, 364 user agent, 355 managed (wireless), Vezi infrastructur a masc a de retea, 302 , master DNS, 337 mediu de transmisie, Dispozitiv capabil s a transmit la distant o actiune a ,a , zic de la emittor la receptor. a ,a Vezi pg. 59 mesaj, 27 microunde, 77 MIME, 360 mod de propagare (bre optice), 91 modulatie, 68 , de amplitudine, 69 cuadratur, 70 n a de faz, 70 a de frecvent, 70 ,a MTA, Vezi mail transfer agent, 367 MUA, Vezi mail user agent multicast, Vezi difuziune selectiv a multimod (bra optic), Vezi br multia a mod multiplexare frecvent, Procedeu prin care mai n ,a multe comunicatii simultane pot , partaja acelasi mediu zic prin , transmiterea semnalelor corespunztoare comunicatiilor prin a , modulatie utiliznd frecvente a , , purttoare diferite. a lungimea de und, Procedeu de muln a tiplexare care mai multe semn nale optice utiliznd lungimi de a und diferite sunt transmise prin a aceeasi br optic. Vezi pg. 93 a a , timp, 117 n MX, 367, 369 N NAT, Vezi adres, translatie a , nerepudiabilitate, 149 network

c 2008, Radu-Lucian Lupa s


Index: NICspoofing
address translation, Vezi adres, a translatie , interface card, Vezi interfat de retea ,a , name (wireless), Vezi SSID NIC, Vezi interfat de retea ,a , nod, 119, 293 nal, 119, 293 intermediar, 119, 293 nonce, Vezi numr unic a notatie , zecimal a cu punct, 301 simpl, 301 a ntohl, 255 ntohs, 255 numr a de secvent, 104, 318 ,a 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, 73, 268 a torsadat neecranat, 269 a a ping, Vezi ecou, cerere plaintext, Vezi text clar plic, 357 polinom generator, 57 pong, Vezi ecou, rspuns a POP3, 356 port, 266 TCP, 327 UDP, 331 portal, 286 prag de sensibilitate, 62 prex de retea, 297, 302 , priz a vampir, 278

409
prospetime , vericare, Vezi vericare prospetime , protocol, 16, 22 punct la punct, 16 purttoare, Vezi frecvent, purttoare a a ,a R raport semnal/zgomot, 62 receptor, 25, 59 redundant, 42 ,a regul a de dirijare, 298 reliable transmission, Vezi transmisie sigur a repeater, Vezi repetor repetor, 266 reprezentare a informatiei, 25 , request to send, 288 retea , privat, 348 a RJ45, 269 round-trip time, Vezi timp dus- ntors router, Vezi nod intermediar RTS, Vezi request to send RTT, Vezi timp dus- ntors rut, 119 a ruter, Vezi nod intermediar S securizare, 149 semi-duplex, 97 semnal, Mrimea zic ce msoar actiunea a a a a , produs de emittor si transmis de a a ,a , ctre mediu pn la receptor si care a a a , este utilizat efectiv ca purttoare a a a informatiei. 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 Lupa s


410
IP, 325 SSH, 375 SSID, 286 SSL, 389 statie, Vezi nod nal , subretea, 136 , IP, 296 sux subretea, 297 n , surs, 25, 59 a 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 (pachet IP), 308 ,a tip nregistrare DNS, 334 TLS, 389 translatia adresei, Vezi adres, translatie a , , transmisie sigur, 103 a 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, 77 a lungime de, 77 radio, 77 unicast, 16 unshielded twisted pairs, Vezi pereche torsadat neecranat a a UTP, Vezi perechi torsadate neecranate V vecin, 119 vector de initializare, 154 , vericare integritate, Vezi integritate, vericare prospetime, 150 , VLAN, 283 VLAN-ID, 283 W wavelength division multiplexing, Vezi multiplexare lungimea de und n a WDM, Vezi multiplexare lungimea de n und a window manager, 382 Z zgomot, Modicare nedeterminist a sema nalului receptionat fat de cel emis. , ,a Pentru comparatie, vezi si distorsiune. , , Vezi pg. 62 zon a DNS, 335

You might also like