Documente Academic
Documente Profesional
Documente Cultură
Retele de Calculatoare
Retele de Calculatoare
Principii
Radu-Lucian Lup sa
Aceasta este edit ia electronic a a c art ii Ret ele de calculatoare, publicat a la Casa C art ii de S tiint a, n 2008, ISBN: 978-973-133-377-9. Drepturile de autor apart in subsemnatului, Radu-Lucian Lup sa. Subsemnatul, Radu-Lucian Lup sa, acord oricui dore ste dreptul de a copia cont inutul acestei c art i, integral sau part ial, cu condit ia atribuirii corecte autorului si a p astr arii acestei notit e. Cartea poate desc arcat a gratuit de la adresa http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf
Cuprins
Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de ret ea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei ret ele de calculatoare . . . . . . . . . . 1.3 Premise generale n elaborarea si implementarea protocoalelor n ret ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Not iuni de teoria informat iei 2.1 Problema codic arii informat iei pentru un canal discret . . 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a a codurilor prex . . . . . 2.2.2 Decodicarea n cazul codurilor prex . . . . . . . . . 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informat ie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia sierelor . . . . . . . . . . . . . . . . . . . 2.4 Coduri detectoare si corectoare de erori . . . . . . . . . . . 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare si corectoare de erori . 2.4.3 C ateva coduri detectoare sau corectoare de erori . . . 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii si coloane . . . . . . . . . . . . . 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare si corectoare de erori n alte domenii 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Protocoale
Cuprins 7 Codic ari de interes practic 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezent ari pe bit i . . . . . . . . . . . . . . . . . . . . . . 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 S iruri de bit i . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe bit i a numerelor ntregi . . . . . . . 7.1.2 Reprezent ari pe octet i . . . . . . . . . . . . . . . . . . . . . 7.1.2.1 Octet i . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 S iruri de octet i . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un num ar ntreg de octet i 7.1.2.4 Reprezentarea numerelor pe un sir arbitar de bit i . . . 7.1.3 Probleme privind reprezentarea lungimii sirurilor . . . . . . 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
Ret ele IEEE 802 9.1 Ret ele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Leg aturi punct la punct prin perechi de conductoare 9.1.2 Leg aturi prin bre optice . . . . . . . . . . . . . . . 9.1.3 Leg aturi prin cablu magistral a . . . . . . . . . . . . 9.1.4 Repetoarele si comutatoarele . . . . . . . . . . . . . 9.1.5 Dirijarea efectuat a de comutatoare (switch-uri) . . . 9.1.6 Facilit a ti avansate ale switch-urilor . . . . . . . . . . 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz a de adrese MAC . . . . . . . . 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Leg aturi redundante . . . . . . . . . . . . . . . 9.1.6.5 Ret ele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei ret ele . . . . . 9.2 Ret ele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea ret elelor 802.11 . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
10 Internetul 10.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirij arii pachetelor IP . . . . . . . . 10.2.2.1 Subret ele si interfet e . . . . . . . . . . 10.2.2.2 Prexul de ret ea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor si prexelor . . 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de ret ea . . . . . . . 10.2.4 Alocarea adreselor IP si prexelor de ret ea 10.2.4.1 Alocarea pe utiliz ari . . . . . . . . . . 10.2.4.2 Alocarea adreselor si dirijarea ierarhic a
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prefat a
In contextul prezent al dezvolt arii ret elelor de calculatoare, este inutil s a mai subliniem important a acestui domeniu. Lucrarea de fat a se adreseaz a n principal programatorilor de aplicat ii n ret ea si administratorilor de ret ele complexe. Sunt presupuse, din partea cititorului, cuno stint e de baz a de programare, precum si privind funct ionarea sistemelor de operare. Ca un avertisment pentru programatori, ment ion am c a, de si lucrarea trateaz a chestiuni de nivel mult mai cobor at dec at cel al platformelor si bibliotecilor utilizate n mod normal n aplicat iile n ret ea, este totu si util a n vederea unei bune nt elegeri a acestor platforme si biblioteci. Tot ceea ce are leg atur a ntr-un fel sau altul cu calculatoare are dou a caracteristici: se dezvolt a foarte repede si est foarte complex. Ret elele de calculatoare nu fac except ie. Ca urmare, este extrem de u sor pentru oricine s a se piard a n nenum aratele detalii n permanent a schimbare. Consider am c a, n orice domeniu, o bun a prezentare trebuie s a porneasc a de la principiile de baz a. Principiile de baz a se sunt (relativ) simple si evolueaz a mult mai lent dec at construct iile tehnice elaborate pe baza lor. In consecint a, prima parte a lucr arii de fat a, principii, este dedicat a studierii problemelor ce trebuie rezolvate de o ret ea de calculatoare, precum si a principiilor construct iei posibilelor solut ii ale acestor probleme. Partea a doua a lucr arii, protocoale, prezint a c ateva dintre cele mai r asp andite protocoale si mecanisme utilizate n ret elele de calculatoare. Ea este construit a pentru a oferi cititorului o privire de ansamblu asupra protocoalelor studiate. Aceast a privire de ansamblu poate sucient a pentru unii cititori, n caz contrar ind probabil necesar a citirea efectiv a a standardelor. Lucrarea de fat a este rodul experient ei autorului n activit a ti legate de administrarea ret elei de calculatoare a Departamentului de Informatic a al Facult a tii de Matematic a si Informatic a din cadrul Universit a tii Babe s-Bolyai Cluj-Napoca, n predarea unui curs de Ret ele de calculatoare la aceast a fac-
ultate, precum si din activitatea de cercetare desf a surat a de-a lungul anilor, n special de nevoile practice din cadrul contractului de cercetare PNII 11003/2007 - Sistem decizional bazat pe tehnici de tip multi-agent pentru generarea, optimizarea si managementul registrelor nationale de boli cronice netransmisibile CRONIS. Seturile mari de date ce se vehiculeaz a n sistemul medical, precum si nevoia de condent ialitate si securitate a lor, cer o foarte bun a cunoa stere si punere n practic a a not iunilor legate de codicarea informat iei, de metode si protocoale criptograce, de aplicat ii n ret ele etc.
Capitolul 1
Introducere
Prin ret ea de calculatoare nt elegem un sistem (const and din componente hard si soft) care interconecteaz a ni ste calculatoare, permit and unor programe ce se execut a pe aceste calculatoare s a comunice ntre ele. De notat c a, n uzul comun, termenul de ret ea de calculatoare mai are si sensul de sistem de calcul, construit din mai multe calculatoare interconectate ntr-o ret ea, care se comport a ca un sistem unitar, de exemplu, prezint a acelea si conturi de utilizatori pe toate calculatoarele.
Ret ea
Figura 1.1: Ret eaua de calculatoare, din punctul de vedere al proceselor aplicat ie. Funct ionalitatea ret elei este oferit a prin funct ii apelabile din procesele utilizator. Ret eaua ofer a o aplicat iilor o cale de transmisie a datelor (linia punctat a). Construct ia efectiv a a ret elei nu este vizibil a aplicat iilor.
entitate ce poate comunica n ret ea trebuie s a aib a asociat a o adres a (un sir de bit i, construit dup a anumite reguli, identic and unic o anumit a entitate). Pe l ang a aceste funct ii de baz a, ret eaua mai ofer a funct ii pentru congurarea diferit ilor parametrii. O parte dintre ace sti parametri xeaz a rolul si locul diverselor componente n cadrul ret elei (de exemplu, ecare calculator trebuie s a- si cunoasc a propria adres a). Alt i parametrii sunt legat i de calitatea serviciilor oferite de ret ea (debit de transfer de date, timp de propagare, etc). Datele transmise de procesele utilizator sunt de obicei siruri arbitrare de octet i. Rolul ret elei este de-a transmite ntocmai sirul de octet i trimis de procesul surs a c atre procesul destinat ie. Semnicat ia, pentru procesul destinat ie, a unui sir de octet i transmis face obiectul unei nt elegeri (protocol ) ntre procesele utilizator. La proiectarea ret elei nu ne intereseaz a ce fac procesele utilizator cu datele transferate; la proiectarea programelor utilizator nu ne intereseaz a cum lucreaz a ret eaua pentru a transmite datele. In continuare vom trece n revist a principalele caracteristici ale serviciului oferit de ret ea proceselor de aplicat ie. O comunicat ie poate , dup a num arul destinatarilor: punct la punct , dac a exist a un singur destinatar. In mod obi snuit, destinatarul este select ionat explicit de c atre procesul emit ator; o astfel de comunicat ie este numit a unicast . Uneori ns a, de exemplu n cazul n care un serviciu este oferit de mai multe servere, echivalente din punctul de vedere al clientului, este favorabil ca ret eaua s a aleag a destinatarul comunicat iei, n funct ie de distant a fat a de emit ator, dintr-o mult ime
specicat a de destinatari posibili. Un astfel de comunicat ie se nume ste anycast . difuziune , dac a exist a mai mult i destinatari. Distingem difuziune complet a (engl. broadcast ), n care destinatari sunt toate calculatoarele dintro ret ea, si difuziune selectiv a (engl. multicast ), n care destinatarii sunt o submult ime aleas a a calculatoarelor din ret ea. Serviciul de comunicat ie oferit de ret ea poate de tip conexiune sau de tip transport de datagrame : In cazul conexiunilor, n cadrul comunicat iei ntre dou a procese se disting trei faze: - deschiderea conexiunii, n cadrul c areia sunt f acute ni ste preg atiri, inclusiv alocarea unor resurse pentru comunicat ie; - comunicat ia propriu-zis a, n care unul sau ambele procese transmite un sir de pachete sau de bit i celuilalt proces; - nchiderea conexiunii, n cadrul c areia se elibereaz a resursele alocate la deschidere. In cazul transportului de datagrame, procesul emit ator preg ate ste un ansamblu, numit datagram a (prin analogie cu telegram a ), cuprinz and un sir de bit i destinat procesului receptor si anumite informat ii necesare livr arii (adresa destinatarului). Apoi transmite datagrama ret elei de calculatoare, care o transmite procesului receptor. Mai multe datagrame trimise de acela si proces surs a c atre acela si proces destinat ie sunt transmise independent una de alta, ceea ce duce, n general, la posibilitatea invers arii ordinii de recept ie fat a de ordinea de emisie a datagramelor. Principalii parametri de calitate ai serviciului oferit de ret ea sunt: Capacitatea de transport oferit a de ret ea, sau debitul maxim acceptat , este raportul dintre num arul de bit i transportat i n cadrul unei comunicat ii si timpul n care ace stia sunt transmi si. Echivalent, capacitatea este inversul duratei medii ntre trecerea, printr-un punct dat al ret elei, a doi bit i consecutivi ai unei comunicat ii. Timpul de transfer a unui bloc de date este timpul scurs de la trecerea, printr-un punct dat, a primului bit al blocului p an a la trecerea, prin acela si punct, a ultimului bit. Timpul de transfer este egal cu raportul dintre dimensiunea blocului si debitul cu care se face transferul. Capacitatea oferit a de ret ea unei leg aturi poate s a varieze datorit a variat iei debitului altor comunicat ii care partajeaz a acelea si echipamente.
Exist a aplicat ii, de exemplul legate de transfer de siere, pentru care este important ca ret eaua s a ofere o capacitate medie c at mai mare. Penttru alte aplicat ii, cum ar telefonia, transmisia video (de exemplu pentru teleconferint e) sau alte aplicat ii n timp real, este important s a nu scad a niciodat a capacitatea leg aturii sub o anumit a valoare minim a, ns a o capacitate mai mare nu este util a. Timpul de propagare ntre dou a entit a ti este timpul scurs ntre momentul n care entitatea surs a emite un bit si momentul n care acel bit ajunge la destinat ie. Timpul de propagare rezult a din nsumarea timpului de propagare a semnalului de-a lungul mediului de comunicat ie cu diver sii timpi de a steptare a datelor n diverse zone tampon. De remarcat c a timpul de propagare a semnalului este egal cu distant a de la emit ator la receptor mp art it a la viteza de propagare a semnalului, iar viteza de propagare nu poate dep a si viteza luminii n vid; din acest motiv, de exemplu, timpul de propagare prin leg aturi prin satelit nu poate mai scurt de c ateva zecimi de secund a. Timpul scurs de la nceputul transmisiei unui bloc de date de c atre emit ator p an a la nalul recept iei blocului de c atre receptor este egal cu suma dintre timpul de transfer si timpul de propagare. Uneori, n loc de timpul de propagare se utilizeaz a o alt a m arime, timpul dus- ntors , care este timpul scurs de la transmiterea unui mesaj de c atre o partenerul de comunicat ie p an a la primirea r aspunsului din partea acestuia. Timpul dus- ntors este suma dintre timpii de propagare pentru cele dou a sensuri si timpul de procesare pentru crearea r aspunsului. Evident, timpul de propagare e bine s a e c at mai scurt, ns a diferite aplicat ii au cerint e diferite: - La unele aplicat ii timpul de propagare nu este prea important. De exemplu, la transferul unui sier mare, la care oricum timpul de transfer este mare, timpul de propagare inuent eaz a foarte put in timpul total necesar transmiterii sierului. - La difuzarea de materiale audio sau video, un timp de propagare mare nu este deranjant, ns a este important ca el s a e constant n timp. Aceasta pentru c a nu este deranjant dac a o transmisie de televiziune este cu c ateva secunde n nt arziere fat a de evenimentele transmise, ns a este important s a nu e momente n care imaginea ,, ngheat a datorit a cre sterii timpului de propagare si momente n care imaginea ,,sare nainte datorit a scurt arii timpului de propagare.
- Timpul de propagare (sau, echivalent, timpul dus- ntors) este important s a e scurt n special pentru aplicat ii n care entit a tile ce comunic a transmit mesaje scurte si trebuie s a a stepte r aspunsul la mesajul precedent pentru a putea genera mesajul urm ator. Exemple de astfel de aplicat ii sunt: telefonie, videoconferint e, sesiuni interactive la distant a. Posibilitatea existent ei erorilor de transmisie: Erorile de transmisie apar ca urmare a diverselor perturbat ii ce afecteaz a transmiterea semnalelor. Exist a metode de-a mic sora oric at de mult probabilitatea ca un mesaj s a e afectat de erori, ns a niciodat a aceast a probabilitate nu poate f acut a zero (probabilitatea unei erori poate f acut a ns a mai mic a dec at, de exemplu, probabilitatea unui cataclism devastator care s a distrug a toat a ret eaua). Metodele de reducere a probabilit a tii erorilor de transmisie sunt studiate n 2.4 si 4.1. Transmisia sigur a nseamn a ca ecare mesaj al entit a tii surs a s a ajung a exact ntr-un singur exemplar la destinat ie (s a nu se piard a si s a nu e duplicat) si mai multe mesaje transmise de c atre o aceea si surs a spre o aceea si destinat ie s a ajung a la destinat ie n ordinea n care au fost transmise de surs a. Mesajele se pot pierde datorit a erorilor de transmisie, a supraaglomer arii sau a defect arii unor echipamente din ret ea sau chiar din cauz a c a emit atorul transmite cu debit mai mare dec at este capabil receptorul s a preia informat ia transmis a. Duplicarea sau inversarea mesajelor pot cauzate de modic ari ale conguratiei sau nc arc arii ret elei n timpul trecerii pachetelor prin ret ea. Realizarea transmisiei sigure este studiat a n 4.3 si 4.4. Transmisia sigur a este evident util a, ns a vine cu un anumit cost. Cel mai adesea, costul este cre sterea si uctuat ia timpului de propagare, deoarece mesajele pierdute trebuie retransmise. La o transmisie audiovideo, este adesea preferabil a p astrarea unui timp de propagare redus, cu pret ul pierderii, din c and n c and, a unor fract iuni de secund a de material audio-video. Securitatea comunicatiei nseamn a c a un adversar care controleaz a o parte din ret ea s a nu poat a obt ine informat ia transmis a, s a nu poat a modica datele transmise f ar a ca acest lucru s a e detectat de c atre receptor si s a nu poat a impersona vreuna dintre entit a tile ce comunic a. Securitatea comunicat iei se obt ine prin metode criptograce, studiate n capitolul 6.
Nivelul zic
Mediu zic
Mediu zic
Figura 1.2: Componentele unei p art i dintr-o ret ea de calculatoare. Sunt gurate doar componentele implicate n comunicat ia dintre dou a aplicat ii. Cele dou a aplicat ii se execut a pe dou a calculatoare ntre care nu exist a o leg atur a direct a, dar exist ao leg atur a printr-un nod intermediar.
similare celor oferite de ret ea aplicat iilor (a sa cum am v azut n 1.1), dar serviciile oferite sunt mai primitive. Astfel, nivelul zic ofer a nivelului leg aturii de date servicii de transfer de date, dar numai ntre calculatoare conectate direct si cu riscul ca datele s a e alterate n timpul transferului sau s a se piard a complet. Nivelul leg aturii de date ofer a nivelului ret ea servicii de transfer de date mai sigure, dar n continuare cu restrict ia c a transferul este posibil doar ntre calculatoare conectate direct. Nivelul ret ea ofer a nivelului transport servicii de transfer de date ntre orice dou a calculatoare din ret ea, dar nc a neadecvate utiliz arii directe de c atre aplicat ii (lipsa transmisiei sigure, comunicat ie posibil a doar pentru un singur proces aplicat ie la un moment dat, etc.). Construct ia ec aruia dintre nivele este independent a de construct ia celorlalte (conteaz a doar interfat a dintre ele si parametrii de calitate a serviciului oferit de un nivel celui imediat superior). De exemplu, n proiectarea nivelului ret ea, nu ne intereseaz a nici ce aplicat ii vor utiliza ret eaua (acela si nivel ret ea din Internet este utilizat de aplicat ii de po sta electronic a, web, telefonie prin Internet si videoconferint e), nici cum este construit nivelul zic (perechi de conductoare, bre optice sau leg aturi radio prin satelit). Modulele, de pe acela si nivel, din noduri diferite si transmit unul altuia (utiliz and n acest scop serviciile oferite de nivelul inferior) dou a tipuri
de date: datele utile a c aror transfer este cerut de nivelul superior si date de control necesare coordon arii activit a tilor modulelor din cadrul nivelului. Regulile de reprezentare a acestor date, de organizare a acestora n mesaje, precum si regulile dup a care se trimit mesajele ntre modulele aceluia si nivel alc atuiesc protocolul de comunicat ie al nivelului respectiv. Funct ionarea corect a a unei ret ele necesit a respectarea, de c atre toate modulele implicate, a protocoalelor de comunicat ie stabilite.
Ca urmare, la o schimbare de protocol trebuie avut n vedere existent a unei perioade de tranzit ie n timpul c areia echipamentele noi trebuie s a poat a comunica cu cele vechi. Tranzit ia este mult u surat a dac a protocolul vechi prevede anumite facilit a ti. O posibilitate este ca n protocol s a se prevad a o faz a de negociere n care ecare entitate anunt a ce versiuni de protocol si ce extensii de protocol cunoa ste, iar apoi comunicat ia decurge conform versiunii celei mai recente si cu cele mai multe extensii suportate de ambii parteneri. Alt a posibilitate este stabilirea, de la prima versiune a protocolului, a act iunilor unui dispozitiv, ce implementeaz a o versiune veche a protocolului, la primirea unui mesaj neprev azut n acea versiune. Cerint e diferite ale diferitelor aplicat ii duc la tendint a de-a elabora protocoale complexe, care s a satisfac a pe toat a lumea. Protocoale complexe duc la implement ari scumpe si cu riscuri mari de-a avea erori. Este preferabil un protocol care s a ofere c ateva operat ii simple care s a poat a combinate dup a dorint a aplicat iei ce-l utilizeaz a. Dac a o astfel de abordare nu este fezabil a, duc and la un protocol prea complex, se recurge la protocoale ce au posibilitatea de-a implementate doar part ial; metodele utilizabile n acest scop sunt similare cu cele descrise mai sus pentru facilitarea evolut iei protocoalelor.
Capitolul 2
Teoria informat iei se ocup a cu studiul metodelor de codicare a informat iei n vederea transmiterii sau stoc arii acesteia. In cadrul teoriei informat iei se studiaz a si cum se poate m asura cantitatea de informat ie transmis a ntr-un mesaj si cum se poate m asura ecient a unei anumite codic ari. Prin informat ie nt elegem cuno stint ele unei entit a ti. In cele ce urmeaz a, ne va interesa problema transmiterii unei informat ii de la o surs a la o destinat ie . Informat ia de transmis nu este cunoscut a init ial nici de destinat ie, nici de sistemul de transmitere. Ca urmare, a priori informat ia de transmis poate v azut a ca o variabil a aleatoare. Comunicat ia dintre surs a si destinat ie se desf a soar a prin intermediul unui canal de comunicat ie . Canalul de comunicat ie este capabil s a transmit a e o m arime variabil a n timp, numit a semnal ( n esent a, o funct ie real a continu a), caz n care canalul este numit continuu , e un sir de simboluri dintr-o mult ime nit a, caz n care canalul este numit discret . Deoarece canalul nu poate transmite direct informat ia sursei, ntre surs a si canal avem nevoie de un dispozitiv, numit emit ator , care transform a informat ia util a, produs a de surs a, ntr-un semnal sau, dup a caz, ntr-un sir de simboluri. Similar, ntre canal si destinat ie se plaseaz a un dispozitiv, numit receptor , al c arui rol este de-a efectua operat ia invers a, si anume de-a extrage din semnal sau din sirul de simboluri informat ia util a pentru destinat ie (g. 2.1).
Surs a
Emit ator
Canal
Receptor Destinat ie
Semnalul sau, dup a caz, sirul de simboluri ce tranziteaz a canalul se nume ste reprezentarea informat iei . Regulile de corespondent a dintre informa tia util a si reprezentarea sa poart a denumirea de schem a de reprezentare a informat iei, schem a de codicare a informat iei sau cod . Ca exemplu, o limb a scris a este o schem a de reprezentare a informat iei, pentru un canal discret a c arui mult ime de simboluri cont ine literele alfabetului limbii respective, precum si spat iul si semnele de punctuat ie. Un text scris ntr-o limb a este o reprezentare a informat iei, iar conceptele din textul respectiv sunt efectiv informat ia cont inut a n text. Ca un al doilea exemplu, limba vorbit a este o alt a schem a de reprezentare a informat iei, canalul pentru care este construit a ind de tip continuu. Schema de codicare a informat iei se presupune c a este stabilit a n prealabil si este cunoscut a at at emit atorului c at si receptorului. De asemenea, n construct ia schemei de reprezentare a informat iei se tine cont de caracteristicile canalului si de caracteristici generale ale informat iilor ce trebuie s a se poat a transmite, ns a la elaborarea ei nu se cunosc informat iile ce trebuiesc efectiv transmise. De exemplu, la elaborarea unei scheme de codicare a literelor dintr-un text utiliz and un canal ce poate transmite doar simbolurile 0 si 1 se poate tine cont de frecvent a obi snuit a a literelor ntr-un text, dar nu si de textul efectiv de transmis. Restul capitolului trateaz a scheme de reprezentare a informat iei pentru canale discrete. Vom studia n continuare: propriet a ti generale ale codurilor, problema minimiz arii num arului de simboluri necesare a transmise prin canal, precum si m asurarea cantit a tii de informat ie, problema codic arii n cazul n care canalul altereaz a sirul de simboluri pe care l transmite (canal cu perturbat ii).
|u| reprezint a lungimea sirului u; avem |u v | = |u| + |v |, u, v S . este sirul vid; avem || = 0 si u = u = u, u S . Informat ia transmis a de c atre surs a const a dintr-un sir de mesaje . Fiecare mesaj este un element dintr-o mult ime M de mesaje posibile. Mesajele provin din universul utilizatorului sistemului; ele pot propozit ii, litere, numere, etc. Mult imea de mesaje M este nevid a si cel mult num arabil a. De cele mai multe ori M este nit a. Denit ia 2.1 Numim funct ie de codicare sau cod orice funct ie injectiv a c : M S , unde M este mult imea de mesaje, cel mult num arabil a, iar S este mult imea simbolurilor de cod, nit a si av and cel put in dou a elemente. Fiecare mesaj m M va codicat prin sirul c(m) S . Denit ia 2.2 Numim cuv ant de cod orice sir de simboluri de cod w S cu proprietatea c a exist a un mesaj m M astfel nc at w = c(m). Numim mult imea cuvintelor de cod mult imea W = c(M ). Un sir de mesaje (m1 , . . . , mk ) M (unde M desemneaz a mult imea sirurilor nite de mesaje din M ) va codicat prin sirul format prin concatenarea codic arilor mesajelor: c(m1 ) c(m2 ) . . . c(mk ). De remarcat c a n urma concaten arii se pierd delimit arile dintre codic arile mesajelor individuale. Ca urmare, pentru ca receptorul s a poat a decodica f ar a ambiguit a ti orice transmisie a emit atorului este necesar a o proprietate suplimentar a a codului, aceea de-a unic decodabil: Denit ia 2.3 Un cod c : M S se nume ste: cod unic decodabil, dac a funct ia c : M S dat a prin c (m1 , m2 , . . . , mk ) = c(m1 ) c(m2 ) c(mk ) este injectiv a. cod cu proprietatea de prex sau cod prex, dac a nu exist a m1 , m 2 M , cu m1 = m2 , astfel nc at c(m1 ) s a e prex pentru c(m2 ) si n plus c(m) = , m M . (2.1)
cod de lungime x a, dac a exist a o constant a l I N \ {0} astfel nc at |c(m)| = l, m M ; valoarea l se nume ste lungimea codului; Propozit ia 2.4 Au loc urm atoarele propriet a ti: 1. Orice cod de lungime x a este cod prex. 2. Orice cod prex este unic decodabil. Demonstrat ia este imediat a. Exemplul 2.1: Consider am mult imea mesajelor M = {a, b, c, d} si mult imea simbolurilor de cod S = {0, 1}. Urm atorul cod are proprietatea de prex. a 0 b 101 c 11 d 100
Exemplul 2.2: Urm atorul cod, obt inut prin oglindirea cuvintelor codului din exemplul anterior, este unic decodabil dar nu are proprietatea de prex: a 0 b 101 c 11 d 001 Codul nu este prex ntruc at cuv antul de cod 0 care este codicarea mesajului a este prex al cuv antului de cod 001 care este codicarea mesajului d. De notat c a un cod obt inut prin oglindirea cuvintelor unui cod prex se nume ste cod sux si ntotdeauna este unic decodabil. Exemplul 2.3: Codul de mai jos nu este unic decodabil: a 0 b 1 c 01 Codul nu este unic decodabil ntruc at sirul de simboluri de cod 01 poate codifcarea mesajului c sau a sirului de mesaje ab.
Unui cod prex c : M S i se poate ata sa un arbore n care: pentru ecare nod intern, muchiile descendente sunt cel mult n num ar de |S | si sunt etichetate cu simboluri distincte din S ; ecare frunz a este etichetat a cu c ate un mesaj distinct din M ; cuv antul de cod al unui mesaj este format din simbolurile de cod ale muchiilor de pe lant ul ce une ste r ad acina cu frunza ata sat a mesajului. Construct ia arborelui se face conform algoritmului 2.1 (Genereaz a ar-
bore ). Exemplul 2.4: Pentru codul din exemplul 2.1 arborele este reprezentat n gura 2.2.
0 a 0 0 d 1 b 1 1 c
Exemplul 2.5: Fie codul prex pentru mult imea mesajelor M = {a, b, c, d, e, f , g, h}
Algoritmul Genereaz a arbore intrarea: M mult ime nit a nevid a c : M S cod prex ie sirea: T arborele asociat codului c algoritmul: creeaz a T format doar din r ad acin a r:=r ad acina lui T pentru m M execut a (s1 , . . . , sl ):=c(m) x:=r pentru i:=1, l execut a dac a nu exist a muchie descendent a de la x etichetat a cu si atunci dac a x are asociat un mesaj atunci eroare: c nu este cod este prex sf ar sit dac a creaz a y descendent al lui x si eticheteaz a (x, y ) cu si sf ar sit dac a x:=descendentul lui x pe muchia etichetat a si sf ar sit pentru dac a x nu e frunz a atunci eroare: c nu este cod este prex sf ar sit dac a asociaz a m nodului x sf ar sit pentru sf ar sit algoritm
Algoritmul 2.1: Generarea arborelui asociat unui cod prex
0 a 0 b c
2 d 0 e
1 g
2 h
1 f
Figura 2.3: Arborele ata sat codului prex din exemplul 2.5.
Algoritmul Decodeaz a intrarea: T arborele unui cod prex c : M S s = (s1 , s2 , . . . , sl ) S un sir nit de simboluri de cod ie sirea: m = (m1 , m2 , . . . , mk ) M sirul mesajelor a c aror codicare este s1 , . . . , sl algoritmul: m:= x:=r ad acina lui T pentru i:=1, l execut a dac a nu exist a muchie descendent a de la x etichetat a cu si atunci eroare: s nu este concatenare de cuvinte de cod sf ar sit dac a x:=descendentul ui x pe muchia etichetat a cu si dac a x este frunz a atunci adaug a la m mesajul asociat lui x x:=r ad acina lui T sf ar sit dac a sf ar sit pentru dac a x nu este r ad acina lui T atunci eroare: s nu este concatenare de cuvinte de cod sf ar sit dac a sf ar sit algoritm
Algoritmul 2.2: Decodicarea unei reprezent ari printr-un cod prex
Decodicarea se face astfel: La nceput x este r ad acina arborelui. Lu am din sirul s primul element; acesta are valoarea 0. Cobor am n arbore de-a lungul muchiei etichetate cu 0 si ajungem la frunza etichetat a ,,a. Deoarece am ajuns la o frunz a, punem mesajul din eticheta frunzai adic a ,,a n sirul de mesaje decodicat si revenim la r ad acin a. Urmeaz a simbolul de cod 1; cobor am de-a lungul muchiei 1 si ajungem n nodul p arinte ale nodurilor ,,b, ,,c si ,,d. Urmeaz a simbolul 1; cobor am de-a lungul muchiei 1 si ajungem la frunza ,,c; ad aug am ,,c la sirul de mesaje si revenim la r ad acin a. Continu and n acela si fel, vom obt ine n continuare mesajele ,,e si ,,a. S irul de mesaje transmis este deci ,,acea.
(2.2)
si, reciproc, dac a numerele naturale (li )iM satisfac inegalitatea (2.2) atunci exist a un cod prex c : M S av and lungimile cuvintelor |c(i)| = li , i M .
Demonstrat ie. Vom nota n continuare d = |S | si K = mM dlm . Vom demonstra nt ai prima implicat ie, pentru cazul n care mult imea mesajelor M este nit a. Demonstrat ia va construit a prin induct ie dup a maximul k al lungimilor cuvintelor de cod (k = maxmM lm ). Pentru k = 1, nseamn a c a toate cuvintele de cod sunt de lungime 1 si n consecint a sunt n num ar de cel mult d. Ca urmare K=
mM
d1 = |M | d1 d d1 = 1.
Presupun and inegalitatea lui Kraft adev arat a pentru coduri de lungime maxim a k = k0 , pentru un k0 I N arbitrar, s a demonstr am c a are loc si pentru coduri de lungime maxim a k = k0 + 1. Pentru aceasta, s a construim mult imile de mesaje Mx = {m M : primul simbol din c(m) este x} , x S.
dlm .
Pentru ecare x M , restrict ia lui c la Mx , c|Mx , este de asemenea un cod prex. Distingem n continuare trei cazuri: Dac a Mx are cel put in 2 elemente, rezult a c a toate cuvintele de cod ale elementelor din Mx au lungime mai mare sau egal a cu 2, deoarece n caz contrar singurul cuv ant de cod de lungime 1, anume x, ar prex pentru toate celelalte. Elimin and din toate cuvintele de cod primul simbol obt inem un nou cod prex pentru Mx . Acest cod prex are toate cuvintele de cod lungime cel mult k0 si ca urmare, conform ipotezei de induct ie, satisface inegalitatea lui Kraft, adic a d(lm 1) 1,
mMx
de unde dlm
mMx
1 . d
Dac a Mx are un singur element, cuv antul de cod asociat acestui element are lungime cel put in 1 si ca urmare din nou dlm
mMx
1 . d
Dac a Mx = , avem
mMx
1 dlm = 0 d .
d(lm )
xS
1 = 1. d
d(lm ) .
Deoarece, pentru ecare l I N, c|Ml este un cod prex, rezult a Kl 1, l I N. Dar (Kl )lIN este un sub sir al sirului sumelor part iale ale unei
Algoritmul Construie ste cod intrarea: (lm )mM I N satisf ac and (2.2) ie sirea: c : M S cod prex cu |c(m)| = lm , m M algoritmul: E :={} pentru l=1,maxmM lm execut a E := pentru w E execut a pentru x S execut a E :=E {w x} sf ar sit pentru sf ar sit pentru E :=E pentru m M : lm = l execut a c(m):= o valoare arbitrar a din E E :=E \ {c(m)} sf ar sit pentru sf ar sit pentru sf ar sit algoritm
Algoritmul 2.3: Construct ia unui cod prex cu lungimi date ale cuvintelor de cod
(2.3)
Presupun and c a (2.3) are loc la iterat ia cu l = k , la iteratia urm atoare, n care l = k + 1, avem dk+1lm = d
mM lm k+1
dklm =
mM lm k+1
= d
dklm =
mM lm = k
dklm
mM lm k
d(|Ek | |{m M : lm = k }|) = = |Ek+1 | unde ultima egalitate rezult a din modul de construct ie a lui Ek+1 din Ek prin eliminarea unui num ar de elemente egal cu num arul de cuvinte de
Exemplul 2.7: Dorim construirea unui cod prex pentru mult imea M = {a, b, c, d, e} si mult imea de simboluri de cod S = {0, 1} cu urm atoarele lungimi ale cuvintelor de cod: la = 3, lb = 1, lc = 3, ld = 3, le = 3. Rezolvare: mai nt ai veric am dac a este satisf acut a inegalitatea lui Kraft: |S |lm = 23 + 21 + 23 + 23 + 23 = 1 1,
mM
inegalitatea este satisf acut a si prin urmare exist a un cod prex. Construct ia propriu-zis a este ar atat a n gura 2.4. Cerculet ele desemneaz a nodurile corespunz atoare elementelor din mult imea E .
0 R ad acina arborelui
(a) Init ializarea: E = {}
0 b
0 b 0 0 a
1 1 1 c 0 d 1 e
Figura 2.4: Construct ia unui cod prex cu lungimi xate ale cuvintelor de cod (exemplul 2.7)
Vom ar ata n continuare c a inegalitatea lui Kraft este o condit ie necesar a pentru existent a codurilor unic decodabile, nu doar a celor prex. Avem: Teorema 2.6 (McMillan) Pentru orice cod unic decodabil c : M |S | are loc inegalitatea:
n
dlm 1
mM
(2.4)
unde lm = |c(m)|, m M si d = |S |.
Demonstrat ie. Consider am mai nt ai cazul c and M este nit a. S a not am n cu E = mM dlm . S a lu am un k I N arbitrar si s a calcul am: Ek =
(m1 ,...,mk )M k
(2.5)
Regrup am acum termenii din (2.5) dup a valorile sumei lm1 + . . . + lmk . Pentru aceasta, vom nota cu N (k, l) num arul de termeni din dezvoltarea (2.5) pentru care lm1 + . . . + lmk = l. Cu alte cuvinte, N (k, l) = Mai observ am c a k lm1 + . . . + lmk lmax k unde lmax este maximul lungimii cuvintelor de cod (lmax = maxmM lm ). Obt inem: lmax k Ek = N (k, l) dl . (2.6)
l =k
S a observ am acum c a N (k, l) este num arul de siruri de k mesaje pentru care lungimea codic arii sirului este l. Deoarece codul este unic decodabil, aceste codic ari sunt distincte si ca urmare N (k, l) este cel mult egal cu num arul de siruri distincte de l simboluri de cod, adic a N (k, l) dl . Inlocuind n (2.6), obt inem: E
k lmax k l=k
dl dl = lmax k k + 1 lmax k,
(2.7)
39
N, Mk este nit a si c|Mk si not am Ek = mMk dlm . Pentru ecare k I este un cod unic decodabil. Ca urmare, Ek 1 pentru ecare k I N. Observ am acum c a E = limk Ek 1.
Corolarul 2.7 Pentru orice cod unic decodabil, exist a un cod prex cu acelea si lungimi ale cuvintelor de cod.
Exemplul 2.9: In textul acestei lucr ari, 10,7% dintre litere sunt ,,a, si doar 1,1% sunt ,,b. Cu aceste cuno stint e, receptorul se va a stepta de la ecare liter a s a e ,,a cu probabilitate de 10,7% si ,,b cu probabilitate de 1,1%. In aceste condit ii, ecare liter a ,,a poart a log2 0,107 3,224 bit i de informat ie, si ecare liter a ,,b poart a log2 0,011 6,5 bit i. Exemplul 2.10: Presupunem c a emit atorul informeaz a receptorul asupra rezultatului arunc arii unui zar. Dac a emit atorul trimite mesajul num arul este ntre 1 si 4 cantitatea de informat ie este log2 4 0 , 58 bit i. Dac a emit atorul 6 anunt a acum c a num arul este 3, probabilitatea acestui caz, cu informat iile 1 , de unde cantitatea de informat ie purtat a disponibile imediat nainte, este 4 1 de mesajul num arul este 3 este log2 4 = 2 bit i. S a observ am c a, dac a emit atorul ar spus de la nceput num arul este 3, cantitatea de informat ie transmis a ar fost log2 1 i. 6 2,58 bit Denit ia 2.9 Fie o surs a de informat ie ce emite mesaje dintr-o mult ime M , ecare mesaj m M av and o probabilitate pm de-a emis. Se nume ste entropia sursei de informat ie cantitatea H=
mM
pm log pm
(2.9)
pm |c(m)|.
Denit ia 2.11 Un cod unic decodabil c : M S se nume ste cod optim dac a lungimea medie a cuvintelor sale este mai mic a sau egal a dec at lungimea medie a cuvintelor oric arui cod unic decodabil c : M S . Exist a urm atoarea limit a inferioar a pentru lungimea medie a cuvintelor de cod:
Teorema 2.12 Fie o surs a ce emite mesaje dintr-o mult ime M , e H entropia sursei si e c : M S un cod unic decodabil. Atunci lungimea medie l a cuvintelor codului c satisface l H . log2 |S | (2.10)
In particular, dac a |S | = 2, atunci rezult a l H . Cu alte cuvinte avem nevoie cel put in de un simbol binar (un bit) pentru a transmite un bit de informat ie. Denit ia 2.13 Se nume ste ecient a unui cod raportul =
H , l log2 |S |
unde H
este entropia sursei, l este lungimea medie a cuvintelor de cod, iar S este mult imea simbolurilor de cod. Se nume ste redundant a relativ a valoarea 1 . Ecient a si redundant a relativ a sunt numere cuprinse ntre 0 si 1. Valoarea minim a, dat a teorema 2.12, pentru lungimea medie a cuvintelor de cod poate atins a efectiv, adic a se poate obt ine ecient a = 1, doar n anumite cazuri. Motivul pentru care ea nu poate ntotdeauna atins a este dat a de natura discret a a simbolurilor de cod. Ideal, lungimea cuvintelor de cod ar trebui s a e lm = log|S | pm . Pentru aceste valori inegalitatea lui Kraft este satisf acut a: |S |lm =
mM mM
|S |( log|S| pm ) =
mM
pm = 1 1 ,
prin urmare ar exista un cod unic decodabil si limita din teorema 2.12 ar atins a: l=
mM
pm log|S | pm =
mM
pm =
log2 pm log2 |S |
1 log2 |S |
mM
pm log2 pm
H . log2 |S |
Acest lucru se poate realiza ns a numai dac a lm = log|S | pm sunt toate ntregi. In cazul general putem doar s a alegem ca lungimi ale cuvintelor de cod valorile mai mari, lm = log|S | pm . Pentru aceste valori avem log|S | pm lm < log|S | pm + 1 de unde rezult a:
Teorema 2.14 Fie o surs a ergotic a ce emite mesaje dintr-o mult ime M , e H entropia sursei si e S o mult ime de simboluri de cod. Atunci exist a un cod c : M S unic decodabil a c arui lungime medie l a cuvintelor de cod satisface H H l< + 1. (2.11) log2 |S | log2 |S | Rezultatul teoremei precedente poate mbun at a tit dac a n loc s a consider am mesajele sursei ca ind mesajele din M consider am succesiuni de mesaje din M , construim un cod pentru acestea din urm a si determin am raportul dintre lungimea medie a cuv antului de cod si num arul de mesaje din M codicate prin acesta. In detaliu, construct ia este urm atoarea: Fix am k I N. Consider am o a doua surs a, ale c arei mesaje vor succesiuni de k mesaje ale sursei originale. Mult imea de mesaje ale noii surse este prin urmare M k . Probabilit a tile mesajelor sunt p(m1 ,...,mk ) = pm1 . . . pmk . Vom nota cu Hk entropia noii surse. Avem Hk =
(m1 ,...,mk )M k
p(m1 ,...,mk ) log2 p(m1 ,...,mk ) = pm1 . . . pmk (log2 pm1 + . . . + log2 pmk ) =
(m1 ,...,mk k )M k
=
i=1 (m1 ,...,mk k
=
i=1
mi M k
=
i=1
1H =
=k H Conform teoremei 2.14, exist a un cod c : M k S pentru care lungimea medie a cuvintelor de cod, l(k) , satisface Hk Hk l(k) < + 1. log2 |S | log2 |S |
Num arul mediu de simboluri de cod utilizate pentru a transmite un mesaj din (k ) M este l k , care este delimitat de H l(k) H 1 < + . log2 |S | k log2 |S | k Prin urmare, pentru orice > 0, putem alege un k I N astfel nc at codic and c ate k mesaje succesive din M s a obt inem un num ar de simboluri pe mesaj ncadrat ntre H l(k) H < + . log2 |S | k log2 |S |
Algoritmul Human intrarea: M mult ime nit a de mesaje pm (0, 1), m M , probabilit a tile mesajelor; mM pm = 1 S = {s1 , s2 , . . . , sd } mult ime nit a de simboluri de cod, d 2 ie sirea: c : M S cod prex algoritmul: E :=M d :=(|M | 2) mod (|S | 1) + 2 c at timp |E | > 1 execut a alege e1 , . . . , ed E cu pei pe , i {1, . . . , d } , e E \ {e1 , . . . , ed } creaz a t unic pentru i {1, . . . , d } execut a pune ei ca u al lui t s(t,ei ) :=si sf ar sit pentru pt := d i=1 pei E :=(E \ {e1 , . . . , ed }) {t} d :=d sf ar sit c at timp c:=codul prex asociat unicului arbore din E sf ar sit algoritm
Algoritmul 2.4: Algoritmul lui Human
cod optim. S a alegem ,,b cu ,,c. Calcul am si probabilitatea arborelui rezultat: 0,15 + 0,15 = 0,3. (g. 2.5(b)). In continuare unim din nou arborii de probabilit a ti minime; acum ace stia sunt ,,d si ,,e (g. 2.5(c)). Avem acum dou a posibilit a ti: arborele ce cont ine pe ,,b si pe ,,c poate unit e cu arborele format din ,,a, e cu arborele format din ,,d si ,,e. Alegem a doua variant a. In nal unim cei doi arbori r ama si. Avem acum codurile mesajelor: c(a) = 0, c(b) = 100, c(c) = 101, c(d) = 110, c(e) = 111. Lungimea medie a cuvintelor de cod este l = 0,35 1 + 0,15 3 + 0,15 3 + 0,15 3 + 0,2 3 = 2,3 Pentru comparat ie, entropia este H = 0,35 log2 0,35 + 0,15 log2 0,15 + 0,15 log2 0,15+ + 0,15 log2 0,15 + 0,2 log2 0,2 2,226121
0.30
0.15 d
0.20 e
0.15 d
0.20 e
a b c
(b) Pasul 2
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
Dac a la pasul 4 s-ar ales cealalt a posibilitate, ar rezultat mult imea de arbori din gura 2.6(a) si n nal arborele asociat codului prex din gura 2.6(b). S a observ am c a se obt ine exact aceea si lungime medie a cuvintelor de cod: l = 0,35 2 + 0,15 3 + 0,15 3 + 0,15 2 + 0,2 2 = 2,3
0.65
0.35 0
0 1 0
1 0 1
a b c
d e
1 d e
b c
(b) Arborele nal
(a) Pasul 4
Exemplul 2.12: Fie o surs a av and mult imea mesajelor posibile M = {a, b, c, d, e, f } cu probabilit a tile corepsunz atoare pa = 0,4, pb = 0,15, pc = 0,15, pd = 0,1, pe = 0,1, pf = 0,1 si e alfabetul canalului S = {0, 1, 2}. Construct ia codului prin algoritmul lui Human este prezentat a n gura 2.7. Lungimea medie a cuvintelor de cod este l = 1,6, entropia este H 2,346439 si avem H 2,346439 1,4804382 1,6 = l log2 |S | 1,5849625 Teorema 2.15 Codul obt inut prin algoritmul Human este optim. Pentru demonstrat ie avem nevoie de c ateva leme ce descriu pro priet a ti ale unui cod optim. In cele ce urmeaz a vom nota cu L(c) lungimea medie a cuvintelor unui cod c. Lema 2.16 Fie M mult imea mesajelor sursei, e pm , m M , probabilit a tile mesajelor sursei, e S alfabetul canalului si e c : M S un cod optim. Pentru orice mesaje m1 , m2 M , dac a pm1 < pm2 atunci |c(m1 )| |c(m2 )|.
c 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
Figura 2.7: Funct ionarea algoritmului lui Human, exemplul 2.12 Demonstrat ie. Presupunem contrariul: m1 , m2 M , pm1 < pm2 si |c(m1 )| < |c(m2 )|. Construim atunci un alt cod, c : M S , prin interschimbarea cuvintelor de cod asociate mesajelor m1 si m2 : c(m2 ) , m = m1 c(m1 ) , m = m2 c (m) = c(m) , m M \ { m1 , m 2 } Avem L(c ) =
mM
pm |c (m)| =
=L(c) pm1 |c(m1 )| pm2 |c(m2 )| + pm1 |c(m2 )| + pm2 |c(m1 )| = =L(c) + (pm1 pm2 )(|c(m2 )| |c(m1 )|) < <L(c) adic a c are lungimea cuvintelor de cod mai mic a dec at c, de unde rezult a c a c nu este cod optim.
Lema 2.17 Fie M mult imea mesajelor sursei, |M | 2, e S alfabetul canalului, e c : M S un cod optim si e lmax lungimea celui mai lung cuv ant al codului c (lmax = maxmM |c(m)|). Atunci exist a cel put in (n 2) mod (|S | 1) + 2 cuvinte de cod de lungime lmax .
Demonstrat ie. Conform corolarului 2.7, exist a un cod prex cu acelea si lungimi ale cuvintelor de cod ca si codul c. Deoarece ne intereseaz a doar
Pentru k = 1, adic a n |S |, algoritmul lui Human face o singur a unicare, rezult and cuvinte de cod de lungime 1 pentru toate mesajele. Un astfel de cod este optim, deoarece cuvinte de cod de lungime mai mic a dec at 1 nu sunt permise. Presupunem acum c a algoritmul Human genereaz a codul optim pentru un k dat si s a-i demonstr am optimalitatea pentru k + 1. S a lu am deci o mult ime de mesaje M cu k (|S | 1) + 1 |M | (k + 1)(|S | 1), s a not am cu pm , m M , probabilit a tile mesajelor, s a not am cu ch codul generat de algoritmul lui Human si cu co un cod prex optim pentru aceea si mult ime de mesaje si acelea si probabilit a ti si s a not am cu L(ch ), respectiv L(co ) lungimile medii ale cuvintelor de cod corespunz atoare. Avem de demonstrat c a L(ch ) L(co ). Deoarece co este un cod optim, aplic and lema 2.17 deducem c a co are cel put in (n 2) mod (|S | 1) + 2 cuvinte de lungime maxim a. Din lema 2.16, deducem c a acestea sunt cuvintele corespunz atoare mesajelor cu probabilit a tile cele mai mici, adic a e mesajele e1 , . . . , ed alese de algoritmul lui Human pentru prima unicare, e mesaje de acelea si probabilit a ti; n al doilea caz putem, prin interschimb ari de cuvinte de cod, s a facem ca cele (n 2) mod (|S | 1)+2 cuvinte de lungime maxmim a din co s a e cele alese n prima etap a a algoritmului lui Human, f ar a ca prin aceasta s a pierdem optimalitatea lui co . De asemenea, prin interschimb ari de cuvinte de cod, putem face ca celor (n 2) mod (|S | 1) + 2 mesaje alese de algoritmul lui Human s a le corespund a prin co cuvinte de cod ce difer a doar prin ultimul simbol. Creem acum un cod co : (M \ {e1 , . . . , ed }) {t} S , unde t este un obiect nou introdus, d and ca valoare pentru c(t) prexul comun al lui c(e1 ),. . . ,c(ed ). In acela si mod, creem un cod ch pornind de la ch . Observ am d si analog, L(ch ) = acum c a, not and pt = i=1 pei , avem L(co ) = L(co ) pt L(ch ) pt . S a mai remarc am c a ch este codul produs de algoritmul lui Human pentru mult imea de mesaje (M \ {e1 , . . . , ed }) {t} si, conform ipotezei de induct ie, el este optim; prin urmare L(ch ) L(co ). De aici rezult a L(ch ) L(co ), deci codul obtinut prin algoritmul lui Human este optim.
Algoritmii de compresie utilizat i n practic a se folosesc si de dependent ele ntre octet ii succesivi. Utilizarea oric arui cod presupune c a receptorul cunoa ste codul folosit de emit ator. Transmiterea separat a a codului c atre receptor risc a s a contrabalanseze c a stigul obt inut prin codare optimal a. Metodele adaptative presupun c a emit atorul ncepe emisia cu un cod standard, dup a care l modic a pentru a-l optimiza conform frecvent elor observate n date. Dac a algoritmul de generare a codului este xat si codul folosit la un moment dat depinde doar de datele trimise (codate) deja, atunci receptorul poate recalcula codul folosit de emit ator (folosind acela si algoritm ca si emit atorul). De notat c a nici un cod nu poate folosi mai put ini bit i pentru codare dec at cantitatea de informat ie transmis a. In lipsa redundant ei, nu e posibil a compresia. Ca o consecint a, nici un program de compresie nu poate comprima un sir aleator de octet i.
s a scape nedetectate. Cu un cod bine ales, ns a, probabilitatea unei erori nedetectate poate f acut a sucient de mic a. Evident, pentru aceasta este necesar ca mult imea cuvintelor de cod s a e o submult ime ,,rar a a mult imii secvent elor de simboluri de cod. Prin urmare, posibilit a tile de detectare a erorilor tin de construct ia codului. De aici denumirea de cod detector de erori , respectiv cod corector de erori . Deoarece la orice cod detector sau corector de erori mult imea sirurilor de cuvinte de cod este o submult ime strict a a mult imii sirurilor arbitrare de simboluri de cod, rezult a c a orice cod detector sau corector de erori are redundant a. In cele ce urmeaz a vom considera alfabetul canalului S = {0, 1}.
conform distribut iei binomiale. Observ am c a, ntruc at p 1, pentru l sucient de mic avem p0 p1 p2 . . ., adic a probabilitatea de-a avea mai mult de c ateva erori este extrem de mic a.
d(u, v ) =
i=1
|ui vi |,
unde u = (u1 , u2 , . . . , ul ) si v = (v1 , v2 , . . . , vl ). Astfel, distant a ntre dou a cuvinte este num arul de erori individuale necesare pentru a transforma primul cuv ant n cel de-al doilea.
unde W este mult imea cuvintelor de cod ale codului considerat. Propozit ia 2.19 Fie codul c : M {0, 1}l si W = c(M ). Codul c detecteaz a k erori dac a si numai dac a dmin (W ) k + 1. S a examin am acum codurile corectoare de erori. Denit ia 2.20 Spunem despre codul c : M {0, 1}l c a corecteaz a k erori individuale dac a, pentru orice cuv ant de cod w W = c(M ), prin transformarea lui w ca urmare a k sau mai put ine erori cuv antul rezultat w are proprietatea c a w este cel mai apropiat cuv ant de w din W : ws W , d(w , ws ) d(w , w). Propozit ia 2.21 Fie codul c : M {0, 1}l si W = c(M ). Codul c corecteaz a k erori dac a si numai dac a dmin (W ) 2k + 1. S a analiz am acum ecient a codului. De obicei, datele utile pentru un cod detector sau corector de erori sunt siruri de bit i, obt inut i prin codicarea datelor din universul aplicat iei. Ca urmare, mult imea mesajelor este mult imea sirurilor de n bit i, M = {0, 1}n , pentru o valoare n dat a. Mesajele sunt 1 n , echiprobabile, probabilitatea oric arui mesaj ind aceea si: pm = |M | = 2 m M . Ca urmare, ecient a codului este n H = . l l S a mai not am c a |M | = |W | = 2n . Construct ia efectiv a a unui cod detector sau corector de erori cuprinde dou a aspecte: construct ia unei multimi W {0, 1}l cu dmin (W ) sucient de mare pentru num arul de erori de detectat sau corectat si, totodat a, av and log2l|W | c at mai mare pentru o ecient a c at mai mare a codului. g asirea unor algoritmi ecient i pentru codicare si pentru detectarea erorilor (adic a vericarea apartenent ei unui sir de l bit i la W ) si eventual corectarea erorilor (adic a g asirea celui mai apropiat cuv ant din W fat a de un sir de l bit i dat).
1). Cuvintele de cod sunt v azute ca ind matrici (n1 + 1) (n2 + 1) n care ultima linie si ultima coloan a cuprind bit ii de control. Mult imea cuvintelor de cod este mult imea matricilor (n1 + 1) (n2 + 1) n care pe ecare linie si pe ecare coloan a num arul de valori 1 este par. Se poate ar ata u sor c a dmin (W ) = 4, prin urmare codul detecteaz a3 erori sau corecteaz a 1 eroare. Codicarea si detectarea erorilor se face calcul and bitul de paritate pentru ecare linie si pentru ecare coloan a. De remarcat c a ultimul bit din matrice trebuie calculat e ca bit de paritate al bit ilor de paritate ai liniilor, e ca bit de paritate ai bit ilor de paritate ai coloanelor; ambele variante duc la acela si rezultat. Exemplul 2.15: Pentru n1 = n2 = 4, sirul 1011010111001111 se codic a astfel: 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 Astfel, cuv antul de cod rezultat este sirul: 1011101010110001111011011. Pentru corectarea erorilor, se caut a mai nt ai liniile si coloanele care ncalc a paritatea. Presupun and c a s-a produs o singur a eroare, va exista exact o linie si o coloan a. Bitul eronat este la intersect ia liniei si coloanei g asite. Exemplul 2.16: S irul 101001101011010011000111111101 nu este cuv ant de cod: 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 Se observ a c a paritatea nu este respectat a de linia a 2-a si de prima coloan a. Prin urmare, primul bit de pe linia a 2 este eronat, ind 0 n original. Datele utile sunt deci: 1010010101100111. 2.4.3.3. Coduri polinomiale Oric arui sir de bit i v = (v1 , . . . , vk ) {0, 1}k i se asociaz a un polinom de grad cel mult k 1: v (X ) = v1 X k1 + v2 X k2 + . . . + vk1 X + vk .
Coecient i acestui polinom sunt considerat i ca elemente ale corpului F2 = ({0, 1}, +, ), unde + este operat ia sau exclusiv, iar este operat ia si, cu tabelele de mai jos: + 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 De remarcat c a polinoamele peste orice corp p astreaz a multe din propriet a tile polinoamelor ,,obi snuite, n particular se poate deni la fel adunarea, sc aderea si nmult irea si are loc teorema mp art irii cu rest. Pentru construct ia unui cod polinomial, se alege un a sa-numit polinom generator g (X ) de grad l n (reamintim c a l este lungimea cuvintelor de cod, iar n este num arul de bit i ai informatiei utile; n < l). Mult imea cuvintelor de cod W se dene ste ca mult imea sirurilor de l bit i cu proprietatea c a polinomul asociat sirului este divizibil cu g (X ). S irul bit ilor de control se calculeaz a astfel: se construie ste polinomul i(X ) asociat informat iei utile, se calculeaz a r(X ) ca ind restul mp art irii lui i(X ) X ln la g (X ) sirul bit ilor de control este sirul de l n bit i al c arui polinom asociat este r(X ). Pentru a ne convinge de corectitudinea algoritmului de mai sus, s a observ am c a obt inem ca si cuv ant de cod un sir de forma i1 , . . . , in , r1 , . . . , rln al c arui polinom asociat este v (X ) =i1 X l1 + . . . + in X ln + r1 X ln1 + . . . + rln = =i(X ) X ln + r(X ). Deoarece r(X ) este restul mp art irii lui i(X ) X ln la g (X ), rezult a c a polil n nomul i(X ) X r(X ) este divizibil cu g (X ). Deoarece n F2 avem c a 1 + 1 = 0 rezult a c a r(X ) = r(X ). De aici rezult a c a v (X ) este divizibil cu g (X ). Codurile polinomiale sunt mult utilizate datorit a simplit a tii construc tiei unor circuite (hardware) care calculeaz a bit ii de control. Dac a se dore ste corectarea erorilor, se observ a c a pozit iile erorilor nu depind dec at de restul mp art irii polinomului asociat sirului de bit i recept ionat, v (X ), la g (X ).
Limbajul natural cont ine mult a redundant a; ca urmare permite detetcarea si coerctarea multor ,,erori de tipar, dup a cum v a putet i convinge uo sr citind aceast a fraz a. Din p acate ns a, nu garanteaz a detectarea nici m acar a unei singure erori; sunt cazuri n care o singur a eroare poate schimba radial sensul unei fraze. Transmisia vocii prin radio sau prin telefonie analogic a este n general zgomotoas a si adesea cu distorsiuni puternice. Ca urmare, riscul erorilor de transmisie este ridicat. Cum, pe de alt a parte, diverse indicative cum ar numere de telefon, numere de nmatriculare, s.a.m.d. nu cont in redundant a, la transmiterea acestora cifrele se pronunt a cu anumite modic ari, iar pentru litere se pronunt a un cuv ant ntreg, dintr-un set standardizat, care ncepe cu litera ce se dore ste a transmis a. De exemplu, 2 minute se va pronunt a doi minute, pentru a evita confuzia dou a -nou a ; de asemenea 7 se pronunt a septe. Ca un alt exemplu, n englez a, indicativul ROT209 se va pronunt a Romeo Oscar Tango Two Zero Niner. In sf ar sit, codul numeric personal (CNP), codul IBAN, ISBN-ul de pe c art i si alte asemenea coduri de identicare ce sunt transmise frecvent prin intermediul unor operatori umani au o cifr a de control.
Capitolul 3
Nivelul zic
Nivelul zic Sursa Emit ator S ir de bit i Semnal Mediu Receptor Semnal Destinatie S ir de bit i
Emit atorul transform a sirul de bit i recept ionat ntr-un semnal adecvat transmiterii prin mediul de comunicat ie. Receptorul efectueaz a operat ia invers a. Corespondent a dintre sirurile de bit i posibile si semnalele corespunz atoare poart a denumirea de schem a de codicare a informat iei prin semnal continuu. Schema de codicare utilizat a trebuie s a e aceea si pentru emit ator si receptor. Mediul de transmisie modic a n general semnalul transmis, astfel c a semnalul primit de receptor de la mediu nu este identic cu semnalul aplicat de emit ator asupra mediului. Vom ar ata n 3.2 care sunt transform arile suferite de semnal n timpul propag arii. Schema de codicare a informat iei trebuie s a tin a cont de aceste modic ari. O parte din schemele folosite vor studiate n 3.3. In continuarea acestui capitol vom trece n revist a problemele specice legate de transmiterea semnalelor si de codicarea informat iei prin semnale. O analiz a riguroas a a acestor probleme dep a se ste cu mult cadrul acestei lucr ari. Prezentarea de fat a are ca scop familiarizarea cu not iunile si problemele respective, n vederea nt elegerii solut iilor existente, limit arilor lor, parametrilor specicat i n documentat iile privind echipamentele folosite si, mai ales, posibilit a tii comunic arii cu speciali stii n domeniul electronicii si comunicat iilor.
la jonct iunea dintre mediu si receptor se nume ste semnal recept ionat si l vom nota cu Ur (t). Transform arile suferite de semnal sunt urm atoarele: nt arziereaconst a n faptul c a semnalul recept ionat urmeaz a cu o anumit a nt arziere semnalul emis. Cu notat iile de mai sus si neglij and fenomenele ce vor descrise la punctele urm atoare, avem Ur (t) = Ue (t t). Durata t se nume ste nt arziere (de propagare) sau timp de propagare. l , unde l este lungimea mediului iar Int arzierea are valoarea t = v v este viteza de propagare a semnalului. Viteza de propagare a semnalului depinde de natura mediului de transmisie. La transmisia prin conductoare, v depinde numai de materialul izolator dintre conductoare si, pentru materialele folosite n mod curent, are valoarea aproximativ a v 2/3c = 2 108 m/s, unde c este viteza luminii n vid. atenuarea const a n faptul c a semnalul recept ionat are amplitudine mai mic a dec at cel emis. Neglij and nt arzierea, are loc Ur (t) = g Ue (t), cu 0 < g < 1. T in and cont si de nt arziere, avem Ur (t) = g Ue (t t). Num arul 1/g se nume ste factor de atenuare n tensiune. De cele mai multe ori atenuarea unui semnal este exprimat a prin factorul de atenuare n putere, numit pe scurt factor de atenuare , denit ca raportul dintre puterea semnalului emis si a celui recept ionat. In cazul perechii de conductoare, deoarece puterea este proport ional a cu p atratul tensiunii (raportul tensiune/intensitate ind aproximativ constant), factorul de atenuare n putere este egal cu 1/g 2 . Prin conectarea unul dup a cel alalt a mai multor medii de transmisie, factorul de atenuare a mediului rezultat este produsul factorilor de atenuare ai componentelor. Din acest motiv, n loc de factorul de atenuare se folose ste adesea logaritmul s au: logaritmul factorului de atenuare rezultat este suma logaritmilor, n aceea si baz a, ai factorilor de atenuare ai componentelor. Logaritmul factorului de atenuare se nume ste pe scurt atenuare . Valoarea logaritmului depinde de baza utilizat a, baze diferite duc and la valori proport ionale. Deoarece schimbarea bazei de logaritmare are un efect similar cu schimbarea unit a tii de m asur a pentru o m arime zic a, dup a valoarea logaritmului se scrie o pseudo-unitate de m asur a ce arat a de fapt baza de logaritmare utilizat a. Pentru logaritmul n baza zece, pseudo-unitatea de m asur a folosit a este bel ul, av and simbolul B. Pseudo-unitatea de m asur a utilizat a curent este decibel ul, av and simbolul dB. Avem 1 B=10 dB. O valoare exprimat a n decibeli (dB) o putem vedea, echivalent, e ca valoarea logaritmului n baza
10 nmult it a cu 10, e ca valoarea logaritmului n baza 101/10 . De exemplu, dac a factorul de atenuare este (1/g 2 ) = 10, logaritmul s au este 1 B = 10 dB. Dac a factorul de atenuare este 2, logaritmul s au (atenuarea) este log10 2 B 0,3 B = 3 dB. Puterea semnalului emis se m asoar a n watti (W) sau miliwatti (mW). Adesea, este specicat a nu puterea ci logaritmul puterii: se ia num arul ce reprezint a puterea, n miliwatti, si logaritmul s au se exprim a n decibeli. Pseudo-unitatea de m asur a corespunz atoare reprezent arii de mai sus se nume ste decibel-miliwatt, av and simbolul (neconform regulilor Sistemului Internat ional de Masuri si Unit a ti) dBm. Ca exemple: o putere de emisie de 1 mW poate scris a si 0 dBm, o putere de 1 W se scrie 30 dBm, iar 0,1 mW se scrie ca 10 dBm. Puterea minim a a semnalului recept ionat, pentru care receptorul este capabil s a decodice corect semnalul, se nume ste pragul de sensibilitate al receptorului. Ca si puterea emit atorului, pragul de sensibilitate se poate exprima n miliwatti sau n decibel-miliwatti. distorsiunea este o modicare determinist a a semnalului recept ionat fat a de cel emis, diferit a de nt arziere si atenuare. (O modicare este determinist a dac a, oridec ateori transmitem un acela si semnal, modicarea se manifest a identic.) Mai multe detalii despre distorsiuni vor date n 3.2.2. zgomotele sunt modic ari nedeterministe ale semnalului recept ionat, cauzate de factori externi sistemului de transmisie (fulgere, ntrerup atoare electrice, alte sisteme de transmisie de date, alte echipamente electronice) sau de factori interni cu manifestare aleatoare (mi scarea de agitat ie termic a a atomilor din dispozitivele electornice). Zgomotul se exprim a ca diferent a dintre semnalul recept ionat efectiv si semnalul ce ar recept ionat n lipsa zgomotului. Raportul semnal/zgomot este raportul dintre puterea semnalului si puterea corespunz atoare zgomotului. Uneori termenul de raport semnal/zgomot este utilizat si pentru logaritmul raportului semnal/zgomot; de obicei nu este pericol de confuzie deoarece logaritmul este exprimat n decibeli, n timp ce raportul semnal/zgomot nu are unitate de m asur a. O categorie special a de zgomot este diafonia , care este un zgomot provenit din semnalul transmis pe un mediu de transmisie vecin.
(g. 3.2). In particular, o pereche de conductoare folosit a pentru transmisie poate considerat a un astfel de dispozitiv, capetele dinspre emit ator constituind intrarea, iar cele dinspre receptor, ie sirea.
Ui
Ue
Tensiunea de la ie sire depinde de tensiunea de la intrare, ns a n general depinde de tot istoricul ei. Altfel spus, comportamentul dispozitivului poate descris de un operator L (reamintim c a un operator este o funct ie denit a pe un spat iu de funct ii cu valori tot ntr-un spat iu de funct ii). Acest operator prime ste ca argument funct ia timp-tensiune Ui care caracterizeaz a semnalul de intrare. Valoarea operatorului este funct ia timp-tensiune Ue = L(Ui ) care caracterizeaz a semnalul de ie sire. Multe dispozitive electronice au un comportament liniar, adic a operatorul L care le caracterizeaz a este un operator liniar. Reamintim c a un operator L este liniar dac a, pentru orice funct ii f si g si pentru orice scalari si , are loc L(f + g ) = L(f ) + L(g ). Pentru un dispozitiv liniar, dac a semnalul de intrare Ui (t) poate descompus ca o sum a de forma Ui (t) = 1 Ui1 (t) + 2 Ui2 (t) + + n Uin (t), atunci pentru semnalul de ie sire avem Ue (t) = L(Ui )(t) = 1 Ue1 (t) + 2 Ue2 (t) + + n Uen (t), unde Ue1 = L(Ui1 ), Ue2 = L(Ui2 ),. . . ,Uen = L(Uin ). Dispozitivele liniare au proprietatea c a, dac a semnalul de intrare este sinusoidal , adic a Ui (t) = U0 cos (2f t + ) , atunci semnalul de ie sire este tot sinusoidal si, mai mult, Ue (t) = g (f ) U0 cos(2f t + (f )),
unde g (f ) si (f ) depind doar de cum este construit dispozitivul si de frecvent a f a semnalului. Orice semnal se poate scrie unic ca o sum a de semnale sinusoidale. (Nota: condit iile matematice asupra semnalului, si alte detalii se g asesc n lucr arile de specialitate, de exemplu [Crstici et al. 1981]; aici facem doar o prezentare semi-intuitiv a). Un semnal periodic de perioad a T se poate descompune n a sa-numita serie Fourier :
U (t) =
k=0
ak cos
2k t + k . T
Un semnal limitat n timp, adic a nul n afara unui interval nit [0, T ], se poate descompune sub forma:
U (t) =
0
(3.1)
Not a: relat ia (3.1) este dat a de obicei sub forma numit a transformata Fourier invers a: U (t) =
I R
(f ) e2if t df, U
(3.2)
este o funct unde U ie complex a care se nume ste transformata Fourier a funct iei U. Relat ia (3.1) spune c a semnalul U se poate scrie ca o sum a de sinusoide cu diferite frecvent e f av and amplitudinile a(f ) si defazajul (decalajul sinusoidei de-a lungul axei Ox) egal cu (f ). Frecvent ele f pentru care amplitudinile corespunz atoare a(f ) sunt nenule alc atuiesc spectrul semnalului. Pentru un dispozitiv liniar, semnalul de ie sire se poate calcula descompun and n sinusoide semnalul de intrare, calcul and efectul dispozitivului asupra ec arei sinusoide n parte si nsum and n nal ie sirile:
=
0
=
0
ai (f ) g (f ) cos(2f t + i (f ) (f ))df,
unde ai (f ) si i (f ) sunt funct iile a(f ) si (f ) din descompunerea, conform relat iei (3.1), a semnalului de intrare Ui . Comportamentul unui dispozitiv liniar este deci complet denit de funct iile g (f ) si (f ). Un semnal este nedistorsionat dac a si numai dac a, pentru toate frecvent ele f din spectrul semnalului, g (f ) este constant a si (f ) este proport ional cu f , adic a exist a constantele g0 si 0 astfel nc at g (f ) = g0 (f ) = 0 f (3.4)
pentru toate frecvent ele f din spectrul semnalului. In practic a, condit ia (3.4) este satisf acut a, cu o aproximat ie acceptabil a, doar pentru frecvent e care se ncadreaz a ntr-un anumit interval f [fmin , fmax ]. Acest interval se nume ste banda de trecere a dispozitivului. In consecint a, dac a spectrul semnalului de intrare se ncadreaz a n banda de trecere a dispozitivului, semnalul de ie sire va prezenta distorsiuni acceptabil de mici. Diferent a fmax fmin se nume ste l a timea de band a a dispozitivului. De exemplu, banda de trecere a unei linii telefonice este cuprins a ntre aproximativ 300 Hz si 3 kHz.
ec arui bit, semnalul emis va avea o anumit a valoare de exemplu 12 V dac a bitul are valoarea 1 si o alt a valoare de exemplu 0 V dac a bitul are valoarea 0 (vezi g. 3.3).
Receptorul determin a intervalele corespunz atoare bit ilor si m asoar a semnalul la mijlocul ec arui interval. Dac a tensiunea este mai mare dec at o valoare numit a prag pentru exemplul nostru se poate lua ca prag 3 V receptorul decide c a bitul respectiv are valoarea 1, iar n caz contrar decide c a bitul are valoarea 0. Valoarea pragului poate x a sau poate stabilit a dinamic n funct ie de amplitudinea semnalului recept ionat pentru a tine cont de atenuare. S a observ am c a receptorul trebuie s a e sincronizat cu emit atorul, adic a s a examineze semnalul recept ionat la mijlocul intervalului corespunz ator unui bit. Acest lucru se poate face ns a este adesea nepractic transmit and un al doilea semnal, de sincronizare, pe un mediu separat (adic a folosind o alt a pereche de re). Sincronizarea se poate face si pe baza semnalului util, dac a receptorul dispune de un ceas sucient de precis. In acest scop, receptorul va m asura timpul c at semnalul este ,,sus (peste prag) si va determina de c ate ori se cuprinde n acest interval durata unui bit. Num arul de bit i consecutivi identici trebuie s a e limitat, c aci receptorul nu va putea distinge ntre n bit i si n + 1 bit i consecutivi av and aceea si valoare, dac a n este prea mare. Limitarea num arului de bit i identici consecutivi se poate face n mai multe feluri: Codicarea Manchester. Semnalul are una sau dou a tranzit ii pentru ecare interval corespunz ator unui bit. O tranzit ie la mijlocul intervalului arat a valoarea bitului: tranzit ia este n sus pentru 1 si n jos pentru 0. Pentru a face posibil ca doi bit i consecutivi s a aib a aceea si valoare, la nceputul intervalului corespunz ator unui bit mai poate s a apar a o tranzit ie (g. 3.4).
Codicarea Manchester diferent ial a. Semnalul are o tranzit ie la nceputul ec arui interval de bit. Dac a bitul este 1 atunci semnalul mai are o tranzit ie la mijlocul intervalului (g. 3.5).
Codurile de grup sunt o familie de coduri construite dup a urm atoarea schem a: Se xeaz a un num ar n (valori uzuale: n = 4 sau n = 8); sirul transmis trebuie s a aib a ca lungime un multiplu de n bit i. Se xeaz a o tabel a de corespondent a care asociaz a ec aruia dintre cele 2n siruri de n bit i posibile un sir de m bit i, unde m > n este xat, cu restrict ia ca ntre cei m bit i s a nu e prea multe valori egale consecutive. Codul este determinat de numrele n si m si de aceast a tabel a. S irul de bit i de codicat se codic a astfel: mai nt ai, ecare grup de n bit i consecutivi se nlocuie ste cu sirul de m bit i asociat. Apoi sirul de bit i astfel obt inut se codic a direct, un bit 0 ind reprezentat printr-o valoare a tensiunii si un bit 1 prin alt a valoare. Ret elele Ethernet de 100 Mbit/s utilizeaz a un cod de grup cu n = 4 si m = 5.
S a examin am acum cerint ele privind banda de trecere a mediului necesar a pentru transmiterea semnalelor de mai sus. Semnalele de form a rectangular a descrise mai sus au spectru innit (spectrul lor nu este m arginit superior). Trecute printr-un mediu de comunicat ie care are o l a time de band a nit a, semnalele vor ,,rotunjite mai mult sau mai put in. S a not am cu durata elementar a a unui palier al semnalului ideal (durata minim a n care semnalul ideal are o valoare constant a). Pentru codicarea direct a, = t; pentru codicarile Manchester si Manchester t . diferent ial a, = 1 2 Dac a banda de trecere a mediului include intervalul 0, 21 , atunci mediul p astreaz a sucient din forma semnalului pentru ca receptorul s a poat a decodica informat ia transmis a. Dac a frecvent a maxim a a benzii de trecere este mai mic a dec at 21 , atunci un semnal rectangular care are, alternativ, un timp o valoare si urm atorul timp cealalt a valoare va distorsionat at at de mult nc at ,,urcu surile si ,,cobor a surile semnalului nu vor mai putea identicate de c atre receptor si ca urmare informat ia purtat a nu mai poate obt inut a. Pentru un mediu dat, cu o band a de trecere dat a, exist a, prin urmare, o valoare minim a a lui pentru care receptorul poate extrage informat ia util a din semnalul recept ionat. Dac a limita superioar a a benzii de trecere este fmax , 1 . valoarea minim a este = 2fmax Diversele codic ari studiate mai sus au diferite rapoarte k ntre durata medie a unui bit si valoarea lui . La codicarea direct a, durata unui bit este egal a cu si deci k = 1. La codic arile Manchester si Manchester diferent ial a, durata unui bit este 2 si avem k = 2. La codurile de grup, durata m s i avem k = unui bit util este m n n . Debitul maxim cu care se pot transmite fmax datele este k .
3.3.2. Modulat ia
Exist a situat ii n care este necesar ca spectrul semnalului s a ocupe o band a departe de frecvent a zero. Aceasta se poate nt ampla e pentru c a circuitele sau mediul de transmisie nu pot transmite frecvent ele apropiate de zero (este de exemplu cazul transmiterii prin unde radio), e pentru a putea transmite mai multe semnale pe acela si mediu prin multiplexare n frecvent a (vezi 3.3.3). In aceste situat ii, semnalul rezultat direct n urma uneia dintre schemele de codicare descrise n paragraful precedent nu poate transmis direct. O posibil a solut ie este modulat ia , descris a n continuare.
Semnalul transmis efectiv este de forma: U (t) = a sin(2f t + ), unde unul dintre parametri a, f sau variaz a n timp, n funct ie de semnalul original, rezultat direct din codicare. Semnalul original l numim semnal primar sau semnal modulator. Semnalul sinusoidal, rezultat pentru valorile ,,de repaus ale parametrilor a, f si , se nume ste semnal purt ator, iar frecvent a f de repaus se nume ste frecvent a purt atoare si o vom nota n continuare cu fp . Semnalul rezultat n urma modulat iei se nume ste semnal modulat . Operat ia de construct ie a semnalului modulat pornind de la semnalul primar se nume ste modulat ie. Operat ia invers a, de obt inere a semnalului primar d andu-se semnalul modulat, se nume ste demodulat ie. Dup a parametrul modicat, avem: modulat ia de amplitudine (prescurtat MA, engl. amplitude modulation, AM ), care const a n modicarea amplitudinii a. Semnalul transmis este deci: U (t) = U0 s(t) sin(2fp t), unde s(t) este semnalul modulator. Pentru ca amplitudinea a = U0 s(t) s a e mai mare dec at 0, asupra semnalului s(t) se impune restrict ia s(t) > 0. Se observ a c a modulat ia n amplitudine este liniar a (modulat ia sumei a dou a semnale a + b este suma rezultatelor modulat iei independente pentru a si b). Dac a semnalul modulator este sinusoidal s(t) = 1 + m sin(2fs t + ) atunci U (t) =U0 s(t) sin(2fp t) = =U0 (sin(2fp t) + m sin(2fs t + ) sin(2fp t)) = =U0 + sin(2fp t)+ (3.5)
adic a n urma modulat iei n amplitudine cu un semnal sinusoidal de frecvent a fs se obt ine o sum a de trei semnale sinusoidale av and frecven tele fp fs , fp si fp + fs . Din liniaritatea modulat iei n amplitudine si din relat ia (3.5) deducem c a, pentru un semnal modulator av and un anumit spectru, spectrul semnalului modulat cont ine frecvent a purt atoare si dou a benzi laterale , st ang a si dreapt a, acestea cuprinz and diferent ele, respectiv sumele, dintre frecvent a purt atoare si frecvent ele din spectrul semnalului primar. Intruc at spectrul semnalului modulat este simetric n jurul frecvent ei purt atoare, de fapt doar una dintre benzile laterale poart a informat ie util a. Din acest motiv, adesea se suprim a total sau part ial de la transimisie una dintre benzile laterale. modulat ia de frecvent a (prescurtat MF, engl. frequency modulation, FM ), care const a n modicarea frecvent ei f n jurul frecvent ei purt atoare fp . Semnalul transmis are forma U (t) = U0 sin 2 (fp + m s(t)) t unde, din nou, fp este frecvent a purt atoare, s(t) este semnalul modulator, iar m este o constant a. Semnalul modulator trebuie s a respecte restrict ia m s(t)s0 fp . Analiza spectrului unui semnal modulat n frecvent a este mult mai difcil a dec at n cazul modulat iei n amplitudine. modulat ia de faz a, care const a n modicarea fazei . Semnalul transmis are forma U (t) = U0 sin 2fp t + m s(t) Este evident c a, ntruc at receptorul nu are de obicei un reper absolut de timp, el nu poate detecta dec at variat iile de faz a ale semnalului recept ionat. Ca urmare, o valoare constant a a lui s(t) nu poate deosebit a de zero si, mai mult, nici variat ii lente ale lui s(t) nu pot detectate. In consecint a, spectrul lui s(t) nu poate cont ine frecvent e prea apropiate de 0. Exist a si posibilitatea de-a varia simultan doi sau chiar tot i cei trei parametri. Modulat ia n cuadratur a const a n varierea simultan a a amplitudinii a si a fazei , pentru a transmite simultan dou a semnale utile s1 si s2 .
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
2. In prezent a zgomotului, receptorul nu poate distinge ntre dou a valori posibile ale semnalului la un anumit moment de timp dec at dac a diferent a dintre cele dou a valori este mai mare dec at amplitudinea zgomotului. Ca urmare, cantitatea de informat ie purtat a de un e santion este limitat a la o valoare proport ional a cu log(s/n + 1). Deoarece pentru o schem a de codicare xat a exist a o relat ie de proport ionalitate ntre l a timea de band a a mediului si debitul maxim al transmisiei, debitul maxim al transmisiei unui echipament de comunicat ie se nume ste uneori n mod impropriu tot l a time de band a sau band a de trecere .
Avantajul este, evident, reducerea costului, iar dezavantajul este m arirea diafoniei ntre circuite. Din cauza diafoniei si sensibilit a tii la zgomote, perechea simpl a se utilizeaz a doar pe distant e mici. Perechea torsadat a (engl. twisted pair ), n care conductoarele sunt r asucite unul n jurul celuilalt. Rolul r asucirii este de-a mic sora interact iunea cu c ampul electromagnetic nconjur ator, adic a mic sorerea zgomotului indus de un c amp electromagnetic nconjur ator si, totodat a, mic sorarea c ampului electromagnetic produs de semnalul ce trece prin perechea de conductoare. Acest lucru este important n special pentru mic sorarea diafoniei cu celelalte perechi de conductoare din acela si cablu. In afar a de r asucire, restul construct iei este identic a cu perechea simpl a. Cablurile formate din perechi torsadate nu au niciodat a un conductor comun pentru mai multe circuite. Este important ca, n cazul unui cablu ce cont ine mai multe perechi torsadate, ecare circuit de comunicat ie s a utilizeze conductoarele din aceea si pereche si nu un conductor dintr-o pereche si un conductor din alt a pereche. In caz contrar, apare diafonie foarte puternic a ntre circuite (mai mare dec at la perechea simpl a). De remarcat c a aceast a gre seal a este u sor de comis n urma unei identic ari gre site a conductoarelor dintr-un cablu si nu este pus a n evident a de dispozitivele simple de testare, care veric a doar continuitatea n curent continuu a conductoarelor cablului. Perechea coaxial a are unul din conductoare n forma unui cilindru gol n interior, iar cel alalt conductor este dus prin interiorul primului conductor si izolat electric fat a de acesta. Conductorul exterior este format de obicei dintr-o plas a format a din s arme subt iri de cupru, nf a surate elicoidal, o parte din re ind nf a surate ntr-un sens si alt a parte n cel alalt sens. Cablul coaxial este si mai protejat de interferent e dec at perechea torsadat a. Are de obicei atenuare mai mic a dec at perechea simpl a sau cea torsadat a. Costul este ns a mai ridicat. In oricare dintre variante, pentru a reduce suplimentar interferent ele cu c ampul electromagnetic nconjur ator, perechea de conductoare poate ecranat a , adic a nvelit a ntr-un strat conductor continuu. Pentru ca ecranul s a e ecient, trebuie s a aib a continuitate de jur mprejurul conductoarelor (dac a este realizat prin nf a surarea unei foit e metalice, marginile foit ei trebuie s a fac a contact ferm ntre ele) si pe lungime (s a aib a leg atur a prin conectoare
c atre elemente de ecranare ale echipamentelor la care este conectat cablul). Ecranul unui cablu poate colectiv, mbr ac and ntreg cablul, sau individual pentru ecare pereche de conductoare. Pe l ang a elementele cu rol electric, un cablu cont ine elemente cu rol de protect ie. Orice cablu este nf a surat cel put in ntr-o manta de protect ie, care tine la un loc si protejeaz a mecanic conductoarele. Mantaua de protect ie este fabricat a de obicei din PVC. Un cablu destinat mont arii aerian trebuie s a e prev azut cu un cablu de ot el pentru sust inere mecanic a. Un cablu destinat mont arii subteran trebuie prev azut cu un scut metalic contra roz atoarelor.
observ a c a intensitatea curentului ce trece prin surs a si prin cap atul dinspre surs a al cablului este proport ional a cu tensiunea. Raportul dintre tensiune si intensitate se nume ste impedant a caracteristic a a cablului. Receptorul se caracterizeaz a si el printr-o impedant a de intrare , denit a ca raportul dintre tensiunea aplicat a la bornele receptorului si intensitatea curentului absorbit de receptor. Emit atorul se caracterizeaz a printr-o impedant a de ie sire , denit a ca raportul dintre sc aderea tensiunii la borne cauzat a de absorbt ia unui curent de c atre un dispozitiv montat la bornele emit atorului si intensitatea curentului absorbit. Dac a la un cap at de cablu de o anumit a impedant a leg am un cablu de alt a impedant a sau dac a emit atorul sau receptorul ata sat are alt a impedant a dec at impedant a caracteristic a a cablului, spunem c a avem o neadaptare de impedant a. In acest caz, jonct iunea respectiv a reect a o parte din semnalul incident (este analog reexiei luminii la trecerea din aer n sticl a, sau n general ntre medii cu indice de refract ie diferit). Reexia produce dou a neajunsuri: pe de o parte scade puterea semnalului util ce ajunge la receptor, iar pe de alt a parte un semnal ce sufer a dou a reexii succesive se poate suprapune peste semnalul util si, ind nt arziat fat a de acesta, l distorsioneaz a. Impedant a se m asoar a n ohmi (simbol ). Cablul pentru televiziune are impedant a de 75 . Cablul coaxial pentru ret ea Ethernet are impedant a de 50 . Cablul torsadat Ethernet are 100 .
neadaptare de impedant a, ns a nu permit propagarea semnalului de la ecare ramur a spre toate celelalte. O alt a solut ie de conectare a mai multor dispozitive (emit atoare sau receptoare) la un cablu const a n realizarea unei ramicat ii foarte scurte, astfel nc at s a nu aib a comportament de linie lung a (la frecvent ele cu care se lucreaz a uzual, aceasta nseamn a cel mult c a tiva centimetri), la cap atul c areia se conecteaz a emit atorul sau receptorul. Emit atorul sau receptorul astfel conectat trebuie s a aib a impedant a de ie sire, respectiv de intrare, mult mai mare dec at impedant a perechii de conductoare la care se conecteaz a. O astfel de conectare se utilizeaz a, de exemplu, n ret elele Ethernet vechi (vezi 9.1.3 si g. 9.1). Dac a un cap at de pereche de conductoare este l asat liber (neconectat), el produce reexii. De fapt, un cap at neconectat poate v azut ca o jonct iune de la perechea ce are o anumit a impedant a la un dispozitiv av and impedant a innit a. Pentru evitarea reexiilor, la cap atul unei perechi de conductoare trebuie montat un dispozitiv numit terminator . Terminatorul este un simplu rezistor, av and rezistent a egal a cu impedant a cablului. El absoarbe integral semnalul incident, neproduc and nici un fel de reexie. Not am c a terminatoarele sunt utilizate n mod normal doar pe leg aturi magistral a; pe leg aturile punct la punct, emit atorul si receptorul au, n mod obi snuit, impedant a necesar a, astel nc at joac a si rol de terminator.
toare este expus atingerii cu m ana (este cazul la ret elele Ethernet cu cablu coaxial, unde conductorul exterior este legat la partea metalic a exterioar aa conectoarelor), standardele de protect ie la electrocutare cer legarea la p am ant a conductorului respectiv; legarea la p am ant trebuie ns a f acut a ntr-un singur punct pentru a evita suprapunerea peste semnalul util a tensiunilor dintre diverse puncte ale ret elei de p am antare. O alt a surs a de tensiuni parazite ntre conductoarele de semnal sunt desc arc arile electrice din atmosfer a (fulgerele si tr aznetele). Deoarece n mod normal conductoarele ret elei sunt izolate fat a de ret eaua de p am antare, fenomenele atmosferice pot induce tensiuni ridicate ntre conductoarele ret elei si carcasele echipamentelor, put and duce la distrugerea echipamentelor ret elei. Ca urmare, n cazul unor cabluri de ret ea duse prin exteriorul cl adirilor, este necesar a e ecranarea cablului si legarea ecranului la p am ant, e amplasarea unor desc arc atoare care s a limiteze tensiunea dintre conductoarele ret elei si p am ant.
De interes practic n ret elele de calculatoare sunt undele radio n intervalul 300 MHz 30 GHz, sau echivalent, cu lungimile de und a cuprinse ntre 1 m si 1 cm. La transmisia prin unde radio, m arimile zice utilizate ca semnal sunt intensitatea c ampului electric si induct ia magnetic a. Cele dou a m arimi sunt proport ionale n modul si au direct ii perpendiculare una pe cealalt a si pe direct ia de propagare a undei. Intr-un sistem de transmisie prin unde radio, emit atorul cuprinde dou a blocuri distincte: un dispozitiv electronic, care produce un semnal de tip tensiune si intensitate electric a, si antena , care converte ste semnalul din tensiune si intensitate electric a n c amp electromagnetic. Receptorul const a de asemenea dintr-o anten a, care plasat a n calea undelor electromagnetice transform a semnalul din c amp electromangetic n tensiune si intensitate electric a, si un dispozitiv electronic, care decodic a semnalul electric. Orice anten a poate servi at at la emisie c at si la recept ie. (Singura diferent a ce apare ntre antene este c a antenele de emisie de putere mare trebuie construite astfel nc at s a suporte tensiunile si curent ii mari ce apar n elementele lor.) Mai multe propriet a ti ale sistemului de transmisie fac ca l a timea benzii de trecere a ntregului sistem s a e ngust a n raport cu frecvent ele ntre care se ncadreaz a banda de trecere; raportul ntre l a timea benzii si limita inferioar a a benzii este n mod tipic de cel mult c ateva procente. Din aceast a cauz a, transmisia prin unde radio este ntotdeauna cu modulat ie, iar frecvent a purt atoare este cel put in de c ateva zeci de ori mai mare dec at l a timea de band a. De exemplu, pentru o vitez a de transmisie de 10 Mbit/s avem n mod tipic nevoie de o l a time de band a apropiat a de 10 MHz, pentru care frecvent a purt atoare va de cel put in 200 MHz.
fasciculul se nume ste polarizat liniar. Un fascicul polarizat liniar se caracterizeaz a prin direct ia vectorului E , numit a direct ia de polarizare. Dac a E are modul constant si direct ia lui se rote ste uniform, n plan perpendicular pe direct ia de deplasare a undei, fasciculul se nume ste polarizat circular. Se distinge polarizare circular a st ang a dac a, privind n direct ia de propagare a undelor, dinspre emit ator spre receptor, direct ia lui E se rote ste n sens invers acelor de ceas; si polarizare circular a dreapt a dac a E se rote ste n sensul acelor de ceas. Un fascicol cu polarizare circular a rezult a de fapt prin suprapunerea a dou a fascicole, de amplitudine egal a, polarizate perpendicular unul pe cel alalt, deplas andu-se n aceea si direct ie si cu un decalaj de un sfert de ciclu ntre ele. Dac a cele dou a fascicole au amplitudini diferite, rezult a ceea ce se nume ste polarizare eliptic a ; polarizarea liniar a si polarizarea circular a sunt de fapt cazuri particulare de polarizare eliptic a. 3.5.1.2. Absorbt ia si reexia Absorbt ia undelor radio n aer este neglijabil a. Pic aturile de ap a (din ploaie, nori, ceat a) absorb destul de puternic undele radio, n special microundele. Apa absoarbe puternic toate undele radio; de aceea este greu de obt inut leg atur a radio sub ap a. Absorbt ie moderat a se produce n p am ant si n diferite materiale de construct ie. Sc aderea puterii undelor radio datorit a absorbt iei este exponent ial a cu distant a, ca si n cazul propag arii semnalelor prin cabluri. Metalele reect a undele radio. Plasele metalice care au contact bun ntre rele componente si au ochiurile mult mai mici dec at lungimea de und a se comport a ca o suprafat a metalic a compact a. Arm aturile cl adirilor din beton armat nu fac contact electric prea bun ntre ele, ns a perturb a serios propagarea undelor radio. Ionosfera reect a undele cu lungimi de und a de ordinul metrilor; prin reexii repetate ntre P am ant si ionosfer a, aceste unde pot parcurge u sor multe mii de kilometri. 3.5.1.3. Difract ia Orice und a ocole ste obstacolele mai mici dec at o fract iune din lungimea de und a, n vreme ce n spatele obstacolelor mai mari de c atea lungimi de und a ,,r am ane umbr a. De aceea, undele lungi, cu lungime de und a de ordinul kilometrilor sau sutelor de metri sunt capabile s a ocoleasc a obstacole mari, inclusiv curbura P am antului pe distant a de c ateva sute sau chiar mii de kilometri. Prin contrast, undele cu lungime de und a sub c a tiva metri se propag a aproape numai n linie dreapt a, dealurile sau cl adirile mai mari put and provoca umbre.
3.5.1.4. Interferent a undelor Dac a ntr-un punct ajung unde pe mai multe c ai, de exemplu o cale direct a si o cale prin reexia pe un obstacol, unda recept ionat a n acel punct este suma undelor ce ajung pe toate c aile. Dac a diferent a de drum ntre dou a c ai este un num ar ntreg de lungimi de und a, dar mult mai mic a dec at lungimea unui bit, undele se suprapun n faz a si se adun a, semnalul recept ionat ind mai puternic. Dac a diferent a de drum este apropiat a de un num ar impar de lungimi de und a, undele se suprapun n antifaz a si se anuleaz a reciproc, semnalul recept ionat ind slab sau nul. In aceste situat ii, deplasarea receptorului (sau emit atorului) pe o distant a de la un sfert din lungimea de und a si p an a la de c ateva ori lungimea de und a poate modica mult calitatea semnalului (reaminitim c a n transmisiile de date se utilizeaz a lungimi de und a cuprinse ntre 1 cm si 1 m). Schimbarea lungimii de und a pe care se face transmisia poate de asemenea modica mult efectul. Dac a diferent a de drum ntre semnalele recept ionate pe c ai diferite este comparabil a sau mai mare dec at lungimea unui bit si puterile semnalului pe cele dou a c ai sunt apropiate, semnalele propagate pe cele dou a c ai se bruiaz a reciproc. Situat ia apare mult mai rar dec at cea prezentat a mai sus, ns a nu poate corectat a dec at prin mutarea stat iilor fat a de obstacolele ce produc reexiile. 3.5.1.5. Divergent a undelor Pe m asur a ce ne dep art am de emit ator, puterea semnalului scade datorit a extinderii frontului de und a. Densitatea puterii este invers proport ional a cu suprafat a frontului de und a, care la r andul ei este proport ional a cu p atratul distant ei fat a de emit ator. Ca urmare, puterea recept ionat a Pr este invers proport ional a cu p atratul distant ei d dintre emit ator si receptor: Pr = Pe 1 d2
unde este o constant a ce depinde de construct ia antenelor de emisie si de recept ie, iar Pe este puterea emit atorului. Sc aderea puterii datorit a extinderii frontului de und a este independent a de eventuala absorbt ie a undelor n mediu; aceasta din urm a duce la o sc adere exponent ial a cu distant a a puterii semnalului.
3.5.2. Antene
O anten a este un dispozitiv care realizeaz a conversia ntre un semnal electric (tensiune si intensitate electric a) pe o pereche de conductoare si
oscilat iile electromagnetice n mediul nconjur ator antenei. Orice anten a este reversibil a: dac a i se aplic a un semnal electric la borne, va radia unde electromagnetice si, reciproc, dac a este plasat a n calea undelor electromagnetice, va produce semnal electric la borne. In general o anten a este optimizat a pentru o anumit a band a de trecere. O anten a are un anumit randament, denit ca raportul dintre puterea undei electromagnetice radiate si puterea absorbit a din semnalul electric primit. 3.5.2.1. Directivitatea O anten a nu radiaz a uniform de jur mprejur. Prin c a stigul (engl. gain ) unei antene pe o direct ie se nt elege raportul dintre puterea radiat a pe acea direct ie si puterea radiat a de o anten a etalon, n acelea si condit ii. Ca etalon se utilizeaz a de obicei o anten a ipotetic a care ar radia egal n toate direct iile si ar avea randamentul 100%. Deoarece energia se conserv a, c a stigul este pe unele direct ii supraunitar si pe altele subunitar, integrala lui pe ntreaga sfer a ind 4 (unde reprezint a randamentul antenei). C a stigul este dat uneori direct, alteori este dat logaritmul c a stigului, exprimat n decibeli. C a stigul antenei pe diverse direct ii este reprezentat grac prin diagramele de c a stig . O astfel de diagram a este o reprezentare a c a stigului ca funct ie de unghi pe toate direct iile dintr-un plan. O direct ie de maxim local al c a stigului, mpreun a cu direct iile apropiate, se nume ste lob . Lobul care cuprinde maximul global al c a stigului se nume ste lobul principal al antenei. Ceilalt i lobi se numesc lobi secundari sau lobi laterali. Valoarea maxim a, pentru toate direct iile posibile, a c a stigului este numit a c a stigul antenei. O anten a optimizat a s a aib a c a stig c at mai mare pe o direct ie, n detrimentul celorlalte direct ii, se nume ste anten a directiv a. O anten a optimizat a pentru a avea c a stig c at mai uniform, cel put in n planul orizontal, se nume ste anten a nedirectiv a. O anten a cu c a stig perfect uniform de jur mprejur (radiator izotrop) este imposibil de realizat. Exist a o leg atur a ntre dimensiunea antenei, directivitatea si lungimea de und a la care funct ioneaz a. Anume, raza unghiular a a lobului principal (m asurat a n radiani) nu poate mai mic a dec at raportul dintre diametrul antenei si lungimea de und a. Ca exemplu, pentru a obt ine un lob principal de 3 ( 0,05 rad) la o lungime de und a de 6 cm (f = 5 GHz) avem nevoie de o anten a de cel put in 1,2 m diametru. Limitarea aceasta este legat a de fenomenele de difract ie a undelor si nu poate ocolit a.
O anten a de recept ie plasat a n calea undelor recept ioneaz a o putere proport ional a cu densitatea de putere a undei incidente. Raportul dinte puterea disponibil a la bornele antenei si densitatea de putere a undei incidente se nume ste aria efectiv a sau apertura antenei. Apertura poate privit a ca suprafat a, transversal a pe direct ia de propagare a undelor, de pe care antena preia ntreaga energie. Apertura depinde de direct ia considerat a a undei incidente. Apertura fat a de o anumit a direct ie a undei incidente este proport ional a cu c a stigul antenei pe acea direct ie. Relat ia este: S=G 2 4 (3.6)
unde S este aria efectiv a, G este c a stigul, iar este lungimea de und a. Utiliz and relat ia (3.6), se poate calcula puterea recept ionat a, dac a distant a dintre emit ator si receptor este mult mai mare dec at dimensiunile antenelor: Pr = Pe Ge 1 Sr = 4d2 2 = Pe Ge Gr 16 2 d2
unde Pr este puterea disponibil a la bornele antenei receptoare, Pe este puterea aplicat a la bornele antenei emit atoare, d este distant a dintre emit ator si receptor, Ge este c a stigul emit atorului pe direct ia spre receptor, iar Gr si Sr sunt respectiv c a stigul si apertura antenei receptoare pe direct ia spre emit ator. Exemplul 3.1: Consider am un emit ator (de exemplu, un calculator dintr-o ret ea IEEE 802.11 wireless ) care emite un semnal cu puterea Pe = 100 mW (sau, echivalent, +20 dBm) si frecvent a f = 2,4 GHz (lungimea de und a este atunci = 0,125 m). Mai presupunem c a receptorul se g ase ste la o distant a d = 100 m fat a de emit ator, c a absorbt ia semnalului este neglijabil a (emit atorul si receptorul se g asesc n c amp deschis si nu plou a) si c a ambele antene au un c a stig Ge = Gr = 2 pe direct ia spre partenerul de comunicat ie. Rezult a puterea semnalului recept ionat: Pr = 101 W 2 adic a aproximativ 84 dBm. (0,125 m)2 2 3,9 109 W, 16 2 (100 m)2
3.5.2.2. Polarizarea Antenele cele mai simple au polarizare liniar a: unda emis a este polarizat a liniar, pe o direct ie stabilit a prin construct ia antenei. Rotirea antenei emit atorului fat a de cea a receptorului duce la variat ia semnalului recept ionat ntre un maxim (c and direct iile polariz arilor celor dou a antene sunt paralele) si un minim (teoretic zero) c and direct iile sunt perpendiculare. O anten a polarizant a liniar va recept iona ntotdeauna, indiferent de direct ia de polarizare, o transmisie polarizat a circular; reciproc, o anten a polarizant a circular va recept iona o emisie polarizat a liniar. O anten a polarizant a circular va recept iona o transmisie polarizat a circular numai dac a are acela si sens al polariz arii. Rotirea antenelor n jurul dreptei ce le une ste nu are efect. 3.5.2.3. Tipuri de antene Antenele nedirective sunt de cele mai multe ori un simplu baston metalic (de fapt, bastonul este un pol, iar carcasa aparatului sau, dup a caz, P am antul. este cel alalt pol). O astfel de anten a are c a stig maxim n planul orizontal (perpendicular pe baston) si zero pe direct ie vertical a ( n lungul bastonului). Undele produse sunt polarizate vertical. Antenele directive cele mai r asp andite pentru comunicat ii de date sunt a sa-numitele antene parabolice (denumire improprie, pentru c a forma parabolic a este a reectorului antenei). O asrfel de anten a este alc atuit a dintro oglind a n form a de paraboloid de rotat ie, n focarul c areia este plasat a an tena propriu-zis a. (In alte construct ii, antena propriu-zis a este plasat a n alt a parte, iar unda electromagnetic a este adus a n focarul reectorului parabolic printr-un tub metalic numit ghid de und a.)
exact punctele n care este posibil a recept ia unei emisii radio si punctele n care emisia este obstruct ionat a. 3.5.3.2. Linia orizontului Unul dintre obstacolele ce limiteaz a raza de act iune a undelor radio este nsu si P am antul, prin curbura suprafet ei sale. O stat ie aat a la o anumit a n alt ime poate comunica cu o stat ie aat a la nivelul solului dac a si numai dac a stat ia de pe sol se a a mai aproape dec at linia orizontului celeilalte stat ii. Dou a stat ii pot comunica dac a exist a cel put in un punct comun orizontului celor dou a stat ii. In c ampie, distant a p an a la linia orizontului este (r desemneaz a raza P am antului, iar h este n alt imea antenei deasupra suprafet ei P am antului): m asurat a de-a lungul curburii, de la baza turnului n care se a a obserr vatorul: d = r arccos h+r ; m asurat a n linie dreapt a de la observator: d= (r + h)2 r2 = h(2r + h);
dac ah r, d 2rh. De remarcat c a dac a exprim am numeric 2r n 3 mii de kilometri (2r 12,7 10 km) si h n metri, distant a d rezult a n kilometri. Exemple: Distant a p an a la linia orizontului pentru un observator aat la 1,6 m deasupra p am antului (de exemplu un radiotelefon tinut n m an a) este d = 12,7 1,6 km 4,5 km. Un turn cu n alt imea de 20 m (obi snuit pentru un releu GSM) are linia orizontului la 16 km. O stat ie aat a ntr-un astfel de turn poate comunica cu un radiotelefon tinut n m an a la o distant a de 16 km+4,5 km = 20,5 km (de regul a raza de act iune a unui releu GSM este limitat a de alte considerente). De pe un turn cu n alt imea de 50 m, distant a la linia orizontului este d = 12,7 50 km 25 km. Dou a relee de telecomunicat ii av and 50 m n alt ime ecare pot comunica direct dac a sunt la mai put in de 50 km unul de altul. Distant a la linia orizontului cre ste ncet cu n alt imea; dac a se dubleaz a n alt imea, distant a la linia orizontului cre ste cu un factor de 2 1,4. 3.5.3.3. Utilizarea satelit ilor articiali ai P am antului Satelit ii articiali ai P am antului sunt utilizat i ca echivalentul unor turnuri nalte pentru montarea unor stat ii radio. Dup a altitudinea la care
sunt plasat i, distingem trei categorii de satelit i: satelit i de joas a altitudine aat i ntre 200 . . . 1000 km, cu perioada de rotat ie de 1,5 . . . 1,8 h; satelit i de altitudine medie ntre 10000 . . . 15000 km (raza orbitei de 34 ori raza P am antului), cu perioada de rotat ie de 6 . . . 9 h; satelit i geostat ionari aat i la 35800 km deasupra ecuatorului, au perioada de rotat ie de exact o zi si ca urmare apar c si fat a de P am ant. Un satelit are o arie de acoperire incomparabil mai mare fat a de o stat ie terestr a. La 200 km altitudine, un satelit acoper a o raz a de 1500 km, iar un satelit de medie altitudine acoper a o raz a de peste 7000 km. Din cauza distant elor mari, comunicat ia cu satelit ii necesit a e puteri mari, e antene cu directivitate foarte bun a. Este de remarcat faptul c a distant a de la un satelit la o stat ie terestr a este de la c ateva zeci la c ateva sute de ori mai mare dec at distant a de la un releu amplasat ntr-un turn la o stat ie terestr a. Ca urmare, pentru acelea si antene, puterile necesare sunt de la cateva sute la c ateva sute de mii de ori mai mari. La comunicat ia ntre satelit i geostat ionari si stat ii xe de pe sol se pot utiliza relativ u sor antene cu directivitate bun a, deoarece antenele de pe sol sunt xe. Orbita geostat ionar a este ns a destul de ,,aglomerat a: presupun and c a avem antene ce dau un fascicul cu diametrun unghiular de 6 , (vezi exemplul n care rezulta, pentru f = 5 GHz, un diametru al antenei de peste 1,2 m) putem distinge doar ntre 60 de satelit i distinct i. Pentru satelit ii care nu sunt geostat ionari, utilizarea antenelor directive necesit a un sistem foarte complicat de urm arire a satelitului. 3.5.3.4. Zgomotul Zgomotul n transmisiile radio provine din multe surse, ntre altele aparatur a electronic a, ntrerup atoare electrice (inclusiv colectoarele motoarelor de curent continuu). Transmisiile radio sunt mult mai sensibile la zgomot dec at transmisiile prin conductoare electrice, deoarece la conductoare electrice undele radio p atrund accidental n semnal, din cauza ecran arii imperfecte, pe c at a vreme la transmisiile radio semnalul util se amestec a direct cu zgomotul radio ambiant. Nivelul zgomotului radio ambiant este un factor important care limiteaz a inferior pragul de sensibilitate al receptorului si, n consecint a, xeaz a puterea minim a pentru o anumit a distant a emit ator-receptor. Nivelul de zgomot scade n general o dat a cu cre sterea frecvent ei.
3.5.3.5. Sc aderea puterii cu distant a Densitatea de putere a undelor electromagnetice scade cu p atratul distant ei de la emit ator. Ca urmare, la o sensibilitate xat a a receptorului, pentru a dubla raza de act iune a emit atorului trebuie s a-i cre stem puterea de 4 ori. Pe de alt a parte, dac a dou a emit atoare radio funct ioneaz a n aceea si regiune geograc a si emit pe frecvent e identice sau foarte apropiate, atunci transmisia mai puternic a ,,acoper a transmisia mai slab a. Aceasta se nt ampl a deoarece semnalele celor dou a emit atoare se suprapun. Dac a, n punctul n care este plasat receptorul, puterea unuia dintre emit atoare este mult mai mare dec at puterea celuilalt, atunci receptorul va recept iona doar transmisia mai puternic a, chiar dac a, singur a, transmisia mai slab a ar putea recept ionat a corect. Dac a puterile sunt apropiate, receptorul nu va putea ,, nt elege nici una dintre transmisii. 3.5.3.6. Emisia direct ionat a si polarizat a Domeniul de act iune a unui emit ator sau receptor poate restr ans n mod voit dot and emit atorul sau receptorul (de obicei ambele) cu antene directive. Trebuie ns a calculate cu atent ie divergent a lobului principal, puterea emis a pe lobii secundari ai antenei si reexiile de teren. Polarizarea se poate utiliza pentru a separa dou a transmisii pe aceea si direct ie si pe aceea si lungime de und a. In cazul utiliz arii polariz arii liniare, cele dou a transmisii trebuie s a utilizeze direct ii de polarizare perpendiculare; n cazul polariz arii circulare se vor folosi cele dou a sensuri (st anga si dreapta). Lobii secundari ai antenelor, precum si undele reectate de diverse corpuri, au polariz ari greu de controlat.
Not iunea de band a n care se face transmisia specic a n acest context un interval de frecvent e alocat pentru o anumit a categorie de transmisii radio. Benzile, n acest sens, se specic a e printr-o anumit a frecvent a sau lungime de und a, din interiorul benzii, si av and o valoare ,,rotund a, e printr-un nume. Limitele benzii se g asesc n standarde. Dou a transmisii radio ce se fac pe frecvent e diferite, sau mai precis, a c aror benzi de trecere sunt disjuncte, pot separate n general u sor. Separarea n frecvent a este mult mai u sor controlabil a dec at separarea spat ial a studiat a n 3.5.3. Dou a transmisii pe aceea si frecvent a si n aceea si zon a geograc a sunt practic imposibil de separat, dac a au puteri apropiate, sau transmisia mai slab a este imposibil de recept ionat ind ,,acoperit a de cea mai puternic a. Pentru evitarea suprapunerilor ntre utilizatori, utilizarea diverselor benzi de frecvent e face obiectul unor reglement ari legale n ecare tar a, precum si a unor acorduri internat ionale. Emiterea unui semnal radio, pe o frecvent a pentru care operatorul emit atorului nu este autorizat sau de o putere mai mare dec at cea autorizat a, poate duce la sanct ionarea contravent ional a sau chiar penal a a operatorului. In majoritatea cazurilor, un utilizator de comunicat ii radio care dore ste s a opereze un emit ator trebuie s a obt in a o autorizat ie n care se specic a frecvent a de lucru, puterea maxim a, zona geograc a n care opereaz a, etc. Exist a frecvent e alocate posturilor de radio, sistemelor de comunicat ii radio ale diferitelor institut ii (polit ie, controlorii de trac aerian, dispecerate de taxiuri, operatori de telefonie mobil a, etc.). Tot n aceast a categorie, ns a cu un statut aparte sunt radioamatorii: frecvent ele sunt alocate activit a tii de radioamator si nu unei persoane sau institut ii, ns a radioamatorii trebuie s a se nregistreze pentru a putea emite. Exist a ns a benzi pentru care nu este necesar a o autorizare expres aa emit atorului, cu condit ia ca emit atorul s a nu dep a seasc a o anumit a putere. In aceast a categorie intr a frecvent ele folosite de: ret elele IEEE 802.11 (Wireless Ethernet) si Bluetooth, tastaturi si mau si f ar a r, telefoanele f ar a r, microfoanele f ar a r, walkie-talkie-urile de juc arie, juc arii cu telecomand a prin radio, telecomenzi pentru deschis garajul. Utilizatorul unor astfel de echipamente trebuie totu si s a e atent la eventualele diferent e ntre reglement arile din diferite t ari: un echipament poate funct iona legal f ar a autorizat ie n tara de origine, dar s a necesite autorizat ie n alt a tar a. Echipamentele care lucreaz a pe frecvent e pentru care nu trebuie autorizat ie ajung s a interfereze dac a sunt plasate n apropiere. Unele dintre acestea permit selectarea frecvent ei de lucru dintre 24 frecvent e predenite. Utilizatorul va selecta o frecvent a diferit a dac a constat a o funct ionare proast a
si suspecteaz a interferent e cu echipamente vecine. Alt a solut ie este schimbarea repetat a a frecvent ei de lucru, dup a o schem a convenit a ntre emit ator si receptor, si tolerarea unui num ar de ciocniri ale transmisiilor pe perioadele n care echipamentele vecine se nimeresc aceea si frecvent a. Tehnica se nume ste frequency hopping (salturi ale frecvent ei). Mai ment ion am c a, printre produc atorii de semnale radio parazite intr a si alte dispozitive, av and alte scopuri dec at comunicat iile. Ca fapt divers, enumer am c ateva: Sursele de alimentare de la aproape toate aparatele electronice moderne (a sa-numitele surse n comutat ie ), precum si blocul de baleiaj de linii de la televizoarele si monitoarele cu tub catodic, emit semnicativ pe frecvent e p an a la c ateva sute de kilohert i (a sa-numitele armonice, adic a frecvent e care sunt multipli ai frecvent ei de lucru a circuitului). Funct ionarea acestora bruiaz a adesea posturile de radio pe unde lungi si uneori chiar medii. Radioemit atoarele emit si pe frecvent e ce sunt multipli ai frecvent ei purt atoare (armonice). Din acest motiv, se nt ampl a uneori ca un post de televiziune s a apar a, cu semnal foarte slab, si pe un canal superior celui pe care este transmis normal (dar atent ie, uneori acest efect este datorat recept iei de la un alt releu de televiziune, mai ndep artat).
Pentru distant e mici, se poate adopta o organizare mai ,,democratic a (exemplu IEEE 802.11): stat iile comunic a direct ntre ele, iar arbitrarea mediului se face prin mijloace asem an atoare cu cele utilizate pe cabluri magistral a ( 4.2). Spre deosebire ns a de cablurile magistral a, unde un pachet emis de o stat ie de pe cablu este recept ionat de toate celelalte si, ca urmare, ciocnirea la recept ie a dou a pachete este sesizat a si de c atre emit atoare, la leg aturile radio este posibil ca dou a transmisii s a se ciocneasc a la receptor dar nici una din stat iile care le-au emis s a nu recept ioneze transmisia celeilalte. 3.5.5.2. Fiabilitatea Fiabilitatea unei leg aturi radio este n general mai sc azut a dec at a unei leg aturi pe cablu: Rata de erori este mult mai mare. La o leg atur a radio, probabilitatea unei erori de un bit este n mod normal de 103 . . . 105 . Pentru comparat ie, la transmisia prin perechi de conductoare, probabilitatea unei erori de un bit este de 107 . . . 1010 , iar la brele optice, erorile sunt si mai rare, 10 12 10 . . . 10 . La frecvent e peste 10 GHz, datorit a absorbt iei n pic aturile de ap a, starea leg aturii poate depinde de starea vremii. Umbrele provocate de cl adiri si relief, precum si interferent ele ntre undele reectate, sunt imposibil de calculat n mod practic. O stat ie ce ajunge n umbr a va pierde leg atura n mod imprevizibil. 3.5.5.3. Securitatea La comunicat iile prin cablu pe distant a scurt a, securitatea comunica tiei poate asigurat a p azind cablul. Din acest motiv ret elele locale pe cablu pot s a nu prevad a m asuri contra intru silor. Undele radio nu pot p azite, analog cablului. Ret elele f ar a r este esent ial s a aib a incorporate m asuri de securitate. Acestea presupun metode criptograce (vezi capitolul 6) ce previn ascultarea sau contrafacerea unui mesaj, si eventual schimbarea frecvent ei (metoda frequency hopping ) pentru a preveni bruiajul.
lumin a pentru aceste unde, de si nu se ncadreaz a n domeniul luminii vizibile ( = 780 nm . . . 380 nm). M arimea considerat a ca semnal este puterea luminoas a. Am putea considera, n mod echivalent, c a semnalul transmis de mediu este intensitatea c ampului electric sau induct ia magnetic a si c a utiliz am modulat ie n amplitudine pentru a transmite semnalul util. Emisia si recept ia se realizeaz a cu dispozitive semiconductoare capabile s a emit a raze infraro sii la trecerea curentului prin ele (LED-uri, asem an atoare celor de pe panourile de aparate, sau, dup a caz, diode laser) si, respectiv, care permit trecerea curentului doar n prezent a luminii. Pentru unele aplicat ii, presupun and comunicat ie pe distant a de cel mult c a tiva metri (de exemplu, pentru telecomenzi de televizoare sau pentru dispozitive IrDA), raza de lumin a se propag a direct prin aer de la emit ator la receptor. Metoda este dicil de extins la distant e mai mari. Raza de lumin a poate ns a foarte u sor ghidat a printr-o br a optic a. O br a optic a este n esent a un r dintr-un material transparent, prin interiorul c aruia trece lumina. Dac a raza de lumin a love ste peretele lateral al brei, se ntoarce napoi n br a. In acest fel, lumina ce intr a printr-un cap at al brei iese prin cel alalt cap at chiar dac a bra nu este perfect dreapt a. Fibra optic a se mai nume ste si ghid de und a optic (engl. optical waveguide ), deoarece este identic ca si scop si foarte asem an ator funct ional cu ghidul de und a utilizat pentru microunde. Lungimea brei, ntre emit ator si receptor, poate atinge c ateva zeci de kilometri. Lucrurile care fac posibil a atingerea unor distant e at at de mari sunt atenuarea mic a (sub 1 dB/km) si imunitatea aproape perfect a la zgomot.
n mai multe straturi cu rol de protect ie mecanic a. Ideea de baz a a conducerii semnalului prin br a este c a o raz a de lumin a ce se propag a oblic prin miez si atinge suprafat a de contact dintre miez si nveli s s a se reecte napoi n miez. Reexia trebuie s a e cu pierderi extrem de mici, deoarece o raz a se va reecta de multe ori de la un cap at la cel alalt al brei. 3.6.1.1. Conectarea brelor optice Problemele legate de conectarea brelor optice reprezint a principalul dezavantaj al brelor optice fat a de perechile de conductoare. Conectarea cap la cap a dou a tronsoane de br a se poate face: prin lipire, nc alzind bra p an a la temperatura de topire a sticlei si av and grij a ca s a se lipeasc a capetele dar s a nu se amestece miezul cu nveli sul. Conectarea prin lipire necesit a echipamente mai scumpe, este nedemontabil a, dar perturb a cel mai put in transmiterea semnalului prin br a. O lipitur a produce o atenuare a semnalului n jur de 0,1 dB, din cauza reexiei unei p art i a luminii incidente. prin conectoare optice. Fiecare cap at de br a se slefuie ste foarte bine si se prinde ntr-o pies a metalic a cu rol de ghidaj. Piesele metalice ata sate capetelor de br a se str ang una fat a de cealalt a, realiz and alinierea fat a n fat a a capetelor de br a. Eventual, spatiul dintre capetele de br a se poate umple cu un gel transparent cu indice de refract ie apropiat de cel al brei, reduc and astfel reexia la cap atul brei.
de propagare a luminii si axa brei. Datorit a vitezelor diferite, semnalul emis de la un cap at al brei este distorsionat, ind recept ionat la cel alalt cap at ca mai multe copii put in decalate n timp. Acest fenomen de distorsionare a semnalului se nume ste dispersie intermodal a. Opusul brei multimod este bra monomod , n care ecuat ia undelor admite o singur a solut ie. Existent a unui singur mod elimin a dispersia intermodal a, mbun at a tind calitatea propag arii semnalului. Pentru a admite un singur mod, bra trebuie s a e mult mai subt ire, diametrele standard ind 10 m sau 8 m. Diametrul mai mic al brei atrage dou a dicult a ti: pe de o parte, cerint ele de aliniere mecanic a a brei fat a de surs a sunt mai stricte, iar pe de alt a parte densitatea de putere luminoas a emis a prin br a trebuie s a e mai mare. Acest din urm a fapt duce la necesitatea utiliz arii diodelor laser ca surs a de lumin a (LED-urile nu mai sunt adecvate) si, n consecint a, la cre sterea pret urilor echipamentelor. 3.6.2.2. Caracteristici ale mediului D am n continuare caracteristicile principale ale propag arii: viteza de propagare este viteza luminii n silica, aproximativ 0,67 c; atenuarea este, a sa cum am v azut, foarte mic a, de ordinul c atorva decibeli pe kilometru sau chiar c ateva zecimi de decibel pe kilometru. distorsiunile apar sub forma de dispersie, adic a l a tirea impulsurilor. Sunt cauzate de mai multe fenomene, si au ca si consecint a limitarea practic a a produsului dintre frecvent a maxim a ce se poate transmite si distant a dintre emit ator si receptor. Acest produs se nume ste (impropriu) banda de trecere si se m asoar a n megahertzi kilometru (MHz km). Valorile tipice, pentru o br a multimod, sunt de ordinul a 500 MHz km. zgomotul n transmisia prin br a optic a apare aproape exclusiv datorit a fotodiodei receptoare (zgomot termic); acesta limiteaz a inferior sensibilitatea receptorului si, la atenuare dat a a brei, puterea emit atorului. Captarea de parazit i de-a lungul brei, si n particular diafonia, sunt neglijabile.
3.6.2.3. Multiplexarea n lungimea de und a Consider and ca semnal intensitatea c ampului electric, observ am c a prin bra optic a se transmite un semnal modulat n amplitudine. Frecvent a purt atoare este frecvent a undelor infraro sii. Semnalul modulator este r ad acina p atrat a a puterii luminoase emise.
Ca urmare, este posibil a realizarea multiplex arii n frecvent a a mai multor semnale pe aceea si br a optic a. Emit atoarele sunt diode laser sau LEDuri de culori diferite. Receptoarele sunt dotate cu c ate un ltru de culoare corespunz atoare plasat n fat a elementului fotosensibil. Aceast a metod a de multiplexare se nume ste multiplexare n lungimea de und a (engl. wavelength division multiplexing WDM). Subliniem c a diferent a ntre multiplexarea n lungime de und a si multiplexarea n frecvent a este doar de terminologie, nu una principial a. Diferent a provine doar din faptul c a, n cazul transmisiei optice, n lipsa mijloacele de-a analiza direct semnalul electromagnetic (asupra c aruia opereaz a multiplexarea n frecvent a ), analiz am doar puterea semnalului electromagnetic. Este posibil a si transmisia duplex pe o singur a br a optic a. Pentru aceasta se realizeaz a o construct ie cu oglinzi semitransparente care permite ca raza de lumin a emis a s a p atrund a n br a, iar raza de lumin a ce iese din br a s a ajung a pe elementul receptor. Pentru a preveni diafonia ntre cele dou a sensuri de propagare, este necesar ca reexiile pe capetele brei s a e extrem de reduse sau s a se aplice o multiplexare n lungimea de und a ntre cele dou a sensuri.
las a s a treac a lumina vizibil a, dar blocheaz a infraro siile transmise prin bre. Lipirea brelor sau montarea conectoarelor pe bre necesit a echipamente scumpe (zeci de mii de dolari pentru un dispozitiv de lipire si n jur de o mie de dolari pentru setul de unelte necesare mont arii conectoarelor) si personal calicat. Din acest motiv, se comercializeaz a cabluri, de diferite lungimi, cu conectoare gata ata sate. Un r de praf ajuns pe cap atul unei bre optice obstruct ioneaz a serios trecerea luminii. De aceea, conectoarele necuplate se acoper a cu capace protectoare.
Capitolul 4
Nivelul leg aturii de date are ca rol realizarea unei comunicat ii stabile ntre calculatoare sau echipamente ntre care exist a o leg atur a direct a la nivel zic (exist a deci un mediu de comunicat ie ntre ele). In general, leg atura de date ofer a servicii de transport de pachete. Nivelul zic ofer a servicii de transport de pachete, ns a aceste servicii sufer a de urm atoarele lipsuri: Pachetele pot alterate sau chiar distruse complet din cauza zgomotului. Dac a un acela si mediu de transmisie este utilizat de mai multe emit atoare (ceea ce se nt ampl a adesea la transmisia prin unde radio, dar uneori si la transmisia prin perechi de conductoare) si mai multe dintre aceste emit atoare transmit simultan, pachetele transmise se altereaz a reciproc. Dac a destinat ia nu poate prelucra datele n ritmul n care sunt transmise de c atre emit ator, o parte din date se vor pierde. Construct ia leg aturii zice este scump a; mai mult, exist a un cost independent de capacitate. Ca urmare, este de dorit s a putem construim mai multe leg aturi logice, care s a transmit a uxuri independente de pachete, partaj and aceea si leg atur a zic a. Ca urmare, nivelul leg aturii de date are sarcina de-a realiza urm atoarele: detectarea sau corectarea erorilor de transmisie; controlul accesului la mediu n cazul n care exist a mai multe emit atoare ce partajeaz a acela si mediu de transmisie; retransmiterea pachetelor pierdute din cauza erorilor de transmisie, a ciocnirilor ntre pachete transmise de mai multe emit atoare simultan sau a incapacit a tii destinat iei de-a le prelua la timp;
controlul uxului de date, adic a fr anarea emit atorului n cazul n care destinat ia nu este capabil a s a proceseze sucient de repede informat ia primit a; multiplexarea mai multor leg aturi logice prin aceea si leg atur a zic a.
Nivel zic
Calculator receptor
Figura 4.1: Alc atuirea nivelului leg aturii de date si locul s au ntre nivelele ret elei.
Constructiv, nivelul leg aturii de date este un modul interpus ntre nivelul superior ( n mod normal, nivelul ret ea) si nivelul zic (g. 4.1). Pentru realizarea funct iilor lor, modulele nivelului leg aturii de date ale dispozitivelor ce comunic a si transmit unul altuia, utiliz and serviciile nivelului zic, dou a tipuri de informat ii: datele utile, ce trebuie transmise de c atre nivelul leg aturii de date n folosul nivelelor superioare; informat ii de control, pentru uzul strict al nivelului leg aturii de date. Informat iile de control sunt transmise e mpreun a cu datele utile, n acela si pachet transmis prin nivelul zic, e separat, n pachete de sine st at atoare. In primul caz, informat iile de control sunt plasate e n fat a datelor utile, sub forma unui antet, e dup a acestea. In cazul transmiterii datelor de control ntr-un pachet separat, un astfel de pachet se nume ste pachet de control.
cel mai probabil al pachetului original. In cazul unui cod detector de erori, pachetul nu poate recuperat; n acest caz, eventuala retransmitere a datelor cade n sarcina unui mecanism de tipul celui ce va studiat n 4.3.
In general, asigurarea unui interval exclusiv de emisie este favorabil a n sistemele n timp real, cum ar ret elele utilizate pentru automatiz ari industriale transmisie audio-video. Detectarea coliziunilor si retransmiterea pachetelor distruse n coliziuni este favorabil a n sistemele interactive, cum ar ret elele ,,obi snuite de calculatoare. Aproape n orice sistem n care mai multe dispozitive sunt conectate la acela si mediu zic este necesar ca ecare dispozitiv s a aib a un identicator unic. Acest identicator se nume ste adres a zic a sau adres a MAC (de la Media Access Control controlul accesului la mediu ) sau, dac a nu e pericol de confuzie, adres a. Alocarea adresei zice se face n mod normal prin mecanisme exterioare ret elei, adic a adresele sunt alocate e manual, de c atre administratorul ret elei, e n cadrul procesului de fabricat ie al dispozitivului conectat la ret ea.
Metoda cu arbitru este utilizat a, de exemplu, n cadrul ec arei celule GSM. O alt a metod a de control al accesului este metoda cu jeton. In cadrul acestei metode, n loc s a existe un arbitru central care det ine lista complet a a stat iilor, lista este distribuit a, ecare stat ie cunosc and adresa stat iei urm atoare. In acest fel, n intervalul de emisie alocat, ecare stat ie emite datele utile, dup a care anunt a stat ia urm atoare. Metoda cu jeton a fost utilizat a n ret elele IEEE 802.4.
B
c
A
a
B
c
A
c
B
a
(a) A si C emit simultan c ate un pachet scurt. Fiecare dintre ei termin a emisia propriului pachet cu mult naintea sosirii pachetului celuilalt.
(b) Ceva mai t arziu, ambele pachete ajung la B , unde se produce coliziune.
(c) S i mai t arziu, A prime ste pachetul lui C si C prime ste pachetul lui A.
Figura 4.2: Dou a pachete emise simultan, n condit iile n care timpul de propagare este mai mare dec at timpul de transfer. Coliziunea nu este detectat a de nici unul dintre emit atoare, ns a este detectat a de o stat ie aat a la jum atatea distant ei dintre acestea.
torit a atenu arilor diferite, este posibil ca pentru un receptor s a apar a coliziune ntre dou a pachete, n timp ce pentru alt receptor unul dintre pachete s a e at at de puternic atenuat nc at s a nu perturbe deloc recept ia celui de-al doilea pachet (g. 4.3). Din acest motiv, la transmisia radio este imposibil ca emit atorul s a detecteze ntotdeauna coliziunile propriei transmisii cu alte transmisii simultane.
Figura 4.3: Este posibil ca dou a emit atoare radio, A si C , s a e situate prea departe pentru a- si recept iona una transmisia celeilalte, dar s a existe o a treia stat ie, B , care s a recept ioneze transmisiile ambelor emit atoare (liniile punctate delimiteaz a zona n care transmisia unei stat ii poate recept ionat a). In acest caz, A si C pot emite simultan f ar a a detecta coliziune, ns a pentru B se produce coliziune ntre transmisiile lui A si C.
prin lipsa conrm arii, din partea receptorului, a primirii pachetului. Pentru aceasta, este necesar a utilizarea unui cod detector de erori, cu ajutorul c aruia receptorul s a detecteaze disturgerea pachetului n urma coliziunii. De asemenea, mai este necesar ca receptorul s a conrme pachetele primite cu succes (astfel de mecanisme de conrmare vor studiate n 4.3). Repetarea unui pachet distrus de o coliziune se face dup a un interval de timp aleator. Dac a intervalul de timp p an a la retransmitere ar x, dou a stat ii ce au emis simultan vor emite simultan si retransmiterile, ciocnindu- si la innit pachetele. Mai mult, dac a apar frecvent coliziuni, este bine ca timpul p an a la urm atoarea retransmitere s a e m arit. Acest protocol simplu de acces la mediu se nume ste Aloha pur . O variant a mbun a t a tit a a protocolului Aloha este protocolul numit Aloha cuanticat (engl. slotted Aloha ). In acest protocol, toate pachetele au aceea si lungime. Inceperea transmisiei unui pachet nu poate avea loc oric and, ci doar la momente xate, aate la o durat a de pachet unul de altul. Alte mbun a t a tiri ce pot aduse protocolului Aloha pur (nu ns a si la Aloha cuanticat ) sunt: detectarea purt atoarei (CSMA Carrier Sense Multiple Access ): o stat ie
care dore ste s a emit a ascult a mai nt ai mediul; dac a detecteaz a emisia altei stat ii, am an a emisia proprie p an a dup a nalul emisiei celeilalte stat ii. O prim a posibilitate este ca stat ia s a nceap a emisia proprie imediat dup a terminarea emisiei celeilalte stat ii. Dezavantajul este c a, pe durata unui pachet lung, este probabil s a se adune mai multe stat ii care ar vrut s a emit a; ca urmare la nalul transmisiei acelui pachet toate stat iile vor emite simultan, rezult and coliziuni. O solut ie mai bun a este ca o stat ie, care dore ste s a emit a si constat a c a mediul este ocupat, s a a stepte un interval de timp aleator, dup a care s a verice din nou dac a mediul este liber. Dac a mediul este liber, ncepe emisia proprie; dac a nu, a steapt a un nou interval de timp aleator s. a. m. d. oprirea transmisiei la detectarea unei coliziuni (numit a, oarecum impropriu, detectarea coliziunii collision detection, CSMA/CD ): dac a o stat ie, n timpul emisiei proprii, detecteaz a o coliziune, abandoneaz a datele r amase de transmis, transmite un semnal de o form a special a pentru a anunt a c a pachetul este invalid si apoi opre ste transmisia. In acest fel, se economise ste timpul necesar transmisiei datelor r amase, transmisie oricum compromis a.
Aceast a metod a este foarte favorabil a n ret ele f ar a r deoarece rezolv a si a sa-numita problema stat iei ascunse : este posibil s a existe trei stat ii, A, B si C , cu B situat a geograc aproximativ la mijlocul distant ei ntre A si C , cu distant a dintre A si C put in peste raza de act iune a transmisiei, astfel nc at A nu recept ioneaz a transmisia lui C si nici reciproc, dar cu B sucient de aproape de A si de C astfel nc at s a poat a comunica cu ecare dintre ele. In aceast a situat ie, dac aA si C emit simultan, din punctul de vedere al lui B se produce o coliziune, dar nici A nici C nu pot detecta acest lucru. Protocolul CSMA, descris n paragraful precedent, nu permite lui C s a detecteze dac a A transmitea deja c atre B n momentul n care C dore ste s a transmit a la r andul lui; ca urmare, CSMA se comport a exact ca Aloha pur. In protocolul CSMA/CA, n schimb, C recept ioneaz a CTS-ul adresat de B lui A si am an a transmisia proprie. Alt a posibilitate de combinare a celor dou a strategii o constituie pro tocolalele cu conict limitat. In cazul acestor protocoale, stat iile sunt mp art ite n grupuri. Fiec arui grup i se aloc a intervale exclusive de emisie (ca n cazul protocoalelor bazate pe intervale exclusive de emisie, dar cu diferent a c a ecare interval se aloc a unui ntreg grup, nu unei stat ii). In cadrul ec arui grup se aplic a un protocol cu coliziuni si retransmitere. Imp art irea n grupuri poate f acut a dinamic: dac a n cadrul unui grup apar frecvent coliziuni, grupul este scindat n dou a; dac a dou a grupuri au transmisii sucient de rare, pot recombinate ntr-unul singur.
Aceste trei condit ii mpreun a formeaz a dezideratul de transmitere sigur a (engl. reliable ).
timeout
S a examin am acum protocolul din punctul de vedere al ec arui participant (emit atorul si receptorul) si s a nu uit am c a ecare are viziunea lui despre sistem, dat a de acele informat ii care i sunt accesibile. Algoritmul emit atorului este urm atorul: pentru ecare pachet al sursei, c at timp nu a primit conrmare de la receptor, trimite pachetul si a steapt a p an a c and e prime ste conrmarea, e trece un timp egal cu durata dus- ntors normal a.
Algoritmul receptorului este urm atorul: pentru ecare pachet primit de la emit ator, trimite un pachet de conrmare spre emit ator si livreaz a destinat iei pachetul primit. Exist a o problem a cu algoritmul de mai sus. Intrebare pentru cititor: ce se nt ampl a dac a un pachet ajunge la destinat ie ns a conrmarea lui se pierde?
Surs a Emit ator Receptor Destinat ie
Figura 4.5: In lipsa unor m asuri adecvate, pierderea unei conrm ari conduce la dublarea unui pachet.
Rezultatul se vede n gura 4.5 (pachetul ce cont ine textul ,,al doilea este livrat n dublu exemplar destinat iei). S a observ am (comparat i si cu gura 4.4) c a receptorul nu are cum s a disting a ntre trimiterea urm atorului pachet de date si retrimiterea unui pachet datorit a pierderii conrm arii. Pentru a obt ine un algoritm corect, trebuie s a furniz am receptorului sucient a informat ie pentru ca acesta s a disting a ntre repetarea pachetului precedent si pachetul urm ator. O solut ie este ca emit atorul s a pun a n ecare pachet trimis num arul s au de ordine n cadrul uxului de date; acest num ar de ordine se nume ste num arul de secvent a al pachetului. In acest fel, receptorul va ret ine num arul ultimului pachet recept ionat si va capabil s a verice dac a urm atorul pachet primit este repetarea acestuia sau este urm atorul pachet al
sursei. Intrebare pentru cititor: dac a receptorul prime ste un duplicat al pachetului precedent, trebuie s a-l conrme sau nu? S a vedem rat ionamentul ce ne duce la r aspuns: Emit atorul nu are de unde s a stie dac a un pachet de date a ajuns sau nu la receptor. Dac a prime ste conrmarea unui pachet, poate sigur c a pachetul conrmat a ajuns la receptor; dac a ns a a trimis un pachet si nu a primit ( nc a) conrmarea acestuia, este posibil (conform informat iilor emit atorului) ca pachetul s a ajuns ( si eventual s a se pierdut conrmarea) sau ca pachetul s a nu ajuns deloc. El insist a n retransmiterea pachetului p an a la primirea conrm arii. Prin urmare, receptorul trebuie s a conrme ecare pachet primit, chiar dac a este un duplicat al unui pachet anterior (vezi gura 4.6).
Surs a Emit ator Receptor Destinat ie
2 al doilea timeout
. . .
2 al doilea
Figura 4.6: Neconrmarea duplicatelor determin a emit atorul s a repete la innit un pachet a c arui conrmare s-a pierdut.
Suntem acum n m asur a s a d am algoritmii corect i pentru emit ator si pentru receptor: funct ionarea emit atorului este descris a n algoritmul 4.1, iar cea a receptorului n algoritmul 4.2. Un exemplu de funct ionare a acestora
este dat n gura 4.7 Algoritmul Emit ator pas cu pas algoritmul: n:=0 c at timp sursa mai are pachete de trimis execut a e d urm atorul pachet al sursei p:=(n, d) execut a trimite p recept ioneaz a n , f ar a a a stepta o durat a mai mare de t c at timp n = n sau a expirat durata t sf ar sit c at timp sf ar sit algoritm
Algoritmul 4.1: Algoritmul emit atorului n protocolul simplu cu conrm ari si retransmiteri. Parametrul t este ales put in mai mare dec at durata dus- ntors a nivelului zic.
Algoritmul Receptor pas cu pas algoritmul: n:=0 c at timp mai exist a pachete de primit execut a recept ioneaz a (n , d) de la nivelul zic dac a n = n atunci n:=n + 1 livreaz a d destinat iei sf ar sit dac a trimite n spre nivelul zic sf ar sit c at timp sf ar sit algoritm
Algoritmul 4.2: Algoritmul receptorului n protocolul simplu cu conrm ari si retransmiteri.
In ace sti algoritmi am presupus c a num arul de secvent a n poate cre ste oric at de mult. In practic a, n se reprezint a pe un num ar x de bit i si ca urmare are o valoare maxim a dup a care revine la 0. Vom vedea n 4.3.3 n ce condit ii acest lucru afecteaz a corectitudinea algoritmului.
Surs a
Emit ator
Receptor
Destinat ie
2 al doilea
3 al treilea
ACK
Alegerea uneia sau a celeilate variante prive ste doar receptorul, nu este parte a protocolului de comunicat ie. Mai mult, decizia de-a memora sau de-a ignora pachetul poate luat a independent pentru ecare pachet primit de receptor, n funct ie de memoria disponibil a n acel moment. O metod a utilizat a frecvent este ca receptorul s a xeze o fereastr a de recept ie, adic a un interval de numere de secvent a acceptabile. Pentru aceasta, receptorul xeaz a la nceput un num ar k . Dac a la un moment dat toate pachetele p an a la num arul de secvent a n inclusiv au fost recept ionate si livrate destinat iei, receptorul accept a doar pachetele cu numere de secvent a situate ntre n + 1 si n + k ; acest interval constituie fereastra de recept ie. Un pachet cu num ar de secvent a mai mic sau egal cu n este sigur un duplicat, un pachet ntre n + 1 si n + k este memorat (dac a nu a fost primit deja) si conrmat, iar un pachet cu num ar de secvent a strict mai mare dec at n + k este ignorat. La primirea pachetului n + 1, fereastra este avansat a p an a la primul num ar de secvent a ce nu a fost nc a primit. Este esent ial ca un pachet, ce nu este nici memorat de receptor, nici transmis destinat iei, s a nu e conrmat. In cazul conrm arii unui astfel de pachet, este probabil ca emit atorul s a nu-l mai retransmit a niciodat a, ca urmare receptorul nu va putea s a-l furnizeze destinat iei. Emit atorul trebuie s a tin a si el evident a unei ferestre de emisie, cont in and pachete, primite de la surs a n vederea trimiterii spre receptor, dar nc a neconrmate de c atre receptor. Not and cu n primul num ar de secvent a neconrmat si cu k dimensiunea ferestrei emit atorului, fereastra emit atorului poate cont ine pachetele cu numere de la n la n + k 1. Emit atorul trimite, n mod repetat, pachetele din fereastr a, p an a ce prime ste conrm ari pentru ele. In momentul n care pachetul n este conrmat, fereastra emit atorului avanseaz a p an a la urm atorul pachet neconrmat. Din cauza ferestrelor emit atorului si receptorului, protocolul acesta se nume ste protocolul ferestrei glisante. Dac a fereastra emit atorului este de dimensiune 1, protocolul ferestrei glisante funct ioneaz a exact ca si protocolul pas cu pas din paragraful precedent. Funct ionarea protocolului ferestrei glisante, n diverse variante, este ilustrat a n gurile 4.84.10.
Surs a Unu
Receptor
Destinat ie
doi
2 doi ACK=1
Unu
trei
3 trei
patru
4 patru
2 doi
doi
trei
patru ACK=4
Figura 4.8: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este 1 si dimensiunea ferestrei de emisie este cel put in 3.
Surs a Unu
Receptor
Destinat ie
doi
2 doi ACK=1
Unu
trei
3 trei
patru
memoreaz a pachetul, dar nc a nu-l livreaz a destinat iei memoreaz a pachetul, dar nc a nu-l livreaz a destinat iei
patru Figura 4.9: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este cel put in 3 si protocolul prevede conrmarea individual a a pachetelor.
Surs a Unu
Receptor
Destinat ie
doi
2 doi
Unu
trei
3 trei ACK=2
doi
conrm a dou a pachete printr-o singur a conrmare
patru
4 patru
3 trei
Figura 4.10: Funct ionarea ferestrei glisante n cazul n care dimensiunea ferestrei de recept ie este cel put in 2 si protocolul prevede c a un pachet de conrmare conrm a toate pachetele de date p an a la num arul de secvent a cont inut n pachet. De remarcat posibilitatea de optimizare a num arului de pachete de conrmare prin combinarea mai multor conrm ari ntr-un singur pachet (conrmarea cu num arul 2).
Pentru a preciza lucrurile, vom numi num ar de secvent a teoretic num arul de secvent a pe care l-ar avea un pachet dac a numerele de secvent a nu ar limitate si num ar de secvent a transmis num arul transmis efectiv. Num arul de secvent a transmis are ca valoare num arul de secvent a teoretic modulo n, unde n este num arul de numere de secvent a distincte disponibile. Pentru ca mecanismele de conrmare si retransmitere, descrise n 4.3.1 si 4.3.2, s a funct ioneze corect, ele trebuie modicate n a sa fel nc at s a compare efectiv numerele de secvent a teoretice. Pentru aceasta, este necesar ca, n orice moment, at at receptorul c at si emit atorul s a poat a, pe baza informat iilor pe care le au, s a deduc a univoc num arul de secvent a teoretic din num arul de secvent a transmis. Vom analiza n continuare ce relat ie trebuie s a existe ntre num arul n de valori distincte pe care le poate lua num arul de secvent a transmis si num arul de pachete trimise n avans pentru a nu exista ambiguit a ti privitor la num arul de secvent a teoretic al unui pachet de date sau de conrmare. Propozit ia 4.1 Dac a dimensiunea ferestrei emit atorului este k si dac a pachetele se pot doar pierde, f ar a s a- si poat a schimba ordinea, atunci sunt necesare si suciente 2k numere de secvent a distincte pentru identicarea univoc a a pachetelor.
Demonstrat ie. Trebuie s a ar at am trei lucruri: c a exist a ntotdeauna un interval de lungime 2k , calculabil cu datele receptorului, n care se ncadreaz a num arul de secvent a al urm atorului pachet primit de receptor, c a exist a un interval de lungime 2k n care se ncadreaz a urm atoarea conrmare primit a de emit ator si, n nal, c a dac a utiliz am doar 2k 1 numere de secvent a distincte putem da un exemplu n care apare o ambiguitate. Presupunem c a cel mai mare num ar de secvent a primit de c atre receptor este n. Deoarece emit atorul a trimis deja pachetul n, rezult a c a pachetele p an a la n k inclusiv au fost deja conrmate si deci nu vor mai trimise. Pe de alt a parte, deoarece pachetul n + 1 nc a nu a ajuns la receptor, rezult a c a acest pachet nu a fost conmat si deci receptorul nu poate trimite pachete cu numere de secvent a strict mai mari dec at n + k . Ca urmare, dac a la un moment dat cel mai mare num ar de secvent a primit de receptor este n, urm atorul num ar de secvent a primit va n intervalul [n k 1, n + k ]. S a privim acum din perspectiva emit a torului. Fie n cel mai mare num ar de secvent a trimis. Deoarece n a fost deja trimis, rezult a c a toate pachetele p an a la n k inclusiv au fost deja conrmate. In momentul primei transmiteri a pachetului n k , pachetele p an a la n 2k inclusiv erau deja conrmate. Ca urmare, nici unul dintre pachetele cu numere de secvent a mai mici sau egale cu n 2k nu a mai fost trimis ulterior primei trimiteri a
necesar a sistemului, poate anticipat a, iar surplusul de capacitate nu poate valoricat. Dac a solut ia unui debit x de transmisie nu este satisf ac atoare, este necesar un mecanism prin care receptorul s a informeze emit atorul asupra posibilit a tii sale de preluare a datelor. Pentru aceasta este necesar un al doilea canal de comunicat ie, napoi, dinspre receptor spre emit ator.
mit atorul trimite un singr pachet, apoi a steapt a semnalizarea receptorului c a este preg atit s a primeasc a urm atorul pachet, apoi trimite urm atorul pachet s. a. m. d. Mecanismul este asem an ator cu mecanismul de retransmitere a pachetelor pierdute ( 4.3), ns a cu diferent a c a emit atorul a steapt a primirea ,,conrm arii f ar a a retransmite pachetul de date dac a aceast a a steptare dep a se ste o anumit a durat a. Ca si la mecanismul de retransmitere a pachetelor pierdute, trimiterea a c ate unui singur pachet urmat a de a steptarea permisiunii de a-l trimite pe urm atorul conduce la inecient a dac a durata dus- ntors este semnicativ mai mare dec at durata de transfer a unui pachet. In acest caz, se poate stabili ca receptorul s a comunice periodic emit atorului num arul de pachete pentru care mai are spat iu n memoria tampon. Emit atorul poate trimite cel mult num arul de pachete anunt at de receptor nainte de-a primi un nou anunt de disponibilitate de la acesta. Deoarece anunt ul de disponibilitate al receptorului ajunge la emit ator cu o anumit a nt arziere, timp n care emit atorul a putut trimite un num ar de pachete, este necesar ca emit atorul s a scad a din disponibilitatea anunt at a de receptor num arul de pachete trimise ntre timp. Pentru aceasta este necesar ca pachetele s a e numerotate si anunt ul de disponibilitate s a cont in a si num arul de ordine al ultimului pachet de date primit. In acest fel, dac a emit atorul prime ste un anunt de disponibilitate prin care este informat c a receptorul tocmai a primit pachetul n si are memorie pentru nc a k pachete, atunci emit atorul poate trimite cel mult pachetul n + k nainte de-a primi un nou anunt de la receptor.
tru ambele mecanisme. Un exemplu clasic de astfel de mecanism combinat este protocolul TCP, descris pe larg n 10.3.1.
Surs a1
Surs a3
Surs a1 D C B A
Surs a2
Surs a3 Z
N M
Y X
Surs a1
Surs a3
Capitolul 5
Dac a ni ste dispozitive, relativ numeroase sau ntinse pe distant e mari, trebuie s a poat a comunica ecare cu ecare, este adesea prea costisitor s a se construiasc a c ate o leg atur a zic a ntre ecare dou a dispozitive. Este necesar n acest caz s a se poat a stabili comunicat ii ntre dispozitive ntre care nu exist a o leg atur a zic a direct a dar exist a leg aturi indirecte prin intermediul unui sir de dispozitive legate zic ecare cu urm atorul. O ret ea de comunicat ie este un ansamblu de dispozitive care permit stabilirea de comunicat ii indirecte. Intr-o ret ea de comunicat ie numim: nod: orice dispozitiv ce particip a activ n ret ea. leg atur a direct a: orice leg atur a ntre noduri, utilizabil a de c atre nivelul ret ea; dou a noduri ntre care exist a o leg atur a direct a se numesc vecini . nod nal sau stat ie (engl. host ): un nod care este surs a sau destinat ie pentru date; nod intermediar sau ruter (engl. router ): un nod ce poate tranzitat de trac ce nu are ca surs a sau destinat ie acel nod; uneori este numit, n mod incorect, server. adres a de ret ea sau, simplu, adres a : un identicator (un sir de simboluri) ce identic a unic un nod al ret elei. Fiecare nod terminal trebuie s a aib a cel put in o adres a; nodurile intermediare nu au ntotdeauna adrese. drum sau rut a : o secvent a de noduri, ecare vecin cu urm atorul, mpreun a cu leg aturile directe dintre ele. Not am c a n unele ret ele exist a o distinct ie net a ntre nodurile nale si nodurile intermediare: de exemplu n ret eaua telefonic a, aparatele telefonice
sunt noduri nale iar centralele telefonice sunt noduri intermediare. In alte ret ele, unele sau toate nodurile sunt simultan noduri nale si noduri intermediare. Unei ret ele i se asociaz a un graf, construit astfel: ec arui nod al ret elei i se asociaz a un v arf al grafului, iar ec arei leg aturi directe i se asociaz a o muchie (sau un arc, dac a leg aturile sunt asimetrice). Ret eaua trebuie s a e astfel construit a nc at graful asociat ei s a e conex (respectiv tare conex), altfel, evident, vor exista perechi de noduri ce nu vor putea comunica. Funct ia principal a a nodurilor ret elei este aceea de-a retransmite datele, asigur and continuitatea transportului lor de la nodul surs a la nodul destinat ie. Realizarea acestei funct ii va studiat a n 5.1. Pentru retransmiterea datelor spre destinat ie, ecare nod trebuie s a decid a c arui vecin s a retransmit a datele; problema lu arii aceastei decizii se nume ste problema dirij arii (engl. routing ) si va studiat a n 5.2. In nal, n 5.3 vom studia problemele ce apar atunci c and solicitarea ret elei este ridicat a (nu este neglijabil a fat a de capacitatea nodurilor si leg aturilor utilizate).
Nivelul ret ea este ansamblul modulelor de ret ea ale nodurilor ret elei.
Nod nal Aplicat ie Adaptare aplicat ie Modul de ret ea Adaptare legatur a zic a Modulul de ret ea Adaptare Adaptare legatur a legatur a zic a zic a Nod intermediar Nod nal Aplicat ie Adaptare aplicat ie Modul de ret ea Adaptare legatur a zic a Nivelul aplicat ie Nivelul transport Nivelul ret ea Nivelul leg aturii de date si nivelul zic
Legatur a zic a
Legatur a zic a
Figura 5.1: Modulele nodurilor unei ret ele. Sunt gurate doar modulele din trei noduri, de-a lungul traseului datelor ntre dou a aplicat ii.
Un ansamblu de calculatoare constituie o ret ea dac a si numai dac a graful nodurilor si leg aturilor directe este conex (tare conex, dac a leg aturile pot asimetrice), si n plus modulele de ret ea ale tuturor nodurilor pot comunica printr-un protocol comun. In lipsa unui protocol comun ntre modulele de ret ea nu se poate stabili comunicat ia ntre oricare dou a noduri nale ntr-un mod uniform, f ar a ca aplicat ia client s a trebuiasc a s a aibe cuno stint e despre nodurile intermediare. Din acest punct de vedere spunem c a nivelul ret ea, si n special protocolul utilizat de nivelul ret ea, este liantul ntregii ret ele. Dup a serviciul oferit, o ret ea poate cu datagrame (numite uneori pachete ) sau cu conexiune : datagrame: Intr-o ret ea ce ofer a serviciu tip datagrame, aplicat ia surs a creaz a o datagram a cont in and datele de transmis si o paseze modulului ret ea, specic and totodat a adresa nodului destinat ie. Datagrama este transmis a din aproape n aproape p an a la nodul destinat ie, unde este pasat a aplicat iei (vezi 5.1.1). De remarcat c a dou a datagrame distincte generate de acela si nod surs a si adresate aceluia si nod destinat ie sunt prelucrate, de c atre ret ea, complet independent una de alta. Funct ionarea ret elelor ce ofer a servicii de tip datagrame este similar a sistemului de po st a (po sta obi snuit a). conexiune: Intr-o ret ea ce ofer a serviciu de tip conexiune, o aplicat ie ce dore ste s a comunice cu o aplicat ie dintr-un alt nod ncepe prin a so-
licita modulului ret ea deschiderea unei conexiuni c atre acel nod. Nivelul ret ea informeaz a nodul destinat ie despre cererea de deschidere a conexiunii si, dac a aplicat ia destinat ie accept a, conexiunea este deschis a si nodul init iator este informat de acest lucru. Dup a deschiderea conexiunii, unul sau ambele noduri ( n funct ie de tipul conexiunii deschise, unidirect ional a sau bidirect ional a) poate transmite celuilalt pachete de date prin conexiunea deschis a. La terminarea comunicat iei, una dintre aplicat ii solicit a nivelului ret ea nchiderea conexiunii. Ca efect, nivelul ret ea informeaz a nodul partener cu privire la nchiderea conexiunii si elibereaz a resursele alocate conexiunii. Funct ionarea ret elelor ce ofer a serviciu de tip conexiune este descris a n 5.1.2. Un model tipic de ret ea ce ofer a conexiuni este sistemul telefonic.
Fiecare nod intermediar, pe r and, determin a nodul urm ator prin care trebuie s a treac a conexiunea si-i trimite mai departe cererea de deschidere a conexiunii. Determinarea nodului urm ator se face la fel ca si n cazul ret elelor bazate pe datagrame (vezi 5.2). Dup a determinarea nodului vecin, nodul curent memoreaz a n tabela conexiunilor deschise nodul astfel ales. Conexiunea este deschis a n momentul n care cererea de deschidere a conexiunii ajunge si este acceptat a de nodul destinat ie. Odat a conexiunea deschis a, drumul corespunz ator ntre cele dou a noduri nale este xat pe toat a durata conexiunii. In faza de comunicare prorpiu-zis a, exist a dou a metode prin care se poate realiza tranzitarea tracului prin ecare nod intermediar: Comutare de circuite zice : In acest caz, mediul prin care intr a datele n nod este conectat zic (de exemplu, cu ajutorul unui ntrerup ator electric) la mediul prin care trebuie trimise mai departe datele (vezi g. 5.2). Aceasta metod a, amintit a aici doar pentru completudine, nu se mai utilizeaz a n prezent (a fost utilizat a n ret elele telefonice vechi, analogice).
X A B C
1 2 1 2 1 2 3
Y A
B Figura 5.2: O ret ea cu comutare de circuite zice. Cercurile mari reprezint a nodurile intermediare, iar liniile punctate reprezint a interconect arile mediilor zice. De remarcat necesitatea mai multor leg aturi zice ntre c ate dou a noduri.
Comutare de circuite virtuale : Fiecare pachet ce sose ste printr-o leg atur a de date este memorat temporar si apoi retransmis prin leg atura spre urm atorul nod. S a remarc am c a, n ambele cazuri, o leg atur a ntre dou a noduri este
asociat a unei singure conexiuni; dou a conexiuni nu pot utiliza (direct) o aceea si leg atur a. (Din acest motiv, n sistemul telefonic vechi, ntre dou a centrale telefonice erau duse n paralel mai multe perechi de conductoare, num arul de convorbiri simultane utiliz and o rut a trec and prin cele dou a centrale ind limitat la num arul de perechi de conductoare.) Deoarece, n special pe distant e mari, mediul zic este scump, se utilizeaz a mecanisme de multiplexare. Acestea pot lucra e la nivel zic (multiplexare n frecvent a 3.3.3 sau n lungimea de und a 3.6.2.3), e la nivelul leg aturii de date (multiplexare n timp, 4.5). Mai remarc am c a multiplexarea n timp poate utilizat a doar n sistemele cu comutare de circuite virtuale. La utilizarea comut arii de circuite virtuale mpreun a cu multiplexarea n timp, un nod care a primit un pachet trebuie s a-l memoreze p an a c and i vine r andul s a e transmis mai departe prin leg atura de ie sire, adic a p an a c and, n leg atura zic a de ie sire, vine r andul la transmisie canalului logic prin care trebuie trimis pachetul.
X A B C XZ ZY C XY Y A
B Figura 5.3: O ret ea cu comutare de circuite virtuale. Desf a surarea n timp a recept iei si transmitere mai departe a pachetelor, pentru nodul X , este prezentat a n gura 5.4. Leg aturile directe ntre nodurile intermediare utilizeaz a multiplexare n timp.
Inchiderea conexiunii se face prin transmiterea unui pachet special de cerere a nchiderii conexiunii. Acest pachet urmeaz a aceea si rut a ca si pachetele normale de date. Fiecare nod de pe traseu, la primirea pachetului, sterge conexiunea respectiv a din tabelul conexiunilor si elibereaz a resursele alocate. Comutarea de circuite virtuale seam an a la prima vedere cu transmisia
125
a2
1
a3
1
b1
1
b2
1
b3
1
c1
1
c2
1
c3
1
XY
a1
1 2
c1 a2
3 1 2
c2 a3
3 1 2
c3
3
XZ
b1
1 2
b2
1 2
b3
1 2
timpul Figura 5.4: Desf a surarea n timp a recept iei si a transmiterii mai departe a pachetelor, pentru nodul X din ret eaua din gura 5.3. XY si XZ desemneaz a leg aturile zice ntre nodurile X si Y , respectiv X si Z . Numerele de sub axe marcheaz a perioadele de timp alocate canalelor logice corespunz atoare. Leg aturile dintre canalele virtuale de intrare si de ie sire sunt identice cu leg aturile zice din gura 5.2
de datagrame. Diferent a vine din felul n care un nod, care prime ste un pachet si trebuie s a-l trimit a mai departe, ia decizia privind leg atura prin care s a-l trimit a. In cazul comut arii de circuite virtuale, decizia este luat a n funct ie de circuitul virtual c aruia i apart ine pachetul, informat ie dedus a din leg atura de date prin care a intrat pachetul. Decizia se ia pe baza tabelei de circuite si este identic a pentru toate pachetele apart in and aceluia si circuit. O urmare a acestui fapt este c a defectarea oric arui nod sau oric arei leg aturi de-a lungul unei conexiuni duce la nchiderea fort at a a conexiunii. In cazul ret elei bazate pe datagrame, decizia de dirijare se ia n funct ie de adresa destinat ie, cont inut a n datagram a. Dou a datagrame ntre acelea si dou a stat ii pot dirijate pe rute diferite.
Rezolvarea problemei dirij arii se bazeaz a pe determinarea unui drum de cost minim, de la nodul surs a la nodul destinat ie al datagramei sau al conexiunii, n graful asociat ret elei de calculatoare. Graful asociat ret elei de calculatoare este un graf ce are c ate un v arf asociat ec arui nod al ret elei si c ate o muchie asociat a ec arei leg aturi directe ntre dou a noduri. Fiec arei muchii i se asociaz a un cost, exist and urm atoarele posibilit a ti pentru denirea costului: toate costurile egale; n funct ie de lungimea zic a a leg aturii (cu c at o leg atur a este mai lung a, cu at at costul asociat este mai mare); n funct ie de capacitatea leg aturii; n funct ie de nc arcarea leg aturii. Remintim, din teoria grafelor, o proprietate important a a drumurilor de cost minim: Dac a v0 , v1 , . . . , vj 1 , vj , vj +1 , . . . , vk este un drum de cost minim de la v0 la vk , atunci v0 , v1 , . . . , vj 1 , vj este un drum de cost minim de la v0 la vj si vj , vj +1 , . . . , vk este un drum de cost minim de la vj la vk . De asemenea, dac a exist a cel put in un drum de cost minim de la v0 la vk ce trece prin vj , dac a v0 , v1 , . . . , vj 1 , vj este un drum de cost minim de la v0 la vj si vj , vj +1 , . . . , vk este un drum de cost minim de la vj la vk , atunci v0 , v1 , . . . , vj 1 , vj , vj +1 , . . . , vk este drum de cost minim de la v0 la vk . Aceast a proprietate st a la baza algoritmilor de determinare a drumului minim ntr-un graf. In consecint a, dac a un pachet de la un nod v0 spre un nod vk ajunge la un nod vj , nodul urm ator, dup a vj , de pe drumul de cost minim de la v0 spre vk depinde doar de vk , nu si de v0 . Ca urmare, pentru a efectua retransmiterea datelor, ecare nod vj trebuie s a cunoasc a doar, pentru ecare destinat ie posibil a vk , urm atorul v arf vj +1 de pe drumul optim spre acea destinat ie. Corespondent a, pentru ecare vj , ntre destinat ia vk si nodul urm ator vj +1 poart a denumirea de tabel a de dirijare . Pentru a putea aplica direct un algoritm clasic de determinare a drumurilor de cost minim, este necesar a centralizarea datelor despre nodurile si leg aturile din ret ea, n vederea obt inerii efective a grafului ret elei. Dup a calculul drumurilor, este necesar a distribuirea tabelelor de dirijare c atre toate nodurile ret elei. Intr-o ret ea mic a, centralizarea informat iilor despre leg aturi si apoi distribuirea informat iilor de dirijare c atre noduri se poate face manual, de c atre administratorul ret elei.
In ret elele mai mari, acest proces trebuie automatizat (total sau part ial). Deoarece nu este de dorit oprirea complet a a ret elei oridec ateori se modic a vreo leg atur a, trebuie luate m asuri ca timpul scurs de la modicarea leg aturilor p an a la actualizarea a regulilor de dirijare pe toate nodurile s a e scurt si funct ionarea ret elei n acest timp s a e acceptabil a. Metodele principale de calcul pentru tabelele de dirijare sunt descrise n 5.2.1 si 5.2.2. In ret elele foarte mari, cum ar Internet-ul, centralizarea complet aa datelor nu este rezonabil a; trebuie utilizat i algoritmi de dirijare care s a permit a ec arui nod efectuarea dirij arii f ar a a necesita dec at put ine informat ii si doar despre o mic a parte a ret elei. De asemenea, tabela de dirijare trebuie s a aib a o reprezentare mai compact a dec at c ate un r and pentru ecare nod destinat ie posibil. In astfel de cazuri se utilizeaz a dirijarea ierarhic a ( 5.2.3). Exist a si metode ad-hoc de dirijare, utilizate n diverse situat ii mai deosebite, de exemplu dac a graful asociat ret elei de calculatoare are anumite particularit a ti. Acestea vor studiate n 5.2.4.
Calculul drumurilor de cost minim de la un v arf la toate celelalte este o problem a clasic a n teoria grafelor. Dac a toate costurile sunt pozitive condit ie ndeplinit a de graful asociat unei ret ele de calculatoare algoritmul cel mai ecient este algoritmul lui Dijkstra (algoritmul 5.1). Not and cu n num arul de v arfuri (noduri ale ret elei) si cu m num arul de muchii (leg aturi directe), complexitatea algoritmului lui Dijkstra este timp O(m + n log n) si spat iu O(m + n). Calculul trebuie ref acut complet la ecare modicare a grafului asociat ret elei de calculatoare.
Algoritmul Dijkstra intrarea: G = (V, E ) graf orientat (E V V ) c : E [0, ) costurile asociate arcelor x0 V v arful curent ie sirea: t : V {(x0 , y ) E } tabela de dirijare; t(x) este leg atura direct a prin care x0 trebuie s a trimit a pachetele destinate lui x. algoritmul: pentru i V execut a d[i]: = sf ar sit pentru d[x0 ]: = 0 Q: = V c at timp Q = execut a e v Q elementul din Q pentru care d[v ] este minim Q: = Q \ {v } pentru y Q : (v, y ) E execut a dac a d[v ] + c(v, y ) < d[y ] atunci d[y ]: = d[v ] + c(v, y ) dac a v = x0 atunci t(y ): = (x0 , y ) altfel t(y ): = t(v ) sf ar sit dac a sf ar sit dac a Q: = Q {y } sf ar sit pentru sf ar sit c at timp sf ar sit algoritm
Algoritmul 5.1: Algoritmul lui Dijkstra cu ad augirea pentru calculul tabelei de dirijare.
Algoritmul Vector dist intrarea: V mult imea de noduri a ret elei; x nodul curent; N out (i) mult imea vecinilor direct i ai lui i; (ci,j )i,j V costurile leg aturilor directe; ci,j = dac a i N out (i); ecare nod x cunoa ste doar (cx,j )j V . ie sirea: (di,j )i,j V costurile drumurilor optime; ecare nod va calcula doar (dx,j )j V ; (pi,j )i,j V primul nod, dup a i, pe drumul optim de la i la j . algoritmul: pentru i V execut a dx,i :=cx,i sf ar sit pentru c at timp adev arat execut a obt ine de la vecinii direct i di,j , pentru i N out (i) pentru j V execut a dx,j :=min(cx,j , min )cx,i + di,j
iN out (x)
px,i := vecinul pentru care s-a obt inut minimul sf ar sit pentru sf ar sit c at timp sf ar sit algoritm
Algoritmul 5.2: Algoritmul de dirijare cu vectori distant a
pentru ca, dac a ulterior se modic a leg aturile directe, s a actualizeze n continuare tabelele de dirijare. Dealtfel, este destul de dicil de determinat, n interiorul algoritmului, momentul n care s-a produs stabilizarea. Dac a apare o leg atur a direct a nou a sau dac a scade costul unei leg aturi directe existente, tabelele de dirijare se stabilizeaz a din nou dup a un num ar de iterat ii cel mult egal cu num arul maxim de muchii de-a lungul unui drum optim. Dac a se elimin a o leg atur a direct a sau cre ste costul unei leg aturi directe, tabelele de dirijare se stabilizeaz a mult mai ncet, a sa cum se vede n exemplul 5.2.
A 2 B 21 20 D 3 5 C
Figura 5.5: Ret eaua pentru exemplele 5.1 si 5.2. Numerele reprezint a costurile asociate leg aturilor directe.
Exemplul 5.1: Fie ret eaua din gura 5.5. Calculul tabelelor de dirijare, conform algoritmului 5.2, de la init ializare p an a la stabilizare, duce la urm atoarele tabele: Init ializarea: In aceast a faz a, sunt luate n considerare doar leg aturile directe; dac a un nod nu este accesibil direct, ruta p an a la acesta este marcat a ca av and cost innit. Nodul B: Nodul C: Nodul A: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A C C C 5 B B 5 D D 21 D D 20 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Iterat ia 1: Pentru ecare destinat ie posibil a, se ia n considerare leg atura direct a (dac a exist a) si rutele prin ecare din vecinii direct i. Costul leg aturii directe este cunoscut, iar costul rutei printr-un vecin este costul leg aturii spre acel vecin plus costul raportat de acel vecin. De exemplu, nodul B ia n considerare ca rute spre D: leg atura direct a de cost 20,
leg atura prin A de cost 2+21=23 si leg atura prin C de cost 5+3=8; cea mai bun a este cea prin C. Ca alt exemplu, nodul A are urm atoarele rute spre D: leg atura direct a de cost 21 si leg atura prin B de cost 2+20=22; de notat c a pentru leg atura prin B se ia costul BD raportat de B, calculat de c atre B la init ializare. Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D D 21 D C 8 D D 3 Nodul D: dest. via cost A A 21 B C 8 C C 3 Iterat ia 2: S a urm arim ruta calculat a de A c atre D. Sunt luate n considerare leg atura direct a de cost 21 si leg atura prin B a c arui cost este acum 2+8=10 ntruc at se bazeaz a pe costul leg aturii BD calculat de c atre B la iterat ia 1. Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D B 10 D C 8 D D 3 Nodul D: dest. via cost A C 10 B C 8 C C 3 Incep and cu iterat ia 3, tabelele calculate sunt identice cu cele de la itaret ia 2. Exemplul 5.2: Fie ret eaua din gura 5.5 si e tabelele de dirijare rezultate dup a stabilizarea algoritmului cu vectori distant a (vezi exemplul 5.1). S a presupunem c a leg atura BC cade, rezult and ret eaua din gura 5.6. S a urm arim evolut ia, n continuare, a tabelelor de dirijare. La prima iterat ie, la recalcularea rutelor nodului B spre C si spre D, nodul B ia n calcul rute prin A sau prin D. Rutele optime g asite sunt cele prin A, bazate pe vechile tabele ale lui A; nodul B nu are cum s a determine
Figura 5.6: Ret eaua rezultat a prin c aderea leg aturii BC din ret eaua din gura 5.6.
c a aceste rute nu mai sunt valide deoarece se bazau pe leg atura BC. La fel procedeaz a si nodul C, g asind c a rutele optime spre A si B trec prin D. Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 7 10 cost 10 8 3 Nodul dest. A C D B: via A A A cost 2 9 12 Nodul dest. A B D C: via D D D cost 13 11 3
La urm atoarea iterat ie se vor modica costurile rutelor din A spre C si D si din D spre A si B: Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 11 14 cost 16 14 3 Nodul dest. A C D B: via A A A cost 2 9 10 Nodul dest. A B D C: via D D D cost 13 11 3
In continuare, costurile aparente ale rutelor cresc de la o iterat ie la alta, p an a c and ajung la valorile rutelor reale optime. La a 3-a iterat ie de la c aderea leg aturii BC, tabelele ajung n forma urm atoare:
Nodul B: Nodul C: A: via cost dest. via cost dest. via cost B 2 A A 2 A D 19 B 11 C A 13 B D 17 B 14 D A 14 D D 3 D: via cost C 16 C 14 C 3 Urmeaz a, la a 4-a iterat ie, descoperirea de c atre D a rutelor reale spre A si spre B: Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A D 19 C B 15 C A 13 B D 17 D B 18 D A 14 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Restul rutelor reale sunt descoperite si mai t arziu, stabilizarea tabelelor survenind abia la a 8-a iterat ie. Nodul dest. B C D Nodul dest. A B C In general, num arul de iteratii dup a care se stabilizeaz a tabelele dup a c aderea sau cre sterea costului unei leg aturi poate cel mult egal cu raportul dintre cea mai mare cre stere de cost ntre dou a noduri si cel mai mic cost al unei leg aturi directe. In cazul exemplului 5.2, costul drumului optim de la B la C cre ste, prin c aderea leg aturii directe BC, de la 5 la 23, o cre stere de 18 unit a ti. Costul cel mai mic al unei leg aturi directe este 2 (leg atura AB). ii. In cazul Ca urmare, stabilizarea tabelelor poate lua cel mult 18 2 = 9 iterat n care c aderea unei leg aturi duce la deconectarea ret elei, acest lucru nu va detectat niciodat a, num arul de iterat ii necesar ind innit. Pentru a mbun at a ti comportamentul n cazul c aderii sau cre sterii costului leg aturilor, se poate modica algoritmul astfel: tabelele vor tine ruta complet a spre destinat ie, iar la recalcularea rutelor, rutele ce trec de dou a ori prin acela si nod nu sunt luate n considerare. Exemplul 5.3: S a relu am ret eaua din exemplul 5.2, cu memorarea ntregului
drum n tabela de distant e. Dup a stabilizarea tabelelor pe ret eaua din gura 5.5, se obt in urm atoarele tabele: Nodul dest. B C D Nodul dest. A B C A: ruta B B,C B,C,D D: ruta C,B,A C,B C Nodul dest. A C D B: ruta A C C,D Nodul dest. A B D C: ruta B,A B D
cost 2 7 10 cost 10 8 3
cost 2 5 8
cost 7 5 3
Dup a c aderea leg aturii BC (g. 5.6), evolut ia tabelelor de dirijare are loc dup a cum urmeaz a: Iterat ia 1: S a consider am drumurile posibile de la nodul B spre nodul C. Leg atur a direct a nu exist a. Drumul prin A ncepe cu muchia AB si continu a cu ruta din tabela, de la iterat ia anterioar a, a lui A, adic a drumul ABC. Prin urmare, drumul prin A este BABC si este respins datorit a repet arii v arfului B. De ment ionat c a nu se face vreo vericare n urma c areia s a se observe c a drumul BABC cont ine muchia inexistent a BC; din lipsa unor informat ii globale, este imposibil de prins toate cazurile de utilizare a unor muchii inexistente. Drumul de la B la C prin D este BDC, de cost 20+3=23; acesta este singurul candidat, ca urmare este ales ca rut a optim a de la B la C. Analog, n calculul rutei de la B la D, ruta prin A, anume BABCD, este respins a si, ca urmare, r am ane s a e aleas a doar leg atura direct a BD. La calculul rutei de la C la A, ar exista o singur a posibilitate, prin nodul D, ns a aceasta conduce la drumul CDCBA care este respins din cauza repet arii nodului C. Ca urmare, nodul C marcheaz a lipsa rutei pun and costul . Analog, se determin a inexistent a vreunei rute valide de la C la B. Nodul B: Nodul C: Nodul A: dest. ruta cost dest. ruta cost dest. ruta cost B B 2 A A 2 A C B,C 7 C D,C 23 B D B,C,D 10 D D 20 D D 3
Nodul D: dest. ruta cost A C,B,A 10 B C,B 8 C C 3 Iterat ia 2: Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3 Iterat ia 3: Se stabilizeaz a Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3
Nodul dest. A C D
B: ruta A D,C D
cost 2 23 20
Nodul dest. A B D
C: ruta D
cost 3
cost 2 23 20
Nodul dest. A B D
cost 24 23 3
c atre subret eaua imediat superioar a ierarhic: o singur a rut a, comun a, pentru toate nodurile din acea subret ea, ruta conduc and spre cel mai apropiat c atre ecare din subret elele imediat inferioare ierarhic, c ate o rut a pentru ecare subret ea. Ruta de la un nod init ial c atre o subret ea vecin a subret elei nodului init ial este ruta de la nodul init ial c atre cel mai apropiat nod de la granit a dintre cele dou a subret ele. Fiecare subret ea este sucient de mic a, astfel nc at, n interiorul ec arei subret ele, calculul rutelor se face prin metode de dirijare ,,obi snuite. Pentru ca orice nod s a poat a determina din ce subret ea face parte nodul destinat ie a unui pachet, precum si localizarea subret elei respective n ierarhie, adresa ec arui nod este astfel construit a nc at s a descrie pozit ia nodului n ierarhia de ret ele. Astfel, adresele sunt formate din componente, prima component a identic and subret eaua de nivel 1 din care face parte sau c areia i este subordonat nodul, urm and identicatorul subret elei de nivel 2, s. a. m. d., ncheind cu identicatorul nodului n cadrul subret elei din care face parte. De remarcat c a, n general, dirijarea ierarhic a nu conduce la drumul optim c atre destinat ie. Aceasta deoarece n dirijarea ierarhic a se caut a optimul local n ecare subret ea si, ca urmare, este posibil s a se rateze optimul global (a se vedea exemplul 5.4). Exemplul 5.4: In gura 5.7 este reprezentat a o ret ea cu dirijare ierarhic a pe dou a nivele. Ret eaua este format a dintr-o subret ea r ad acin a si patru subret ele subordonate ei. Adresa ec arui nod este format a din dou a componente, prima identic and subret eaua de nivel 1 din care face parte si a doua identic and nodul n cadrul subret elei respective. S a presupunem c a nodul 1.1 are de trimis un pachet c atre nodul 3.4. Dirijarea decurge astfel: Nodul 1.1 determin a c a destinatia 3.4 face parte din alt a subret ea dec at el nsu si; ca urmare, caut a drumul spre cel mai apropiat nod ce are leg atur a cu ret eaua ierarhic superioar a. Nodul acesta este 1.2. Nodul 1.2 caut a drumul spre cel mai apropiat nod din subret eaua 3. Nodul g asit este 3.1 si drumul p an a la el este 1.2, 2.3, 3.1 (echivalent, se poate lua drumul 1.2, 2.1, 3.1). Nodul 3.1 trimite pachetul spre destinat ia 3.4 pe drumul cel mai scurt, anume 3.1, 3.2, 3.3, 3.4 (alt drum, echivalent, este 3.1, 3.6, 3.5, 3.4). S a observ am c a drumul pe care l urmeaz a pachetul, 1.1, 1.2, 2.3, 3.1, 3.2, 3.3,
1.1
1.5
1.4 1.3
1.2
3.3
3.4
(a) Toat a ret eaua. Subret elele de pe nivelul 1 sunt ncercuite cu linie punctat a.
Figura 5.7: O ret ea cu dirijare ierarhic a pe dou a nivele. Ret eaua de pe nivelul r ad acin a are nodurile reprezentate prin cercuri pline (mici) si leg aturile reprezentate cu linii ngro sate.
3.4 nu este optim, ntruc at lungimea lui este 6, iar drumul 1.1, 1.5, 1.3, 4.1, 3.3, 3.4 are lungimea 5.
5.2.4.2. Inv a tarea rutelor din adresele surs a ale pachetelor O metod a simpl a de construct ie a tabelelor de dirijare este ca, la primirea unui pachet de la un nod surs a S dinspre un nod vecin V , s a se introduc a sau s a se actualizeze n tabela de dirijare regula pentru destinat ia S prev az and ca urm ator nod pe V . Regulile astfel introduse trebuie s a aib a valabilitate limitat a n timp altfel apar probleme la modicarea leg aturilor din ret ea. De asemenea, mai trebuie un mecanism pentru dirijarea pachetelor pentru care nc a nu exist a reguli de dirijare de exemplu, se poate folosi inundarea. Metoda este utilizat a n ret elele Ethernet.
este preferabil s a e aruncate datagramele mai vechi. De notat c a, adesea, rezolvarea problemelor de mai sus necesit a o colaborare ntre nivelul ret ea si nivelele superioare.
cozile n ordine descresc atoare a nivelelor de prioritate p an a g ase ste o coad a nevid a. Pachetul urm ator ce va transmis este extras din prima coad a nevid a. Dac a metoda priorit a tilor este combinat a cu a steptarea echitabil a, ec arui nivel i se asociaz a un set de cozi, n interiorul setului funct ion and regulile de la a steptarea echitabil a. Urm atorul pachet trimis este extras din setul de cozi cel mai prioritar n care exist a cel putin o coad a nevid a.
informarea, mai departe, a sursei se poate utiliza dimensiunea ferestrei TCP ( 10.3.1.8). O semnalizare implicit a a faptului c a ret eaua este nc arcat a const a n ns a si pierderea pachetelor. Pierderea poate observat a de nodul surs a prin aceea c a nu prime ste conrm ari ( n cazul utiliz arii unui protocol cu conrmare si retransmitere, 4.3) sau r aspuns la mesajele trimise ( n cazul unei aplicat ii care trimite o datagram a de cerere si a steapt a o datagram a care s a r aspund a la cerere). Pentru ca pierderea pachetelor s a poat a utilizat a ca semnalizare a congestiei, mai este necesar ca pierderea unui pachet din alte cauze dec at congestia s a e put in probabil a. Rezult a, pentru leg aturile directe cu rat a a erorilor ridicat a ( n principal, leg aturi radio), necesitatea utiliz arii, la nivelul leg aturii de date, e a unui cod corector de erori, e a unui protocol de conrmare si retransmitere . Indiferent de metoda de semnalizare utilizat a, o implementare simpl a risc a s a duc a la oscilat ii: dac a un nod intermediar ajunge congestionat, semnalizeaz a tuturor nodurilor terminale ale leg aturilor stabilite prin el despre congestie. React ia este diminuarea tracului prin toate leg aturile si ca urmare sc aderea tracului mult sub maximul admis. Dup a un timp, nodurile terminale vor cre ste din nou tracul, p an a la congestionarea, din nou, a nodului intermediar considerat. Solut ionarea problemei oscilat iilor se face pun and nodul intermediar s a trimit a semnale c a este supra nc arcat cu put in nainte de-a ajunge la limita capacit a tii sale si de-a alege aleator leg aturile c arora li se semnalizeaz a nc arcarea.
de pachete se pierd). Un mecanism mai elaborat permite scurte rafale. Ca idee, ruterul tine evident a capacit a tii nefolosite (diferent a dintre debitul maxim acceptat si debitul uxului) si permite, n contul acesteia, un exces de debit. Mai n detaliu, ruterul asociaz a cozii un num ar de jetoane. Periodic, num arul de jetoane este crescut cu o unitate, f ar a ns a a dep a si o valoare maxim a. Dac a exist a un pachet n coad a si num arul de jetoane este mai mare sau egal cu num arul de bit i ai pachetului, pachetul este preluat din coad a si retransmis, iar num arul de jetoane asociat cozii este sc azut cu o valoare egal a cu num arul de bit i ai pachetului. Mecanismul se nume ste g aleata cu jeton.
Sunt permise si alte date (de exemplu, prin conexiuni f ar a trac garantat), ns a acestora li se asociaz a un nivel de prioritate sc azut. In ecare ruter se utilizeaz a un mecanism bazat pe priorit a ti. In acest fel, uxurile ce au rezervat resurse au capacitate garantat a, iar restul datelor sunt transmise, f ar a vreo garant ie, dac a mai r am an resurse si pentru ele.
9 5 8
Ret eaua B
Figura 5.8: Leg aturi prin tunel. O parte dintre leg aturile directe din ret eaua A, gurate cu linie punctat a, sunt obt inute apel and la serviciile ret elei B. Leg atura 45 apare ca leg atur a direct a pentru ret eaua A, dar este construit a de ret eaua B prin intermediul nodului 6.
Un tunel este o leg atur a, realizat a prin intermediul unei ret ele, care este utilizat a de o alt a ret ea ca si c and ar o leg atur a direct a (vezi g. 5.8). Pachetele celei de-a doua ret ele, incluz and antetele specice acesteia, sunt transportate ca date utile printr-o conexiune sau, dup a caz, prin datagrame ale primei ret ele.
Capitolul 6
Vom studia n acest capitol cum se poate proteja comunicat ia dintre dou a entit a ti contra act iunilor unui tert , numit adversar sau intrus , care intercepteaz a sau altereaz a comunicat ia ntre ele. Protect ia comunicat iei mpotriva act iunilor unui adversar se nume ste securizarea comunicat iei. Adversarul poate : adversar pasiv , care doar intercepteaz a mesajele transmise; adversar activ , care si intercepteaz a si modic a mesajele. Protect ia comunicat iei fat a de act iunile adversarului cuprinde: Asigurarea condent ialit a tii are ca obiectiv s a impiedice un adversar pasiv s a nt eleag a un mesaj interceptat sau s a extrag a vreo informat ie din el. Vericarea autenticit a tii mesajelor, numit a si autenticarea mesajelor, are ca obiectiv detectarea, de c atre receptor, a falsurilor, adic a a mesajelor create sau modicate de un adversar activ. Vericarea autenticit a tii mesajelor se aseam an a cu detectarea erorilor. Spre deosebire ns a de detectarea erorilor, unde modic arile produse de mediul de transmisie sunt aleatoare, la vericarea autenticit a tii mesajelor avem un adversar care ncearc a n mod deliberat s a produc a modic ari nedetectabile. Asigurarea non-repudiabilit a tii mesajelor are ca obiectiv s a permit a receptorului s a dovedeasc a autenticitatea unui mesaj n fat a unui tert , altfel spus, emit atorul s a nu poat a nega faptul c a a transmis un anumit mesaj. Asigurarea non-repudiabilit a tii este similar a cu autenticarea mesajelor, dar n plus trebuie s a nu permit a nici m acar receptorului s a creeze un mesaj care s a par a autentic.
Vericarea prospet imii are ca obiectiv detectarea, de c atre receptor, a eventualelor copii ale unui mesaj (autentic) mai vechi. Este posibil ca un adversar s a intercepteze, de exemplu, un ordin de transfer de bani n favoarea sa si apoi s a transmit a b ancii multiple copii ale ordinului de transfer de bani. In lipsa veric arii prospet imii, banca va efectua de mai multe ori transferul de bani. Vericarea autenticit a tii mesajelor, singur a, nu rezolv a problema, deoarece ecare copie este identic a cu originalul si, ca atare, este autentic a. Autenticarea entit a tilor are ca obiectiv vericarea, de c atre o entitate, a identit a tii entit a tii cu care comunic a. Mai exact, exist a un server si unul sau mai mult i client i legitimi care deschid conexiuni c atre server. Modelul adversarului, n acest caz, este put in diferit: adversarul poate s a deschid a o conexiune spre server si s a ncerce s a se dea drept un client legitim. Eventual, adversarul poate s a intercepteze comunicat iile client ilor legitimi, pentru a obt ine informat ii n vederea p ac alirii serverului, dar nu poate altera comunicat ia printr-o conexiune deschis a de altcineva. In prezent a unui adversar activ, autenticarea entit a tilor nu este prea util a, deoarece adversarul poate s a lase protocolul de autenticare s a se desf a soare normal si apoi s a trimit a orice n numele clientului. In prezent a unui adversar activ, este mai degrab a necesar un mecanism de stabilirea cheii (vezi mai jos). Stabilirea cheii are ca obiectiv obt inerea, de c atre partenerii de comunicat ie legitimi, a unui sir de bit i, numit cheie, ce urmeaz a a utilizat a la asigurarea condent ialit a tii si la vericarea autenticit a tii mesajelor. Cheia obt inut a trebuie s a e cunoscut a doar de c atre cei doi parteneri care doresc s a comunice. In multe lucr ari, n loc de autenticarea mesajelor se pune problema veric arii integrit a tii mesajelor vericarea de c atre receptor c a mesajul este identic cu cel emis de emit ator (c a nu a fost modicat pe traseu) si a autentic arii sursei mesajului vericarea de c atre receptor a identit a tii autorului unui mesajului. Cele dou a operat ii vericarea integrit a tii si autenticarea sursei nu au sens dec at mpreun a. Aceasta deoarece, dac a un mesaj a fost alterat de c atre adversar (lucru care se constat a cu ocazia veric arii integrit a tii), mesajul poate v azut ca un mesaj produs de adversar si pretinz and c a provine de la autorul mesajului original; acest din urm a mesaj nu a fost modicat n timpul transportului (de la adversar spre destinatar), dar sursa sa nu este autentic a (mesajul provine de la altcineva dec at autorul indicat n mesaj).
numit cheie . Fiecare valoare a cheii produce o pereche criptare-decriptare distinct a. Cheia se presupune a u sor de generat la nevoie. Mult imea cheilor posibile se nume ste spat iul cheilor si o vom nota n continuare cu K . Funct iile de criptare si decriptare sunt de forma c : T K M si respectiv d : M K T . Cheia este scris a ca parametru. Pentru o valoare xat a a cheii k K , criptarea devine ck : T M , iar decriptarea dk : M T , cu dk ck = 1T . Pentru ecare k K , (ck , dk ) formeaz a o pereche criptare-decriptare. Algoritmii propriu-zi si, adic a funct iile c : T K M si d : M K T , se presupune c a sunt cunoscut i adversarului; dac a merit a s a putet i schimba cheia, nseamn a c a deja avet i ndoieli privitoare la c at de secret putet i tine algoritmul fat a de adversar. . . Ca urmare, pentru o aplicat ie, un algoritm public nu este mai nesigur dec at un algoritm ,,secret, necunoscut publicului dar posibil cunoscut adversarului. Un algoritm foarte cunoscut, dar f ar a vulnerabilit a ti cunoscute, este preferabil fat a de un algoritm ,,secret deoarece exist a sanse mult mai mari ca autorul si utilizatorul aplicat iei s a ae despre vulnerabilit a ti nainte ca vulnerabilit a tile s a e exploatate mpotriva lor. Adesea avem T = M ; n acest caz ck este o funct ie bijectiv a (o permutare pe T ). In aceste condit ii, uneori rolurile funct iilor c si d pot interschimbate, adic a dk s a se foloseasc a ca funct ie de criptare si ck pentru decriptare. Exemplul 6.1 (Substitut ia monoalfabetic a ): Consider am un alfabet (nit) S si not am cu n num arul de litere (n = |S |). De exemplu, S = {a, b, c, . . . , z}; n acest caz n = 26. Textele clare sunt siruri de litere din alfabet: T = S . Mult imea textelor cifrate este identic a cu mult imea textelor clare: M = T . Cheile posibile sunt permut arile lui S ; |K | = n!. Pentru un text clar p = (s1 , s2 , . . . , sl ), textul cifrat este ck (p) = (k (s1 ), k (s2 ), . . . , k (sl )). Decriptarea se calculeaz a dk ((m1 , m2 , . . . , ml )) = (k 1 (m1 ), k 1 (m2 ), . . . , k1 (ml )). Criptarea si decriptarea sunt simplu de executat, chiar si manual. Cheile sunt u sor de reprezentat. Dac a alfabetul are o ordine cunoscut a,
reprezentarea cheii poate consta n n siruirea literelor n ordinea dat a de permutare. De exemplu qwertyuiopasdfghjklzxcvbnm nseamn a k (a) = q, k (b) = w, etc. Cu aceast a cheie, cuv antul ,,criptic devine, prin criptare, ,,ekohzoe. S a examin am put in sigurant a. S a presupunem c a un adversar ncearc a decriptarea textului cifrat cu ecare cheie posibil a. O astfel de ncercare se nume ste atac prin fort a brut a. S a mai presupunem c a adversarul reu se ste s a verice un miliard de chei n ecare secund a. Deoarece num arul de chei este 26! 4 1026 , adversarul ar avea nevoie n medie de 6,5 miliarde de ani pentru a g asi cheia corect a. Pe de alt a parte, ntr-un text n limba rom ana, anumite litere (de exemplu e, a, t, s ) apar mai frecvent dec at altele. Ca urmare, permut arile primelor prin funct ia k vor apare n textul cifrat cu frecvent a mai mare dec at permut arile celorlalte. Un adversar, care dispune de sucient text cifrat, va ncerca doar acele chei care fac s a corespund a unei litere din textul cifrat doar litere a c aror frecvent a normal a de aparit ie este apropiat a de frecvent a de aparit ie a literei considerate n textul cifrat. In acest fel, num arul de ncerc ari se reduce considerabil, astfel nc at un astfel de cifru poate spart u sor n c ateva minute. Exemplul 6.2 (Cifrul Vernam, numit si cheia acoperitoare, engl. One time pad ): La acest cifru, T = {t {0, 1} : |t| n} (mult imea sirurilor de bit i de lungime mai mic a sau egal a cu un n I N xat), M = T si K = {0, 1}n . Funct ia de criptare este ck (t1 , t2 , . . . , tl ) = (t1 k1 , t2 k2 , . . . , tl kl ), unde este operat ia sau exclusiv. Decriptarea coincide cu criptarea, dk = ck . Din punctul de vedere al sigurant ei, criptarea cu cheie acoperitoare este un mecanism perfect de criptare: adversarul nu poate deduce nimic din mesajul criptat ( n afar a de lungimea textului clar), deoarece orice text clar putea , cu egal a probabilitate, originea textului cifrat recept ionat. Criptarea cu cheie acoperitoare este dicil de utilizat practic deoarece necesit a o cheie la fel de lung a ca si mesajul de transmis si, n plus, cheia nu poate refolosit a (dac a se transmit dou a mesaje folosind aceea si cheie, se pierde sigurant a metodei).
Dicultatea spargerii unui cifru este de dou a feluri: dicultatea probabilistic a sau informat ional a, dicultate computat ional a. Dicultatea informat ional a const a n faptul c a pot exista mai multe perechi text clar, cheie, care ar putut produce textul cifrat interceptat m. Presupun and |T | = |M | si c a orice biject ie c : T M putea aleas a, cu egal a probabilitate, ca funct ie de criptare, adversarul care recept ioneaz a un text cifrat m nu poate deduce nimic cu privire la textul clar t orice text clar avea aceea si probabilitate de a genera m. Un astfel de cifru este perfect textul cifrat nu aduce nici o informat ie adversarului. Deoarece exist a (|T |)! biject ii posibile, lungimea necesar a a cheii este log2 ((|T |)!). Presupun and c a T este mult imea sirurilor de n bit i, avem |T | = 2n si lungimea cheii este log2 ((2n )!) bit i, lungime a c arei comportament asimptotic n este de forma (n2 ). Pentru n = 20, cheia are c a tiva megabit i. De notat c a un algoritm de criptare secret nu este un cifru perfect, deoarece nu toate cele (2n )! funct ii de criptare posibile au aceea si probabilitate de a alese. Cifrul Vernam (vezi exemplul 6.2) este de asemenea un cifru perfect, c at a vreme cheia nu este refolosit a. In exemplul 6.3, dicultatea informat ional a const a n imposibilitatea adversarului de a distinge ntre DAN si ION Incertitudinea adversarului asupra textului clar este cel mult egal a cu incertitudinea asupra cheii. De aici rezult a c a, pentru a obt inerea unui cifru perfect, num arul de bit i ai cheii trebuie s a e mai mare sau egal cu num arul de bit i de informat ie din mesaj. Cifrul Vernam este n acela si timp perfect (sub aspectul dicult a tii informat ionale a spargerii) si optim din punctul de vedere al lungimii cheii. Dicultatea computat ional a const a n imposibilitatea adversarului de a deduce informat ii asupra textului clar cu un efort computat ional rezonabil. Un prim lucru care se cere de la un cifru este ca, d andu-se un num ar de perechi text clar text cifrat, s a nu existe o metod a rapid a de a determina cheia. Un atac prin fort a brut a (engl. brute force attack ) const a n a decripta textul cifrat folosind toate cheile posibile si a verica dac a se obt ine textul clar (sau un text clar inteligibil, dac a textul clar adev arat nu este cunoscut dinainte). Fezabilitatea unui atac prin fort a brut a depinde direct de lungimea cheii (de fapt, de num arul de chei posibile). Pentru o cheie de 56 de bit i (exemplu cifrul DES), un atac prin fort a brut a este perfect posibil, la viteza
actual a necesit and un efort n jur de un an-calculator. Un atac prin fort a brut a este nefezabil deocamdat a de la 80 de bit i n sus; se consider a c a va fezabil n jurul anului 2015. De la 128 de bit i n sus atacul prin fort a brut a necesit a, din cauza unor limit ari zice teoretice, o cantitate de energie comparabil a cu product ia mondial a pe c ateva luni; o astfel de cheie este put in probabil c a va putea spart a vreodat a prin fort a brut a. Un cifru se consider a a vulnerabil n momentul n care se descoper a o metod a de decriptare a unui mesaj semnicativ mai ecient a dec at un atac prin fort a brut a. Inexistent a unei metode eciente de spargere nu este niciodat a demonstrat a; n cel mai bun caz se demonstreaz a c a spargerea unui cifru este cel put in la fel de dicil a ca rezolvarea unei anumite probleme de matematic a, problem a cunoscut a de mult a vreme dar f ar a rezolvare ecient a cunoscut a. Acest din urm a tip de demonstrat ie se aplic a mai mult la cifrurile asimetrice din 6.1.5; problemele de matematic a sunt de exemplu descompunerea n factori primi a unui num ar mare de ordinul sutelor de cifre sau logaritmul discret rezolvarea n x {0, . . . , p 1} a ecuat iei ax = b (mod p), cu p num ar prim mare. Pentru un cifru bloc (un cifru care cripteaz a independent blocuri de text clar de o anumit a lungime x a), dimensiunea blocului trebuie s a e mare pentru a face repet arile blocurilor sucient de rare. Dac a dimensiunea blocului este de n bit i, exist a 2n posibilit a ti pentru cont inutul unui bloc. Consider and o distribut ie uniform a a cont inutului ec arui bloc, un sir de 2n/2 blocuri are probabilitate cam 1/2 s a aib a cel put in dou a blocuri cu cont inut identic. (Acest fapt este cunoscut ca paradoxul zilei de na stere: ntr-un grup de 23 de persoane, probabilitatea s a existe dou a dintre ele n a scute n aceea si zi din an este and k valori peste 50%; n general, ntr-un grup de k numere aleatoare av posibile, probabilitatea ca cel put in dou a s a e egale este n jur de 1/2). Ca o consecint a, dimensiunea n a blocului trebuie s a e sucient de mare si cheia s a e schimbat a sucient de des, astfel nc at num arul de blocuri criptate cu o cheie dat a s a e mult mai mic dec at 2n/2 . In majoritatea cazurilor, valoarea minim a rezonabil a pentru n este 64 de bit i. La aceast a lungime, repetarea unui bloc de text cifrat este probabil s a apar a ncep and de la 232 blocuri, adic a 32 GiB.
de lungime arbitrar a si produc bit ii textului cifrat pe m asur a ce primesc bit ii corespunz atori din textul clar. Pentru a cripta un text de lungime arbitrar a, cu ajutorul unui cifru bloc, exist a c ateva metode standard, pe care le vom descrie n continuare. In cele ce urmeaz a, not am cu n lungimea blocului, n bit i. ECB Electronic Code Book: Textul clar se mparte n blocuri de lungime n. Ultimul bloc se completeaz a la lungimea n; bit ii ad augat i pot zerouri, bit i aleatori sau se pot utiliza alte scheme de completare. Fiecare bloc se cripteaz a apoi independent de celelalte (vezi g. 6.1).
Text clar
1 0 0 1 0 1
C
1111 111 0000 000 111 000 0000 1111 000 111 000 111 0000 111 1111 000 111 000
D D D
Text cifrat
1111 0000 000 111 000 111 0000 1111 000 111 000 0000 111 1111 000 111 000 111
Text cifrat
(a) Criptarea
Text clar
(b) Decriptarea
1 0 0 1 0 1
Metoda ECB nu se recomand a deoarece pentru o cheie x a acela si text clar se transform a n acela si text cifrat. O alt a critic a citat a frecvent este c a un adversar care permut a blocurile de text cifrat va obt ine permutarea blocurilor corespunz atoare de text clar, chiar dac a nu nt elege nimic din textul cifrat. De si armat ia este adev arat a, critica este nefondat a ntruc at un cifru nu are ca scop protejarea integrit a tii mesajelor. CBC Cipher Block Chaining: (Vezi g. 6.2.) Ca si la ECB, textul clar se mparte n blocuri si ultimul bloc se completeaz a cu bit i aleatori. In plus, se alege un sir de n bit i aleatori; acesta se nume ste vector de init ializare. Vectorul de init ializare se transmite de obicei separat. Se efectueaz a xor pe bit i ntre vectorul de init ializare si primul bloc de text clar; rezultatul se cifreaz a si se trimite. Apoi, se face xor ntre ecare bloc de text clar si blocul precedent de text cifrat, si rezultatul se cifreaz a si se transmite destinatarului. Fat a de ECB, metoda CBC face ca un acela si bloc de text clar s a se cripteze diferit, n funct ie de vectorul de init ializare utilizat. Dac a
Nume DES
lungime bloc 64
lungime cheie 56
observat ii A fost utilizat pe scar a destul de larg a, ind sust inut ca standard de c atre guvernul Statelor Unite ale Americii. In prezent este nesigur datorit a lungimii mici a cheii (a fost deja spart prin fort a brut a). Au existat si speculat ii cum c a ar fost proiectat astfel nc at s a e u sor de spart de c atre cei care ar cunoa ste ni ste detalii de proiectare. Const a n aplicarea de 3 ori succesiv a cifrului DES, cu 2 sau toate 3 cheile distincte. A fost creat pentru a nu inventa un cifru total nou, dar f ac and imposibil a spargerea prin fort a brut a. Desemnat, n urma unui concurs, ca nou standard utilizat de guvernul american. Proiectat de doi belgieni, Joan Daemen si Vincent Rijmen si publicat sub numele rijndael. Creat de Carlisle Adams si Staord Tavares n 1996. Creat de Bruce Schneier n 1993. Creat de Bruce Schneier si alt ii si a participat la concursul pentru AES. Creat de Ross Anderson, Eli Biham si Lars Knudsen; candidat pentru AES. Creat de Ronald Rivest; candidat pentru AES; patentat n favoarea rmei RSA Security. Creat de Ronald Rivest n 1987; foarte rapid; are c ateva sl abiciuni, care pot contracarate prin articii legate de modul de utilizare.
3DES
64
AES
128
CAST-128
64 ntre 40 si 128 bit i 64 p an a la 448 bit i 128 p an a la 256 bit i 128 128, 192 sau 256 128 128, 192 sau 256 ux p an a la 256 bit i
RC4
Text clar
11 00 00 11 00 11 00 11
1111 0000 000 111 000 111 0000 1111 000 111 000 111 0000 1111 000 111 000 0000 111 1111 000 111 000 111
Text cifrat
(a) Criptarea
Vector Text cifrat init ia000 111 000 000 lizare 111 000111 000111 111 000 111 000 111
000111 111 000111 000 111 000 000 111 000 111
D D D
Text clar
(b) Decriptarea
1 0 0 1 0 1 0 1
vectorul de init ializare este ales aleator, repet arile unui bloc de text cifrat vor extrem de rare (imposibil de exploatat de adversar). Vectorul de init ializare trebuie ales satisf ac and : - s a e distribuit uniform si necorelat cu textul clar sau alt i vectori de init ializare; - s a nu poat a controlat de adversar; - s a nu poat a aat de adversar c at timp adversarul ar putea inuent a textul clar, pentru a mpiedica un atac cu text clar ales. Vectorul de init ializare se construie ste utiliz and una din urm atoarele variante: - se genereaz a cu un generator de numere aleatoare criptograc (vezi 6.4) si se transmite n clar naintea mesajului; - se stabile ste prin metode asem an atoare cu stabilirea cheii (vezi 6.3); - dac a se transmit mai multe mesaje unul dup a altul, vectorul de init ializare pentru un mesaj se ia ca ind ultimul bloc al mesajului precedent (ca la nl ant iurea blocurilor n cadrul aceluia si mesaj). Pentru a mpiedica un atac cu text clar ales, dac a textul clar al unui mesaj este format dup a expedierea mesajului precedent este necesar trimiterea unui mesaj care s a e ignorat de destinatar si cu cont inut aleator. CFB Cipher Feedback: CFB si urm atorul mod, OFB, sunt utilizate n special acolo unde mesajele sunt mult mai scurte dec at dimensiunea blocului, ns a emit atorul transmite aceluia si receptor o secvent a mai lung a de mesaje (presupunem c a un mesaj nu poate grupat mpreun a cu urm atorul deoarece, de exemplu, un mesaj depinde de r aspunsul receptorului la mesajul precedent; prin urmare, un mesaj nu este disponibil pentru criptare nainte ca mesajul precedent s a e criptat n totalitate si trimis). CFB cripteaz a fragmente de text clar de dimensiune x a m. Dimensiunea m a fragmentului trebuie s a ndeplineasc a o singur a restrict ie, si anume s a e un divizor al dimensiunii n a blocului cifrului. Se poate lua m = 8 si atunci cifrul cripteaz a c ate un caracter. CFB funct ioneaz a astfel (vezi g. 6.3): Emit atorul genereaz a aleator un vector de init ializare de n bit i, pe care l transmite receptorului si l ncarc a totodat a ntr-un registru de deplasare. Apoi, pentru ecare caracter de
registru de deplasare
Se ignor a
Se ignor a
+
Text clar
(a) Criptarea
Text cifrat
1 0 0 1 0 1
11 00 00 11 00 11
+
Text clar
(b) Decriptarea
Text cifrat
criptat, emit atorul: - cripteaz a cont inutul registrului de deplasare utiliz and cheia secret a, - execut a xor pe bit i ntre urm atorii m bit i din textul clar si primii m bit i din rezultatul cript arii, - transmite ca text cifrat rezultatul pasului precedent, - deplaseaz a cont inutul registrului de deplasare cu m bit i spre st anga, - introduce, pe pozit iile cele mai din dreapta ale registrului de deplasare, m bit i de text cifrat produs. CFB are o proprietate interesant a de autosincronizare : dac a la un moment dat, din cauza unor erori de transmisie, se pierde sincronismul dintre emit ator si receptor, sincronismul se reface automat dup a n bit i. De remarcat, de asemenea, c a decriptarea CFB utilizeaz a tot func tia de criptare a cifrului bloc. OFB Output Feedback: OFB este un mecanism asem an ator cu cifrul Vernam (cu cheie acoperitoare) (exemplul 6.2), ns a cheia este un sir pseudoaleator generat cu un algoritm de criptare. Primii n bit i din sirul pseudoaleator se obt in cript and vectorul de init ializare, urm atorii n bit i
se obt in cript and precedent ii n bit i pseudoaleatori, s. a. m. d. La OFB utilizarea unui vector de init ializare aleator este chiar mai important a dec at la celelalte moduri de criptare, ntruc at refolosirea unui vector de init ializare conduce la repetarea sirului pseudoaleator (cheia Vernam), rezult and un cifru relativ u sor de spart. CTR Counter: Se construie ste similar cu OFB, ns a sirul pseudoaleator se obt ine cript and numerele v , v + 1, v + 2, etc., reprezentate pe n bit i, v ind vectorul de init ializare. Modul CTR este foarte asemn an ator cu OFB, ns a are avantajul c a destinatarul poate decripta un fragment de mesaj f ar a a decripta tot mesajul p an a la fragmentul dorit. Acest fapt l face potrivit pentru criptarea sierelor pe disc. Totu si, deoarece cifrul Vernam aat la baz a este vulnerabil unui adversar av and la dispozit ie dou a texte clare criptate cu aceea si cheie, metoda este vulnerabil a dac a adversarul are posibilitatea de-a obt ine dou a variante ale unui sier.
Evident, cunosc and cheia public a kc este posibil, ns a trebuie s a e dicil computat ional, s a se calculeze cheia secret a kd corespunz atoare. Pentru ca sistemul de criptare s a e util mai este necesar s a existe un procedeu ecient (computat ional) de generare a unei perechi de chei (kc , kd ) aleatoare. Un sistem criptograc asimetric (sau cifru asimetric sau cifru cu cheie public a ) este un ansamblu format din algoritmii de criptare c si decriptare d si un algoritm de generare aleatoare a perechilor de chei (kc , kd ). Pentru ca sistemul criptograc s a e sigur trebuie ca rezolvarea ecuat iei ckc (t) = m cu necunoscuta t s a e dicil a computat ional. Implicit, determinarea cheii secrete kd corespunz atoare unei chei publice kc trebuie de asemenea s a e dicil a computat ional. Exemplul 6.4 (Cifrul RSA): Generarea cheilor se face astfel: se genereaz a numerele prime p si q (de ordinul a 500 cifre zecimale ecare); se calculeaz a n = pq si = (p 1)(q 1); se genereaz a aleator un num ar e {2, 3, . . . , 1}, relativ prim cu ; se calculeaz a d cu proprietatea c a ed 1 (mod ) (utiliz and algoritmul lui Euclid). Cheia public a este kc = (n, e), iar cheia secret a este kd = (n, d). Spat iul textelor clare si spat iul textelor cifrate sunt P = M = {0, 1, . . . , n 1}. Criptarea si decriptarea sunt: ckc (p) = pe dkd (m) = m
d
(mod n) (mod n)
(6.1) (6.2)
Cifrul a fost inventat de Rivest, Shamir si Adelman n 1977. Numele RSA vine de la init ialele autorilor. 6.1.5.1. Utilizarea criptograei asimetrice Pentru preg atirea comunicat iei, receptorul genereaz a o pereche de chei (kc , kd ) si face public a kc . Emit atorul poate cripta un mesaj, folosind kc , si numai posesorul lui kd l va putea decripta. Not am c a odat a criptat un mesaj, acesta nu mai poate decriptat nici m acar de autorul s au (de si autorul si dealtfel oricine poate verica dac a un text cifrat dat corespunde sau nu unui text clar dat). Dac a se dore ste comunicat ie bidirect ional a, se utilizeaz a c ate o pereche de chei (kc , kd ) distinct a pentru ecare sens.
O aceea si pereche de chei poate utilizat a de o entitate pentru toate mesajele pe care le prime ste, indiferent cu c a ti parteneri comunic a. Astfel, ecare entitate si stabile ste o pereche de chei din care cheia public a o transmite tuturor partenerilor de comunicat ie si cheia secret a o folose ste pentru a decripta mesajele trimise de tot i c atre ea. Pentru comparat ie, n criptograa simetric a, ecare pereche de parteneri ce comunic a trebuie s a aib a propria cheie secret a. Un sistem criptograc asimetric este n esent a un cifru bloc. Pentru a cripta o cantitate arbitrar a de text clar, se pot utiliza modurile ECB sau CBC. Modurile CFB, OFB si CTR nu sunt utilizabile deoarece utilizeaz a doar funct ia de criptare, care n cazul criptograei asimetrice este public a. Algoritmii criptograci asimetrici sunt mult mai lent i dec at cei simetrici. Din acest motiv, datele propriu-zise se cripteaz a de obicei cu algoritmi simetrici, iar cheia de criptare pentru date se transmite utiliz and criptograe asimetric a (vezi si 6.3).
repetarea unor mesaje anterioare este o problem a separat a si va studiat a n 6.2.4. In studiul metodelor de autenticare a mesajelor, presupunem c a mesajul de transmis nu este secret. Aceasta deoarece n practic a apare frecvent necesitatea ca un mesaj public s a poat a testat de oricine n privint a autenticit a tii. De exemplu, textul unei legi este o informat ie public a, dar un cet a tean ar trebui s a poat a verica dac a textul ce i-a parvenit este textul autentic emis de autoritatea abilitat a. Remarc am de asemenea c a faptul c a un mesaj criptat utiliz and un algoritm simetric poate decriptat de c atre receptor (utiliz and cheia secret a) si este inteligibil nu e o garant ie privind autenticitatea mesajului. Intr-adev ar, pentru unele metode de criptare, cum ar modul OFB al oric arui cifru bloc, un adversar poate opera modic ari asupra textului cifrat cu efecte previzibile asupra textului clar, chiar dac a nu cunoa ste efectiv textul clar. Din acest motiv, metodele de asigurare a condent ialit a tii se separ a de metodele de control a autenticit a tii.
majoritatea funct iilor rezistente la coliziuni satisfac si condit ia de rezistent a la preimagine. Num arul de bit i n ai dispersiei trebuie s a e sucient de mare pentru a mpiedica c autarea unei coliziuni prin fort a brut a. Conform paradoxului zilei de na stere, exist a sanse mari de g asire a unei coliziuni ntr-o mult ime de 2n/2 intr ari. Pentru a face impractic un atac prin fort a brut a, trebuie ca n/2 64 ( si mai bine n/2 80), de unde n 128 sau mai bine n 160. Funct iile de dispersie mai cunoscute sunt descrise n tabelul 6.2. Nume MD5 lungime 128 observat ii Creat a de Ronald Rivest n 1991. Este extrem de r asp andit a, ns a c ateva sl abiciuni descoperite recent o fac destul de nesigur a. Dezvoltat a de NSA (National Security Agency, SUA). Deocamdat a este mai sigur a dec at MD5, dar are deja c ateva sl abiciuni. Dezvoltat a la Katholieke Universiteit Leuven n 1996.
SHA1
160
RIPEMD-160
160
6.2.1.1. Utilizarea funct iilor de dispersie Presupunem existent a ntre emit ator si receptor a dou a canale de transmitere a informat iei: un canal principal nesigur si un canal sigur dar cu capacitate foarte redus a. Ca exemplu practic, canalul nesigur este Internet-ul, iar canalul sigur este un bilet scris sau o convorbire telefonic a. Presupunem de asemenea c a h este o funct ie de dispersie rezistent a la a doua preimagine si preferabil rezistent a la coliziuni. Emit atorul unui mesaj t calculeaz a s = h(t). Apoi, transmite t prin canalul principal si transmite s prin canalul sigur. Receptorul testeaz a dac a h(t) = s. Un adversar care ar modica t n t ar trebui s a g aseasc a un t cu h(t ) = h(t) pentru a p ac ali receptorul; acest lucru este nefezabil n virtutea propriet a tii de rezistent a la a doua preimagine a funct iei de dispersie h. Exist a situat ii practice n care t este (part ial) la dispozit ia adversarului. De exemplu, presupunem c a secretara redacteaz a un mesaj t la cererea sefului, secretara put and alege formularea exact a a mesajului t. S eful si exprim a acordul asupra mesajului calcul and si trimit and destinatarului s = h(t). Dac a adversarul este secretara, ea nu se g ase ste n situat ia de-a crea un t satisf ac and h(t ) = h(t) pentru t xat (adic a de-a crea a doua preimagine) ci
este n situat ia de-a crea t si t distincte cu h(t) = h(t ) (adic a de-a g asi o coliziune). Din acest motiv, o funct ie de dispersie utilizat a pentru controlul autenticit a tii mesajelor se cere s a e rezistent a la coliziuni. Exist a pe sistemele Linux comenzile md5sum si sha1sum care calculeaz a si a seaz a dispersia md5 respectiv sha1 a cont inutului unui sier. Dispersia este a sat a n hexa. Dac a not am ntr-un loc sigur dispersia unui sier, putem controla ulterior dac a sierul a fost sau nu modicat ntre timp.
(conform [RFC 2104, 1997]): hk (m) = hash(K opad hash(K ipad m)) unde: reprezint a concatenarea, este operat ia sau exclusiv, hash este funct ia de dispersie criptograc a (de exemplu md5 sau sha1 ), K este cheia k completat a la o lungime B aleas a n funct ie de anumite particularit a ti ale funct iei de dispersie de la baz a; pentru md5 si sha1, B se ia de 64 de octet i. ipad si opad sunt siruri obt inute prin repetarea de B ori a octetului cu valoarea (hexa) 36, respectiv 5C. Rezultatul funct iei hash se poate trunchia la lungime mai mic a (not am c a funct ia de dispersie hash d a 128160 bit i, iar pentru o dispersie cu cheie sunt sucient i 6480 de bit i). Trunchierea are ca avantaj mic sorarea cantit a tii de informat ie pus a la dispozit ia adversarului. O construct ie uzual a pentru funct ii de dispersie cu cheie pornind de la un cifru bloc este urm atoarea: se completeaz a mesajul la un num ar ntreg de blocuri; se execut a o criptare n mod CBC cu un vector de init ializare zero (sau init ializat cu dispersia mesajului precedent); rezultatul cript arii ultimului bloc se cripteaz a utiliz and o a doua cheie (cheia funct iei de dispersie este considerat a ca ind concatenarea celor dou a chei de criptare), rezult and valoarea dispersiei.
o funct ie de semnare h; o funct ie de vericare v . In faza preg atitoare, autorul de mesaje semnate genereaz a o pereche de chei (ks , kv ) si transmite cheia public a kv receptorului sau receptoarelor. La transmiterea cheii publice, trebuie utilizat un canal sigur, astfel nc at cheia s a nu poat a modicat a n timpul transmisiei. Autorul mesajului t creaz a semn atura s = hks (t) si transmite perechea (s, t). Receptorul veric a dac a vkv (t, s) = true. A sa cum se vede, semn atura s depinde si de mesajul de semnat t si de semnatarul acestuia (mai exact de cheia ks ). Ca urmare, o semn atur a nu poate t aiat a de pe un mesaj si plasat a pe alt mesaj. Unii algoritmi de semn atur a digital a necesit a un al treilea argument pentru funct ia de semn atur a; acest argument trebuie s a e un num ar aleator. In acest caz exist a mai multe semn aturi valide pentru un acela si mesaj. O posibilitate de construct ie pentru semn atur a este pe baza unui mecanism de criptare asimetric n care criptarea este bijectiv a; de exemplu RSA are aceast a proprietate. Construct ia simplicat a este: hks (t) = dks (t) vkv (t, s) = (ckv (s) = t) Construct ia de mai sus se bazeaz a pe nefezabilitatea calculului lui s = dks (t) f ar a cunoa sterea lui ks . Totu si, construct ia aceasta permite adversarului s a produc a un fals existent: un adversar poate alege aleator un s si calcula t = ckv (s). O mbun at a tire a semn aturii electronice de mai sus este s a nu se aplice dks direct asupra lui t ci asupra unei dispersii rezistente la preimagine si la coliziuni a lui t. Metoda are dou a avantaje, pe de o parte c a algoritmul de criptare asimetric, lent, se aplic a asupra dispersiei si nu asupra ntregului mesaj (dispersia se calculeaz a mai repede dec at criptarea asimetric a), iar pe de alt a parte se mpiedic a falsul existent deoarece chiar dac a adversarul calculeaz a ckv (s) nu poate g asi un mesaj t cu dispersia astfel xat a. Semn atura digital a asigur a nu doar autenticarea mesajelor, ci si nonrepudiabilitatea mesajelor. Acest lucru se nt ampl a deoarece cheia de semn atur a este cunoscut a doar de c atre emit ator. Ca urmare, doar emit atorul poate genera semn atura. Prin urmare, prezent a unei semn aturi vericabile atest a faptul c a documentul a fost produs de emit ator. Funct iile de dispersie cu cheie nu realizeaz a (direct) mesaje nerepudiabile deoarece receptorul poate produce mesaje semnate la fel de bine ca si emit atorul.
perfect sincronizate si deoarece transportul mesajului nu este instanta neu. In interiorul acestui decalaj admis, adversarul poate trimite copii ale mesajului, copii ce vor acceptate ca proaspete de destinatar. Pentru corectarea acestei probleme, mecanismul se face astfel: Emit atorul se asigur a c a dou a mesaje distincte vor avea num arul unic distinct. Pentru aceasta, e rezolut ia marcajului de timp se face mai n a dec at timpul necesar emiterii unui mesaj, e emit atorul mai tine un contor care se incrementeaz a la ecare mesaj trimis si f acut astfel nc at s a nu se reseteze nainte ca marcajul de timp s a treac a la urm atoarea valoare. Receptorul memoreaz a numerele unice ale mesajelor primite, pe durata c at marcajul de timp din mesaj este acceptabil de c atre testul de prospet ime (de exemplu, dac a mesajul este trimis la ora 08:12:45 si testul de prospet ime accept a un decalaj de 10 secunde, num arul unic al mesajului va p astrat p an a la ora 08:12:55). La primirea unui mesaj, receptorul veric a dac a marcajul de timp este actual ( n interiorul intervalului acceptabil) si dac a num arul unic nu este identic cu cel al unuia dintre mesajele memorate. Utilizarea orei la vericarea prospet imii necesit a un mecanism sigur care s a ment in a sincronismul ceasurilor dispozitivelor care comunic a. un num ar (aleator) ales de receptor: Receptorul care a steapt a un mesaj trimite emit atorului un num ar aleator proasp at generat. Num arul aleator trebuie s a aib a cel put in 6480 bit i, pentru ca s a nu se repete (dec at cu probabilitate neglijabil de mic a) si s a nu poat a prezis de c atre adversar. Emit atorul adaug a num arul la mesajul trimis. Receptorul accept a un mesaj ca proasp at doar dac a num arul aleator din mesaj coincide cu num arul aleator tocmai trimis. Ca si pentru varianta cu num ar de ordine, num arul aleator nu este necesar s a e inclus n mesaj; este sucient s a participe la calculul semn aturii mesajului. Neajunsul principal al metodei este necesitatea de-a transfera num arul aleator dinspre receptor spre emit ator. In plus, este necesar ca receptorul s a stie c a urmeaz a s a primeasc a un mesaj, ceea ce necesit a adesea nc a un mesaj (emit atorul spune vezi c a vreau s a-t i spun ceva, receptorul r aspunde trimit and num arul aleator si, n nal, emit atorul trimite mesajul propriu-zis). Acest lucru face aplicarea metodei scump a si n anumite cazuri imposibil a de exemplu metoda nu este aplicabil a pentru securizarea po stei electronice sau pentru protocoale de difuziune (broadcast). In cazul unui schimb de mai multe mesaje, de exemplu o sesiune
ssh, se poate combina num arul aleator cu un num ar de ordine. La deschiderea conexiunii, receptorul trimite num arul aleator. Emit atorul include n ecare pachet al conexiunii num arul aleator primit la deschiderea conexiunii si num arul de ordine al pachetului.
6.2.5. Combinarea cript arii, autentic arii si veric arii prospe timii
Vericarea prospet imii unui mesaj se face pe baza unui num ar unic inclus n mesaj, num ar unic pe care receptorul l veric a la primirea mesajului. Dac a num arul unic are o singur a valoare valid a, se poate conveni c a num arul nu se transmite efectiv, ns a dispersia sau semn atura se calculeaz a ca si c and num arul ar parte a mesajului. Combinarea cript arii cu autenticarea se poate face n trei moduri: Se calculeaz a nt ai semn atura sau dispersia, iar apoi se cripteaz a rezultatul concaten arii datelor utile cu dispersia sau semn atura. De si nu exist a o sl abiciune cunoscut a, unii criptogra sust in c a prezent a dispersiei n mesajul criptat ar putea oferi unui adversar o posibilitate de-a sparge criptarea [Rogaway 1995]. Se cripteaz a mai nt ai mesajul, iar apoi se calculeaz a dispersia sau semn atura mesajului criptat. Pentru aceast a metod a, este necesar ca o anumit a cheie pentru semn atur a sau dispersie s a nu se utilizeze dec at cu o singur a cheie de criptare. In caz contrar, este posibil ca un mesaj criptat cu o cheie s a e copiat de adversar si trimis destinatarului dup a schimbarea cheii de criptare. Mesajul trece testul de autenticitate, ns a, n urma decript arii cu noua cheie, rezult a un alt text clar dec at cel original (vulnerabilitate de tip fals existent). Se cripteaz a doar textul clar, iar apoi la textul cifrat rezultat se adaug a semn atura sau dispersia textului clar. Dac a autenticarea se face prin dispersie cu cheie, metoda nu prezint a vulnerabilit a ti ( n caz contrar, se poate ar ata c a funct ia de dispersie este vulnerabil a la fals existent). Acest mod de combinare a cript arii cu dispersia cu cheie este utilizat de protocolul ssh versiunea 2. Dac a autenticarea se face prin semn atur a digital a, metoda nu este corect a deoarece permite unui adversar care b anuie ste textul clar s a verice dac a textul clar este cel b anuit de el.
cele ce urmeaz a, vom studia cum se poate face ca aceste chei s a e disponibile partenerilor. Cheile respective pot chei pentru criptograe simetric a sau pentru autenticare prin dispersie cu cheie, caz n care cheile le vom numi chei simetrice, sau pot chei publice pentru criptograe asimetric a sau pentru semn atur a digital a. Transmiterea celor dou a tipuri de chei au cerint e distincte. In cazul unei chei simetrice, act iunea prin care cheia este generat a si f acut a disponibil a partenerilor de comunicat ie se nume ste stabilirea cheii . Un protocol de stabilire a cheii trebuie s a ndeplineasc a urm atoarele cerint e: Cheia stabilit a s a nu poat a cunoscut a de altcineva dec at de entit a tile ce doresc s a comunice. Act iunea de satisfacere a acestei cerint e poart a denumirea de autenticarea cheilor si este obligatorie n orice proces de stabilire a cheilor. Cheia stabilit a s a e proasp at a si, eventual, s a nu poat a impus a unilateral de vreuna dintre p art i ci s a e calculat a din elemente generate de ecare dintre parteneri. Aceast a cerint a este util a pentru a pre nt ampina situat ia n care un adversar, care reu se ste s a obt in a o cheie mai veche, ar putea determina entit a tile care comunic a s a refoloseasc a acea cheie. Fiecare entitate ce comunic a s a aib a conrmarea c a partenerul de comunicat ie a primit efectiv cheia. Act iunea care veric a satisfacerea aceastei cerint e poart a denumirea de conrmarea cheii, iar conrmarea cheii mpreun a cu autenticarea cheii poart a denumirea de autenticarea explicit a a cheii. Este posibil s a nu se prevad a conrmarea cheii ca parte a protocolului de stabilire a cheii; n acest caz, nceperea comunicat iei propriu-zise cu ajutorul cheii respective constituie conrmarea cheii. Not am c a, n anumite cazuri, autenticarea cheii stabilite se face unilateral (adic a doar una dintre entit a ti stie cu certitudine ce entitate mai cunoa ste cheia negociat a). In astfel de cazuri, a doua entitate e nu are nevoie s a o autentice pe prima (de exemplu, a doua entitate este un server public), e utilizeaz a un mecanism de autenticare a utilizatorilor ( 6.5). In cazul unei chei publice, act iunea prin care cheia este f acut a disponibil a partenerilor se nume ste certicarea cheii. Spre deosebire de cazul cheilor simetrice, unde transmisia unei chei ntre partenerii de comunicat ie se face doar pentru o cheie proasp at generat a, n cazul cheilor publice se nt ampl a frecvent ca o aceea si cheie public a s a e transmis a de mai multe ori c atre o aceea si entitate. Certicarea unei chei are urm atoarele cerint e: Receptorul unei chei publice s a poat a verica dac a cheia primit a este ntr-adev ar cheia public a a partenerului de comunicat ie. Receptorul cheii s a poat a verica dac a cheia mai este valid a. O cheie
public a trebuie s a poat a invalidat a dac a se suspecteaz a c a a fost compromis a cheia secret a corespunz atoare. In prezent a unui adversar, stabilirea cheilor simetrice si certicarea cheilor publice necesit a mecanisme de securizare a comunicat iei (criptare si autenticare). Stabilirea cheilor sau certicarea cheilor ntre dou a entit a ti care nu au deja chei care s a le permit a o comunicat ie securizat a ntre ele se poate face prin dou a metode: cu ajutorul unui tert de ncredere : Aceast a metod a necesit a existent a unei a treia entit a ti care s a poat a deja comunica securizat cu ecare din primele dou a si care s a prezinte ncredere acestora. prin intermediul unui utilizator uman ( 6.3.5). Dup a rolul lor fat a de un mecanism de stabilire a cheilor, cheile se numesc: chei efemere (engl. ephemeral key ) sau chei de sesiune (engl. session key ), utilizate pentru comunicat ia propriu-zis a ntre dou a entit a ti. O cheie efemer a se utilizeaz a pe durat a scurt a, de exemplu pe durata unei conexiuni sau pentru a cripta un singur mesaj. Ea este creat a special pentru o anumit a ocazie si este distrus a imediat dup a aceea. Deoarece, din motive de vitez a, comunicat ia propriu-zis a este protejat a prin criptograe simetric a si, uneori, prin dispersie cu cheie, cheile efemere sunt chei simetrice. chei de lung a durat a (engl. long-term key ), utilizate n cadrul mecanismelor de stabilire sau certicare a cheilor. Cheile de lung a durat a pot chei simetrice sau chei asimetrice. Mai d am c ateva considerente practice legate de stabilirea sau certicarea cheilor: Num arul de chei pe care trebuie s a le posede o entitate pentru a putea comunica trebuie s a e c at mai mic. Ideal, ecare entitate dispune de o singur a cheie de lung a durat a, permit and o comunicat ie securizat a cu un tert de ncredere. Atunci c and entitatea are nevoie s a comunice cu o alt a entitate, obt ine, prin intermediul tert ului de ncredere, cheia necesar a comunic arii cu partenerul dorit. Dup a utilizare, cheia respectiv a poate stears a. Intervent ia manual a n stabilirea cheilor trebuie s a e minim a. Totu si, un prim transport manual al unei chei este ntotdeauna necesar.
Deoarece cheile de lung a durat a pot aate de adversari, cheile trebuie s a poat a schimbate periodic. De asemenea, dac a un adversar nregistreaz a comunicat ia legat a de stabilirea unei chei de sesiune si, ulterior, obt ine o cheie de lung a durat a utilizat a n stabilirea acelei chei de sesiune, este bine s a nu poat a s a obt in a cheia de sesiune, pentru a nu putea mai departe decripta sesiunea.
durat a. Avantajul obt inut este c a dac a un adversar obt ine cheia secret a de lung a durat a a lui A, dar ntre timp cheia proasp at a a expirat si a fost distrus a, adversarul nu mai poate decripta comunicat iile vechi. Solut ia n varianta simpl a este utilizat a de PGP/GPG. Aici emit atorul mesajului are rolul lui B si receptorul are rolul lui A. Emit atorul obt ine cheia public a a receptorului, iar la trimiterea unui mesaj genereaz a aleator o cheie de sesiune, cripteaz a mesajul folosind cheia de sesiune si cripteaz a cheia de sesiune folosind cheia public a a destinatarului. Mesajul transmis cont ine cele dou a elemente criptate. Solut ia n varianta mbun at a tit a este aplicat a de protocolul ssh versiunea 1. Serverul are rolul lui A, gener and perechile de chei si transmit and clientului cele dou a chei publice. Clientul genereaz a cheia de sesiune si i-o trimite serverului criptat a pe r and cu cele dou a chei. 6.3.1.2. Stabilirea cheii prin metoda Die-Hellman Protocolul este urm atorul: 1. Se genenereaz a (pe o cale oarecare) un num ar prim p mare si un num ar g; 2. A alege un num ar aleator x si calculeaz a si-i transmite lui B num arul nA = g x mod p; 3. B alege un num ar aleator y si calculeaz a si-i transmite lui A num arul nB = g y mod p; 4. A si B calculeaz a cheia de sesiune k astfel: A calculeaz a k = (nB )x mod p, iar B calculeaz a k = (nA )y mod p. Cheia de sesiune calculat a de cei doi este aceea si: (g x mod p)y mod p = (g y mod p)x mod p = g xy mod p, iar calcularea lui g xy mod p cunosc and doar g , n, g x mod p si g y mod p este foarte dicil a. Ca avantaj fat a de solut ia din paragraful precedent, nu este necesar a o cheie de lung a durat a. De asemenea, aplicarea metodei Die-Hellman este
mai rapid a dec at regenerarea la ecare mesaj a unei perechi de chei pentru un cifru asimetric. Ca dezavantaj, este necesar a o comunicat ie interactiv a; protocolul Die-Hellman nu este aplicabil transmiterii mesajelor prin po st a electronic a. 6.3.1.3. Atacul man-in-the-middle Protocoalele descrise n paragrafele 6.3.1.1 si 6.3.1.2 sunt aplicabile doar n absent a unui adversar activ. Un adversar activ I se poate interpune ntre A si B astfel: comunic a cu A juc and rolul lui B pentru a stabili o cheie de sesiune k1 ; comunic a cu B juc and rolul lui A pentru a stabili o cheie de sesiune k2 ; decripteaz a mesajele trimise de A lui B (acestea ind criptate cu k1 ), le cite ste, eventual le modic a, dup a care le cripteaz a ( si eventual le autentic a) utiliz and cheia k2 . Rezultatul atacului este c aA si B cred c a comunic a ecare cu cel alalt c and de fapt ei comunic a cu I . Exist a metode, bazate pe transmiterea n fragmente a mesajelor, care mpiedic a forma pur a a atacului man-in-the-middle; totu si, n general, pentru ca A s a-l disting a pe B de un adversar este necesar ca B s a aib a o caracteristic a distinctiv a inimitabil a; o astfel de caracteristic a este cunoa sterea unei chei secrete. Ca urmare, n orice comunicat ie sigur a trebuie s a existe cel put in un pas din init ializare n care s a se transfere o cheie ntre B si A, sau ntre B si un tert de ncredere si ntre tert si A.
3. Fiecare parte trimite celeilalte o semn atur a sau o dispersie calculat a din informat iile de la punctele 1 si 2. Primul punct are ca scop obt inerea unei chei pe care s a o cunoasc a doar p art ile ntre care a avut loc schimbul de mesaje. Al doilea punct are rolul de-a asigura c a negocierea si, n consecint a, cheia rezultat a este proasp at a. Al treilea punct are rolul de-a asigura ecare parte c a mesajele de la punctele 1 si 2 au fost schimbate cu partenerul dorit. Dac a vericarea semn aturii sau dispersiei de la punctul 3 e sueaz a, nseamn a c a protocolul a fost inuent at de un adversar activ si, n consecint a, cheia negociat a este compromis a. Este esent ial deci ca, p an a n momentul n care vericarea auenticit a tii mesajelor transmise a fost efectuat a cu succes, cheia negociat a s a nu e utilizat a. Exemplul 6.5: Transmiterea unei chei prin criptare simetric a se poate face dup a cum urmeaz a. Not am cu A si B cele dou a entit a ti care comunic a, cu Kc o cheie pentru criptare simetric a, cunoscut a doar de A si de B si cu Kh o cheie pentru dispersie, de asemenea cunoscut a doar de A si de B . 1. A alege un num ar aleator rA si-l transmite lui B . 2. B alege cheia de sesiune k . Apoi calculeaz a si transmite x = cKc (k ) si s = hKh (rA k ). 3. A decripteaz a x obt in and k si veric a dispersia s. De remarcat c a, dac a transmisia cont in and cheia de sesiune k criptat a cu cheia de lung a durat a Kc este interceptat a de un adversar, iar adversarul obt ine ulterior cheia Kc , atunci adversarul poate decripta cheia de sesiune si ntreaga sesiune protejat a cu aceast a cheie. Exemplul 6.6: Stabilirea cheii de sesiune prin schimb Die-Hellman si autenticare prin semn atur a digital a se face dup a cum urmeaz a. Protocolul este, cu mici modic ari, cel utilizat de ssh versiunea 2. In cele ce urmeaz a, not am cu A si B cele dou a entit a ti, cu g si p baza si modulul din schimbul DieHellman, cu KsA si KsB cheile (secrete) de semn atur a ale lui A si B si cu KvA si KvB cheile (publice) de vericare corespunz atoare. 1. A alege dou a numere aleatoare, rA , utilizat pentru asigurarea prospet imii schimbului de chei, si xA utilizat pentru derivarea cheii prin metoda Die-Hellman. Apoi A transmite lui B numerele rA si nA = g xA mod p (unde g si p sunt parametrii pentru Die-Hellman). 2. B procedeaz a similar, aleg and rB si x B si transmit and rB si nB = x B g mod p. 3. A transmite lui B semn atura sA = hKsA (rA nA rB nB ).
4. analog, B transmite lui A semn atura sB = hKsB (rB nB rA nA ). 5. A veric a semn atura sB si, dac a se potrive ste, calculeaz a cheia de sesiune A k = nx mod p . B 6. B veric a semn atura sA si, dac a se potrive ste, calculeaz a cheia de sesiune xB k = nA mod p.
4. T transmite spre B un pachet (A, B, cKcB (k ), hKcB (k A B)) 5. A decripteaz a cheia de sesiune k si veric a dispersia, precum si numele A si B; 6. B procedeaz a la fel ca si A. Protocolul de mai sus ofer a doar autenticarea cheii; nu veric a si prospet imea acesteia. Vulnerabilitatea introdus a este dat a de faptul c a un adversar poate trimite mesajele de la pa sii 3 si 4 n locul serverului T pentru a fort a stabilirea unei chei vechi. Dac a adversarul reu se ste s a obt in a o cheie de sesiune, el poate fort a astfel stabilirea aceleia si chei, compromise, n sesiunile urm atoare. Pentru vericarea prospet imii, trebuie introduse n mesaje ni ste elemente de control al prospet imii. O prim a posibilitate, exploatat a de protocolul Kerberos, este ad augarea unei perioade de valabilitate. Perioada de valabilitate este ad augat a n mesajele transmise n pa sii 1, 3 si 4. A si B resping, n cadrul pa silor 5 si 6, cheia de sesiune dac a timpul curent este n afara perioadei de valabilitate nscrise n pachete l ang a cheie. Protocolul Kerberos mai aduce c ateva modic ari fat a de protocolul descris mai sus, una dintre ele ind aceea c a mesajul de la pasul 4 este trimis de T lui A mpreun a cu mesajul de la pasul 3, urm and ca A s a-l transmit a c atre B la deschiderea conexiunii c atre acesta. O a doua posibilitate, exploatat a de protocolul Otway-Rees, se bazeaz a pe numere aleatoare. Acesta prevede c aA si B transmit c atre T c ate un num ar aleator, iar T include num arul aleator transmis de A n mesajul de la pasul 3 si num arul aleator transmis de B n mesajul de la pasul 4. A si B veric a, n cadrul pa silor 5, respectiv 6, c a numerele aleatoare incluse n mesajul autenticat de la T sunt ntr-adev ar numerele trimise de ele. Utilizarea practic a a stabilirii cheilor cu ajutorul unui tert de ncredere se face construind un server T care creaz a chei de sesiune, la cerere, pentru toate entit a tile din ret ea. Astfel, T partajeaz a o cheie simetric a (de fapt, dou a: una pentru criptare, cealalt a pentru auteticare) cu ecare dintre entit a tile din ret ea. Intr-o ret ea mare, nu mai este posibil s a se lucreze cu un singur server T , deoarece aceasta ar cere tuturor s a aib a ncredere n administratorul serverului T . Pentru stabilirea de chei ntre orice dou a entit a ti n aceste
condit ii, se construie ste un sistem astfel: Se congureaz a mai multe servere de distribuire a cheilor, ecare entitate av and o cheie partajat a cu unul dintre aceste servere. Se congureaz a chei partajate ntre c ate dou a servere de distribuire a cheilor. Aceste chei partajate formeaz a leg aturi securizate ntre servere. Graful format de serverele de distribuire a cheilor si de leg aturile securizate trebuie s a e conex. Atunci c and o entitate A dore ste s a comunice cu o entitate B , se caut a un lant de servere, T1 ,. . . ,Tn , astfel nc at A s a aib a cheie partajat a cu T1 , T1 s a aib a cheie partajat a cu T2 , s. a. m. d. Apoi, se stabile ste, cu ajutorul lui T1 , o cheie ntre A si T2 ; cu ajutorul lui T2 se stabile ste o cheie ntre A si T3 s. a. m. d. p an a la obt inerea unei chei ntre A si B . In acest sistem, n loc s a aib a toat a lumea ncredere ntr-un singur server, ecare pereche de entit a ti care doresc s a comunice trebuie s a aib a ncredere n lant ul de servere ce particip a la stabilirea cheii.
Schema de mai sus poate cuprinde mai multe autorit a ti de certicare, din care o prim a autoritate a c arei cheie se obt ine prin transport de c atre om si un lant de autorit a ti din care ecare semneaz a certicatul urm atoareia. Pentru schimbarea cheilor, n cazul compromiterii unei chei secrete, se prev ad dou a mecanisme: expirarea cheilor. Un certicat are durat a de valabilitate limitat a; data creerii si data expir arii sunt de asemenea nscrise n certicat si semnate de autoritatea de certicare. O entitate a c arui certicat se apropie de expirare va crea o nou a pereche de chei si va solicita autorit a tii de certicare eliberarea unui nou certicat pentru noua cheie public a. Dup a expirare, un certicat nu mai este recunoscut de nimeni ca valid si nu mai este folosit. revocarea certicatelor. Se tin, pe servere accesibile public, a sa-zise certicate de revocare ale certicatelor ale c aror chei secrete se consider a compromise. Un certicat de revocare al unui certicat este un ansamblu cuprinz and datele de identicare ale certicatului revocat si semn atura autorit a tii de certicare a certicatului revocat asupra acelor date de identicare. Publicarea unui certicat de revocare pentru un certicat anunt a invalid arii certicatului original. O entitate care utilizeaz a un certicat va verica nainte, de ecare utilizare, dac a nu exist a un certicat de revocare al certicatului respectiv. Certicatul de revocare poate produs doar de c atre autoritatea de certicare emitent a sau de posesorul certicatului.
portabil a este mic a, de ordinul c atorva sute de bit i cel mult. Metoda este greu de aplicat pentru informat ii secrete, deoarece informat ia este a sat a pe ecranul sistemului surs a si ca urmare este vizibil a persoanelor din apropiere. Informat iile astfel transportate sunt de obicei dispersiile criptograce ale unor chei publice. 3. Omul inventeaz a o parol a si o introduce pe ambele sisteme. Parola este utilizat a pe post de cheie secret a. Omul este utilizat at at cu rolul de canal sigur de transport, c at si ca generator de ,,numere aleatoare. Ne vom ocupa n continuare de aspecte privind implementarea metodelor 2 si 3. Metoda 2 necesit a o scriere a unui sir de bit i ntr-o form a u sor de citit de c atre un om. Trebuie tinut cont de faptul c a omul nu poate atent simultan la un ansamblu prea mare de obiecte diferite (simboluri, grupuri de simboluri, cuvinte). Intre citirile unor astfel de grupuri, omul trebuie s a si poat a lua puncte de reper pentru a sti unde a r amas. Ca urmare, un grup de cifre sau simboluri f ar a leg atur a intre ele (adic a care nu constituie un cuv nt din vocabularul utilizatorului) nu trebuie s a e mai mare de 68 simboluri. O dispersie md5 scris a direct n hexa cuprinde 32 simboluri (cifre hexa); utilizatorul va avea nevoie s a pun a degetul pe ecran pentru a o citi. Dac a aceea si dispersie md5 este scris a ca 8 grupuri de c ate 4 cifre, cu spat iu sau alt separator ntre grupuri, devine mult mai u sor de citit. Pentru siruri mai lungi, devine necesar un al doilea nivel de grupare. O alt a metod a, mai dicil de pus n practic a, este transformarea sirului de bit i ntr-un sir de cuvinte dintr-un dict ionar standard sau ntr-un sir de silabe ce alc atuiesc cuvinte, probabil f ar a sens, dar pronunt abile. Pentru un dict ionar de 4096 cuvinte, un cuv ant codic a 12 bit i. O dispersie md5 poate scris a ca un sir de 11 cuvinte. Un astfel de sir de cuvinte poate memorat mai u sor dec at secvant a de 32 cifre hexa echivalent a. Pentru a aplica metoda 3, remarc am pentru nceput c a o parol a inventat a si memorat a de om nu poate utilizat a direct pe post de cheie. Ideal, dac a caracterele utilizate pentru parol a sunt cele 94 caractere ASCII imprimabile, parola ar avea o entropie de 6,44 bit i pe caracter. Se estimeaz a c a un text n limbaj natural nu are mai mult de 12 bit i pe caracter. O parol a ce poate memorat a rezonabil va avea o entropie cuprins a undeva ntre aceste dou a limite. Pe de alt a parte, securitatea unui sistem criptograc se bazeaz a pe faptul c a entropia cheii este de 1 bit pe cifr a binar a (vezi 6.1.3). Rezult a de aici dou a lucruri: Parola trebuie trecut a printr-un ,,concentrator de entropie nainte de-a
utilizat a ca si cheie. Acest ,,concentrator de entropie poate o funct ie de dispersie (nu neap arat criptograc a). Parola trebuie s a e sucient de lung a ( si de aleator aleas a) ca s a furnizeze efectiv bit ii de entropie necesari. O fraz a n limbaj natural, utilizat a pentru derivarea unei chei de 128 bit i, trebuie s a aib a cam 85 litere ( n jur de 20 de cuvinte). De obicei este nerezonabil s a cerem unui om s a utilizeze o parol a cu entropie sucient de mare. In acest caz, mic sorarea lungimii efective a cheii derivate din parol a trebuie compensat a prin ngreunarea ncerc arii cheilor de c atre adversar. Mai exact, protocolul ce utilizeaz a cheia derivat a din parol a trebuie modicat n a sa fel nc at s a nu permit a unui adversar s a fac a ncercarea exhaustiv a a cheilor pe ma sina lui (unde poate dispune de putere mare de calcul si nu las a urme) ci s a trebuiasc a s a contacteze una din ma sinile care cunosc cheia (ma sini care nregistreaz a tentativa si pot refuza un num ar prea mare de tentative n timp scurt). Ca terminologie, distingem tentative de spargere o-line, n care adversarul poate verica dac a o parol a este corect a utiliz and doar echipamentele proprii, si tentative de spargere on-line, n care adversarul contacteaz a serverul atacat, ncerc and s a deschid a o conexiune cu parola supus a veric arii. Dac ao cheie nu poate spart a o-line, o lungime efectiv a (entropie) de 3040 bit i este sucient a. O parol a bun a, n acest context, trebuie s a aib a doar 56 cuvinte, sau, dac a cont ine cifre si punctuat ie, 1012 caractere.
generatoare de numere pseudoaleatoare, care produc numerele prin calcule (prin urmare, numerele generate sunt deterministe), dar algoritmul de generare ,,amestec a sucient de bine numerele pentru ca sirul de numere rezultat s a par a aleator.
f (st ), unde f este o funct ie xat a. Dup a producerea unui num ar aleator, starea intern a este modicat a, pentru ca urm atorul num ar s a nu mai aib a aceea si valoare. Actualizarea st arii interne se face pe baza unei a doua funct ii, g . Avem deci st+1 = g (st ). Dac a funct iile f si g ,,amestec a sucient de bine bit ii, sirul pseudoaleator produs, (xt )tIN are propriet a ti statistice sucient de apropiate de numerele cu adev arat aleatoare. De remarcat c a ntregul sir depinde de valoarea st arii init iale s0 a generatorului; pentru aplicat ii non-criptograce si pentru teste, acest lucru este bun deoarece face comportamentul programelor reproductibil. De asemenea, trebuie remarcat c a, deoarece, n practic a, mult imea st arilor interne posibile este nit a, mai devreme sau mai t arziu starea intern a se repet a si, ca urmare, ntregul sir pseudoaleator este periodic. Perioada sirului pseudoaleator este cel mult egal a cu num arul de st ari interne posibile. Pentru o funct ie g cu comportament apropiat de o funct ie aleatoare sau de o permutare aleatoare, perioada sirului este de ordinul r ad acinii p atrate din num arul de st ari interne posibile. Pentru scopuri criptograce, sunt necesare c ateva propriet a ti suplimentare: Un adversar care cunoa ste funct iile f si g utilizate si cunoa ste o parte dintre elementele sirului pseudoaleator (xt ) s a nu poat a calcula alte elemente ale sirului pseudoaleator. O condit ie necesar a pentru aceasta este ca funct ia f s a e rezistent a la preimagine. O alt a condit ie necesar a este ca mult imea st arilor interne posibile s a e sucient de mare pentru ca explorarea ei prin fort a brut a s a nu e posibil a practic. Starea init ial a s0 trebuie s a e creat a pornind de la un generator zic. In caz contrar, starea init ial a este previzibil a pentru un adversar si, ca urmare, ntregul sir este previzibil. Este bine ca, dac a un adversar reu se ste s a obt in a starea intern a st , s a nu poat a calcula numerele pseudoaleatoare deja generate (adic a x0 . . . xt1 ). Aceast lucru este util pentru ca, dac a un adversar reu se ste s a spagr a un calculator, s a nu poat a decripta comunicat iile anterioare. Pentru a ndeplini aceast a cerint a, este necesar ca si g s a e rezistent a la preimagine. Generatoarele de numere pseudoaleatoare utilizate n practic a nu se bazeaz a pe generatoare zice doar pentru starea init ial a s0 , ci modic a starea
intern a si n timpul funct ion arii generatorului, pe m asur a ce obt in bit i aleatori de la generatorul zic. Acest lucru are scopul ca, dac a un adversar reu se ste s a obt in a starea intern a la un moment dat sau s a ae starea intern a init ial a, s a nu poat a prevedea dec at o mic a parte dintre numerele aleatoare produse ulterior. De asemenea, starea init ial a nu este generat a la pornirea calculatorului, ntruc at, de obicei, n acel moment nu sunt disponibili prea mult i bit i aleatori de la generatoarele zice. Starea intern a este salvat a la oprirea calculatorului, ntr-un sier ce nu poate citit de utilizatorii obi snuit i, si re nc arcat a la pornirea calculatorului.
criptograc a h rezistent a la preimagine. In baza de date este stocat a n locul parolei p transformata parolei s = h(p). La conectarea unui utilizator, sistemul cere parola utilizatorului si veric a, pentru parola introdus a p , dac a h(p ) = s. Deoarece h este rezistent a la preimagine, probabilitatea ca un adversar, care nu cunoa ste parola p, s a g aseasc a o parol a p satisf ac and h(p ) = s este neglijabil de mic a. Solut ia are n continuare o sl abiciune, legat a de faptul c a un adversar care obt ine s poate obt ine p printr-un dict ionar creat o-line: adversarul ia o mult ime de parole si, pentru ecare parol a, calculeaz a si memoreaz a dispersia, obt in and astfel un dict ionar care asociaz a dispersiei parola corespunz atoare. Inarmat cu un astfel de dict ionar, un adversar care obt ine s poate reg asi foarte rapid p dac a p era n dict ionarul ncercat. Metoda de mai sus poate mbun at a tit a, mpiedic and crearea unui dict ionar de dispersii si oblig and adversarul s a fac a toat a munca de spargere a parolelor dup a obt inerea lui s. Conform noii metode, la init ializarea parolei, sistemul genereaz a un num ar aleator r si scrie n sierul de parole perechea (r, s) unde s = h(p r). Vericarea parolei p dat a de utilizator se face test and dac a s = h(p r). Un adversar care ar dori s a fac a un dict ionar ar avea nevoie de un num ar de dispersii egal cu produsul dintre num arul de parole de ncercat si num arul de valori posibile pentru r. Not am c a, indiferent de mecanismul folosit la stocarea parolelor, un adversar ce a spart un sistem, sau un administrator indiscret, va putea ntotdeauna s a obt in a parola cu care se conecteaz a un utilizator la acel sistem. De exemplu, adversarul poate nlocui programul obi snuit de login cu un program care scrie undeva parola n clar. Schemele de mai sus protejeaz a doar parolele neutilizate dup a momentul spargerii sistemului. Mai not am c a, n vederea transmiterii parolei prin ret ea, transform arile descrise mai sus nu pot nlocui criptarea ,,adev arat a. Dac a, n vederea autentic arii utilizatorului, serverul cere h(p) ( n loc de p), atunci h(p) devine efectiv parola de conectare prin ret ea si orice adversar care cunoa ste h(p) poate impersona utilizatorul, f ar a a avea nevoie de p
mise trebuie s a r am an a secrete; un adversar activ poate ,,deturna conexiunea dup a deschidere si poate da orice comenzi n numele utilizatorului conectat. Unul dintre sistemele de parole de unic a folosint a este descris n continuare. In cele ce urmeaz a, h este o dispersie rezistent a la preimagine, iar hn (x) = h(h(. . . h(x) . . .)). 1. Utilizatorul alege o parol a primar a, de lung a durat a, p . 2. La init ializarea parolei pe sistem, sistemul genereaz a si a seaz a un num ar aleator, nesecret, r. De asemenea, sistemul a seaz a un num ar de iterat ii, n, precongurat (uzual n = 10000). 3. Utilizatorul calculeaz a, cu ajutorul unui dispozitiv de calcul de ncredere, pn = hn (p r). Apoi transmite pn sistemului pe care dore ste s a- si congureze autenticarea. 4. Sistemul memoreaz a n baza de date ansamblul (pn , n, r). 5. La prima conectare, sistemul a seaz a r si n 1 si cere utilizatorului s a calculeze si s a introduc a parola de unic a folosint a pn1 = hn1 (p r). Sistemul veric a parola de unic a folosint a test and dac a h(pn1 ) = pn . Apoi sistemul nlocuie ste n baza de date (pn , n, r) cu (pn1 , n 1, r). Un avantaj al sistemului este faptul c a parola primar a p este cunoscut a doar de c atre dispozitivul utilizat pentru calculul parolelor de unic a folosint a. In particular, calculatorul care autentic a utilizatorul nu obt ine niciodat a si nici nu poate deduce parola primar a. Administratorul unui astfel de calculator nu poate impersona utilizatorul pe un alt calculator pe care utilizatorul utilizeaz a aceea si parol a primar a. Dezavantajul sistemului, fat a de parola clasic a, este c a utilizatorul are nevoie de un dispozitiv de calcul n vederea calcul arii parolelor de unic a folosint a. Proceduri de lucru pentru utilizator pot : Utilizatorul ruleaz a local un program pentru calculul parolelor de unic a folosint a. Aceast a metod a este aplicabil a doar dac a utilizatorul are deplin a ncredere n calculatorul local. Utilizatorul calculeaz a, cu ajutorul unui calculator de ncredere, urm atoarele 45 parole de unic a folosint a si le noteaz a pe h artie. Ca de obicei, scrierea parolelor pe h artie implic a un risc, ns a aarea parolelor de c atre un adversar nu permite dec at deschiderea unui num ar mic de sesiuni si mai ales nu permite aarea, de c atre adversar, a parolei primare. Utilizatorul folose ste un dispozitiv de calcul dedicat. Aceasta este metoda cea mai sigur a, dar si cea mai scump a.
Radu-Lucian Lup sa
Cuprins
Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de ret ea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei ret ele de calculatoare . . . . . . . . . . 1.3 Premise generale n elaborarea si implementarea protocoalelor n ret ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Not iuni de teoria informat iei 2.1 Problema codic arii informat iei pentru un canal discret . . 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a a codurilor prex . . . . . 2.2.2 Decodicarea n cazul codurilor prex . . . . . . . . . 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informat ie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia sierelor . . . . . . . . . . . . . . . . . . . 2.4 Coduri detectoare si corectoare de erori . . . . . . . . . . . 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare si corectoare de erori . 2.4.3 C ateva coduri detectoare sau corectoare de erori . . . 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii si coloane . . . . . . . . . . . . . 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare si corectoare de erori n alte domenii 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Protocoale
Cuprins 7 Codic ari de interes practic 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezent ari pe bit i . . . . . . . . . . . . . . . . . . . . . . 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 S iruri de bit i . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe bit i a numerelor ntregi . . . . . . . 7.1.2 Reprezent ari pe octet i . . . . . . . . . . . . . . . . . . . . . 7.1.2.1 Octet i . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 S iruri de octet i . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un num ar ntreg de octet i 7.1.2.4 Reprezentarea numerelor pe un sir arbitar de bit i . . . 7.1.3 Probleme privind reprezentarea lungimii sirurilor . . . . . . 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
Ret ele IEEE 802 9.1 Ret ele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Leg aturi punct la punct prin perechi de conductoare 9.1.2 Leg aturi prin bre optice . . . . . . . . . . . . . . . 9.1.3 Leg aturi prin cablu magistral a . . . . . . . . . . . . 9.1.4 Repetoarele si comutatoarele . . . . . . . . . . . . . 9.1.5 Dirijarea efectuat a de comutatoare (switch-uri) . . . 9.1.6 Facilit a ti avansate ale switch-urilor . . . . . . . . . . 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz a de adrese MAC . . . . . . . . 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Leg aturi redundante . . . . . . . . . . . . . . . 9.1.6.5 Ret ele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei ret ele . . . . . 9.2 Ret ele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea ret elelor 802.11 . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
10 Internetul 10.1 Arhitectura ret elei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirij arii pachetelor IP . . . . . . . . 10.2.2.1 Subret ele si interfet e . . . . . . . . . . 10.2.2.2 Prexul de ret ea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor si prexelor . . 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de ret ea . . . . . . . 10.2.4 Alocarea adreselor IP si prexelor de ret ea 10.2.4.1 Alocarea pe utiliz ari . . . . . . . . . . 10.2.4.2 Alocarea adreselor si dirijarea ierarhic a
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Capitolul 7
7.1.1.1. Bitul Pentru reprezentarea diverselor date, alegerea unui alfabet cu dou a simboluri este avantajoas a din dou a motive. Pe de o parte, este cel mai mic alfabet posibil, ca urmare alegerea unui alfabet cu dou a elemente aduce o anumit a simplitate si naturalet e construct iei matematice. Pe de alt a parte, din punct de vedere practic, al construct iei echipamentelor zice, dispozitive cu dou a st ari stabile sunt mult mai u sor de construit dec at dispozitive cu mai multe st ari. In scris, cele dou a simboluri sunt notate n mod obi snuit cu 0 si 1. Atragem atent ia c a: Alegerea celor dou a simboluri utilizate, precum si a corespondent ei dintre starea dispozitivului zic si simbolul asociat, poate f acut a oricum. Odat a ns a f acut a o alegere, aceasta trebuie respectat a de toate entit a tile implicate n comunicat ie. Numai n unele cazuri simbolurile au rol de cifr a, adic a au asociate valori numerice. Valoarea numeric a a unui simbol este important a doar dac a simbolul este interpretat ca num ar sau intr a n reprezentarea unui num ar. In restul cazurilor, este important doar s a existe simboluri distincte. Un simbol dintr-un alfabet cu dou a elemente se nume ste bit, de la binary digit (rom. cifr a binar a ). 7.1.1.2. S iruri de bit i In cadrul unui sir de bit i, avem nevoie s a identic am ecare bit al sirului. Pentru aceasta, se stabile ste o ordine a bit ilor: avem un prim bit, un al doilea bit, etc. Trebuie remarcat ns a c a ordinea este o convent ie: nu exist ao leg atur a direct a ntre ordinea convent ional a a unui sir de bit i si amplasamentul dispozitivelor zice care memoreaz a acei bit i. Num arul de ordine al unui bit, n cadrul acestei ordini convent ionale, se nume ste n mod obi snuit pozit ia (sau, eventual, adresa sau deplasamentul ) bitului. Numerotarea pozit iilor se face de obicei ncep and de la 0 sau de la 1; n cele ce urmeaz a vom utiliza numerotarea de la 0. La transmiterea unui sir de bit i, este natural ca primul bit transmis, consider and ordinea cronologic a, s a e primul bit al sirului (pozit ia 0). La memorarea unui sir ntr-o memorie cu acces direct (memorie RAM sau sier pe disc), este natural ca n celula cu adresa cea mai mic a, dintre celulele alocate sirului, s a e plasat primul bit al sirului (bitul de pe pozit ia 0). In acest fel, primul bit al unui sir nseamn a, simultan, bitul de pe pozit ia (convent ional a) 0, bitul transmis primul (cronologic) si bitul memorat la adresa cea mai mic a.
7.1.1.3. Reprezentarea pe bit i a numerelor ntregi Reprezentarea numerelor naturale prin siruri de bit i se bazeaz a pe ceea ce matematicienii numesc reprezentare pozit ional a n baza 2, pe care o presupunem cunoscut a. In reprezentarea ntr-o baz a de numerat ie, distingem cifra unit a tilor, av and ponderea 20 = 1, cifra de pondere 21 = 2 ( n baza zece s-ar numi cifra zecilor; pentru baza 2 nu avem un nume), cifra de pondere 22 = 4, etc. Exist a dou a alegeri posibile cu privire la leg atura dintre ponderile cifrelor n num ar si pozit iile lor n sir: 1. Primul bit al sirului este cifra de pondere maxim a. Aceasta alegere este identic a celei utilizate n scrierea numerelor n limbile ,,obi snuite (indo-europene), cu scriere de la st anga spre dreapta. Se mai nume ste big endian. In aceast a schem a de reprezentare, un sir de bit i b0 b1 . . . bn1 reprezint a num arul b0 2n1 + b1 2n2 + . . . + bn1 20 . 2. Primul bit al sirului este cifra de pondere 1. Aceast a reprezentare este asem an atoare scrierii numerelor n limbile semite (araba si ebraica, cu scriere de la dreapta spre st anga si unde numerele sunt scrise tot cu cifra unit a tilor n dreapta). Se mai nume ste little endian. Aceast a alegere are avantajul unei scrieri mai simple a relat iei dintre valoarea num arului si sirul de bit i: valoarea unui num ar reprezentat pe n bit i este b0 20 + b1 21 + . . . + bn1 2n1 . Fiind dou a scheme de reprezentare distincte, dac a un sistem transmite un num ar n reprezentare little endian, iar cel alalt sistem interpreteaz a sirul de bit i primit ca ind ntr-o reprezentare big endian, receptorul ,, nt elege alt num ar dec at cel transmis de emit ator. Ca urmare, orice protocol care specic a transmitere binar a a numerelor trebuie s a precizeze dac a se utilizeaz ao reprezentare little endian sau una big endian. Exemplul 7.1: Fie sirul de bit i 11001, n care am scris primul bit ( n sensul din 7.1.1.2) pe pozit ia cea mai din st anga. Dac a acest sir este reprezentarea big endian a unui num ar, num arul respectiv este 25. Dac a reprezentarea a fost f acut a n format little endian, num arul este 19.
Este important de remarcat c a distinct ia dintre schema de reprezentare big endian si schema little endian exist a numai acolo unde pe de o parte avem o ordine a a bit ilor dat a de adresele lor n memorie sau de ordinea cronologic a la transmiterea lor prin mediul zic, iar pe de alt a parte ecare bit are o anumit a pondere n reprezentarea unui num ar ntreg.
primele sau cu ultimele pozit ii. Aceste operat ii sunt efectuate de unitatea aritmetic a din microprocesorul calculatorului. 2. Operat ii pentru care bit ii sunt identicat i dup a num arul lor de ordine sau, echivalent, octetul este privit ca un sir arbitrar de bit i, f ar a a avea asociat a o valoare numeric a. Aici intr a transmiterea bit cu bit (transmitere serial a) a unui octet. Aceast a operat ie este efectuat a de placa de ret ea si de alte adaptoare seriale (de exemplu, adaptoarele USB). Tot aici s-ar ncadra, dac a ar exista, o operat ie de obt inere sau de modicare a unui bit (al octetului) identicat prin num arul s au de ordine. O asemenea operat ie nu este oferit a, n mod normal, ntr-un sistem de calcul nu exist a o instruct iune care s a extrag a, de exemplu, bitul num arul 5 dintr-un octet. 3. Operat ii care pot denite e identic and bit ii dup a ponderea lor, e identic and bit ii dup a num arul lor de ordine. In aceast a categorie se ncadreaz a transmiterea unui octet ca un tot unitar, vericarea egalit a tii a doi octet i si operat iile logice pe bit ( si, sau, sau exclusiv si negat ia). Pentru oricare dintre aceste operat ii, dac a denim operat ia identic and bit ii dup a num arul lor de ordine, efectul ei asupra valorii numerice a octetului nu depinde de corespondent a aleas a ntre pozit iile bit ilor si ponderile lor. In aceste condit ii, n interiorul unui calculator, bit ii din cadrul unui octet sunt identicat i dup a ponderea lor. In construct ia calculatorului, proiectantul are grij a ca atunci c and un bit av and, ntr-un modul al calculatorului, o anumit a pondere este transferat c atre alt modul al calculatorului, s a ajung a acolo pe o pozit ie cu aceea si pondere. La transmisia unui octet ntre dou a sisteme de calcul, mecanismele de transmisie sunt astfel construite nc at s a transmit a valoarea octetului. Intruc at, prin mediul zic al ret elei, bit ii sunt transmi si secvent ial, bit ii unui octet sunt aici identicat i prin num arul lor de ordine in cadrul transmisiei. Pentru a p astra valoarea octetului n timpul transmisiei prin mediul ret elei, corespondent a dintre num arul de ordine al unui bit si ponderea sa (little endian sau big endian ) trebuie s a fac a parte din specicat iile protocolului de nivel zic al ret elei. Numerotarea bit ilor unui octet intervine, de asemenea, n descrierea unor scheme de reprezentare a datelor unde un num ar este reprezentat pe un grup de bit i ce nu formeaz a un num ar ntreg de octet i. Este cazul schemelor de reprezentare pentru structuri de date ce cont in c ampuri de 1 bit, 2 bit i, 12 bit i, etc. S i aici este necesar s a se specice dac a numerotarea bit ilor este little
endian sau big endian. Mai multe detalii despre astfel de reprezent ari vor studiate n 7.1.2.4. 7.1.2.2. S iruri de octet i Ca si n cazul bit ilor (vezi 7.1.1.2), si cu octet ii putem construi siruri. In cadrul unui sir de octet i, octet ii sunt a sezat i ntr-o ordine, exist and un prim octet (numerotat ca octetul 0), al doilea octet (pozit ia 1), etc. La transmisia printr-o leg atur a n ret ea, primul octet al sirului este, cronologic, primul octet transmis. La memorare, primul octet este cel memorat la adresa cea mai mic a. In virtutea celor dou a moduri de-a privi un octet, un sir de n octet i poate , la r andul lui, privit ca: un sir de 8n bit i, un sir de n numere, ecare cuprins ntre 0 si 255. Pentru a putea privi un sir de n octet i ca un sir de 8n bit i, este necesar s a avem o numerotare, bine denit a, a bit ilor n cadrul unui octet. Rezult a un sir de bit i n care ntre pozit ia pB a unui bit n sirul de 8n bit i, pozit ia pBO a bitului n cadrul octetului n care se g ase ste si pozit ia pO a acelui octet n sirul de octet i are loc relat ia: pB = 8 pO + pBO . (7.1)
Relat ia de mai sus are aceast a form a simpl a dac a se utilizeaz a numerotare de la 0; pentru numerotarea de la 1, forma relat iei e mai complicat a. Transmiterea unui sir de octet i printr-o conexiune, precum si memorarea sirului ntr-un sier pe disc urmat a de citirea lui napoi n memorie, p astreaz a ordinea si valorile octet ilor din sir. Valorile octet ilor sunt p astrate dac a privim octet ii ca numere ntre 0 si 255; dac a privim octet ii ca siruri de 8 bit i, valorile octet ilor se p astreaz a numai dac a pe ambele sisteme utiliz am aceea si corespondent a ntre numerele de ordine si ponderile bit ilor. 7.1.2.3. Reprezentarea numerelor pe un num ar ntreg de octet i Cel mai mare num ar ce poate reprezentat pe un octet este 255, ceea ce este mult prea put in pentru majoritatea aplicat iilor. Pentru a putea reprezenta numere din intervale mai largi, sunt necesare scheme de reprezentare pe mai mult de 8 bit i. Schemele cele mai simple sunt cele care utilizeaz a un num ar ntreg de octet i; acestea vor prezentate n continuare. Schemele de reprezentare ce utilizeaz a siruri de bit i ce nu formeaz a neap arat un num ar ntreg de octet i vor studiate n 7.1.2.4.
Deoarece un octet are valoarea ntre 0 si 255, putem considera ecare octet ca ind o cifr a n baza 256. Reprezentarea unui num ar printr-un sir de octet i se face ca reprezentare pozit ional a n baza 256. Exist a dou a reprezent ari posibile: little endian : primul octet are ponderea 1, al doilea octet are ponderea 256, al treilea octet are ponderea 2562 = 65536, etc. big endian : primul octet are ponderea 256n1 (unde n este num arul de n 2 octet i ai reprezent arii), al doilea octet are ponderea 256 s. a. m. d., penultimul octet are ponderea 256, iar ultimul octet are ponderea 1. Reamintim c a prin primul octet nt elegem octetul care este transmis primul, n ordine cronologic a, de la un dispozitiv la altul si, totodat a, octetul memorat la adresa cea mai mic a. Exemplul 7.2: Descriem mai jos reprezentarea num arului 300 n schemele de reprezentare little endian si big endian, pe 2 si pe 4 octet i. Pentru ecare dintre aceste patru scheme de codicare, este dat sirul de octet i ce reprezint a num arul 300. pozit ie octet (nr. ordine) 0 1 2 3 Valorile octet ilor pentru diverse reprezent ari 2 octet i 2 octet i 4 octet i 4 octet i big endian little endian big endian little endian 1 44 0 44 44 1 0 1 1 0 44 0
De exemplu, n cadrul reprezent arii pe 2 octet i n format big endian, valoarea num arului reprezentat se reg ase ste ca valoarea octetului 0 nmult it a cu 256 plus valoarea octetului 1, anume: 1 256 + 44 = 300. In cadrul reprezent arii pe 4 octet i n format little endian, octetul 0 are ponderea 2560 = 1, octetul 1 are ponderea 2561 = 256, octetul 2 are ponderea 2562 = 65536, iar octetul 3 are ponderea 2563 = 16218368. Valoarea num arului reprezentat este 44 1 + 1 256 + 0 2562 + 0 2563 = 300
Unitatea aritmetic a a calculatorului poate efectua operat ii aritmetice asupra numerelor reprezentate pe 2 octet i sau, pentru unele calculatoare, pe 4 sau 8 octet i. Pe unele calculatoare, unitatea aritmetic a lucreaz a cu numere reprezentate dup a sistemul big endian ; pe alte calculatoate, unitatea
aritmetic a cere reprezentare little endian. Dup a acest criteriu, calculatoarele ale c aror unit a ti aritmetice lucreaz a cu numere reprezentate pe mai mult de un octet se mpart n calculatoare little endian si calculatoare big endian. Variabilele de tip ntreg, n majoritatea limbajelor de programare, sunt reprezentate pe 2, 4 sau 8 octet i, n ordinea xat a de unitatea aritmetic a. Este posibil a utilizarea, pentru anumite variabile ntregi, a unei reprezent ari diferite de cea a unit a tii aritmetice. De asemenea, se pot utiliza reprezent ari pe mai mult i octet i dec at permite unitatea aritmetic a. La manipularea acestor variabile, programatorul trebuie s a aib a n vedere c a operat iile aritmetice ,,normale e nu pot executate deloc, e nu se efectueaz a corect asupra lor. Astfel de numere se manipuleaz a, de obicei, prelucr and separat ecare octet. La memorarea pe disc sau la transmiterea printr-o conexiune, trebuie stabilit printr-un standard dac a se utilizeaz a un format little endian sau big endian, precum si num arul de octet i pe care se reprezint a ecare num ar memorat sau, respectiv, transmis. Majoritatea protocoalelor pentru Internet prev ad formate big endian pentru numerele ntregi transmise. Multe dintre formatele de siere prev ad formate little endian. Exist a si formate (de exemplu, formatul TIFF pentru imagini, formatele UTF-16 si UTF-32 pentru texte) care permit emit atorului s a aleag a formatul dorit si prev ad un mecanism prin care emit atorul informeaz a receptorului despre alegerea f acut a. Dac a formatul de pe disc sau de pe conexiune coincide cu formatul unit a tii aritmetice locale, un program poate transfera direct siruri de octet i ntre o variabil a ntreag a local a si sierul de pe disc sau, respectiv, conexiunea spre cel alalt calculator. Dac a formatul de pe disc sau de pe conexiune este invers fat a de cel local, un program care transfer a date trebuie s a inverseze ordinea octet ilor imediat nainte de scrierea pe disc sau de trimiterea pe conexiune, precum si imediat dup a citirea de pe disc sau recept ionarea de pe conexiune. 7.1.2.4. Reprezentarea numerelor pe un sir arbitar de bit i Ne vom ocupa n continuare de metode de reprezentare, pentru numere ntregi, n care bit ii ce intr a n reprezentarea unui num ar nu formeaz a neap arat un num ar ntreg de octet i. O astfel de schem a este o generalizare a schemei prezentate n paragraful precedent. O astfel de metod a de reprezentare se bazeaz a pe reprezentarea numerelor n baza 2 (vezi si 7.1.1.3). Pentru ca o astfel de schem a s a e complet denit a, este necesar s a e stabilit a (standardizat a) corespondent a dintre pozit ia ec arui bit din reprezentare si ponderea asociat a. In descrierea
unei astfel de scheme de reprezentare, trebuie precizate trei lucruri: dac a reprezentarea num arului prin sirul de bit i se face dup a metoda big endian sau little endian ; dac a numerotarea bit ilor n cadrul ec arui octet se face ncep and de la bitul de pondere 1 (adic a valoarea octetului este reprezentat a dup a schema little endian ) sau ncep and de la bitul de pondere 128 (adic a valoarea octetului este reprezentat a dup a schema big endian ). dac a numerotarea bit ilor n cadrul sirului de bit i se face dup a relat ia (7.1) sau dup a o alt a metod a. Intr-o schem a de reprezentare ,,rat ional a, la primele dou a puncte se utilizeaz a e formatul big endian pentru am andou a, e formatul little endian pentru am andou a, iar la punctul al treilea se utilizeaz a relat ia (7.1). Rezult a astfel dou a metode coerente: big endian. In aceast a metod a, numerotarea bit ilor ncepe cu cel mai semnicativ bit al primului octet, iar dup a cel mai put in semnicativ bit al primului octet urmeaz a cel mai semnicativ bit al celui de-al doilea octet. Orice num ar, indiferent pe c a ti bit i s-ar reprezenta, se reprezint a n format big endian. little endian. In aceast a metod a, numerotarea bit ilor ncepe cu cel mai put in semnicativ bit al primului octet, iar dup a cel mai semnicativ bit al primului octet urmeaz a cel mai put in semnicativ bit al celui deal doilea octet. Orice num ar, indiferent pe c a ti bit i s-ar reprezenta, se reprezint a n format little endian. In cadrul acestor dou a metode, dac a reprezent am un num ar folosind un sir de bit i ce formeaz a un num ar ntreg de octet i, formatele de reprezentare rezultate coincid cu formatele de reprezentare pe octet i studiate n paragraful precedent. Exemplul 7.3: Consider am o schem a de reprezentare pentru dou a numere ntregi, a si b, n care a se reprezint a pe 4 bit i si b se reprezint a pe 12 bit i. In total avem 4 + 12 = 16 bit i, adic a 2 octet i. Dac a alegem metoda big endian, schema de reprezentare va utiliza cei mai semnicativi 4 bit i ai primului octet pentru a-l reprezenta pe a, ceilalt i 4 bit i ai primului octet vor cei mai semnicativi 4 bit i ai lui b, iar cel de-al doilea octet va cont ine cei mai put in semnicativi 8 bit i din b. Aceast a schem a de reprezentare este ilustrat a n gura 7.1, cu valori concrete a = 11 si b = 300. Dac a alegem metoda little endian, schema de reprezentare va utiliza cei mai put in semnicativi 4 bit i ai primului octet pentru a-l reprezenta pe a, ceilalt i 4 bit i ai primului octet vor cei mai put in semnicativi 4 bit i ai lui b,
iar cel de-al doilea octet va cont ine cei mai semnicativi 8 bit i din b. Aceast a schem a de reprezentare este ilustrat a n gura 7.2, cu valori concrete a = 11 si b = 300.
b0 1 b1 0 b2 1 b3 1 Nr. octet 0 1 c0 1 0 c1 0 0 c2 1 1 b4 0 b5 0 b6 0 b7 1 b8 0 b9 0 b10 1 b11 0 b12 1 b13 1 b14 0 b15 0
Valoare (binar) c3 c4 1 0 0 1
(b) Valorile octet ilor. La scrierea valorilor bit ilor n octet (coloana din mijloc) s-a utilizat convent ia obi snuit a, de-a scrie cifrele mai semnicative n st anga.
Figura 7.1: Reprezentare big endian pentru num arul 11 pe 4 bit i urmat de num arul 300 reprezentat pe 12 bit i (exemplul 7.3).
b0 1
b1 1
b2 0
b3 1 Nr. octet 0 1
b4 0
b5 0
b6 1
b7 1
b8 0
b9 1
b10 0
b11 0
b12 1
b13 0
b14 0
b15 0
c7 1 0
c6 1 0
c5 0 0
Valoare (binar) c4 c3 0 1 1 0
(b) Valorile octet ilor. La scrierea valorilor bit ilor n octet (coloana din mijloc) s-a utilizat convent ia obi snuit a, de-a scrie cifrele mai semnicative n st anga.
Figura 7.2: Reprezentare little endian pentru num arul 11 pe 4 bit i urmat de num arul 300 reprezentat pe 12 bit i (exemplul 7.3).
Un alt exemplu n care avem de-a face cu numere reprezentate pe siruri arbitrare de bit i este legat de a sa-zisa codicare n baza 64, descris a n 7.4.2.
indiferent de natura obiectelor: bit i, octet i, cifre zecimale, caractere ale unui text, numere n cadrul unui sir de numere. Exist a trei metode de a face ca receptorul s a poat a determina num arul de obiecte ce-i sunt transmise: Num arul de obiecte este xat. In acest caz, indiferent de valorile datelor ce se transmit, num arul de obiecte transmise este acela si. Metoda este utilizat a frecvent la memorarea unui sir n memoria RAM sau pe disc, deoarece permite alocarea de la nceput a memoriei pentru reprezentarea lui si permite accesul direct la datele memorate dup a sirul n discut ie. Dezavantajul principal al metodei este acela c a dimensiunea xat a trebuie astfel aleas a nc at s a e sucient a n orice caz ce poate s a apar a la execut ie. De asemenea, trebuie s a existe o valoare potrivit a pentru pozit iile ,,neutilizate din sir; de exemplu, n reprezentarea numerelor, pozit iile cele mai semnicative se completeaz a cu zerouri. Deoarece la transmisia printr-o conexiune nu se poate pune problema accesului direct (adic a altfel dec at secvent ial) la date, metoda este put in utilizat a n transmisia datelor prin ret ea. S iruri de lungime x a se utilizeaz a la reprezentarea binar a a numerelor. Num arul de obiecte este transmis separat, n fat a sirului. Aceast a metod a u sureaz a munca receptorului, care stie exact ce s a astepte si poate aloca memorie pentru recept ionarea datelor. In schimb, munca emit atorului este complicat a prin faptul c a acesta trebuie s a cunoasc a de la nceput num arul de obiecte din sir. Acest fapt face metoda inaplicabil a n anumite situat ii. Transmiterea de la nceput a num arului de obiecte este utilizat a, de exemplu, de protocolul HTTP ( 11.3.2) la transmiterea, de c atre server, a cont inutului paginii cerute de client. Serverul transmite nt ai num arul de octet i ai paginii si apoi sirul de octet i ce formeaz a pagina. Dup a ultimul obiect din sirul propriu-zis, se transmite o valoare special a, cu rol de terminator. Aceast a metod a u sureaz a munca emit atorului, care poate s a nceap a transmiterea sirului nainte de-a sti c ate elemente are, n schimb ngreuneaz a munca receptorului, care trebuie s a citeasc a elementele sirului unu c ate unu si s a verice dac a nu a nt alnit terminatorul. De asemenea, trebuie xat a valoarea terminatorului, care trebuie s a e o valoare reprezentabil a n formatul pentru element, dar care nu apare niciodat a ca valoare a unui element valid. Metoda este utilizat a frecvent n transmiterea unui sir de caractere. Rolul de terminator poate acordat caracterului null (caracterul cu codul ASCII zero), caracterului newline (sf ar sit de r and), caracterului
spat iu, etc. Orice alegere s-ar face, caracterul sau caracterele astfel alese pentru a marca sf ar situl unui sir nu pot s a apar a n sirul propriu-zis. Ca urmare, transmiterea unui sier cu cont inut arbitrar ( sir de octet i cu valori arbitrare) nu se poate face prin metoda cu terminator (dec at dac a un octet al sierului se codic a pe mai mult de 8 bit i).
Exemplul 7.4: Red am mai jos reprezent arile text ASCII terminat cu spat iu, BCD big endian pe 4 octet i si BCD little endian pe 4 octet i, pentru num arul 300. Valorile octet ilor sunt scrise n baza 2, bitul cel mai semnicativ ind scris n st anga. pozit ie octet (nr. ordine) 0 1 2 3 Valorile octet ilor BCD BCD big endian little endian 00000000 00000000 00000000 00000011 00000011 00000000 00000000 00000000
c autarea unui cuv ant, extragerea unor cuvinte sau unor fragmente de text si diverse alte operat ii de analiz a a textului; sortarea alfabetic a. De notat c a regulile de sortare alfabetic a sunt complexe si depind de limb a. De exemplu, n limba rom an a, literele cu diacritice sunt considerate imediat dup a literele f ar a diacritice. Urm atoarele cuvinte sunt sortate alfabetic: sac, suc, siret ; de notat c a orice cuv ant ce ncepe cu s este sortat dup a toate cuvintele ce ncep cu s. In francez a, ns a, literele cu diacritice sunt considerate, n prima faz a, echivalente cu cele f ar a diacritice, intervenind n ordinea alfabetic a doar pentru cuvinte care difer a doar prin diacritice. Exemplu: et e, etre, etude ; de notat c a apar amestecate cuvinte ce ncep cu e si e. Majoritatea codic arilor sunt bazate pe reprezentarea una dup a alta a literelor (caracterelor) ce formeaz a cuvintele textului. Codic arile caracterelor sunt de obicei descrise n dou a etape. In prima etap a, ec arui caracter i este asociat un num ar ntreg pozitiv, numit codul caracterului. In a doua etap a, ec arui cod de caracter i este asociat ao codicare ca sir de bit i sau ca sir de octet i. Pentru o schem a de codicare trebuie a sadar specicate trei elemente: setul de caractere; numerotarea (codicarea) caracterelor; reprezentarea pe bit i sau pe octet i a codurilor caracterelor.
(celelalte) caractere imprimabile au codurile cuprinse ntre 33 si 126. Pentru a u sura sortarea alfabetic a, codurile sunt grupate astfel: literele mari de la 65 (41 hexa) pentru A la 90 (5A hexa) pentru Z; literele mici de la 97 (61 hexa) pentru a la 122 (7A hexa) pentru z; cifrele de la 48 (30 hexa) pentru 0 la 57 (39 hexa) pentru 9. De remarcat si c a diferent a dintre codul oric arei litere mici si codul literei mari corespunz atoare este 32 (20 hexa). Pentru reprezentarea unui caracter ASCII sunt necesari doar 7 bit i, ns a cel mai adesea un caracter ASCII se reprezint a pe un octet, al c arui cel mai semnicativ bit este ntotdeauna 0. Datorit a faptului c a pe de o parte caracterele ASCII se reprezint a pe un octet, iar pe de alt a parte c a dintre caracterele de control multe nu sunt utilizate deloc n majoritatea aplicat iilor, r am an multe coduri reprezentabile (cca. 140) care nu sunt utilizate. Se poate extinde setul de caractere, asociind noilor caractere coduri ntre 128 si 255 sau coduri ntre 0 si 31 a c aror caractere corespunz atoare nu sunt folosite efectiv. Toate aceste codic ari rezultate se numesc generic seturi ASCII extinse.
Caracter A A I S T
Cod (hexa) E3 E2 EE BA FE
Tabelul 7.1: Caracterele cu diacritice din alfabetul limbii rom ane si codic arile ISO-8859-2 corespunz atoare
ASCII si codurile asociate caracterelor comune cu setul ASCII coincid cu codurile ASCII. Ca urmare, un text ASCII este ntotdeauna interpretat corect ca text ISO-8859-n. Pe de alt a parte, un text scris n ISO-8859-n si interpretat ca ISO-8859-m va evident interpretat gre sit. Ordinea numeric a a codurilor din oricare dintre codic arile ISO-8859 este diferit a de ordinea alfabetic a. In general, n ordinea alfabetic a, literele cu diacritice si au locul imediat l ang a literele similare f ar a diacritice; n codic arile ISO-8859-1 sau ISO-8859-2, de exemplu, literele cu diacritice au codurile mai mari de 128 n vreme ce literele f ar a diacritice au coduri ntre 65 si 123.
Caracter A a A a I S , s , T , t , S s T t
Cod unicode (hexa) 102 103 C2 E2 CE EE 218 219 21A 21B 15E 15F 162 163
Cod unicode (zecimal) 258 259 194 226 206 238 536 537 538 539 350 351 354 355
UTF-8 (hexa) C4 C4 C3 C3 C3 C3 C8 C8 C8 C8 C5 C5 C5 C5 82 83 82 A2 8E AE 98 99 9A 9B 9E 9F A2 A3
Tabelul 7.2: Caracterele cu diacritice din alfabetul limbii rom ane si codic arile unicode corespunz atoare. Not a: caracterele S , s, T si t au c ate dou a forme utilizate: una cu virgul a dedesupt, cealalt a cu sedil a. Conform normelor stabilite de Academia Rom an a, forma corect a este cea cu virgul a. Codicarea formei cu virgul a a fost standardizat a mai recent, motiv pentru care multe documente utilizeaz a nc a forma cu sedil a.
7.2.3.1. Codicarea UTF-8 Corespondent a de la codul caracterului la sirul de octet i este dat a n tabelul 7.3.
Valorile lui c ( n baza 16) 07F 807FF 800FFFF 100001FFFFF reprezentarea UTF-8 ( n baza 2) 0c7 c6 c5 c4 c3 c2 c1 c0 110c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 1110c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 11110c20 c19 c18 10c17 c16 c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0
Tabelul 7.3: Codicarea UTF-8. c reprezint a codul unicode al caracterului; c20 . . . c0 reprezint a cifrele reprezent arii binare a lui c, cu c20 reprezent and cifra cea mai semnicativ a si c0 cea mai put in semnicativ a. Codicarea exist a doar pentru 0 c < 221 .
De remarcat c a schema pentru coduri mari (de exemplu, schema pentru c ntre 8016 si 7FF16 ) poate principial aplicat a si la coduri mai mici (de exemplu, pentru c = 4116 , rezult and doi octet i, C116 urmat de 8116 ). O astfel de codicare este ns a interzis a de standard pentru a asigura unicitatea codic arii UTF-8. Codicarea UTF-8 permite recuperarea sincronismului (dac a receptorul pierde c a tiva octet i poate reg asi unde ncepe un caracter nou), deoarece ecare caracter nou ncepe cu un octet cuprins ntre 0 si 127 sau ntre 192 si 255, iar ceilalt i octet din codicarea unui caracter sunt cuprin si ntre 128 si 191. O alt a proprietate este c a lungimea codic arii UTF-8 a unui caracter poate determinat a dup a citirea primului octet. 7.2.3.2. Codic arile UTF-16 Codicarea UTF-16 este descris a n dou a etape: ntr-o prim a etap a, codul unicode este transformat ntr-unul sau dou a numere de c ate 16 bit i, iar n a doua etap a ecare astfel de num ar este scris ca 2 octet i consecutivi. Caracterele cu codul unicode ntre 0 si D7FF16 sau ntre E00016 si FFFF16 se scriu ca un singur ntreg pe 16 bit i. Caracterele cu codul unicode ntre 1000016 si 10FFFF16 se scriu ca doi ntregi de c ate 16 bit i astfel: Mai nt ai, din codul unicode se scade 1000016 , rezult and o valoare ntre 0 si FFFFF16 (20 bit i). Primul ntreg de 16 bit i se formeaz a pun and cifrele 110110 urmate de primii 10 din cei 20 de bit i. Al doilea ntreg se formeaz a pun and cifrele 110111 urmate de ultimii 10 din cei 20 de bit i. De exemplu, codul unicode 1030216 se scrie ca doi ntregi astfel: D83C16 DF0216 .
Intr-o a doua etap a este denit a scrierea ec arui ntreg de 16 bit i ca un sir de doi octet i. Exist a dou a modalit a ti de a reprezenta ecare astfel de ntreg, ncep and de la octetul mai semnicativ (de rang mai mare) sau ncep and de la octetul mai put in semnicativ. Pentru a reecta aceste variante diferite de alegere, exist a trei codic ari distincte numite generic UTF-16 : UTF-16LE : Primul octet este cel mai put in semnicativ (little endian ); UTF-16BE : Primul octet este cel mai semnicativ (big endian ); UTF-16 : Ordinea octet ilor poate e big endian, e little endian, la alegerea emit atorului. Primul caracter codicat trebuie s a e caracterul cu codul FEFF16 (denit init ial ca ind un caracter de control ce interzice ruperea n r anduri n acel punct, dar este utilizat n prezent doar ca marcaj pentru identicarea ordinii octet ilor). Ordinea octet ilor este dedus a de receptor prin examinarea primilor doi octet i: dac a ace stia sunt FE16 urmat de FF16 , nseamn a c a ordinea octet ilor este big endian ; dac a este FF16 urmat de FE16 , nseamn a c a ordinea octet ilor este little endian. 7.2.3.3. Codic arile UTF-32 Codicarea UTF-32 const a n codicarea ec arui caracter ca un ntreg pe 32 de bit i, reprezentat la r andul lui ca un sir de 4 octet i. Ca si n cazul codic arilor UTF-16, exist a trei codic ari UTF-32 : UTF-32LE : Primul octet este cel mai put in semnicativ (little endian ); UTF-32BE : Primul octet este cel mai semnicativ (big endian ); UTF-32 : Ordinea octet ilor poate e big endian, e little endian, la alegerea emit atorului. Primul caracter codicat trebuie s a e caracterul cu codul F EF F16 . Ordinea octet ilor este dedus a de receptor prin examinarea primilor patru octet i: dac a ace stia sunt 0, 0, F E16 , F F16 , nseamn a c a ordinea octet ilor este big endian ; dac a este F F16 , F E16 , 0, 0, nseamn a c a ordinea octet ilor este little endian.
prin ,,ora curent a, iar apoi vom vedea ce scheme de reprezentare ale datei si orei exist a si ce avantaje si dezavantaje aduce ecare dintre ele.
pe meridianul 0 , al soarelui mijlociu.) Curge neuniform datorit a neuniformit a tii mi sc arii de rotat ie a P am antului; dup a media ultimilor c a tiva ani, 24 h UT1 este aproximativ 86400,002 s SI. Timpul universal coordonat (UTC) este bazat pe secunda SI, dar gruparea secundelor n zile este modicat a pentru a ment ine diferent a dintre UT1 si UTC la sub o secund a. Astfel, o zi UTC normal a are 24 ore a 60 minute a 60 secunde SI ecare, adic a 86400 s. Dac a UT1UTC se apropie de 1 s, se adaug ao secund a de corect ie (engl. leap second ) la o zi, astfel nc at acea zi UTC are 86401 s, proces aproape echivalent cu a muta UTC cu o secund a napoi. In acest scop, ultimul minut al zilei are 61 de secunde n loc de 60, dup a ora 23:59:59 urmeaz a, la o secund a, 23:59:60 si abia dup a nc a o secund a ora 0:00:00 a zilei urm atoare. Dac a UT1UTC se apropie de 1 s, se elimin a o secund a din ultimul minut al unei zile, astfel c a la o secund a dup a 23:59:58 urmeaz a ora 0:00:00 a zilei urm atoare. Din anul 1972 (de la introducerea UTC n forma actual a) p an a n 2008 au fost ad augate 23 de secunde de corect ie si nu a fost eliminat a nici una. A 24-a secund a de corect ie se va ad auga la sf ar situl anului 2008, astfel nc at ziua de 31 decembrie 2008 va avea 86401 secunde. Datorit a unei diferent e init iale de 10 s ntre TAI si UTC, diferent a TAIUTC este n prezent de 33 s. Timpul legal n ecare tar a este denit e pe baza UT1, e pe baza UTC (diferent a este neglijabil a pentru uzul practic), ca ind UTC (sau UT1) plus sau minus un anumit num ar de ore si uneori si fract iuni de or a (exemplu, India are ora legal a UTC+5h30min). In t arile n care exist a or a de var a, la trecerea de la ora de iarn a la cea de var a si invers, diferent a dintre ora legal a si UTC cre ste, respectiv scade, cu o or a (de notat c a UTC nu are or a de var a). De exemplu, ora legal a n Rom ania este UTC+2 h n timpul iernii (din ultima duminic a din octombrie p an a n ultima duminic a din martie) si UTC+3 h n timpul verii. Ora suplimentar a introdus a la trecerea de la ora de var a la cea de iarn a nu are notat ie distinct a, de tipul secundelor de corect ie din UTC. Ca urmare, la trecerea de la ora de var a la ora de iarn a, exist a perechi de momente de timp care sunt notate la fel si ca urmare ora legal a este ambigu a. Exemplu: dac a prin trecerea de la ora de var a la cea de iarn a ora 4:00:00 devine 3:00:00, atunci notat ia 3:30:00 poate corespunde la dou a momente de timp, ora de var a 3:30:00 (la 30 min naintea schimb arii orei) si ora de iarn a 3:30:00 (la 30 min dup a schimbarea orei).
Pentru gruparea zilelor n unit a ti mai mari, n special n ani, sunt utilizate mai multe sisteme (calendare): Calendarul gregorian , introdus n anul 1582 si n vigoare n Rom ania din anul 1924, este calendarul actual. Anii bisect i (de 366 de zile) sunt anii cu num arul anului divizibil cu 4, cu except ia celor divizibili cu 100 f ar a a divizibili cu 400. Ani bisect i sunt 1600, 2000, 2400 etc; ani nebisect i divizibili cu 100 sunt 1700, 1800, 1900, 2100, 2200 etc. Durata medie a anului gregorian este 365,2425 zile, ceva mai lung dec at anul tropic de aproximativ 265,2422 zile. Calendarul iulian , predecesorul calendarului gregorian, introdus n anul 45 .e.n. si av and regula mai simpl a cum c a sunt bisect i tot i anii cu num ar divizibil cu 4. Este utilizat adesea de istorici pentru a data si evenimente dinainte de anul 45 .e.n., caz n care el este numit calendar iulian proleptic. Cu o durat a medie a anului de 365,25 zile, calendarul iulian r am ane n urm a cu 1 zi la aproximativ 128 de ani. Ziua iulian a este un simplu num ar ce arat a num arul de zile scurse de la o dat a de referint a. Acest sistem este utilizat frecvent n astronomie deoarece permite u sor calculul duratelor dintre dou a date; din acela si motiv reprezint a o schem a potrivit a pentru reprezentarea datei n calculator. Exist a n dou a variante. Prima, JD (julian day ), are ca referint a data de 1 ianuarie 4713 .e.n. conform calendarului iulian proleptic, la amiaza UT1. Momentul respectiv este JD 0,0, miezul nopt ii urm atoare este JD 0,5, etc. Cealalt a, MJD (modied julian day ), are ca referint a 17 noiembrie 1858 ora 0, adic a este JD2400000,5 .
4. pentru aplicat ii speciale, citirea sau a sarea timpului n alte formate (timpul legal al altui fus orar, UTC, TAI, JD, etc). Punctul 1 este cerut de toate sistemele. Punctul 2 este important pentru foarte multe aplicat ii si rezolvarea lui corect a interzice mutarea ceasului napoi. Punctul 3 este important n aplicat iile n timp real; de asemenea, funct ionarea ceasului sistem presupune, n mod repetat, adunarea unei durate de timp la un moment de timp. Reprezentarea direct a a orei legale, sub forma an, lun a, zi, or a, minut, secund a, fract iuni de secund a, rezolv a simplu punctul 1. Ea ridic a ns a probleme la punctul 2 dac a sunt implicate calculatoare aate pe fusuri orare distincte sau dac a se efectueaz a operat ii n intervalul de o or a n jurul trecerii de la ora de var a la cea de iarn a; pentru tratarea corect a a acestor cazuri este necesar s a se stie, despre ecare or a, pe ce fus orar este considerat a si care sunt regulile privind ora de var a. Punctul 3 ridic a, pe l ang a problemele comune cu cele legate de punctul 2, complicat ii legate de saltul cu o or a nainte la trecerea de la ora de iarn a la ora de var a si calculele legate de calendar; de asemenea, pentru calcule exacte ale duratelor, sunt necesare informat ii cu privire la secundele de corect ie. Reprezentarea orei UTC permite determinarea ordinii cronologice si a duratelor f ar a a necesita date despre fusurile orare sau regulile privind ora de var a, n schimb aceste date sunt necesare la conversia ntre reprezentarea UTC si timpul legal. Reprezentarea TAI ca num ar de unit a ti de timp scurse de la un anumit moment xat rezolv a extrem de simplu punctele 2 si 3 n schimb mut a dicult a tile la rezolvarea punctului 1.
anul, ca sir de 4 cifre, ora, totdeauna ca 2 cifre, ntre 00 si 23, minutul, ca dou a cifre, ntre 00 si 59, opt ional, secunda, ca dou a cifre ntre 00 si 60, diferent a dintre ora legal a conform c areia a fost scris a data si ora UTC; aceasta este dat a ca 4 cifre, 2 pentru num arul de ore si 2 pentru num arul de minute, cele patru cifre ind precedate de semnul + sau . Componentele datei sunt separate printr-un amestec de virgule, spat ii si caractere dou a puncte. De exemplu, data:
nseamn a c a la momentul scrierii mesajului ora local a a expeditorului era joi, 25 octombrie 2007, ora 17:22:19 si c a ora respectiv a este cu 3 ore n avans fat a de UTC. Ca urmare, ora UTC la acel moment era 14:22:19. Data considerat a n acest exemplu este plauzibil a conform orei legale a Rom aniei, n 25 octombrie 2007 ind nc a n vigoare ora de var a care este cu 3 ore n avans fat a de UTC. Orele astfel specicate sunt u sor de comparat si nu exist a ambiguit a ti legate de trecerea de la ora de var a la cea de iarn a. De exemplu, un mesaj trimis nainte de trecerea la ora de iarn a ar datat
Sun, 28 Oct 2007, 03:40 +0300
7.3.3.2. ISO-8601 si RFC-3339 ISO-8601 este o standardizare a modului de scriere ca text a datei si orei. Standardul ind foarte complex, a ap arut RFC-3339 care cuprinde cazurile mai utile si mai frecvent folosite din ISO-8601. RFC-3339 prevede reprezentarea datelor astfel: anul, ca patru cifre (nu sunt admise prescurt ari de genul 07 pentru 2007), luna, ca 2 cifre (01 pentru ianuarie, 12 pentru decembrie), ziua, ca 2 cifre (de la 01 p an a la 31 sau mai put in, n funct ie de lun a). Cele trei componente sunt separate prin liniut e (ISO-8601 permite si alipirea lor):
Ora se reprezint a prin 2 cifre pentru or a (0023), 2 cifre pentru minut (0059), dou a cifre pentru secund a (0060, n funct ie si de prezent a unei secunde de corect ie), eventual fract iunile de secund a si eventual specicarea fusului orar. Ora, minutul si secunda sunt separate prin dou a puncte, fract iunile de secund a se separ a de c ampul pentru secunde prin punct, iar specicarea fusului orar se face printr-un semn plus sau minus urmat de dou a cifre pentru num arul de ore diferent a urmat de caracterul dou a puncte si nc a dou a cifre pentru num arul de minute diferent a. Exemplu:
21:12:58.342+02:00
7.3.3.3. Timpul POSIX In sistemele de tip UNIX (conforme standardului POSIX), reprezentarea timpului este f acut a printr-un num ar ntreg considerat de obicei c a reprezint a num arul de secunde scurse de la 1 ianuarie 1970 ora 0:00 UTC. Ora UTC n formatul obi snuit se obt ine grup and secundele n minute, ore, zile, luni si ani conform regulilor obi snuite. De fapt, num arul dat ca dat a nu este exact num arul de secunde scurse de la 1 ianuarie 1970, ci difer a de acesta prin num arul de secunde de corect ie ad augate pentru ment inerea n sincronism a UTC cu rotat ia P am antului. De aceea, ,,timpul unix are salturi napoi de c ate o secund a la ecare introducere a unei astfel de secunde de corect ie. Timpul POSIX este reprezentat n mod obi snuit ca ntreg cu semn pe 32 de bit i, si ca urmare valoarea cea mai mare ce poate reprezentat a corespunde datei de 19 ianuarie 2038, ora 3:14:07 UTC. 7.3.3.4. TAI 64 TAI 64 este un standard ce presupune reprezentarea timpului ca num ar de secunde, incluz and secundele de corect ie. Num arul de secunde este reprezentat pe 63 de bit i (plus un bit rezervat), cu valoarea 262 corespunz and datei de 1 ianuarie 1970 ora 0 TAI. Intervalul de timp reprezentabil este imens, de ordinul a 1011 ani.
Pentru aplicat ii ce au nevoie de rezolut ie mai bun a de o secund a, standardul prevede nc a dou a c ampuri de c ate 32 de bit i (total 128 de bit i), reprezent and respectiv num arul de nanosecunde si de attosecunde (valori ntre 0 si 109 1).
Caracterul de evitare (dac a face parte din alfabetul surs a), precum si caracterele din alfabetul surs a ce nu se g asesc n alfabetul destinat ie, se codic a ca secvent e de caractere ce ncep cu un caracter de evitare. Exemple: Pentru po sta electronic a, un caracter ce nu pot transmise direct este codicat ca o secvent a de trei caractere, un caracter egal (=) si dou a cifre hexa reprezent and codul caracterului de transmis. Aceast a recodicare se nume ste quouted printables. Caracterele ASCII imprimabile, cu except ia caracterului egal, se transmit direct (f ar a recodicare). Ca urmare, un text n care caracterele ce trebuie recodicate sunt rare poate nt eles de c atre un utilizator uman f ar a prea mari dicult a ti. Ca exemplu, fraza precedent a se scrie (presupun and o codicare ISO-8859-2 pentru caractere si apoi o recodicare quouted printables ):
Ca urmare, un text =EEn care caracterele ce trebuie recodificate sunt rare poate fi =EEn=FEeles de c=E3tre un utilizator uman f=E3r=E3 prea mari dificult=E3=FEi.
In URL-uri, caracterele ce au rol sintactic (spat iu, /, etc) se codic a prin caracterul procent (%) urmat de dou a cifre hexa reprezent and valoarea caracterului respectiv. De notat c a aceste coduri sunt n cadrul codic arii UTF-8; ca urmare, o pagin a cu numele sir ar avea un URL de forma
http://example.com/%C8%98ir
In limbajul C si n alte limbaje derivate din el, ghilimelele (") servesc la delimitarea sirurilor de caractere. Dac a se dore ste introducerea unor astfel de caractere ntr-un sir, sau a caracterelor ASCII de control, se introduc secvent e escape cum ar : \" pentru ghilimele ("), \\ pentru backslash (\), \n pentru newline (caracterul ASCII cu codul 10). In HTML, caracterele unicode sunt scrise prin secvent e &#cod ;. De exemplu, litera t se scrie ț.
Capitolul 8
si gura 8.1): Pe ecare calculator ruleaz a mai multe procese si ecare proces poate avea mai multe c ai de comunicat ie deschise. Prin urmare, pe un calculator trebuie s a poat a exista la un moment dat mai multe leg aturi (conexiuni) active. Realizarea comunic arii este intermediat a de sistemele de operare de pe calculatoarele pe care ruleaz a cele dou a procese. Deschiderea unei conexiuni, nchiderea ei, transmiterea sau recept ionarea de date pe o conexiune si congurarea parametrilor unei conexiuni se fac de c atre sistemul de operare, la cererea procesului. Cererile procesului se fac prin apelarea funct iilor sistem din familia socket. In cadrul comunicat iei dintre procesul utilizator si sistemul de operare local (prin intermediul apelurilor din familia socket ), capetele locale ale conexiunilor deschise sunt numite socket -uri si sunt identicate prin numere ntregi, unice n cadrul unui proces la ecare moment de timp. Fiecare entitate care comunic a n cadrul ret elei este identicat printr-o adres a unic a. O adresa este asociat a de fapt unui socket. Adresa este format a conform regulilor protocolului de ret ea utilizat. Interfat a socket cont ine funct ii pentru comunicat iei at at conform modelului conexiune c at si conform modelului cu datagrame. Funct iile sistem oferite permit stabilirea comunicat iei prin diferite protocoale (de exemplu, IPv4, IPv6, IPX), dar au aceea si sintax a de apel independent de protocolul dorit.
8.1.1.1. Deschiderea conexiunii de c atre client Procesul client trebuie s a cear a mai nt ai sistemului de operare local crearea unui socket. Trebuie specicat protocolul de ret ea utilizat (TCP/IPv4, TCP/IPv6, etc), dar nc a nu se specic a partenerul de comunicat ie. Socket-ul proasp at creat este n starea neconectat. Dup a crearea socket-ului, clientul cere sistemului de operare conectarea socket-ului la un anumit server, specicat prin adresa socket -ului serverului. De exemplu, pentru protocolul TCP/IPv4, adresa partenerului se specic a prin adresa IP (vezi 10.1) si num arul portului (vezi 10.3.1). Funct iile sistem apelate sunt: socket() pentru crearea socket-ului si connect() pentru deschiderea efectiv a a conexiunii.
8.1.1.2. Deschiderea conexiunii de c atre server Procesul server ncepe tot prin a cere sistemului de operare crearea unui socket de tip conexiune pentru protocolul dorit. Acest socket nu va servi pentru conexiunea propriu-zis a cu un client, ci doar pentru a steptarea conect arii client ilor; ca urmare este numit uneori socket de a steptare. Dup a crearea acestui socket, serverul trebuie s a cear a sistemului de operare stabilirea adresei la care serverul a steapt a cereri de conectare (desigur, acea parte din adres a care identic a ma sina serverului nu este la alegerea procesului server) si apoi cere efectiv nceperea a stept arii client ilor. Funct iile apelate n aceast a faz a sunt, n ordinea n care trebuie apelate: socket() pentru crearea socketului, bind() pentru stabilirea adresei si listen() pentru nceperea a stept arii client ilor. Preluarea efectiv a a unui client conectat se face prin apelarea unei funct ii sistem numit a accept(). La apelul funct iei accept(), sistemul de operare execut a urm atoarele: a steapt a cererea de conectare a unui client si deschide conexiunea c atre acesta; creaz a un nou socket, numit socket de conexiune, care reprezint a cap atul dinspre server al conexiunii proasp at deschise; returneaz a apelantului (procesului server) identicatorul socket-ului de conexiune creat. Dup a un apel accept(), socket-ul de a steptare poate utilizat pentru a a stepta noi client i, iar socket-ul de conexiune nou creat se utilizeaz a pentru a comunica efectiv cu acel client.
8.1.1.3. Comunicat ia propriu-zis a O dat a deschis a conexiunea, clientul poate trimite siruri de octet i c atre server si invers, serverul poate trimite siruri de octet i c atre client. Cele dou a sensuri de comunicat ie funct ioneaz a identic (nu se mai distinge cine a fost client si cine a fost server) si complet independent (trimiterea datelor pe un sens nu este condit ionat a de recept ionarea datelor pe cel alalt sens). Pe ecare sens al conexiunii, se poate transmite un sir arbitrar de octet i. Octet ii trimi si de c atre unul dintre procese spre cel alalt sunt plasat i ntr-o coad a, transferat i prin ret ea la cel alalt cap at si citit i de c atre procesul de acolo. Comportamentul acesta este similar cu cel al unui pipe UNIX. Trimiterea datelor se face prin apelul funct iei send() (sau, cu funct ionalitate mai redus a, write()). Apelul acestor funct ii plaseaz a datele n coad a spre a transmise, dar nu a steapt a transmiterea lor efectiv a (returneaz a, de principiu, imediat controlul c atre procesul apelant). Dac a dimensiunea datelor din coad a este mai mare dec at o anumit a valoare prag, (aleas a de sistemele de operare de pe cele dou a ma sini), apelul send() se blocheaz a, return and controlul procesului apelant abia dup a ce partenerul de comunicat ie cite ste date din coad a, duc and la sc aderea dimensiunii datelor din coad a sub valoarea prag. Recept ionarea datelor trimise de c atre partenerul de comunicat ie se face prin intermediul apelului sistem recv() (cu functionalitate mai redus a se poate utiliza read()). Aceste funct ii returneaz a procesului apelant datele deja sosite pe calculatorul receptor si le elimin a din coad a. In cazul n care nu sunt nc a date disponibile, ele a steapt a sosirea a cel put in un octet. Sistemul garanteaz a sosirea la destinat ie a tuturor octet ilor trimi si (sau n stiint area receptorului, printr-un cod de eroare, asupra c aderii conexiunii), n ordinea n care au fost trimi si. Nu se p astreaz a ns a demarcarea ntre secvent ele de octet i trimise n apeluri send() distincte. De exemplu, este posibil ca emit atorul s a trimit a, n dou a apeluri succesive, sirurile abc si def, iar receptorul s a primeasc a, n apeluri recv() succesive, sirurile ab, cde si f. 8.1.1.4. Inchiderea conexiunii Inchiderea conexiunii se face separat pentru ecare sens si pentru ecare cap at. Exist a dou a funct ii: shutdown() nchide, la cap atul local al conexiunii, sensul de comunicat ie cerut de procesul apelant; close() nchide la cap atul local ambele sensuri de comunicat ie si n plus distruge socket-ul, eliber and resursele alocate (identicatorul de socket
si memoria alocat a n spat iul nucleului). Terminarea unui proces are efect identic cu un apel close() pentru toate socket-urile existente n acel moment n posesia acelui proces. Dac a cap atul de emisie al unui sens de comunicat ie a fost nchis, receptorul poate citi n continuare datele existente n acel moment n coad a, dup a care un eventual apel recv() va semnaliza apelantului faptul c a a fost nchis a conexiunea. Dac a cap atul de recept ie al unui sens a fost nchis, o scriere ulterioar a de la cel alalt cap at este posibil s a returneze un cod de eroare (pe sistemele de tip UNIX, scrierea poate duce si la primirea, de c atre procesul emit ator, a unui semnal SIGPIPE).
este posibil ca dou a sau mai multe datagrame adresate aceluia si destinatar s a ajung a la destinat ie n alt a ordine dec at cea n care au fost emise. Dac a astfel de situat ii sunt inadmisibile pentru aplicat ie, atunci protocolul de comunicat ie trebuie s a prevad a conrm ari de primire si repetarea datagramelor pierdute, precum si numere de secvent a sau alte informat ii pentru identicarea ordinii corecte a datagramelor si a duplicatelor. Implementarea acestor mecanisme cade n sarcina proceselor. La terminarea utiliz arii unui socket, procesul posesor poate cere distrugerea socket-ului si eliberarea resurselor asociate (identicatorul de socket, memoria ocupat a n sistemul de operare pentru datele asociate socket-ului, portul asociat socket-ului). Distrugerea socket-ului se face prin apelul funct iei close(). In mod curent, ntr-o comunicat ie prin datagrame, unul dintre procese are rol de client, n sensul c a trimite cereri, iar cel alalt act ioneaz a ca server, n sensul c a prelucreaz a cererile clientului si trimite napoi clientului r aspunsurile la cereri. Intr-un astfel de scenariu, serverul creaz a un socket c aruia i asociaz a o adres a prestabilit a, dup a care a steapt a cereri, apel and n mod repetat recvfrom(). Clientul creaz a un socket, c aruia nu-i asociaz a o adres a (nu execut a bind()). Clientul trimite apoi cererea sub forma unei datagrame de pe socket-ul creat. La trimiterea primei datagrame, sistemul de operare d a o adres a socket-ului; datagrama emis a poart a ca adres a surs a acest a adres a. La primirea unei datagrame, serverul recupereaz a datele utile si adresa surs a, proceseaz a cererea si trimite r aspunsul c atre adresa surs a a cererii. In acest fel, r aspunsul este adresat exact socket-ului de pe care clientul a trimis cererea. Clientul obt ine r aspunsul execut and recvfrom() asupra socket-ului de pe care a expediat cererea. Cu privire la tratarea datagramelor pierdute, un caz simplu este acela n care clientul pune doar ntreb ari (interog ari) serverului, iar procesarea interog arii nu modic a n nici un fel starea serverului. Un exemplu tipic n acest sens este protocolul DNS ( 10.4). In acest caz, datagrama cerere cont ine interogarea si daatgrama r aspuns cont ine at at cererea la care se r aspunde c at si r aspunsul la interogare. Serverul ia ( n mod repetat) c ate o cerere, calculeaz a r aspunsul si trimite o napoi o datagram a cu cererea primit a si r aspunsul la cerere. Clientul trimite cererile sale si a steapt a r aspunsurile. Deoarece ecare r aspuns cont ine n el si cererea, clientul poate identica ecare r aspuns la ce cerere i corespunde, chiar si n cazul invers arii ordinii datagramelor. Dac a la o cerere nu prime ste r aspuns ntr-un anumit interval de timp, clientul repet a cererea; deoarece procesarea unei cereri nu modic a starea serverului, duplicarea cererii de c atre ret ea sau repetarea cererii de c atre client ca urmare a pierderii
r aspunsului nu au efecte nocive. Clientul trebuie s a ignore r aspunsurile duplicate la o aceea si interogare.
Funct ia creaz a un socket si returneaz a identicatorul s au. Parametrii sunt: type: desemneaz a tipul de servicii dorite: SOCK STREAM:conexiune punct la punct, ux de date bidirect ional la nivel de octet, asigur and livrare sigura, cu pastrarea ordinii octet ilor si transmisie fara erori. SOCK DGRAM:datagrame, at at punct la punct c at si difuziune; transmisia este garantat a a f ar a erori, dar livrarea nu este sigura si nici ordinea datagramelor garantata. SOCK RAW:acces la protocoale de vel cobor at; este de exemplu utilizat de c atre comanda ping pentru comunicat ie prin protocolul ICMP. a tipul de ret ea cu care se lucreaz a (IP, IPX, etc). proto family identic Valori posibile: PF INET:protocol Internet, versiunea 4 (IPv4) PF INET6:protocol Internet, versiunea 6 (IPv6) PF UNIX:comunicat ie local a pe o ma sin a UNIX. protocol selecteaz a protocolul particular de utilizat. Acest parametru este util dac a pentru un tip de ret ea dat si pentru un tip de serviciu xat exist a mai multe protocoale utilizabile. Valoarea 0 desemneaz a protocolul implicit pentru tipul de ret ea si tipul de serviciu alese. 8.1.3.2. Funct ia connect() Funct ia are sintaxa:
int connect(int sock_id, struct sockaddr* addr, int addr_len)
Funct ia are ca efect conectarea socketului identicat de primul parametru care trebuie s a e un socket de tip conexiune proasp at creat ( nc a neconectat)
la serverul identicat prin adres a dat a prin parametrii addr si addr len. La adresa respectiv a trebuie s a existe deja un server care s a a stepte conexiuni (s a fost deja executat apelul listen() asupra socket-ului serverului). Adresa trebuie plasat a, nainte de apelul connect(), ntr-o structur a av and un anumit format; cont inutul acestei structuri va descris n 8.1.3.6. Adresa n memorie a acestei structuri trebuie dat a ca parametrul addr, iar lungimea structurii de adres a trebuie dat a ca parametrul addr len. Motivul acestei complicat ii este legat de faptul c a funct ia connect() trebuie s a poat a lucra cu formate diferite de adres a, pentru diferite protocoale, iar unele protocoale au adrese de lungime variabil a. Funct ia connect() returneaz a 0 n caz de succes si 1 n caz de eroare. Eroarea survenit a poate constatat a e veric and valoarea variabilei globale errno, e apel and funct ia perror() imediat dup a funct ia sistem ce a nt ampinat probleme. Eroarea cea mai frecvent a este lipsa unui server care s a asculte la adresa specicat a. 8.1.3.3. Funct ia bind()
int bind(int sd, struct sockaddr* addr, socklen_t len)
Funct ia are ca efect atribuirea adresei specicate n parametrul addr socket-ului identicat prin identicatorul sd. Aceast a funct ie se apeleaz a n mod normal dintr-un proces server, pentru a preg ati un socket stream de a steptare sau un socket dgram pe care se a steapt a cereri de la client i. Partea, din adresa de atribuit socket-ului, ce cont ine adresa ma sinii poate e una dintre adresele ma sinii locale, e valoarea special a INADDR_ANY (pentru IPv4) sau IN6ADDR_ANY_INIT (pentru IPv6). In primul caz, socket-ul va primi doar cereri de conexiune (sau, respectiv, pachete) adresate adresei IP date socket-ului, si nu si cele adresate altora dintre adresele ma sinii server. Exemplul 8.1: S a presupunem c a ma sina server are adresele 193.226.40.130 si 127.0.0.1. Dac a la apelul funct iei bind() se d a adresa IP 127.0.0.1, atunci socket-ul respectiv va primi doar cereri de conectare destinate adresei IP 127.0.0.1, nu si adresei 193.226.40.130. Dimpotriv a, dac a adresa acordat a prin bind() este INADDR_ANY, atunci socket-ul respectiv va accepta cereri de conectare adresate oric areia dintre adresele ma sinii locale, adic a at at adresei 193.226.40.130 c at si adresei 127.0.0.1. Adresa atribuit a prin funct ia bind() trebuie s a e liber a n acel moment. Dac a n momentul apelului bind() exist a un alt socket de acela si tip av and aceea si adres a, apelul bind() e sueaza.
Pe sistemele de tip UNIX, pentru atribuirea unui num ar de port mai mic dec at 1024 este necesar ca procesul apelant s a ruleze din cont de administrator. Funct ia bind() poate apelat a doar pentru un socket proasp at creat, c aruia nu i s-a atribuit nc a o adres a. Aceasta nseamn a c a funct ia bind() nu poate apelat a de dou a ori pentru acela si socket. De asemenea, funct ia bind() nu poate apelat a pentru un socket de conexiune creat prin funct ia accept() si nici pentru un socket asupra c aruia s-a apelat n prealabil vreuna dintre funct iile connect(), listen() sau sendto() aceste funct ii av and ca efect atribuirea unei adrese libere aleatoare. Funct ia returneaz a 0 n caz de succes si 1 n caz de eroare. Eroarea cea mai frecvent a este c a adresa dorit a este deja ocupat a. 8.1.3.4. Funct ia listen()
int listen(int sd, int backlog)
Funct ia cere sistemului de operare s a accepte, din acel moment, cererile de conexiune pe adresa socket-ului sd. Dac a socketului respectiv nu i s-a atribuit nc a o adres a (printr-un apel bind() anterior), funct ia listen() i atribuie o adres a aleas a aleator. Parametrul backlog xeaz a dimensiunea cozii de a steptare n acceptarea conexiunilor. Anume, vor putea exista backlog client i care au executat connect() f ar a ca serverul s a creat nc a pentru ei socket-uri de conexiune prin apeluri accept(). De notat c a nu exist a nici o limitare a num arului de client i conectat i, preluat i deja prin apelul accept(). 8.1.3.5. Funct ia accept()
int accept(int sd, struct sockaddr *addr, socklen_t *addrlen)
Apelul funct iei accept() are ca efect crearea unui socket de conexiune, asociat unui client conectat (prin apelul connect()) la socket-ul de a steptare sd. Dac a nu exist a nc a nici un client conectat si pentru care s a nu se creat socket de conexiune, funct ia accept() a steapt a p an a la conectarea urm atorului client. Funct ia returneaz a identicatorul socket-ului de conexiune creat. Dac a procesul server nu dore ste s a ae adresa clientului, va da valori NULL parametrilor addr si addrlen. Dac a procesul server dore ste s a ae adresa clientului, atunci va trebui s a aloce spat iu pentru o structur a pentru memorarea adresei clientului, s a pun a adresa structurii respective n parametrul
addr, s a plaseze ntr-o variabil a de tip ntreg dimensiunea memoriei alocate pentru adresa clientului si s a pun a adresa acestui ntreg n parametrul adrlen. In acest caz, la revenirea din apelul accept(), procesul server va g asi n structura de adres a adresa socket-ului client si n variabila ntreag a a c arui adres a a fost dat a n parametrul adrlen va g asi dimensiunea efectiv utilizat a de sistemul de operare pentru a scrie adresa clientului. 8.1.3.6. Formatul adreselor Pentru funct iile socket ce primesc de la apelant (ca parametru) o adres a din ret ea (bind(), connect() si sendto()), precum si pentru cele ce returneaz a apelantului adrese de ret ea (accept(), recvfrom(), getsockname() si getpeername()), sunt denite structuri de date (struct) n care se plaseaz a adresele socket-urilor. Pentru ca funct iile de mai sus s a poat a avea aceea si sintax a de apel independent de tipul de ret ea ( si, n consecint a, de structura adresei), funct iile primesc adresa printr-un pointer la zona de memorie ce cont ine adresa de ret ea. Structura zonei de memorie respective depinde de tipul ret elei utilizate. In toate cazurile, aceasta ncepe cu un ntreg pe 16 bit i reprezent and tipul de ret ea. Dimensiunea structurii de date ce cont ine adresa de ret ea depinde de tipul de ret ea si, n plus, pentru anumite tipuri de ret ea, dimensiunea este variabil a. Din acest motiv: funct iile care primesc de la apelant o adres a (connect(), bind() si sendto()) au doi parametri: un pointer c atre structura de adres a si un ntreg reprezent and dimensiunea acestei structuri; funct iile care furnizeaz a apelantului o adres a (accept(), recvfrom(), getsockname() si getpeername()) primesc doi parametri: un pointer c atre structura de adres a si un pointer c atre o variabil a de tip ntreg pe care apelantul trebuie s-o init ializeze, naintea apelului, cu dimensiunea pe care a alocat-o pentru structura de adres a si n care funct ia pune, n timpul apelului, dimensiunea utilizat a efectiv de astuctura de adres a. In ambele cazuri, parametrul pointer c atre structura de adres a este declarat ca ind de tip struct sockaddr*. La apelul acestor funct ii este necesar a conversia a pointer-ului c atre structura de adres a de la pointer-ul specic tipului de ret ea la struct sockaddr*. O adres a a unui cap at al unei conexiuni TCP sau a unei leg aturi prin datagrame UDP este format a din adresa IP a ma sinii si num arul de port (vezi 10.2.3.1, 10.3.1.6 si 10.3.2). Pentru nevoile funct iilor de mai sus, adresele socket-urilor TCP si UDP se pun, n funct ie de protocolul de nivel
ret ea (IPv4 sau IPv6), ntr-o structur a de tip sockaddr_in pentru IPv4 sau sockaddr_in6 pentru IPv6. Pentru adrese IPv4 este denit a structura sockaddr_in av and urm atorii membrii: sin family:trebuie s a cont in a constanta AF_INET; sin port:de tip ntreg de 16 bit i (2 octet i), f ar a semn, n ordine ret ea (cel mai semnicativ octet este primul), reprezent and num arul portului; sin addr:cont ine adresa IP. Are tipul struct in_addr, av and un singur c amp, s_addr, de tip ntreg pe 4 octet i n ordine ret ea. Adresa IPv4 poate convertit a de la notat ia obi snuit a (notat ia zecimal a cu puncte) la struct in_addr cu ajutorul funct iei
int inet_aton(const char *cp, struct in_addr *inp);
Conversia invers a, de la structura in_addr la string n notat ie zecimal a cu punct se face cu ajutorul funct iei
char *inet_ntoa(struct in_addr in);
care returneaz a rezultatul ntr-un buer static, apelantul trebuind s a copieze rezultatul nainte de un nou apel al functiei. Pentru adrese IPv6 este denit a structura sockaddr_in6 av and urm atorii membrii: a cont in a constanta AF_INET6; sin6 family:trebuie s ntreg de 16 bit i (2 octet i), f ar a semn, n ordine ret ea (cel sin6 port:de tip mai semnicativ octet este primul), reprezent and num arul portului; sin6 flow:eticheta de ux. sin6 addr:cont ine adresa IP. Are tipul struct in6_addr, av and un singur c amp, s6_addr, de tip tablou de 16 octet i. Obt inerea unei adrese IPv4 sau IPv6 cunosc and numele de domeniu (vezi 10.4) se face cu ajutorul funct iei
struct hostent *gethostbyname(const char *name);
care returneaz a un pointer la o structur a ce cont ine mai multe c ampuri dintre care cele mai importante sunt: int h addrtype:tipul adresei, AF_INET sau AF_INET6;
char **h addr list:pointer la un sir de pointeri c atre adresele IPv4 sau IPv6 ale ma sinii cu numele name, n formatul in_addr sau respectiv in6_addr; int h length:lungimea sirului h_addr_list. 8.1.3.7. Interact iunea dintre connect(), listen() si accept() La apelul connect(), sistemul de operare de pe ma sina client trimite ma sinii server o cerere de conectare. La primirea cererii de conectare, sistemul de operare de pe ma sina server act ioneaz a astfel: dac a adresa din cerere nu corespunde unui socket pentru care s-a efectuat deja apelul listen(), refuz a conectarea; dac a adresa corespunde unui socket pentru care s-a efectuat listen(), ncearc a plasarea clientului ntr-o coad a de client i conectat i si nepreluat i nc a prin accept(). Dac a plasarea reu se ste (coada ind mai mic a dec at valoarea parametrului backlog din apelul listen()), sistemul de operare trimite sistemului de operare de pe ma sina client un mesaj de acceptare; n caz contrar trimite un mesaj de refuz. Apelul connect() revine n procesul client n momentul sosirii acceptului sau refuzului de la sistemul de operare de pe ma sina server. Revenirea din apelul connect() nu este deci condit ionat a de apelul accept() al procesului server. Apelul accept() preia un client din coada descris a mai sus. Dac a coada este vid a n momentul apelului, funct ia a steapt a sosirea unui client. Dac a coada nu este vid a, apelul accept() returneaz a imediat. Parametrul backlog al apelului listen() se refer a la dimensiunea cozii de client i conectat i (prin connect()) si nc a nepreluat i prin accept(), si nu la client ii deja preluat i prin accept(). 8.1.3.8. Funct iile getsockname() si getpeername()
int getsockname(int sd, struct sockaddr *name, socklen_t *namelen); int getpeername(int sd, struct sockaddr *name, socklen_t *namelen);
Funct ia getsockname() furnizeaz a apelantului adresa socket-ului sd. Funct ia getpeername(), apelat a pentru un socket de tip conexiune deja conectat, furnizeaz a adresa partenerului de comunicat ie. Funct ia getsockname() este util a dac a un proces act ioneaz a ca server, cre nd n acest scop un socket de a steptare, dar num arul portul pe care a steapt a conexiunile nu este prestabilit ci este transmis, pe alt a cale, viitorilor client. In acest caz, procesul server creaz a un socket (apel and socket()),
cere primirea cererilor de conexiune (apel and listen(), dar f ar a a apelat bind()) dup a care determin a, prin apelul getsockname(), adresa atribuit a la listen() socket-ului respectiv si transmite aceast a adres a viitorilor client i. 8.1.3.9. Funct iile send() si recv() Apelurile sistem send() si recv() sunt utilizate n faza de comunicat ie pentru socket-uri de tip conexiune. Descriem n continuare utilizarea acestor funct ii consider and un singur sens de comunicat ie si ca urmare ne vom referi la un proces emit a tor si un proces receptor n raport cu sensul considerat. De notat ns a c a o conexiune socket stream este bidirect ional a si comunicarea n cele dou a sensuri se desf a soar a independent si prin acelea si mecanisme. Sintaxa funct iilor este:
ssize_t send(int sd, const void *buf, size_t len, int flags); ssize_t recv(int sd, void *buf, size_t len, int flags);
Funct ia send() trimite pe conexiunea identicat a prin socket-ul sd un num ar de len octet i din variabila a c arui adres a este indicat a de pointer-ul buf. Funct ia returneaz a controlul dup a plasarea datelor de transmis n buerele sistemului de operare al ma sinii locale. Valoarea returnat a de funct ia send() este num arul de octet i scri si efectiv, sau 1 n caz de eroare. Datele plasate n buer-e prin apelul send() urmeaz a a trimise spre receptor f ar a alte act iuni din partea emit atorului. In modul normal de lucru, dac a nu exist a spat iu sucient n buer-ele sistemului de operare, funct ia send() a steapt a ca aceste buer-e s a se elibereze (prin transmiterea efectiv a a datelor c atre sistemul de operare al receptorului si citirea lor de c atre procesul receptor). Aceast a a steptare are ca rol fr anarea procesului emit ator dac a acesta produce date la un debit mai mare dec at cel cu care este capabil a ret eaua s a le transmit a sau procesul receptor s a le preia. Prin plasarea valorii MSG_DONTWAIT n parametrul flags, acest comportament este modicat. Astfel, n acest caz, dac a nu exist a sucient spat iu n buer-ele sistemului de operare, funct ia send() scrie doar o parte din datele furnizate si returneaz a imediat controlul procesului apelant. In cazul n care funct ia send() nu scrie nimic, ea returneaz a valoarea 1 si seteaz a variabila global a errno la valoarea EAGAIN. In cazul n care funct ia send() scrie cel put in un octet, ea returneaz a num arul de octet i scri si efectiv. In ambele cazuri, este sarcina procesului emit ator s a apeleze din nou, la un moment ulterior, funct ia send() n vederea scrierii octet ilor r ama si. Deoarece funct ia send() returneaz a nainte de transmiterea efectiv a a datelor, eventualele erori legate de transmiterea datelor nu pot raportate
apelantului prin valoarea returnat a de send(). Pot s a apar a dou a tipuri de erori: c aderea ret elei si nchiderea conexiunii de c atre receptor. Aceste erori vor raportate de c atre sistemul de operare al emit atorului procesului emit ator prin aceea c a apeluri send() ulterioare pentru acela si socket vor returna 1. In plus, pe sistemele de tip UNIX, apelul send() pentru o conexiune al c arui cap at destinat ie este nchis duce la primirea de c atre procesul emit ator a unui semnal SIGPIPE, care are ca efect implicit terminarea imediat a a procesului emit ator. Funct ia recv() extrage date sosite pe conexiune si aate n buerul sistemului de operare local. Funct ia prime ste ca argumente identicatorul socket-ului corespunz ator conexiunii, adresa unei zone de memorie unde s a plaseze datele citite si num arul de octet i de citit. Num arul de octet i de citit reprezint a num arul maxim de octet i pe care funct ia i va transfera din buer-ul sistemului de operare n zona procesului apelant. Dac a num arul de octet i disponibili n buer-ele sistemului de operare este mai mic, doar octet ii disponibili n acel moment vor transferat i. Dac a n momentul apelului nu exist a nici un octet disponibil n buer-ele sistemului de operare local, funct ia recv() a steapt a sosirea a cel put in un octet. Funct ia returneaz a num arul de octet i transferat i (citit i de pe conexiune). Comportamentul descris mai sus poate modicat prin plasarea uneia din urm atoarele valori n parametrul flags: n cazul n care nu este nici un octet disponibil, funct ia MSG DONTWAIT: recv() returneaz a valoarea 1 si seteaz a variabila global a errno la valoarea EAGAIN; ia recv() a steapt a s a e disponibili cel put in len octet i MSG WAITALL:funct si cite ste exact len octet i. Este important de notat c a datele sunt transmise de la sistemul de operare emit ator spre cel receptor n fragmente (pachete), c a mp art irea datelor n fragmente este independent a de modul n care au fost furnizate prin apeluri send() succesive si c a, n nal, fragmentele ce vor disponibile succesiv pentru receptor sunt independente de fragmentele furnizate n apelurile send(). Ca urmare, este posibil ca emit atorul s a trimit a, prin dou a apeluri send() consecutive, sirurile de octet i abc si def, iar receptorul, apel and repetat recv() cu len=3 si flags=0, s a primeasc a ab, cd si ef. Singurul lucru garantat este c a prin concatenarea tuturor fragmentelor trimise de emit ator se obt ine acela si sir de octet i ca si prin concatenarea tuturor fragmentelor primite de receptor. In cazul nchiderii conexiunii de c atre emit ator, apelurile recv() efectuate de procesul receptor vor citi mai nt ai datele r amase n buer-e, iar
dup a epuizarea acestora vor returna valoarea 0. Prin urmare, funct ia recv() returneaz a valoarea 0 dac a si numai dac a emit atorul a nchis conexiunea si toate datele trimise nainte de nchiderea conexiunii au fost deja citite. Dealtfel, valoarea 0 returnat a de recv() sau read() este semnalizarea uzual a a termin arii datelor de citit si se utilizeaz a si pentru a semnaliza sf ar situl unui sier sau nchiderii cap atului de scriere ntr-un pipe UNIX. 8.1.3.10. Funct iile shutdown() si close()
int shutdown(int sd, int how); int close(int sd);
Funct ia shutdown() nchide sensul de emisie, sensul de recept ie sau ambele sensuri de comunicat ie ale conexiunii identicate de indeticatorul de socket sd, conform valorii parametrului how: SHUT_WR, SHUT_RD sau respectiv SHUT_RDWR. Utilitatea principal a a funct iei este nchiderea sensului de emisie pentru a semnaliza celuilalt cap at terminarea datelor transmise (apelurile recv() din procesul de la cel alalt cap at al conexiunii vor returna 0). Funct ia shutdown() poate apelat a doar pe un socket conectat si nu distruge socketul. Funct ia close() distruge socket-ul sd. Dac a socket-ul era un socket conectat n acel moment, nchide ambele sensuri de comunicat ie. Dup a apelul close(), identicatorul de socket este eliberat si poate utilizat ulterior de c atre sistemul de operare pentru a identica socket-uri sau alte obiecte create ulterior. Apelul close() este necesar pentru a elibera resursele ocupate de socket. Poate efectuat oric and asupra oric arui tip de socket. Terminarea unui proces, indiferent de modul de terminare, are ca efect si distrugerea tuturor socket-urilor existente n acel moment, printr-un mecanism identic cu c ate un apel close() pentru ecare socket. 8.1.3.11. Funct iile sendto() si recvfrom()
ssize_t sendto(int sd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t recvfrom(int sd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
Funct ia sendto() trimite o datagram a de pe un socket dgram. Parametrii reprezint a: sd: socket-ul de pe care se transmite datagrama, adic a a c arui adres a va utilizat a ca adres a surs a a datagramei;
to: pointer spre structura ce cont ine adresa de ret ea a destinatarului; tolen reprezint a lungimea structurii pointate de to; buf: pointer spre o zon a de memorie ce cont ine datele utile; len reprezint a lungimea datelor utile. Datele utile sunt un sir arbitrar de octet i. Funct ia returneaz a num arul de octet i ai datagramei trimise (adic a valoarea lui len) n caz de succes si 1 n caz de eroare. Funct ia returneaz a controlul apelantului nainte ca pachetul s a e livrat destinatarului si ca urmare eventuala pierdere a pachetului nu poate raportat a apelantului. Funct ia recvfrom() cite ste din buerele sistemului de operare local urm atoarea datagram a adresat a socket-ului dat ca parametru. Dac a nu exist a nici o datagram a, funct ia a steapt a sosirea urm atoarei datagrame, cu except ia cazului n care flags cont ine valoarea MSG_DONTWAIT, caz n care recvfrom() returneaz a imediat valoarea 1 si seteaz a errno la valoarea EAGAIN. Datagrama este citit a n zona de memorie pointat a de parametrul buf si a c arei dimensiune este dat a n variabila len. Funct ia recvfrom() returneaz a dimensiunea datagramei. Dac a datagrama este mai mare dec at valoara parametrului len, nalul datagramei este pierdut; funct ia recvfrom() nu scrie niciodat a dincolo de len octet i n memoria procesului. Adresa emit atorului datagramei este plasat a de funct ia recvfrom() n variabila pointat a de from. Parametrul fromlen trebuie s a pointeze la o variabil a de tip ntreg a c arui valoare, nainte de apelul recvfrom(), trebuie s a e egal a cu dimensiunea, n octet i, a zonei de memorie alocate pentru adresa emit atorului. Funct ia recvfrom() modic a aceast a variabil a, pun and n ea dimensiunea utilizat a efectiv pentru scrierea adresei emit atorului.
8.1.4. Exemple
8.1.4.1. Comunicare prin conexiune D am mai jos textul surs a ( n C pentru Linux) pentru un client care se conecteaz a la un server TCP/IPv4 specicat prin numele ma sinii si num arul portului TCP (date ca argumente n linia de comand a), i trimite un sir de caractere xat (abcd), dup a care cite ste si a seaz a tot ce trimite server-ul.
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) {
D am n continuare textul surs a pentru un server care a steapt a conectarea unui client pe portul specicat n linia de comand a, a seaz a adresa de la care s-a conectat clientul (adresa IP si num arul de port), cite ste de pe conexiune
si a seaz a pe ecran tot ce transmite clientul (p an a la nchiderea sensului de conexiune de la client la server) si apoi trimite napoi textul xyz.
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) { int sd, sd_c, port, r; struct sockaddr_in my_addr, cli_addr; socklen_t cli_addr_size; char buf[100]; if(argc!=2){ fprintf(stderr, "Utilizare: srv port\n"); return 1; } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; if(1!=sscanf(argv[1], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } my_addr.sin_port=htons(port); my_addr.sin_addr.s_addr=htonl(INADDR_ANY); sd=socket(PF_INET, SOCK_STREAM, 0); if(-1==bind(sd, (struct sockaddr*)&my_addr, sizeof(my_addr)) ) { perror("bind()"); return 1; } listen(sd, 1); cli_addr_size=sizeof(cli_addr); sd_c = accept(sd, (struct sockaddr*)&cli_addr, &cli_addr_size); printf("client conectat de la %s:%d\n", inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port) ); close(sd); while((r=recv(sd_c, buf, 100, 0))>0){
8.1.4.2. Comunicare prin datagrame Mai jos este descris un client UDP/IPv4 care se conecteaz a la un server specicat prin numele ma sinii sau adresa IP si num arul de port. Clientul trimite serverului o datagram a de 4 octet i cont in and textul abcd si a steapt a o datagram a ca r aspuns, a c arei cont inut l a seaz a.
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h> int main(int argc, char* argv[]) { int port, sd, r; struct hostent* hh; struct sockaddr_in adr; socklen_t adr_size; char buf[100]; if(argc!=3){ fprintf(stderr, "Utilizare: cli adresa port\n"); return 1; } memset(&adr, 0, sizeof(adr)); adr.sin_family = AF_INET; if(1!=sscanf(argv[2], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } adr.sin_port = htons(port); hh=gethostbyname(argv[1]); if(hh==0 || hh->h_addrtype!=AF_INET || hh->h_length<=0){
In continuare descriem un server UDP/IPv4. Acesta a steapt a o datagram a de la un client, a seaz a adresa de la care a fost trimis a datagrama precum si cont inutul datagramei primite. Apoi trimite napoi, la adresa de la care a sosit datagrama de la client, o datagram a cont in and sirul de 3 octet i xyz.
#include #include #include #include #include #include #include <sys/socket.h> <netinet/in.h> <arpa/inet.h> <netdb.h> <stdio.h> <unistd.h> <string.h>
si recept ia prin
Tip msg; ... recv(sd, &msg, sizeof(msg), MSG_WAITALL);
unde Tip este un tip de date oarecare declarat identic n ambele programe (emit ator si receptor). Exist a ns a c ateva motive pentru care o astfel de abordare nu este, n general, acceptabil a. Vom descrie n continuare problemele legate de ecare tip de date n parte, precum si c ateva idei privind rezolvarea lor. 8.2.1.1. Tipuri ntregi La transmiterea variabilelor ntregi apar dou a probleme de portabilitate: dimensiunea unui ntreg nu este, n general, standardizat a exact ( n C/C++ un int poate avea 16, 32 sau 64 de bit i); ordinea octet ilor n memorie (big endian sau little endian ) depinde de arhitectura calculatorului. Dac a scriem un program pentru un anumit tip de calculatoare si pentru un anumit compilator, pentru care stim exact dimensiunea unui int si ordinea octet ilor, putem transmite si recept iona date prin secvent e de tipul:
int a; ... send(sd, &a, sizeof(a), 0);
pentru receptor. Dac a ns a emit atorul este compilat pe o platform a pe care int are 16 bit i si este reprezentat big endian, iar receptorul este compilat pe o platform a pe care int are 32 de bit i si este little endian, cele dou a programe nu vor comunica corect. Pentru a putea scrie programe portabile, biblioteca C standard pe sisteme de tip UNIX cont ine, n header-ul arpa/inet.h: typedef-uri pentru tipuri ntregi de lungime standardizat a (independent a de compilator): uint16_t de 16 bit i si uint32_t de 32 de bit i; funct ii de conversie ntre formatul locat (little endian sau big endian, dup a caz) si formatul big endian, utilizat cel mai adesea pentru datele transmise n Internet. Aceste funct ii sunt: htons() si htonl() (de la host to network, short, respectiv host to network, long ), pentru conversia de la format local la format big endian (numit si format ret ea ), si ntohs() si ntohl() pentru conversia n sens invers. Variantele cu s (htons() si ntohs()) convertesc ntregi de 16 bit i (de tip uint16_t, iar cele cu l convertesc ntregi de 32 de bit i (uint32_t). Implementarea acestor typedef-uri si functii depinde de platform a (de arhitectur a si de compilator). Utilizarea lor permite ca restul sursei programului s a nu depind a de platform a. Transmiterea unui ntreg, ntr-un mod portabil, se face astfel:
uint32_t a; ... a=htonl(a); send(sd, &a, sizeof(a), 0);
Indiferent pe ce platform a sunt compilate, fragmentele de mai sus emit, respectiv recept ioneaz a, un ntreg reprezentat pe 32 de bit i n format big endian.
8.2.1.2. S iruri de caractere si tablouri Transmiterea sau memorarea unui tablou necesit a transmiterea (respectiv memorarea), ntr-un fel sau altul, a num arului de elemente din tablou. Dou a metode sunt frecvent utilizate n acest scop: transmiterea n prealabil a num arului de elemente si transmiterea unui element cu valoare speciale (terminator) dup a ultimul element. Pe l ang a num arul de elemente efective ale tabloului este necesar a cunoa sterea num arului de elemente alocate. La reprezentarea n memorie sau n siere pe disc, sunt utilizate frecvent tablouri de dimensiune xat a la compilare. Avantajul dimensiunii xe este c a variabilele situate dup a tabloul respectiv se pot plasa la adrese xe si pot accesate direct; dezavantajul este un consum sporit de memorie si o limit a mai mic a a num arului de obiecte ce pot puse n tablou. La transmiterea tablourilor prin conexiuni n ret ea, de regul a num arul de elemente transmise este egal cu num arul de elemente existente n mod real, plus elementul terminator (dac a este adoptat a varianta cu terminator). Nu sunt utilizate tablouri de lungime x a deoarece datele situate dup a tablou oricum nu pot accesate direct. In cazul reprezent arii cu num ar de elemente, receptorul cite ste nt ai num arul de elemente, dup a care aloc a spat iu (sau veric a dac a spat iul alocat este sucient) si cite ste elementele. In cazul reprezent arii cu terminator, receptorul cite ste pe r and ecare elemen si-i veric a valoarea; la nt alnirea terminatorului se opre ste. Inainte de-a citi ecare element, receptorul trebuie s a verice dac a mai are spat iu alocat pentru acesta, iar n caz contrar e s a realoce spat iu pentru tablou si s a copieze n spat iul nou alocat elementele citite, e s a renunt e si s a semnaleze eroare. Exemplul 8.2: Se cere transmiterea unui sir de caractere. Reprezentarea sirului pe conexiune este: un ntreg pe 16 bit i big endian reprezent and lungimea sirului, urmat de sirul propriu-zis (reprezentare diferit a deci de reprezentarea uzual a n memorie, unde sirul se termin a cu un caracter nul). Descriem n continuare emit atorul:
char* s; uint16_t l; ... l=htons(strlen(s)); send(sd, &l, 2, 0); send(sd, s, strlen(s), 0);
si receptorul:
De remarcat la receptor necesitatea de-a reface terminatorul nul, netransmis prin ret ea. Exemplul 8.3: Se cere transmiterea unui sir de caractere. Reprezentarea pe conexiune va ca un sir de caractere urmat de un caracter nul (adic a reprezentare identic a celei din memorie, dar pe lungime variabil a, egal a cu minimul necesar). Emit atorul este:
char* s; ... send(sd, s, strlen(s)+1, 0);
Receptorul:
char s[500]; int dim_alloc=500, pos, ret; while(pos<dim_alloc-1 && 1==(ret=recv(sd, s+pos, 1, 0)) && s[pos++]!=0) {} if(ret==1 && s[pos-1]==0){ // sir citit cu succes } else { // tratare eroare }
8.2.1.3. Variabile compuse (struct-uri) La prima vedere, variabilele compuse (struct-urile) sunt reprezentate la fel si n memorie si pe conexiune se reprezint a c ampurile unul dup a altul si ca urmare transmiterea lor nu ridic a probleme deosebite. Din p acate ns a, reprezentarea unei structuri n memorie depinde de platform a (arhitectura calculatorului si compilator), datorit a problemelor
privind alinierea ntregilor. Din considerente legate de arhitectura magistralei de date a calculatorului (detalii ce ies din cadrul cursului de fat a), accesarea de c atre procesor a unei variabile de tip ntreg sau real a c arui adres a n memorie nu este multiplu de un anumit num ar de octet i este pentru unele procesoare imposibil a iar pentru celelalte inecient a. Num arul ce trebuie s a divid a adresa se nume ste aliniere si este de obicei minimul dintre dimensiunea variabilei si l a timea magistralei. Astfel, dac a magistrala de date este de 4 octet i, ntregii de 2 octat i trebuie s a e plasat i la adrese pare, iar ntregii de 4 sau 8 octet i trebuie s a e la adrese multiplu de 4; nu exist a restrict ii cu privire la caractere ( ntregi pe 1 octet). Compilatorul, mpreun a cu funct iile de alocare dinamic a a memoriei, asigur a alinierea recurg and la urm atoarele metode: adaug a octet i nefolosit i ntre variabile, adaug a octet i nefolosit i ntre c ampurile unei structuri, adaug a octet i nefolosit i la nalul unei structuri ce face parte dintr-un tablou, aloc a variabilele de tip structur a la adrese multiplu de o l a timea magistralei. Ca urmare, reprezentarea n memorie a unei strcturi depinde de platform a si, n consecint a, un fragment de cod de forma:
struct Msg { char c; uint32_t i; }; Msg m; ... m.i=htonl(m.i); send(sd, &m, sizeof(m), 0);
este neportabil. In funct ie de l a timea magistralei, de faptul c a alinierea incorect a duce la imposibilitatea acces arii variabilei sau doar la inecient a si, n acest din urm a caz, de opt iunile de compilare, dimensiunea structurii Msg de mai sus poate 5, 6 sau 8 octet i, ntre cele dou a c ampuri ind respectiv 0, 1 sau 3 octet i neutilizat i. Rezolvarea problemei de portabilitate se face transmit and separat ecare c amp:
struct Msg { char c; uint32_t i;
8.2.1.4. Pointeri Deoarece un pointer este o adres a n cadrul unui proces, transmiterea unui pointer c atre un alt proces este complet inutil a.
si
FILE* f; char s[512]; int i,r; ... while( (r=fgetc(f))!=EOF && (s[i++]=r)!=0) {}
Ambele fragmente de cod citesc de pe un socket stream un sir de octet i terminat cu un caracter nul. Primul fragment de cod apeleaz a recv() o dat a pentru ecare caracter al sirului. Al doilea fragment apeleaz a fgetc() o dat a pentru ecare caracter al sirului. La o mic a parte dintre aceste apeluri, functia fgetc() va apela n spate funct ia sistem read() pentru a citi efectiv datele de pe conexiune; la restul apelurilor, fgetc() returneaz a apelantului c ate un caracter aat deja n zona tampon. Ca rezultat global, al doilea fragment de cod se va executa de c ateva zeci de ori mai repede dec at primul. Testarea nchiderii conexiunii si termin arii datelor se poate face apel and funct ia foef(). De notat c a aceast a funct ie poate s a returneze false chiar dac a s-a ajuns la nalul datelor; rezultatul true este garantat doar dup a o tentativ a nereu sit a de-a citi dincolo de nalul datelor transmise. Pentru scriere, funct iile de bibliotec a corespunz atoare sunt fwrite(), fprintf(), fputs() si fputc(). Aceste funct ii scriu datele n zona tampon din structura FILE. Transmiterea efectiv a pe conexiune (sau scrierea n sier) se face automat la umplerea zonei tampon. Dac a este necesar s a ne asigur am c a datele au fost transmise efectiv (sau scrise n sier), funct ia fflush() efectueaz a acest lucru. Funct ia fclose() de asemenea trimite sau scrie ultimele date r amase n zona tampon. Asocierea unei zone tampon unei conexiuni deja deschise se face apel and funct ia fdopen(). Funct ia fdopen() prime ste doi parametri. Primul parametru este identicatorul de socket c aruia trebuie s a-i asocieze zona tampon (identicatorul returnat de funct ia socket() sau accept()). Al doilea parametru specic a funct iei fdopen() dac a trebuie s a asocieze zona tampon pentru citire sau pentru scriere; este de tip sir de caractere si poate avea valoarea "r" pentru citire sau "w" pentru scriere. Pentru un socket stream, cele dou a sensuri function and complet independent, aceluia si socket i se pot asocia dou a zone tampon (dou a structuri FILE), c ate una pentru ecare sens. Funct ia fclose() scrie informat iile r amase n zona tampon (dac a zona tampon a fost creat a pentru sensul de scriere), elibereaz a memoria alocat a zonei tampon si nchide conexiunea.
In acest fel, serverul nu este pus n a steptare dac a un client nu i-a trimis nimic. Dezavantajul solut iei este acela c a, dac a o perioad a de timp nici un client nu trimite nimic, atunci bucla se execut a n mod repetat, consum and inutil timp de procesor. Pentru evitarea inconvenientului solut iei anterioare, sistemele de operare de tip UNIX ofer a o funct ie sistem, numit a select(), care prime ste o list a de identicatori de socket si, opt ional, o durat a, si pune procesul n a steptare p an a c and e exist a date disponibile pe vreunul din socket -ii dat i, e expir a durata de timp specicat a. O abordare complet diferit a este aceea de-a crea mai multe procese sau, n sistemele de operare moderne, mai multe re de execut ie (thread-uri) n cardul procesului server ecare proces sau r de execut ie urm arind un singur client. In acest caz, procesul sau rul de execut ie poate executa recv() blocant asupra socket-ului corespunz ator clientului s au. In lipsa
activit a tii client ilor, ecare proces sau r de execut ie al serverului este blocat n apelul recv() asupra socket-ului corespunz ator. In momentul n care un client trimite date, nucleul sistemului de operare treze ste procesul sau rul ce executa recv() pe socket-ul corespunz ator; procesul sau rul execut a prelucr arile necesare dup a care probabil execut a un nou recv() blocant. Cazul unui server cu mai mult i client i nu este singura situat ie n care este nevoie de a urm ari simultan evenimente pe mai multe canale. Alte situat ii sunt: un client care trebuie s a urm areasc a simultan act iunile utilizatorului si mesajele sosite de la server; un server care poate trimite date cu debit mai mare dec at capacitatea ret elei sau capacitatea de prelucrare a clientului; n acest caz serverul are de urm arit simultan, pe de o parte noi cereri ale client ilor, iar pe de alt a parte posibilitatea de-a trimite noi date spre client i n urma faptului c a vechile date au fost prelucrate de ace stia. un server care trebuie s a preia mesaje de la client ii conectat i si, n acela si timp, s a poat a accepta client i noi. Un aspect important ce trebuie urm arit n proiectarea unui server concurent este servirea echitabil a a client ilor, independent de comportamentul acestora. Dac a un client trimite cereri mai repede dec at este capabil serverul s a-l serveasc a, serverul trebuie s a execute o parte din cereri, apoi s a serveasc a cereri ale celorlalt i client i, apoi s a revin a la primul si s a mai proceseze o parte din cereri si a sa mai departe. Nu este permis ca un client care inund a serverul cu cereri s a acapareze ntreaga putere de calcul a serverului si ceilalt i client i s a a stepte la innit.
Capitolul 9
Vom studia n continuare standardul utilizat de cele mai multe ret ele locale. IEEE 802 dene ste de fapt o familie de tipuri de ret ele locale, dintre care cele mai des nt alnite sunt: ret ele Ethernet (de 10, 100 sau 1000 Mbit/s), construite conform standardului IEEE 802.3; ret ele numite Wireless Ethernet, conform standardului IEEE 802.11.
conectate, n paralel, interfet ele de ret ea ale calculatoarelor (g. 9.1). In acest sistem, semnalul emis de orice interfat a de ret ea este recept ionat de toate celelalte interfet e de ret ea conectate la acel cablu.
stat ie stat ie stat ie stat ie
terminator
cablu magistral a
terminator
Comunicat ia se face prin pachete de dimensiune variabil a. Dou a interfet e care emit simultan si bruiaz a reciproc semnalele emise; este necesar deci un mecanism de control al accesului la mediu (vezi 4.2). IEEE 802.3 alege solut ia cu detectarea coliziunilor si retransmiterea pachetelor distruse de coliziuni. Deoarece ecare interfat a de ret ea ,,aude toate pachetele emise n ret ea, este prev azut un mecanism prin care interfat a s a identice si s a livreze sistemului de operare numai pachetele ce i sunt destinate. Anume, ecare interfat a de ret ea are o adres a unic a, numit a adres a zic a sau adres a MAC si ecare pachet poart a adresa sursei si adresa destinat iei. Repetorul (engl. repeater ) este un dispozitiv care este conectat la mai multe cabluri de ret ea si copiaz a pachetele de date de pe ecare cablu pe celelalte. Repetorul este conectat la ecare cablu de ret ea ntocmai ca o interfat a de ret ea a unui calculator. Interfat a repetorului c atre cablul de ret ea se nume ste port . Oridec ateori repetorul recept ioneaz a un pachet printr-unul dintre porturile sale (printr-unul din cablurile de ret ea conectate la repetor), l retransmite (repet a) pe toate celelalte cabluri de ret ea conectate (toate cu except ia celui prin care a intrat pachetul). Retransmiterea se face cu nt arziere de ordinul duratei c atorva bit i, n orice caz mai put in dec at durata unui pachet. Dac a repetorul recept ioneaz a simultan pachete prin dou a sau mai multe porturi, consider a c a are loc o coliziune si semnalizeaz a acest lucru emit and, prin toate porturile, un semnal special de anunt are a coliziunii. Acest semnal de coliziune se propag a n toat a ret eaua.
repetor
repetor
Figura 9.2: O ret ea construit a din mai multe cabluri magistral a interconectate prin repetoare.
Repetoarele permit construirea unei ret ele ntinse pe o distant a mai mare dec at lungimea maxim a a unui singur cablu (lungime limitat a de atenuarea semnalului pe cablu). O ret ea construit a cu repetoare este desenat a n gura 9.2. Odat a cu ieftinirea repetoarelor, a devenit curent a utilizarea c ate unui cablu pentru conectarea ec arui calculator la un repetor. In acest fel, un cablu de ret ea va avea legate la el doar dou a echipamente: e o interfat a de ret ea si un repetor, e dou a repetoare, e dou a interfet e de ret ea ( n acest din urm a caz rezult a o ret ea format a doar din dou a calculatoare). De regul a, cablul de leg atur a folosit n aceste cazuri este o leg atur a duplex (vezi mai jos) si poate conecta doar dou a echipamente. Repetoarele utilizate n aceast a situat ie se mai numesc hub -uri (engl. hub = butuc de roat a). Comutatoarele. Un comutator (eng. switch ) este un dispozitiv asem an ator cu un repetor, dar cu urm atoarele modic ari: - este capabil s a memoreze c ate un pachet ntreg pentru ecare port; - dac a prime ste simultan dou a sau mai multe pachete, le memoreaz a si le retransmite pe r and; - dac a este posibil, n loc s a retransmit a un pachet prin toate porturile comutatorului, l retrimite doar pe calea c atre interfat a de ret ea
c areia i este destinat pachetul (a se vedea 9.1.5 pentru detalii). Leg aturile duplex. Cablurile de leg atur a ntre dou a echipamente pot f acute cu c ai independente pentru cele dou a sensuri. Dac a si echipamentele conectate sunt capabile s a emit a si s a recept ioneze simultan, este posibil a realizarea unei comunicat ii duplex ntre cele dou a echipamente. Exist a n cadrul IEEE 802.3 mai multe sub-standarde legate de nivelul zic, privitoare la cablurile de leg atur a ntre echipamente. Cu except ia debitului de comunicat ie si a existent ei sau absent ei posibilit a tii comunicat iei duplex, tipul cablului de leg atur a ales nu afecteaz a restul ret elei. Pentru echipamente capabile s a funct ioneze dup a mai multe standarde privind nivelul zic (debite diferite si mod semi-duplex sau duplex), exist a un protocol de negociere al modului de transmisie la nivel zic folosit; acesta va studiat n 9.1.1 cu ocazia prezent arii standardului 10 Base T.
pentru reducerea interferent elor cu c ampurile electromagnetice din jur. Caracteristicile electrice ale cablurilor, specicate prin standard, sunt n general ndeplinite de c atre tronsoanele de p an a la 100 m construite din cablurile folosite n mod curent pentru ret eaua telefonic a si clasicate, n sistemul american de telefonie, UTP Cat 3 (UTP de la Unshielded Twisted Pairs perechi torsadate neecranate, iar Cat 3, de la Category 3 ). D am n continuare, cu titlu informativ, c ateva caracteristici: impedant a caracteristic a: 100 ; atenuare: maxim 11,5 dB pentru tot tronsonul de cablu (de fapt acesta este parametrul care limiteaz a lungimea unui tronson de cablu; dac a folosim un cablu cu atenuarea pe 200 m mai mic a de 11,5 dB, putem cabla un tronson de 200 m cu astfel de cablu f ar a probleme); timpul de propagare al semnalului: maxim 1000 ns. Standardul cere, n plus, ca viteza de propagare s a e cel put in 0,585 c (adic a cel put in de 0,585 de ori viteza luminii n vid). Conectarea cablului la interfat a de ret ea sau la repetoare se realizeaz a prin intermediul unui conector cu 8 pini, asem an ator cu cel de telefon, standardizat sub numele RJ45. Utilizarea pinilor este urm atoarea: emisia ntre pinii 1 si 2 si recept ia ntre pinii 3 si 6. Pinii 4, 5, 7 si 8 sunt neutilizat i. Conductoarele legate la emit ator la un cap at trebuie legate la receptor la cel alalt cap at (g. 9.3). Acest lucru se poate realiza n dou a moduri: 1. Legarea cablului la conectoare se face ,, n X: pinul 1 de pe un conector se leag a la pinul 3 de pe cel alalt conector, 2 cu 6, 3 cu 1 si respectiv 6 cu 2, conform g. 9.3(a)). Un astfel de cablu se nume ste cablu inversor sau cablu X. 2. Cablul este ,,unu-la-unu(adic a pinul 1 de pe un conector este legat cu pinul 1 de pe cel alalt conector, 2 cu 2, 3 cu 3 si 6 cu 6), iar inversarea se face n dispozitivul de la un cap at al cablului, prin legarea inversat a a conectorului la circuite: pinii 1 si 2 la receptor si 3 si 6 la emit ator, ca n g. 9.3(b). Standardul recomand a inversarea leg aturilor n conectoarele repetoarelor si cere marcarea conectoarelor cu inversare printr-un simbol ,,X. Conectarea a dou a echipamente prev azute cu inversare n conector se face cu ajutorul unui cablu inversor, ca n gura 9.3(c). Exist a si dispozitive care detecteaz a automat pinii folosit i la emisie si recept ie. Aceste dispozitive sunt desemnate auto MDI/MDIX. Dac a la unul
emit ator
receptor
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
emit ator
receptor
receptor
1 2 3 4 5 6 7 8
emit ator
receptor
conector normal
conector cu inversare
emit ator
1 2 3 4 5 6 7 8
receptor
emit ator
conector cu inversare
conector cu inversare
Figura 9.3: Conectarea a dou a echipamente 10 Base T. Sunt date si culorile standard pentru izolat iile conductoarelor din cablu.
dintre capete se g ase ste un astfel de dispozitiv, se poate utiliza at at cablu unu-la-unu c at si cablu inversor, f ar a nici un fel de restrict ii. Mecanismul de detectare a pinilor utilizat i se bazeaz a pe pulsurile pentru vericarea mediului, descrise mai jos. Transmiterea bit ilor se face n codicare Manchester. Cele dou a nivele de tensiune, la emit ator, sunt unul ntre 2,2 V si 2,8 V si cel alalt ntre 2,2 V si 2,8 V. Pe l ang a transmiterea informat iei utile, standardul prevede emiterea periodic a, de c atre ecare echipament, a unui puls de testare a cablului. O interfat a de ret ea sau un repetor care nu prime ste periodic pulsuri de test de la cel alalt cap at va ,,deduce c a leg atura nu este valid a. Starea leg aturii este semnalat a printr-un led; de asemenea, pl acile de ret ea semnaleaz a starea leg aturii printr-un bit de control ce poate citit de driver-ul pl acii de ret ea. O ad augire ulterioar a la standard prevede ca n secvent a de pulsuri de testare a cablului s a se codice disponibilitatea echipamentului ce le emite de a funct iona n regim duplex sau la o vitez a mai mare de 10 Mbit/s (adic a conform unuia din standardele descrise mai jos). Un echipament capabil de comunicat ie duplex si care este informat c a echipamentul de la cel alalt cap at este capabil de asemenea de comunicat ie duplex va intra automat n mod duplex. Un echipament vechi, dat and dinaintea acestei ad augiri la standard, va funct iona numai n regim semiduplex. P astrarea compatibilit a tii este asigurat a de faptul c a echipamentul vechi va nt elege pulsurile doar ca testarea liniei, iar pulsurile generate de el este put in probabil s a coincid a nt ampl ator cu pulsurile de negociere a modului de transmisie. 100 Base Tx. Este foarte asem an ator cu 10 Base T, dar obt ine o vitez a de transmisie de 100 Mbit/s. Cablul const a tot din dou a perechi de conductoare torsadate, ns a cu propriet a ti mai bune de transmitere a semnalului (obt ine acelea si caracteristici de atenuare p an a la frecvent e de 10 ori mai mari). Cablurile utilizate sunt cele desemnate UTP Cat 5 . Lungimea maxim a a unui tronson este de 100 m. Conectoarele si utilizarea pinilor sunt identice cu 10 Base T. Din acest motiv un cablu pentru 100 Base Tx poate ntotdeauna utilizat la o leg atur a 10 Base T. In general, echipamentele capabile s a opereze conform standardului 100 Base Tx sunt capabile s a lucreze si cu 10 Base T. Stabilirea vitezei se face printr-un mecanism similar cu cel utilizat la 10 Base T pentru negocierea modului semiduplex sau duplex. Trebuie ns a spus c a mecanismul de negociere
nu testeaz a si calitatea cablului; din acest motiv, dac a leg am o plac a de ret ea de 100 Mbit/s la un hub sau switch de 100 Mbit/s printr-un cablu ce nu permite 100 Mbit/s (de exemplu Cat 3 n loc de Cat 5 ), este necesar s a congur am manual viteza de 10 Mbit/s. 100 Base T4. Transmite 100 Mbit/s semi-duplex, utiliz and cabluri Cat 3. Sunt necesare 4 perechi de conductoare (8 conductoare n total). C ate o pereche de conductoare este rezervat a pentru ecare sens. Celelalte dou a perechi se utilizeaz a n sensul n care are loc efectiv transmiterea informat iei (adic a, ntotdeauna trei perechi sunt utilizate pentru transmiterea informat iei si a patra este temporar nefolosit a). Codicarea informat iei este mai special a, utiliz and 3 nivele de semnalizare n loc de obi snuitele 2 si transmit and simultan pe trei canale, pentru a obt ine un semnal ce se ncadreaz a n banda de trecere a unui cablu Cat 3.
emit ator receptor bidirect ional 1 bidirect ional 2
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Figura 9.4: Utilizarea pinilor si conectarea ntre echipamente la 100 Base T4.
Conectoarele sunt tot RJ45, cu urm atoarea utilizare a pinilor: emisie: pinii 1 si 2; recept ie: 3 si 6, bidirect ional 1: pinii 4 si 5; bidirect ional 2: pinii 7 si 8. Ca si la celelalte cabluri, descrise mai sus, este necesar a o ncruci sare, realizat a e n cablu, e n conectorul unuia dintre echipamente. Standardul cere inversarea at at a emisiei cu recept ia c at si a celor dou a leg aturi bidirect ionale (g. 9.4). Intruc at n majoritatea instalat iilor sunt disponibile cabluri Cat 5, utilizarea standardului 100 Base T4 este extrem de rar a. 100 Base T2. Transmite 100 Mbit/s duplex, utiliz and dou a perechi Cat 3. Ca si la 100 Base T4, se utilizeaz a o codicare complicat a, ns a obt ine performant ele lui 100 Base Tx pe cabluri identice cu cele folosite de 10 Base T. Utilizarea lui este rar a, datorit a r asp andirii cablului Cat 5. 1000 Base T. Transmite 1 Gbit/s duplex, utiliz and 4 perechi Cat 5. Leg atura const a n patru perechi torsadate (8 conductoare) conforme Cat 5, de lungime maxim 100 m.
Se utilizeaz a o schem a de codicare mai complicat a, ce utilizeaz a ecare pereche de conductoare n regim duplex. Conectoarele folosite sunt tot RJ45. Din rat iuni de compatibilitate, leg aturile trebuie s a realizeze aceea si inversare a unor perechi de re ca si la 100 Base T4 (g. 9.4). Majoritatea pl acilor de ret ea si celorlalte echipamente pentru ret ele IEEE 802.3, produse recent si desemnate Ethernet gigabit, implementeaz a standardele 10 Base T, 100 Base Tx si 1000 Base T. 1000 Base Cx. Transmite 1 Gbit/s duplex utiliz and 2 perechi de conductoare de construct ie specal a. Se utilizeaz a c ate o pereche pentru ecare sens. Standardul permite dou a tipuri de conectoare: conectoare trapezoidale cu 9 pini (identice cu cele utilizate pentru porturile seriale) sau ni ste conectoare cu 8 pini asem an atoare, dar incompatibile, cu RJ45. Datorit a incompatibilit a tii cu 10 Base T si 100 Base Tx, put ine echipamente utilizeaz a 1000 Base Cx. Realizarea practic a a cablajelor Cablurile UTP Cat 5 folosite au de obicei 4 perechi de re torsadate (8 re n total), invelite toate ntr-o teac a protectoare. Doar 2 perechi (4 re) sunt utilizate efectiv de leg aturile 10 Base T si 100 Base Tx. In cadrul ec arei perechi, unul din re are izolat ia ntr-o culoare plin a iar cel alalt este combinat, alb altern and cu culoarea rului pereche. Culorile folosite pentru perechi sunt portocaliu, verde, albastru si maro. Ment ion am c a se comercializeaz a, din p acate, si cabluri n care rele ce ar trebui s a e colorate cu alb plus o culoare sunt doar albe si, ca urmare, pentru a le identica este necesar s a se desfac a teaca protectoare pe o lungime sucient de mare pentru a vedea cum sunt torsadate rele (care cu care este mperecheat prin r asucire). Schema de conectare standardizat a este dat a n tabela 9.1. Varianta ,,normal este utilizat a la cablurile unu-la unu, precum si la unul din capetele cablurilor inversoare. Varianta ,,inversat este utilizat a la cel alalt cap at al cablurilor inversoare. Varianta ,,semi-inversat a fost utilizat a frecvent pentru al doilea cap at al cablurilor inversoare, dar nu funct ioneaz a dec at pentru ret ele 10 Base T si 100 Base Tx, care nu utilizeaz a deloc perechile albastru si maro. Pentru 1000 Base T, varianta ,,semi-inversat nu este prev azut a de standard; ca urmare unele echipamente funct ioneaz a cu astfel de cabluri, iar alte echipamente nu funct ioneaz a.
Nr. pin 1 2 3 4 5 6 7 8
Culoare inversat alb-verde verde alb-portocaliu alb-maro maro portocaliu albastru alb-albastru
Atragem atent ia c a este foarte important s a se respecte schema de conectare din urm atoarele motive: R asucirea relor afecteaz a transmiterea semnalului si sensibilitatea la parazit i. Nerespectarea perechilor, adic a utilizarea pentru un circuit a dou a re care nu sunt mperecheate prin r asucire, duce la pierderi aleatoare de pachete, cu at at mai multe cu c at cablul este mai lung. Este necesar un efort inutil de mare pentru ata sarea corect a a conectorului la al doilea cap at, dac a ata sarea primului s-a f acut nestandard. Amatorii s a se g andeasc a la cazul c and cap atul cablat nestandard se g ase ste ntrun dulap nghesuit, iar cap atul unde trebuie ata sat cel alalt conector este c ateva etaje mai sus sau mai jos. . . Toate sistemele IEEE 802.3 ce utilizeaz a perechi torsadate sunt proiectate pentru leg aturi n interiorul unei singure cl adiri. La cablurile trase prin exterior, desc arc arile electrice din atmosfer a risc a s a induc a n cablul de ret ea tensiuni sucient de mari pentru a distruge pl acile de ret ea sau hub-urile sau switch-urile ata sate. Pentru leg aturi exterioare se recomand a utilizarea brelor optice.
multe pl aci de ret ea si care distribuie semnalul transmis de o plac a spre toate celelalte. Astfel, o stea pasiv a se comport a ntruc atva similar cu un cablu magistral a. O leg atur a punct la punct const a din dou a bre optice, c ate una pentru ecare sens; astfel, ecare leg atur a este capabile de transmisie duplex. 10 Base F: standardizeaz a transmisia prin br a optic a la un debit de transmisie de 10 Mbit/s. Rata erorilor, obt inut a cu o astfel de leg atur a, este n jur 9 9 de 10 (1 bit eronat la 10 bit i transmi si). Grupeaz a trei variante, cu diferent e foarte mici ntre ele ( n general, echipamentele corespunz atoare pot interconectate f ar a probleme): 10 Base FP, destinat utiliz arii n congurat ii cu stea pasiv a, ca atare funct ion and n mod semi-duplex. 10 Base FB, destinat utiliz arii n conjunct ie cu multe repetoare n cascad a si funct ion and n mod semi-duplex. 10 Base FL, funct ion and n mod duplex. Se utilizeaz a o br a optic a cu diametrul miezului de 62,5 m ( si diametrul exterior, al nveli sului, de 125 m), av and o vitez a de propagare de minim 0,67c, o atenuare de 3,75 dB/km (dac a atenuarea brei utilizate este mai mare, lungimea maxim a a unei leg aturi trebuie mic sorat a corespunz ator) si o band a de 160 MHzkm. Lungimea unui tronson de cablu este maxim 2 km (pentru 10 Base FP, lungimea ec arei conexiuni dintre placa de ret ea si steaua pasiv a este de cel mult 1 km). Conectarea cablului la echipamente se face cu ajutorul a dou a conectoare (c ate unul pentru ecare br a; reamintim c a se utilizeaz a o br a pentru ecare sens). Conectoarele sunt descrise de standardul IEC 60874-10:1992 sub numele BFOC/2.5. Atenuarea introdus a de conector nu trebuie s a dep a seasc a 1 dB, iar puterea undei reectate nu trebuie s a dep a seasc a 25 dB din puterea undei incidente. Pentru semnalizare se folosesc unde infraro sii cu lungimea de und a cuprins a ntre 800 nm si 910 nm. Nivelul semnalului emit atorului este ntre 15 dBm si 11 dBm pentru 10 Base FP si ntre 12 dBm si 11 dBm pentru 10 Base FB si 10 Base FL. Nivelul acceptabil pentru semnalul recept ionat este ntre 41 dBm si 27 dBm pentru 10 Base FP si ntre 32,5 dBm si 12 dBm pentru 10 Base FB si 10 Base FL. Semnalizarea utilizeaz a codicarea Manchester, ntocmai ca n cazul lui 10 Base T.
Spre deosebire de 10 Base T, nu se utilizeaz a pulsuri de testare a leg aturii care s a permit a negocierea modului semiduplex sau duplex sau a vitezei de transmisie; ca urmare, ace sti parametri trebuie congurat i manual. 100 Base FX: ofer a o vitez a de transfer de 100 Mbit/s. Pe l ang a viteza mai mare, 100 Base FX aduce c ateva modic ari fat a de 10 Base F, si anume utilizarea unor conectoare duble (conect and ambele bre simultan) si un mecanism de negociere a vitezei de transfer. 1000 Base SX si 1000 Base LX. Aceste standarde ofer a vitez a de transfer de 1 Gbit/s. Varianta 1000 Base SX transmite pe lungimea de und a de 850 nm, prin bre cu diametrul miezului de 62,5 m sau de 50 m. Lungimea maxim a de cablu ntre dou a echipamente este cuprins a ntre 220 m pentru br a cu dispersie intermodal a de 160 MHzkm si 550 m pentru br a cu dispersie intermodal a de 500 MHzkm. Varianta 1000 Base LX transmite pe lungimea de und a de 1310 nm, prin bre multimod de 62,5 m sau de 50 m sau monomod de 10 m. Lungimea maxim a de cablu ntre dou a echipamente este de 550 m pentru bra multimod si 5 km pentru bra monomod.
Semnalul este produs n codicare Manchester, cu durata unui bit de 100 ns; de aici viteza brut a de transmisie de 10 Mbit/s. Ca modicare fat a de codicarea Manchester clasic a, peste semnal este suprapus a o component a continu a, n scopul simplic arii detect arii coliziunilor. Pe cablul n repaus, tensiunea ntre conductoare este 0 V. Dac ao interfat a emite date, apare o tensiune continu a ntre conductorul central si tres a. Dac a dou a sau mai multe interfet e emit simultan, tensiunea continu a cre ste peste un anumit prag la care se declar a coliziune. La detectarea unei coliziuni, interfet ele de ret ea conectate la cablu opresc transmisia, conform metodei CSMA/CD ( 4.2.2). Exist a dou a sub-standarde privitoare la caracteristicile mecanice si electrice ale cablului de conectare: 10 Base 5 si 10 Base 2. 10 Base 5, numit si cablu galben sau cablu gros, prevede utilizarea unui cablu coaxial av and aproximativ 10 mm grosime total a, preferabil colorat n galben pentru o mai bun a vizibilitate. Lungimea total a maxim a a unui cablu este de 500 m. Standardul este g andit pentru cablare prin exteriorul cl adirilor. Denumirea sub-standardului vine de la viteza (10Mbit/s), codicarea ( n banda de baz a Base ) si lungimea maxim a a cablului, n sute de metri. Cu titlu informativ, d am c ateva detalii, specicate prin standard, cu privire la caracteristicile cablului: impedant a caracteristic a: 50 2 ; viteza de propagare a semnalului: minim 0,77 c; atenuarea: maxim 17 dB/km (8,5 dB pe tot tronsonul de cablu) la 10 MHz si maxim 12 dB/km (6 dB pe tot cablul) la 5 MHz; se accept a maxim 100 interfet e de ret ea pe un tronson de cablu. Cablul trebuie conectat la p am ant (la instalat ia de p am antare a cl adirii) ntr-un singur punct. Se specic a explicit prin standard c a at at cablul c at si elementele legate de el trebuie s a e izolate fat a de p am ant sau fat a de alte conductoare (cu except ia sus-ment ionatei unice leg aturi de p am antare). De asemenea, interfet ele de ret ea trebuie s a realizeze o izolare electric a ntre cablul de ret ea si circuitele calculatorului care s a reziste la o tensiune de 1500 V. La efectuarea lucr arilor asupra ret elei, persoanele care lucreaz a trebuie s a aib a grij a s a nu ating a simultan cablul de ret ea si un conductor legat la p am ant, iar n cazul n care conecteaz a sau deconecteaz a dou a tronsoane de ret ea s a aib a grij a s a nu nchid a contactul electric ntre cele dou a tronsoane prin corpul lor. Toate aceste m asuri sunt luate deoarece este posibil s a apar a tensiuni electrice ntre leg aturile de p am antarea ale instalat iilor electrice n cl adiri diferite. De
asemenea, este posibil ca ntr-un cablu, n special dac a este dus prin exterior, s a se induc a, inductiv sau capacitiv, tensiuni parazite importante din cauza ret elelor de alimentare electric a din apropiere sau din cauza fulgerelor. Circuitele electronice ale interfet elor de ret ea sunt mp art ite n dou a module: un modul, cont in and emit atorul si receptorul propriu-zise, se ata seaz a direct pe cablu; al doilea modul cuprinde logic a de comand a si este construit sub forma unei pl aci ce se introduce n calculator. Ata sarea modulului de semnal la cablul de ret ea se poate realiza n dou a moduri: prin conectarea celor dou a segmente de cablu de-o parte si de alta prin conectoare standardizate (conectoare coaxiale, numite conectoare N, cu prindere cu let); prin realizara unei prize vampir : se d a o gaur a n cablu f ar a a-i intrerupe conductoarele, prin gaur a se introduce o clem a ce va face contact cu rul central, iar leg atura cu tresa se face printr-o alt a clem a ce se str ange pe o zon a de pe care s-a ndep artat mantaua exterioar a a cablului. Leg atura dintre modulul emit ator-receptor (engl. transceiver ) si modulul de logic a al pl acii de ret ea sau al repetorului este de asemenea standardizat a, sub numele de interfat a AUI . Cablul de leg atur a dintre cele dou a module const a din 5 perechi de conductoare torsadate si ecranate individual, utilizeaz a conectoare trapezoidale cu 15 pini si poate avea lungime maxim a de aproximativ 50m. 10 Base 2 se mai nume ste cablu subt ire, cablu negru sau cablu BNC (oarecum incorect, BNC ind numele conectoarelor prev azute a utilizate pentru acest tip de leg atur a). Este foarte asem an ator cu 10 Base 5, ns a folose ste un cablu mai potrivit pentru cablaje n interior. Lungimea maxim a a unui tronson este de 185 m. Cablul este tot coaxial, dar este mai subt ire ( 5 mm) pentru a putea ndoit mai u sor (standardul cere s a poat a ndoit la raza de 5 cm), n schimb este admis s a aib a atenuare mai mare si, ca urmare, tronsoanele sunt limitate la lungime mai mic a. D am din nou c ateva caracteristici ale cablului: viteza de propagare: 0,65 c; atenuarea, pentru 185 m: maxim 8,5 dB la 10 MHz si maxim 6 dB la 5 MHz; maxim 30 interfet e ata sate pe un tronson.
Conectarea interfet elor de ret ea si a terminatoarelor se face prin conectori standardizat i sub numele BNC (conectorii BNC sunt standardizat i pentru aparatur a electronic a n general, nu se folosesc doar la ret ele Ethernet), astfel (g. 9.5): Fiecare bucat a de cablu trebuie s a aib a montate pe capete conectoare BNC mam a. Exist a elemente numite jonct iuni T care cont in o ramicat ie si sunt prev azute cu un conector BNC mam a (pe mijlocul T-ului) si dou a conectoare BNC tat a. La conectoarele tat a se ata seaz a buc a tile de cablu de-o parte si de alta, iar la conectorul mam a al T-ului se ata seaz a conectorul tat a de pe placa de ret ea. Terminatoarele sunt prev azute cu conector BNC mam a si se ata seaz a pe T-urile de la pl acile de ret ea extreme.
conectori BNC
Pana cea mai frecvent a ce apare la o ret ea, afect and conexiunile directe, este ntreruperea unui r (de obicei o pan a de contact ntre s arm a si conector sau ntre contactele unui conector). O ntrerupere a cablului magistral a duce de regul a la oprirea funct ion arii ntregii ret ele, nu doar ,,ruperea n dou a a ret elei. Aceasta se nt ampl a deoarece cap atul de cablu unde s-a produs ntreruperea reect a semnalul (este ca un cablu f ar a terminator) si, ca urmare, orice pachet emis pe acel cablu se ciocne ste cu reexia lui. Solut ia cea mai ecient a de g asire a penei este o c autare binar a prin izolarea neap arat cu terminatoare a unor port iuni din ce n ce mai lungi din cablul ret elei.
arborescent a, adic a ntre orice dou a interfet e de ret ea trebuie s a existe un drum si numai unul format din cabluri directe si repetoare sau comutatoare. Intr-o ret ea construit a corect, arborescent, un pachet emis de o plac a de ret ea se propag a prin cabluri si repetoare sau comutatoare din ce n ce mai departe de interfat a de origine, sf ar sind prin a ajunge la toate pl acile din ret ea. In cazul n care ret eaua, n loc s a e arborescent a, cont ine circuite, se va nt ampla ca dou a copii ale aceluia si pachet s a ajung a pe dou a c ai distincte la un anumit repetor sau comutator. Dac a este un repetor, cele dou a copii, ajung and aproximativ simultan, vor produce o coliziune. Cum acest lucru se nt ampl a cu orice pachet trimis n ret ea, ecare pachet va suferi o coliziune cu el nsu si si va repetat la innit cu acela si insucces, rezult and astfel trac util nul. In cazul comutatoarelor, dac a dou a copii ale unui pachet ajung pe dou a c ai diferite la un comutator, acesta le va considera ca ind pachete distincte. In consecint a, le va memora si retransmite, ecare copie ind retransmis a inclusiv pe calea prin care a intrat cealalt a copie. In acest fel, copiile cicleaz a la innit prin ret ea, rezult and o ,,furtun a de pachete, adic a o multiplicare incontrolabil a a pachetelor. In cazul utiliz arii repetoarelor, pe l ang a topologia n arbore mai trebuie respectate ni ste condit ii, si anume: toate componentele legate la repetoare trebuie s a lucreze la aceea si vitez a (e 10 Mbit/s, e 100 Mbit/s, e 1 Gbit/s). Aceasta deoarece un repetor nu memoreaz a pachetul de retransmis si, ca urmare, nu-l poate retransmite la alt a cadent a a bit ilor dec at cea cu care l recept ioneaz a. s a nu existe mai mult de 4 repetoare de-a lungul nici unui drum ntre dou a interfet e de ret ea. Aceast a restrict ie este impus a pentru ca diferent ele de vitez a de transmisie a repetoarelor si variat ia nt arzierii introduse de repetoare s a nu duc a la mic sorarea sub o anumit a limit a a timpului dintre dou a pachete consecutive. nt arzierea cea mai mare a transmisiei ntre dou a interfet e de ret ea ( nt arzierea pe cablu plus nt arzierea introdus a de repetoare) s a nu e mai mare dec at jum atate din durata necesar a emiterii unui pachet. Pentru o ret ea de 10 Mbit/s, aceasta nseamn a o lungime maxim a total a de 2500 m ntre oricare dou a interfet e de ret ea. In cazul switch-urilor, nu apare nici una din limit arile expuse mai sus, cu except ia faptului c a pe eventualele leg aturi semi-duplex nt arzierea trebuie s a e de cel mult jum atate din durata minim a a pachatului. La ret ele ce utilizeaz a at at switch-uri c at si repetoare, restrict iile de la repetoare se aplic a, separat, pe ecare subret ea format a din repetoare
congurabil a (adresa IP init ial a se congureaz a prin intermediul conexiunii seriale descrise mai sus). Conectarea prin telnet la adresa IP a switch-ului (pe portul standard al protocolului telnet, anume 23) ofer a acces la interfat a de congurare prezentat a mai sus. Evident, pentru mpiedicarea congur arii switch-ului de c atre persoane neautorizate, switch-ul permite congurarea unei parole, care este cerut a la conectare. Prin interfat a web: Ca si la conectarea prin telnet, switch-ul prezint ao adres a IP. Administratorul se poate conecta cu orice navigator web la aceast a adres a si va primi pagini ce cont in parametrii actuali si formulare pentru modicarea parametrilor. Ca si n cazul congur arii prin telnet, accesul poate si este recomandabil s a e restrict ionat prin parol a. Pentru cazul uit arii parolei, exist a o procedur a de revenire la congurarea implicit a. Aceasta const a de obicei n ap asarea unui buton de reset timp de 1015 secunde sau punerea sub tensiune a switch-ului n timp ce se tine ap asat butonul de reset. 9.1.6.2. Filtrare pe baz a de adrese MAC Unele switch-uri pot congurate s a nu accepte, pe un anumit port, dec at pachete ce provin de la o anumit a adres a MAC sau de la o adres a dintro anumit a list a. De asemenea, un pachet destinat unei adrese MAC dintr-o astfel de list a nu va trimis dec at prin portul pe a c arui list a se g ase ste adresa. Aceast a facilitate este introdus a pentru a mpiedica eventuali intru si s a intre n ret ea racord andu-se pur si simplu la prizele de ret ea accesibile. De si mbun at a te ste securitatea unei ret ele, solut ia are c ateva limit ari: lista adreselor asociabile unui port este limitat a (de multe ori la 8 sau 16 adrese); multe pl aci de ret ea permit schimbarea (prin soft) a adresei MAC. 9.1.6.3. Trunking Prin trunking se nt elege utilizarea mai multor cabluri n paralel ca leg atur a ntre dou a switch-uri. In acest fel, tracul ce se poate stabili ntre acele dou a switch-uri este suma capacit a tilor leg aturilor congurate n trunking. Porturile utilizate n regim trunking trebuie congurate pe ambele switch-uri. Este de asemenea posibil ca legarea n trunking s a utilizeze o extensie a protocolului IEEE 802.3 care este proprietatea rmei produc atoare a switch-ului; n acest caz este posibil ca dou a swithc-uri realizate de rme diferite s a nu se poat a lega n trunking.
9.1.6.4. Leg aturi redundante IEEE 802.1D [IEEE 802.1D, 2004] prevede un protocol pentru descoperirea si dezactivarea ciclurilor ( n sensul teoriei grafelor) formate de leg aturile dintre switch-uri. Majoritatea switch-urilor nu implementeaz a ns a acest algoritm si, ca urmare, n majoritatea cazurilor existent a ciclurilor duce la ,,furtuni de pachete (multiplicarea incontrolabil a a pachetelor n ret ea). Dac a toate swicth-urile de pe traseul unui ciclu implementeaz a protocolul de descoperire a ciclurilor, ele colaboreaz a automat pentru dezactivarea uneia dintre leg aturi si utilizarea doar a unui arbore part ial al grafului init ial al leg aturilor. La c aderea unei leg aturi, switch-urile vor colabora pentru reactivarea unei leg aturi dezactivate, n vederea p astr arii conexit a tii ret elei. Ment ion am c a, n cazul existent ei unui ciclu, nu este posibil a mp ar tirea tracului ntre drumurile alternative. Unul din drumuri va obligatoriu dezactivat complet, c at timp cel alalt este funct ional. 9.1.6.5. Ret ele virtuale (VLAN) Mecanismul de ret ele virtuale (Virtual Local Area Network ) const a n mp art irea unei ret ele zice n mai multe ret ele virtuale disjuncte. Fiecare ret ea virtual a se comport a exact ca o ret ea IEEE 802.3 independent a. Constructiv, ret elele virtuale partajeaz a acelea si echipamente (comutatoare, cabluri sau chiar pl aci de ret ea). A nu se confunda VLAN cu VPN (Virtual Private Network ret ea privat a virtual a descris a n 10.7.4). Partit ionarea n VLAN-uri poate dezirabil a din mai multe motive, cum ar : limitarea tracului de broadcast sau separarea tracului din motive de securitate. Exist a dou a posibilit a ti de construct ie a VLAN-urilor. O prim a posibilitate const a n partit ionarea porturilor unui switch. In acest fel, un switch se comport a ca mai multe switch-uri (virtuale) independente, ecare av and doar o parte a porturilor switch-ului zic. Un port al unui switch poate s a apart in a doar unui singur VLAN. O a doua posibilitate este cea denit a n [IEEE 802.1Q, 2003]. Fiecare VLAN const a dintr-o parte din echipamentele (interfet e de ret ea, cabluri si switch-uri) ret elei zice; VLAN-uri distincte pot partaja n voie echipamente zice. Astfel, ecare interfat a de ret ea apart ine unuia sau mai multor VLANuri, ecare cablu apart ine unuia sau mai multor VLAN-uri si ecare port al ec arui switch apart ine unuia sau mai multor VLAN-uri. Fiecare switch, la primirea unui pachet de broadcast sau pentru a c arui destinat ie nu are asociere,
va trimite pachetul prin toate porturile apart in and VLAN-ului pachetului, cu except ia portului prin care a intrat pachetul. Pentru ca mecanismul descris mai sus s a poat a funct iona, este necesar ca, pe cablurile ce apart in mai multor VLAN-uri, pentru ecare pachet s a se poat a deduce c arui VLAN apart ine. Pentru aceasta, ecare pachet este etichetat cu un identicator de VLAN (VLAN-ID ); acest VLAN-ID este un num ar reprezentabil pe 12 bit i. Pentru p astrarea compatibilit a tii cu echipamentele ce nu suport a VLAN-uri 802.1Q, un segment de ret ea care apart ine doar unui singur VLAN poate congurat s a utilizeze pachete neetichetate; switch-ul ce realizeaz a leg atura dintre un astfel de segment si restul ret elei zice realizeaz a ad augarea si eliminarea etichetei de VLAN pe pachetele ce tranziteaz a spre, respectiv dinspre, restul ret elei. Echipamentele incompatibile 802.1Q pot montate doar pe cabluri prin care trac pachete neetichetate. O plac a de ret ea compatibil a 802.1Q poate congurat a s a fac a parte din mai multe VLAN-uri. Pentru aceasta, ea se monteaz a pe un cablu prin care trec pachete etichetate. Placa de ret ea se comport a ca si c and ar de fapt mai multe pl aci de ret ea, virtuale, c ate una n ecare VLAN. Fiecare plac a virtual a are asociat un VLAN-ID, prime ste doar pachetele ce poart a acel VLAN-ID si marcheaz a cu VLAN-ID-ul s au toate pachetele emise. Pe ecare switch trebuie congurate porturile care apart in ec arui VLAN. De asemenea, pentru ecare port trebuie stabilit dac a utilizeaz a pachete etichetate (cu VLAN ID-ul) sau pachete neetichetate. Un port ce utilizeaz a pachete neetichetate poate apart ine unui singur VLAN.
In instalat iile mici si f ar a pretent ii, cablurile se duc aparent si se xeaz a de peret i sau pe mobil a numai acolo unde este strict necesar. U surint a realiz arii si recongur arii este pl atit a prin faptul c a apar dicult a ti la cur a tenie, cablurile se degradeaz a u sor dac a se calc a pe ele si, n sf ar sit, se mai nt ampl a ca cineva s a se mpiedice de un cablu, rezult and echipamente trase pe jos sau cabluri smulse din conectoare. Pentru evitatarea neajunsurilor expuse mai sus, se prefer a s a se trag a cablurile prin paturi de cablu, tuburi ngropate (ca la instalat iile electrice) sau prin tavane false. Deoarece astfel de cablaje se modic a mai dicil, este bine s a se aib a n vedere posibilele modic ari ce ar putea de dorit n viitor. Asta nseamn a: S a se prevad a mai multe cabluri de la posibile amplasamente de calculatoare la amplasamentul switch-ului asociat nc aperii. Cablurile neutilizate nu e necesar s a aib a toate loc n switch; se vor conecta sau deconecta dup a necesit a ti. S a se prevad a 23 cabluri de la switch-urile corespunz atoare unei nc aperi la switch-ul central. Astfel, dac a va nevoie s a se construiasc a dou a ret ele distincte, o parte din calculatoarele din nc apere conect andu-se la o ret ea si altele la alt a ret ea, se vor pune dou a switch-uri n nc apere, ecare conectat prin c ate un cablu la switch-ul central.
oric and dintr-o celul a. Fiecare stat ie se identic a printr-o adres a unic a de 48 de bit i, numit a n mod curent adresa MAC a stat iei. Accesul la mediu este controlat n principal prin metode bazate pe urm arirea tracului pe mediu, detectarea coliziunilor si, ntr-o anumit a m asur a, metode de rezervare n prealabil a accesului la mediu. Acestea vor descrise n detaliu n 9.2.2. Prezent a unei celule wireless organizate ntr-o anumit a zon a este manifestat a prin emiterea periodic a de c atre una dintre stat ii a unui pachet special, numit beacon. Pe l ang a BSSID-ul celulei, pachetele beacon mai cont in un sir de caractere numit SSID sau uneori numele ret elei (engl. network name ). Acest sir este xat de administratorul ret elei si serve ste la identicarea ret elei pentru utilizatorii umani. O stat ie poate obt ine lista celulelor active n zona sa ascult and pachetele beacon. Lista a sat a utilizatorului va cont ine SSID-urile ret elelor. Exist a dou a moduri de lucru n care poate funct iona o ret ea 802.11: Ret ea format a dintr-o singur a celul a independent a, neconectat a prin mi jloace IEEE 802 de alte echipamente. In terminologia standardului, o astfel de celul a se nume ste Independent BSS IBSS; n mod curent ret eaua astfel format a se nume ste ad-hoc. Ret ea format a din una sau mai multe celule, oper and mpreun a si posibil conectate la o infrastructur a IEEE 802 (de exemplu la o ret ea Ethernet 802.3). Un astfel de mod de lucru se nume ste mod infrastructur a sau managed . In mod infrastructur a, n cadrul ec arei celule exist a o stat ie care are rolul leg arii celulei la infrastructur a (altfel spus, la restul ret elei IEEE 802.11). O astfel de stat ie poart a denumirea de Access Point AP. Un AP este o stat ie, si ca atare are o adres a MAC. Intr-o celul a a unei ret ele de tip infrastructur a, o stat ie ce intr a sau iese dintr-o celul a trebuie s a anunt e AP-ul responsabil de celula respectiv a. AP-ul este responsabil de generarea pachetelor beacon si BSSID-ul celulei este adresa MAC a AP-ului. AP-urile unei aceleia si ret ele 802.11 trebuie s a e interconectate, form and a sa-numitul Distribution System (DS). DS-ul poate conectat la alte ret ele din familia IEEE 802 prin intermediul unor dispozitive numite portal -uri. Celulele din aceea si ret ea vor avea acela si SSID. Standardul original nu prevede nimic n leg atur a cu modul de conectare a AP-urilor si deci de realizare a DS-ului. Ca urmare, ecare fabricant de APuri si-a construit propriul protocol de comunicare inter-AP. Ulterior IEEE a
emis un standard, [IEEE 802.11F, 2003], care xeaz a un protocol de comunicare ntre AP-uri. De obicei un dispozitiv v andut sub numele de access point cont ine un AP si un portal c atre ret ele Ethernet. Un astfel de dispozitiv prezint a un modul radio prin intermediul c aruia se comport a ca o stat ie cu rol de AP si un conector Ethernet. Intr-o prim a aproximat ie, un astfel de dispozitiv poate privit ca un switch conectat pe de o parte la ecare dintre stat iile membre ale celulei si pe de alt a parte la un dispozitiv Ethernet. Unele access point -uri ce se g asesc n comert ofer a funct ionalit a ti suplimentare fat a de un AP combinat cu un portal. Aceste funct ii sunt oferite prin extensii ale protocolului si ca urmare pot utilizate de regul a doar mpreun a cu echipamente produse de aceea si rm a. Funct ionalit a tile sunt: funct ie de switch (punte) ntre o ret ea Ethernet (x a) si o celul a wireless, act ion and ns a ca si stat ie oarecare (nu AP). Aceast a funct ie se nume ste wireless bridge sau AP client (uneori exist a funct ii cu ambele nume, cu diferent e minore ntre ele); funct ie de AP, dar utiliz and tot ret eaua wireless pentru partea de infrastructur a. In acest mod, dispozitivul este n acela si timp AP pentru o celul a si stat ie oarecare n alt a celul a, iar a dou a leg atur a este utilizat a pentru dirijarea spre ret eaua x a a datelor din celula n care dispozitivul este AP.
una din stat iile A si C nu recept ioneaz a transmisia celeilalte ele nu au cum s a detecteze coliziunea. In ret elele IEEE 802.11, o stat ie care dore ste s a trimit a un pachet va trimite nt ai un pachet de control, numit Request To Send (RTS; rom: cerere de transmisie ), n care specic a destinatarul si durata de timp necesar a transmiterii pachetului. Dac a destinatarul a primit pachetul RTS si este liber, va trimite napoi un pachet de control Clear To Send (CTS; rom: accept transmisia ). La primirea pachetului CTS, emit atorul trimite pachetul de date. O stat ie care recept ioneaz a un pachet CTS destinat altei stat ii nu are voie s a trimit a nimic pe durata rezervat a de pachetul CTS, pentru a nu interfera cu transmisia acceptat a prin acel CTS. Aceast a restrict ie trebuie respectat a si n cazul recept iei unui pachet CTS destinat altei ret ele din aceea si zon a (adic a purt and un BSS-ID diferit). Utilizarea pachetelor RTS si CTS nu este obligatorie. Pentru pachetele mici este preferabil a trimiterea direct a pachetului de date si repetarea acestuia n cazul unei coliziuni. Pentru pachetele de broadcast, utilizarea RTS si CTS este imposibil a; ca urmare un pachet de broadcast este trimis direct.
mesajelor. In acest scop, tot i membrii celulei trebuie s a cunoasc a o anumit a cheie de lung a durat a, numit a pre-shared key (rom. cheie partajat a n prealabil ); aceast a cheie trebuie dat a de utilizator la init ierea celulei sau, dup a caz, la introducerea stat iei n celul a. Criptarea se face utiliz and cifrul RC4, cu o cheie construit a din secretul partajat si dintr-un vector de init ializare ales aleator, pentru ecare pachet, de c atre emit ator si transmis n antetul pachetului. Controlul integrit a tii pachetului este f acut tot pe baza secretului partajat. WEP are dou a sl abiciuni: pe de o parte, datorit a existent ei unei sl abiciuni a cifrului RC4 (exist a c ateva chei slabe, foarte u sor de spart), WEP poate spart destul de u sor; pe de alt a parte, modelul de securitate oferit este destul de neexibil. WiFi Protected Access WPA: corecteaz a problemele WEP, p astr and compatibilitatea cu pl acile de ret ea existente. In privint a cript arii, WPA p astreaz a cifrul RC4 din motive de compatibilitate, dar vine cu o schem a diferit a de gestiune a cheilor de criptare, capabil a s a evite cheile slabe. In privint a obt inerii unui model de securitate mai exibil, WPA are dou a moduri de lucru: - WPA-Personal, numit si WPA-PSK (de la Pre-Shared Key ), n care se utilizeaz a un secret partajat ntre tot i membrii celulei, ind similar cu WEP (dar mult mai sigur). - WPA-Entreprise, n care cheile se obt in pe baza unor chei individuale ale utilizatorilor. Controlul accesului si obt inerea cheilor se face printr-un mecanism numit Extensible Authentication Protocol (EAP ), descris mai jos. IEEE 802.11i [IEEE 802.11i, 2004], numit si WPA2, extinde WPA ad aug and, ntre altele, posibilitatea utiliz arii cifrului AES. Ca si n cazul WPA, exist a dou a moduri de lucru, cu cheie partajat a n prealabil sau utiliz and EAP. Protocolul de autenticare extensibil, EAP [RFC 3748, 2004], este un protocol generic, ce permite utilizarea mai multor scheme de autenticare. EAP este utilizat si de alte protocoale n afar a de WPA si WPA2, si anume poate utilizat n cadrul leg aturilor PPP [RFC 1661, 1994], precum si pentru autenticarea conect arilor la o ret ea cablat a IEEE 802.3, conform [IEEE 802.1X, 2001]. Arhitectura EAP cont ine urm atoarele componente: clientul ce trebuie s a- si dovedeasc a identitatea n scopul obt inerii accesului
la ret ea. Rolul clientului l are placa de ret ea 802.11 (sau placa de ret ea 802.3 sau clientul PPP). In terminologia EAP, acesta este numit supplicant. punctul de acces este entitatea care trebuie s a autentice clientul pentru a-i oferi acces la serviciile ret elei. Rolul de punct de acces l are AP-ul 802.11 (sau switch-ul 802.3 sau serverul PPP). In terminologia EAP, acesta se nume ste authenticator. serverul de autenticare este entitatea care det ine baza de date cu cheile client ilor si realizeaz a efectiv autenticarea. Protocolul EAP prevede un schimb de mesaje ntre client si serverul de autenticare. Dac a serverul de autenticare este distinct fat a de punctul de acces, comunicat ia dintre client si serverul de autenticare trece prin punctul de acces, iar port iunea din calea de comunicat ie dintre punctul de acces si serverul de autenticare este protejat a criptograc pe baza unui secret partajat ntre punctul de acces si serverul de autenticare. Serverul de autenticare este de obicei un server RADIUS. Unele dintre mecanismele efective de autenticare utilizabile n cadrul EAP sunt: EAP-MD5 prevede c a serverul de autenticare trimite clientului un num ar aleator, iar clientul r aspunde cu dispersia MD5 a concaten arii num arului aleator cu parola clientului. Funct ionarea mecanismului necesit a ca serverul s a aib a n baza de date, n clar, parola clientului. EAP-MD5 permite doar autenticarea clientului, nu si stabilirea unor chei pentru criptarea sau autenticarea mesajelor. EAP-TLS necesit a ca at at clientul c at si serverul de autenticare s a aib a prestabilite chei secrete SSL/TLS, iar ecare dintre ei s a aib a certicatul TLS al celuilalt (vezi si 11.3.2.5). Se stabile ste o conexiune TLS ntre client si serverul de autenticare, utiliz and certicatele acestora, iar n cadrul acestei conexiuni stabilesc cheile pentru comunicat ia ulterioar a ntre client si punctul de acces. PEAP (de la Protected EAP ) prevede utilizarea TLS pentru deschiderea unei conexiuni securizate ntre client si serverul de autenticare, ns a doar serverul are o cheie TLS, clientul autentic and serverul pe baza certicatului corespunz ator. Dup a deschiderea conexiunii TLS, urmeaz a autenticarea clientului de c atre server, iar n caz de succes are loc negocierea cheilor pentru securizarea comunicat iei ntre client si punctul de acces. In terminologia PEAP, conexiunea TLS se nume ste mecanismul exterior de autenticare, iar mecanismul de autenticare a clientului
se nume ste mecanismul interior. Mecanismul interior cel mai r asp andit este MSCHAP, care este un mecanism similar cu EAP-MD5.
Capitolul 10
Internetul
Denumirea Internet desemneaz a dou a lucruri: pe de o parte un protocol de nivel ret ea (Internet Protocol, IP, protocolul Internet ), iar pe de alt a parte ret eaua Internet, care este o ret ea la scar a mondial a bazat a pe protocolul Internet. Capitolul de fat a prezint a: protocolul Internet (IP), mpreun a cu celelalte protocoale de baz a ale ret elelor de tip Internet (TCP, DNS, ARP, etc.); c ateva aspecte administrative legate de ret eaua mondial a Internet.
Nodurile intermediare sunt e PC-uri, e dispozitive dedicate (rutere dedicate). Leg aturile directe pot realizate prin linii seriale, linii telefonice cu modemuri, ret ele locale IEEE 802, cablu TV, etc. Modul de utilizare a ec arui tip de leg atur a direct a de c atre o ret ea Internet este standardizat prin standarde auxiliare ( 10.5). Exist a chiar un standard [RFC 1149, 1990] de utilizare ca leg aturi directe a porumbeilor c al atori; de si standardul a fost publicat ca o glum a de 1 aprilie, el ilustreaz a foarte bine independent a ntre nivele ntr-o ret ea. Din punctul de vedere al unei ret ele Internet, o leg atur a direct a este orice fel de canal de comunicat ie pe care ret eaua de tip Internet o poate folosi. Fiecare nod este identicat prin una sau mai multe adrese IP . Cu except ia unor adrese cu rol special, o adres a IP identic a unic un nod. Unele noduri, n special cele intermediare, au mai multe adrese IP asociate. Adresele IP sunt arareori folosite direct de utilizatorii umani. In locul lor se utilizeaz a numele de domeniu. Corespondent a ntre un nume de domeniu si adresa IP se realizeaz a cu ajutorul sistemulul DNS (Domain Name Service ), descris n 10.4. Protocolul Internet a fost proiectat pentru a asigura o tolerant a deosebit de mare la pene. Dup a c aderea unor noduri sau a unor leg aturi, dac a mai exist a totu si un drum ntre dou a noduri el va g asit si utilizat n cele din urm a. Aceast a tolerant a la pene vine cu un pret : nu exist a garant ii cu privire la nt arzierea maxim a n livrarea unui pachet sau debit minim garantat; ba chiar este posibil ca un pachet s a e pierdut complet (acest lucru se poate nt ampla cu pachetele surprinse pe drum de o pan a, precum si n caz de nc arcare mare a ret elei), s a ajung a n dublu exemplar sau dou a pachete s a ajung a la destinat ie n ordine invers a a trimiterii. Este sarcina nivelelor superioare s a se descurce n aceste condit ii. In acest scop, ntre aplicat ie si nivelul ret ea este plasat un nivel intermediar, nivelul transport, cu rolul de-a furniza aplicat iei un serviciu mai potrivit.
10.2. Protocolul IP
Protocolul Internet (engl. Internet Protocol IP ) descrie formatul pachetelor si c ateva aspecte privind activitatea nodurilor ret elei. Protocolul IP are dou a versiuni aate curent n uz: versiunea 4 (cea mai utilizat a n prezent, numit a prescurtat IPv4 ) standardizat a prin [RFC 791, 1981] si versiunea 6 (care se r asp ande ste relativ ncet, numit a prescurtat IPv6 ) standardizat a prin [RFC 2460, 1998].
TOS Lungime totala Identicare Rezervat Nu fragmenta Ultimul fragment Deplasament Timp de viat a Protocol Suma de control Adres a surs a Adres a destinat ie
8 16 16 1 1 1 13 8 8 16 32 32
Opt iunile sunt informat ii pentru dirijarea pachetului pentru cazuri mai speciale; deoarece aceste informat ii nu sunt necesare dec at pentru anumite tipuri de pachete, ele sunt prezente doar n pachetele n care este nevoie de
Nume c amp Versiune Clas a trac Etichet a ux Lungime rest Tip antet urm ator
Lungime (bit i) 4 8 20 16 8
Rol Versiunea protocolului IP. Valoarea este x a: 6. tip serviciu (vezi 10.2.6.2). vezi 10.3.1.8. Lungimea pachetului minus antetul x, n octet i. Dac a exist a opt iuni, tipul primului antet opt ional; altfel, protocolul c aruia i apart in datele utile. Num arul maxim de salturi p an a la distrugerea pachetului (vezi 10.2.5.3). Adresa nodului ce a emis pachetul. Adresa destinatarului nal al pachetului.
8 128 128
ele. Datele utile sunt un sir de octet i asupra c aruia protocolul IP nu impune nici o restrict ie, cu except ia lungimii. Lungimea maxim a admis a de protocol este de 65515 octet i (65535 octet i pachetul ntreg) pentru IPv4 si 65535 octet i, inclusiv antetele opt ionale, pentru IPv6. Este permis ca unele noduri s a nu poat a procesa pachete n care datele utile sunt mai lungi de 556 octet i (576 octet i tot pachetul) pentru IPv4 si 1240 octet i (1280 octet i tot pachetul) pentru IPv6 (a se vedea si 10.2.6.1).
o ret ea IEEE 802, interfat a de ret ea este placa de ret ea mpreun a cu driver-ul ei. Fiecare interfat a de ret ea are propria adres a IP. Ca urmare, un nod ce are n pl aci de ret ea va avea n adrese IP distincte. Are sens s a vorbim despre interfet ele membre ale unei subret ele, ca ind interfet ele prin care nodurile din subret ea sunt conectate la acea subret ea. Adresele IP dintr-o subret ea sunt adresele IP ale interfet elor din acea subret ea. 10.2.2.2. Prexul de ret ea Fiecare subret ea are asociat un prex de ret ea , adic a un anumit sir de bit i de lungime mai mic a dec at lungimea unei adrese IP. Toate adresele IP ale interfet elor din acea subret ea trebuie s a nceap a cu acel prex de ret ea. Prexul unei subret ele nu este permis s a e prex al unei adrese IP din afara acelei subret ele. Ca urmare, un prex identic a unic o subret ea. Suxul unei adrese, adic a sirul de bit i din adres a care nu fac parte din prexul subret elei, l vom numi adresa n cadrul subret elei. Num arul de bit i ai suxului determin a num arul de noduri ce pot membre ale subret elei. Adresele n care suxul este format numai din bit i 0 sau numai din bit i 1 (a sadar dou a adrese pentru ecare subret ea) sunt rezervate si nu pot asignate nodurilor ret elei (a se vedea si [RFC 1700, 1994]). Exemplul 10.1: Pentru simplicarea exemplului vom presupune c a adresele IP sunt doar de 8 bit i. Presupunem c a o subret ea ar avea prexul de ret ea 10110. Adresa 10110010, dac a exist a, trebuie s a desemneze o interfat a din acea ret ea. Adresa 10111010 nu poate face parte din acea subret ea, deoarece nu ncepe cu prexul subret elei. Not am c a un nod care are o interfat a n subret eaua 10110 si o interfat a n alt a ret ea ar putea avea adresa 10111010 pe cea de-a doua interfat a. Din subret eaua considerat a, cu prexul 10110, pot face parte adresele, n num ar de 23 = 8, din intervalul 1011000010110111. Adresele 10110000 si 10110111 sunt rezervate; r am an deci 6 adrese ce pot asignate nodurilor subret elei. Un exemplu de asignare a adreselor este prezentat n gura 10.1. P atr a telele numerotate reprezint a calculatoarele, iar liniile reprezint a leg aturile directe, gurate aici ca si c and ar realizate prin cabluri magistral a. De remarcat c a nodul cu num arul 3 are dou a adrese, 10110001 si 10111010, c ate una pentru ecare interfat a.
10111011 5
Alt a subret ea, cu prexul 10111 Figura 10.1: O ret ea format a din dou a subret ele. Vezi exemplul 10.1
10.2.2.3. Tabela de dirijare La primirea unui pachet IP, un nod execut a urm atorul algoritm: 1. dac a adresa destinat ie este una din adresele nodului curent, pachetul este livrat local (nivelului superior); 2. altfel, dac a adresa destinat ie este adresa unui vecin direct, pachetul este livrat direct acelui vecin; 3. altfel, se determin a vecinul direct cel mai apropiat de destinatarul pachetului si i se d a pachetul, urm and ca acesta s a-l trimit a mai departe. Pentru pasul 2, este necesar ca nodul s a determine dac a adresa destinat ie corespunde unui vecin direct si care este interfat a prin care se realizeaz a leg atura. Livrarea efectiv a este realizat a de interfat a de ret ea; acesteia i se d a pachetul si adresa IP a vecinului. Pentru pasul 3, trebuie determinat n primul r and vecinul direct c aruia i se va trimite pachetul. Dac a acesta are mai multe interfet e, trebuie utilizat a interfat a prin intermediul c aruia el este vecin nodului curent. O dat a determinat a adresa interfet ei, trimiterea pachetului se face ca la pasul 2. Deciziile de la pa sii 2 si 3 se iau pe baza tabelei de dirijare a nodului curent. O tabel a de dirijare const a dintr-o mult ime de reguli de dirijare. Fiecare regul a asociaz ao tint a unui grup de adrese destinat ie. Grupul de adrese este specicat printr-un prex de ret ea. Pentru un pachet dat se aplic a acea regul a de dirijare n care prexul ce specic a grupul este prex al adresei destinat ie a pachetului. Dac a exist a mai multe astfel de
reguli de dirijare, se aplic a regula cu prexul cel mai lung adic a cea mai specic a dintre regulile de dirijare aplicabile. T inta poate e o interfat a, e o adres a IP. Dac a tinta este o interfat a, destinat ia trebuie s a e un vecin direct, accesibil prin acea interfat a; n acest caz pachetul de dirijat este livrat direct destinatarului prin interfat a dat a n regul a, conform pasului 2. Dac a tinta este o adres a, aceasta trebuie s a e adresa unei interfet e vecine. In acest caz pachetul de dirijat este trimis nodului vecin a c arui adres a este specicat a n tabela de dirijare. Nodul vecin respectiv poart a denumirea de gateway si trebuie s a e congurat s a act ioneze ca nod intermediar. De notat c a adresa surs a si adresa destinat ie din antetul IP nu se modic a n cursul acestei proceduri. Sursa r am ane nodul care a emis pachetul, iar destinat ia r am ane nodul c aruia trebuie s a-i e livrat n cele din urm a pachetul. Atunci c and modulul de ret ea paseaz a unei interfet e de ret ea un pachet n vederea transmiterii pachetului c atre un nod vecin, modulul de ret ea va comunica interfet ei dou a lucruri: pachetul, n care adresa destinat ie reprezint a destinatarul nal, si adresa vecinului direct c aruia interfat a i va livra pachetul. Acesta din urm a poate diferit fat a de destinatarul nal dac a este doar un intermediar pe drumul c atre destinatarul nal.
Subret eaua 10110
1 2
10110010
10110100
10000010
10000011
eth0: 10110001
3 5
eth1: 10111010
Exemplul 10.2: Fie ret eaua din gura 10.2, format a din trei subret ele. Pentru nodul nr. 3, au fost gurate si numele interfet elor de ret ea: eth0 c atre subret eaua de sus si eth1 c atre subret eaua de jos. Tabela de dirijare a nodului 3 este cea ilustrat a n tabelul 10.3.
Nr. crt. 1. 2. 3.
Tabelul 10.3: Tabela de dirijare pentru nodul 3 din gura 10.2 (exemplul 10.2).
Consider am c a nodul 3 prime ste un pachet cu destinat ia 10110010 (nodul 1). Singura regul a aplicabil a este regula 1, deoarece 10110 este prex pentru 10110010. Conform acestei reguli, pachetul poate livrat direct prin interfat a eth0. Fie acum un pachet cu destinat ia 10000010 (nodul 6). Regula aplicabil a este regula 3. Conform acesteia, pachetul trebuie trimis nodului cu adresa 1011101, urm and ca acesta s a-l trimit a mai departe. Modulul IP caut a n continuare regula aplicabil a pentru destinat ia 10111011 si g ase ste regula 2, conform c areia pachetul se trimite prin interfat a eth1. Prin urmare, pachetul destinat lui 10000010 va trimis lui 10111011 prin interfat a eth1 (urm and ca nodul 5 s a-l livreze mai departe nodului 6). De remarcat c a nodurile ce apar ca tint a n regulile tabelelor de dirijare trebuie specicate prin adresele interfet elor accesibile direct din nodul curent. In exemplul 10.2, este esent ial ca, n ultima regul a a tabelei de dirijare a nodului 3, nodul 5 s a e specicat prin adresa 10111011 si nu prin adresa 10000001. Nodul cu adresa 10111011 este accesibil prin interfat a eth1, conform regulii 2; dac a ar fost specicat prin adresa 10000001, nodul 3 nu ar putut determina cum s a-i trimit a pachetul. In majoritatea cazurilor, tabela de dirijare are o regul a numit a implicit a, corespunz atoare prexului vid si, ca urmare, aplicat a pentru pachetele pentru care nu este aplicabil a nici o alt a regul a. Aceast a regul a, dac a exist a, are totdeauna ca tint a o adres a IP a unui nod vecin al nodului curent. Acest nod (de fapt, aceast a adres a IP) poart a denumirea de default gateway.
Adresele IP versiunea 4, care sunt siruri de 32 de bit i, se scriu ca sir de 4 numere, scrise n baza 10, separate prin puncte. Fiecare num ar este de fapt valoarea c ate unui grup de 8 bit i, v azut ca num ar. Aceast a scriere se nume ste notat ie zecimal a cu punct. Pe l ang a notat ia zecimal a cu punct, adresele IP versiunea 4 pot scrise n notat ia zecimal a simpl a : se scrie direct valoarea adresei ca num ar, scris n baza 10. Exemplul 10.3: Fie adresa 1100-0000-1010-1000-0000-0000-0010-0010 (liniut ele au fost scrise numai pentru u surarea citirii). Notat ia zecimal a cu punct este 192.168.0.34. Notat ia zecimal a simpl a este 3232235554. Adresele IP versiunea 6 sunt siruri de 128 de bit i. Scrierea lor obi snuit a se face ca un sir de 32 cifre hexa, ecare reprezent and c ate 4 bit i din adres a. Cifrele hexa sunt grupate c ate 4, iar grupurile succesive sunt separate prin c ate un caracter dou a puncte. Pentru a scurta scrierea, se permit urm atoarele optimiz ari: - zerourile de la nceputul unui grup pot s a nu e scrise; - un grup cu valoarea 0 sau mai multe astfel de grupuri consecutive se pot elimina, mpreun a cu separatorii dou a puncte dintre ei, r am an and doar dou a caractere dou a puncte succesive. Acest lucru se poate face ntr-un singur loc al adresei, altfel s-ar crea evident o ambiguitate. Exemplul 10.4: O posibil a adres a IPv6 este
fe80:0000:0000:0000:0213:8fff:fe4e:fbf4
sau
fe80::213:8fff:fe4e:fbf4
Adresa 0:0:0:0:0:0:0:1 se scrie compact ::1. Pentru adrese IPv6 alocate n vederea compatibilit a tii cu IPv4, este acceptat a scrierea n care primii 96 bit i sunt scri si n format IPv6, iar ultimii 32 de bit i sunt scri si n format IPv4, separat i de primii printrun caracter dou a puncte.
10.2.3.2. Scrierea prexelor de ret ea Prexele de ret ea ind de lungime variabil a, trebuie precizat a at at valoarea efectiv a a prexului c at si lungimea acestuia. Exist a dou a notat ii: notat ia cu adresa subret elei si lungimea prexului si notat ia cu adresa subre telei si masca de ret ea. In notat ia cu adres a si lungime, prexul se completeaz a cu zerouri la lungimea unei adrese IP (adic a la 32 de bit i pentru versiunea 4 si la 128 de bit i pentru versiunea 6); rezultatul se nume ste adresa de ret ea. Adresa de ret ea se scrie ca si c and ar o adres a IP normal a, dup a care se scrie (f ar a spat iu) un caracter slash (/) urmat de lungimea prexului scris a ca num ar n baza 10. Exemplul 10.6: Prexul IPv4 1100-0000-1010-1000-110 se scrie, n notat ia cu adres a de ret ea si lungime (notat ie cu slash) 192.168.192.0/19. Prexul 11000000-1010-1000-1100-0000 se scrie 192.168.192.0/24. De remarcat important a specic arii lungimii. In notat ia cu adres a de ret ea si masc a de ret ea, se scrie mai nt ai adresa de ret ea, ca si n cazul scrierii cu adres a si lungime, dup a care se scrie (cu un slash ntre ele sau n rubrici separate) a sa-numita masc a de ret ea. Masca de ret ea const a dintr-un sir de bit i 1 de lungimea prexului de ret ea urmat de un sir de bit i 0, av and n total lungimea unei adrese IP. Masc a de ret ea, se scrie ca si c and ar o adres a IP. Notat ia cu adres a si masc a se utilizeaz a numai pentru IP versiunea 4. Exemplul 10.7: Prexul 1100-0000-1010-1000-110 se scrie, n notat ia cu adres a de ret ea si masca, 192.168.192.0/255.255.224.0. Prexul 1100-00001010-1000-1100-0000 se scrie 192.168.192.0/255.255.255.0.
10.2.4.1. Alocarea pe utiliz ari Adresele IPv4 sunt mp art ite dup a cum urmeaz a: Adresele cu prexele 0.0.0.0/8 si si 127.0.0.0/8 sunt rezervate. Adresa 127.0.0.1, pentru ecare nod, desemneaz a acel nod, cu alte cuvinte un pachet destinat adresei 127.0.0.1 este totdeauna livrat nodului curent. Adresa 0.0.0.0 nseamn a adres a necunoscut a; poate folosit a doar ca adres a surs a n pachete emise de un nod care ncearc a s a si ae propria adres a. Adresele cu prexul 224.0.0.0/4 sunt utilizate ca adrese de multicast (a sanumita clas a D ). Adresele cu prexul 240.0.0.0/4 sunt rezervate (a sa-numita clas a E ). Adresele cu prexele 10.0.0.0/8, 172.16.0.0/12 si 192.168.0.0/16 sunt numite adrese private [RFC 1918, 1996]. Aceste adrese pot utilizate intern de oricine, f ar a s a e necesar alocarea la IANA, ns a cu condit ia ca pachetele purt and astfel de adrese ca surs a sau destinat ie s a nu ajung a n afara nodurilor gestionate de acea persoan a sau institut ie. Aceste adrese se utilizeaz a pentru acele noduri, din ret eaua proprie a unei institut ii, care nu au nevoie de acces direct la Internet. Mai multe detalii despre utilizarea acestor adrese vor date n 10.7.2 Restul adreselor se aloc a normal nodurilor din Internet. 10.2.4.2. Alocarea adreselor si dirijarea ierarhic a In lipsa oric aror grup ari ale adreselor, majoritatea nodurilor din Internet ar trebui s a aib a n tabela de dirijare c ate o regul a pentru ecare nod. O asemenea solut ie nu este realizabil a practic la scar a mondial a. Din aceast a cauz a, adresele se aloc a institut iilor doritoare n blocuri de adrese, ecare bloc av and un prex unic, ntocmai ca n cazul subret elelor. Un bloc de adrese se aloc a unei subret ele sau grup de subret ele interconectate care apar, din restul Internetului, ca o singur a subret ea. Din afara subret elei corespunz atoare unui bloc, toate pachetele destinate adreselor din bloc sunt dirijate identic, conform unei reguli care are ca prex prexul blocului. In tabela de dirijare a unui nod oarecare din Internet va necesar astfel c ate o regul a pentru ecare bloc, si nu c ate o regul a pentru ecare nod. Pentru stabilirea dimensiunilor blocurilor, init ial adresele IP versiunea 4 au fost mp art ite n clase : A: Adresele cu prexul 0.0.0.0/1 au fost mp art ite n 128 blocuri alocabile, ecare bloc av and c ate 224 adrese. Lungimea prexului unui bloc este de 8 bit i.
B: Adresele cu prexul 128.0.0.0/2 au fost mp art ite n 16384 blocuri de c ate 65536 adrese. Prexul unui bloc este de 16 bit i. C: Adresele cu prexul 192.0.0.0/3 au fost mp art ite n 221 blocuri de c ate 256 adrese. Lungimea prexului unui bloc este de 24 de bit i. Ideea mp art irii ntre clasele A, B si C era aceea ca, d andu-se o adres a IP, s a se poat a determina lungimea prexului blocului din care face parte. Acest lucru simplic a mult calcularea tabelelor de dirijare si chiar c autarea n tabela de dirijare a regulii aplicabile. Imp art irea n clase s-a dovedit prea inexibil a. Pe de o parte, mp art irea este inecient a, duc and la alocarea c ate unui bloc de clas a B (adic a 65536 adrese) pentru institut ii care nu aveau nevoie de mai mult de c ateva sute de adrese. Pe de alt a parte, nu exist a nici o corelat ie ntre blocurile de adrese alocate unor institut ii diferite dar din aceea si zon a geograc a; n consecint a, pentru majoritatea ruterelor din Internet este nevoie de c ate o regul a de dirijare pentru ecare institut ie c areia i s-a alocat un bloc de adrese. Ca urmare s-a decis o nou a schem a de alocare a blocurilor de adrese. Noua schem a se nume ste CIDR (engl. Classless InterDomain Routing ) si este descris a n [RFC 1518, 1993]. In schema CIDR, un prex de bloc poate avea orice lungime. O institut ie ce dore ste acces Internet poate solicita alocarea unui bloc de adrese, cu un num ar de adrese egal cu o putere a lui 2. O institut ie care furnizeaz a acces Internet altor institut ii este ncurajat a s a aloce mai departe, din blocul alocat ei, sub-blocuri pentru institut iile c arora le ofer a acces Internet. Astfel, din afara ret elei furnizorului de acces Internet, ret eaua furnizorului mpreun a cu tot i client ii lui se vede ca o singur a subret ea n care toate adresele au acela si prex. CIDR mai prevede o grupare a blocurilor pe continente, astfel nc at pentru un nod aat pe un continent toate (sau majoritatea) adreselor de pe un alt continent s a se dirijeze conform unei singure reguli. Aceast a grupare este aplicabil a doar adreselor care nu erau deja alocate la momentul introducerii CIDR; CIDR nu si-a pus problema realoc arii adreselor deja alocate. Pentru adresele IP versiunea 6 se folose ste numai schema CIDR.
Protocolul const a n transmiterea, n anumite situat ii, a unor pachete ICMP. Un pachet ICMP este un pachet IP n care c ampul protocol are valoarea 1 pentru ICMPv4, respectiv 58 pentru ICMPv6, iar zona de date utile este structurat a conform standardului ICMP. Pachetele ICMP sunt de obicei generate de modulul de ret ea al unui nod, ca urmare a unei erori ap arute n livrarea unui pachet IP. Pachete ICMP mai pot generate si de programe utilizator, prin intermediul socket -urilor de tip SOCK RAW. Astfel de aplicat ii servesc la testarea funct ion arii ret elei. O dat a generat, un pachet ICMP este transmis prin ret ea ca orice alt pachet IP. Ajuns la destinat ie, modulul de ret ea (IP) al nodului destinat ie examineaz a c ampul protocol si, constat and c a este vorba de un pachet ICMP, l livreaz a modulului ICMP al nodului destinat ie. Modulul ICMP trebuie s a e prezent si funct ional n orice nod IP; n implement arile obi snuite este parte a nucleului sistemului de operare al calculatorului ce constituie nodul. Datele utile sunt formatate conform standardului ICMP si ncep cu doi ntregi pe c ate 8 bit i reprezent and tipul si subtipul mesajului ICMP (vezi tabelul 10.4). Formatul restului pachetului depinde de tipul mesajului ICMP; n majoritatea cazurilor, este prezent a o copie a primilor c ateva zeci de octet i din pachetului IP care a dus la generarea pachetului ICMP. Situat iile ce duc la generarea pachetelor ICMP, precum si act iunile ntreprinse de un nod la primirea unui pachet ICMP, sunt descrise n paragrafele urm atoare. 10.2.5.1. Pachete nelivrabile Un nod declar a un pachet nelivrabil dac a: nici o regul a din tabela de dirijare a nodului nu este aplicabil a destinat iei pachetului; sau interfat a de ret ea prin care trebuie trimis pachetul nu este funct ional a sau nu poate livra pachetul destinatarului (destinatarul nu r aspunde). In aceste cazuri, nodul curent trimite un pachet ICMP, av and: adresa sursa: adresa nodului curent, adresa destinat ie: adresa surs a a pachetului nelivrabil, tip: destination unreachable. Pachetul ICMP mai cuprinde antetul pachetului ce nu a putut livrat. Destinatarul pachetului ICMP, care este de fapt sursa pachetului nelivrabil, trebuie s a analizeze antetul pachetului returnat si s a informeze nivelul superior (probabil TCP sau UDP) asupra problemei.
Subtip 0 network unreachable 1 host unreachable 3 protocol unreachable 4 fragmentation needed 5 source route failed
11 time exceeded
0 TTL exceeded
0 1 2 3
pachet prea mare si agul nu fragmenta setat; vezi 10.2.6.1 pachetul a avut opt iunea dirijare de c atre surs a si ruta specicat a este invalid a. pachetul se a a de prea mult timp n ret ea (probabil cicleaz a), 10.2.5.3 probabil fragment pierdut, 10.2.6.1 pachet neconform cu standardul cerere ncetinire surs a, 10.2.5.4 redirect ionare, 10.2.5.5 cerere ecou, 10.2.5.2 r aspuns ecou, 10.2.5.2
10.2.5.2. Diagnosticarea funct ion arii rutelor Testarea funct ion arii comunicat iei la nivel ret ea este un test simplu si extrem de util n g asirea penelor dintr-o ret ea. In acest scop, pe majoritatea sistemelor exist a o comand a utilizator, numit a ping, care testeaz a leg atura dintre nodul curent si nodul specicat. Comanda ping funct ioneaz a prin trimiterea unui pachet ICMP cu tipul echo request (rom. cerere ecou) c atre nodul specicat. Nodul destinat ie al unui pachet echo request r aspunde prin trimiterea napoi (c atre sursa pachetului echo request ) a unui pachet ICMP cu tipul echo reply (rom. r aspuns ecou ). Pachetul echo reply este livrat comenzii ping. Pachetele echo request si echo reply se mai numesc uneori ping si pong. Pachetele cu tipurile ping si pong au prev azute, conform standardului, dou a c ampuri, identicare si nr. secvent a, pe baza c arora nucleul sistemului si comanda ping identic a corespondent ele ntre pachetele ping trimise si pachetele pong recept ionate. Pachetele ping si pong au prev azut si un c amp, de dimensiune arbitrar a, de date utile; scopul acestui c amp este testarea transmiterii pachetelor mari. Pe l ang a comanda ping care testeaz a funct ionarea unei leg aturi, exist a o comand a, traceroute (pe sisteme de tip Unix) sau tracert (pe Windows), care a seaz a adresele ruterelor prin care trece un pachet pentru o anumit a destinat ie. Exist a mai multe metode pentru a aa drumul spre un anumit nod. Metoda utilizat a de comanda traceroute se bazeaz a pe trimiterea, spre acel nod, a unor pachete ping cu valori mici pentru timpul de viat a (vezi 10.2.5.3). Un astfel de pachet parcurge nceputul drumului spre nodul destinat ie, ns a, dup a parcurgerea unui num ar de noduri intermediare egal cu valoarea init ial a a timpului de viat a, provoac a trimiterea napoi a unui pachet ICMP de tip TTL exceeded. Trimit and pachete ping cu diferite valori pentru timpul de viat a, se primesc pachete TTL exceeded de la diferitele noduri de pe traseul spre destinat ie. O alt a posibilitate de-a aa ruta spre un anumit nod este furnizat a de un antet opt ional, standardizat si n IPv4 si n IPv6, care cere ruterelor s a- si scrie ecare adresa n acest antet opt ional. 10.2.5.3. Ciclarea pachetelor IP Este posibil s a existe (temporar) inconsistent e n tabelele de dirijare. De exemplu, se poate ca tabela de dirijare a nodului A s a indice nodul B ca nod urm ator pe ruta c atre C, iar tabela nodului B s a indice ca nod urm ator pe ruta c atre C nodul A. In acest caz, dac a A prime ste un pachet destinat lui
C i-l va trimite lui B, B va pasa pachetul napoi lui A, s. a. m. d. Pentru a preveni ciclarea nelimitat a a pachetelor n astfel de cazuri, n antetul IP este prev azut un c amp numit timp de viat a. Valoarea acestui c amp este init ializat a de c atre nodul surs a al pachetului (valoarea init ial a este de ordinul zecilor) si este sc azut a cel put in cu 1 de c atre ecare nod prin care trece pachetul. Dac a valoarea ajunge la 0, nodul nu mai trimite mai departe pachetul ci l ignor a sau trimite napoi un pachet ICMP cu tipul time exceeded, subtipul time to live (TTL) exceeded (rom. dep a sire timp de viat a ) pentru a semnala situat ia. 10.2.5.4. Congestia In general, prin congestie se nt elege situat ia n care ntr-un nod intr a pachete ntr-un ritm mai rapid dec at poate nodul s a retrimit a pachetele, rezult and de aici o funct ionare proast a a ret elei (vezi 5.3). In cazul congestiei, nodul congestionat poate cere sursei s a reduc a tracul prin trimiterea c atre aceasta a unui pachet ICMP cu tipul source quench. 10.2.5.5. Redirect ionarea Un nod, care prime ste un pachet si constat a c a trebuie trimis mai departe n aceea si subret ea din care a sosit pachetul, poate informa sursa pachetului cu privire la faptul c a pachetul a mers pe o rut a neoptim a. Informarea se face printr-un pachet ICMP cu tipul redirect.
192.168.7.7 192.168.7.1
192.168.1.3 192.168.1.1
192.168.1.9
Spre exterior
Figura 10.3: O ret ea pentru ilustrarea redirect ion arii pachetelor (vezi exemplul 10.8)
Exemplul 10.8: Consider am ret eaua din gura 10.3. Pentru nodurile din
subret eaua 192.168.1.0/24, ar trebui s a existe n tabela de dirijare: o regul a care s a asocieze prexului 192.168.7.0/24 gateway-ul 192.168.1.3; o regul a indic and ca default gateway adresa 192.168.1.1. In practic a, pentru simplicarea administr arii, se omite congurarea primei reguli pe toate nodurile cu except ia nodului 192.168.1.1. In consecint a, o stat ie din subret eaua 192.168.1.0/24, de exemplu 192.168.1.9, care are de trimis un pachet c atre un nod din subret eaua 192.168.7.0/24, de exemplu c atre 192.168.7.7, va trimite pachetul lui 192.168.1.1 n loc de 192.168.1.3. Nodul 192.168.1.1 trimite mai departe pachetul c atre 192.168.1.3 si, totodat a, trimite un pachet ICMP redirect c atre 192.168.1.9; aceasta din urm a si poate actualiza tabela de dirijare pentru a trimite direct la 192.168.1.3 urm atoarele pachete destinate nodurilor din subret eaua 192.168.7.0/24.
Pentru a permite producerea, de c atre nivelul superior, a unor pachete IP sucient de mici, exist a un protocol pentru aarea dimensiunii maxime a pachetelor ce pot trece prin leg aturile directe. Protocolul este descris n [RFC 1981, 1996]. Protocolul Internet permite si fragmentarea la nivel ret ea a pachetelor. Pentru IP versiunea 4, c ampurile necesare pentru fragmentarea si reasamblarea pachetelor sunt prev azute n antetul standard. De asemenea, exist a un ag, nu fragmenta, care cere ruterelor de pe traseu s a nu ncerce fragmentarea ci n schimb s a abandoneze transmiterea pachetului. Pentru IP versiunea 6, c ampurile privind fragmentarea au fost mutate ntr-un antet opt ional, deoarece este probabil s a nu e utilizate frecvent. Fragmentarea poate f acut a doar de emit atorul pachetului, ruterele de pe traseu ind obligate s a abandoneze transmiterea n cazul n care pachetul este prea mare. Fragmentele sunt pachete IP obi snuite, care se transmit independent unul de altul din punctul n care s-a efectuat fragmentarea. Nodul destinat ie efectueaz a reasamblarea pachetelor. In acest scop se utilizeaz a c ampurile identicare si deplasament si agul mai urmeaz a fragmente. Astfel, un pachet se va asambla din fragmente av and toate aceea si valoare n c ampurile identicare, adres a surs a, adres a destinat ie si protocol. Pachetul asamblat va avea antetul identic cu al fragmentelor (mai put in c ampurile ce controleaz a fragmentarea). Datele utile vor reconstituite din datele utile ale fragmentelor. C ampul deplasament al unui fragment arat a locul datelor utile din fragment n cadrul pachetului (reamintim c a fragmentele, ca orice pachete IP, se pot pierde, pot duplicate si ordinea lor de sosire poate inversat a). Lungimea pachetului este determinat a din faptul c a, n ultimul fragment, agul mai urmeaz a fragmente are valoarea 0. Destinat ia ncearc a reasamblarea unui pachet din momentul n care a primit primul fragment al pachetului. Dac a celelalte fragmente nu sosesc ntr-un interval de timp sucent de scurt, nodul abandoneaz a reasamblarea si trimite napoi un pachet ICMP cu tipul time exceeded, subtipul fragment reassembly time exceeded. 10.2.6.2. Calitatea serviciului Dac a un nod este relativ aglomerat, acesta trebuie s a ia decizii privind prioritatea pachetelor: dac a unele pachete trebuie trimise c at mai repede, fat a de altele care pot tinute mai mult n coada de a steptare; la umplerea memoriei ruterului, care pachete pot aruncate (distruse).
C ampul tip serviciu din antetul IP cont ine informat ii despre nivelul de calitate a serviciului cerut de emit atorul pachetului; n funct ie de acesta, modulul de ret ea ia deciziile privind ordinea de prioritate a pachetelor.
ind nodul din subret ea cel mai apropiat de ie sirea spre restul Internetului. Se obi snuie ste ca nodul ales ca default gateway s a primeasc a adresa IP cea mai mic a din subret ea (adic a adresa n care suxul are valoarea 1). Pe toate nodurile subret elei se congureaz a ca default gateway nodul ales ca default gateway al subret elei. Pentru nodurile care fac parte din mai multe subret ele, se ia default gateway -ul din subret eaua cea mai apropiat a de exterior (astfel un nod nu va avea ca default gateway pe el nsu si). Pe nodul ales ca default gateway pentru o subret ea se vor congura rutele c atre subret elele ,,din subordine subret elele mai dep artate de leg atura spre exterior dec at subret eaua considerat a. Mai not am c a ntr-o tabel a de dirijare static a nu se pot congura, pentru tolerant a la pene, mai multe c ai spre o aceea si destinat ie. Dac a se dore ste a sa ceva este necesar a instalarea unui program de calcul automat al tabelei de dirijare.
Subret ea secretariat 193.0.227.192/27 S1 193.0.227.194 S2 193.0.227.222 Subret ea laboratoare 193.0.224.0/23 L1 193.0.224.2 L2 193.0.224.3 L3 193.0.225.254
eth0: 193.0.224.4 L4 eth1: 193.0.227.225 193.0.227.226 E1 193.0.227.238 E2 Subret ea experimental a eth2: 193.0.224.1 eth1: 193.0.227.193 193.0.227.224/28
G
eth0: 193.226.40.130/255.255.255.240 Spre ret eaua furnizorului
Exemplul 10.9: S a consider am c a avem de construit o ret ea ntr-o scoal a. Presupunem c a am obt inut alocarea blocului de adrese 193.0.224.0/22 pentru utilizare n ret eaua proprie si c a ruterul ce asigur a leg atura cu ret eaua furnizorului de acces Internet a primit adresa ( n ret eaua furnizorului) 193.226.40.130 cu masca 255.255.255.240 (prex de 28 de bit i). S a presupunem, de asemenea, c a s-a decis mp art irea ret elei interne n trei subret ele (g. 10.4), respectiv pentru secretariat, laboratorul de informatic a si o ret ea special a pentru experimente. Imp art irea luat a ca exemplu este o mp art ire tipic a din considerente de trac si de securitate: ret eaua experimental a trebuie s a poat a izolat a u sor de restul ret elei, iar secretariatul este separat fat a de tracul si eventual atacurile dinspre laboratorarele de informatic a. Fiecare subret ea este construit a dintr-un num ar de switch-uri Ethernet, access point -uri 802.11 si calculatoarele respective. Switch-urile si access point -urile nu au fost gurate explicit deoarece ele nu sunt vizibile din punctul de vedere al nivelului IP. Pentru conectarea celor trei subret ele mpreun a si la Internet congur am dou a rutere: G, dotat cu trei pl aci de ret ea, care leag a ret eaua secretariatului, ret eaua din laboratoare si ret eaua furnizorului de acces Internet si L4 (probabil amplasat n laborator, pentru a la ndem an a n timpul experimentelor), dotat cu dou a pl aci de ret ea, care leag a ret eaua experimental a de ret eaua din laborator. Odat a stabilite subret elele, s a aloc am adresele. Blocul de adrese disponibile este 193.0.224.0/22, cont in and 1024 de adrese. Putem crea blocuri av and ca dimensiuni puteri ale lui 2: 512, 256, 128, 64, 32, 16, 8 sau 4 adrese. Incepem prin a aloca laboratoarelor un bloc c at mai mare, de 512 adrese (510 utilizabile efectiv), anume 193.0.224.0/23. Din blocul de 512 adrese r amas (193.0.226.0/23), s a aloc am 32 adrese secretariatului si 16 adrese ret elei experimentale. Este bine s a le aloc am c at mai compact, pentru ca dintre adresele nealocate s a p astr am posibilitatea de-a aloca blocuri c at mai mari. Vom aloca cele dou a blocuri de 32 si 16 adrese din ultimul bloc de 64 de adrese din cele 512 libere: 193.0.227.192/27 pentru secretariat si 193.0.227.224/28 pentru ret eaua experimental a. Pentru ecare din cele trei subret ele, exist a o alegere natural a pentru default gateway: G pentru ret eaua secretariatului si pentru ret eaua din laboratoare si, respectiv, L4 pentru ret eaua experimental a. In ecare caz, default gateway -ul este nodul cel mai apropiat de exterior. In ecare subret ea, adresa dat a ruterului cu rol de default gateway este cea mai mic a adres a din acea subret ea.
S a vedem acum cum trebuie congurate tabelele de dirijare. Pentru stat ii, tabelele sunt formate din c ate dou a reguli: o regul a pentru livrarea direct a, care asociaz a prexului subret elei unica interfat a de ret ea, si o regul a implicit a, care asociaz a prexului vid adresa default gateway -ului. Pentru nodul L4 , tabela de dirijare are trei reguli, dou a ind pentru livrarea direct a prin cele dou a interfet e, iar a treia este regula implicit a: 193.0.224.0/23 eth0 ; 193.0.227.224/28 eth1 ; 0.0.0.0/0 193.0.224.1 (prin eth0 ). Pentru nodul G avem 5 reguli: trei reguli de livrare direct a prin cele trei interfet e, o regul a implicit a indic and default gateway -ul ret elei furnizorului de acces Internet si o regul a pentru dirijarea spre subret eaua ,,subordonat a 193.0.227.224/28: 193.226.40.128/28 eth0 ; 193.0.227.192/27 eth1 ; 193.0.224.0/23 eth2 ; 0.0.0.0/0 193.226.40.129 (prin eth0 ). 193.0.227.224/28 193.0.224.1 (prin eth1 ). 10.2.7.2. Congurarea parametrilor de ret ea pe diverse sisteme de operare Pe sistemele Windows, exist a dou a posibilit a ti de congurare: comanda ipconfig ( n mod text) si seria de casete de dialog din Start/ Control panel/ Network/ interfat a. Prin ambele interfet e se realizeaz a at at modicarea parametrilor din modulul IP din nucleul sistemului de operare c at si scrierea lor n Windows registry pentru re nc arcarea lor la repornirea sistemului. Comportamentul de ruter, dac a este dorit, trebuie activat explicit. Pe sistemele de tip Linux congurarea este put in mai complicat a, dar si mult mai exibil a. Comanda ifconfig seteaz a parametrii legat i de interfet ele de ret ea, anume adresa IP si masca de ret ea. Tot comanda ifconfig introduce n tabela de dirijare regulile de livrare direct a (de fapt acesta este motivul pentru care are nevoie de masca de ret ea). Tabela de dirijare se a seaz a si se modic a cu comenzile route sau ip (prima este mai simpl a si se g ase ste pe toate sistemele, a doua este mai complex a si serve ste si altor scopuri). De remarcat c a oprirea unei interfet e de ret ea cu ifconfig duce automat la eliminarea din tabela de dirijare a tuturor regulilor ce au ca tint a
adrese accesibile prin acea interfat a. Activarea comportamentului de ruter se face cu o comand a sysctl. Comenzile ifconfig, route, ip si sysctl au efect imediat asupra modulului IP din nucleu, dar congur arile respective se pierd la repornirea sistemului. Parametrii de ret ea utilizat i la pornirea sistemului sunt luat i de script-urile de init ializare din ni ste siere text; din p acate, ecare distribut ie de Linux are propriile siere de congurare. De exemplu, Fedora plaseaz a datele n siere n directorul /etc/sysconfig/network-scripts. 10.2.7.3. Testarea si depanarea ret elelor Cel mai util instrument de depanare pentru problemele de conectivitate este comanda ping. Pentru buna funct ionare a acesteia si a comenzii traceroute, este necesar ca, dac a este instalat un ltru de pachete (rewall), acesta s a permit a trecerea pachetelor ICMP cu tipurile echo-request, echoreply, destination unreachable si time exceeded. Primul lucru ce trebuie testat, n cazul unei probleme de conectivitate sau dup a o lucrare mai ampl a la ret ea, este dac a leg aturile directe funct ioneaz a. Acest lucru se face d and comanda ping pentru c ate un vecin din ecare subret ea din care face parte calculatorul de pe care se efectueaz a testul. Dac a ping-ul merge, nseamn a c a leg atura funct ioneaz a (pl acile de ret ea, cablurile, switch-urile si access point -urile de pe traseu) si c a adresele IP si m a stile de ret ea sunt ,,sucient de bune pentru ca nodurile s a e v azute ca f ac and parte din aceea si subret ea. Dac a ping-ul nu merge si pachetele ping si pong nu sunt ltrate, pana trebuie c autat a printre lucrurile enumerate p an a aici. Dac a ping-ul merge pe leg aturile directe, se trece la vericarea leg aturilor ntre subret ele diferite. Dac a o leg atur a indirect a nu funct ioneaz a de si toate leg aturile directe ce ar trebui s a e utilizate funct ioneaz a, problema este de la regulile de dirijare (sau de la un ltru de pachete; de aceea este bine ca pachetele ping si pong s a nu e ltrate). Exist a dou a lucruri u sor de sc apat din vedere aici: faptul c a pentru ca ping-ul s a mearg a este necesar ca dirijarea s a funct ioneze corect n ambele sensuri si faptul c a ntre regulile de dirijare intr a inclusiv regulile de default gateway de pe stat ii. De exemplu, o stat ie care nu are congurat default gateway va putea comunica cu vecinii direct i, dar nu si cu alte calculatoare nici m acar cu default gateway -ul, dac a esre specicat prin alt a adres a dec at cea din aceea si subret ea cu stat ia congurat a. Alt exemplu: la ret eaua din exemplul 10.9, dac a pe nodul G nu se pune regula care asociaz a prexului 193.0.227.224/28 gateway -ul 193.0.224.4, atunci pachetele dinspre subret eaua 193.0.227.224/28
pot s a ias a spre Internet, ns a pachetele dinspre Internet nu trec de nodul G. Un ping executat de pe E1 c atre L4 merge, ns a c atre L2 nu merge. In acest din urm a caz, pachetele ping ajung la L2 , dar pachetele pong sunt trimise de L2 c atre G (conform regulii implicite). G, neav and alt a regul a, aplic a si el regula implicit a si le trimite c atre 193.226.40.129 (default gateway -ul din ret eaua furnizorului, negurat pe desen). De aici pachetele se ntorc napoi spre G, deoarece furnizorul stie c a toat a ret eaua 193.0.224.0/22 este n spatele lui G. Astfel, pachetele pong cicleaz a ntre G si 193.226.40.129.
Figura 10.5: Modulele unei ret ele IP. Partea inclus a n sistemul de operare este delimitat a cu linie punctat a.
leg atur a bidirect ional a, adic a ecare din cei doi parteneri de comunicat ie poate trimite date celuilalt; livrare sigur a, adic a octet ii trimi si de emit ator ajung la receptor sigur, f ar a duplicate si n aceea si ordine n care au fost trimi si. Modulul TCP are la dispozit ie, pentru realizarea conexiunilor TCP, facilit a tile oferite de ret eaua IP. 10.3.1.1. Principiul conexiunii TCP Livrarea sigur a este obt inut a pe baza unui mecanism de numerotare si conrmare a pachetelor, a sa cum am v azut n 4.3. Mecanismul este implementat dup a cum urmeaz a. Pentru nceput consider am transmisia unidirect ional a si conexiunea deja deschis a. Zona de date utile a unui pachet IP ce transport a date pentru protocolul TCP cont ine un antet TCP si datele utile TCP. Antetul TCP este descris n tabelul 10.5. Fiec arui octet al uxului de date utile (de transportat de c atre TCP) i se asociaz a un num ar de secvent a ; octet i consecutivi au asociate numere de secvent a consecutive. Fiecare pachet TCP cont ine, n zona de date utile, un sir de octet i utili consecutivi. C ampul num ar de secvent a din antetul TCP cont ine num arul de secvent a al primului octet din datele utile.
Nume c amp Port surs a Port destinat ie Nr. secvent a Nr. conrmare Deplasament date Rezervat Urgent Acknowledge Push Reset Synchronize Finalize Dim. fereastr a Suma de control Pozit ie date urgente Opt iuni
Observat ii
pozit ia datelor utile n pachet, dependent de dimensiunea opt iunilor valoarea 0 vezi 10.3.1.11 indic a faptul c a num arul de conrmare este valid arat a c a pachetul trebuie trimis urgent, f ar aa tinut n diverse zone tampon cere nchiderea fort at a a conexiunii cere deschiderea conexiunii cere nchiderea conexiunii vezi 10.3.1.8 suma de control a antetului vezi 10.3.1.11
Modulul TCP receptor tine evident a num arului de secvent a al ultimului octet primit. La primirea unui pachet TCP, modulul receptor determin a dac a datele utile sunt octet i deja primit i (duplicate), octet i ce vin imediat n continuarea celor primit i p an a n acel moment sau octet i p an a la care exist a octet i lips a (nerecept ionat i nc a din cauza unui pachet pierdut sau nt arziat). Octet ii primit i n continuarea celor deja primit i sunt pu si ntr-o coad a pentru a livrat i aplicat iei la cererea acesteia. La primirea unui pachet TCP, receptorul trimite napoi un pachet TCP de conrmare. Un pachet TCP de conrmare are n antetul TCP agul acknowledge setat si n c ampul num ar de conrmare num arul de secvent a al urm atorului octet a steptat de la emit ator. Un pachet cu num ar de conrmare n informeaz a emit atorul c a tot i octet ii cu numere de secvent a mai mici sau egale cu n 1 au fost primit i de receptor si nu mai trebuie retransmi si. Emit atorul retransmite octet ii neconrmat i. Datele utile, furnizate de aplicat ie emit atorului, sunt p astrate ntr-o zon a tampon si tinute acolo p an a la conrmarea primirii lor de c atre receptor. Datele trimise si neconrmate ntr-un anumit interval de timp se retransmit. Datele noi intrate n zona tampon sunt trimise cu un nou pachet. Dac a un pachet nu este conrmat si ntre prima trimitere si momentul retrimiterii au mai sosit date de la aplicat ie, emit atoul poate la retrimitere s a concateneze datele vechi neconrmate cu cele noi. Exemplul 10.10: In gura 10.6 este prezentat a (simplicat) o parte dintr-un schimb de pachete corespunz ator unei conexiuni TCP. Presupunem c a aplicat ia surs a are de trimis sirul abcdefghi, si c a acesta este pasat modulului TCP emit ator n etape, nt ai sirul abcd, apoi efg, h si n nal i. Mai presupunem conexiunea TCP deja deschis a si num arul curent de secvent a 10. S a analiz am put in schimbul de pachete: Emit atorul trimite un prim pachet, cu num ar de secvent a 10 si date utile sirul de 4 octet i abcd. Ace sti 4 octet i au numere de secvent a respectiv 10, 11, 12 si 13; primul dintre acestea este scris n c ampul num ar de secvent a al antetului TCP. La primirea acestui pachet, receptorul r aspunde cu un pachet de conrmare, cu num arul de conrmare 14 (acesta este urm atorul num ar de secvent a a steptat). Emit atorul trimite acum urm atorul pachet de date, cu num arul de secvent a 14 si date utile efg. Presupunem c a acest pachet se pierde. Ca urmare a primirii de la aplicat ia surs a a urm atorului octet, h, emi t atorul TCP trimite imediat urm atorul pachet, cu num arul de secvent a
Surs a abcd
Destinat ie abcd
efg secv.=14 h secv.=17 efg h conrm =14 i secv.=14 efghi efghi conrm =19 secv.=14 efghi conrm =19
Figura 10.6: O secvent a de pachete TCP schimbate ntre emit ator (st anga) si receptor (dreapta); vezi exemplul 10.10.
17 si date utile h (presupunem c a emit atorul nu utilizeaz a algoritmul Nagle, 10.3.1.10). La primirea acestui pachet (cu num ar de secvent a 17), receptorul nu l poate conrma deoarece nu a primit numerele de secvent a 1416; dac a n acest moment receptorul ar trimite un pachet cu num ar de conrmare 18, emit atorul ar crede c a toate numerele de secvent a p an a la 17 inclusiv au fost primite si nu ar mai retrimite niciodat a numerele de secvent a 1416. Ca urmare, receptorul are dou a posibilit a ti: s a ignore pachetul primit (adic a s a nu trimit a nici un pachet napoi) sau s a retrimit a num arul de conrmare 14; n exemplul de fat a am considerat a doua variant a. Presupunem acum c a pe de o parte a expirat time-out-ul emit atorului pentru numerele de secvent a 1417 si pe de alt a parte c a a primit de la aplicat ia surs a urm atorul octet (i). Emit atorul mpacheteaz a acum tot ce are de (re)trimis ntr-un singur pachet si trimite num arul de secvent a 14 si datele utile efghi. Receptorul conrm a pachetul primit, trimit and num arul de conrmare 19. Presupunem c a pachetul de conrmare respectiv se pierde. Emit atorul retrimite pachetul anterior, dup a expirarea time-out-ului de la trimiterea lui. Receptorul constat a c a a primit un duplicat al datelor precedente, ns a retrimite conrmarea cu num arul 19. Netrimiterea n acest moment a conrm arii ar duce la repetarea la innit de c atre emit ator a pachetului precedent. De notat c a, de si receptorul prime ste un duplicat, emit atorul nc a nu stie de primirea datelor de c atre receptor. In continuarea schimbului de pachete ilustrat, nu se vor mai trimite pachete p an a ce aplicat ia surs a nu va da emit atorului TCP noi date de transmis. Am presupus p ana aici c a numerele de secvent a sunt numere naturale care pot cre ste nedeterminat de mult. In realitate, numerele de secvent a sunt reprezentate (vezi tabelul 10.5) pe 32 de bit i. Cum un num ar de secvent a este asociat unui octet transmis, rezult a c a exist a numere de secvent a distincte doar pentru 4 GiB de date; dup a aceea numerele de secvent a ncep s a se repete. Aceasta nu era o problem a n anii 80, deoarece la 10 Mbit/s repetarea unui num ar de secvent a apare cel mai repede dup a aproape o or a, timp n care este put in probabil s a mai existe n ret ea un pachet vechi cu acela si num ar de secvent a. Intr-o ret ea cu debit de 1 Gbit/s, se pot transmite 4 GiB n 34 secunde, ceea ce face foarte posibil a o confuzie ntre un pachet care s-a ,, ncurcat prin ret ea timp de 34 s si un pachet nou care poart a informat ie situat a, n cadrul conexiunii, 4 GiB mai ncolo, si are acela si num ar de secvent a.
Eliminarea riscului de confuzie ntre pachete la debite mari de transmisie a datelor se realizeaz a, conform [RFC 1323, 1992], prin introducerea n antetul TCP a unui c amp opt ional cuprinz and un marcaj de timp. Metoda se aplic a doar la comunicat ia ntre module TCP care implementeaz a RFC 1323. In cazul n care unul din modulele TCP nu implementeaz a RFC 1323, modulele TCP vor avea grij a s a nu repete un num ar de secvent a mai devreme de c ateva minute, oprind efectiv transmisia la nevoie. 10.3.1.2. Comunicat ia bidirect ional a Cele dou a sensuri de comunicat ie ale unei conexiuni TCP funct ioneaz a (aproape) complet independent. Numerele de secvent a utilizate pe cele dou a sensuri evolueaz a independent. Totu si, datele utile pentru un sens sunt plasate n acela si pachet TCP cu conrmarea pentru cel alalt sens. Astfel, ecare pachet TCP cont ine ntotdeauna date pentru un sens si conrmare pentru cel alalt sens. Dac a este necesar a transmiterea unor date, dar nu si a unei conrm ari, n c ampul num ar de conrmare se repet a ultimul num ar de conrmare transmis. Dac a este necesar s a se transmit a doar o conrmare, f ar a date utile pentru cel alalt sens, atunci zona de date utile se face de dimensiune 0 iar n c ampul num ar de secvent a se pune num arul de secvent a al urm atorului octet ce va transmis. 10.3.1.3. Deschiderea si nchiderea conexiunii Pentru ecare sens de comunicat ie se consider a c ate doi octet i ctivi: un octet de pornire aat naintea primului octet util al datelor transmise si un octet de ncheiere aat dup a ultimul octet al datelor utile. Ace sti octet ii ctivi au asociate numere de secvent a ca si c and ar octet i obi snuit i. Ei nu sunt transmi si n zona de date utile; prezent a lor ntr-un pachet este semnalizat a prin setarea agurilor synchronize si respectiv nalize din antetul TCP. Astfel, dac a un pachet TCP are agul synchronize setat, num arul de secvent an si zona de date utile cont in and k octet i, nseamn a c a pachetul transmite k +1 octet i dintre care primul, cu num arul de secvent a n, este octetul ctiv de pornire, urmat de cei k octet i din zona de date utile, cu numere de la n + 1 la n + k . Init iatorul unei comunicat ii TCP trimite un pachet TCP cont in and un octet ctiv de pornire, f ar a a seta agul acknowledge (acesta este singurul pachet ce nu are agul acknowledge setat) si pun and o valoare arbitrar a (care va ignorat a la destinat ie) n c ampul num ar de conrmare.
Num arul de secvent a al octetului ctiv de pornire este la alegerea init iatorului comunicat iei. Receptorul pachetului init ial r aspunde, dac a dore ste s a accepte conexiunea, printr-un pachet TCP care, pe de o parte, conrm a pachetul de init iere primit, iar pe de alt a parte cont ine la r andul lui un octet ctiv de pornire. Fiecare parte consider a conexiunea deschis a n momentul n care sunt satisf acute simultan condit iile: octetul ctiv de pornire trimis de ea a fost conrmat; a primit un octet ctiv de pornire de la partener. Fiecare parte poate trimite date nainte de a dispune de o conexiune deschis a; datele primite nainte de momentul n care conexiunea este deschis a nu pot livrate aplicat iei p an a la deschiderea complet a a conexiunii. Inchiderea conexiunii se face separat pe ecare sens de comunicat ie. Marcarea nchiderii unui sens se face trimit and un octet ctiv de ncheiere. Dup a trimitera octetului de ncheiere este interzis s a se mai trimit a date noi. Ca urmare, orice pachete (de conrmare) trimise de partea care a nchis conexiunea vor avea ca num ar de secvent a num arul imediat urm ator octetului ctiv de ncheiere si date utile vide. Octetul ctiv de ncheiere se conrm a normal. O conexiune poate funct iona oric at de mult timp cu un sens nchis. Nr. pachet 1 2 3 4 5 6 7 8 9 10 Sens AB AB AB AB AB AB AB AB AB AB Nr. secv. 123 25 124 26 127 26 26 130 29 130 Nr. conrm. 0 124 26 127 26 130 130 29 130 30 Flaguri syn syn,ack ack ack ack,n ack ack ack ack,n ack Date utile abc de xyz
Tabelul 10.6: Un exemplu de schimb de pachete n cadrul unei conexiuni. Vezi exemplul 10.11.
Exemplul 10.11: Un exemplu de schimb de pachete n cadrul unei conexiuni este dat n tabelul 10.6.
Pentru a urm ari u sor schimbul de pachete, s a remarc am c a A trimite lui B un num ar de 7 octet i din care 2 ctivi, ,, syn abcde n , cu numerele de secvent a de la 123 la 129 inclusiv, iar B trimite lui A un num ar de 5 octet i din care 2 ctivi, ,, syn xyz n , cu numerele de secvent a de la 25 la 29 inclusiv. Fiecare pachet care transport a octet i numerotat i, indiferent dac a ace stia sunt date utile sau octet i ctivi syn sau n , trebuie conrmat. Pachetele ce cont in doar num arul de conrmare nu se conrm a. Din punctul de vedere a lui A, conexiunea este complet deschis a la primirea pachetului nr. 2; din punctul de vedere al lui B conexiunea este complet deschis a la primirea pachetului 3. Dup a trimiterea pachetului 5, A nu mai are voie s a trimit a date noi; poate doar s a repete datele vechi (dac a nu ar primit pachetul 6 ar trebuit s a retrimit a pachetul 5) si s a trimit a conrm ari. B consider a conexiunea complet nchis a dup a primirea pachetului 10 (a primit un n de la A si a trimis si i s-a conrmat n -ul propriu). A poate considera de asemenea conexiunea complet nchis a dup a trimiterea pachetului 10, ns a mai trebuie s a p astreze un timp datele despre conexiune pentru cazul n care pachetul 10 s-ar pierde si B ar repeta pachetul 9. O problem a special a legat a de nchiderea conexiunii este problema determin arii duratei de la nchiderea conexiunii p an a la momentul n care datele asociate conexiunii nu mai sunt necesare si memoria asociat a poate eliberat a. Din punctul de vedere al unui modul TCP, conexiunea este nchis a n momentul n care sunt ndeplinite condit iile: modulul TCP a trimis octetul special de ncheiere, modulul TCP a primit conrmarea propriului octet de ncheiere, modulul TCP a primit un octet special de ncheiere de la partener. Dup a nchiderea conexiunii din punctul de vedere al modulului TCP local, exist a nc a posibilitatea ca modulul TCP partener s a nu primeasc a conrmarea modulului TCP local pentru octetul special de nchidere trimis de modulul TCP partener). Urmarea este c a modulul TCP partener nu consider a nchis a conexiunea (conform regulilor de mai sus) si retrimite octetul special de ncheiere p an a la conrmarea acestuia. Modulul TCP local ar trebui s a p astreze informat iile despre conexiune p an a c and modulul TCP partener prime ste conrmarea octetului s au de ncheiere. Din p acate, determinarea acestui moment este imposibil a, deoarece din acel moment modulul TCP partener nu va mai trimite nici un pachet (conexiunea ind nchis a). Ca solut ie de compromis, protocolul TCP prevede p astrarea datelor despre conexiune un anumit interval de timp (de ordinul c atorva minute) dup a nchiderea
conexiunii. 10.3.1.4. Alegerea num arului init ial de secvent a Num arul de secvent a al octetului ctiv de pornire, numit si num ar init ial de secvent a (engl. initial sequence number, ISN ), trebuie ales n a sa fel nc at s a nu poat a exista confuzie ntre numere de secvent a dintr-o conexiune veche si cele din conexiunea curent a ntre acelea si dou a p art i (acelea si adrese IP si numere de port). Ideal, modulul TCP ar trebui s a p astreze datele despre o conexiune at at timp c at mai pot exista n ret ea pachete apart in and conexiunii. In aceste condit ii, la redeschiderea unei conexiuni ntre acelea si dou a p art i, ecare parte poate atribui octetului ctiv de pornire num arul de secvent a imediat urm ator num arului de secvent a asociat octetului ctiv de ncheiere al conexiunii precedente. In acest caz, putem privi conexiunile succesive ca ind o singur a conexiune n care transmisiile sunt delimitate prin secvent e de octet i ctivi n syn . Dac a de la precedenta conexiune a trecut destul timp pentru ca pachetele corespunz atoare s a nu mai existe n ret ea (e au ajuns la destinat ie, e au fost distruse ca urmare a dep a sirii timpului de viat a), alegerea num arului init ial de secvent a poate f acut a oricum. Exist a c ateva considerente, enumerate mai jos, care duc la utilitatea unor alegeri particulare. Un prim considerent este ngreunarea unor atacuri de tip IP spoong. Un atac IP spoong (numiu uneori simplu spoong ) const a n a trimite pachete IP n care se falsic a valoarea c ampului adres a surs a. Scopul unui astfel de atac este de-a n sela un mecanism de autenticare bazat pe adresa IP a partenerului de comunicat ie sau de-a deturna o conexiune TCP deja autenticat a. In acest din urm a caz, adversarul las a un client legitim s a se conecteze la server si, dup a efectuarea autentic arii, adversarul injecteaz a un mesaj destinat serverului si av and ca adres a surs a adresa clientului autenticat. Mesajul este interpretat de server ca provenind de la clientul autenticat si, dac a cont ine o comand a autorizat a pentru client, comanda este executat a, de si n realitate provine de la adversar. De multe ori, ntr-un atac de tip spoong adversarul nu are si posibilitatea de-a determina ruterele de pe traseu s a-i permit a recuperarea pachetelor de r aspuns. Un atac n astfel de condit ii se nume ste blind spoong. Un atac blind spoong se contracareaz a foarte simplu gener and aleator num arul init ial de secvent a, adic a f ac and ca valoarea lui s a e imprevizibil a pentru adversar. Cum adversarul trebuie s a emit a pachete cu numere de secvent a si de conrmare valide, n cazul acestor m asuri adversarul trebuie
efectiv s a ghiceasc a num arul de secvent a. Un al doilea considerent este prevenirea atacului syn ooding. Intrun astfel de atac, adversarul trimite multe pachete TCP de deschidere de conexiune (cu agul synchronize pe 1 si acknowledge pe 0), cu diferite valori pentru c ampurile port surs a si uneori adres a surs a (este posibil ca adversarul s a execute si IP spoong ). Ma sina atacat a trebuie s a aloce o structur a de date n care s a memoreze datele despre conexiune p an a la terminarea conexiunii sau la expirarea unui time-out. Adversarul ns a nu mai trimite nimic pe nici una dintre conexiuni, mult umindu-se s a tin a ocupat a memorie pe ma sina atacat a; este vorba deci de un atac denial of service. Contram asura, numit a syn cookie, se realizeaz a astfel. O ma sin a care a steapt a cereri de conectare genereaz a aleator un sir de bit i, pe care l tine secret. La primirea unei cereri de conectare, ma sina alege, ca num ar de secvent a init ial (pentru sensul dinspre ea spre init iatorul conexiunii), valoarea unei funct ie de dispersie criptograc a, aplicat a asupra num arului de secvent a al pachetului primit concatenat cu un sirul secret. Apoi, ma sina tint a a conexiunii trimite pachetul de r aspuns, accept and num arul de secvent a propus de init iatorul conexiunii si cont in and num arul de secvent a astfel generat. Ma sina tint a nu nregistreaz a nc a, n tabela de conexiuni, conexiunea astfel deschis a. In cazul unei conexiuni reale, la trimiterea urm atorului pachet de c atre init iatorul conexiunii, ma sina tint a veric a num arul de secvent a folosind aceea si funct ie de dispersie, dup a care memoreaz a conexiunea n tabelul de conexiuni. In acest fel, o conexiune creat a dintr-un atac syn ooding nu ocup a memorie, n schimb o conexiune legitim a se poate deschide. 10.3.1.5. Inchiderea fort at a a conexiunii Refuzul cererii de deschidere a unei conexiuni se face trimit and ini tiatorului un pachet TCP cu agul reset setat. La primirea unui pachet care nu corespunde unei conexiuni deschise (adic a pachetul este primit ntr-un moment n care conexiunea este nchis a si pachetul nu are agul synchronize setat), modulul TCP trebuie s a trimit a napoi un pachet cu agul reset setat. Ideea este ca, dac a nodul curent a c azut si a fost repornit, pierz and evident a conexiunilor deschise, s a informeze tot i partenerii de comunicat ie care ncearc a s a continue comunicat ia cu el c a datele despre comunicat ie au fost pierdute. Un nod care a primit un pachet cu agul reset ca r aspuns la un pachet TCP pentru o conexiune trebuie s a abandoneze fort at conexiunea. Aplicat ia ce utilizeaz a acea conexiune este informat a, printr-un cod de eroare, la urm atoarea operat ie privind conexiunea.
Alte situat ii care conduc la abandonarea unei conexiuni sunt: dep a sirea unui num ar de ncerc ari de trimitere de date f ar a a primi conrmare; primirea unui pachet ICMP cu tipul destination unreachable. Timpul c at emit atorul ncearc a retrimiterea pachetelor neconrmate, p an a n momentul n care declar a leg atura c azut a, este de ordinul zecilor de secunde p an a la 23 minute. Ca urmare, ntreruperea pe termen scurt a unui cablu de ret ea nu duce la ntreruperea conexiunilor TCP ce utilizau acel cablu. De asemenea, dac a un nod sau o leg atur a a ret elei IP cade, dar r am ane un drum alternativ ntre capetele conexiunii TCP, iar nivelul ret ea reface tabelele de dirijare pentru a folosi acel drum alternativ si acest lucru se nt ampl a sucient de repede pentru ca modulul TCP s a nu declare conexiunea c azut a, atunci conexiunea TCP continu a s a funct ioneze normal, cu pachetele IP circul and pe noua rut a. Dac a, pe o conexiune TCP deschis a, toate datele vechi au fost trimise si conrmate, atunci nu se transmit pachete IP c at a vreme nu sunt date utile noi de transmis. Ca urmare, dac a aplicat iile nu comunic a vreme ndelungat a pe o conexiune TCP deschis a, c aderea leg aturii sau a unuia din capete nu este detectat a de cel alalt cap at dec at n momentul n care acesta are de transmis date. Dac a acel cap at nu are de transmis date vreme ndelungat a, de exemplu c ateva ore sau chiar zile, conexiunea r am ane deschis a din punctul de vedere al modulului TCP local. Pentru a evita o astfel de situat ie, modulul TCP poate instruit via un apel fcntl() asupra socket-ului corespunz ator conexiunii s a trimit a din c and n c and c ate un pachet f ar a date utile, doar pentru a solicita o conrmare de la cel alalt cap at. Opt iunea aceasta se nume ste keep alive (rom. ment ine n viat a ), de si mai degrab a ar trebui numit a testeaz a c a mai este n viat a. Utilizarea opt iunii keep alive are si un dezavantaj: c aderea temporar a a ret elei are sanse mai mari s a duc a la abandonarea conexiunii. 10.3.1.6. Identicarea aplicat iei destinat ie Pentru a identica aplicat ia c areia i sunt destinate datele primite, conexiunile TCP sunt identicate printr-un cvadruplet format din adresele IP ale celor dou a capete si porturile celor dou a capete. Porturile sunt numere n intervalul 165535 utilizate pentru a deosebi conexiunile stabilite ntre acelea si adrese IP. Sistemul de operare tine evident a conexiunilor deschise. Pentru ecare conexiune, sistemul ret ine adresa IP local a, portul local, adresa IP a celuilalt cap at si portul de la cel alalt cap at. De asemenea, sistemul ret ine aplicat ia care a deschis conexiunea.
La primirea unui pachet TCP, sistemul ia adresele surs a si destinat ie din antetul IP si portul surs a si destinat ie din antetul TCP. Pe baza acestora sistemul identic a conexiunea c areia i apart ine pachetul. De aici sistemul reg ase ste pe de o parte informat iile necesare gestion arii conexiunii (zone tampon, numere de secvent a, etc) si pe de alt a parte aplicat ia c areia i sunt destinate datele. 10.3.1.7. Corespondent a ntre funct iile socket() si act iunile modulului TCP Funct ionalitatea modulului TCP este oferit a programului utilizator prin intermediul funct iilor sistem din familia socket(). Funct iile socket() si modul lor de utilizare ntr-o aplicat ie au fost studiate n 8.1. Aici vom ar ata leg atura dintre apelarea de c atre o aplicat ie a funct iilor socket si act iunile modulului TCP de expediere si de recept ie a unor pachete. Apelul socket(PF INET, SOCK STREAM, 0) are ca efect doar crearea unei structuri de date pentru apelurile ulterioare. Pe partea de server, apelurile bind() si listen() au, de asemenea, ca efect doar completarea unor informat ii n structurile de date. Dac a aplicat ia a apelat direct listen() f ar a a apelat nainte bind(), sistemul (modulul TCP) i aloc a un port liber. La primirea unui pachet de deschidere conexiune (cu agul synchronize setat) pentru o adres a si un num ar de port pentru care se a steapt a deschiderea unei conexiuni (a fost deja apelat listen()), modulul TCP execut a schimbul de pachete de deschidere a conexiunii. Dup a aceea, modulul TCP a steapt a ca aplicat ia s a apeleze accept() pentru a-i putea semnaliza deschiderea unei noi conexiuni. In cazul n care nu se a steapt a deschiderea unei conexiuni, modulul TCP trimite un pachet cu agul reset. Dac a, n adresa local a dat a funct iei bind(), s-a specicat constanta a ca INADDR ANY, este acceptat un pachet de deschidere de conexiune ce specic adres a destinat ie oricare dintre adresele nodului curent. Dac a n apelul bind() s-a specicat o anumit a adres a a nodului curent, este acceptat a deschiderea conexiunii doar dac a adresa destinat ie a pachetului de deschidere este adresa specicat a n apelul bind(). Pe partea de client, apelul connect() este cel care determin a trimiterea unui pachet cu agul synchronize. Funct ia connect() a steapt a e deschiderea complet a a conexiunii (conrmarea pachetului syn plus un pachet syn de la server), e o semnalizare de eroare (un pachet TCP cu agul reset sau un pachet ICMP). In caz favorabil, funct ia connect() returneaz a 0, n caz defavorabil semnalizeaz a eroarea survenit a.
10.3.1.8. Controlul uxului TCP are si rol de control al uxului, adic a de-a ncetini emit atorul n cazul n care receptorul nu este capabil s a proceseze datele sucient de repede. O metod a extrem a de control al uxului este neconrmarea de c atre receptor a octet ilor ce nu pot procesat i. Metoda aceasta are ns a dezavantajul c a determin a emit atorul s a retrimit a octet ii respectivi, gener and trac inutil. Metoda utilizat a de TCP este ca receptorul s a semnalizeze emit atorului, prin valoarea c ampului dimensiune fereastr a din antetul TCP, num arul de octet i pe care receptorul este capabil s a-i recept ioneze n acel moment. Emit atorul nu va trimite mai mult i octet i dec at dimensiunea ferestrei trimis a de receptor. Exist a o singur a except ie: dac a receptorul a semnalizat dimensiunea ferestrei 0, emit atorul poate trimite un singur octet; aceasta se face pentru cazul n care receptorul a anunt at o fereastr a de dimensiune 0 si apoi a anunt at o fereastr a mai mare dar pachetul ce anunt a m arirea ferestrei s-a pierdut. Pe l ang a mecanismul sus-ment ionat, emit atorul TCP reduce debitul de date emise si n cazul n care constat a pierderi de pachete. Ideea este c a pachetele IP se pot pierde e ca urmare a erorilor la nivel zic, e ca urmare a congestiei nodurilor intermediare. Cu except ia transmisiei radio, erorile la nivel zic sunt rare, astfel nc at pierderile de pachete IP se datoreaz a n majoritatea cazurilor congestiei nodurilor. 10.3.1.9. Stabilirea time-out-ului pentru retransmiterea pachetelor A sa cum am v azut, pachetele TCP neconrmate ntr-un anumit interval de timp sunt retransmise. Valoarea aleas a a timpului dup a care se face retransmiterea inuent eaz a performant ele transferului de date. O valoare prea mic a duce la repetarea inutil a a unor pachete ce ajung la destinat ie ns a ntrun timp mai lung si, ca urmare, la generarea unui trac inutil. O valoare prea mare duce la detectarea cu nt arziere a pachetelor pierdute. Modulul TCP ncearc a s a estimeze durata de timp necesar a unui pachet emis s a ajung a la destinat ie, s a e procesat si s a se ntoarc a si s a se recept ioneze conrmarea. Acest timp se nume ste timp dus- ntors (engl. roundtrip time, RTT ). Timpul dus- ntors nu este x, ci depinde de perechea emit atorreceptor considerat a si de nc arcarea ret elei n momentul considerat. Modulul TCP estimeaz a statistic media si dispersia timpului dus- ntors pentru ecare conexiune deschis a si xeaz a timpul dup a care se retrimit pachetele neconrmate la o valoare ceva mai mare dec at media timpului dus- ntors.
10.3.1.10. Algoritmul lui Nagle si optimizarea num arului de pachete La primirea datelor de la programul aplicat ie, prin apelul sistem send(), modulul TCP poate trimite imediat un pachet sau poate a stepta; a steptarea este util a dac a astfel se pot plasa mai multe date n acela si pachet IP. Algoritmul lui Nagle prevede c a, la primirea unor date de la utilizator prin send(): dac a nu sunt date trimise si neconrmate, sau dac a datele noi sunt sucient de mari pentru a umple un pachet, datele se trimit imediat; altfel, modulul TCP a steapt a p an a la primirea conrm arii sau expirarea timpului de retransmitere, si abia atunci trimite datele primite ntre timp de la aplicat ie. O alt a optimizare const a n a nt arzia c ateva fract iuni de secund a trimiterea conrm arii pentru un pachet TCP primit. Ideea este c a, dac a aplicat ia care recept ioneaz a datele din acel pachet are de trimis date ca r aspuns la datele primite, datele ce constituie r aspunsul s a e trimise n acela si pachet cu conrmarea datelor primite. 10.3.1.11. Trimiterea datelor speciale (out of band) TCP prevede un mecanism de transmitere, n cadrul uxului normal de date, a unor date cu un marcaj special. Mecanismul este ntruc atva echivalent cu a avea dou a uxuri de date ata sate conexiunii, unul pentru datele ,,obi snuite si cel alalt pentru date ,,speciale. Datele speciale poart a denumirea, n terminologia angloamerican a, out of band data (OOB ). O posibil a utilizare este urm atoarea: presupunem o aplicat ie care transfer a siere. Presupunem c a emit atorul trimite mai nt ai lungimea sierului si apoi cont inutul. Dac a utilizatorul lanseaz a trimiterea unui sier mare (s a zicem c a tiva gigaoctet i) si apoi se r azg ande ste si dore ste s a abandoneze operat ia, partea de emit ator a aplicat iei nu poate semnaliza receptorului n nici un fel abandonarea transmiterii. Aceasta deoarece octet ii transmi si sunt interpretat i de receptor ca ind cont inutul sierului. Aici intervin datele cu marcajul special (out of band ): emit atorul trimite cont inutul sierului ca date normale, iar o eventual a semnalizare de abandonare a transferului este trimis a ca date speciale. Datele speciale se consider a c a trebuie s a e livrate c at mari repede cu putint a aplicat iei destinat ie. In terminologia TCP, ele sunt denumite date urgente (engl. urgent data ). Transmiterea lor se face astfel: datele speciale se plaseaz a ntr-un pachet TCP f ar a a precedate de date normale;
pachetul respectiv are agul urgent setat; c ampul pozit ie date urgente cont ine dimensiunea datelor speciale r amase de transmis ( n pachetul curent si n urm atoarele). De principiu un pachet cont in and date speciale va avea setat si agul push, care indic a faptul c a modulul TCP receptor ar trebui s a livreze datele c atre aplicat ia destinat ie c at mai repede.
ment. Funct ia returneaz a datele utile din datagram a precum si adresa surs a a datagramei.
nu e minus. Literele mari sunt echivalente cu literele mici corespunz atoare. Componentele au asociat a o ordine ierarhic a. Scrierea n text a unui nume de domeniu se face scriind componentele, ncep and cu cea mai de jos, din punct de vedere al ierarhiei, si termin and cu cea mai de sus. Dup a ecare component a se scrie un caracter punct (.). In particular, numele vid (format din zero componente) se scrie ,,. (un caracter punct). Exemplul 10.12: In adresa nessie.cs.ubbcluj.ro. componentele sunt, n ordine descresc atoare ierarhic: ro Rom ania, ubbcluj Universitatea Babe s-Bolyai Cluj-Napoca, cs Departamentul de Informatic a (din engl. Computer Science ), nessie numele stat iei. Aceast a scriere este inspirat a din scrierea adreselor po stale, care ncep cu numele destinatarului si se termin a cu tara. In majoritatea cazurilor, aplicat iile accept a specicarea numelor de domenii f ar a punctul nal. In lipsa punctului nal, interpretarea este ns a diferit a. Anume, dac a numele nu este terminat cu punct, aplicat ia va ncerca s a adauge la nume siruri de componente superioare ierarhic dintr-o list a congurat a de administratorul sistemului. Primul nume de domeniu, astfel construit, care exist a n DNS este considerat ca ind semnicat ia numelui dat de utilizator. Exemplul 10.13: Presupunem c a lista de c autare congurat a de administrator pentru un sistem cont ine, n ordine, scs.ubbcluj.ro, cs.ubbcluj.ro si ubbcluj.ro. O c autare pentru numele www va duce la c autarea numelui www.scs.ubbcluj.ro. care va g asit si vor returnate informat iile despre acest nume. O c autare pentru numele www.cs va duce la c autarea, n ordine, a numelor www.cs.scs.ubbcluj.ro., www.cs.cs.ubbcluj.ro. si www.cs.ubbcluj.ro.; acesta din urm a este g asit si c autarea este ncheiat a. Structurarea numelui n mai multe componente serve ste la administrarea ierarhic a a spat iului de nume. O organizat ie care dob ande ste un nume de domeniu poate crea si administra dup a voie numele formate prin ad augare de componente ierarhic inferioare. De exemplu, Universitatea Babe sBolyai din Cluj-Napoca a obt inut numele ubbcluj.ro. . Crearea numelui nessie.cs.ubbcluj.ro. este decizia exclusiv a a Universit a tii Babe s-Bolyai. O institut ie care dore ste un nume de domeniu trebuie s a contacteze institut ia care administreaz a domeniul p arinte si s a cear a alocarea unui nume.
Alocarea numelui se pl ate ste e o tax a pl atit a o singur a dat a, e o tax a anual a. Institut ia ce a obt inut numele este responsabil a de ntret inerea unui server de nume (vezi 10.4.3 si 10.4.4) pentru domeniul ce i-a fost alocat. Adesea rmele care ofer a acces Internet ofer a gratuit client ilor nume de domeniu ca subdomenii ale domeniului rmei. Exemplu ipotetic, rma XYNet, posesoarea domeniului xynet.example, ofer a clientului ABC s.r.l. domeniul abc.xynet.example. Din p acate, numele ma sinilor rmei ABC sunt legate n acest caz de furnizorul de acces Internet, iar dac a rma ABC s.r.l. va schimba furnizorul de Internet, va nevoit a s a- si schimbe numele de domeniu ale serverelor sale, ceea ce poate duce la pierderea client ilor ce nu a a noul nume al site-ului rmei. De remarcat c a, de si organizarea ierarhic a a numelor de domeniu seam an a cu organizarea numelor de siere si directoare, nu exist a o restrict ie similar a cu aceea c a ntr-un director nu e permis s a aib a acela si nume un sier si un subdirector. Anume, ca exemplu, numele ubbcluj.ro. si cs.ubbcluj.ro. pot desemna simultan noduri n ret ea.
Valoare adres a IPv4 adres a IPv6 nume de domeniu nume de domeniu date de identicare ale informat iilor despre zon a nume de domeniu nume de domeniu si prioritate
Observat ii adresa corespunz atoare numelui solicitat adresa IPv6 corespunz atoare numelui solicitat ([RFC 3596, 2003]) numele canonic corespunz ator numelui solicitat numele canonic al nodului cu adresa IP solicitat a, vezi 10.4.6 vezi 10.4.5
NS MX
numele canonic al serverului de domeniu pentru zona av and ca r ad acin a numele solicitat serverele de po st a electronic a pentru domeniul solicitat, 11.1
Mai mult, numele canonic din c ampul valoare al unei nregistr ari CNAME nu este permis s a apar a ca nume de domeniu n alt a nregistrare CNAME. O aplicat ie care caut a o nregistrare de un anumit tip pentru un nume trebuie s a caute si o nregistrare CNAME pentru acel nume. Dac a g ase ste o nregistrare CNAME, trebuie s a caute o nregistrare cu numele canonic g asit si av and tipul c autat init ial. Valoarea astfel g asit a trebuie utilizat a ca si c and ar fost g asit a pentru numele original.
apart ine zonei nu gureaz a n tabela tinut a de acel server nseamn a c a numele respectiv nu exist a. Din motive de tolerant a la pene, pentru ecare zon a exist a de regul a cel put in dou a servere responsabile. De principiu, tabelele despre o zon a dat a ale serverelor responsabile de acea zon a trebuie s a e identice; pot exista ns a temporar incoerent e ntre tabele cu ocazia modic arilor unor informat ii. Pe l ang a nregistr arile despre zonele pentru care este responsabil, un server de nume trebuie s a mai det in a nregistr ari care s a permit a reg asirea serverelor de nume ale zonelor adiacente zona imediat superioar a ierarhic si zonele imediat subordonate, dac a exist a si a serverelor de nume pentru zona r ad acin a. Aceste nregistr ari se numesc glue records nregistr ari lipici deoarece creaz a leg atura cu zonele nvecinate. Pentru numele r ad acin a al ec arei zone trebuie s a existe urm atoarele nregistr ari: O nregistrare SOA (Start Of Authority ), care cont ine ni ste date administrative despre zon a (vezi 10.4.5); Una sau mai multe nregistr ari NS (Name Server ) care cont in numele serverelor de nume responsabile de zon a. De remarcat c a serverele de nume nu este obligatoriu s a e ele nsele membre ale zonei. Inregistr arile NS ale r ad acinii unei zone mpreun a cu nregistr arile A ale acelor nume sunt ,, nregistr arile lipici ce trebuie tinute de un server cu privire la zonele vecine. Un server poate tine si alte nregistr ari, n afar a de nregistr arile din zonele pentru care este responsabil si de nregistr arile de leg atur a.
Dac a numele c autat este din afara zonei de responsabilitate, exist a dou a comportamente posibile pentru server: iterativ. Serverul r aspunde cu nregistr arile de leg atur a c atre zona c autat a de client. Clientul urmeaz a s a interogheze alte servere. recursiv. Serverul interogheaz a (el nsu si) un server pentru zona vecin a mai apropiat a de zona numelui c autat de client, eventual interogheaz a n continuare servere din nregistr arile returnate, p an a ce a a r aspunsul la ntrebarea clientului. Inregistr arile g asite sunt plasate n categoria a treia alte nregistr ari. Un server recursiv poate congurat s a ret in a nregistr arile astfel obt inute, astfel nc at la o interogare ulterioar a s a poat a r aspunde direct, f ar a a mai c auta un server responsabil pentru numele cerut de client. O nregistrare astfel memorat a este tinut a un timp cel mult egal cu termenul de valabilitate al nregistr arii, dup a care se consider a c a informat ia s-ar putut modica si ca urmare nregistrarea este aruncat a. C autarea adresei corespunz atoare unui nume se face de c atre programul utilizator care are de contactat nodul cu numele dat. Interogarea DNS se face de regul a prin intermediul unor funct ii de bibliotec a, cum ar gethostbyname(). Aceste funct ii de bibliotec a trebuie s a g aseasc a un prim server de nume pe care s a-l interogheze. Pentru aceasta, n sistemul de operare exist a un loc standardizat unde administratorul scrie adresele IP ale unuia sau mai multor servere de nume. In sistemele de tip Unix, locul este sieru /etc/resolv.conf, iar n Windows este n registry.
Un slave nu execut a copierea dac a num arul serial curent al master -ului coincide cu num arul serial propriu. refresh este timpul dup a care un server slave trebuie s a interogheze serverul master pentru a vedea dac a s-a modicat vreo nregistrare; retry este timpul de a steptare dup a o ncercare e suat a de-a contacta serverul master nainte de-a ncerca din nou; expire este timpul dup a care, n cazul n care nu a reu sit s a contacteze serverul master, serverul slave trebuie s a nu se mai considere responsabil de zon a. Exist a si un protocol ([RFC 1996, 1996]) prin care serverul master cere explicit unui server slave s a copieze datele despre zon a.
193.226.40.128/28, a c arui administrare este delegat a rmei X; numele de domeniu de la 128.40.226.193.in-addr.arpa. p an a la 143.40.226.193.in-addr.arpa. se denesc ca pseudonime (CNAME ) pentru numele de la 128.128/28.40.226.193.in-addr.arpa. p an a la 143.128/28.40.226.193.in-addr.arpa. Pentru adresele IPv6 se folose ste un mecanism asem an ator, denit n [RFC 3596, 2003]. Anume, ec arei adrese IPv6 i se asociaz a un nume n domeniul ip6.arpa . Numele se construie ste astfel: Se iau grupuri de c atre 4 bit i din adresa IPv6 si se scrie cifra hexa corespunz atoare ca o component a separat a. Ordinea ierarhic a a componentelor astfel obt inute este aceea n care componentele corespunz atoare bit ilor mai semnicativi din adresa IP sunt superioare ierarhic componentelor corespunz atoare bit ilor mai put in semnicativi. Exemplul 10.14: Pentru adresa 4321:0:1:2:3:4:567:89ab, numele de domeniu asociat este
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4. ip6.arpa
Determinarea adresei MAC a nodului B se face cu ajutorul unui mecanism numit ARP (engl. Address Resolution Protocol, rom. protocol de determinare a adresei ). Mecanismul funct ioneaz a astfel: A trimite n ret eaua de nivel inferior un pachet de difuziune (broadcast) cont in and adresa IP a lui B . Acest pachet este un fel de ntrebare ,,cine are adresa IP cutare?. La un astfel de pachet r aspunde doar nodul cu adresa IP specicat a n pachet adic a doar nodul B n cazul de fat a. Pachetul de r aspuns este adresat direct lui A (prin adresa MAC a lui A recuperat a din interogare) si cont ine adresa IP si adresa MAC ale lui B . Pachetul are semnicat ia ,,eu am adresa IP cutare si am adresa MAC cutare. Dup a determinarea corespondent ei IP MAC prin mecanismul ARP, nodul A p astreaz a corespondent a n memorie un anumit timp (de ordinul minutelor), astfel nc at, dac a nodurile A si B schimb a mai multe pachete n timp scurt, mecanismul ARP este invocat doar o singur a dat a. Dac a nodul A prime ste mai multe r aspunsuri ARP cu adrese MAC diferite pentru aceea si adres a IP, nseamn a c a exist a mai multe noduri c arora li s-a dat din gre seal a aceea si adres a IP. In aceast a situat ie A ar trebui s a semnalizeze situat ia: printr-un pachet ICMP cu tipul destination unreachable destinat sursei pachetului destinat lui B , si printr-un mesaj a sat pe ecran si nregistrat n sierele jurnal ale sistemului de operare. Mecanismul ARP este utilizat de asemnea la congurarea adresei unei interfet e de ret ea ca vericare c a adresa congurat a este unic a n subret ea. Mai exact, dac a administratorul congureaz a o anumit a adres a IP pentru o interfat a, sistemul emite mai nt ai o cerere ARP pentru adresa ce urmeaz aa setat a. Dac a cererea prime ste r aspuns nseamn a c a mai exist a un nod ce are adresa respectiv a, caz n care sistemul tip are ste un mesaj de avertisment si eventual refuz a congurarea adresei respective. Dac a cererea nu prime ste r aspuns este probabil ca adresa s a e unic a si ca urmare sistemul o poate accepta ca adres a proprie. Informat iile despre asocierile IP MAC cunoscute nodului curent se determin a, pe sistemele de tip UNIX, cu ajutorul comenzii arp. Trimiterea, n vedera test arii, a unei cereri ARP c atre o stat ie se poate face cu ajutorul comenzii arping.
(sau s a existe n aceea si subret ea un server proxy DHCP care s a preia cererea clientului si s-o retrimit a serverului). R aspunsul DHCP este plasat la r andul lui ntr-un pachet UDP purt and ca adres a surs a adresa serverului DHCP si ca adres a destinat ie adresa alocat a clientului DHCP, cu portul destinat ie 68. Pachetul este ncapsulat ntrun pachet Ethernet destinat adresei MAC a clientului. Asocierea IP MAC pentru transmiterea pachetului de c atre server nu se face prin mecanismul ARP (care ar e sua deoarece clientul DHCP nu poate nc a r aspunde la cererea ARP) ci este setat a de c atre serverul DHCP prin intermediul unui apel sistem. Determinarea parametrilor de c atre server. Pentru ecare subret ea pentru care act ioneaz a, un server DHCP trebuie s a aib a dou a categorii de date: parametrii comuni tuturor nodurilor din subret ea (masca de ret ea, gatewayuri, servere DNS) si parametrii specici ec arui nod n parte (adresa IP a nodului). Parametrii comuni sunt setat i de administratorul serverului DHCP ntr-un sier de congurare al serverului. Pentru adresele IP ale nodurilor din ret ea exist a dou a strategii ce pot folosite: Alocare manual a: Adresa ec arui nod este xat a manual de c atre administratorul serverului DHCP. Nodul client este identicat prin adresa MAC sau prin nume. In primul caz administratorul trebuie s a scrie ntrun sier de congurare al serverului toate adresele MAC ale pl acilor de ret ea si adresele IP corespunz atoare. In al doilea caz, pe serverul DHCP se scriu numele stat iilor si adresele corespunz atoare iar pe ecare stat ie se seteaz a numele stat iei (a doua solut ie nu este aplicabil a pe calculatoare f ar a harddisc). Alocare dinamic a: Serverul dispune de o mult ime de adrese pe care le aloc a nodurilor. Serverul p astreaz a corespondent a dintre adresele MAC ale client ilor si adresele IP ce le-au fost alocate. Adresele alocate pot eliberate la cererea explicit a a clientului sau la expirarea perioadei de alocare (vezi mai jos). Adresele se atribuie de regul a pe o durat a determinat a. Perioada de alocare poate prelungit a la solicitarea clientului printr-o cerere DHCP de prelungire. Dup a expirarea perioadei de alocare, clientul nu mai are voie s a utilizeze adresa. Atribuirea adreselor pe perioad a determinat a are dou a avantaje (fat a de atribuirea pe durat a nedeterminat a): la alocarea dinamic a a adreselor, dac a clientul este scos din ret ea f ar a
a elibera explicit adresa, adresa este eliberat a automat la expirarea perioadei de atribuire; dac a este necesar a modicarea strategiei de atribuire a adreselor se pot opera modic arile necesare n congurarea serverului DHCP iar client ii vor primi noile adrese cu ocazia ncerc arii de prelungire a atribuirii adresei.
REJECT se trimite napoi un pachet semnal and o eroare implicit ICMP destination unreachable. Condit iile specicate ntr-o regul a pot privi: interfat a prin care a intrat pachetul (cu except ia lant ului OUTPUT ), interfat a prin care ar ie si pachetul (cu except ia lant ului INPUT ), adresa IP surs a si adresa IP destinat ie (se poate specica si un prex de ret ea, condit ia ind satisf acut a de pachetele ce au adres a ncep and cu acel prex sau, eventual, pachetele ce au adres a ce nu ncepe cu acel prex), adresa MAC surs a sau destinat ie (pentru pachete ce intr a, respectiv ies, prin interfet e ce au conceptul de adres a MAC), protocolul (TCP, UDP, ICMP), portul surs a sau destinat ie (pentru protocoale care au not iunea de port), tipul si subtipul ICMP (pentru pachete ICMP), ag-uri ale diverselor protocoale, dimensiunea pachetului, starea conexiunii TCP c areia i apart ine pachetul (vezi mai jos). Un nod (intermediar) prin care trec toate pachetele asociate unei conexiuni TCP poate, examin and antetul TCP al ec arui pachet, s a tin a evident a st arii conexiunii. Ca urmare, nodul poate stabili dac a un pachet deschide o conexiune nou a, apart ine unei conexiuni deschise sau este un pachet invalid. Este adev arat, acest lucru nseamn a o nc alcare a principiului separ arii nivelelor: TCP este un protocol de nivel transport, deasupra nivelului ret ea. Ca urmare, modulele de ret ea nu ar trebui s a interpreteze protocolul TCP (antetele TCP ar trebui considerate pur si simplu date utile). Ca urmare, nodurile intermediare, din care nu act ioneaz a asupra pachetelor n tranzit dec at modulul ret ea si modulele inferioare, nu ar trebui s a ,, nt eleag a protocolul TCP. Regulile de ltrare se congureaz a de c atre administratorul sistemului. Ca si n cazul parametrilor IP: Pe sistemele Linux, regulile aplicate de nucleul sistemului de operare se examineaz a si se modic a cu ajutorul unei comenzi iptables. Regulile valabile la init ializarea sistemului sunt congurate de script urile invocate la pornire, ind nc arcate dintr-un sier text.
Pe sistemele Windows exist a o interfat a grac a cu care se congureaz a simultan regulile curente aplicate de nucleu si n acela si timp acele reguli sunt scrise n registry pentru a nc arcate la repornirea sistemului. Prin regulile de ltrare se urm aresc de obicei urm atoarele lucruri: S a e blocate pachetele pentru care se poate determina c a adresa surs a a fost falsicat a. Aici intr a: - pachete ce intr a pe interfat a c atre Internet si au ca adres a surs ao adres a din ret eaua intern a, - pachete ce au ca surs a o adres a de broadcast (clasa D) sau de clas a E, - pachete ce intr a dinspre o anumit a subret ea au ca surs a o adres a ce nu face parte din subret eaua respectiv a si nici din alte subret ele din direct ia respectiv a. S a e interzise conexiunile din afara ret elei locale c atre servicii care sunt oferite doar pentru ret eaua local a. De exemplu, accesul la un share Windows este adesea de dorit s a nu e posibil din afara ret elei locale. Pentru aceasta exist a dou a strategii: - se blocheaz a pachetele destinate porturilor pe care a steapt a conexiuni serviciile respective; - se permit conexiunile c atre serviciile ce se doresc a accesibile din afar a (web, mail, eventual ssh), se permit conexiunile init iate din interior si se interzic toate celelalte pachete. Prima metod a este mai simpl a ns a necesit a lista complet a a serviciilor ce trebuie blocate. A doua metod a este mai sigur a, ntruc at serviciile sunt inaccesibile dac a nu s-a specicat explicit contrariul, ns a este dicil de permis intrarea pachetelor de r aspuns pentru conexiunile init iate din interior. Aceasta se nt ampl a deoarece o conexiune init iat a din interior are alocat un port local cu num ar imprevizibil; ca urmare nu se poate stabili o regul a simpl a pentru permiterea intr arii pachetelor destinate acelui port. Solut ia uzual a este: - pentru conexiun TCP, se permit pachetele asociate unei conexiuni deja deschise, se permit pachetele c atre exterior, se permit pachetele destinate serviciilor publice si se interzic toate celelalte pachete.
- pentru UDP, unde nu se poate tine evident a unor conexiuni, se interzic pachetele destinate unor servicii private, se permit pachetele spre exterior, se permit pachetele provenite de la serviciile ce se dore ste a accesate n exterior (serverele DNS sau NTP utilizate) si se interzic toate celelalte pachete. S a e interzise diferite alte pachete ,,dubioase, cum ar : - pachete destinate adresei de broadcast a ret elei locale sau adresei de broadcast generale (255.255.255.255), - pachete av and ca adres a surs a sau destinat ie adresa ma sinii locale (127.0.0.1) sau o adres a privat a.
Exemplul 10.15: Fie un ruter av and n spate o ret ea intern a av and adrese cu prexul 193.226.40.128/28. Ruterul are interfat a eth0 cu adresa 193.0.225.20 c atre exterior si interfat a eth1 cu adresa 193.226.40.129 c atre subret eaua local a. Din ret eaua local a dorim s a se poat a deschide orice fel de conexiuni TCP c atre exterior; din exterior dorim s a nu se poat a deschide alte conexiuni dec at c atre serverul http si https de pe 193.226.40.130 si c atre serverele ssh de pe toate ma sinile din ret eaua local a. Din ret eaua local a dorim s a putem accesa servicii DNS si NTP. Acestea le furniz am astfel: pe ruter instal am un server DNS si un server NTP, accesibile din ret eaua local a; acestea furnizeaz a serviciile respective pentru ret eaua local a permitem cererile emise de serverele DNS si NTP de pe ruter, precum si r aspunsurile corespunz atoare. Cererile NTP provin de pe portul UDP 123 al ruterului si sunt adresate portului UDP 123 al unui nod din exterior, iar cererile DNS sunt emise de pe un port UDP mai mare sau egal cu 1024 si sunt adresate portului DNS 53 de pe un nod extern. Pentru diagnosticarea funct ion arii ret elei vom mai permite trecerea pachetelor ICMP ping, pong, destination unreachable si time exceeded. Tracul n interiorul ret elei locale l permitem f ar a restrict ii. Bloc am toate ncerc arile de spoong detectabile.
# blocare spoofing detectabil si alte pachete dubioase iptables -A FORWARD -i eth0 -s 193.226.40.128/28 -j DROP iptables -A FORWARD -i eth0 -s 193.0.225.20 -j DROP iptables -A FORWARD -i eth0 -s 127.0.0.0/8 -j DROP
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
Furnizor Internet
Figura 10.7: Dou a ret ele locale av and ecare acelea si adrese private pentru o parte din calculatoare.
Calculatoarele private nu este necesar s a aib a adrese unice n Internet. Adresele calculatoarelor private pot refolosite de c atre calculatoare private din alte astfel de ret ele interne, de exemplu de cele ale institut iei B din gur a. De fapt, n general, o adres a trebuie s a e unic a doar n mult imea nodurilor cu care un anumit nod ar putea dori s a comunice. In situat ia descris a, este necesar ca adresele din Internet-ul ,,public s a e unice, adresele din ret eaua local a s a e unice si s a nu existe suprapuneri ntre adresele din Internet si adresele din ret eaua local a. Cerint a din urm a este determinat a de cerint a ca nodurile cu adrese publice din ret eaua proprie s a poat a comunica si cu nodurile private si cu nodurile din Internet. Un pachet a c arui adres a destinat ie este o adres a privat a este dirijat de c atre rutere astfel: dac a ruterul face parte dintr-o ret ea local a n care exist a acea adres a,
pachetul este dirijat c atre unicul nod din ret eaua local a purt and adresa respectiv a; altfel, ruter-ul declar a pachetul nelivrabil. A sa cum am v azut n 10.2.4.1, urm atoarele blocuri de adrese IP sunt alocate pentru astfel de utiliz ari n ret ele private: 10.0.0.0/8, 172.16.0.0/12 si 192.168.0.0/16. De cele mai multe ori, calculatoarelor private li se ofer a posibilit a ti limitate de-a comunica cu calculatoare din Internet, prin intermediul unor mecanisme descrise n paragrafele urm atoare.
Figura 10.8: Ret ea privat a pentru exemplicarea mecanismului de translat ie a adresei surs a
dup a care trimite mai departe pachetul c atre C acest lucru este acum posibil deoarece G este n ret eaua intern a, si ca urmare adresa lui C indic a singurul nod din ret eaua proprie av and acea adres a. Pentru ca mecanismul de mai sus s a e realizabil, este necesar ca ruterul G s a poat a determina c arui nod privat i este destinat n mod real ecare pachet av and ca adres a destinat ie adresa G. De regul a, acest lucru necesit a identicarea ec arui pachet venit din Internet ca r aspuns la un pachet dinspre un nod privat spre Internet. Acest lucru este cel mai simplu de f acut pentru conexiunile TCP. Pentru o conexiune TCP, ruterul G urm are ste pachetele de deschidere a conexiunii. La primirea unui pachet de deschiderea conexiunii dinspre un nod privat C , de pe un port pc , c atre un server S , ruterul G aloc a un port TCP local pg (de preferint a pg = pc , ns a dac a pc nu este liber se poate aloca un pg diferit). Pachetul de deschidere a conexiunii este modicat de G astfel nc at adresa surs a s a e G si portul surs a s a e pg . G p astreaz a asocierea (C, pc , pg ). La sosirea unui pachet cu adresa destinat ie G si portul destinat ie pg , ruterul G pune adresa destinat ie C si portul destinat ie pc ; la primirea unui pachet cu adresa surs a C si portul surs a pc ruterul G pune adresa surs a G si portul surs a pg . Asocierea (C, pc , pg ) este p astrat a p an a la nchiderea conexiunii, determinat a prin schimbul corespunz ator de pachete. Exemplul 10.16: Pentru ret eaua ilustrat a n gura 10.8, presupunem c a clientul C av and adresa (privat a) 192.168.0.123 deschide o conexiune TCP de pe portul efemer 3456 c atre serverul S , av and adresa 193.226.40.130, pe
Sens CS CS
Intre C si G surs a destinat ie 192.168.0.123 193.226.40.130 port 3456 (pc ) port 80 193.226.40.130 192.168.0.123 port 80 port 3456 (pc )
Intre G si S surs a destinat ie 193.0.225.20 193.226.40.130 port 7890 (pg ) port 80 193.226.40.130 193.0.225.20 port 80 port 7890 (pg )
Tabelul 10.8: Adresele surs a si destinat ie ale pachetelor schimbate ntre clientul C si serverul S n exemplul 10.16
portul 80 (pentru a aduce o pagin a web). Ruterul G av and adresa public a 193.0.225.20 efectueaz a translat ia adresei surs a. Adresele pachetelor transmise ntre C si S sunt date n tabelul 10.8. Pentru alte protocoale, asocierea este mai dicil de f acut. Pentru UDP, exist a not iunea de port si ca urmare identicarea pachetelor primite de G pe baza portului destinat ie pg este posibil a. Este ns a dicil de determinat durata valabilit a tii asocierii (C, pc , pg ), nturc at nu exist a pachete de ,, nchiderea conexiunii UDP. Se poate ns a utiliza un timp de expirare, de ordinul c atorva minute, de exemplu, n care dac a nu trec pachete asocierea este desf acut a. Pentru ICMP ping si pong exist a un num ar de identicare care poate folosit cu acela si rol ca si un num ar de port. Translat ia adreselor pentru astfel de pachete funct ioneaz a ntocmai ca si n cazul UDP. Mecanismul de translat ie a adresei surs a, descris mai sus, permite deschiderea unei conexiuni de la un nod cu adres a privat a c atre un nod public din Internet. Nodul privat ,,are impresia c a comunic a direct cu serverul din Internet. Serverul din Internet ,,are impresia c a comunic a cu ruterul G pe portul alocat de acesta. Fat a de utilizarea adreselor publice, utilizarea adreselor private si a translat iei adresei surs a are dou a limit ari majore: nu permite deschiderea conexiunilor n sens invers, dinspre Internet c atre un nod privat; dac a pe conexiune sunt trimise, sub forma de date utile pentru protocolul TCP, informat ii privind adresa IP si portul de pe client, vor constatate incoerent e ntre IP-ul si portul clientului v azute de c atre server (acestea ind G si respectiv pg ) si IP-ul si portul clientului v azute de client (acestea ind C si respectiv pc ). Cea de-a doua limitare poate eliminat a dac a G cunoa ste protocolul de nivel aplicat ie dintre C si S si modic a datele despre conexiune schimbate
ntre C si S . Prima limitare poate eliminat a n m asura n care este vorba de conexiuni init iate n urma unor negocieri pe o conexiune anterioar a (de exemplu, conexiunile de date din protocolul FTP); pentru aceasta, G trebuie, din nou, s a urm areasc a comunicat ia dintre C si S si s a modice datele privitoare la adresa si portul pe care clientul a steapt a conexiune dinspre server. 10.7.3.2. Translat ia adresei destinat ie Presupunem c a avem o ret ea privat a, un server S cu adres a privat a, un ruter G situat n ret eaua proprie dar av and adres a public a si un client C din Internet. Clientul C dore ste s a deschid a o conexiune c atre serverul S . Desigur, comunicarea ,,normal a nu este posibil a deoarece n contextul lui C adresa privat a a lui S nu este unic a. Este posibil ns a ca adresa publicat a ( n DNS-ul public) pentru serverul S s a e adresa lui G. In acest caz, C deschide conexiunea c atre G. Printr-un mecanism similar cu cel din paragraful precedent, G modic a de data aceasta adresa destinat ie, pun and, n locul propriei adrese, adresa privat a a lui S . Pachetul de r aspuns de la S este de asemenea modicat de c atre G, care pune ca adres a surs a adresa proprie G n loc de S . Astfel, S ,,are impresia c a comunic a direct cu C , iar C ,,are impresia c a comunic a cu G. Translat ia adresei destinat ie poate util a n urm atoarele situat ii: dac a avem o singur a adres a public a si dorim s a avem mai multe servere accesibile din exterior, servere ce nu pot funct iona pe aceea si ma sin a. Putem furniza astfel un server HTTP si un server SMTP care apar din Internet ca ind la aceea si adres a IP dar sunt g azduite n realitate pe calculatoare distincte. Necesitatea utiliz area calculatoarelor distincte pentru aceste servicii poate rezulta din motive de securitate sau din motive legate de performant ele calculatoarelor utilizate. dac a dorim totu si acces din afar a c atre calculatoarele din ret eaua intern a. De exemplu, pe ecare calculator ruleaz a un server SSH. Fiec arui calculator i vom asocia un port pe ruterul G. O conexiune din afar a, prin protocolul SSH, c atre un anumit port de pe G va redirect ionat a c atre serverul SSH de pe calculatorul privat corespunz ator. pentru a distribui cererile c atre un server foarte solicitat. In acest caz, serverul va avea ca adres a publicat a n DNS adresa lui G, ns a vor exista de fapt mai multe servere pe calculatoare S1 , S2 , . . . , Sn n ret eaua intern a. Conexiunile deschise din Internet c atre G vor redirect ionate echilibrat c atre serverele S1 , S2 , . . . Sn . Mai exact, la deschiderea unei conexiuni c atre G, G alege un server Sk c atre care redirect ioneaz a acea conexiune. Orice pachet ulterior de pe acea conexiune va redirect ionat
10.7.4. Tunelarea
Prin tunelare se nt elege, n general, transmiterea unor date apar tin and unui anumit protocol ca date utile n cadrul unui protocol de acela si nivel sau de nivel superior. Ne vom ocupa n cele ce urmeaz a de tunelarea pachetelor IP, adic a de transmiterea pachetelor IP prin protocoale de nivel ret ea sau de nivel aplicat ie. O situat ie n care este necesar a tunelarea este aceea n care exist a dou a ret ele private si se dore ste ca nodurile din cele dou a ret ele s a poat a comunica nerestrict ionat ntre ele. De exemplu, avem o institut ie care are dou a sedii si are o ret ea privat a in ecare sediu. Exist a mai multe solut ii pentru a realiza leg atura: Translat ia adreselor realizeaz a o leg atur a supus a unor restrict ii, studiate n 10.7.3. Unicarea zic a a celor dou a ret ele private, duc and o leg atur a zic a ntre ele (g. 10.9), ofer a conectivitate complet a, ns a ducerea unui cablu specual pentru aceasta poate extrem de costisitor.
Ret ea privat a Ret ea sediu A Ret ea sediu B
192.168.1.0/24
192.168.2.0/24
192.168.1.1
192.168.2.1
192.0.225.20
193.226.40.130
Internet
Figura 10.9: Unicarea ret elelor private printr-o leg atur a zic a direct a.
Tunelarea ofer a conectivitate completa ca si leg atura zic a folosind leg aturile la Internet existente. Construct ia const a n realizarea unei conexiuni (de exemplu TCP) ntre dou a rutere cu adrese publice din cele dou a ret ele interne (g. 10.10). Conexiunea dintre rutere este un ,,cablu virtual ce preia rolul conexiunii zice.
Ret ea privat a virtual a (VPN) Ret ea sediu A Ret ea sediu B
192.168.1.0/24
192.168.2.0/24
192.168.2.1 192.168.0.2
Internet
Tunelul se prezint a fat a de nivelul ret ea ca si c and ar o leg atur a zic a. Ca urmare, ecare cap at al tunelului este o interfat a de ret ea, av and o adres a IP si o masc a de ret ea. Pentru tunelarea propriu-zis a exist a mai multe protocoale. Unele dintre protocoale cripteaz a pachetele tunelate; astfel de protocoale ofer a securitatea unui cablu direct bine p azit. Un tunel poate avea mai mult de dou a capete. Un tunel cu mai multe capete se comport a ca o subret ea cu mai multe interfet e conectate la ea de exemplu o ret ea Ethernet.
Capitolul 11
Mail user agent (MUA) SMTP Mail transfer agent (MTA) Mail transfer agent (MTA)
Mail user agent (MUA) POP3 sau IMAP Mail transfer agent (MTA) responsabil de adresa dest. SMTP
SMTP
Figura 11.1: Elementele sistemului de transmitere a po stei electronice. S aget ile arat a sensul n care se init iaz a comunicat ia (de la client spre server), nu sensul n care se transfer a mesajul de po st a electronic a.
mail transfer agent -ul r aspunz ator de adresa destinat ie, el este memorat local (afar a de cazul n care are loc aici o rescriere de adres a, vezi 11.1.2.3). Utilizatorul destinat ie cite ste mesajul cu ajutorul unui proces de tip mail user agent. Acesta contacteaz a mail transfer agent -ul responsabil de adresa utilizatorului destinat ie si recupereaz a mesajul de la el. Transferul este init iat de MUA (adic a de receptor). Exist a dou a protocoale utilizate pentru transfer: POP3 si IMAP.
Pentru a permite transmiterea mesajelor prin linii seriale incapabile s a transmit a caractere de 8 bit i (ci doar caractere de 7 bit i), este recomandabil ca mesajele s a nu cont in a caractere cu codul ntre 128 si 255. Datorit a unor protocoale folosite pentru transmiterea si pentru stocarea mesajelor, se impun urm atoarele restrict ii suplimentare asupra cont inutului mesajelor: nici un r and s a nu constea doar dintr-un caracter punct; un r and ce urmeaz a dup a un r and vid s a nu nceap a cu cuv antul From. De ment ionat c a n protocolul de comunicat ie dintre dou a mail transfer agent -uri sunt transferate informat ii privind adresa expeditorului si adresa destinatarului, independente de cele plasate n antetul mesajului. Aceste informat ii formeaz a a sa-numitul plic (engl. envelope ) al mesajului. Expeditorul si destinatarul date n antetul mesajului sunt informat ii pentru utilizatorul uman; informat iile de pe plic sunt cele utilizate efectiv n transmiterea mesajului. 11.1.1.1. Antetul mesajelor Antetul mesajelor este constituit dintr-un num ar de c ampuri, ecare c amp av and un nume si o valoare. De principiu, ecare c amp este un r and separat cont in and numele, caracterul dou a puncte (:) si valoarea; secvent a carriage return urmat de line feed act ioneaz a ca separator ntre c ampuri. Antentul se termin a cu dou a secvent e carriage return line feed consecutive. Dac a un c amp este prea lung pentru a ncape ntr-un r and (standardul recomand a ca r andurile s a nu dep a seasc a 78 de caractere si interzice r andurile mai lungi de 998 caractere), c ampul poate continuat pe r andurile urm atoare, care trebuie s a nceap a cu spat iu sau tab ; spat iile si tab -urile de la nceputul r andurilor urm atoare se consider a ca f ac and parte din c amp. Exemplul 11.1: Un posibil document (vezi mai jos explicat iile privind semnicat iile diverselor c ampuri):
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu.
Principalele c ampuri ce pot apare ntr-un mesaj sunt: To, Cc si Bcc reprezint a adresele la care trebuie livrat mesajul. Adresele din c ampul To reprezint a persoanele c arora le este adresat mesajul. Adresele din c ampul Cc reprezint a persoane ce trebuie informate de trimiterea mesajului; de exemplu, n corespondent a ocial a ntre un angajat al unei rme si un client al rmei, angajatul va pune adresa clientului n c ampul To (deoarece acestuia i este destinat mesajul), iar n c ampul Cc va pune adresa sefului (care trebuie informat cu privire la comunicat ie). Adresele din c ampul Bcc reprezint a pesoane c arora le va livrat mesajul, f ar a ca ceilalt i destinatari s a e informat i despre aceasta. C ampul Bcc este completat de c atre mail user agent si este eliminat de c atre primul mail transfer agent de pe traseu. From, Sender si Reply-to reprezint a adresa expeditorului si adresa la care trebuie r aspuns. In condit ii obi snuite, un mesaj cont ine doar c ampul From, reprezent and adresa expeditorului mesajului si totodat a adresa la care trebuie trimis un eventual r aspuns. C ampul Sender este utilizat atunci c and o persoan a trimite un mesaj n numele altei persoane sau n numele unei organizat ii pe care o reprezint a. Exist a dou a situat ii practice care conduc la aceast a situat ie: Dac a mesajul provine de la sef, dar este scris si trimis efectiv de secretara sefului, atunci adresa sefului este pus a n c ampul From, iar adresa secretarei n c ampul Sender. Dac a o persoan a trimite un mesaj n numele unei organizat ii, atunci adresa organizat iei va trecut a n c ampul From si adresa persoanei ce scrie mesajul va plasat a n c ampul Sender. In ne, c ampul Reply-to reprezint a adresa la care trebuie trimis un eventual r aspuns la mesaj, dac a aceast a adres a este diferit a de adresa din c ampul From. Dac a destinatarul r aspunde la un mesaj primit, utiliz and funct ionalitatea de reply a mail user agent -ului s au, MUA-ul ofer a implicit, ca adres a destinat ie a mesajului de r aspuns, adresa preluat a din c ampul Reply-to a mesajului original. In lipsa unui c amp Reply-to, MUA-ul ofer a adresa din c ampul From. De asemenea, chiar n prezent a unui c amp Reply-to, este bine ca MUA-ul s a ofere posibilitatea de-a trimite r aspunsul la adresa din c ampul From. Un exemplu de utilizare a c ampului Reply-to este urm atorul: un mesaj adresat unei liste de discut ii are ca From adresa autorului mesajului si ca To adresa listei. Mesajul se transmite centrului de
distribut ie al listei (un mail transfer agent ), care retransmite mesajul c atre abonat ii listei. Mesajul retransmis c atre abonat i va avea ad augat un c amp Reply-to indic and adresa listei. Astfel, mesajul primit de abonat are From autorul mesajului, To adresa listei si Reply-to tot adresa listei. Abonatul listei va r aspunde foarte u sor pe adresa listei deoarece mail user agent -ul s au va prelua adresa listei din Reply-to si o va pune ca adres a destinat ie n mesajul de r aspuns. Totu si, e bine ca utilizatorul s a nu foloseasc a orbe ste aceast a facilitate, ntruc at uneori r aspunsul este bine s a ajung a doar la autorul mesajului original, nu la toat a lista. . . Received si Return-path au ca rol diagnosticarea sistemului de livrare a mesajelor. Fiecare mail transfer agent de pe traseul mesajului adaug a n fat a mesajului un c amp Received n care scrie numele ma sinii sale, numele si adresa IP a mail transfer agent -ului care i-a trimis mesajul, data si ora curent a si emit atorul si destinatarul mesajului conform cererii mail transfer agent -ului care i transmite mesajul (cei indicat i pe ,,plicul mesajului, nu cei din c ampurile To sau From). Astfel, un mesaj ncepe cu un sir de antete Received cont in and, n ordine invers a, nodurile prin care a trecut mesajul. Ultimul mail transfer agent adaug a un c amp Return-path, con tin and adresa surs a a mesajului conform plicului (datele furnizate de MTA-ul surs a). C ampurile Received si Return-path sunt utilizate pentru a returna un mesaj la autorul s au n cazul n care apar probleme la livrarea mesajului. De notat diferent a ntre Reply-to, care reprezint a destinatarul unui eventual r aspuns dat de utilizator la mesaj, si Return-path, care reprezint a destinatarul unui eventual mesaj de eroare. Date reprezint a data gener arii mesajului. Este n mod normal completat de mail user agent -ul expeditorului mesajului. Are un format standard, cuprinz and data si ora local a a expeditorului precum si indicativul fusului orar pe care se g ase ste expeditorul. Formatul cuprinde: ziua din s apt am an a (prescurtare de trei litere din limba englez a), un caracter virgul a, ziua din lun a, luna (prescurtarea de trei litere din limba englez a), anul, ora, un caracter dou a puncte, minutul, opt ional nc a un caracter dou a puncte urmat de secund a si n nal indicativul fusului orar. Indicativul fusului orar cuprinde diferent a, n ore si minute, ntre ora local a si ora universal a coordonat a (UTC ; vezi 7.3.1 pentru detalii). Faptul c a ora local a este or a de var a sau nu apare n indicativul de fus orar. Rom ania are n timpul iernii ora local a egal a cu UTC+2h,
iar n timpul verii UTC+3h. Subject reprezint a o scurt a descriere (c at mai sugestiv a) a mesajului, dat a de autorul mesajului. Message-ID, In-reply-to, Reference servesc la identicarea mesajelor. Valoarea c ampului Message-ID este un sir de caractere care identic a unic mesajul. El este construit de c atre mail user agent -ul expeditorului pornind de la numele calculatorului, de la ora curent a si de la ni ste numere aleatoare, astfel nc at s a e extrem de improbabil ca dou a mesaje s a aib a acela si Message-ID. In cazul r aspunsului la un mesaj prin funct ia reply a mail user agent -ului, mesajul de r aspuns cont ine un c amp In-reply-to av and ca valoare Message-ID-ul mesajului la care se r aspunde. Valoarea c ampului Reference se creaz a din c ampurile Reference si Message-ID ale mesajului la care se r aspunde. C ampurile Reference si Message-ID pot folosite de exemplu pentru a sarea, de c atre mail user agent -ul destinat ie, a succesiunilor de mesaje legate de o anumit a problem a si date ecare ca replic a la precedentul. Resent-from, Resent-sender, Resent-to, Resent-cc, Resent-bcc, Resent-date si Resent-msg-id sunt utilizate dac a destinatarul unui mesaj dore ste s a retrimit a mesajul, f ar a modic ari, c atre altcineva. O astfel de retrimitere se poate efectua printr-o comand a bounce sau resend a MUA-ului. In acest caz, c ampurile din antetul mesajului original (inclusiv From, To sau Date) sunt p astrate, reect and expeditorul, destinatarii si data trimiterii mesajului original. Pentru informat iile privind retransmiterea (adresa utilizatorului ce efectueaz a retransmiterea, destinatarii mesajului retransmis, data retransmiterii, etc.), se utilizeaz a c ampurile Resent-. . . enumerate mai sus. Semnicat ia ec aruia dintre aceste c ampuri Resent-. . . este identic a cu semnicat ia c ampului f ar a Resent- corespunz ator, dar se refer a la retransmitere, nu la mesajul original.
11.1.1.2. Extensii MIME Standardul original pentru mesaje de po st a electronic a (rfc 822) a suferit o serie de extensii. Acestea sunt cunoscute sub numele Multipurpose Internet Mail Extension (MIME ) si sunt descrise n [RFC 2045, 1996], [RFC 2046, 1996] si [RFC 2047, 1996]. Extensiile MIME servesc n principal pentru a putea transmite siere ata sate unui mesaj de po st a electronic a.
Un mesaj conform standardului MIME trebuie s a aib a un c amp n antet cu numele Mime-version. Valoarea c ampului este versiunea standardului MIME n conformitate cu care a fost creat mesajul. 11.1.1.3. Ata sarea sierelor si mesaje din mai multe p art i Standardul MIME ofer a posibilitatea ata s arii unor siere la un mesaj de po st a electronic a. Mecanismul se ncadreaz a ntr-unul mai general, care permite formarea unui mesaj din mai multe p art i. Un mesaj cu ata samente este dat n exemplul 11.2. Fiecare mesaj are n antet un c amp, Content-type, care arat a ce tip de date cont ine si n ce format sunt ele reprezentate. Exemple de tipuri sunt: text/plain (text normal), text/html (document HTML), image/jpeg (imagine n format JPEG ), etc. De regul a, partea din fat a caracterului slash (/) arat a tipul de document, iar partea a doua arat a formatul (codicarea) utilizat a. Astfel, o imagine va avea Content-type de forma image/format ; de exemplu, image/gif, image/jpeg, etc. Mesajele ce cont in doar text obi snuit trebuie s a aib a Content-type: text/plain. Acesta este dealtfel tipul implicit n cazul absent ei c ampului Content-type. Mesajele cu ata samente au Content-type: multipart/mixed. In general, un mesaj de tip multipart/subtip este format de fapt din mai multe ,, siere (oarecum ca un sier arhiv a zip ). Intr-un mesaj multipart/mixed, de obicei una dintre p art i este mesajul propriu-zis, iar ecare dintre celelalte p art i este c ate un sier ata sat. Fiecare parte a unui mesaj multipart are un antet si un corp, similar cu un mesaj de sine st at ator. Antetul p art ii poate cont ine doar c ampuri specice MIME. Astfel, ecare parte are propriul tip, care poate n particular chiar un multipart. Cele mai importante subtipuri ale tipului multipart sunt: multipart/mixed nseamn a pur si simplu mai multe componente puse mpreun a, ca un sier arhiv a. multipart/alternative arat a c a p art ile sunt variante echivalente ale aceluia si document, n formate diferite. Separarea p art ilor unui mesaj de tip multipart se face printr-un r and ce cont ine un anumit text, ce nu apare n nici una dintre p art ile mesajului. Textul utilizat ca separator este plasat n c ampul Content-type dup a multipart/subtip. Este scris sub forma (utilizabil a si n alte c ampuri si pen-
tru alte informat ii) unui sir boundary= sir situat dup a sirul multipart/subtip si separat prin punct si virgul a fat a de aceasta. Exemplu:
Content-type: multipart/mixed; boundary="abcdxxxx"
Corpul mesajului multipart este separat dup a cum urmeaz a: n fat a primei p art i precum si ntre ecare dou a p art i consecutive se g ase ste un r and format doar din textul de dup a boundary= precedat de dou a caractere minus (--); dup a ultima parte se g ase ste un r and format doar din textul de dup a boundary=. Fiecare parte a unui mesaj de tip multipart/mixed are un c amp Content-disposition [RFC 2183, 1997]. Valoarea acestui c amp arat a ce trebuie s a fac a mail user agent -ul destinat ie cu partea de mesaj n care se g ase ste acest antet. Valori posibile sunt: inline arat a c a mesajul sau partea de mesaj trebuie s a e a sat a utilizatorului; attachment arat a c a mesajul sau partea de mesaj nu trebuie a sat a dec at la cerere. Un astfel de c amp poate avea n continuare o informat ie suplimentar a, filename=nume, arat a numele sugerat pentru salvarea p art ii respective. De notat c a, din motive de securitate, mail user agent ul destinat ie trebuie s a nu salveze orbe ste partea de mesaj sub numele extras din mesaj, ci s a cear a mai nt ai permisiunea utilizatorului. In caz contrar, un adversar poate s a trimit a un sier av and ata sat un anumit sier, cu care s a suprascrie un sier al destinatarului.
11.1.1.4. Codicarea corpului mesajului si a ata samentelor Standardul original al formatului mesajelor prevede c a mesajele con tin doar text ASCII, cu utilizare restrict ionat a a caracterelor de control. Singurele caractere de control (cele cu codurile ntre 0 si 31) admise sunt carriage return (cod 13) si line feed (cod 10), utilizate pentru separarea r andurilor din mesaj. De asemenea, se recomand a s a nu se utilizeze caracterele cu coduri ntre 128 si 255, datorit a imposibilit a tii transmisiei lor n unele sisteme. Ca urmare, transmiterea unui sier arbitrar (inclusiv a unui text ISO-8859) nu este posibil a direct. Transmiterea unui cont inut arbitrar se face printr-o recodicare a acestuia utiliz and doar caracterele permise n corpul mesajului. Ca urmare,
mesajele apar, fat a de mail transfer agent -uri, identice cu cele conforme formatului original. Un mail user agent vechi, conform standardului original, nu va capabil s a transmit a un mesaj cu extensii MIME, iar n cazul primirii unui astfel de mesaj l va a sa ntr-un mod mai put in inteligibil pentru utilizator. Recodicarea este aplicat a doar asupra corpului mesajului, nu si asupra antetului. Antetul cont ine un c amp, Content-transfer-encoding, a c arui valoare arat a dac a si ce recodicare s-a aplicat asupra cont inutului. Codic arile denite de [RFC 2045, 1996] sunt: 7bit nseamn a de fapt lipsa oric arei recodic ari. In plus, arat a c a mesajul nu cont ine dec at caractere ASCII (cu codurile cuprinse ntre 0 si 127). 8bit arat a c a mesajul nu a fost recodicat, dar poate cont ine orice caractere (cu coduri ntre 0 si 255). quoted-printables arat a c a ecare caracter de control si ecare caracter egal (=) a fost recodicat ca o secvent a de trei caractere, format a dintr-un caracter egal (=) urmat de dou a cifre hexa; acestea din urm a reprezint a codul caracterului original. De exemplu, caracterul egal se recodic a =3D, iar caracterul escape (cod 27) se recodic a =1B. Restul caracterelor pot scrise direct sau pot recodicate ca si caracterele speciale; de exemplu litera a poate scris a a sau =61. base64 corpul mesajului a fost recodicat n baza 64 (vezi 7.4.2). In lipsa vreunui antet Content-transfer-encoding, se presupune codicarea 7bit. Pentru un mesaj (sau o parte de mesaj) de tip multipart, mesajul (respectiv partea) nu este permis s a e codicat dec at 7bit sau 8bit, ns a ecare parte a unui multipart poate codicat a independent de restul. In mod curent, un mesaj cu ata samente are corpul mesajului codicat 7bit, partea corespunz atoare mesajului propriu-zis este codicat a 7bit sau quoted-printables, iar p art ile corespunz atoare ata samentelor sunt codicate base64. Exemplul 11.2: Un mesaj cu siere ata sate este dat n continuare:
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@cs.ubbcluj.ro> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj cu fisiere atasate MIME-Version: 1.0 Content-transfer-encoding: 7bit Content-type: multipart/mixed; boundary="qwertyuiop"
--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
arat a, ntr-o form a u sor de procesat de c atre calculator, dac a cererea s-a executat cu succes sau nu si cauza erorii. Textul cuprinde informat ii suplimentare pentru diagnosticarea manual a a transmiterii mesajelor. Clientul trebuie s a nceap a printr-o cerere HELO care are ca parametru numele ma sinii clientului. Prin aceasta clientul se identic a fat a de server. De notat c a nu exist a posibilitatea autentic arii clientului de c atre server; serverul este nevoit s a ,,ia de bun numele transmis de client. Dup a identicarea prin cererea HELO, clientul poate transmite serverului mai multe mesaje de po st a electronic a. Transmiterea ec arui mesaj va ncepe printr-o cerere MAIL FROM:, av and ca parametru adresa expeditorului mesajului. Dup a acceptarea de c atre server a comenzii MAIL FROM:, clientul va trimite una sau mai multe cereri RCPT TO:; ecare cerere are ca parametru o adres a destinat ie. Fiecare cerere RCPT TO: poate acceptat a sau refuzat a de c atre server independent de celelalte. Serverul va transmite mesajul ec areia dintre adresele destinat ie acceptate. In nal, clientul trimite o cerere DATA f ar a parametrii. Serverul r aspunde, n mod normal cu un cod de succes. In caz de succes, clientul trimite corpul mesajului, ncheiat cu un r and pe care se g ase ste doar caracterul punct. Dup a primirea corpului mesajului, serverul trimite nc a un r aspuns. Mesajele primite de MTA sunt plasate ntr-o coad a de a steptare, stocat a de obicei n siere pe disc. MTA-ul receptor ncearc a imediat s a trimit a mai departe ecare mesaj primit. Dac a trimiterea mai departe nu este posibil a imediat, mesajul este p astrat n coad a si MTA-ul re ncearc a periodic s a-l trimit a. Dup a un num ar de ncerc ari e suate sau n cazul unei erori netemporare (de exemplu, dac a nu exist a adresa destinat ie), MTA-ul abandoneaz a si ncearc a trimiterea unui mesaj (e-mail) de eroare napoi c atre expeditor. Dac a adresa destinat ie este local a, MTA-ul plaseaz a mesajul n sierul corespunz ator cutiei po stale a destinatarului. De notat c a n trimiterea mai departe, livrarea local a sau trimiterea unui mesaj de eroare, MTA-ul utilizeaz a doar informat iile de pe plic, adic a parametrii comenzilor MAIL FROM: si RCPT TO:, si nu valorile c ampurilor From sau To din antetul mesajului. Exemplul 11.3: Fie mesajul din exemplul 11.1. Transmiterea lui de la MTAul de pe cs.ubbcluj.ro c atre example.com decurge astfel (r andurile transmise de la cs.ubbcluj.ro la example.com sunt precedate de o s ageat a la dreapta, iar r andurile transmise n sens invers de o s ageat a la st anga):
220 example.com HELO nessie.cs.ubbcluj.ro
250 example.com MAIL FROM: <rlupsa@cs.ubbcluj.ro> 250 Ok RCPT TO: <test@example.com> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu. . 250 Ok: queued QUIT 221 Bye
Exemplul 11.4: Urm atorul mesaj ilustreaz a utilizarea c ampurilor n cazul unui mesaj transmis unei liste de utilizatori. Mesajul este reprodus a sa cum ajunge la un abonat al listei, av and adresa test@example.com. Mesajul ilustreaz a, de asemenea, utilizarea c ampului Sender de c atre cineva care transmite un mesaj n numele altcuiva si a c ampului Cc.
Return-path: errors-26345@comunitati-online.example Received: from server27.comunitati-online.example by example.com for test@example.com; 31 Aug 2007 22:09:23 -0700 Reply-to: Forumul OZN <ozn@comunitati-online.example> Received: from roswell.greenmen.example by server27.comunitati-online.example for ozn@comunitati-online.example; 1 Sep 2007 05:09:21 +0000 Received: from localhost by roswell.greenmen.example for ozn@comunitati-online.example; 1 Sep 2007 08:09:20 +0300 From: Organizatia omuletilor verzi <office@greenmen.example> Sender: Ion Ionescu <ion@greenmen.example> To: Forumul OZN <ozn@comunitati-online.example> Cc: Organizatia omuletilor verzi <office@greenmen.example> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.534@roswell.greenmen.example In-reply-to: my-emailer.20070830222222.321@ufo.example
11.1.2.2. Determinarea urm atorului MTA Un MTA care are un mesaj de transmis c atre o anumit a adres a determin a urm atorul MTA c aruia trebuie s a-i transmit a mesajul astfel: 1. MTA-ul caut a mai nt ai, printre informat iile sale de congurare (vezi 11.1.2.3), dac a are vreo regul a privind adresa destinat ie. Dac a MTAul este responsabil de adresa destinat ie a mesajului, l memoreaz a local. Dac a MTA-ul este poart a de intrare a mesajelor pentru MTA-urile din ret eaua local a, transmite mesajul c atre MTA-ul determinat conform congur arii. 2. Dac a nu exist a informat ii de congurare pentru adresa destinat ie, MTAul caut a n DNS o nregistrare cu tipul MX pentru numele de domeniu din adresa destinat ie. O astfel de nregistrare cont ine una sau mai multe nume de servere SMTP capabile s a preia mesajele destinate unei adrese din acel domeniu. Dac a g ase ste o astfel de nregistrare, MTA-ul contacteaz a una din ma sinile specicate n nregistr arile MX g asite si-i transmite mesajul. 3. Dac a nu exist a nici nregistr ari MX, MTA-ul contacteaz a ma sina cu numele de domeniu din adresa destinat ie si-i transmite mesajul. 4. Dac a nu exist a nici un server cu numele de domeniu din adresa destinat ie, adic a dac a toate cele trei variante de mai sus e sueaz a, atunci MTA-ul declar a c a mesajul este nelivrabil si transmite napoi spre emit ator un mesaj de eroare. Un MUA lucreaz a, de obicei, mult mai simplu. Acest lucru duce la simplicarea MUA-ului prin separarea clar a a rolurilor: MUA-ul trebuie s a ofere facilit a ti de editare si s a prezinte utilizatorului o interfat a prietenoas a, iar MTA-ul are toate complicat iile legate de livrarea mesajelor. Pentru transmiterea oric arui mesaj, un MUA contacteaz a un acela si MTA, a c arui adres a este congurat a n opt iunile MUA-ului. Pe sistemele de tip UNIX, MUA-urile contacteaz a implicit MTA-ul de pe ma sina local a (localhost).
11.1.2.3. Congurarea unui MTA De cele mai multe ori, un MTA este resposnabil de adresele utilizatorilor calculatoarelor dintr-o ret ea local a. In acest caz, MTA-ul memoreaz a local mesajele adresate acestor utilizatori si le ofer a acestora posibilitatea de a le citi prin IMAP sau POP3. De asemenea, MTA-ul preia si transmite spre exterior mesajele utilizatorilor, generate de MUA-urile ce ruleaz a pe calculatoarele din ret eaua local a. In congurat ii mai complicate, un MTA act ioneaz a ca punct de trecere pentru mesajele care pleac a sau sosesc la un grup de MTA-uri dintr-o ret ea local a. El preia mesajele de la toate MTA-urile din ret eaua local a n scopul retransmiterii lor c atre exterior. De asemenea, preia mesajele din exterior destinate tuturor adreselor din ret eaua local a si le retrimite MTA-urilor, din ret eaua local a, responsabile. Un astfel de MTA este numit mail gateway. Un mail gateway poate util ca unic ltru contra viru silor si spam-urilor pentru o ntreag a ret ea local a ( n opozit ie cu a congura ecare MTA din ret eaua local a ca ltru). Un MTA trebuie congurat cu privire la urm atoarele aspecte: care sunt adresele locale si cum se livreaz a mesajele destinate acestor adrese; care sunt ma sinile ( n principiu, doar din ret eaua local a) de la care se accept a mesaje spre a trimise mai departe spre Internet; ce transform ari trebuie aplicate mesajelor. Implicit, un MTA consider a ca ind adrese locale acele adrese care au numele de domeniu identic cu numele ma sinii pe care ruleaz a MTA-ul si av and partea de utilizator identic a cu un nume de utilizator al ma sinii locale. Pe sistemele de operare de tip UNIX, un mesaj adresat unui utilizator local este ad augat la nalul unui sier av and ca nume numele utilizatorului si situat n directorul /var/mail. MTA-ul responsabil de o anumit a adres a destinat ie poate congurat de c atre utilizatorul destinatar s a execute anumite prelucr ari asupra mesajului primit. Pe sistemele de tip UNIX, aceast a congurare se face prin directive plasate n sierele .forward si .procmailrc din directorul personal al utilizatorului. Fi sierul .forward cont ine un sir de adrese la care trebuie retrimis mesajul n loc s a e livrat local n /var/mail/user. Fi sierul .procmailrc cuprinde instruct iuni mai complexe de procesare a mesajelor primite: n funct ie de aparit ia unor siruri, descrise prin expresii regulare, n mesajul primit, mesajul poate plasat n siere specicate
n .procmailrc sau poate pasat unor comenzi care s a-l proceseze. Pentru cazuri mai complicate, un MTA poate congurat de c atre administrator s a execute lucruri mai complicate: Este posibil s a se congureze adrese de po st a, situate n domeniul numelui ma sinii locale, care s a e considerate valide chiar dac a nu exist a utilizatori cu acele nume. Pentru ecare astfel de adres a trebuie denit a o list a de adrese, de regul a locale, la care se va distribui ecare mesaj primit. Ca exemplu, adresa root@cs.ubbcluj.ro este congurat a n acest fel; un mesaj trimis la aceast a adres a nu este plasat n /var/mail/root ci este retrimis utilizatorilor (congurat i n sierul /etc/aliases) care se ocup a de administrarea sistemului. Un MTA poate congurat s a se considere responsabil de mai multe domenii, ale c aror nume nu au nimic comun cu numele ma sinii MTA-ului. De exemplu, se poate congura MTA-ul de pe nessie.cs.ubbcluj.ro s a accepte mesajele destinate lui ion@example.com si s a le livreze utilizatorului local gheorghe. Desigur, pentru ca un mesaj destinat lui ion@example.com s a poat a livrat, mai trebuie ca mesajul s a ajung a p an a la nessie.cs.ubbcluj.ro. Pentru aceasta, trebuie ca MUA-ul expeditor sau un MTA de pe traseu s a determine ca urm ator MTA ma sina nessie.cs.ubbcluj.ro, lucru care se nt ampl a dac a n DNS se pune o nregistrare MX pentru numele de domeniu example.com indic and c atre nessie.cs.ubbcluj.ro. Un astfel de mecanism este utilizat n mod curent de furnizorii de servicii Internet pentru a g azdui po sta electronic a a unor client i care au nume propriu de domeniu dar nu det in servere de po st a electronic a care s a preia po sta adresat a adreselor din domeniul respectiv. Dac a utilizatorii expediaz a mesaje de pe mai multe ma sini dintr-o ret ea local a, nu este de dorit ca numele ma sinii interne s a apar a n adresa de po st a electronic a. De exemplu, dac a un acela si utilizator are cont pe mai multe ma sini, nu este de dorit ca adresa expeditorului s a depind a de ma sina de pe care utilizatorul scrie efectiv mesajul. De exemplu, nu este de dorit ca dac a scrie un mesaj pe ma sina linux.scs.ubbcluj.ro mesajul s a apar a av and adresa surs a From: ion@linux.scs.ubbcluj.ro, iar dac a l scrie de pe freebsd.scs.ubbcluj.ro s a apar a cu adresa From: ion@freebsd.scs.ubbcluj.ro. Pentru aceasta, MTA-ul care se ocup a de livrarea spre exterior a mesajelor generate n ret eaua intern a va schimba, at at n antetul mesajului (valoarea c ampului From) c at si pe ,,plic (valoarea parametrului comenzii SMTP MAIL FROM:), adresa expeditorului, elimin and numele ma sinii locale si p astr and doar
restul componentelor numelui de domeniu. In exemplul de mai sus, din adres a r am ane doar ion@scs.ubbcluj.ro. Modicarea poate mai complex a: astfel, dac a nessie.cs.ubbcluj.ro este congurat s a accepte mesajele destinate lui ion@example.com si s a le livreze utilizatorului local gheorghe, este probabil de dorit ca pentru mesajele compuse de utilizatorul local gheorghe s a fac a transformarea adresei surs a din gheorghe@nessie.cs.ubbcluj.ro n ion@example.com. Un alt element important de congurare prive ste decizia unui MTA de a accepta sau nu spre livrare un mesaj. In mod normal, un MTA trebuie s a accepte mesajele generate de calculatoarele din ret eaua local a si mesajele destinate adreselor locale, dar s a nu accepte trimiterea mai departe a mesajelor provenite din exterior si destinate n exterior. Un MTA care accept a spre livrare orice mesaje este numit n mod curent open relay. Un open relay este privit de obicei ca un risc pentru securitate, deoarece este adesea utilizat de utilizatori r au-voitori pentru a trimite mesaje ascunz andu- si identitatea.
Vericarea semn aturii necesit a ns a ca destinatarul s a dispun a de cheia public a autentic a a expeditorului. P an a la generalizarea utiliz arii mesajelor semnate, sistemul de po st a electronic a trebuie s a asigure livrarea mesajelor nesemnate si n consecint a cu risc de a falsicate. U surint a falsic arii adresei surs a si u surint a p astr arii anonimatului autorului unui mesaj a dus la proliferarea excrocheriilor. Adesea excrocheriile constau n trimiterea de mesaje unui num ar mare de utilizatori (acest fapt n sine este spam ) n sperant a de-a g asi printre ace stia unii care s a se lase p ac alit i. Spam -urile d auneaz a deoarece consum a n mod inutil timpul desti natarului. In plus, exist a riscul ca un mesaj legitim, ,, ngropat ntre multe spam-uri, s a e sters din gre seal a. Exist a detectoare automate de spam-uri, bazate pe diferite metode din domeniul inteligent ei articiale. Astfel de detectoare se instaleaz a pe MTA-uri si resping sau marcheaz a prin antete speciale mesajele detectate ca spam-uri. Un MTA care detecteaz a si respinge sau marcheaz a spam-urile se nume ste ltru anti-spam . De ment ionat ltrele anti-spam nu pot f acute 100% sigure deoarece nu exist a un criteriu clar de diferent iere. Ca urmare, orice ltru anti-spam va l asa s a treac a un anumit num ar de spam-uri si exist a si riscul de-a respinge mesaje legitime. Majoritatea furnizorilor de servicii Internet nu permit, prin contract, client ilor s a trimit a spam-uri si depun eforturi pentru depistarea si penalizarea autorilor. In acest scop, ei primesc sesiz ari si ntret in liste cu adresele de la care provin spam-urile (liste negre blacklist ). Trimiterea spam-urilor necesit a recoltarea, de c atre autorul spamurilor, a unui num ar mare de adrese valide de po st a electronic a. Acest lucru se realizeaz a cel mai u sor prin c autarea, n paginile web, a tot ceea ce arat a a adres a de po st a electronic a. Contram asura la aceast a recoltare este scrierea adreselor, din paginile web, doar n forme dicil de procesat automat de exemplu, ca imagine ( ntr-un sier jpeg, gif sau png ). Termenul de virus poate desemna mai multe lucruri, nrudite dar dis tincte. In general, un virus informatic este un fragment de program a c arui execut ie duce la inserarea unor c opii ale sale n alte programe de pe calculatorul pe care se execut a virusul. Impropriu, prin virus se mai desemneaz a un fragment, inserat ntr-un program util, care execut a act iuni nocive utilizatorului n contul c aruia se execut a acel program. Denumirea corect a pentru un astfel de program este aceea de cal troian. Denumirea de virus poate dat a, corect, doar fragmentelor de program capabile s a se reproduc a (s a- si insereze
c opii n alte programe). In contextul po stei electronice, un virus este un fragment dintr-un program plasat ca sier ata sat la un mesaj electronic. Virusul se poate reproduce e prin mijloace independente de po sta electronic a, e prin expedierea, c atre alt i utilizatori, a unor c opii ale mesajului. In acest al doilea caz, virusul utilizeaz a, de obicei, adrese extrase din lista, tinut a de MUA, a adreselor partenerilor de corespondent a ai utilizatorului care prime ste mesajul virusat. Indiferent de forma de propagare (infectarea sierelor locale sau transmiterea de mesaje spre alt i utilizatori), pentru a- si realiza scopul, un virus trebuie s a ajung a s a determine execut ia, cu drepturile utilizatorului victim a, a unei secvent e de instruct iuni aleas a de autorul virusului. Acest lucru se poate nt ampla n dou a moduri: Virusul se g ase ste ntr-un program executabil, pe care utilizatorul l execut a. Virusul este un document astfel construit nc at, exploat and o eroare din programul utilizat pentru vizualizarea documentului, s a determine programul de vizualizare s a execute act iunea dorit a de autorul virusului. Pentru a p ac ali destinatarul si a-l determina s a execute sau s a vizualizeze sierul ata st, corpul mesajului este construit astfel nc at s a c a stige ncrederea utilizatorului. Astfel, mesajul este adesea construit ca si c and ar proveni de la administratorul de sistem sau de la un prieten al destinatarului. Metodele de prevenire a viru silor de po st a electronic a sunt acelea si ca si metodele de prevenire a viru silor n general. Pentru programele executabile, dac a utilizatorul are ncredere n autorul declarat al programului (de exemplu, autorul este o rm a de soft de ncredere), atunci programul poate semnat electronic, iar utilizatorul poate verica aceast a semn atur a pentru a se convinge de autenticitatea programului. Pentru programe provenite din surse ce nu sunt de ncredere, execut ia lor se poate face ntr-un mediu controlat, de exemplu dintr-un cont separat, cu drepturi minime, sau prin intermediul unui interpretor care s a nu execute instruct iunile potent ial nocive. Aceast a din urm a abordare este utilizat a de applet -urile Java. Pe l ang a aceste metode de prevenire, exist a c ateva act iuni care mic soreaz a riscul sau consecint ele execut iei unui virus. Una dintre ele este reducerea la minimul necesar a lucrului din cont de administrator. Alt a m asur a preventiv a este aceea de a nu vizualiza sau executa sierele ata sate unui mesaj suspect; pentru aceasta, este bine ca expeditorul unui mesaj s a nu trimit a niciodat a un mesaj numai cu siere ata sate, ci s a scrie un mic text explicativ, care s a-i permit a destinatarului s a identice autorul si scopul sierelor ata sate.
In general ne g andim c a pe un astfel de sistem lucreaz a un singur utilizator la un moment dat. Totu si, exist a si posibilitatea de-a conecta mai multe ansambluri tastatur aecran la un acela si calculator, n felul acesta lucr and simultan mai mult i utilizatori. Acest mecanism s-a utilizat masiv n anii 1970, sistemele ind numite cu time-sharig. PC-urile au repetat, p an a la un punct, istoria calculatoarelor mari: au nceput ca sisteme monoutilizator, monotasking (sistemul DOS), au continuat cu un multitasking primitiv, bazat pe solut ii ad-hoc (deturnarea ntreruperilor n DOS, sistemul Windows p an a la versiunile 3.x), sisteme multitasking f ar a protect ie ntre utilizatori (Windows 9x si ME) si n nal sisteme multitasking propriu-zise (Windows NT/2000/XP si sistemele de tip UNIX Linux si porturile FreeBSD, Solaris, etc). Linux (prin mecanismul consolelor virtuale) si Windows XP (prin mecanismul switch user ) permit deschiderea simultan a a mai multor sesiuni locale de la acela si ansamblu tastatur aecran, pentru acela si utilizator sau pentru utilizatori distinct i. O singur a sesiune poate activ a la un moment dat, celelalte ind ,, nghet ate. Sistemul permite comutarea ntre sesiuni.
In cazul unei sesiuni la distant a, n locul unui terminal, conectat printr-o interfat a specializat a la calculatorul pe care se desf a soar a sesiunea, se utilizeaz a un calculator, conectat prin ret ea la calculatorul pe care se desf a soar a sesiunea. In felul acesta, un utilizator aat n fat a unui calculator conectat la Internet poate deschide o sesiune la distant a c atre orice alt calculator din Internet (bine nt eles, cu condit ia s a aib a un cont acolo). Principial, num arul de sesiuni deschise simultan c atre un calculator este limitat doar de resursele calculatorului (memorie si vitez a de procesare). Deschiderea unei sesiuni prin mecanismul de sesiune la distant a se poate face si c atre calculatorul local. Acest mecanism poate utilizat pentru deschiderea unei sesiuni ca alt utilizator, f ar a a nchide prima sesiune.
server login bash telnet S. O. driver pseudoterminal hard client telnet S. O. driver terminal
hard
Calculator server
Ret ea
Calculator client
Terminal zic
Sistemul pentru deschiderea sesiunilor la distant a (vezi g. 11.3) const a din dou a componente majore: Pe sistemul la care este conectat zic utilizatorul ruleaz a o aplicat ie care trimite prin ret ea ceea ce utilizatorul introduce de la tastatur a si a seaz a pe ecran ceea ce trimite sistemul de la distant a. A sarea se poate face pe tot ecranul sau ntr-o fereastr a. Aceast a aplicat ie deschide n mod activ conexiunea la deschiderea sesiunii, motiv pentru care este un client. Pe sistemul de la distant a, pe care are loc sesiunea, ruleaz a o aplicat ie care prime ste prin ret ea datele trimise de aplicat ia client si le livreaz a proceselor ce ruleaz a n cadrul sesiunii. De asemenea, preia datele de ie sire ale acestor procese datele care n cazul unei sesiuni locale s-ar a sa pe ecran si le trimite prin ret ea clientului. Aceast a aplicat ie este lansat a la pornirea sistemului si a steapt a conexiuni ind n acest sens un server. La conectarea unui client, aplicat ia server autentic a clientul dup a care ( n cazul unei autentic ari cu succes) lanseaz a procesele care sunt lansate n mod normal la deschiderea unei sesiuni. De exemplu,
n cazul unui sistem de tip UNIX, serverul lanseaz a n execut ie un shell rul and n contul utilizatorului. Pentru ca serverul s a comunice cu procesele din cadrul sesiunii, este necesar ca sistemul de operare s a ofere un mecanism adecvat de comunicat ie ntre procese. Mecanismul de comunicat ie trebuie s a apar a fat a de procesele din sesiunea utilizatorului ca si c and ar tastatura si ecranul adev arate. In cazul sistemelor de tip UNIX, acest mecanism este mecanismul pseudoterminalelor . De notat c a mecanismul pipe nu este adecvat deoarece un pipe nu apare procesului ca un terminal si nu permite, de exemplu, unui editor de texte, ce ar rula n sesiunea utilizatorului, s a solicite primirea ec arui caracter tastat n parte. De notat c a, n mod normal, un proces prime ste c ate o linie n momentul n care utilizatorul apas a enter ; p an a atunci nucleul sistemului permite utilizatorului editarea liniei.
Pentru ecare sens, datele de transmis sunt grupate n pachete, de dimensiune variabil a. Pentru ecare pachet de date utile, se construie ste si se transmite pe conexiune un pachet generat astfel: 1. Datele utile sunt comprimate utiliz and algoritmul de compresie curent pentru sensul de comunicat ie curent. 2. Se adaug a, dup a datele comprimate, un sir de octet i aleatori, iar n fat a lor se adaug a un octet reprezent and lungimea sirului aleator. Apoi, n fat a sirului astfel obt inut, se adaug a lungimea total aa sirului, reprezentat a pe patru octet i. Num arul de octet i aleatori ad augat i trebuie astfel ales nc at s a rezulte n urma concaten arii un sir de lungime multiplu de lungimea blocului cifrului utilizat. 3. Rezultatul pasului precedent se cripteaz a. 4. In fat a blocului (necriptat) rezultat din pasul 2 se adaug a num arul de ordine al pachetului curent, dup a care din rezultatul concaten arii se calculeaz a dispersia cu cheia de autenticare curent a. Num arul de ordine ncepe de la 0 si cre ste cu 1 la ecare pachet independent de eventuala schimbare a cheilor sau algoritmilor criptograci utilizat i. 5. Pachetul transmis efectiv este rezultatul concaten arii pachetului criptat (rezultat din pasul 3) cu dispersia cu cheie (rezultat a din pasul 4). Rolul acestor transform ari este urm atorul. Pe de o parte, compresia cre ste entropia datelor de criptat, f ac and mai dicil a spargerea cifrului. Octet ii ad augat i la nalul blocului fac ca n cazul repet arii aceluia si bloc de date utile s a rezulte blocuri criptate diferite. Lungimea complet arii aleatoare este si ea criptat a, f ac and dicil a determinarea lungimii datelor utile din blocul criptat. Pe de alt a parte, dispersia criptograc a cu cheie se calculeaz a dintrun bloc cont in and datele utile si num arul de ordine al blocului, fapt ce permite receptorului s a verice c a datele sunt autentice si c a sunt proaspete num arul de ordine al blocului primit este cel a steptat. Num arul de ordine al blocului ind cunoscut receptorului, nu este nevoie s a e trimis efectiv. In cazul vreunei nepotriviri privitoare la dispersia criptograc a cu cheie a unui bloc, conexiunea este abandonat a. Remarc am faptul c a o astfel de nepotrivire poate cauzat a doar de o tentativ a de modicare a datelor de c atre un adversar activ, nivelul TCP si nivelele inferioare corect and erorile de transmisie la nivel zic si eventualele pierderi de pachete IP datorate unei congestii n ret ea. La deschiderea conexiunii ssh, compresia, criptarea si dispersia cu cheie sunt dezactivate. Negocierea primului set de chei si a algoritmilor de compresie, criptare si dispersie cu cheie se face n clar. O dat a alese cheile
si algoritmii, acestea sunt activate si se poate ncepe comunicat ia n folosul aplicat iilor. Algoritmii si cheile pot renegociate ulterior oridec ateori una dintre p art i (clientul sau serverul) o solicit a. Negocierea cheilor si algoritmilor se face dup a cum urmeaz a. Fiecare parte trimite liste, n ordinea descresc atoare a preferint ei, cu algoritmii de criptare, compresie, dispersie cu cheie, semn atur a digital a si schimb de chei suportate. Algoritmul utilizat, pentru ecare categorie, este primul algoritm de pe lista clientului care se reg ase ste si n lista serverului (adic a cel mai favorabil clientului, dintre cei acceptat i de server). Urmeaz a schimbul de mesaje conform protocolului Die-Hellman (ssh nu are denite deocamdat a alte metode de schimb de chei). Din informat ia secret a construit a prin schimbul DieHellman se construiesc (pe baza unor funct ii de dispersie f ar a cheie) cheile secrete pentru criptare si pentru autenticare pentru ecare sens. Mai r am ane de autenticat schimbul Die-Hellman, despre care am v azut c a, singur, este vulnerabil la atacul unui adversar activ. Autenticarea cheii fat a de client (adic a autenticarea, fat a de client, a serverului cu care comunic a acesta) se face dup a cum urmeaz a. Serverul are o pereche de chei pentru semn atur a electronic a. Clientul trebuie s a aib a cheia public a a serverului. Dup a realizarea schimbului Die-Hellman, serverul trimite clientului o semn atur a, calculat a cu cheia sa secret a, asupra ntregului schimb de informat ie de p an a atunci adic a listele de algoritmi suportat i si pachetele corespunz atoare protocolul Die-Hellman, emise de ambele p art i. Prin vericarea semn aturii, clientul se asigur a c a negocierea a avut loc ntr-adev ar cu serverul autentic. Autenticarea clientului fat a de server se face ulterior, exist and n acest scop mai multe mecanisme posibile (vezi 11.2.1.2). Pentru facilitarea r asp andirii utiliz arii protocolului ssh, serverul transmite la deschiderea conexiunii cheia sa public a c atre client. Not am c a, deoarece transmisia cheii publice a serverului nu poate nc a autenticat a, utilizarea de c atre client a cheii publice transmise de server prezint a riscul ca un adversar activ s a se dea drept serverul autentic. Dac a ns a adversarul n-a modicat cheia public a transmis a de server, restul comunicat iei este sigur. Mai mult, la prima conectare, clientul stocheaz a local cheia primit a de la server. La urm atoarele conect ari, clientul compar a cheia primit a de la server cu cea stocat a locat; dac a sunt diferite, avertizeaz a utilizatorul. In acest fel, dac a la prima conectare cheia primit a de client de la server este cea autentic a, orice atac ulterior din partea unui adversar activ este descoperit a. La prima conectare a programului client ssh la un server nou, clientul avertizeaz a utilizatorul cu privire la faptul c a nu poate verica cheia serverului. La aceast a prim a conectare, mpiedicarea unui atac al unui eventual adversar
se poate face n dou a moduri: Inainte de prima conectare, utilizatorul copiaz a, de pe ma sina server sau dintr-o surs a autenticat a, cheia public a a serverului si o introduce manual n lista de chei memorate local de programul client ssh. In acest fel, clientul ssh poate verica cheia serverului chiar de la prima sesiune, ntocmai ca n cazul unei sesiuni ulterioare. Utilizatorul obt ine, dintr-o surs a autenticat a (de exemplu, vorbind la telefon cu administratorul ma sinii server), dispersia criptograc a a cheii publice a serverului. La prima conectare, utilizatorul compar a dispersia astfel obt inut a cu dispersia cheii trimise de server (aceasta este a sat a de clientul ssh mpreun a cu mesajul de avertisment prin care anunt a imposibilitatea veric arii cheii). Dac a cele dou a dispersii coincid, cheia trimis a de server este autentic a. Pe sistemele de tip UNIX, cheile publice ale serverului (pentru diferitele protocoale de semn atur a) se g asesc n directorul /etc/ssh, n sierele ssh_host_rsa_key.pub, respectiv ssh_host_dsa_key.pub. Aceste siere pot citite de orice utilizator al sistemului. Amprenta cheii dintr-un astfel de sier se determin a cu comanda ssh-keygen -l -f sier. Cleintul ssh memoreaz a cheile serverelor n sierul ~/.ssh/known_hosts. 11.2.1.2. Metode de autenticare n ssh In ssh, exist a autenticare reciproc a ntre client si server. A sa cum am v azut, serverul se autentic a fat a de client cu ajutorul unui mecanism cu cheie privat a si cheie public a. Dup a init ializarea mecanismului de protect ie criptograc a a conexiunii, este r andul clientului s a- si declare identitatea (numele de utilizator) si s a se autentice. Clientul poate autenticat de server prin mai multe metode. Cele mai comune sunt autenticarea prin parol a si autenticarea prin semn atur a digital a (numit a si autenticare cu cheie public a). Autenticarea prin parol a presupune trimiterea de c atre client a parolei. Este esent ial faptul c a serverul este deja autenticat si condent ialitatea, integritatea si prospet imea comunicat iei sunt protejate. Ca urmare clientul nu risc a s a trimit a parola unui adversar si nici ca un adversar ce capteaz a comunicat ia criptat a s a retrimit a datele interceptate pentru a repeta o sesiune legitim a. Autenticarea prin semn atur a digital a presupune ca n faza de init ializare utilizatorul s a congureze pe server o cheie public a, corespunz atoare
cheii sale secrete. La conectare, clientul se autentic a trimit and semn atura, cu cheia sa secret a, asupra identicatorului de sesiune creat n faza de stabilire a comunicat iei protejate criptograc. Serverul veric a semn atura utiliz and cheia public a ce a fost congurat a. Congurarea autentic arii cu cheie public a, pe sistemele de tip UNIX av and server OpenSSH, este descris a n continuare. Perechile de chei se genereaz a cu ajutorul utilitarului ssh-keygen. Cheia public a admisibil a pentru conectarea n contul unui utilizator se scrie n sierul ~/.ssh/authorized_keys (sub directorul personal al utilizatorului). Deoarece acest sier poate modicat doar de c atre posesorul contului, doar posesorul contului poate stabili cheia admisibil a pentru autenticare. Fi sierul ~/.ssh/autthorized_keys poate cont ine mai multe chei. In acest caz, oricare dintre cheile secrete corespunz atoare este valid a pentru autenticare. Este posibil ca, pentru anumite chei, s a se congureze lansarea unei anumite aplicat ii; n acest caz, dac a clientul utilizeaz a cheia pereche pentru autenticare, i se va lansa automat aplicat ia respectiv a si nu o sesiune nerestrict ionat a. Pentru schimbarea cheii, de exemplu n cazul compromiterii cheii secrete, utilizatorul trebuie s a genereze o nou a pereche de chei, s a scrie noua cheie public a n sierul ~/.ssh/authorized_keys, s a stearg a vechea cheie public a din acest sier si s a furnizeze noua cheie secret a clientului ssh la conect arile ulterioare. Deoarece cheia public a nu este o informat ie secret a, compromiterea sistemului server nu duce la compromiterea, si deci la necesitatea schimb arii, cheii. Acesta este un avantaj fat a de cazul autentic arii prin parole, unde compromiterea serverului duce la compromiterea parolei si la necesitatea schimb arii parolei nu numai pe acel sistem ci si pe alte sisteme pe care utilizatorul avea aceea si parol a. Pentru furnizarea cheii secrete c atre clientul ssh, exist a dou a posibilit a ti. Prima posibilitate este ca sierul cu cheia secret a s a e f acut disponibil clientului ssh. Dac a sierul cont ine cheia secret a ca atare, conectarea se face f ar a ca utilizatorul s a mai dea vreo parol a. Dac a utilizatorul dore ste s a se conecteze de pe ma sini (client) diferite, trebuie e s a poarte cheia cu el pe un suport amovibil, e s a pun a copii ale cheii secrete pe ecare sistem, e s a utilizeze chei diferite pentru conectarea de pe ecare sistem. Ultima solut ie ofer a avantajul c a, n cazul compromiterii unuia dintre sistemele client, este necesar a schimbarea cheii secrete doar de pe acel sistem. Deoarece compromiterea unui sistem client duce, n cazul stoc arii ca atare a cheii secrete, la compromiterea imediat a a contului utilizatorului, cheile secrete se stocheaz a, n mod obi snuit, n form a criptat a n siere. Criptarea
se realizeaz a printr-un algoritm simetric cu ajutorul unei chei derivate dintr-o parol a aleas a de utilizator. Stocarea cheii numai n form a criptat a ofer a un plus de sigurant a (un intrus trebuie s a obt in a at at sierul cu cheia secret a, c at si parola de decriptare a acestuia), ns a duce la necesitatea de a da clientului ssh parola de decriptare la ecare utilizare. A doua posibilitate de a furniza aplicat iei client accesul la cheia secret a este prin intermediul unui program numit agent de autenticare . Agentul de autenticare este un proces server care are n memorie cheia secret aa utilizatorului, n forma decriptat a. Clientul ssh se conecteaz a la agentul de autenticare pentru a obt ine accesul la cheie. Agentul de autenticare, av and ca nume de executabil ssh-agent, se lanseaz a de regul a la deschiderea sesiunii pe ma sina client. Cheile secrete se ncarc a n agentul de autenticare cu ajutorul unui program numit ssh-add. Acest program permite si listarea si stergerea cheilor secrete. Dac a cheia secret a este stocat a criptat, ssh-add solicit a utilizatorului parola de decriptare. Cheia secret a decriptat a se g ase ste doar n memoria agentului de autenticare, nu se stocheaz a pe disc. La lansare, clientul ssh caut a s a vad a dac a pe ma sina local a ruleaz a un agent de autenticare. Dac a da, contacteaz a agentul de autenticare si-i solicit a accesul la cheile secrete stocate de acesta. Clientul ssh paseaz a agentului identicatorul de sesiune si prime ste napoi semn atura cu cheia secret a asupra acestuia. In acest fel, clientul ssh nu ajunge s a cunoasc a efectiv cheia secret a. Deschiderea sesiunii c atre ma sina server se face f ar a a solicita utilizatorului vreo parol a. Comunicat ia dintre clientul ssh sau utilitarul ssh-add si agentul de autenticare se face printr-un socket de tip UNIX, al c arui nume este pus n variabila de mediu SSH_AUTH_SOCK. Comunicat ia ind local a, ea nu poate interceptat a sau modicat a. Autenticarea clientului (ssh sau ssh-add ) se face prin aceea c a drepturile de acces la socket-ul corespunz ator sunt acordate doar proprietarului agentului de autenticare. Protocolul ssh permite construct ia unei conexiuni securizate dinspre ma sina server ssh spre agentul de autenticare de pe ma sina client ssh. In acest caz, la deschiderea sesiunii, serverul ssh act ioneaz a si ca un agent de autenticare. Cererile de semn atur a primite de serverul ssh sunt trimise prin conexiunea ssh c atre client, iar clientul le trimite agentului local (de pe ma sina client). Prelungirea nu se poate face n lipsa unui agent de autenticare pe ma sina client. Analiz and securitatea prelungirii conexiunii la agentul de autenticare, observ am c a serverul nu obt ine efectiv cheia secret a, ns a, pe durata
conexiunii, poate deschide sesiuni n numele clientului c atre orice ma sin a care accept a cheile stocate n agentul de autenticare. Din acest motiv, clientul ssh nu face prelungirea conexiunii la agentul de autenticare dec at la cererea explicit a a utilizatorului. 11.2.1.3. Multiplexarea conexiunii, tunelarea si aplicat ii O dat a deschis a conexiunea si realizat a autenticarea clientului, clientul ssh poate solicita serverului deschiderea unei sesiuni de lucru, adic a n esent a lansarea unui shell n contul utilizatorului autenticat. Tot la solicitarea clientului, canalul de comunicat ie creat de server ntre server si shell -ul lansat poate realizat printr-un pseudoterminal (cazul obi snuit al unei sesiuni interactive) sau printr-o pereche de pipe -uri. A doua variant a se utilizeaz a n cazul n care utilizatorul a lansat clientul ssh cu specicarea unei comenzi de executat pe server. In acest caz, comanda specicat a de utilizator este transmis a serverului si acesta o execut a cu intrarea si ie sirea redirect ionate c atre server si prelungite prin conexiunea securizat a c atre client. Redirect ion and pe client intrarea sau ie sirea standard a comenzii ssh, se realizeaz a, per ansamblu, redirect ionarea intr arii sau ie sirii standard c atre siere sau pipe -uri de pe ma sina local a pentru comanda executat a la distant a. Exemplul 11.5: Comanda
ssh rlupsa@nessie.cs.ubbcluj.ro ls -l > lista
are ca efect nal crearea, pe ma sina local a, a unui sier lista, cont in and lista numelor de siere de pe ma sina nessie.cs.ubbcluj.ro din directorul personal al utilizatorului rlupsa.
tastatura ata sat a se nume ste client X. Un client X se conecteaz a la serverul X si, dup a auteticare, poate: s a cear a serverului s a deseneze diverse lucruri pe ecran; s a solicite s a primeasc a inform ari cu privire la tastele ap asate de utilizator si la mi sc arile mouse-ului. La un server se pot conecta simultan mai mult i client i, inclusiv de pe calculatoare diferite. Serverul tine evident a unor ferestre, ecare operat ie de desenare av and specicat a o fereastr a n care s a deseneze. Ecranul cu totul este considerat o fereastr a, iar n ecare fereastr a se pot deschide subferestre. Serverul tine evident a modului n care se suprapun ferestrele si determin a ce parte din desenul efectuat ntr-o fereastr a este vizibil si trebuie desenat pe ecran. Un client autenticat are acces deplin la tastatura si ecranul gestionate de server. Asta nseamn a, de exemplu, c a un client poate s a deseneze ntr-o fereastr a deschis a de alt client si poate s a capteze tot ceea ce tasteaz a utilizatorul n acea fereastr a. De principiu, sunt admise la un moment dat s a se conecteze doar aplicat ii rul and n contul aceluia si utilizator. Pentru ca aplicat ii distincte s a nu se ncurce reciproc, exist a ni ste convent ii pe care aplicat iile se recomand a s a le respecte. In linii mari, acestea prev ad ca o aplicat ie s a nu deseneze n ferestrele deschise de alt a aplicat ie si s a nu capteze tastele c and nu este activ a. Comutarea ntre aplicat ii, precum si mutarea si redimensionarea ferestrelor principale ale aplicat iilor, cad n sarcina unui client mai special numit window manager . Window manager -ul se conecteaz a si se autentic a ca un client obi snuit, dup a care solicit a serverului s a e informat de cererile de deschidere de ferestre trimise de ceilalt i client i. La ecare fereastr a principal a deschis a, window manager -ul adaug a bara de titlu si marginile. Deoarece oricum nu exist a protect ie ntre client ii conectat i la un server X, un client nu are nevoie de privilegii speciale ca s a act ioneze ca window manager. Totu si, c ateva dintre operat iile de care are nevoie un window manager ca s a funct ioneze sunt acordate de serverul X doar unui client la un moment dat. Ca urmare, nu pot exista dou a window manager -e simultan.
O prim a categorie de protocoale si aplicat ii prive ste, n principal, transferul sierelor unui utilizator de pe o ma sin a pe alta, n condit iile n care utilizatorul are cont pe ambele ma sini. Protocoalele construite pentru aceasta sunt ftp si ssh. De notat c a si po sta electronic a poate servi ca mecanism de transfer de siere. O a doua categorie prive ste transferul sierelor publice de la un calculator ce stocheaz a astfel de siere la calculatorul unui utilizator ce dore ste s a citeasc a sierele respective. Init ial se utiliza protocolul ftp n acest scop. Protocolul utilizat n mod curent este ns a http. O a treia categorie pive ste accesul proceselor de pe un calculator la siere stocate pe alt calculator ca si c and sierele ar locale. De principiu sierele respective sunt private, ca si pentru prima categorie de protocoale. Protocoalele din aceast a categorie trebuie s a satisfac a dou a cerint e specice (fat a de prima categorie): s a permit a transferul doar a unei p art i mici dintrun sier si s a permit a controlul partaj arii sierului ntre procese. Protocoalele utilizate aici sunt SMB (utilizat n ret elele Windows) si NFS.
serverul creaz a (prin apelul sistem fork()) un proces u care se ocup a de acel client; dup a autenticare, procesul u trece n contul utilizatorului autenticat (prin apelul setuid()); n continuare, serverul accept a orice comenzi de la client si ncearc a s a le execute, iar vericarea drepturilor de acces este f acut a de nucleul sistemului de operare n momentul n care procesul server u ncearc a s a acceseze sistemul de siere. Pentru transferul de siere publice, serverul este congurat s a accepte autenticare cu numele de utilizator ftp sau anonymous f ar a s a solicite parol a sau accept and orice sir de caractere pe post de parol a. In vremurile de nceput ale Internet-ului, se obi snuia ca un utilizator ce dorea acces la siere publice s a si dea, pe post de parol a, adresa sa de po st a electronic a. O dat a cu r asp andirea spam -urilor, s-a renunt at la acest obicei. Transferul sierelor se cere prin comenzile SEND (dinspre client spre server) si RETR (dinspre server spre client). Comenzile au ca argument numele de pe server al sierului de transferat. Transferul propriu-zis are loc printr-o conexiune separat a, numit a conexiune de date. Pentru ecare sier se deschide o nou a conexiune de date, care se nchide la nalul transferului sierului. Dimensiunea sierului nu este specicat a explicit nic aieri, receptorul sierului obt in and lungimea din faptul c a emit atorul nchide conexiunea de date la nalul sierului. Exist a dou a moduri de deschidere a conexiunii de date: Modul activ prevede c a serverul deschide conexiunea de date ca o conexiune TCP dinspre portul 20 al serverului c atre un port specicat de client. Clientul specic a portul pe care a steapt a conexiunea prin comanda PORT. Conexiunea se deschide ca urmare a comenzii de transfer (SEND sau RETR), nu imediat dup a primirea comenzii PORT. Modul pasiv prevede deschiderea conexiunii de date de c atre client, dinspre un port oarecare al s au, c atre un port specicat de server. Portul specicat de server se obt ine ca r aspuns al comenzii PASV date de client. Acesta este singurul caz n care clientul interpreteaz a din r aspunsul serverului si altceva dec at codul returnat. Listarea sierelor de pe server este solicitat a de client prin comanda LIST. Trasnferul listei de siere se face tot printr-o conexiune de date, ca si n cazul comenzii RETR.
public. El nlocuie ste protocolul ftp utilizat cu conectare ca utilizator anonymous. De si numele protocolului face referire la hipertext, el poate utilizat pentru a transfera orice fel de cont inut. Protocolul de baz a const a n trimiterea de c atre client a unei cereri, n care informat ia principal a este numele sierului cerut. R aspunsul serverului cont ine ni ste informat ii despre sier si cont inutul efectiv al sierului. Implicit, conexiunea se nchide dup a transferul unui sier. Dac a clientul dore ste mai multe siere de pe acela si server, va trebui s a deschid a c ate o conexiune pentru ecare sier. Protocolul a fost ns a extins, ajung and s a e folosit ca protocol de transfer de date pentru aplicat ii de orice tip. 11.3.2.1. Structura cererilor si a r aspunsurilor Formatul comunicat iei este mixt, at at la cereri c at si la r aspunsuri. Partea de nceput este text, iar cont inutul sierului este binar. Cererea cuprinde, pe prima linie, un cuv ant reprezent and numele operat iei cerut a. Pentru solicitarea unui sier public de pe server, numele este GET. Dup a numele operat iei urmeaz a numele sierului si apoi identicarea versiunii de protocol n conformitate cu care este format a cererea. Cele trei elemente sunt separate prin c ate un spat iu. Urm atoarele linii sunt de forma nume :valoare, similar cu antetul unui mesaj de po st a electronic a. Dup a ultima linie de antet urmeaz a o linie vid a. Pentru unele tipuri de cereri, dup a linia goal a se g ase ste un cont inut. In acest caz, una dintre liniile din antet are numele Content-length si are ca valoare lungimea cont inutului, dat a ca sir de cifre zecimale. R aspunsul este structurat similar cu cererea. Pe prima linie se a a identicatorul versiunii HTTP, num ar de trei cifre si un text. Num arul arat a dac a cererea a fost satisf acut a cu succes sau nu, iar textul, neinterpretat de client, este o descriere n cuvinte a semnicat iei codului de trei cifre. Urm atoarele linii sunt de forma nume :valoare si dau informat ii despre sierul solicitat. Dup a ultima linie de antet urmeaz a o linie vid a si apoi cont inutul (binar) al sierului. In antet se g ase ste o linie cu numele Content-length av and ca valoare lungimea sierului. Determinarea sf ar sitului cont inutului propriu-zis de c atre client trebuie f acut a prin num area octet ilor din partea de cont inut. Adesea, mai multe servere HTTP sunt g azduite zic pe acela si calculator. In acest caz, e numele serverelor corespund, prin DNS, unor adrese IP diferite, dar apart in and aceluia si calculator, caz n care serverul este congurat s a r aspund a n funct ie de IP-ul c atre care a fost deschis a conexiunea,
e numele serverelor corespund aceleia si adrese IP, caz n care este necesar ca n cererea HTTP s a e specicat serverul dorit. Acest lucru se realizeaz a prin aceea c a, n cererea clientului, se plaseaz a un antet cu numele Host si av and ca valoare numele de server dorit. 11.3.2.2. URL-urile O pagin a web este n general un sier scris n HyperText Markup Language (HTTP) si oferit n acces public prin protocolul HTTP. O pagin a web const a, de obicei, din mai multe siere. Exist a un sier de baz a, scris n limbajul HTML, si alte siere, cont in and anumite elemente ale paginii: imagini ( n siere separate n formate specice JPEG, PNG, GIF), applet-uri (Java), specic ari de formatare a paginii ( siere Cascading Style Sheet CSS). De asemenea, o pagin a cont ine n general leg aturi (link -uri) spre alte pagini. Toate acestea necesit a referiri dintr-un sier HTML c atre alte siere disponibile n acces public. Referirea acestor siere se face prin nume care s a permit a reg asirea lor u soar a. Un Universal Resource Locator (URL) este un nume prin care se poate identica si cu ajutorul c arora se potate reg asi o resurs a disponibile n Internet. URL-urile au ap arut ca un format standard de scriere a numelor sierelor referite din paginile web; ele permit ns a utiliz ari mult mai vaste. Un URL este alc atuit n general din trei componente: Tipul identic a protocolul utilizat. Exemple mai cunoscute sunt: http, ftp, https, mailto. Numele ma sinii este numele de domeniu sau adresa IP a ma sinii pe care se g ase ste resursa ( sierul). Pe l ang a numele ma sinii, n cadrul acestei componente se poate ad auga numele de utilizator n contul c aruia trebuie s a se autentice un client pentru a obt ine accesul dorit la resurs a. Numele de utilizator se d a n fat a numelui sau adresei ma sinii, separat de acesta prin caracterul @. Standardul original prevedea si posibilitatea de-a scrie n URL parola necesar a conect arii. Aceast a utilizare este nerecomandat a. Calea identic a resursa ( sierul) n cadrul serverului care o g azduie ste. In principiu, ea este calea complet a a sierului cerut, relativ a la un director de baz a, xat, al documentelor publice. URL-urile se pot utiliza si se utilizeaz a efectiv n multe alte scopuri dec at identicarea paginilor web. De exemplu, sistemul SubVersion (SVN) utilizeaz a URL-uri de forma svn://ma sin a /cale pentru a referi sierele dintrun repository.
11.3.2.3. Alte facilit a ti HTTP Antetul r aspunsului HTTP ofer a mai multe informat ii despre sierul returnat: Tipul cont inutului sierului este specicat de c atre server prin intermediul unui antet cu numale Content-type si cu valoarea construit a ca si n cazul antetului Mime-type de la po sta electronic a. Tot ca si n cazul lui Mime-type, tipul cont inutului poate urmat de specicarea codic arii utilizate pentru text; de exemplu,
Content-type: text/html; charset=utf-8
nseamn a c a sierul este de tip HTML, iar codicarea utilizat a pentru caractere este UTF-8. Data ultimei modic ari a sierului este specicat a prin valoarea antetului cu numele Date. Tipul de compresie utilizat (dac a sierul returnat este comprimat) este dat ca valoare a antetului Content-transfer-encoding. Limba n care este scris textul din sier (dac a este cazul) este returnat a ca valoare a antetului Language:. Este posibil ca unui URL s a-i corespund a mai multe siere pe server, av and cont inut echivalent, dar n diverse formate, limbi sau codic ari. Pentru a select iona varianta dorit a, clientul poate anunt a posibilit a tile si preferint ele sale cu privire la tipul de sier, limb a si codicare. Antetele corespunz atoare, din cererea clientului, sunt: Accept, Accept-language si Accept-encoding. Fiecare dintre acestea are ca valoare o list a de variante, n ordinea preferint ei. De exemplu,
Accept-language: ro,en,fr
solicit a serverului, de preferint a, varianta n limba rom an a a textului. Dac ao variant a n limba rom an a nu este disponibil a, se solicit a una n limba englez a, iar n lipsa acesteia una n limba francez a. Protocolul HTTP permite formularea de cereri condit ionate sau par tiale. O cerere part ial a este util a dac a sierul cerut este mare si clientul dore ste s a-l aduc a din buc a ti sau dac a la o cerere precedent a a c azut leg atura dup a transferul unei p art i din sier. O cerere condit ionat a determin a serverul s a transmit a clientului sierul numai dac a este ndeplinit a o anumit a condit ie, cel mai adesea dac a a fost modicat mai recent dec at o anumit a dat a specicat a
de client. Dac a nu este ndeplinit a condit ia, serverul d a un r aspuns format doar din antet, f ar a cont inutul propriu-zis. Aceast a facilitate este util a dac a clientul det ine o copie a unui sier si dore ste mprosp atarea acesteia. Cererea part ial a se specic a de c atre client prin intermediul antetului Range; cererea condit ionat a se specic a prin antetul If-modified-since. Pentru optimizarea tracului, n cazul n care un client dore ste mai multe siere de pe acela si server (aceasta se nt ampl a adesea n cazul n care clientul aduce un sier html, iar apoi are de adus imaginile si eventual alte obiecte din document), este prev azut a posibilitatea de-a p astra conexiunea deschis a pe durata mai multor cereri. In acest scop, clientul cere p astrarea conexiunii deschise, plas and n cerere antetul
Connection: keep-alive
Pentru a nu permite unor client i s a deschid a o conexiune si apoi s a o lase deschis a la nesf ar sit, tin and ocupate resurse pe server, serverul trebuie congurat s a nchid a automat conexiunea dac a nu se transfer a date o perioad a de timp. Este uneori util ca un utilizator care acceseaz a un URL s a e redirec tionat automat c atre alt URL. Aceasta se nt ampl a dac a administratorul saitului decide o reorganizare a paginilor si dore ste ca utilizatorii care au ret inut URL-uri desint ate n urma reorganiz arii s a e redirect ionat i c atre paginile corespunz atoare din noua organizare. Aceast a redirectionare se face prin trimiterea de c atre server a unui antet cu numele Location si av and drept cont inut URL-ul spre care se dore ste redirect ionarea clientului. In acest caz, programul client nu a seaz a cont inutul returnat de server (cont inut care n mod normal lipse ste complet), ci cere si a seaz a cont inutul de la URL-ul indicat n antetul Location. 11.3.2.4. Proxy HTTP Un proxy HTTP este un proces care, fat a de un client HTTP, act ioneaz a aproape ca un server HTTP, iar pentru satisfacerea cererii contacteaz a serverul solicitat de client si act ioneaz a, fat a de acest server, ca un client. Un proxy HTTP este utilizat n mod normal pentru urm atoarele funct ii: dac a dintr-o ret ea local a exist a sanse mari ca mai mult i utilizatori s a acceseze acelea si pagini web: In acest caz, client ii HTTP ai calculatoarelor din ret ea se congureaz a s a utilizeze un acela si proxy HTTP din ret eaua local a. Dac a exist a mai multe cereri pentru aceea si pagin a, la prima cerere proxy -ul memoreaz a pagina adus a, iar la urm atoarele cereri o serve ste client ilor din memoria local a.
dac a ntr-o ret ea se utilizeaz a adrese IP locale (vezi 10.2.4.1 si 10.7.2) si nu se dore ste congurarea unui mecanism de translat ie de adrese (NAT, 10.7.3): In acest caz, se instaleaz a un proxy HTTP pe un calculator din ret eaua local a dar av and si adres a IP public a. Clientul acceseaz a proxy -ul prin ret eaua local a, iar proxy -ul, av and adres a public a, poate accesa f ar a restrict ii serverul dorit. dac a este de dorit un control n asupra paginilor ce pot accesate dintro ret ea local a (de exemplu, pentru a restrict iona accesul angajat ilor la saituri nelegate de activitatea lor normal a). In acest caz, se congureaz a un proxy n care se congureaz a toate restrict iile de acces dorite. Apoi, pentru a mpiedica accesul direct, prin evitarea proxy -ului, pe ruterul ce leag a ret eaua intern a la Internet se congureaz a un ltru de pachete ( 10.7.1) care s a blocheze pachetele adresate portului TCP 80 al serverelor exterioare. O diferent a ntre protocolul de comunicat ie dintre un client si un proxy fat a de protocolul client-server este c a, dup a o cerere (de exemplu, GET), la protocolul client-server urmeaz a calea local a din URL, iar la protocolul client-proxy urmeaz a URL-ul solicitat (inclusiv numele protocolului si numele serverului). O a doua diferent a este dat a de existent a unei cereri, CONNECT, ce poate adresat a doar unui proxy. La primirea unei cereri CONNECT, proxy ul deschide o conexiune c atre serverul specicat n comanda CONNECT si apoi retrimite datele dinspre client direct spre server si, reciproc, dinspre server napoi spre client. In cazul unei cereri CONNECT, proxy -ul nu se implic a mai departe n comunicat ia dintre client si server. Ca urmare, n acest caz proxy -ul nu mai memoreaz a paginile aduse si nu permite ltrarea cererilor dec at dup a serverul si portul la care se conecteaz a, n schimb permite tunelarea oric arui protocol (nu numai a protocolului HTTP) ntre un client dintr-o ret ea cu adrese interne si un server din Internet. 11.3.2.5. Conexiuni securizate: SSL/TLS SSL Secure Sockets Layer , rom. nivelul conexiunilor securizate este un protocol pentru securizarea conexiunilor. A fost creat de rma Netscape n vederea securiz arii comunicat iei ntre clientul si serverul HTTP. Protocolul este ns a sucient de exibil pentru a permite oric arei aplicat ii ce comunic a prin conexiuni s a-l foloseasc a. TLS [RFC 4346, 2006] Transport Layer Security, rom. securitate la nivel transport este derivat din SSL versiunea 3, dar dezvoltat de IETF (Internet Engineering Task Force). In cele ce
urmeaz a, vom discuta doar despre TLS, ns a toate chestiunile prezentate sunt valabile si pentru SSL. Protocolul TLS presupune existent a unei leg aturi nesecurizate ntre un client (entitatea care init iaz a activ comunicat ia) si un server (entitatea care a steapt a s a e contactat a de c atre client). Leg atura nesecurizat a este, n mod obi snuit, o conexiune TCP. Protocolul TLS ofer a un serviciu de tip conexiune. TLS asigur a condent ialitatea si autenticitatea datelor utile transportate. Datele utile transportate de TLS pot apart ine oric arui protocol. Protocolul ale c arui date sunt transportate ca date utile de c atre TLS este numit tunelat prin TLS. In cadrul init ierii unei conexiuni TLS, se realizeaz a stabilirea unei chei de sesiune care este utilizat a n continuare pentru securizarea transportului datelor utile. Autenticarea stabilirii cheii poate unilateral a, doar clientul autentic and serverul cu care a realizat negocierea cheii de sesiune, sau bilateral a. In cazul autentic arii unilaterale, se poate utiliza o autenticare a clientului fat a de server n cadrul protocolului tunelat. In acest caz, deoarece serverul este deja autenticat, autenticarea clientului poate f acut a prin parol a, f ar a riscul ca parola s a e transmis a unui adversar. Autenticarea stabilirii cheii de sesiune se face printr-un mecanism de semn atur a digital a. Pentru distribuirea sigur a a cheilor publice, utilizate n cadrul autentic arii, se utilizeaz a certicate ( 6.3.4). Serverul trebuie s a aib a o pereche de chei pentru semn atur a digital a si un certicat, semnat de o autoritate n care clientul are ncredere, pentru cheia public a. La init ierea conexiunii TLS, serverul transmite clientului certicatul s au Clientul veric a faptul c a numele din certicat coincide cu numele serverului la care dorea conectarea, c a semn atura autorit a tii de certicare asupra certicatului este valid a, c a autoritatea de certicare este de ncredere si, n nal, utilizeaz a cheia public a din certicatul clientului pentru a autentica stabilirea cheii de sesiune. Dac a se dore ste si autenticarea clientului fat a de server tot prin TLS, atunci clientul trebuie s a aib a, la r andul s au, o pereche de chei si un certicat. In vederea veric arii semn aturii din certicat si a faptului c a semnatarul (autoritatea de certicare) este de ncredere, ecare dintre parteneri trebuie s a aib a o list a cu cheile autorit a tilor de certicare de ncredere. Cheia unei autorit a ti de certicare este, n mod obi snuit, plasat a tot ntr-un certicat. Certicatul unei autorit a ti de certicare poate semnat de c atre o alt a autoritate de certicare sau chiar de c atre autoritatea posesoare a certicatului. In acest din urm a caz, certicatul se nume ste certicat autosemnat
(engl. self-signed certicate ) sau certicat r ad acin a (engl. root certicate ). In majoritatea cazurilor, clientul are o mult ime de certicate autosemnate ale autorit a tilor n care are ncredere. Exist a mai multe produse soft pentru crearea perechilor de chei si pentru crearea si semnarea certicatelor. Un astfel de produs este OpenSSL, disponibil pe sistemele de tip UNIX. 11.3.2.6. Utilizarea TLS pentru web Transferul securizat al paginilor web se realizeaz a prin tunelarea protocolului HTTP peste SSL sau TLS. Construct ia realizat a se nume ste HTTPS. URL-urile resurselor accesibile prin conexiuni securizate au, ca nume al protocolului, sirul de caractere https ( n loc de http). Un navigator web care are de adus o pagin a a c arei URL are, n partea de protocol, https, execut a urm atoarele: Afar a de cazul n care URL-ul specic a explicit un num ar de port, clientul deschide conexiunea c atre portul 443 al serverului ( n loc de portul 80, implicit pentru HTTP). Dac a, n locul contact arii directe a serverului web, se utilizeaz a un proxy, clientul trimite serverului proxy o cerere CONNECT pentru stabilirea conexiunii spre server. Prin aceast a conexiune, stabilit a prin intermediul proxy -ului, se transmit mesajele SSL sau TLS, n cadrul c arora se transmit datele HTTP. La deschiderea conexiunii (e conexiune TCP direct a, e un lant de conexiuni TCP prin intermediul proxy -ului), are loc mai nt ai schimbul de mesaje legat de stabilirea cheii SSL sau TLS. Dup a init ializarea conexiunii securizate, prin canalul securizat are loc un dialog conform protocolului HTTP. Cu alte cuvinte, cererile si r aspunsurile HTTP constituie date utile pentru nivelul SSL sau TLS. Autenticarea serverului, n cadrul protocolului TLS, necesit a, a sa cum am v azut, ca navigatorul web s a dispun a de certicatele autorit a tilor de certicare de ncredere. In general, produc atorii de navigatoare ncorporeaz a n acestea ni ste certicate, ale unor autorit a ti de certicare larg recunoscute. Utilizatorul poate ns a s a dezactiveze oricare dintre aceste certicate, precum si s a adauge alte certicate. Atragem atent ia asupra unor particularit a ti legate de utilizarea HTTPS: Deoarece autenticarea serverului, prin mecanismul TLS, se face naintea trimiterii cererii HTTP, certicatul trimis de server nu poate depinde de antetul Host transmis de c atre client. Ca urmare, dac a mai multe
saituri web securizate sunt g azduite de un acela si calculator, este necesar ca aceste saituri s a e distinse prin adresa IP sau prin num arul de port. In cazul n care s-ar utiliza doar antetul Host pentru ca serverul s a determine saitul cerut de client, serverul ar trimite acela si certicat indiferent de saitul dorit de client. Ca urmare, ar exista o nepotrivire ntre numele din certicat si numele saitului solicitat de client. In consecint a, clientul ar declara saitul ca ind unul fals. O pagin a web este format a, n mod obi snuit, din mai multe obiecte, cu URL-uri diferite (pagina HTML propriu-zis a si imaginile din pagin a). In aceste condit ii, este posibil ca, ntr-o aceea si pagin a, unele dintre elemente s a e securizate si celelalte elemente s a e nesecurizate. De asemenea, este posibil ca diferite elemente s a provin a de pe saituri diferite, autenticate prin certicate diferite. Intr-un astfel de caz, navigatorul web trebuie s a avertizeze utilizatorul.
11.4. PGP/GPG
Preety Good Privacy (PGP) este un program pentru criptarea si semnarea digital a a mesajelor de po st a electronic a si a sierelor n general. Gnu Privacy Guard, abreviat GPG sau GnuPG, este o reimplementare a PGP, cu statut de soft liber. Prezent am n continuare principalele concepte legate de construct ia si funct ionarea GnuPG.
A sarea cheilor secrete se face prin comanda gpg --list-secret-keys 11.4.1.1. Chei primare si subchei Cheile GnuPG sunt de dou a tipuri: chei primare si subchei. O cheie primar a (de fapt, o pereche primar a de chei) este ntotdeauna o pereche de chei pentru semn atur a digital a. O subcheie (de fapt, sub-pereche de chei) este subordonat a unei anumite perechi primare. Fiecare subcheie poate cheie de criptare sau cheie de semn atur a. Fiecare utilizator are o cheie primar a si, subordonate acesteia, zero sau mai multe subchei. In modul cel mai simplu de lucru, ecare utilizator GnuPG are asociate, dou a perechi de chei: o pereche primar a de chei pentru semn atur a digital a si o sub-pereche de chei pentru criptare asimetric a. Perechea de chei de criptare este folosit a pentru a trimite mesaje secrete posesorului perechii de chei. Perechea de chei de semn atur a este folosit a atunci c and posesorul trimite mesaje semnate. Fiecare cheie public a are asociat a a sa-numita amprent a a cheii (engl. key ngerprint ). Aceasta este un sir de bit i, calculat i, printr-o funct ie de dispersie criptograc a, din cheia public a respectiv a. Pentru a ne putea referi la o pereche de chei, ecare pereche de chei (e ea primar a sau subcheie) are asociate doi identicatori de cheie (engl. key ID ): Identicatorul lung (engl. long key ID ) este format din 16 cifre hexa. S ansele ca dou a chei distincte s a aib a acela si identicator lung sunt extrem de mici, astfel nc at identicatorul lung este sucient pentru a identica unic orice cheie. Totu si, identicatorul lung nu este utilizabil, n locul amprentei cheii, pentru vericarea autenticit a tii acesteia. Identicatorul scurt (engl. short key ID ) este format din ultimele 8 cifre hexa ale identicatorului lung. Dac a, ntr-un anumit context, nu exist a dou a chei cu acela si identicator scurt, el poate folosit pentru a ne referi la o cheie. Identicatorul unei perechi de chei este calculat, printr-o funct ie de dispersie, din cheia public a din pereche. Identicatorii scurt i ai cheilor pot listat i prin comanda
gpg --list-keys
Amprenta unei chei primare se poate aa prin comanda gpg --fingerprint id-cheie unde id-cheie este e identicatorul scurt sau lung al cheii primare sau al unei subchei subordonate acesteia, e numele real, adresa de po st a electronic a sau numele complet al proprietarului cheii. 11.4.1.2. Utilizatori si identit a ti Fiec arei chei primare i este asociat a una sau mai multe identit a ti. Fiecare identitate este un nume complet de utilizator, format din trei componente: numele real (numele si prenumele persoanei), adresa de po st a elec tronic a si, opt ional, un comentariu. In scrierea numelui complet, adresa de po st a electronic a se scrie ntre semne mai mic si mai mare, iar comentariul se scrie ntre paranteze. Exemple:
Ion Popescu <ion@example.com> Gheorghe Ionescu (Presedinte ONG) <gion@ong.example.com>
Este posibil ca o cheie primar a s a aib a asociate mai multe identit a ti. Acest lucru este util dac a un utilizator are mai multe adrese de po st a electronic a si dore ste asocierea tuturor acestora cu aceea si cheie. Reciproc, un acela si nume complet poate asociat mai multor chei primare. Acest lucru se nt ampl a deoarece nu poate nimeni s a mpiedice doi utilizatori s a genereze dou a chei si s a le asocieze acela si nume complet. Mai mult, aceast a posibilitate este utilizat a frecvent n situat ia n care cheia primar a a unui utilizator expir a sau este revocat a. In aceast a situat ie, utilizatorul poate crea o nou a cheie primar a c areia s a-i asocieze acela si nume complet. 11.4.1.3. Generarea si modicarea cheilor Generarea unei chei primare se face cu comanda
gpg --gen-key
Comanda este interactiv a, solicit and utilizatorului urm atoarele informat ii: tipul cheilor generate si dimensiunea acestora, durata de valabilitate a cheilor, numele complet al utilizatorului si parola utilizat a pentru criptarea cheii secrete. Comanda genereaz a o pereche primar a de chei (de semn atur a) si i asociaz a o identitate. Opt ional, comanda poate genera si o sub-pereche de
chei de criptare, subordonat a perechii primare. Ulterior, se pot ad auga noi subchei si identit a ti sau se pot sterge subcheile si identit a tile asociate. La generarea cheilor, GnuPG a seaz a amprenta a cheii primare generate. Este bine ca utilizatorul s a noteze amprenta cheii generate. Acest lucru este util la transmiterea cheii publice c atre partenerii de comunicat ie. Pentru o cheie primar a dat a, proprietarul ei poate crea ( si, eventual, sterge) subchei. Pentru acestea, se lanseaz a comanda gpg --edit-key cheie La lansarea acestei comenzi, gpg a steapt a, de la utilizatori, subcomenzi pentru modicarea unor date privitoare la cheia primar a identicat a prin parametrul cheie. Terminarea seriei de subcomenzi se face d and, mai nt ai, subcomanda save pentru a memora efectiv modic arile efectuate, urmat a de subcomanda quit. Crearea unei noi subchei se face cu subcomanda addkey. Subcheia creat a poate o cheie de criptare sau o cheie de semn atur a. La stergerea unei subchei se utilizeaz a subcomenzile key si delkey. S tergerea unei subchei este util a doar dac a subcheia nu a fost nc a transmis a nim anui. Nu exist a o metod a simpl a de a propaga stergerea asupra c opiilor subcheii respective. Ca urmare, dac a proprietarul dore ste ca o subcheie, deja transmis a partenerilor s ai, s a nu mai e utilizat a, solut ia este revocarea subcheii si nu stergerea ei. Pentru a ad auga, sterge sau revoca o identitate asociat a unei chei, se lanseaz a comanda gpg --edit-key cheie si apoi se utilizeaz a subcomenzile: adduid, uid, deluid, revuid, primary. Dup a modicarea identit a tilor asociate unei chei primare, este necesar a retransmiterea cheii spre partenerii de comunicat ie (vezi 11.4.2.1). 11.4.1.4. Controlul perioadei de valabilitate a cheilor Valabilitatea unei chei sau subchei este controlat a pe dou a c ai: prin xarea unei perioade de valabilitate, dup a expirarea c areia cheia nu mai este valid a, si prin revocarea cheii. Controlul valabilit a tii unei chei este necesar pentru a pre nt ampina utilizarea unei chei publice n cazul n care cheia secret a corespunz atoare a fost aat a de o persoan a neautorizat a. Perioada de valabilitate a unei chei sau subchei se xeaz a la generarea acesteia. Ulterior, perioada de valabilitate poate modicat a cu comanda gpg --edit-key cheie
cu subcomenzile key si expire. Pentru revocarea unei chei primare, se creaz a un certicat de revocare, semnat de proprietarul cheii primare. Certicatul de revocare se transmite apoi partenerilor de comunicat ie. Generarea certicatului de revocare se face prin comanda gpg -a -o sier --edit-key cheie Certicatul de revocare este scris n sierul cu nume sier. Pentru ca revocarea s a aib a efect, certicatul de revocare trebuie importat prin comanda gpg --import sier Odat a importat un certicat de revocare pentru o cheie primar a, semn aturile create cu acea cheie primar a sau cu o subcheie a acesteia sunt considerate invalide si, n general, la orice utilizare a acelei chei sau a unei subchei gpg d a un avertisment. De asemenea, atunci c and acea cheie primar a este transmis a spre alt i utilizatori (vezi 11.4.2.1), certicatul de revocare este transmis mpreun a cu cheia revocat a. Ca utilizare recomandabil a, este bine ca, la crearea unei chei primare, proprietarul ei s a genereze imediat un certicat de revocare pe care s a-l tin a ntr-un loc sigur. In cazul n care pierde cheia sau b anuie ste c a acea cheie secret a a fost aat a de un adversar, proprietarul transmite partenerilor s ai certicatul de revocare. Inainte de revocare, certicatul de revocare trebuie s a nu poat a citit de nimeni; n caz contrar, un adversar care obtine certicatul de revocare poate provoca nepl aceri proprietarului revoc andu-i cheia. Revocarea unei subchei const a n ad augarea la subcheie a unui marcaj, semnat de proprietarul subcheii, prin care se anunt a c a acea subcheie trebuie s a nu mai e utilizat a. O subcheie revocat a este tratat a similar cu o subcheie sau cheie expirat a: dac a se ncearc a utilizarea ei, gpg d a un mesaj de avertisment. Revocarea unei subchei se face cu ajutorul comenzii gpg --edit-key cheie cu subcomenzile key si revkey. De notat c a, dup a revocarea sau schimbarea perioadei de valabilitate a unei subchei, subcheia modicat a trebuie s a ajung a la partenerii proprietarului cheii (vezi 11.4.2.1).
11.4.1.5. Gestiunea cheilor secrete GnuPG plaseaz a cheile secrete ntr-un sier gestionat de GnuPG. Acest sier este creat cu drepturi de citire ( n sistemul de operare) doar pentru utilizatorul curent. Cheile sunt, n mod normal, criptate cu o parol a dat a de utilizator. Parola de criptare poate schimbat a cu comanda gpg --edit-key cheie subcomanda passwd. Cheile secrete pot exportate, prin comanda gpg -a -o sier --export-secret-keys cheie Aceast a comand a export a cheia secret a primar a identicat a prin parametrul cheie, precum si subcheile sale secrete. Cheile secrete pot importate prin comanda gpg --import sier Acest lucru este util dac a utilizatorul lucreaz a pe mai multe calculatoare si dore ste s a utilizeze aceea si chei pe mai multe calculatoare. Cheia secret a este exportat a n forma criptat a. Exist a posibilitatea de-a exporta doar subcheile secrete ale unei chei primare. Acest lucru se face prin comanda gpg -a -o sier --export-secret-subkeys cheie Cu ajutorul acestei comenzi, un utilizator poate tine cheia primar a secret a pe un calculator sigur si poate transmite subcheile secrete c atre un calculator mai put in sigur pe care l utilizeaz a frecvent. In acest mod, el poate utiliza calculatorul mai nesigur pentru transmite mesaje semnate si primi mesaje criptate utiliz and subcheile, f ar a ns a a risca compromiterea cheii primare n cazul n care cineva ar sparge acel calculator. Pentru o astfel de utilizare, subcheile se creaz a cu durat a de valabilitate scurt a si se revoc a la nevoie. Cheia primar a este bine s a aib a durat a lung a de utilizare pentru a benecia de semn aturile obt inute de la alt i utilizatori asupra ei (vezi 11.4.2.2).
Transmiterea acestor obiecte de la un utilizator la altul se poate face prin dou a metode: prin siere (transmise, de exemplu, prin po st a electronic a sau prin web); prin servere de chei. La transmiterea prin siere, un utilizator export a una sau mai multe chei primare, mpreun a cu identit a tile, semn aturile, subcheile si certicatele de revocare asociate acelor chei primare, ntr-un sier. Cel alalt utilizator prime ste sierul (transmis prin po st a electronic a, web, pe o dischet a sau prin alte mijloace) si i import a cont inutul n GnuPG-ul local. Exportul unei chei publice primare, mpreun a cu toate identit a tile, subcheile publice, semn aturile si certicatele de revocare asociate, se face prin comanda gpg -a -o sier --export cheie unde parametrul cheie este identicatorul cheii sau a uneia dintre subchei sau numele utilizatorului c areia i apart ine, iar parametrul sier reprezint a sierul n care se vor scrie datele. Parametrul cheie poate lipsi sau poate s a nu identice o unic a cheie primar a; n acest caz, toate cheile primare respective sunt exportate. Importarea unei chei dintr-un sier se face prin comanda gpg --import sier Prin operat ia de import, cheile si celelalte obiecte din sierul importat sunt ad augate celor locale sau, eventual, le modic a pe acestea. Niciodat a ns a nu sunt sterse obiecte locale pe motiv c a nu se reg asesc n sierul importat. Din acest motiv, stergerea unei chei primare, subchei, identit a ti sau semn aturi nu poate transmis a asupra partenerilor de comunicat ie. Invalidarea unei chei, identit a ti sau semn aturi se poate face doar prin revocarea acesteia si apoi transmiterea certicatului de revocare. La transmiterea prin servere de chei, primul utilizator ncarc a, pe un server de chei, cheile si celelalte obiecte de transmis, iar cel alalt utilizator le descarc a de pe serverul de chei. Transmiterea unei chei primare si a obiectelor asociate c atre un server de chei se face prin comanda gpg --keyserver server --send-key cheie Desc arcarea unei chei si a obiectelor asociate de pe un server de chei se face prin comanda gpg --keyserver server --recv-key cheie
unde cheie este identicatorul unei chei (nu poate numele posesorului cheii). Aarea identicatorului cheii unui utilizator se poate face prin comanda gpg --keyserver server --search-key nume-utilizator Este important de notat c a, implicit, GnuPG nu consider a o cheie proasp at importat a ca ind autentic a. La utilizarea unei chei publice a c arei autenticitate nu a putut vericat a, GnuPG d a un mesaj de avertizare. Vericarea autenticit a tii este descris a n paragraful urm ator. 11.4.2.2. Vericarea autenticit a tii cheilor GnuPG veric a automat, nainte de utilizarea unei chei publice, autenticitatea acesteia. Autenticitatea cheilor se veric a cu ajutorul certicatelor (vezi 6.3.4). In terminologia GnuPG, un certicat este numit semn atur a asupra unei chei. O sub-cheie este n mod normal semnat a cu cheia primar a c areia i este subordonat a. O sub-cheie a c arei semn atur a este valid a este considerat a autentic a dac a si numai dac a cheia primar a coresunz atoare este considerat a autentic a. In consecint a, dac a se import a noi sub-chei pentru o cheie primar a declarat a autentic a, sub-cheile respective sunt imediat considerate autentice. Restul paragrafului de fat a trateaz a doar cheile primare. Reamintim c a o cheie primar a este ntotdeauna o cheie de semn atur a. O cheie public a pentru care GnuPG dispune de cheia secret a corespunz atoare este automat considerat a autentic a. De asemenea, este considerat a autentic a orice cheie specicat a printr-o opt iune --trusted-key cheie e la execut ia comenzii gpg, e n sierul cu opt iunile implicite. In afara acestor dou a cazuri, GnuPG consider a o cheie autentic a numai dac a dispune de un certicat valid pentru ea si mai sunt ndeplinite urm atoarele condit ii: cheia cu care este semnat certicatul este deja declarat a ca autentic a, semnatatul certicatului este considerat de ncredere. GnuPG ret ine, asociate ec arei chei primare, dou a informat ii (independente una de alta): dac a autenticitatea ei este vericat a sau nu ; nivelul de ncredere, acordat de utilizatorul care execut a gpg, proprietarului acelei chei.
Un utilizator poate acorda proprietarului unei chei: ncredere deplin a (full trusting ) semn atura acelui utilizator asupra unei identit a ti este sucient a pentru ca acea identitate s a e considerat a vericat a; ncredere minimal a (marginally trusting ) o identitate semnat a doar de utilizatori de ncredere minimal a s a e considerat a vericat a este necesar un anumit num ar de astfel de semn aturi (implicit 3). zero ncredere (no trusting ) semn atura unui astfel de utilizator nu este luat a n considerare. Nivelul de ncredere acordat proprietarului unei chei este implicit zero. El poate modicat cu comanda gpg --edit-key cheie si subcomanda trust a acesteia. Implicit, GnuPG are ncredere deplin a n proprietarul unei chei pentru care dispune de cheia secret a corespunz atoare (altfel spus, n utilizatorul care lanseaz a comanda gpg), precum si n proprietarii cheilor specicate prin opt iunea --trusted-key. Crearea, de c atre utilizatorul ce execut a gpg, a unei semn aturi asupra unei identit a ti asociate unei chei se face prin comanda gpg --sign-key cheie sau gpg --lsign-key cheie In cazul primeia dintre comenzi, semn atura poate transmis a si altor utilizatori GnuPG (vezi 11.4.2.1). A doua comand a creaz a o semn atur a pentru uz local. Este esent ial, pentru securitatea sistemului, ca un utilizator s a nu semneze un set de chei f ar a s a-i verice mai nt ai autenticitatea. Autenticitatea setului de chei se poate asigura n dou a moduri: Fi sierul din care se import a setul de chei este adus pe o cale sigur a, de exemplu printr-o dischet a dat a personal de c atre proprietarul cheii sau este desc arcat de pe un sait web securizat (https ) si de ncredere. Int ai, amprenta cheii primare este transmis a pe o cale sigur a, de exemplu pe un bilet scris de c atre proprietarul cheii sau printr-o convorbire telefonic a cu proprietarul cheii. Apoi, la importarea si semnarea setului de chei, utilizatorul veric a amprenta cheii primare din set.
si vericarea semn aturii se face exact ca n cazul unui mesaj criptat si semnat, adic a prin comanda: gpg -o s-ie sire --decrypt s-intrare Semn atura deta sat a se genereaz a prin comanda gpg -a -o s-sign --detach-sign s-date Rezultatul comenzii este scrierea n sierul s-sign a semn aturii cont inutului sierului s-date. Fi sierul produs, s-sign, este mic si cont ine doar semn atura; datele utile nu pot recuperate din el. Vericarea semn aturii se face prin comanda: gpg --verify s-sign s-date Semn atura deta sat a este util a deoarece p astreaz a intact sierul de date, neind nevoie de gpg pentru recuperarea datelor. De asemenea, permite mai multor utilizatori s a semneze un acela si sier de date. In ne, semn atura n clar se poate utiliza doar dac a datele sunt text ASCII. Semn atura se genereaz a prin comanda: gpg -o s-ie sire --clearsing s-intrare Fi sierul astfel produs este un sier text, care poate citit u sor de c atre utilizatorul uman. Textul original este pus ntre ni ste marcaje, iar semn atura este ad augat a la sf ar sit. Vericarea semn aturii se face prin comanda: gpg --verify s Semn atura n clar este util a pentru semnarea documentelor text. Acestea r am an u sor de citit de c atre om si, spre deosebire de semn atura deta sat a, datele utile si semn atura sunt puse ntr-un singur sier. Dac a GnuPG are mai multe chei secrete (inclusiv subchei, 11.4.1.1) utilizabile pentru semn atur a, se poate specica ce cheie trebuie utilizat a pentru crearea semn aturii. Specicarea cheii se face ad aug and opt iunea -u cheie GnuPG se utilizeaz a curent pentru autenticarea softului liber. In acest scop, al aturi de programul distribuit, se distribuie un sier ce cont ine semn atura deta sat a a sierului ce cont ine programul.
Bibliograe
[Boian 1999] Florian Mircea Boian. Programarea distribuit a n Internet. Editura Albastr a, 1999. [Cohen 1980] Danny Cohen. On holy wars and a plea for peace, 1980. http://www.ietf.org/rfc/ien/ien137.txt. nzaru, O. Lipovan, M. Neagu, [Crstici et al. 1981] B. Crstici, T Ba N. Neamt u, N. Neuhaus, B. Rendi, D. Rendi, I Sturz. Matematici speciale. Editura didactic a si pedagogic a, Bucure sti, 1981. [Howard & LeBlanc 2003] Michael Howard, David LeBlanc. Writing secure code. Microsoft Press, 2003. [IANA, ] http://www.iana.org. [IEEE 802.11, 1999] IEEE Computer Society. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, 1999. [IEEE 802.11F, 2003] IEEE Computer Society. 802.11FTM IEEE Trial-Use Recommended Practice for Multi-Vendor Access Point Interoperability via an Inter-Access Point Protocol Across Distribution Systems Supporting IEEE 802.11TM Operation, 2003. [IEEE 802.11i, 2004] IEEE Computer Society. 802.11iTM Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, Amendment 6: Medium Access Control (MAC) Security Enhancements, 2004. [IEEE 802.1D, 2004] IEEE Computer Society. Media Access Control (MAC) Bridges, 2004.
[IEEE 802.1Q, 2003] IEEE Computer Society. 802.1QTM . IEEE Standards for Local and metropolitan area networks: Virtual Bridged Local Area Networks, 2003. [IEEE 802.1X, 2001] IEEE Computer Society. 802.1XTM . Port-Based Network Access Control, 2001. [IEEE 802.3, 2005] IEEE Computer Society. Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specications, 2005. [Kurose & Ross 2003] James F. Kurose, Keith W. Ross. Computer networking A top-down approach featuring the Internet. AddisonWesley, 2003. [Menezed et al. 1997] A. Menezed, P. van Oorschot, S. Vanstone. Handbook of Applied Cryptography. CRC Press, 1997. [Nicolau 1987] Edmond Nicolau. Radiotehnica. Manualul inginerului electronist. Editura tehnic a, Bucure sti, 1987. [Prasad 2003] K.V. Prasad. Principles of Digital Communication Systems and Computer Networks. Charles River Media, 2003. [RFC 1034, 1987] Domain names concepts and facilities, 1987. [RFC 1035, 1987] Domain names implementation and specication, 1987. [RFC 1149, 1990] A Standard for the Transmission of IP Datagrams on Avian Carriers, 1990. [RFC 1323, 1992] TCP Extensions for High Performance, 1992. [RFC 1518, 1993] 1993. An Architecture for IP Address Allocation with CIDR,
[RFC 1661, 1994] The Point-to-Point Protocol (PPP), 1994. [RFC 1700, 1994] Assigned numbers, 1994. [RFC 1918, 1996] Address Allocation for Private Internets, 1996. [RFC 1981, 1996] Path MTU Discovery for IP version 6, 1996. [RFC 1995, 1996] Icremental Zone Transfer in DNS, 1996.
[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.
[RFC 793, 1981] Transmission Control Protocol DARPA Internet Program Protocol Specication, 1981. [RFC 822, 1982] Standard for the format of ARPA Internet text messages, 1982. [Rogaway 1995] P. Rogaway. Problems with Proposed IP Cryptography, 1995. http://www.cs.ucdavis.edu/~rogaway/papers/ draft-rogaway-ipsec-commen% ts-00.txt. [S/MIME, ] S/MIME Mail Security (smime). http://www.ietf.org/html.charters/smime-charter.html. taru. Teoria transmisiunii informat [Sp ataru 1965] Al. Spa iei. Editura Tehnic a, Bucure sti, 1965. [Stevens 1994] Richard Stevens. TCP-IP illustrated. Addison-Wesley, 1994. [Tanenbaum 1995] Andrew S. Tanenbaum. Distributed Operating Systems. Prentice Hall, 1995. [Tanenbaum 2003] Andrew S> Tanenbaum. Ret ele de calculatoare. Byblos, 2003.
Index
Speciale 0.0.0.0, 303, 341 0.0.0.0/8, 303 10 Base T, 268 10.0.0.0/8, 303, 349 100 Base Tx, 271 1000 Base T, 272 127.0.0.0/8, 303 127.0.0.1, 303 172.16.0.0/12, 303, 349 192.168.0.0/16, 303, 349 224.0.0.0/4, 303 240.0.0.0/4, 303 A access point, 286 ACK, Vezi conrmare acknowledge, Vezi conrmare ad hoc (wireless), Vezi IBSS adres a zic a, 98, 266 Internet, 294, 297, 300 IP, Vezi adres a, Internet MAC, 98, Vezi adres a zic a, 340 privat a, 303, 348, 349 de ret ,ea, 119 n subret ,ea, 297 unei subret ,ele, 302 translat ie , 349 , adversar, O entitate care intercepteaz a sau modic a mesajele schimbate ntre alte dou a entit at ,i, cu scopul obt ,inerii sau modic arii informat ,iei transmise. Vezi pg. 149
activ, Un adversar care intercepteaz a s a dup a voie mesajele ,i modic schimbate ntre dou a entit at ,i. Vezi pg. 149 pasiv, Un adversar care intercepteaz a doar comunicat ar a a o modi,ia, f ca. Vezi pg. 149 agent de autenticare, 380 Aloha, 100 AM, Vezi modulat ,ie de amplitudine anten a, 78 anycast, 17 AP, Vezi access point ARP, 340 atenuare, 61 factor de, Raportul ntre puterea semnalului m asurat la bornele emit atorului s , ,i puterea semnalului m asurat la bornele receptorului. Vezi pg. 61 AUI, 278 autenticare entitate, 150 mesaj, 149 surs a, 150 B B, Vezi bel band a lateral a, 70 l at ,a dintre frecvent ,a ,ime de, Diferent maxim a s a a ,i frecvent ,a minim benzii de trecere. Prin abuz
407
Index: HTTPSnetwork
mail transfer agent, 355, 364 user agent, 355 managed (wireless), Vezi infrastructur a masc a de ret ,ea, 302 master DNS, 337 mediu de transmisie, Dispozitiv capabil s a transmit a la distant a o act , ,iune zic a de la emit ator la receptor. , Vezi pg. 59 mesaj, 27 microunde, 77 MIME, 360 mod de propagare (bre optice), 91 modulat ,ie, 68 de amplitudine, 69 n cuadratur a, 70 de faz a, 70 de frecvent a, 70 , MTA, Vezi mail transfer agent, 367 MUA, Vezi mail user agent multicast, Vezi difuziune selectiv a multimod (bra optic a), Vezi br a multimod multiplexare n frecvent a, Procedeu prin care mai , multe comunicat ,ii simultane pot partaja acelas ,i mediu zic prin transmiterea semnalelor corespunz atoare comunicat ,iilor prin modulat and frecvent ,ie utiliz ,e purt atoare diferite. n lungimea de und a, Procedeu de multiplexare n care mai multe semnale optice utiliz and lungimi de und a diferite sunt transmise prin aceeas a optic a. Vezi pg. 93 ,i br n timp, 117 MX, 367, 369 N NAT, Vezi adres a, translat ,ie nerepudiabilitate, 149 network
409
prospet ,ime vericare, Vezi vericare prospet ,ime protocol, 16, 22 punct la punct, 16 purt atoare, Vezi frecvent a, purt atoare , R raport semnal/zgomot, 62 receptor, 25, 59 redundant a, 42 , regul a de dirijare, 298 reliable transmission, Vezi transmisie sigur a repeater, Vezi repetor repetor, 266 reprezentare a informat ,iei, 25 request to send, 288 ret ,ea privat a, 348 RJ45, 269 round-trip time, Vezi timp dus- ntors router, Vezi nod intermediar RTS, Vezi request to send RTT, Vezi timp dus- ntors rut a, 119 ruter, Vezi nod intermediar S securizare, 149 semi-duplex, 97 semnal, M arimea zic a ce m asoar a act ,iunea produs a de emit ator s a de , ,i transmis c atre mediu p an a la receptor s ,i care este utilizat a efectiv ca purt atoare a informat ,iei. Vezi pg. 25, 59 modulat, 69 sinusoidal, 63 simbol de cod, 26 slave DNS, 337 SMTP, 355, 364 socket, 233 spectru, 64 spoong, 346 blind, 326
Index: SSHzona
uint32 t, 255 und a electromagnetic a, 77 lungime de, 77 radio, 77 unicast, 16 unshielded twisted pairs, Vezi pereche torsadat a neecranat a UTP, Vezi perechi torsadate neecranate V vecin, 119 vector de init ,ializare, 154 vericare integritate, Vezi integritate, vericare prospet ,ime, 150 VLAN, 283 VLAN-ID, 283 W wavelength division multiplexing, Vezi multiplexare n lungimea de und a WDM, Vezi multiplexare n lungimea de und a window manager, 382 Z zgomot, Modicare nedeterminist a a semnalului recept a de cel emis. ,ionat fat , Pentru comparat ,ie, vezi s ,i distorsiune. Vezi pg. 62 zon a DNS, 335