Documente Academic
Documente Profesional
Documente Cultură
Retele
Retele
Principii
Radu-Lucian Lupa s
Aceasta este editia electronic a crtii Retele de calculatoare, publicat la a a a Casa Crtii de Stiint, 2008, ISBN: 978-973-133-377-9. a a n Drepturile de autor apartin subsemnatului, Radu-Lucian Lupa. s Subsemnatul, Radu-Lucian Lupa, acord oricui dorete dreptul de a copia s s continutul acestei crti, integral sau partial, cu conditia atribuirii corecte autorului i a s a pstrrii acestei notite. a a Cartea poate descrcat gratuit de la adresa a a http://www.cs.ubbcluj.ro/~rlupsa/works/retele.pdf
Cuprins
Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de retea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei retele de calculatoare . . . . . . . . . . 1.3 Premise generale elaborarea i implementarea protocoalelor retele n s n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notiuni de teoria informatiei 2.1 Problema codicrii informatiei pentru un canal discret . . a 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a codurilor prex . . . . . a 2.2.2 Decodicarea cazul codurilor prex . . . . . . . . . n 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informatie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia ierelor . . . . . . . . . . . . . . . . . . . s 2.4 Coduri detectoare i corectoare de erori . . . . . . . . . . . s 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare i corectoare de erori . s 2.4.3 Cteva coduri detectoare sau corectoare de erori . . . a 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii i coloane . . . . . . . . . . . . . s 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare i corectoare de erori alte domenii s n 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Protocoale
Cuprins 7 Codicri de interes practic a 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezentri pe biti . . . . . . . . . . . . . . . . . . . . . . a 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 Siruri de biti . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe biti a numerelor ntregi . . . . . . . 7.1.2 Reprezentri pe octeti . . . . . . . . . . . . . . . . . . . . . a 7.1.2.1 Octeti . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 Siruri de octeti . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un numr a ntreg de octeti 7.1.2.4 Reprezentarea numerelor pe un ir arbitar de biti . . . s 7.1.3 Probleme privind reprezentarea lungimii irurilor . . . . . . s 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
Retele IEEE 802 9.1 Retele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Legturi punct la punct prin perechi de conductoare a 9.1.2 Legturi prin bre optice . . . . . . . . . . . . . . . a 9.1.3 Legturi prin cablu magistral . . . . . . . . . . . . a a 9.1.4 Repetoarele i comutatoarele . . . . . . . . . . . . . s 9.1.5 Dirijarea efectuat de comutatoare (switch-uri) . . . a 9.1.6 Faciliti avansate ale switch-urilor . . . . . . . . . . at 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz de adrese MAC . . . . . . . . a 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Legturi redundante . . . . . . . . . . . . . . . a 9.1.6.5 Retele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei retele . . . . . 9.2 Retele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura retelei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea retelelor 802.11 . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
10 Internetul 10.1 Arhitectura retelei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirijrii pachetelor IP . . . . . . . . a 10.2.2.1 Subretele i interfete . . . . . . . . . . s 10.2.2.2 Prexul de retea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor i prexelor . . s 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de retea . . . . . . . 10.2.4 Alocarea adreselor IP i prexelor de retea s 10.2.4.1 Alocarea pe utilizri . . . . . . . . . . a 10.2.4.2 Alocarea adreselor i dirijarea ierarhic s a
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Prefat a
contextul prezent al dezvoltrii retelelor de calculatoare, este inutil In a s mai subliniem importanta acestui domeniu. a Lucrarea de fat se adreseaz principal programatorilor de aplicatii a a n retea i administratorilor de retele complexe. Sunt presupuse, din partea n s cititorului, cunotinte de baz de programare, precum i privind functionarea s a s sistemelor de operare. Ca un avertisment pentru programatori, mentionm c, dei lucrarea a a s trateaz chestiuni de nivel mult mai cobort dect cel al platformelor i biba a a s liotecilor utilizate mod normal aplicatiile retea, este totui util n n n s a n vederea unei bune elegeri a acestor platforme i biblioteci. nt s Tot ceea ce are legtur a a ntr-un fel sau altul cu calculatoare are dou a caracteristici: se dezvolt foarte repede i est foarte complex. Retelele de a s calculatoare nu fac exceptie. Ca urmare, este extrem de uor pentru oricine s s se piard nenumratele detalii permanent schimbare. a a n a n a Considerm c, orice domeniu, o bun prezentare trebuie s porneasc a a n a a a de la principiile de baz. Principiile de baz se sunt (relativ) simple i evolueaz a a s a mult mai lent dect constructiile tehnice elaborate pe baza lor. consecint, a In a prima parte a lucrrii de fat, principii, este dedicat studierii problemelor ce a a a trebuie rezolvate de o retea de calculatoare, precum i a principiilor constructiei s posibilelor solutii ale acestor probleme. Partea a doua a lucrrii, protocoale, prezint cteva dintre cele mai a a a rspndite protocoale i mecanisme utilizate retelele de calculatoare. Ea este a a s n construit pentru a oferi cititorului o privire de ansamblu asupra protocoalelor a studiate. Aceast privire de ansamblu poate sucient pentru unii cititori, a a caz contrar ind probabil necesar citirea efectiv a standardelor. n a a Lucrarea de fat este rodul experientei autorului activiti legate a n at de administrarea retelei de calculatoare a Departamentului de Informatic al a Facultii de Matematic i Informatic din cadrul Universitii Babe-Bolyai at as a at s Cluj-Napoca, predarea unui curs de Retele de calculatoare la aceast facn a
ultate, precum i din activitatea de cercetare desfurat de-a lungul anilor, s as a n special de nevoile practice din cadrul contractului de cercetare PNII 11003/2007 - Sistem decizional bazat pe tehnici de tip multi-agent pentru generarea, optimizarea si managementul registrelor nationale de boli cronice netransmisibile CRONIS. Seturile mari de date ce se vehiculeaz sistemul medical, precum a n i nevoia de condentialitate i securitate a lor, cer o foarte bun cunoatere s s a s i punere practic a notiunilor legate de codicarea informatiei, de metode s n a i protocoale criptograce, de aplicatii retele etc. s n
Capitolul 1
Introducere
Prin retea de calculatoare elegem un sistem (constnd din com nt a ponente hard i soft) care interconecteaz nite calculatoare, permitnd unor s a s a programe ce se execut pe aceste calculatoare s comunice a a ntre ele. De notat c, uzul comun, termenul de retea de calculatoare mai are a n i sensul de sistem de calcul, construit din mai multe calculatoare interconecs tate ntr-o retea, care se comport ca un sistem unitar, de exemplu, prezint a a aceleai conturi de utilizatori pe toate calculatoarele. s
Retea
Figura 1.1: Reteaua de calculatoare, din punctul de vedere al proceselor aplicatie. Functionalitatea retelei este oferit prin functii apelabile din procesele utilizator. a Reteaua ofer o aplicatiilor o cale de transmisie a datelor (linia punctat). Constructia a a efectiv a retelei nu este vizibil aplicatiilor. a a
entitate ce poate comunica retea trebuie s aib asociat o adres (un ir n a a a a s de biti, construit dup anumite reguli, identicnd unic o anumit entitate). a a a Pe lng aceste functii de baz, reteaua mai ofer functii pentru cona a a a gurarea diferitilor parametrii. O parte dintre aceti parametri xeaz rolul s a i locul diverselor componente cadrul retelei (de exemplu, ecare calculator s n trebuie s-i cunoasc propria adres). Alti parametrii sunt legati de calitatea as a a serviciilor oferite de retea (debit de transfer de date, timp de propagare, etc). Datele transmise de procesele utilizator sunt de obicei iruri arbitrare s de octeti. Rolul retelei este de-a transmite ntocmai irul de octeti trimis s de procesul surs ctre procesul destinatie. Semnicatia, pentru procesul a a destinatie, a unui ir de octeti transmis face obiectul unei elegeri (proto s nt col ) ntre procesele utilizator. La proiectarea retelei nu ne intereseaz ce fac a procesele utilizator cu datele transferate; la proiectarea programelor utilizator nu ne intereseaz cum lucreaz reteaua pentru a transmite datele. a a continuare vom trece revist principalele caracteristici ale serIn n a viciului oferit de retea proceselor de aplicatie. O comunicatie poate , dup numrul destinatarilor: a a punct la punct, dac exist un singur destinatar. mod obinuit, desa a In s tinatarul este selectionat explicit de ctre procesul emittor; o astfel de a a comunicatie este numit unicast. Uneori a, de exemplu cazul a ns n n care un serviciu este oferit de mai multe servere, echivalente din punctul de vedere al clientului, este favorabil ca reteaua s aleag destinatarul a a comunicatiei, functie de distanta fat de emittor, dintr-o multime n a a
specicat de destinatari posibili. Un astfel de comunicatie se numete a s anycast. difuziune, dac exist mai multi destinatari. Distingem difuziune coma a plet (engl. broadcast), care destinatari sunt toate calculatoarele dintra n o retea, i difuziune selectiv (engl. multicast), care destinatarii sunt s a n o submultime aleas a calculatoarelor din retea. a Serviciul de comunicatie oferit de retea poate de tip conexiune sau de tip transport de datagrame: cazul conexiunilor, cadrul comunicatiei In n ntre dou procese se disting a trei faze: - deschiderea conexiunii, cadrul creia sunt fcute nite pregtiri, n a a s a inclusiv alocarea unor resurse pentru comunicatie; - comunicatia propriu-zis, care unul sau ambele procese transmite a n un ir de pachete sau de biti celuilalt proces; s - nchiderea conexiunii, cadrul creia se elibereaz resursele alocate n a a la deschidere. cazul transportului de datagrame, procesul emittor pregtete un In a a s ansamblu, numit datagram (prin analogie cu telegram ), cuprinznd a a a un ir de biti destinat procesului receptor i anumite informatii necesare s s livrrii (adresa destinatarului). Apoi transmite datagrama retelei de cala culatoare, care o transmite procesului receptor. Mai multe datagrame trimise de acelai proces surs ctre acelai proces destinatie sunt transs a a s mise independent una de alta, ceea ce duce, general, la posibilitatea n inversrii ordinii de receptie fat de ordinea de emisie a datagramelor. a a Principalii parametri de calitate ai serviciului oferit de retea sunt: Capacitatea de transport oferit de retea, sau debitul maxim acceptat, este a raportul dintre numrul de biti transportati cadrul unei comunicatii a n i timpul care acetia sunt transmii. Echivalent, capacitatea este s n s s inversul duratei medii ntre trecerea, printr-un punct dat al retelei, a doi biti consecutivi ai unei comunicatii. Timpul de transfer a unui bloc de date este timpul scurs de la trecerea, printr-un punct dat, a primului bit al blocului pn la trecerea, a a prin acelai punct, a ultimului bit. Timpul de transfer este egal cu s raportul dintre dimensiunea blocului i debitul cu care se face transferul. s Capacitatea oferit de retea unei legturi poate s varieze datorit a a a a variatiei debitului altor comunicatii care partajeaz aceleai echipamente. a s
Exist aplicatii, de exemplul legate de transfer de iere, pentru a s care este important ca reteaua s ofere o capacitate medie ct mai mare. a a Penttru alte aplicatii, cum ar telefonia, transmisia video (de exemplu pentru teleconferinte) sau alte aplicatii timp real, este important s n a nu scad niciodat capacitatea legturii sub o anumit valoare minim, a a a a a a o capacitate mai mare nu este util. ns a Timpul de propagare ntre dou entiti este timpul scurs a at ntre momentul care entitatea surs emite un bit i momentul care acel bit n a s n ajunge la destinatie. Timpul de propagare rezult din a nsumarea timpului de propagare a semnalului de-a lungul mediului de comunicatie cu diverii timpi de ateptare a datelor diverse zone tampon. De res s n marcat c timpul de propagare a semnalului este egal cu distanta de la a emittor la receptor artit la viteza de propagare a semnalului, iar a mp a viteza de propagare nu poate depi viteza luminii vid; din acest moas n tiv, de exemplu, timpul de propagare prin legturi prin satelit nu poate a mai scurt de cteva zecimi de secund. a a Timpul scurs de la nceputul transmisiei unui bloc de date de ctre a emittor pn la nalul receptiei blocului de ctre receptor este egal cu a a a a suma dintre timpul de transfer i timpul de propagare. s Uneori, loc de timpul de propagare se utilizeaz o alt mrime, n a a a timpul dus- ntors, care este timpul scurs de la transmiterea unui mesaj de ctre o partenerul de comunicatie pn la primirea rspunsului din a a a a partea acestuia. Timpul dus- ntors este suma dintre timpii de propagare pentru cele dou sensuri i timpul de procesare pentru crearea a s rspunsului. a Evident, timpul de propagare e bine s e ct mai scurt, a a a ns diferite aplicatii au cerinte diferite: - La unele aplicatii timpul de propagare nu este prea important. De exemplu, la transferul unui ier mare, la care oricum timpul de s transfer este mare, timpul de propagare inuenteaz foarte putin a timpul total necesar transmiterii ierului. s - La difuzarea de materiale audio sau video, un timp de propagare mare nu este deranjant, a este important ca el s e constant ns a timp. Aceasta pentru c nu este deranjant dac o transmisie n a a de televiziune este cu cteva secunde arziere fat de evenia n nt a mentele transmise, a este important s nu e momente care ns a n imaginea ,, ngheat datorit creterii timpului de propagare i a a s s momente care imaginea ,,sare n nainte datorit scurtrii timpua a lui de propagare.
- Timpul de propagare (sau, echivalent, timpul dus- ntors) este important s e scurt special pentru aplicatii care entitile ce a n n at comunic transmit mesaje scurte i trebuie s atepte rspunsul a s a s a la mesajul precedent pentru a putea genera mesajul urmtor. Exa emple de astfel de aplicatii sunt: telefonie, videoconferinte, sesiuni interactive la distant. a Posibilitatea existentei erorilor de transmisie: Erorile de transmisie apar ca urmare a diverselor perturbatii ce afecteaz transmiterea sem a nalelor. Exist metode de-a micora orict de mult probabilitatea ca a s a un mesaj s e afectat de erori, a niciodat aceast probabilitate nu a ns a a poate fcut zero (probabilitatea unei erori poate fcut a mai a a a a ns mic dect, de exemplu, probabilitatea unui cataclism devastator care a a s distrug toat reteaua). Metodele de reducere a probabilitii erorilor a a a at de transmisie sunt studiate 2.4 i 4.1. n s Transmisia sigur a nseamn ca ecare mesaj al entitii surs s ajung a at a a a exact ntr-un singur exemplar la destinatie (s nu se piard i s nu e a as a duplicat) i mai multe mesaje transmise de ctre o aceeai surs spre o s a s a aceeai destinatie s ajung la destinatie ordinea care au fost transs a a n n mise de surs. Mesajele se pot pierde datorit erorilor de transmisie, a a a supraaglomerrii sau a defectrii unor echipamente din retea sau chiar a a din cauz c emittorul transmite cu debit mai mare dect este capaa a a a bil receptorul s preia informatia transmis. Duplicarea sau inversarea a a mesajelor pot cauzate de modicri ale conguratiei sau arcrii a nc a retelei timpul trecerii pachetelor prin retea. Realizarea transmisiei n sigure este studiat 4.3 i 4.4. a n s Transmisia sigur este evident util, a vine cu un anumit cost. a a ns Cel mai adesea, costul este creterea i uctuatia timpului de propagare, s s deoarece mesajele pierdute trebuie retransmise. La o transmisie audiovideo, este adesea preferabil pstrarea unui timp de propagare redus, a a cu pretul pierderii, din cnd cnd, a unor fractiuni de secund de a n a a material audio-video. Securitatea comunicatiei nseamn c un adversar care controleaz o a a a parte din retea s nu poat obtine informatia transmis, s nu poat a a a a a modica datele transmise fr ca acest lucru s e detectat de ctre aa a a receptor i s nu poat impersona vreuna dintre entitile ce comunic. s a a at a Securitatea comunicatiei se obtine prin metode criptograce, studiate n capitolul 6.
Nivelul zic
Mediu zic
Mediu zic
Figura 1.2: Componentele unei prti dintr-o retea de calculatoare. Sunt gurate a doar componentele implicate comunicatia dintre dou aplicatii. Cele dou aplicatii n a a se execut pe dou calculatoare a a ntre care nu exist o legtur direct, dar exist o a a a a a legtur printr-un nod intermediar. a a
similare celor oferite de retea aplicatiilor (aa cum am vzut 1.1), dar ser s a n viciile oferite sunt mai primitive. Astfel, nivelul zic ofer nivelului legturii de a a date servicii de transfer de date, dar numai ntre calculatoare conectate direct i cu riscul ca datele s e alterate timpul transferului sau s se piard coms a n a a plet. Nivelul legturii de date ofer nivelului retea servicii de transfer de date a a mai sigure, dar continuare cu restrictia c transferul este posibil doar n a ntre calculatoare conectate direct. Nivelul retea ofer nivelului transport servicii a de transfer de date ntre orice dou calculatoare din retea, dar a neadeca nc vate utilizrii directe de ctre aplicatii (lipsa transmisiei sigure, comunicatie a a posibil doar pentru un singur proces aplicatie la un moment dat, etc.). a Constructia ecruia dintre nivele este independent de constructia a a celorlalte (conteaz doar interfata dintre ele i parametrii de calitate a servia s ciului oferit de un nivel celui imediat superior). De exemplu, proiectarea n nivelului retea, nu ne intereseaz nici ce aplicatii vor utiliza reteaua (acelai a s nivel retea din Internet este utilizat de aplicatii de pota electronic, web, s a telefonie prin Internet i videoconferinte), nici cum este construit nivelul zic s (perechi de conductoare, bre optice sau legturi radio prin satelit). a Modulele, de pe acelai nivel, din noduri diferite si transmit unul s altuia (utiliznd acest scop serviciile oferite de nivelul inferior) dou tipuri a n a
de date: datele utile a cror transfer este cerut de nivelul superior i date a s de control necesare coordonrii activitilor modulelor din cadrul nivelului. a at Regulile de reprezentare a acestor date, de organizare a acestora mesaje, n precum i regulile dup care se trimit mesajele s a ntre modulele aceluiai nivel s alctuiesc protocolul de comunicatie al nivelului respectiv. a Functionarea corect a unei retele necesit respectarea, de ctre toate a a a modulele implicate, a protocoalelor de comunicatie stabilite.
Ca urmare, la o schimbare de protocol trebuie avut vedere existenta n unei perioade de tranzitie timpul creia echipamentele noi trebuie s n a a poat comunica cu cele vechi. Tranzitia este mult uurat dac protoa s a a colul vechi prevede anumite faciliti. O posibilitate este ca protocol at n s se prevad o faz de negociere care ecare entitate anunt ce versia a a n a uni de protocol i ce extensii de protocol cunoate, iar apoi comunicatia s s decurge conform versiunii celei mai recente i cu cele mai multe extens sii suportate de ambii parteneri. Alt posibilitate este stabilirea, de a la prima versiune a protocolului, a actiunilor unui dispozitiv, ce im plementeaz o versiune veche a protocolului, la primirea unui mesaj a neprevzut acea versiune. a n Cerinte diferite ale diferitelor aplicatii duc la tendinta de-a elabora proto coale complexe, care s satisfac pe toat lumea. Protocoale complexe a a a duc la implementri scumpe i cu riscuri mari de-a avea erori. Este a s preferabil un protocol care s ofere cteva operatii simple care s poat a a a a combinate dup dorinta aplicatiei ce-l utilizeaz. Dac o astfel de a a a abordare nu este fezabil, ducnd la un protocol prea complex, se rea a curge la protocoale ce au posibilitatea de-a implementate doar partial; metodele utilizabile acest scop sunt similare cu cele descrise mai sus n pentru facilitarea evolutiei protocoalelor.
Capitolul 2
Teoria informatiei se ocup cu studiul metodelor de codicare a in a formatiei vederea transmiterii sau stocrii acesteia. cadrul teoriei infor n a In matiei se studiaz i cum se poate msura cantitatea de informatie transmis as a a ntr-un mesaj i cum se poate msura ecienta unei anumite codicri. s a a Prin informatie elegem cunotintele unei entiti. nt s at cele ce urmeaz, ne va interesa problema transmiterii unei inforIn a matii de la o surs la o destinatie. Informatia de transmis nu este cunoscut a a initial nici de destinatie, nici de sistemul de transmitere. Ca urmare, a priori informatia de transmis poate vzut ca o variabil aleatoare. a a a Comunicatia dintre surs i destinatie se desfoar prin intermediul as as a unui canal de comunicatie. Canalul de comunicatie este capabil s transmit a a e o mrime variabil timp, numit semnal ( esent, o functie real a a n a n a a continu), caz care canalul este numit continuu, e un ir de simboluri a n s dintr-o multime nit, caz care canalul este numit discret. a n Deoarece canalul nu poate transmite direct informatia sursei, ntre surs i canal avem nevoie de un dispozitiv, numit emittor , care transform as a a informatia util, produs de surs, a a a ntr-un semnal sau, dup caz, a ntr-un ir de s simboluri. Similar, ntre canal i destinatie se plaseaz un dispozitiv, numit s a receptor , al crui rol este de-a efectua operatia invers, i anume de-a exa a s trage din semnal sau din irul de simboluri informatia util pentru destinatie s a (g. 2.1).
Surs a
Emittor a
Canal
Receptor Destinatie
Semnalul sau, dup caz, irul de simboluri ce tranziteaz canalul se a s a numete reprezentarea informatiei. Regulile de corespondent dintre informas a ia util i reprezentarea sa poart denumirea de schem de reprezentare a t a s a a informatiei, schem de codicare a informatiei sau cod . a Ca exemplu, o limb scris este o schem de reprezentare a infora a a matiei, pentru un canal discret a crui multime de simboluri contine literele a alfabetului limbii respective, precum i spatiul i semnele de punctuatie. Un s s text scris ntr-o limb este o reprezentare a informatiei, iar conceptele din a textul respectiv sunt efectiv informatia continut text. a n Ca un al doilea exemplu, limba vorbit este o alt schem de reprezentare a a a a informatiei, canalul pentru care este construit ind de tip continuu. a Schema de codicare a informatiei se presupune c este stabilit a a n prealabil i este cunoscut att emittorului ct i receptorului. De asemenea, s a a a a s constructia schemei de reprezentare a informatiei se ine cont de caracn t teristicile canalului i de caracteristici generale ale informatiilor ce trebuie s s a se poat transmite, a la elaborarea ei nu se cunosc informatiile ce trebuia ns esc efectiv transmise. De exemplu, la elaborarea unei scheme de codicare a literelor dintr-un text utiliznd un canal ce poate transmite doar simbolurile a 0 i 1 se poate ine cont de frecventa obinuit a literelor s t s a ntr-un text, dar nu i de textul efectiv de transmis. s Restul capitolului trateaz scheme de reprezentare a informatiei pena tru canale discrete. Vom studia continuare: n proprieti generale ale codurilor, at problema minimizrii numrului de simboluri necesare a transmise prin a a canal, precum i msurarea cantitii de informatie, s a at problema codicrii cazul care canalul altereaz irul de simboluri a n n as pe care transmite (canal cu perturbatii). l
|u| reprezint lungimea irului u; avem |u v| = |u| + |v|, u, v S . a s este irul vid; avem || = 0 i u = u = u, u S . s s Informatia transmis de ctre surs const dintr-un ir de mesaje. a a a a s Fiecare mesaj este un element dintr-o multime M de mesaje posibile. Mesajele provin din universul utilizatorului sistemului; ele pot propozitii, litere, nu mere, etc. Multimea de mesaje M este nevid i cel mult numrabil. De cele as a a mai multe ori M este nit. a Denitia 2.1 Numim functie de codicare sau cod orice functie injectiv a , unde M este multimea de mesaje, cel mult numrabil, iar c : M S a a S este multimea simbolurilor de cod, nit i avnd cel putin dou elemente. as a a Fiecare mesaj m M va codicat prin irul c(m) S . s Denitia 2.2 Numim cuvnt de cod orice ir de simboluri de cod w S cu a s proprietatea c exist un mesaj m M astfel at w = c(m). a a nc Numim multimea cuvintelor de cod multimea W = c(M ). Un ir de mesaje (m1 , . . . , mk ) M (unde M desemneaz multimea s a irurilor nite de mesaje din M ) va codicat prin irul format prin cons s catenarea codicrilor mesajelor: a c(m1 ) c(m2 ) . . . c(mk ). De remarcat c urma concatenrii se pierd delimitrile dintre codicrile a n a a a mesajelor individuale. Ca urmare, pentru ca receptorul s poat decodica a a fr ambiguiti orice transmisie a emittorului este necesar o proprietate aa at a a suplimentar a codului, aceea de-a unic decodabil: a Denitia 2.3 Un cod c : M S se numete: s cod unic decodabil, dac functia c : M S dat prin a a c(m1 , m2 , . . . , mk ) = c(m1 ) c(m2 ) c(mk ) este injectiv. a cod cu proprietatea de prex sau cod prex, dac nu exist m1 , m2 M , a a cu m1 = m2 , astfel at c(m1 ) s e prex pentru c(m2 ) i plus nc a s n c(m) = , m M . (2.1)
cod de lungime x, dac exist o constant l I \ {0} astfel at a a a a N nc |c(m)| = l, m M ; valoarea l se numete lungimea codului; s Propozitia 2.4 Au loc urmtoarele proprieti: a at 1. Orice cod de lungime x este cod prex. a 2. Orice cod prex este unic decodabil. Demonstratia este imediat. a Exemplul 2.1: Considerm multimea mesajelor M = {a, b, c, d} i multimea a s simbolurilor de cod S = {0, 1}. Urmtorul cod are proprietatea de prex. a a 0 b 101 c 11 d 100
Exemplul 2.2: Urmtorul cod, obtinut prin oglindirea cuvintelor codului din a exemplul anterior, este unic decodabil dar nu are proprietatea de prex: a 0 b 101 c 11 d 001 Codul nu este prex ntruct cuvntul de cod 0 care este codicarea mesajului a a a este prex al cuvntului de cod 001 care este codicarea mesajului d. a De notat c un cod obtinut prin oglindirea cuvintelor unui cod prex a se numete cod sux i s s ntotdeauna este unic decodabil. Exemplul 2.3: Codul de mai jos nu este unic decodabil: a 0 b 1 c 01 Codul nu este unic decodabil ntruct irul de simboluri de cod 01 poate a s codifcarea mesajului c sau a irului de mesaje ab. s
Unui cod prex c : M S i se poate ataa un arbore care: s n pentru ecare nod intern, muchiile descendente sunt cel mult numr n a de |S| i sunt etichetate cu simboluri distincte din S; s ecare frunz este etichetat cu cte un mesaj distinct din M ; a a a cuvntul de cod al unui mesaj este format din simbolurile de cod ale a muchiilor de pe lantul ce unete rdcina cu frunza ataat mesajului. s a a s a Constructia arborelui se face conform algoritmului 2.1 (Genereaz ar a
bore). Exemplul 2.4: Pentru codul din exemplul 2.1 arborele este reprezentat n gura 2.2.
0 a 0 0 d 1 b 1 1 c
Algoritmul Genereaz arbore a intrarea: M multime nit nevid a a c : M S cod prex ieirea: T arborele asociat codului c s algoritmul: creeaz T format doar din rdcin a a a a r:=rdcina lui T a a pentru m M execut a (s1 , . . . , sl ):=c(m) x:=r pentru i:=1, l execut a dac nu exist muchie descendent de la x etichetat cu si atunci a a a a dac x are asociat un mesaj atunci a eroare: c nu este cod este prex sfrit dac as a creaz y descendent al lui x i eticheteaz (x, y) cu si a s a sfrit dac as a x:=descendentul lui x pe muchia etichetat si a sfrit pentru as dac x nu e frunz atunci a a eroare: c nu este cod este prex sfrit dac as a asociaz m nodului x a sfrit pentru as sfrit algoritm as
Algoritmul 2.1: Generarea arborelui asociat unui cod prex
0 a 0 b c
2 d 0 e
1 g
2 h
1 f
Algoritmul Decodeaz a intrarea: T arborele unui cod prex c : M S s = (s1 , s2 , . . . , sl ) S un ir nit de simboluri de cod s ieirea: m = (m1 , m2 , . . . , mk ) M irul mesajelor a cror codicare este s s a s1 , . . . , sl algoritmul: m:= x:=rdcina lui T a a pentru i:=1, l execut a dac nu exist muchie descendent de la x etichetat cu si atunci a a a a eroare: s nu este concatenare de cuvinte de cod sfrit dac as a x:=descendentul ui x pe muchia etichetat cu si a dac x este frunz atunci a a adaug la m mesajul asociat lui x a x:=rdcina lui T a a sfrit dac as a sfrit pentru as dac x nu este rdcina lui T atunci a a a eroare: s nu este concatenare de cuvinte de cod sfrit dac as a sfrit algoritm as
Algoritmul 2.2: Decodicarea unei reprezentri printr-un cod prex a
Decodicarea se face astfel: La nceput x este rdcina arborelui. Lum din a a a irul s primul element; acesta are valoarea 0. Coborm arbore de-a lungul s a n muchiei etichetate cu 0 i ajungem la frunza etichetat ,,a. Deoarece am s a ajuns la o frunz, punem mesajul din eticheta frunzai adic ,,a irul a a n s de mesaje decodicat i revenim la rdcin. Urmeaz simbolul de cod 1; s a a a a coborm de-a lungul muchiei 1 i ajungem nodul printe ale nodurilor ,,b, a s n a ,,c i ,,d. Urmeaz simbolul 1; coborm de-a lungul muchiei 1 i ajungem la s a a s frunza ,,c; adugm ,,c la irul de mesaje i revenim la rdcin. Continund a a s s a a a a acelai fel, vom obtine continuare mesajele ,,e i ,,a. Sirul de mesaje n s n s transmis este deci ,,acea.
(2.2)
i, reciproc, dac numerele naturale (li )iM satisfac inegalitatea (2.2) atunci s a exist un cod prex c : M S avnd lungimile cuvintelor |c(i)| = li , i M . a a
Demonstratie. Vom nota continuare d = |S| i K = mM dlm . n s Vom demonstra ai prima implicatie, pentru cazul care multimea nt n mesajelor M este nit. Demonstratia va construit prin inductie dup a a a maximul k al lungimilor cuvintelor de cod (k = maxmM lm ). Pentru k = 1, nseamn c toate cuvintele de cod sunt de lungime 1 i a a s consecint sunt numr de cel mult d. Ca urmare n a n a K=
mM
d1 = |M | d1 d d1 = 1.
Presupunnd inegalitatea lui Kraft adevrat pentru coduri de lungime a a a maxim k = k0 , pentru un k0 I arbitrar, s demonstrm c are loc i a N a a a s pentru coduri de lungime maxim k = k0 + 1. Pentru aceasta, s construim a a multimile de mesaje Mx = {m M : primul simbol din c(m) este x} , x S.
dlm .
Pentru ecare x M , restrictia lui c la Mx , c|Mx , este de asemenea un cod prex. Distingem continuare trei cazuri: n Dac Mx are cel putin 2 elemente, rezult c toate cuvintele de cod ale a a a elementelor din Mx au lungime mai mare sau egal cu 2, deoarece a n caz contrar singurul cuvnt de cod de lungime 1, anume x, ar prex a pentru toate celelalte. Eliminnd din toate cuvintele de cod primul a simbol obtinem un nou cod prex pentru Mx . Acest cod prex are toate cuvintele de cod lungime cel mult k0 i ca urmare, conform s ipotezei de inductie, satisface inegalitatea lui Kraft, adic a d(lm 1) 1,
mMx
de unde dlm
mMx
1 . d
Dac Mx are un singur element, cuvntul de cod asociat acestui elea a ment are lungime cel putin 1 i ca urmare din nou s dlm
mMx
1 . d
Dac Mx = , avem a
mMx
1 dlm = 0 d .
d(lm )
xS
1 = 1. d
d(lm ) .
Deoarece, pentru ecare l I , c|Ml este un cod prex, rezult Kl 1, N a l I . Dar (Kl )lIN este un subir al irului sumelor partiale ale unei N s s
Algoritmul Construiete cod s intrarea: (lm )mM I satisfcnd (2.2) N a a ieirea: c : M S cod prex cu |c(m)| = lm , m M s algoritmul: E:={} pentru l=1,maxmM lm execut a E := pentru w E execut a pentru x S execut a E :=E {w x} sfrit pentru as sfrit pentru as E:=E pentru m M : lm = l execut a c(m):= o valoare arbitrar din E a E:=E \ {c(m)} sfrit pentru as sfrit pentru as sfrit algoritm as
Algoritmul 2.3: Constructia unui cod prex cu lungimi date ale cuvintelor de cod
(2.3)
Presupunnd c (2.3) are loc la iteratia cu l = k, la iteratia urmtoare, a a a n care l = k + 1, avem dk+1lm = d
mM lm k+1
dklm =
mM lm k+1
= d
dklm =
mM lm =k
dklm
mM lm k
d(|Ek | |{m M : lm = k}|) = = |Ek+1 | unde ultima egalitate rezult din modul de constructie a lui Ek+1 din Ek a prin eliminarea unui numr de elemente egal cu numrul de cuvinte de a a
Exemplul 2.7: Dorim construirea unui cod prex pentru multimea M = {a, b, c, d, e} i multimea de simboluri de cod S = {0, 1} cu urmtoarele s a lungimi ale cuvintelor de cod: la = 3, lb = 1, lc = 3, ld = 3, le = 3. Rezolvare: mai ai vericm dac este satisfcut inegalitatea lui nt a a a a Kraft: |S|lm = 23 + 21 + 23 + 23 + 23 = 1 1,
mM
inegalitatea este satisfcut i prin urmare exist un cod prex. a as a Constructia propriu-zis este artat gura 2.4. Cerculetele de a a a n semneaz nodurile corespunztoare elementelor din multimea E. a a
0 Rdcina a a arborelui
(a) Initializarea: E = {}
0 b
0 b 0 0 a
1 1 1 c 0 d 1 e
Figura 2.4: Constructia unui cod prex cu lungimi xate ale cuvintelor de cod (exemplul 2.7)
Vom arta continuare c inegalitatea lui Kraft este o conditie necea n a sar pentru existenta codurilor unic decodabile, nu doar a celor prex. Avem: a Teorema 2.6 (McMillan) Pentru orice cod unic decodabil c : M |S| are loc inegalitatea:
n
dlm 1
mM
(2.4)
(2.5)
Regrupm acum termenii din (2.5) dup valorile sumei lm1 + . . . + lmk . a a Pentru aceasta, vom nota cu N (k, l) numrul de termeni din dezvoltarea a (2.5) pentru care lm1 + . . . + lmk = l. Cu alte cuvinte, N (k, l) = Mai observm c a a k lm1 + . . . + lmk lmax k unde lmax este maximul lungimii cuvintelor de cod (lmax = maxmM lm ). Obtinem: lmax k Ek = N (k, l) dl . (2.6)
l=k
S observm acum c N (k, l) este numrul de iruri de k mesaje pentru a a a a s care lungimea codicrii irului este l. Deoarece codul este unic decodabil, a s aceste codicri sunt distincte i ca urmare N (k, l) este cel mult egal cu a s numrul de iruri distincte de l simboluri de cod, adic a s a N (k, l) dl . Inlocuind (2.6), obtinem: n E
k lmax k l=k
dl dl = lmax k k + 1 lmax k,
(2.7)
39
N as i notm Ek = mMk dlm . Pentru ecare k I , Mk este nit i c|Mk s a este un cod unic decodabil. Ca urmare, Ek 1 pentru ecare k I . N Observm acum c E = limk Ek 1. a a
Corolarul 2.7 Pentru orice cod unic decodabil, exist un cod prex cu acea leai lungimi ale cuvintelor de cod. s
Exemplul 2.9: textul acestei lucrri, 10,7% dintre litere sunt ,,a, i doar In a s 1,1% sunt ,,b. Cu aceste cunotinte, receptorul se va atepta de la ecare s s liter s e ,,a cu probabilitate de 10,7% i ,,b cu probabilitate de 1,1%. a a s In aceste conditii, ecare liter ,,a poart log2 0,107 3,224 biti de informatie, a a i ecare liter ,,b poart log2 0,011 6,5 biti. s a a Exemplul 2.10: Presupunem c emittorul informeaz receptorul asupra a a a rezultatului aruncrii unui zar. Dac emittorul trimite mesajul numrul este a a a a ntre 1 i 4 cantitatea de informatie este log2 4 0,58 biti. Dac emittorul s a a 6 anunt acum c numrul este 3, probabilitatea acestui caz, cu informatiile a a a 1 a disponibile imediat nainte, este 4 , de unde cantitatea de informatie purtat 1 de mesajul numrul este 3 este log2 4 = 2 biti. S observm c, dac a a a a a emittorul ar spus de la a nceput numrul este 3, cantitatea de informatie a transmis ar fost log2 1 2,58 biti. a 6 Denitia 2.9 Fie o surs de informatie ce emite mesaje dintr-o multime M , a ecare mesaj m M avnd o probabilitate pm de-a emis. Se numete a s entropia sursei de informatie cantitatea H=
mM
pm log pm
(2.9)
pm |c(m)|.
Denitia 2.11 Un cod unic decodabil c : M S se numete cod optim s dac lungimea medie a cuvintelor sale este mai mic sau egal dect lungimea a a a a . medie a cuvintelor oricrui cod unic decodabil c : M S a Exist urmtoarea limit inferioar pentru lungimea medie a cuvina a a a telor de cod:
Teorema 2.12 Fie o surs ce emite mesaje dintr-o multime M , e H entropia a un cod unic decodabil. Atunci lungimea medie l a sursei i e c : M S s cuvintelor codului c satisface l H . log2 |S| (2.10)
particular, dac |S| = 2, atunci rezult l H. Cu alte cuvinte In a a avem nevoie cel putin de un simbol binar (un bit) pentru a transmite un bit de informatie. Denitia 2.13 Se numete ecienta unui cod raportul = s
H , l log2 |S|
unde H
este entropia sursei, l este lungimea medie a cuvintelor de cod, iar S este multimea simbolurilor de cod. Se numete redundanta relativ valoarea 1 . s a Ecienta i redundanta relativ sunt numere cuprinse s a ntre 0 i 1. s Valoarea minim, dat teorema 2.12, pentru lungimea medie a cua a vintelor de cod poate atins efectiv, adic se poate obtine ecienta = 1, a a doar anumite cazuri. Motivul pentru care ea nu poate n ntotdeauna atins a este dat de natura discret a simbolurilor de cod. Ideal, lungimea cuvintelor a a de cod ar trebui s e lm = log|S| pm . Pentru aceste valori inegalitatea lui a Kraft este satisfcut: a a |S|lm =
mM mM
|S|( log|S| pm ) =
mM
pm = 1 1,
prin urmare ar exista un cod unic decodabil i limita din teorema 2.12 ar s atins: a l=
mM
pm log|S| pm =
mM
pm =
1 log2 |S|
mM
pm log2 pm
H . log2 |S|
Acest lucru se poate realiza a numai dac lm = log|S| pm sunt toate ns a ntregi. cazul general putem doar s alegem ca lungimi ale cuvintelor de In a cod valorile mai mari, lm = log|S| pm . Pentru aceste valori avem log|S| pm lm < log|S| pm + 1 de unde rezult: a
Teorema 2.14 Fie o surs ergotic ce emite mesaje dintr-o multime M , e a a H entropia sursei i e S o multime de simboluri de cod. Atunci exist un s a cod c : M S unic decodabil a crui lungime medie l a cuvintelor de cod a satisface H H l< + 1. (2.11) log2 |S| log2 |S| Rezultatul teoremei precedente poate mbuntit dac loc s a at a n a considerm mesajele sursei ca ind mesajele din M considerm succesiuni a a de mesaje din M , construim un cod pentru acestea din urm i determinm as a raportul dintre lungimea medie a cuvntului de cod i numrul de mesaje din a s a M codicate prin acesta. detaliu, constructia este urmtoarea: In a Fixm k I Considerm o a doua surs, ale crei mesaje vor suca N. a a a cesiuni de k mesaje ale sursei originale. Multimea de mesaje ale noii surse este prin urmare M k . Probabilitile mesajelor sunt p(m1 ,...,mk ) = pm1 . . . pmk . at Vom nota cu Hk entropia noii surse. Avem Hk =
(m1 ,...,mk )M k
p(m1 ,...,mk ) log2 p(m1 ,...,mk ) = pm1 . . . pmk (log2 pm1 + . . . + log2 pmk ) =
(m1 ,...,mk k )M k
=
i=1 (m1 ,...,mk k
=
i=1
mi M k
=
i=1
1H =
=k H Conform teoremei 2.14, exist un cod c : M k S pentru care a lungimea medie a cuvintelor de cod, l(k) , satisface Hk Hk l(k) < + 1. log2 |S| log2 |S|
Numrul mediu de simboluri de cod utilizate pentru a transmite un mesaj din a (k) M este l k , care este delimitat de H l(k) H 1 < + . log2 |S| k log2 |S| k Prin urmare, pentru orice > 0, putem alege un k I astfel at codicnd N nc a cte k mesaje succesive din M s obtinem un numr de simboluri pe mesaj a a a ncadrat ntre H l(k) H < + . log2 |S| k log2 |S|
Algoritmul Human intrarea: M multime nit de mesaje a pm (0, 1), m M , probabilitile mesajelor; at mM pm = 1 S = {s1 , s2 , . . . , sd } multime nit de simboluri de cod, d 2 a ieirea: c : M S cod prex s algoritmul: E:=M d :=(|M | 2) mod (|S| 1) + 2 ct timp |E| > 1 execut a a alege e1 , . . . , ed E cu pei pe , i {1, . . . , d } , e E \ {e1 , . . . , ed } creaz t unic a pentru i {1, . . . , d } execut a pune ei ca u al lui t s(t,ei ) :=si sfrit pentru as pt := d pei i=1 E:=(E \ {e1 , . . . , ed }) {t} d :=d sfrit ct timp as a c:=codul prex asociat unicului arbore din E sfrit algoritm as
Algoritmul 2.4: Algoritmul lui Human
cod optim. S alegem ,,b cu ,,c. Calculm i probabilitatea arborelui a a s rezultat: 0,15 + 0,15 = 0,3. (g. 2.5(b)). continuare unim din nou arborii de probabiliti minime; acum acetia In at s sunt ,,d i ,,e (g. 2.5(c)). s Avem acum dou posibiliti: arborele ce contine pe ,,b i pe ,,c poate a at s unit e cu arborele format din ,,a, e cu arborele format din ,,d i s ,,e. Alegem a doua variant. a nal unim cei doi arbori rmai. In a s Avem acum codurile mesajelor: c(a) = 0, c(b) = 100, c(c) = 101, c(d) = 110, c(e) = 111. Lungimea medie a cuvintelor de cod este l = 0,35 1 + 0,15 3 + 0,15 3 + 0,15 3 + 0,2 3 = 2,3 Pentru comparatie, entropia este H = 0,35 log2 0,35 + 0,15 log2 0,15 + 0,15 log2 0,15+ + 0,15 log2 0,15 + 0,2 log2 0,2 2,226121
0.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 la pasul 4 s-ar ales cealalt posibilitate, ar rezultat multimea a a de arbori din gura 2.6(a) i nal arborele asociat codului prex din gura 2.6(b). s n S observm c se obtine exact aceeai lungime medie a cuvintelor de cod: a a a s l = 0,35 2 + 0,15 3 + 0,15 3 + 0,15 2 + 0,2 2 = 2,3
0.65
0.35 0
0 1 0
1 0 1
a b c
d e
1 d e
b c
(b) Arborele nal
(a) Pasul 4
Exemplul 2.12: Fie o surs avnd multimea mesajelor posibile a a M = {a, b, c, d, e, f} cu probabilitile corepsunztoare pa = 0,4, pb = 0,15, pc = 0,15, pd = 0,1, at a pe = 0,1, pf = 0,1 i e alfabetul canalului S = {0, 1, 2}. s Constructia codului prin algoritmul lui Human este prezentat a n gura 2.7. Lungimea medie a cuvintelor de cod este l = 1,6, entropia este H 2,346439 i avem s H 2,346439 1,4804382 1,6 = l log2 |S| 1,5849625 Teorema 2.15 Codul obtinut prin algoritmul Human este optim. Pentru demonstratie avem nevoie de cteva leme ce descriu pro a cele ce urmeaz vom nota cu L(c) lungimea prieti ale unui cod optim. In at a medie a cuvintelor unui cod c. Lema 2.16 Fie M multimea mesajelor sursei, e pm , m M , probabilitile at mesajelor sursei, e S alfabetul canalului i e c : M S un cod optim. s Pentru orice mesaje m1 , m2 M , dac pm1 < pm2 atunci |c(m1 )| |c(m2 )|. a
c 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: Functionarea algoritmului lui Human, exemplul 2.12 Demonstratie. Presupunem contrariul: m1 , m2 M , pm1 < pm2 i s |c(m1 )| < |c(m2 )|. Construim atunci un alt cod, c : M S , prin interschimbarea cuvintelor de cod asociate mesajelor m1 i m2 : s c(m2 ) , m = m1 c(m1 ) , m = m2 c (m) = c(m) , m M \ {m1 , m2 } Avem L(c ) =
mM
pm |c (m)| =
=L(c) pm1 |c(m1 )| pm2 |c(m2 )| + pm1 |c(m2 )| + pm2 |c(m1 )| = =L(c) + (pm1 pm2 )(|c(m2 )| |c(m1 )|) < <L(c) adic c are lungimea cuvintelor de cod mai mic dect c, de unde rezult a a a a c c nu este cod optim. a
Lema 2.17 Fie M multimea mesajelor sursei, |M | 2, e S alfabetul canalu lui, e c : M S un cod optim i e lmax lungimea celui mai lung cuvnt al s a codului c (lmax = maxmM |c(m)|). Atunci exist cel putin (n 2) mod (|S| a 1) + 2 cuvinte de cod de lungime lmax .
Demonstratie. Conform corolarului 2.7, exist un cod prex cu aceleai a s lungimi ale cuvintelor de cod ca i codul c. Deoarece ne intereseaz doar s a
Pentru k = 1, adic n |S|, algoritmul lui Human face o singur a a unicare, rezultnd cuvinte de cod de lungime 1 pentru toate mesajele. a Un astfel de cod este optim, deoarece cuvinte de cod de lungime mai mic a dect 1 nu sunt permise. a Presupunem acum c algoritmul Human genereaz codul optim pena a tru un k dat i s-i demonstrm optimalitatea pentru k + 1. S lum deci s a a a a o multime de mesaje M cu k(|S| 1) + 1 |M | (k + 1)(|S| 1), s a notm cu pm , m M , probabilitile mesajelor, s notm cu ch codul gena at a a erat de algoritmul lui Human i cu co un cod prex optim pentru aceeai s s multime de mesaje i aceleai probabiliti i s notm cu L(ch ), respec s s at s a a tiv L(co ) lungimile medii ale cuvintelor de cod corespunztoare. Avem de a demonstrat c L(ch ) L(co ). a Deoarece co este un cod optim, aplicnd lema 2.17 deducem c co a a are cel putin (n 2) mod (|S| 1) + 2 cuvinte de lungime maxim. Din a lema 2.16, deducem c acestea sunt cuvintele corespunztoare mesajelor cu a a probabilitile cele mai mici, adic e mesajele e1 , . . . , ed alese de algoritmul at a lui Human pentru prima unicare, e mesaje de aceleai probabiliti; s at n al doilea caz putem, prin interschimbri de cuvinte de cod, s facem ca cele a a (n2) mod (|S|1)+2 cuvinte de lungime maxmim din co s e cele alese a a prima etap a algoritmului lui Human, fr ca prin aceasta s pierdem n a aa a optimalitatea lui co . De asemenea, prin interschimbri de cuvinte de cod, a putem face ca celor (n 2) mod (|S| 1) + 2 mesaje alese de algoritmul lui Human s le corespund prin co cuvinte de cod ce difer doar prin ultimul a a a simbol. Creem acum un cod co : (M \ {e1 , . . . , ed }) {t} S , unde t este un obiect nou introdus, dnd ca valoare pentru c(t) prexul comun al lui a c(e1 ),. . . ,c(ed ). acelai mod, creem un cod ch pornind de la ch . Observm In s a d s acum c, notnd pt = i=1 pei , avem L(co ) = L(co ) pt i analog, L(ch ) = a a L(ch ) pt . S mai remarcm c ch este codul produs de algoritmul lui a a a Human pentru multimea de mesaje (M \ {e1 , . . . , ed }) {t} i, conform s ipotezei de inductie, el este optim; prin urmare L(ch ) L(co ). De aici rezult L(ch ) L(co ), deci codul obtinut prin algoritmul lui Human este a optim.
Algoritmii de compresie utilizati practic se folosesc i de depen n a s dentele ntre octetii succesivi. Utilizarea oricrui cod presupune c receptorul cunoate codul folosit a a s de emittor. Transmiterea separat a codului ctre receptor risc s contrabala a a a a anseze ctigul obtinut prin codare optimal. Metodele adaptative presupun as a c emittorul a a ncepe emisia cu un cod standard, dup care modic pena l a tru a-l optimiza conform frecventelor observate date. Dac algoritmul de n a generare a codului este xat i codul folosit la un moment dat depinde doar s de datele trimise (codate) deja, atunci receptorul poate recalcula codul folosit de emittor (folosind acelai algoritm ca i emittorul). a s s a De notat c nici un cod nu poate folosi mai putini biti pentru codare a lipsa redundantei, nu e posibil dect cantitatea de informatie transmis. In a a a compresia. Ca o consecint, nici un program de compresie nu poate comprima a un ir aleator de octeti. s
s scape nedetectate. Cu un cod bine ales, a, probabilitatea unei erori nedea ns tectate poate fcut sucient de mic. Evident, pentru aceasta este necesar a a a ca multimea cuvintelor de cod s e o submultime ,,rar a multimii secventelor a a de simboluri de cod. Prin urmare, posibilitile de detectare a erorilor in de constructia at t codului. De aici denumirea de cod detector de erori , respectiv cod corector de erori . Deoarece la orice cod detector sau corector de erori multimea irurilor s de cuvinte de cod este o submultime strict a multimii irurilor arbitrare a s de simboluri de cod, rezult c orice cod detector sau corector de erori are a a redundant. a cele ce urmeaz vom considera alfabetul canalului S = {0, 1}. In a
conform distributiei binomiale. Observm c, a a ntruct p a 1, pentru l sucient de mic avem p0 p1 p2 . . ., adic probabilitatea de-a avea mai mult de cteva erori este a a extrem de mic. a
d(u, v) =
i=1
|ui vi |,
unde u = (u1 , u2 , . . . , ul ) i v = (v1 , v2 , . . . , vl ). Astfel, distanta s ntre dou a cuvinte este numrul de erori individuale necesare pentru a transforma primul a cuvnt cel de-al doilea. a n
unde W este multimea cuvintelor de cod ale codului considerat. Propozitia 2.19 Fie codul c : M {0, 1}l i W = c(M ). Codul c detecteaz s a k erori dac i numai dac dmin (W ) k + 1. as a S examinm acum codurile corectoare de erori. a a Denitia 2.20 Spunem despre codul c : M {0, 1}l c corecteaz k erori a a individuale dac, pentru orice cuvnt de cod w W = c(M ), prin transa a formarea lui w ca urmare a k sau mai putine erori cuvntul rezultat w are a proprietatea c w este cel mai apropiat cuvnt de w din W : a a ws W , d(w , ws ) d(w , w). Propozitia 2.21 Fie codul c : M {0, 1}l i W = c(M ). Codul c corecteaz s a k erori dac i numai dac dmin (W ) 2k + 1. as a S analizm acum ecienta codului. De obicei, datele utile pentru un a a cod detector sau corector de erori sunt iruri de biti, obtinuti prin codicarea s datelor din universul aplicatiei. Ca urmare, multimea mesajelor este multimea irurilor de n biti, M = {0, 1}n , pentru o valoare n dat. Mesajele sunt s a 1 echiprobabile, probabilitatea oricrui mesaj ind aceeai: pm = |M | = 2n , a s m M . Ca urmare, ecienta codului este n H = . l l S mai notm c |M | = |W | = 2n . a a a Constructia efectiv a unui cod detector sau corector de erori cuprinde a dou aspecte: a constructia unei multimi W {0, 1}l cu dmin (W ) sucient de mare pentru numrul de erori de detectat sau corectat i, totodat, avnd log2l|W | ct a s a a a mai mare pentru o ecient ct mai mare a codului. a a gsirea unor algoritmi ecienti pentru codicare i pentru detectarea eroa s rilor (adic vericarea apartenentei unui ir de l biti la W ) i eventual a s s corectarea erorilor (adic gsirea celui mai apropiat cuvnt din W fat a a a a de un ir de l biti dat). s
1). Cuvintele de cod sunt vzute ca ind matrici (n1 + 1) (n2 + 1) care a n ultima linie i ultima coloan cuprind bitii de control. Multimea cuvintelor de s a cod este multimea matricilor (n1 + 1) (n2 + 1) care pe ecare linie i pe n s ecare coloan numrul de valori 1 este par. a a Se poate arta uor c dmin (W ) = 4, prin urmare codul detecteaz 3 a s a a erori sau corecteaz 1 eroare. a Codicarea i detectarea erorilor se face calculnd bitul de paritate s a pentru ecare linie i pentru ecare coloan. De remarcat c ultimul bit din s a a matrice trebuie calculat e ca bit de paritate al bitilor de paritate ai liniilor, e ca bit de paritate ai bitilor de paritate ai coloanelor; ambele variante duc la acelai rezultat. s Exemplul 2.15: Pentru n1 = n2 = 4, irul 1011010111001111 se codic s a astfel: 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 Astfel, cuvntul de cod rezultat este irul: 1011101010110001111011011. a s Pentru corectarea erorilor, se caut mai ai liniile i coloanele care a nt s ncalc paritatea. Presupunnd c s-a produs o singur eroare, va exista exact a a a a o linie i o coloan. Bitul eronat este la intersectia liniei i coloanei gsite. s a s a Exemplul 2.16: Sirul 101001101011010011000111111101 nu este cuvnt de a cod: 1 0 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 Se observ c paritatea nu este respectat de linia a 2-a i de prima coloan. a a a s a Prin urmare, primul bit de pe linia a 2 este eronat, ind 0 original. Datele n utile sunt deci: 1010010101100111. 2.4.3.3. Coduri polinomiale Oricrui ir de biti v = (v1 , . . . , vk ) {0, 1}k i se asociaz un polinom a s a de grad cel mult k 1: v(X) = v1 X k1 + v2 X k2 + . . . + vk1 X + vk .
Coecienti acestui polinom sunt considerati ca elemente ale corpului F2 = ({0, 1}, +, ), unde + este operatia sau exclusiv, iar este operatia i, cu s tabelele de mai jos: + 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 De remarcat c polinoamele peste orice corp pstreaz multe din proa a a prietile polinoamelor ,,obinuite, particular se poate deni la fel adunarea, at s n scderea i a s nmultirea i are loc teorema artirii cu rest. s mp Pentru constructia unui cod polinomial, se alege un aa-numit poli s nom generator g(X) de grad l n (reamintim c l este lungimea cuvintelor a de cod, iar n este numrul de biti ai informatiei utile; n < l). Multimea cua vintelor de cod W se denete ca multimea irurilor de l biti cu proprietatea s s c polinomul asociat irului este divizibil cu g(X). a s Sirul bitilor de control se calculeaz astfel: a se construiete polinomul i(X) asociat informatiei utile, s se calculeaz r(X) ca ind restul artirii lui i(X) X ln la g(X) a mp irul bitilor de control este irul de l n biti al crui polinom asociat este s s a r(X). Pentru a ne convinge de corectitudinea algoritmului de mai sus, s a observm c obtinem ca i cuvnt de cod un ir de forma i1 , . . . , in , r1 , . . . , rln a a s a s al crui polinom asociat este a v(X) =i1 X l1 + . . . + in X ln + r1 X ln1 + . . . + rln = =i(X) X ln + r(X). Deoarece r(X) este restul artirii lui i(X) X ln la g(X), rezult c polimp a a nomul i(X) X ln r(X) este divizibil cu g(X). Deoarece F2 avem c n a 1 + 1 = 0 rezult c r(X) = r(X). De aici rezult c v(X) este divizibil cu a a a a g(X). Codurile polinomiale sunt mult utilizate datorit simplitii construca at iei unor circuite (hardware) care calculeaz bitii de control. t a Dac se dorete corectarea erorilor, se observ c pozitiile erorilor nu a s a a depind dect de restul artirii polinomului asociat irului de biti receptionat, a mp s v (X), la g(X).
Limbajul natural contine mult redundant; ca urmare permite de a a tetcarea i coerctarea multor ,,erori de tipar, dup cum v puteti convinge s a a uor citind aceast fraz. Din pcate a, nu garanteaz detectarea nici mcar s a a a ns a a a unei singure erori; sunt cazuri care o singur eroare poate schimba radial n a sensul unei fraze. Transmisia vocii prin radio sau prin telefonie analogic este general a n zgomotoas i adesea cu distorsiuni puternice. Ca urmare, riscul erorilor de as transmisie este ridicat. Cum, pe de alt parte, diverse indicative cum ar a numere de telefon, numere de nmatriculare, .a.m.d. nu contin redundant, s a la transmiterea acestora cifrele se pronunt cu anumite modicri, iar pentru a a litere se pronunt un cuvnt a a ntreg, dintr-un set standardizat, care ncepe cu litera ce se dorete a transmis. De exemplu, 2 minute se va pronunta doi s a minute, pentru a evita confuzia dou -nou ; de asemenea 7 se pronunt epte. a a a s Ca un alt exemplu, englez, indicativul ROT209 se va pronunta Romeo n a Oscar Tango Two Zero Niner. sfrit, codul numeric personal (CNP), codul IBAN, ISBN-ul de In a s pe crti i alte asemenea coduri de identicare ce sunt transmise frecvent prin a s intermediul unor operatori umani au o cifr de control. a
Capitolul 3
Nivelul zic
Nivelul zic Sursa Emittor a Sir de biti Semnal Mediu Receptor Semnal Destinatie Sir de biti
Emittorul transform irul de biti receptionat a as ntr-un semnal adecvat transmiterii prin mediul de comunicatie. Receptorul efectueaz operatia a invers. Corespondenta dintre irurile de biti posibile i semnalele corespunztoare a s s a poart denumirea de schem de codicare a informatiei prin semnal continuu. a a Schema de codicare utilizat trebuie s e aceeai pentru emittor a a s a i receptor. s Mediul de transmisie modic general semnalul transmis, astfel c a n a semnalul primit de receptor de la mediu nu este identic cu semnalul aplicat de emittor asupra mediului. Vom arta 3.2 care sunt transformrile suferite a a n a de semnal timpul propagrii. Schema de codicare a informatiei trebuie s n a a in cont de aceste modicri. O parte din schemele folosite vor studiate t a a n 3.3. continuarea acestui capitol vom trece revist problemele speciIn n a ce legate de transmiterea semnalelor i de codicarea informatiei prin sems nale. O analiz riguroas a acestor probleme depete cu mult cadrul acestei a a as s lucrri. Prezentarea de fat are ca scop familiarizarea cu notiunile i proba a s lemele respective, vederea elegerii solutiilor existente, limitrilor lor, n nt a parametrilor specicati documentatiile privind echipamentele folosite i, n s mai ales, posibilitii comunicrii cu specialitii domeniul electronicii i at a s n s comunicatiilor.
la jonctiunea dintre mediu i receptor se numete semnal receptionat i vom s s s l nota cu Ur (t). Transformrile suferite de semnal sunt urmtoarele: a a arziereaconst faptul c semnalul receptionat urmeaz cu o anumit nt a n a a a arziere semnalul emis. Cu notatiile de mai sus i neglijnd fenomenele nt s a ce vor descrise la punctele urmtoare, avem Ur (t) = Ue (t t). Dua rata t se numete arziere (de propagare) sau timp de propagare. s nt arzierea are valoarea t = l , unde l este lungimea mediului iar Int v v este viteza de propagare a semnalului. Viteza de propagare a semnalului depinde de natura mediului de transmisie. La transmisia prin conductoare, v depinde numai de materialul izolator dintre conductoare i, pentru materialele folosite mod curent, are valoarea aproximativ s n a v 2/3c = 2 108 m/s, unde c este viteza luminii vid. n atenuarea const faptul c semnalul receptionat are amplitudine mai a n a mic dect cel emis. Neglijnd arzierea, are loc Ur (t) = g Ue (t), cu a a a nt 0 < g < 1. Tinnd cont i de arziere, avem Ur (t) = g Ue (t t). a s nt Numrul 1/g se numete factor de atenuare tensiune. a s n De cele mai multe ori atenuarea unui semnal este exprimat prin a factorul de atenuare putere, numit pe scurt factor de atenuare, denit n ca raportul dintre puterea semnalului emis i a celui receptionat. cazul s In perechii de conductoare, deoarece puterea este proportional cu ptratul a a tensiunii (raportul tensiune/intensitate ind aproximativ constant), factorul de atenuare putere este egal cu 1/g 2 . n Prin conectarea unul dup cellalt a mai multor medii de transa a misie, factorul de atenuare a mediului rezultat este produsul factorilor de atenuare ai componentelor. Din acest motiv, loc de factorul de n atenuare se folosete adesea logaritmul su: logaritmul factorului de s a atenuare rezultat este suma logaritmilor, aceeai baz, ai factorilor de n s a atenuare ai componentelor. Logaritmul factorului de atenuare se numete pe scurt atenuare. s Valoarea logaritmului depinde de baza utilizat, baze diferite dua cnd la valori proportionale. Deoarece schimbarea bazei de logaritmare a are un efect similar cu schimbarea unitii de msur pentru o mrime at a a a zic, dup valoarea logaritmului se scrie o pseudo-unitate de msur a a a a ce arat de fapt baza de logaritmare utilizat. Pentru logaritmul a a n baza zece, pseudo-unitatea de msur folosit este bel ul, avnd sima a a a bolul B. Pseudo-unitatea de msur utilizat curent este decibel ul, a a a avnd simbolul dB. Avem 1 B=10 dB. O valoare exprimat decia a n beli (dB) o putem vedea, echivalent, e ca valoarea logaritmului baza n
10 nmultit cu 10, e ca valoarea logaritmului baza 101/10 . De ex a n 2 ) = 10, logaritmul su este emplu, dac factorul de atenuare este (1/g a a 1 B = 10 dB. Dac factorul de atenuare este 2, logaritmul su (atena a uarea) este log10 2 B 0,3 B = 3 dB. Puterea semnalului emis se msoar watti (W) sau miliwatti a a n (mW). Adesea, este specicat nu puterea ci logaritmul puterii: se ia a numrul ce reprezint puterea, miliwatti, i logaritmul su se exprim a a n s a a decibeli. Pseudo-unitatea de msur corespunztoare reprezentrii n a a a a de mai sus se numete decibel-miliwatt, avnd simbolul (neconform regs a ulilor Sistemului International de Masuri i Uniti) dBm. Ca exemple: s at o putere de emisie de 1 mW poate scris i 0 dBm, o putere de 1 W as se scrie 30 dBm, iar 0,1 mW se scrie ca 10 dBm. Puterea minim a semnalului receptionat, pentru care receptorul a este capabil s decodice corect semnalul, se numete pragul de sensibila s itate al receptorului. Ca i puterea emittorului, pragul de sensibilitate s a se poate exprima miliwatti sau decibel-miliwatti. n n distorsiunea este o modicare determinist a semnalului receptionat fat a a de cel emis, diferit de arziere i atenuare. (O modicare este detera nt s minist dac, oridecteori transmitem un acelai semnal, modicarea se a a a s manifest identic.) Mai multe detalii despre distorsiuni vor date a n 3.2.2. zgomotele sunt modicri nedeterministe ale semnalului receptionat, a cauzate de factori externi sistemului de transmisie (fulgere, ntreruptoare a electrice, alte sisteme de transmisie de date, alte echipamente electronice) sau de factori interni cu manifestare aleatoare (micarea de agitatie s termic a atomilor din dispozitivele electornice). a Zgomotul se exprim ca diferenta dintre semnalul receptionat efeca tiv i semnalul ce ar receptionat lipsa zgomotului. Raportul sems n nal/zgomot este raportul dintre puterea semnalului i puterea cores spunztoare zgomotului. Uneori termenul de raport semnal/zgomot este a utilizat i pentru logaritmul raportului semnal/zgomot; de obicei nu este s pericol de confuzie deoarece logaritmul este exprimat decibeli, timp n n ce raportul semnal/zgomot nu are unitate de msur. a a O categorie special de zgomot este diafonia, care este un zgomot a provenit din semnalul transmis pe un mediu de transmisie vecin.
(g. 3.2). particular, o pereche de conductoare folosit pentru transmisie In a poate considerat un astfel de dispozitiv, capetele dinspre emittor constia a tuind intrarea, iar cele dinspre receptor, ieirea. s
Ui
Ue
Tensiunea de la ieire depinde de tensiunea de la intrare, a s ns n general depinde de tot istoricul ei. Altfel spus, comportamentul dispozitivului poate descris de un operator L (reamintim c un operator este o functie a denit pe un spatiu de functii cu valori tot a ntr-un spatiu de functii). Acest operator primete ca argument functia timp-tensiune Ui care caracterizeaz s a semnalul de intrare. Valoarea operatorului este functia timp-tensiune Ue = L(Ui ) care caracterizeaz semnalul de ieire. a s Multe dispozitive electronice au un comportament liniar, adic opa eratorul L care le caracterizeaz este un operator liniar. Reamintim c un a a operator L este liniar dac, pentru orice functii f i g i pentru orice scalari a s s i , are loc s L(f + g) = L(f ) + L(g). Pentru un dispozitiv liniar, dac semnalul de intrare Ui (t) poate a descompus ca o sum de forma a Ui (t) = 1 Ui1 (t) + 2 Ui2 (t) + + n Uin (t), atunci pentru semnalul de ieire avem s Ue (t) = L(Ui )(t) = 1 Ue1 (t) + 2 Ue2 (t) + + n Uen (t), unde Ue1 = L(Ui1 ), Ue2 = L(Ui2 ),. . . ,Uen = L(Uin ). Dispozitivele liniare au proprietatea c, dac semnalul de intrare este a a sinusoidal , adic a Ui (t) = U0 cos (2f t + ) , atunci semnalul de ieire este tot sinusoidal i, mai mult, s s Ue (t) = g(f ) U0 cos(2f t + (f )),
unde g(f ) i (f ) depind doar de cum este construit dispozitivul i de frecventa s s f a semnalului. Orice semnal se poate scrie unic ca o sum de semnale sinusoidale. a (Nota: conditiile matematice asupra semnalului, i alte detalii se gsesc s a n lucrrile de specialitate, de exemplu [Crstici et al. 1981]; aici facem doar o a prezentare semi-intuitiv). a Un semnal periodic de perioad T se poate descompune aa-numita a n s serie Fourier :
U (t) =
k=0
ak cos
2k t + k . T
Un semnal limitat timp, adic nul afara unui interval nit [0, T ], n a n se poate descompune sub forma:
U (t) =
0
(3.1)
Not: relatia (3.1) este dat de obicei sub forma numit transformata a a a Fourier invers : a U (t) =
I R
U (f ) e2if t df,
(3.2)
unde U este o functie complex care se numete transformata Fourier a functiei a s U. Relatia (3.1) spune c semnalul U se poate scrie ca o sum de sinu a a soide cu diferite frecvente f avnd amplitudinile a(f ) i defazajul (decalajul a s sinusoidei de-a lungul axei Ox) egal cu (f ). Frecventele f pentru care amplitudinile corespunztoare a(f ) sunt a nenule alctuiesc spectrul semnalului. a Pentru un dispozitiv liniar, semnalul de ieire se poate calcula des scompunnd sinusoide semnalul de intrare, calculnd efectul dispozitivului a n a asupra ecrei sinusoide parte i a n s nsumnd nal ieirile: a n s
=
0
=
0
unde ai (f ) i i (f ) sunt functiile a(f ) i (f ) din descompunerea, conform s s relatiei (3.1), a semnalului de intrare Ui . Comportamentul unui dispozitiv liniar este deci complet denit de functiile g(f ) i (f ). s Un semnal este nedistorsionat dac i numai dac, pentru toate frecas a ventele f din spectrul semnalului, g(f ) este constant i (f ) este proportional as cu f , adic exist constantele g0 i 0 astfel at a a s nc g(f ) = g0 (f ) = 0 f (3.4)
pentru toate frecventele f din spectrul semnalului. practic, conditia (3.4) este satisfcut, cu o aproximatie acceptIn a a a abil, doar pentru frecvente care se a ncadreaz a ntr-un anumit interval f [fmin , fmax ]. Acest interval se numete banda de trecere a dispozitivului. s In consecint, dac spectrul semnalului de intrare se a a ncadreaz banda de trea n cere a dispozitivului, semnalul de ieire va prezenta distorsiuni acceptabil de s mici. Diferenta fmax fmin se numete limea de band a dispozitivului. s at a De exemplu, banda de trecere a unei linii telefonice este cuprins a ntre aproximativ 300 Hz i 3 kHz. s
ecrui bit, semnalul emis va avea o anumit valoare de exemplu 12 V a a dac bitul are valoarea 1 i o alt valoare de exemplu 0 V dac bitul are a s a a valoarea 0 (vezi g. 3.3).
Receptorul determin intervalele corespunztoare bitilor i msoar a a s a a semnalul la mijlocul ecrui interval. Dac tensiunea este mai mare dect o a a a valoare numit prag pentru exemplul nostru se poate lua ca prag 3 V a receptorul decide c bitul respectiv are valoarea 1, iar caz contrar decide c a n a bitul are valoarea 0. Valoarea pragului poate x sau poate stabilit dinamic functie a a n de amplitudinea semnalului receptionat pentru a ine cont de atenuare. t S observm c receptorul trebuie s e sincronizat cu emittorul, a a a a a adic s examineze semnalul receptionat la mijlocul intervalului corespunztor a a a unui bit. Acest lucru se poate face a este adesea nepractic transmitnd ns a un al doilea semnal, de sincronizare, pe un mediu separat (adic folosind o alt a a pereche de re). Sincronizarea se poate face i pe baza semnalului util, dac receptorul s a dispune de un ceas sucient de precis. acest scop, receptorul va msura In a timpul ct semnalul este ,,sus (peste prag) i va determina de cte ori se a s a cuprinde acest interval durata unui bit. Numrul de biti consecutivi identici n a trebuie s e limitat, cci receptorul nu va putea distinge a a ntre n biti i n + 1 s biti consecutivi avnd aceeai valoare, dac n este prea mare. a s a Limitarea numrului de biti identici consecutivi se poate face mai a n multe feluri: Codicarea Manchester. Semnalul are una sau dou tranzitii pentru a ecare interval corespunztor unui bit. O tranzitie la mijlocul intervala ului arat valoarea bitului: tranzitia este sus pentru 1 i jos pentru a n s n 0. Pentru a face posibil ca doi biti consecutivi s aib aceeai valoare, a a s la nceputul intervalului corespunztor unui bit mai poate s apar o a a a tranzitie (g. 3.4).
Codicarea Manchester diferential. Semnalul are o tranzitie la a nceputul ecrui interval de bit. Dac bitul este 1 atunci semnalul mai are a a o tranzitie la mijlocul intervalului (g. 3.5).
Codurile de grup sunt o familie de coduri construite dup urmtoarea a a schem: a Se xeaz un numr n (valori uzuale: n = 4 sau n = 8); irul a a s transmis trebuie s aib ca lungime un multiplu de n biti. a a Se xeaz o tabel de corespondent care asociaz ecruia dintre a a a a a cele 2n iruri de n biti posibile un ir de m biti, unde m > n este xat, cu s s restrictia ca ntre cei m biti s nu e prea multe valori egale consecutive. a Codul este determinat de numrele n i m i de aceast tabel. s s a a Sirul de biti de codicat se codic astfel: mai ai, ecare grup a nt de n biti consecutivi se nlocuiete cu irul de m biti asociat. Apoi irul s s s de biti astfel obtinut se codic direct, un bit 0 ind reprezentat printr-o a valoare a tensiunii i un bit 1 prin alt valoare. s a Retelele Ethernet de 100 Mbit/s utilizeaz un cod de grup cu n = 4 a i m = 5. s
S examinm acum cerintele privind banda de trecere a mediului a a necesar pentru transmiterea semnalelor de mai sus. a Semnalele de form rectangular descrise mai sus au spectru ina a nit (spectrul lor nu este mrginit superior). Trecute printr-un mediu de a comunicatie care are o lime de band nit, semnalele vor ,,rotunjite mai at a a mult sau mai putin. S notm cu durata elementar a unui palier al semnalului ideal a a a (durata minim care semnalul ideal are o valoare constant). Pentru a n a codicarea direct, = t; pentru codicarile Manchester i Manchester a s diferential, = 1 t. a 2 1 Dac banda de trecere a mediului include intervalul 0, 2 , atunci a mediul pstreaz sucient din forma semnalului pentru ca receptorul s poat a a a a decodica informatia transmis. Dac frecventa maxim a benzii de trecere a a a este mai mic dect 2 , atunci un semnal rectangular care are, alternativ, un a a 1 timp o valoare i urmtorul timp cealalt valoare va distorsionat att s a a a de mult at ,,urcuurile i ,,coborurile semnalului nu vor mai putea nc s s as identicate de ctre receptor i ca urmare informatia purtat nu mai poate a s a obtinut. a Pentru un mediu dat, cu o band de trecere dat, exist, prin urmare, a a a o valoare minim a lui pentru care receptorul poate extrage informatia util a a din semnalul receptionat. Dac limita superioar a benzii de trecere este fmax , a a 1 valoarea minim este = 2fmax . a Diversele codicri studiate mai sus au diferite rapoarte k a ntre durata medie a unui bit i valoarea lui . La codicarea direct, durata unui s a bit este egal cu i deci k = 1. La codicrile Manchester i Manchester a s a s diferential, durata unui bit este 2 i avem k = 2. La codurile de grup, durata a s s unui bit util este m i avem k = m . Debitul maxim cu care se pot transmite n n datele este fmax . k
3.3.2. Modulatia
Exist situatii care este necesar ca spectrul semnalului s ocupe a n a o band departe de frecventa zero. Aceasta se poate ampla e pentru c a nt a circuitele sau mediul de transmisie nu pot transmite frecventele apropiate de zero (este de exemplu cazul transmiterii prin unde radio), e pentru a putea transmite mai multe semnale pe acelai mediu prin multiplexare frecvent s n a (vezi 3.3.3). aceste situatii, semnalul rezultat direct urma uneia dintre schemele In n de codicare descrise paragraful precedent nu poate transmis direct. O n posibil solutie este modulatia, descris continuare. a a n
Semnalul transmis efectiv este de forma: U (t) = a sin(2f t + ), unde unul dintre parametri a, f sau variaz timp, functie de semnalul a n n original, rezultat direct din codicare. Semnalul original numim semnal primar sau semnal modulator. l Semnalul sinusoidal, rezultat pentru valorile ,,de repaus ale parametrilor a, f i , se numete semnal purttor, iar frecventa f de repaus se numete s s a s frecventa purttoare i o vom nota continuare cu fp . a s n Semnalul rezultat urma modulatiei se numete semnal modulat. n s Operatia de constructie a semnalului modulat pornind de la semnalul primar se numete modulatie. Operatia invers, de obtinere a semnalului pris a mar dndu-se semnalul modulat, se numete demodulatie. a s Dup parametrul modicat, avem: a modulatia de amplitudine (prescurtat MA, engl. amplitude modulation, AM ), care const modicarea amplitudinii a. Semnalul transmis este a n deci: U (t) = U0 s(t) sin(2fp t), unde s(t) este semnalul modulator. Pentru ca amplitudinea a = U0 s(t) s e mai mare dect 0, asupra semnalului s(t) se impune restrictia a a s(t) > 0. Se observ c modulatia amplitudine este liniar (modulatia a a n a sumei a dou semnale a + b este suma rezultatelor modulatiei indepena dente pentru a i b). s Dac semnalul modulator este sinusoidal a s(t) = 1 + m sin(2fs t + ) atunci U (t) =U0 s(t) sin(2fp t) = =U0 (sin(2fp t) + m sin(2fs t + ) sin(2fp t)) = =U0 + sin(2fp t)+ (3.5)
m m cos(2(fp fs )t ) cos(2(fp + fs )t + ) 2 2
adic urma modulatiei amplitudine cu un semnal sinusoidal de a n n frecvent fs se obtine o sum de trei semnale sinusoidale avnd frecvena a a ele fp fs , fp i fp + fs . t s Din liniaritatea modulatiei amplitudine i din relatia (3.5) de n s ducem c, pentru un semnal modulator avnd un anumit spectru, speca a trul semnalului modulat contine frecventa purttoare i dou benzi lat a s a erale, stng i dreapt, acestea cuprinznd diferentele, respectiv sumele, a as a a dintre frecventa purttoare i frecventele din spectrul semnalului primar. a s Intruct spectrul semnalului modulat este simetric jurul freca n ventei purttoare, de fapt doar una dintre benzile laterale poart infor a a matie util. Din acest motiv, adesea se suprim total sau partial de la a a transimisie una dintre benzile laterale. modulatia de frecvent (prescurtat MF, engl. frequency modulation, a FM ), care const modicarea frecventei f jurul frecventei pura n n ttoare fp . a Semnalul transmis are forma U (t) = U0 sin 2 (fp + m s(t)) t unde, din nou, fp este frecventa purttoare, s(t) este semnalul modulator, a iar m este o constant. Semnalul modulator trebuie s respecte restrictia a a m s(t)s0 fp . Analiza spectrului unui semnal modulat frecvent este mult mai n a difcil dect cazul modulatiei amplitudine. a a n n modulatia de faz, care const modicarea fazei . a a n Semnalul transmis are forma U (t) = U0 sin 2fp t + m s(t) Este evident c, a ntruct receptorul nu are de obicei un reper aba solut de timp, el nu poate detecta dect variatiile de faz ale semnalului a a receptionat. Ca urmare, o valoare constant a lui s(t) nu poate de a osebit de zero i, mai mult, nici variatii lente ale lui s(t) nu pot a s detectate. consecint, spectrul lui s(t) nu poate contine frecvente In a prea apropiate de 0. Exist i posibilitatea de-a varia simultan doi sau chiar toti cei trei as parametri. Modulatia cuadratur const varierea simultan a amplitu n a a n a dinii a i a fazei , pentru a transmite simultan dou semnale utile s1 i s2 . s a s
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. prezenta zgomotului, receptorul nu poate distinge In ntre dou vala ori posibile ale semnalului la un anumit moment de timp dect dac a a diferenta dintre cele dou valori este mai mare dect amplitudinea zgo a a motului. Ca urmare, cantitatea de informatie purtat de un eantion este a s limitat la o valoare proportional cu log(s/n + 1). a a Deoarece pentru o schem de codicare xat exist o relatie de a a a proportionalitate ntre limea de band a mediului i debitul maxim al transat a s misiei, debitul maxim al transmisiei unui echipament de comunicatie se nu mete uneori mod impropriu tot lime de band sau band de trecere. s n at a a
Avantajul este, evident, reducerea costului, iar dezavantajul este mrirea a diafoniei ntre circuite. Din cauza diafoniei i sensibilitii la zgomote, perechea simpl se s at a utilizeaz doar pe distante mici. a Perechea torsadat (engl. twisted pair ), care conductoarele sunt rsucia n a te unul jurul celuilalt. Rolul rsucirii este de-a micora interactiunea n a s cu cmpul electromagnetic a nconjurtor, adic micorerea zgomotului a a s indus de un cmp electromagnetic a nconjurtor i, totodat, micorarea a s a s cmpului electromagnetic produs de semnalul ce trece prin perechea de a conductoare. Acest lucru este important special pentru micorarea din s afoniei cu celelalte perechi de conductoare din acelai cablu. afar de s In a rsucire, restul constructiei este identic cu perechea simpl. Cablurile a a a formate din perechi torsadate nu au niciodat un conductor comun pena tru mai multe circuite. Este important ca, cazul unui cablu ce contine mai multe perechi n torsadate, ecare circuit de comunicatie s utilizeze conductoarele din a aceeai pereche i nu un conductor dintr-o pereche i un conductor din s s s alt pereche. caz contrar, apare diafonie foarte puternic a In a ntre circuite (mai mare dect la perechea simpl). De remarcat c aceast a a a a greeal este uor de comis urma unei identicri greite a conducs a s n a s toarelor dintr-un cablu i nu este pus evident de dispozitivele simple s a n a de testare, care veric doar continuitatea curent continuu a conduca n toarelor cablului. Perechea coaxial are unul din conductoare forma unui cilindru gol a n n interior, iar cellalt conductor este dus prin interiorul primului conduca tor i izolat electric fat de acesta. Conductorul exterior este format s a de obicei dintr-o plas format din srme subtiri de cupru, aurate a a a nfs elicoidal, o parte din re ind aurate nfs ntr-un sens i alt parte s a n cellalt sens. a Cablul coaxial este i mai protejat de interferente dect perechea s a torsadat. Are de obicei atenuare mai mic dect perechea simpl sau a a a a cea torsadat. Costul este a mai ridicat. a ns oricare dintre variante, pentru a reduce suplimentar interferentele In cu cmpul electromagnetic a nconjurtor, perechea de conductoare poate a ecranat , adic a a nvelit a ntr-un strat conductor continuu. Pentru ca ecranul s e ecient, trebuie s aib continuitate de jur a a a mprejurul conductoarelor (dac este realizat prin aurarea unei foite metalice, marginile foitei trebuie a nfs s fac contact ferm a a ntre ele) i pe lungime (s aib legtur prin conectoare s a a a a
ctre elemente de ecranare ale echipamentelor la care este conectat cablul). a Ecranul unui cablu poate colectiv, mbrcnd a a ntreg cablul, sau individual pentru ecare pereche de conductoare. Pe lng elementele cu rol electric, un cablu contine elemente cu rol a a de protectie. Orice cablu este aurat cel putin nfs ntr-o manta de protectie, care ine la un loc i protejeaz mecanic conductoarele. Mantaua de protectie t s a este fabricat de obicei din PVC. a Un cablu destinat montrii aerian trebuie s e prevzut cu un cablu a a a de otel pentru sustinere mecanic. Un cablu destinat montrii subteran trebuie a a prevzut cu un scut metalic contra roztoarelor. a a
observ c intensitatea curentului ce trece prin surs i prin captul dina a as a spre surs al cablului este proportional cu tensiunea. Raportul dintre a a tensiune i intensitate se numete impedanta caracteristic a cablului. s s a Receptorul se caracterizeaz i el printr-o impedant de intrare, a s a denit ca raportul dintre tensiunea aplicat la bornele receptorului i a a s intensitatea curentului absorbit de receptor. Emittorul se caractera izeaz printr-o impedanta de ieire, denit ca raportul dintre scderea a s a a tensiunii la borne cauzat de absorbtia unui curent de ctre un dispozitiv a a montat la bornele emittorului i intensitatea curentului absorbit. a s Dac la un capt de cablu de o anumit impedant legm un a a a a a cablu de alt impedant sau dac emittorul sau receptorul ataat are a a a a s alt impedant dect impedanta caracteristic a cablului, spunem c a a a a a avem o neadaptare de impedant. acest caz, jonctiunea respectiv a In a reect o parte din semnalul incident (este analog reexiei luminii la a trecerea din aer sticl, sau general n a n ntre medii cu indice de refractie diferit). Reexia produce dou neajunsuri: pe de o parte scade puterea a semnalului util ce ajunge la receptor, iar pe de alt parte un semnal ce a sufer dou reexii succesive se poate suprapune peste semnalul util i, a a s ind arziat fat de acesta, distorsioneaz. nt a l a Impedanta se msoar ohmi (simbol ). Cablul pentru televiz a a n iune are impedanta de 75 . Cablul coaxial pentru retea Ethernet are impedanta de 50 . Cablul torsadat Ethernet are 100 .
neadaptare de impedant, a nu permit propagarea semnalului de la ecare a ns ramur spre toate celelalte. a O alt solutie de conectare a mai multor dispozitive (emittoare sau a a receptoare) la un cablu const realizarea unei ramicatii foarte scurte, asta n fel at s nu aib comportament de linie lung (la frecventele cu care se lunc a a a creaz uzual, aceasta a nseamn cel mult civa centimetri), la captul creia se a at a a conecteaz emittorul sau receptorul. Emittorul sau receptorul astfel coneca a a tat trebuie s aib impedanta de ieire, respectiv de intrare, mult mai mare a a s dect impedanta perechii de conductoare la care se conecteaz. O astfel de a a conectare se utilizeaz, de exemplu, retelele Ethernet vechi (vezi 9.1.3 i a n s g. 9.1). Dac un capt de pereche de conductoare este lsat liber (neconeca a a tat), el produce reexii. De fapt, un capt neconectat poate vzut ca o a a jonctiune de la perechea ce are o anumit impedant la un dispozitiv avnd a a a impedanta innit. Pentru evitarea reexiilor, la captul unei perechi de a a conductoare trebuie montat un dispozitiv numit terminator . Terminatorul este un simplu rezistor, avnd rezistenta egal cu impedanta cablului. El aba a soarbe integral semnalul incident, neproducnd nici un fel de reexie. Notm a a c terminatoarele sunt utilizate mod normal doar pe legturi magistral; a n a a pe legturile punct la punct, emittorul i receptorul au, mod obinuit, a a s n s impedanta necesar, astel at joac i rol de terminator. a nc as
toare este expus atingerii cu mna (este cazul la retelele Ethernet cu cablu a coaxial, unde conductorul exterior este legat la partea metalic exterioar a a a conectoarelor), standardele de protectie la electrocutare cer legarea la pmnt a a a conductorului respectiv; legarea la pmnt trebuie a fcut a a ns a a ntr-un singur punct pentru a evita suprapunerea peste semnalul util a tensiunilor dintre diverse puncte ale retelei de pmntare. a a O alt surs de tensiuni parazite a a ntre conductoarele de semnal sunt descrcrile electrice din atmosfer (fulgerele i trznetele). Deoarece mod a a a s a n normal conductoarele retelei sunt izolate fat de reteaua de pmntare, fenomenele a a a atmosferice pot induce tensiuni ridicate ntre conductoarele retelei i carcasele s echipamentelor, putnd duce la distrugerea echipamentelor retelei. Ca ura mare, cazul unor cabluri de retea duse prin exteriorul cldirilor, este necen a sar e ecranarea cablului i legarea ecranului la pmnt, e amplasarea unor a s a a descrctoare care s limiteze tensiunea dintre conductoarele retelei i pmnt. a a a s a a
De interes practic retelele de calculatoare sunt undele radio n n intervalul 300 MHz 30 GHz, sau echivalent, cu lungimile de und cuprinse a ntre 1 m i 1 cm. s La transmisia prin unde radio, mrimile zice utilizate ca semnal a sunt intensitatea cmpului electric i inductia magnetic. Cele dou mrimi a s a a a sunt proportionale modul i au directii perpendiculare una pe cealalt i pe n s as directia de propagare a undei. Intr-un sistem de transmisie prin unde radio, emittorul cuprinde a dou blocuri distincte: un dispozitiv electronic, care produce un semnal de a tip tensiune i intensitate electric, i antena, care convertete semnalul din s a s s tensiune i intensitate electric cmp electromagnetic. s a n a Receptorul const de asemenea dintr-o anten, care plasat calea a a a n undelor electromagnetice transform semnalul din cmp electromangetic a a n tensiune i intensitate electric, i un dispozitiv electronic, care decodic s a s a semnalul electric. Orice anten poate servi att la emisie ct i la receptie. (Singura a a a s diferent ce apare a ntre antene este c antenele de emisie de putere mare a trebuie construite astfel at s suporte tensiunile i curentii mari ce apar nc a s n elementele lor.) Mai multe proprieti ale sistemului de transmisie fac ca limea benat at zii de trecere a ntregului sistem s e a ngust raport cu frecventele a n ntre care se ncadreaz banda de trecere; raportul a ntre limea benzii i limita at s inferioar a benzii este mod tipic de cel mult cteva procente. Din aceast a n a a cauz, transmisia prin unde radio este a ntotdeauna cu modulatie, iar frecventa purttoare este cel putin de cteva zeci de ori mai mare dect limea de band. a a a at a De exemplu, pentru o vitez de transmisie de 10 Mbit/s avem mod a n tipic nevoie de o lime de band apropiat de 10 MHz, pentru care frecventa at a a purttoare va de cel putin 200 MHz. a
fasciculul se numete polarizat liniar. Un fascicul polarizat liniar se caracters izeaz prin directia vectorului E, numit directia de polarizare. a a Dac E are modul constant i directia lui se rotete uniform, plan a s s n perpendicular pe directia de deplasare a undei, fasciculul se numete polarizat s circular. Se distinge polarizare circular stng dac, privind directia de a a a a n propagare a undelor, dinspre emittor spre receptor, directia lui E se rotete a s sens invers acelor de ceas; i polarizare circular dreapt dac E se rotete n s a a a s sensul acelor de ceas. n Un fascicol cu polarizare circular rezult de fapt prin suprapunerea a a a dou fascicole, de amplitudine egal, polarizate perpendicular unul pe cellalt, a a a deplasndu-se aceeai directie i cu un decalaj de un sfert de ciclu a n s s ntre ele. Dac cele dou fascicole au amplitudini diferite, rezult ceea ce se numete a a a s polarizare eliptic ; polarizarea liniar i polarizarea circular sunt de fapt a a s a cazuri particulare de polarizare eliptic. a 3.5.1.2. Absorbtia i reexia s Absorbtia undelor radio aer este neglijabil. n a Picturile de ap (din ploaie, nori, ceat) absorb destul de puternic a a a undele radio, special microundele. Apa absoarbe puternic toate undele ran dio; de aceea este greu de obtinut legtur radio sub ap. Absorbtie moderat a a a a se produce pmnt i diferite materiale de constructie. n a a s n Scderea puterii undelor radio datorit absorbtiei este exponential a a a cu distanta, ca i cazul propagrii semnalelor prin cabluri. s n a Metalele reect undele radio. Plasele metalice care au contact bun a ntre rele componente i au ochiurile mult mai mici dect lungimea de und se s a a comport ca o suprafat metalic compact. Armturile cldirilor din beton a a a a a a armat nu fac contact electric prea bun ntre ele, a perturb serios propagarea ns a undelor radio. Ionosfera reect undele cu lungimi de und de ordinul metrilor; prin a a reexii repetate ntre Pmnt si ionosfer, aceste unde pot parcurge uor multe a a a s mii de kilometri. 3.5.1.3. Difractia Orice und ocolete obstacolele mai mici dect o fractiune din lungimea a s a de und, vreme ce spatele obstacolelor mai mari de ctea lungimi de und a n n a a ,,rmne umbr. De aceea, undele lungi, cu lungime de und de ordinul kiloa a a a metrilor sau sutelor de metri sunt capabile s ocoleasc obstacole mari, inclua a siv curbura Pmntului pe distant de cteva sute sau chiar mii de kilometri. a a a a Prin contrast, undele cu lungime de und sub civa metri se propag aproape a at a numai linie dreapt, dealurile sau cldirile mai mari putnd provoca umbre. n a a a
3.5.1.4. Interferenta undelor Dac a ntr-un punct ajung unde pe mai multe ci, de exemplu o cale a direct i o cale prin reexia pe un obstacol, unda receptionat acel punct as a n este suma undelor ce ajung pe toate cile. a Dac diferenta de drum a ntre dou ci este un numr a a a ntreg de lungimi de und, dar mult mai mic dect lungimea unui bit, undele se suprapun faz a a a n a i se adun, semnalul receptionat ind mai puternic. Dac diferenta de drum s a a este apropiat de un numr impar de lungimi de und, undele se suprapun a a a antifaz i se anuleaz reciproc, semnalul receptionat ind slab sau nul. n as a In aceste situatii, deplasarea receptorului (sau emittorului) pe o distant de la a a un sfert din lungimea de und i pn la de cteva ori lungimea de und poate as a a a a modica mult calitatea semnalului (reaminitim c transmisiile de date se a n utilizeaz lungimi de und cuprinse a a ntre 1 cm i 1 m). Schimbarea lungimii s de und pe care se face transmisia poate de asemenea modica mult efectul. a Dac diferenta de drum a ntre semnalele receptionate pe ci diferite a este comparabil sau mai mare dect lungimea unui bit i puterile semnalului a a s pe cele dou ci sunt apropiate, semnalele propagate pe cele dou ci se bruiaz a a a a a reciproc. Situatia apare mult mai rar dect cea prezentat mai sus, a nu a a ns poate corectat dect prin mutarea statiilor fat de obstacolele ce produc a a a reexiile. 3.5.1.5. Divergenta undelor Pe msur ce ne deprtm de emittor, puterea semnalului scade daa a a a a torit extinderii frontului de und. Densitatea puterii este invers proportional a a a cu suprafata frontului de und, care la rndul ei este proportional cu ptratul a a a a distantei fat de emittor. a a Ca urmare, puterea receptionat Pr este invers proportional cu p a a a tratul distantei d dintre emittor i receptor: a s Pr = Pe 1 d2
unde este o constant ce depinde de constructia antenelor de emisie i de a s receptie, iar Pe este puterea emittorului. a Scderea puterii datorit extinderii frontului de und este indepena a a dent de eventuala absorbtie a undelor mediu; aceasta din urm duce la o a n a scdere exponential cu distanta a puterii semnalului. a a
3.5.2. Antene
O anten este un dispozitiv care realizeaz conversia a a ntre un semnal electric (tensiune i intensitate electric) pe o pereche de conductoare i s a s
oscilatiile electromagnetice mediul n nconjurtor antenei. Orice anten este a a reversibil: dac i se aplic un semnal electric la borne, va radia unde electroa a a magnetice i, reciproc, dac este plasat calea undelor electromagnetice, va s a a n produce semnal electric la borne. general o anten este optimizat pentru o anumit band de treIn a a a a cere. O anten are un anumit randament, denit ca raportul dintre puta erea undei electromagnetice radiate i puterea absorbit din semnalul electric s a primit. 3.5.2.1. Directivitatea O anten nu radiaz uniform de jur a a mprejur. Prin ctigul (engl. as gain) unei antene pe o directie se elege raportul dintre puterea radiat pe nt a acea directie i puterea radiat de o anten etalon, aceleai conditii. Ca s a a n s etalon se utilizeaz de obicei o anten ipotetic care ar radia egal toate a a a n directiile i ar avea randamentul 100%. Deoarece energia se conserv, ctigul s a as este pe unele directii supraunitar i pe altele subunitar, integrala lui pe s ntreaga sfer ind 4 (unde reprezint randamentul antenei). Ctigul este dat a a as uneori direct, alteori este dat logaritmul ctigului, exprimat decibeli. as n Ctigul antenei pe diverse directii este reprezentat grac prin diaas gramele de ctig. O astfel de diagram este o reprezentare a ctigului ca as a as functie de unghi pe toate directiile dintr-un plan. O directie de maxim local al ctigului, as mpreun cu directiile apropia ate, se numete lob. Lobul care cuprinde maximul global al ctigului se s as numete lobul principal al antenei. Ceilalti lobi se numesc lobi secundari sau s lobi laterali. Valoarea maxim, pentru toate directiile posibile, a ctigului a as este numit ctigul antenei. a as O anten optimizat s aib ctig ct mai mare pe o directie, a a a a as a n detrimentul celorlalte directii, se numete anten directiv. O anten opti s a a a mizat pentru a avea ctig ct mai uniform, cel putin planul orizontal, a as a n se numete anten nedirectiv. O anten cu ctig perfect uniform de jur s a a a as mprejur (radiator izotrop) este imposibil de realizat. Exist o legtur a a a ntre dimensiunea antenei, directivitatea i lungimea s de und la care functioneaz. Anume, raza unghiular a lobului principal a a a (msurat radiani) nu poate mai mic dect raportul dintre diametrul a a n a a antenei i lungimea de und. Ca exemplu, pentru a obtine un lob principal s a de 3 ( 0,05 rad) la o lungime de und de 6 cm (f = 5 GHz) avem nevoie a de o anten de cel putin 1,2 m diametru. Limitarea aceasta este legat de a a fenomenele de difractie a undelor i nu poate ocolit. s a
O anten de receptie plasat calea undelor receptioneaz o puta a n a ere proportional cu densitatea de putere a undei incidente. Raportul dinte a puterea disponibil la bornele antenei i densitatea de putere a undei incia s dente se numete aria efectiv sau apertura antenei. Apertura poate privit s a a ca suprafata, transversal pe directia de propagare a undelor, de pe care an a tena preia ntreaga energie. Apertura depinde de directia considerat a undei a incidente. Apertura fat de o anumit directie a undei incidente este proportia a onal cu ctigul antenei pe acea directie. Relatia este: a as S=G 2 4 (3.6)
unde S este aria efectiv, G este ctigul, iar este lungimea de und. a as a Utiliznd relatia (3.6), se poate calcula puterea receptionat, dac a a a distanta dintre emittor i receptor este mult mai mare dect dimensiunile a s a antenelor: Pr = Pe Ge 1 Sr = 4d2 2 = Pe Ge Gr 16 2 d2
unde Pr este puterea disponibil la bornele antenei receptoare, Pe este puterea a aplicat la bornele antenei emittoare, d este distanta dintre emittor i recepa a a s tor, Ge este ctigul emittorului pe directia spre receptor, iar Gr i Sr sunt as a s respectiv ctigul i apertura antenei receptoare pe directia spre emittor. as s a Exemplul 3.1: Considerm un emittor (de exemplu, un calculator dintr-o a a retea IEEE 802.11 wireless) care emite un semnal cu puterea Pe = 100 mW (sau, echivalent, +20 dBm) i frecventa f = 2,4 GHz (lungimea de und s a este atunci = 0,125 m). Mai presupunem c receptorul se gsete la o a a s distant d = 100 m fat de emittor, c absorbtia semnalului este neglijabil a a a a a (emittorul i receptorul se gsesc cmp deschis i nu plou) i c ambele a s a n a s a s a antene au un ctig Ge = Gr = 2 pe directia spre partenerul de comunicatie. as Rezult puterea semnalului receptionat: a Pr = 101 W 2 adic aproximativ 84 dBm. a (0,125 m)2 2 3,9 109 W, 16 2 (100 m)2
3.5.2.2. Polarizarea Antenele cele mai simple au polarizare liniar: unda emis este poa a larizat liniar, pe o directie stabilit prin constructia antenei. Rotirea antenei a a emittorului fat de cea a receptorului duce la variatia semnalului receptionat a a ntre un maxim (cnd directiile polarizrilor celor dou antene sunt paralele) a a a i un minim (teoretic zero) cnd directiile sunt perpendiculare. s a O anten polarizant liniar va receptiona a a ntotdeauna, indiferent de directia de polarizare, o transmisie polarizat circular; reciproc, o anten po a a larizant circular va receptiona o emisie polarizat liniar. O anten polarizant a a a a circular va receptiona o transmisie polarizat circular numai dac are acelai a a s sens al polarizrii. Rotirea antenelor jurul dreptei ce le unete nu are efect. a n s 3.5.2.3. Tipuri de antene Antenele nedirective sunt de cele mai multe ori un simplu baston metalic (de fapt, bastonul este un pol, iar carcasa aparatului sau, dup caz, a Pmntul. este cellalt pol). O astfel de anten are ctig maxim planul a a a a as n orizontal (perpendicular pe baston) i zero pe directie vertical ( lungul s a n bastonului). Undele produse sunt polarizate vertical. Antenele directive cele mai rspndite pentru comunicatii de date a a sunt aa-numitele antene parabolice (denumire improprie, pentru c forma s a parabolic este a reectorului antenei). O asrfel de anten este alctuit dintra a a a o oglind form de paraboloid de rotatie, focarul creia este plasat ana n a n a a alte constructii, antena propriu-zis este plasat alt tena propriu-zis. (In a a a n a parte, iar unda electromagnetic este adus focarul reectorului parabolic a a n printr-un tub metalic numit ghid de und.) a
exact punctele care este posibil receptia unei emisii radio i punctele n a s n care emisia este obstructionat. a 3.5.3.2. Linia orizontului Unul dintre obstacolele ce limiteaz raza de actiune a undelor radio a este si Pmntul, prin curbura suprafetei sale. O statie aat la o anumit nsu a a a a altime poate comunica cu o statie aat la nivelul solului dac i numai dac n a as a statia de pe sol se a mai aproape dect linia orizontului celeilalte statii. a a Dou statii pot comunica dac exist cel putin un punct comun orizontului a a a celor dou statii. a cmpie, distanta pn la linia orizontului este (r desemneaz raza In a a a a Pmntului, iar h este altimea antenei deasupra suprafetei Pmntului): a a n a a msurat de-a lungul curburii, de la baza turnului care se a obsera a n a r vatorul: d = r arccos h+r ; msurat linie dreapt de la observator: a a n a d= (r + h)2 r2 = h(2r + h);
dac h a r, d 2rh. De remarcat c dac exprimm numeric 2r a a a n 3 km) i h metri, distanta d rezult mii de kilometri (2r 12,7 10 s n a kilometri. n Exemple: Distanta pn la linia orizontului pentru un observator aat la 1,6 m a a deasupra pmntului (de exemplu un radiotelefon inut mn) este d = a a t n a a 12,7 1,6 km 4,5 km. Un turn cu altimea de 20 m (obinuit pentru un releu GSM) are n s linia orizontului la 16 km. O statie aat a ntr-un astfel de turn poate comunica cu un radiotelefon inut mn la o distant de 16 km+4,5 km = 20,5 km (de t n a a a regul raza de actiune a unui releu GSM este limitat de alte considerente). a a De pe un turn cu altimea de 50 m, distanta la linia orizontului n este d = 12,7 50 km 25 km. Dou relee de telecomunicatii avnd 50 m a a altime ecare pot comunica direct dac sunt la mai putin de 50 km unul de n a altul. Distanta la linia orizontului crete s ncet cu altimea; a se dubleaz n dac a altimea, distanta la linia orizontului crete cu un factor de 2 1,4. n s 3.5.3.3. Utilizarea satelitilor articiali ai Pmntului a a Satelitii articiali ai Pmntului sunt utilizati ca echivalentul unor a a turnuri nalte pentru montarea unor statii radio. Dup altitudinea la care a
sunt plasati, distingem trei categorii de sateliti: sateliti de joas altitudine aati a ntre 200 . . . 1000 km, cu perioada de rotatie de 1,5 . . . 1,8 h; sateliti de altitudine medie ntre 10000 . . . 15000 km (raza orbitei de 34 ori raza Pmntului), cu perioada de rotatie de 6 . . . 9 h; a a sateliti geostationari aati la 35800 km deasupra ecuatorului, au pe rioada de rotatie de exact o zi i ca urmare apar ci fat de Pmnt. s s a a a Un satelit are o arie de acoperire incomparabil mai mare fat de o a statie terestr. La 200 km altitudine, un satelit acoper o raz de 1500 km, a a a iar un satelit de medie altitudine acoper o raz de peste 7000 km. a a Din cauza distantelor mari, comunicatia cu satelitii necesit e put a eri mari, e antene cu directivitate foarte bun. Este de remarcat faptul c a a distanta de la un satelit la o statie terestr este de la cteva zeci la cteva a a a sute de ori mai mare dect distanta de la un releu amplasat a ntr-un turn la o statie terestr. Ca urmare, pentru aceleai antene, puterile necesare sunt de a s la cateva sute la cteva sute de mii de ori mai mari. a La comunicatia ntre sateliti geostationari i statii xe de pe sol se pot s utiliza relativ uor antene cu directivitate bun, deoarece antenele de pe sol s a sunt xe. Orbita geostationar este a destul de ,,aglomerat: presupunnd a ns a a c avem antene ce dau un fascicul cu diametrun unghiular de 6 , (vezi exemplul a care rezulta, pentru f = 5 GHz, un diametru al antenei de peste 1,2 m) n putem distinge doar ntre 60 de sateliti distincti. Pentru satelitii care nu sunt geostationari, utilizarea antenelor direc tive necesit un sistem foarte complicat de urmrire a satelitului. a a 3.5.3.4. Zgomotul Zgomotul transmisiile radio provine din multe surse, n ntre altele aparatur electronic, a a ntreruptoare electrice (inclusiv colectoarele motoarelor a de curent continuu). Transmisiile radio sunt mult mai sensibile la zgomot dect a transmisiile prin conductoare electrice, deoarece la conductoare electrice undele radio ptrund accidental semnal, din cauza ecranrii imperfecte, pe a n a ct vreme la transmisiile radio semnalul util se amestec direct cu zgomotul aa a radio ambiant. Nivelul zgomotului radio ambiant este un factor important care limiteaz inferior pragul de sensibilitate al receptorului i, consecint, xeaz a s n a a puterea minim pentru o anumit distant emittor-receptor. a a a a Nivelul de zgomot scade general o dat cu creterea frecventei. n a s
3.5.3.5. Scderea puterii cu distanta a Densitatea de putere a undelor electromagnetice scade cu ptratul a distantei de la emittor. Ca urmare, la o sensibilitate xat a receptorului, a a pentru a dubla raza de actiune a emittorului trebuie s-i cretem puterea de a a s 4 ori. Pe de alt parte, dac dou emittoare radio functioneaz aceeai a a a a a n s regiune geograc i emit pe frecvente identice sau foarte apropiate, atunci a s transmisia mai puternic ,,acoper transmisia mai slab. Aceasta se ampl a a a nt a deoarece semnalele celor dou emittoare se suprapun. Dac, punctul a a a n n care este plasat receptorul, puterea unuia dintre emittoare este mult mai mare a dect puterea celuilalt, atunci receptorul va receptiona doar transmisia mai a puternic, chiar dac, singur, transmisia mai slab ar putea receptionat a a a a a corect. Dac puterile sunt apropiate, receptorul nu va putea ,, elege nici a nt una dintre transmisii. 3.5.3.6. Emisia directionat i polarizat as a Domeniul de actiune a unui emittor sau receptor poate restrns a a mod voit dotnd emittorul sau receptorul (de obicei ambele) cu antene din a a rective. Trebuie a calculate cu atentie divergenta lobului principal, puterea ns emis pe lobii secundari ai antenei i reexiile de teren. a s Polarizarea se poate utiliza pentru a separa dou transmisii pe aceeai a s directie i pe aceeai lungime de und. cazul utilizrii polarizrii liniare, s s a In a a cele dou transmisii trebuie s utilizeze directii de polarizare perpendiculare; a a cazul polarizrii circulare se vor folosi cele dou sensuri (stnga i dreapta). n a a a s Lobii secundari ai antenelor, precum i undele reectate de diverse corpuri, au s polarizri greu de controlat. a
Notiunea de band care se face transmisia specic acest context a n a n un interval de frecvente alocat pentru o anumit categorie de transmisii radio. a Benzile, acest sens, se specic e printr-o anumit frecvent sau lungime de n a a a und, din interiorul benzii, i avnd o valoare ,,rotund, e printr-un nume. a s a a Limitele benzii se gsesc standarde. a n Dou transmisii radio ce se fac pe frecvente diferite, sau mai precis, a a cror benzi de trecere sunt disjuncte, pot separate general uor. Separarea a n s frecvent este mult mai uor controlabil dect separarea spatial studiat n a s a a a a 3.5.3. Dou transmisii pe aceeai frecvent i aceeai zon geograc n a s a s n s a a sunt practic imposibil de separat, dac au puteri apropiate, sau transmisia a mai slab este imposibil de receptionat ind ,,acoperit de cea mai puternic. a a a Pentru evitarea suprapunerilor ntre utilizatori, utilizarea diverselor benzi de frecvente face obiectul unor reglementri legale ecare ar, precum a n t a i a unor acorduri internationale. Emiterea unui semnal radio, pe o frecvent s a pentru care operatorul emittorului nu este autorizat sau de o putere mai a mare dect cea autorizat, poate duce la sanctionarea contraventional sau a a a chiar penal a operatorului. a majoritatea cazurilor, un utilizator de comunicatii radio care doIn rete s opereze un emittor trebuie s obtin o autorizatie care se specic s a a a a n a frecventa de lucru, puterea maxim, zona geograc care opereaz, etc. a a n a Exist frecvente alocate posturilor de radio, sistemelor de comunicatii radio a ale diferitelor institutii (politie, controlorii de trac aerian, dispecerate de taxiuri, operatori de telefonie mobil, etc.). Tot aceast categorie, a cu a n a ns un statut aparte sunt radioamatorii: frecventele sunt alocate activitii de at radioamator i nu unei persoane sau institutii, a radioamatorii trebuie s s ns a se nregistreze pentru a putea emite. Exist a benzi pentru care nu este necesar o autorizare expres a a ns a a emittorului, cu conditia ca emittorul s nu depeasc o anumit putere. a a a as a a In aceast categorie intr frecventele folosite de: retelele IEEE 802.11 (Wireless a a Ethernet) i Bluetooth, tastaturi i maui fr r, telefoanele fr r, mis s s aa aa crofoanele fr r, walkie-talkie-urile de jucrie, jucrii cu telecomand prin aa a a a radio, telecomenzi pentru deschis garajul. Utilizatorul unor astfel de echipamente trebuie totui s e atent la eventualele diferente s a ntre reglementrile a din diferite ri: un echipament poate functiona legal fr autorizatie ara ta aa n t de origine, dar s necesite autorizatie alt ar. a n at a Echipamentele care lucreaz pe frecvente pentru care nu trebuie aua torizatie ajung s interfereze dac sunt plasate apropiere. Unele dintre a a n acestea permit selectarea frecventei de lucru dintre 24 frecvente predenite. Utilizatorul va selecta o frecvent diferit dac constat o functionare proast a a a a a
i suspecteaz interferente cu echipamente vecine. Alt solutie este schimbarea s a a repetat a frecventei de lucru, dup o schem convenit a a a a ntre emittor i rea s ceptor, i tolerarea unui numr de ciocniri ale transmisiilor pe perioadele s a n care echipamentele vecine se nimeresc aceeai frecvent. Tehnica se numete s a s frequency hopping (salturi ale frecventei). Mai mentionm c, printre productorii de semnale radio parazite a a a intr i alte dispozitive, avnd alte scopuri dect comunicatiile. Ca fapt divers, as a a enumerm cteva: a a Sursele de alimentare de la aproape toate aparatele electronice moderne (aa-numitele surse comutatie), precum i blocul de baleiaj de s n s linii de la televizoarele i monitoarele cu tub catodic, emit semnicativ s pe frecvente pn la cteva sute de kiloherti (aa-numitele armonice, a a a s adic frecvente care sunt multipli ai frecventei de lucru a circuitului). a Functionarea acestora bruiaz adesea posturile de radio pe unde lungi a i uneori chiar medii. s Radioemittoarele emit i pe frecvente ce sunt multipli ai frecventei a s purttoare (armonice). Din acest motiv, se ampl uneori ca un post a nt a de televiziune s apar, cu semnal foarte slab, i pe un canal superior a a s celui pe care este transmis normal (dar atentie, uneori acest efect este datorat receptiei de la un alt releu de televiziune, mai ndeprtat). a
Pentru distante mici, se poate adopta o organizare mai ,,democratic a (exemplu IEEE 802.11): statiile comunic direct a ntre ele, iar arbitrarea mediului se face prin mijloace asemntoare cu cele utilizate pe cabluri magistral a a a ( 4.2). Spre deosebire a de cablurile magistral, unde un pachet emis de o ns a statie de pe cablu este receptionat de toate celelalte i, ca urmare, ciocnirea la s receptie a dou pachete este sesizat i de ctre emittoare, la legturile radio a as a a a este posibil ca dou transmisii s se ciocneasc la receptor dar nici una din a a a statiile care le-au emis s nu receptioneze transmisia celeilalte. a 3.5.5.2. Fiabilitatea Fiabilitatea unei legturi radio este general mai sczut dect a a n a a a unei legturi pe cablu: a Rata de erori este mult mai mare. La o legtur radio, probabilitatea unei a a erori de un bit este mod normal de 103 . . . 105 . Pentru comparatie, n la transmisia prin perechi de conductoare, probabilitatea unei erori de un bit este de 107 . . . 1010 , iar la brele optice, erorile sunt i mai rare, s 10 . . . 1012 . 10 La frecvente peste 10 GHz, datorit absorbtiei picturile de ap, starea a n a a legturii poate depinde de starea vremii. a Umbrele provocate de cldiri i relief, precum i interferentele a s s ntre undele reectate, sunt imposibil de calculat mod practic. O statie ce ajunge n umbr va pierde legtura mod imprevizibil. n a a n 3.5.5.3. Securitatea La comunicatiile prin cablu pe distant scurt, securitatea comunica a a iei poate asigurat pzind cablul. Din acest motiv retelele locale pe cablu t a a pot s nu prevad msuri contra intruilor. a a a s Undele radio nu pot pzite, analog cablului. Retelele fr r este a aa esential s aib incorporate msuri de securitate. Acestea presupun metode a a a criptograce (vezi capitolul 6) ce previn ascultarea sau contrafacerea unui mesaj, i eventual schimbarea frecventei (metoda frequency hopping) pentru a s preveni bruiajul.
lumin pentru aceste unde, dei nu se a s ncadreaz domeniul luminii vizibile a n ( = 780 nm . . . 380 nm). Mrimea considerat ca semnal este puterea luminoas. Am putea a a a considera, mod echivalent, c semnalul transmis de mediu este intensitatea n a cmpului electric sau inductia magnetic i c utilizm modulatie amplitua as a a n dine pentru a transmite semnalul util. Emisia i receptia se realizeaz cu dispozitive semiconductoare capas a bile s emit raze infraroii la trecerea curentului prin ele (LED-uri, asemna a s a a toare celor de pe panourile de aparate, sau, dup caz, diode laser) i, respectiv, a s care permit trecerea curentului doar prezenta luminii. n Pentru unele aplicatii, presupunnd comunicatie pe distant de cel a a mult civa metri (de exemplu, pentru telecomenzi de televizoare sau pentru at dispozitive IrDA), raza de lumin se propag direct prin aer de la emittor la a a a receptor. Metoda este dicil de extins la distante mai mari. Raza de lumin poate a foarte uor ghidat printr-o br optic. a ns s a a a O br optic este esent un r dintr-un material transparent, prin interiorul a a n a cruia trece lumina. Dac raza de lumin lovete peretele lateral al brei, se a a a s acest fel, lumina ce intr printr-un capt al brei ntoarce napoi br. In n a a a iese prin cellalt capt chiar dac bra nu este perfect dreapt. a a a a Fibra optic se mai numete i ghid de und optic (engl. optical a s s a waveguide), deoarece este identic ca i scop i foarte asemntor functional cu s s a a ghidul de und utilizat pentru microunde. a Lungimea brei, ntre emittor i receptor, poate atinge cteva zeci a s a de kilometri. Lucrurile care fac posibil atingerea unor distante att de mari a a sunt atenuarea mic (sub 1 dB/km) i imunitatea aproape perfect la zgomot. a s a
mai multe straturi cu rol de protectie mecanic. n a Ideea de baz a conducerii semnalului prin br este c o raz de a a a a lumin ce se propag oblic prin miez i atinge suprafata de contact dintre a a s miez i s nveli s se reecte s a napoi miez. Reexia trebuie s e cu pierderi n a extrem de mici, deoarece o raz se va reecta de multe ori de la un capt la a a cellalt al brei. a 3.6.1.1. Conectarea brelor optice Problemele legate de conectarea brelor optice reprezint principalul a dezavantaj al brelor optice fat de perechile de conductoare. Conectarea cap a la cap a dou tronsoane de br se poate face: a a prin lipire, alzind bra pn la temperatura de topire a sticlei i nc a a s avnd grij ca s se lipeasc capetele dar s nu se amestece miezul cu a a a a a nveliul. Conectarea prin lipire necesit echipamente mai scumpe, este s a nedemontabil, dar perturb cel mai putin transmiterea semnalului prin a a br. O lipitur produce o atenuare a semnalului jur de 0,1 dB, din a a n cauza reexiei unei prti a luminii incidente. a prin conectoare optice. Fiecare capt de br se lefuiete foarte bine i a a s s s se prinde ntr-o pies metalic cu rol de ghidaj. Piesele metalice ataate a a s capetelor de br se strng una fat de cealalt, realiznd alinierea fat a a a a a a fat a capetelor de br. Eventual, spatiul dintre capetele de br se n a a a poate umple cu un gel transparent cu indice de refractie apropiat de cel al brei, reducnd astfel reexia la captul brei. a a
de propagare a luminii i axa brei. Datorit vitezelor diferite, semnalul emis s a de la un capt al brei este distorsionat, ind receptionat la cellalt capt a a a ca mai multe copii putin decalate timp. Acest fenomen de distorsionare a n semnalului se numete dispersie intermodal . s a Opusul brei multimod este bra monomod , care ecuatia undelor n admite o singur solutie. Existenta unui singur mod elimin dispersia intera a modal, a mbuntind calitatea propagrii semnalului. Pentru a admite un a at a singur mod, bra trebuie s e mult mai subtire, diametrele standard ind a 10 m sau 8 m. Diametrul mai mic al brei atrage dou diculti: pe de a at o parte, cerintele de aliniere mecanic a brei fat de surs sunt mai stricte, a a a iar pe de alt parte densitatea de putere luminoas emis prin br trebuie a a a a s e mai mare. Acest din urm fapt duce la necesitatea utilizrii diodelor a a a laser ca surs de lumin (LED-urile nu mai sunt adecvate) i, consecint, a a s n a la creterea preturilor echipamentelor. s 3.6.2.2. Caracteristici ale mediului Dm continuare caracteristicile principale ale propagrii: a n a viteza de propagare este viteza luminii silica, aproximativ 0,67 c; n atenuarea este, aa cum am vzut, foarte mic, de ordinul ctorva decibeli s a a a pe kilometru sau chiar cteva zecimi de decibel pe kilometru. a distorsiunile apar sub forma de dispersie, adic lirea impulsurilor. Sunt a at cauzate de mai multe fenomene, i au ca i consecint limitarea practic s s a a a produsului dintre frecventa maxim ce se poate transmite i distanta a s dintre emittor i receptor. Acest produs se numete (impropriu) banda a s s de trecere i se msoar megahertzi kilometru (MHz km). Valorile s a a n tipice, pentru o br multimod, sunt de ordinul a 500 MHz km. a zgomotul transmisia prin br optic apare aproape exclusiv datorit n a a a fotodiodei receptoare (zgomot termic); acesta limiteaz inferior sensia bilitatea receptorului i, la atenuare dat a brei, puterea emittorului. s a a Captarea de paraziti de-a lungul brei, i particular diafonia, sunt s n neglijabile.
3.6.2.3. Multiplexarea lungimea de und n a Considernd ca semnal intensitatea cmpului electric, observm c a a a a prin bra optic se transmite un semnal modulat amplitudine. Frecventa a n purttoare este frecventa undelor infraroii. Semnalul modulator este rdcina a s a a ptrat a puterii luminoase emise. a a
Ca urmare, este posibil realizarea multiplexrii frecvent a mai a a n a multor semnale pe aceeai br optic. Emittoarele sunt diode laser sau LEDs a a a uri de culori diferite. Receptoarele sunt dotate cu cte un ltru de culoare a corespunztoare plasat fata elementului fotosensibil. Aceast metod de a n a a multiplexare se numete multiplexare lungimea de und (engl. wavelength s n a division multiplexing WDM). Subliniem c diferenta a ntre multiplexarea lungime de und i multiplexarea frecvent este doar de terminologie, n a s n a nu una principial. Diferenta provine doar din faptul c, cazul transmisiei a a n optice, lipsa mijloacele de-a analiza direct semnalul electromagnetic (asupra n cruia opereaz multiplexarea frecvent ), analizm doar puterea semnalului a a n a a electromagnetic. Este posibil i transmisia duplex pe o singur br optic. Pentru as a a a aceasta se realizeaz o constructie cu oglinzi semitransparente care permite ca a raza de lumin emis s ptrund br, iar raza de lumin ce iese din br a a a a a n a a a s ajung pe elementul receptor. Pentru a preveni diafonia a a ntre cele dou a sensuri de propagare, este necesar ca reexiile pe capetele brei s e extrem a de reduse sau s se aplice o multiplexare lungimea de und a n a ntre cele dou a sensuri.
las s treac lumina vizibil, dar blocheaz infraroiile transmise prin bre. a a a a a s Lipirea brelor sau montarea conectoarelor pe bre necesit echipaa mente scumpe (zeci de mii de dolari pentru un dispozitiv de lipire i jur de s n o mie de dolari pentru setul de unelte necesare montrii conectoarelor) i pera s sonal calicat. Din acest motiv, se comercializeaz cabluri, de diferite lungimi, a cu conectoare gata ataate. s Un r de praf ajuns pe captul unei bre optice obstructioneaz sea a rios trecerea luminii. De aceea, conectoarele necuplate se acoper cu capace a protectoare.
Capitolul 4
Nivelul legturii de date are ca rol realizarea unei comunicatii stabile a ntre calculatoare sau echipamente ntre care exist o legtur direct la nivel a a a a zic (exist deci un mediu de comunicatie a ntre ele). general, legtura de date ofer servicii de transport de pachete. In a a Nivelul zic ofer servicii de transport de pachete, a aceste servicii a ns sufer de urmtoarele lipsuri: a a Pachetele pot alterate sau chiar distruse complet din cauza zgomotului. Dac un acelai mediu de transmisie este utilizat de mai multe emittoare a s a (ceea ce se ampl adesea la transmisia prin unde radio, dar uneori i nt a s la transmisia prin perechi de conductoare) i mai multe dintre aceste s emittoare transmit simultan, pachetele transmise se altereaz reciproc. a a Dac destinatia nu poate prelucra datele ritmul care sunt transmise a n n de ctre emittor, o parte din date se vor pierde. a a Constructia legturii zice este scump; mai mult, exist un cost indepen a a a dent de capacitate. Ca urmare, este de dorit s putem construim mai a multe legturi logice, care s transmit uxuri independente de pachete, a a a partajnd aceeai legtur zic. a s a a a Ca urmare, nivelul legturii de date are sarcina de-a realiza urmtoaa a rele: detectarea sau corectarea erorilor de transmisie; controlul accesului la mediu cazul care exist mai multe emittoare n n a a ce partajeaz acelai mediu de transmisie; a s retransmiterea pachetelor pierdute din cauza erorilor de transmisie, a ciocnirilor ntre pachete transmise de mai multe emittoare simultan a sau a incapacitii destinatiei de-a le prelua la timp; at
controlul uxului de date, adic frnarea emittorului cazul care a a a n n destinatia nu este capabil s proceseze sucient de repede informatia a a primit; a multiplexarea mai multor legturi logice prin aceeai legtur zic. a s a a a
Nivel zic
Calculator emittor a
Calculator receptor
Figura 4.1: Alctuirea nivelului legturii de date i locul su a a s a ntre nivelele retelei.
Constructiv, nivelul legturii de date este un modul interpus a ntre nivelul superior ( mod normal, nivelul retea) i nivelul zic (g. 4.1). Pentru n s realizarea functiilor lor, modulele nivelului legturii de date ale dispozitivelor a ce comunic si transmit unul altuia, utiliznd serviciile nivelului zic, dou a a a tipuri de informatii: datele utile, ce trebuie transmise de ctre nivelul legturii de date a a n folosul nivelelor superioare; informatii de control, pentru uzul strict al nivelului legturii de date. a Informatiile de control sunt transmise e mpreun cu datele utile, acelai a n s pachet transmis prin nivelul zic, e separat, pachete de sine stttoare. n aa primul caz, informatiile de control sunt plasate e fata datelor utile, sub In n forma unui antet, e dup acestea. cazul transmiterii datelor de control a In ntr-un pachet separat, un astfel de pachet se numete pachet de control. s
cel mai probabil al pachetului original. cazul unui cod detector de erori, In pachetul nu poate recuperat; acest caz, eventuala retransmitere a datelor n cade sarcina unui mecanism de tipul celui ce va studiat 4.3. n n
general, asigurarea unui interval exclusiv de emisie este favoraIn bil sistemele timp real, cum ar retelele utilizate pentru automatizri a n n a industriale transmisie audio-video. Detectarea coliziunilor i retransmiterea s pachetelor distruse coliziuni este favorabil sistemele interactive, cum ar n a n retelele ,,obinuite de calculatoare. s Aproape orice sistem care mai multe dispozitive sunt conectate n n la acelai mediu zic este necesar ca ecare dispozitiv s aib un identicator s a a unic. Acest identicator se numete adres zic sau adres MAC (de la Mes a a a dia Access Control controlul accesului la mediu) sau, dac nu e pericol de a confuzie, adres. Alocarea adresei zice se face mod normal prin mecanisme a n exterioare retelei, adic adresele sunt alocate e manual, de ctre administra a a torul retelei, e cadrul procesului de fabricatie al dispozitivului conectat la n retea.
Metoda cu arbitru este utilizat, de exemplu, cadrul ecrei celule a n a GSM. O alt metod de control al accesului este metoda cu jeton. a a In cadrul acestei metode, loc s existe un arbitru central care detine lista comn a plet a statiilor, lista este distribuit, ecare statie cunoscnd adresa statiei a a a urmtoare. acest fel, intervalul de emisie alocat, ecare statie emite a In n datele utile, dup care anunt statia urmtoare. Metoda cu jeton a fost utia a a lizat retelele IEEE 802.4. a n
B
c
A
a
B
c
A
c
B
a
(a) A i C emit simuls tan cte un pachet scurt. a Fiecare dintre ei termin a emisia propriului pachet cu mult naintea sosirii pachetului celuilalt.
(b) Ceva mai trziu, ama bele pachete ajung la B, unde se produce coliziune.
Figura 4.2: Dou pachete emise simultan, conditiile care timpul de propagare a n n este mai mare dect timpul de transfer. Coliziunea nu este detectat de nici unul a a dintre emittoare, a este detectat de o statie aat la jumtatea distantei dintre a ns a a a acestea.
torit atenurilor diferite, este posibil ca pentru un receptor s apar a a a a coliziune ntre dou pachete, timp ce pentru alt receptor unul dina n tre pachete s e att de puternic atenuat at s nu perturbe deloc a a nc a receptia celui de-al doilea pachet (g. 4.3). Din acest motiv, la trans misia radio este imposibil ca emittorul s detecteze a a ntotdeauna coliziunile propriei transmisii cu alte transmisii simultane.
Figura 4.3: Este posibil ca dou emittoare radio, A i C, s e situate prea departe a a s a pentru a-i receptiona una transmisia celeilalte, dar s existe o a treia statie, B, care s s a a receptioneze transmisiile ambelor emittoare (liniile punctate delimiteaz zona care a a n transmisia unei statii poate receptionat). acest caz, A i C pot emite simultan a In s fr a detecta coliziune, a pentru B se produce coliziune aa ns ntre transmisiile lui A i s C.
prin lipsa conrmrii, din partea receptorului, a primirii pachetului. Pena tru aceasta, este necesar utilizarea unui cod detector de erori, cu ajua torul cruia receptorul s detecteaze disturgerea pachetului urma a a n coliziunii. De asemenea, mai este necesar ca receptorul s conrme a pachetele primite cu succes (astfel de mecanisme de conrmare vor studiate 4.3). n Repetarea unui pachet distrus de o coliziune se face dup un interval a de timp aleator. Dac intervalul de timp pn la retransmitere ar x, dou a a a a statii ce au emis simultan vor emite simultan i retransmiterile, ciocnindu-i la s s innit pachetele. Mai mult, dac apar frecvent coliziuni, este bine ca timpul a pn la urmtoarea retransmitere s e mrit. a a a a a Acest protocol simplu de acces la mediu se numete Aloha pur . s O variant a mbunit a protocolului Aloha este protocolul numit atat a Aloha cuanticat (engl. slotted Aloha). acest protocol, toate pachetele au In aceeai lungime. Inceperea transmisiei unui pachet nu poate avea loc oricnd, s a ci doar la momente xate, aate la o durat de pachet unul de altul. a Alte mbuniri ce pot aduse protocolului Aloha pur (nu a i atat ns s la Aloha cuanticat) sunt: detectarea purttoarei (CSMA Carrier Sense Multiple Access): o statie a
care dorete s emit ascult mai ai mediul; dac detecteaz emisia s a a a nt a a altei statii, amn emisia proprie pn dup nalul emisiei celeilalte a a a a a statii. O prim posibilitate este ca statia s a a nceap emisia proprie imea diat dup terminarea emisiei celeilalte statii. Dezavantajul este c, pe a a durata unui pachet lung, este probabil s se adune mai multe statii care a ar vrut s emit; ca urmare la nalul transmisiei acelui pachet toate a a statiile vor emite simultan, rezultnd coliziuni. a O solutie mai bun este ca o statie, care dorete s emit i con a s a as stat c mediul este ocupat, s atepte un interval de timp aleator, dup a a a s a care s verice din nou dac mediul este liber. Dac mediul este liber, a a a ncepe emisia proprie; dac nu, ateapt un nou interval de timp aleator a s a . a. m. d. s oprirea transmisiei la detectarea unei coliziuni (numit, oarecum improa priu, detectarea coliziunii collision detection, CSMA/CD): dac o a statie, timpul emisiei proprii, detecteaz o coliziune, abandoneaz n a a datele rmase de transmis, transmite un semnal de o form special pena a a tru a anunta c pachetul este invalid i apoi oprete transmisia. acest a s s In fel, se economisete timpul necesar transmisiei datelor rmase, transs a misie oricum compromis. a
Aceast metod este foarte favorabil retele fr r deoarece rea a a n aa zolv i aa-numita problema statiei ascunse: este posibil s existe trei statii, as s a A, B i C, cu B situat geograc aproximativ la mijlocul distantei s a ntre A i s C, cu distanta dintre A i C putin peste raza de actiune a transmisiei, astfel s at A nu receptioneaz transmisia lui C i nici reciproc, dar cu B sucient nc a s de aproape de A i de C astfel at s poat comunica cu ecare dintre ele. s nc a a aceast situatie, dac A i C emit simultan, din punctul de vedere al lui In a a s B se produce o coliziune, dar nici A nici C nu pot detecta acest lucru. Protocolul CSMA, descris paragraful precedent, nu permite lui C s detecteze n a dac A transmitea deja ctre B momentul care C dorete s transmit la a a n n s a a rndul lui; ca urmare, CSMA se comport exact ca Aloha pur. protocolul a a In CSMA/CA, schimb, C receptioneaz CTS-ul adresat de B lui A i amn n a s a a transmisia proprie. Alt posibilitate de combinare a celor dou strategii o constituie proa a cazul acestor protocoale, statiile sunt artite tocolalele cu conict limitat. In mp grupuri. Fiecrui grup i se aloc intervale exclusive de emisie (ca cazul n a a n protocoalelor bazate pe intervale exclusive de emisie, dar cu diferenta c ecare a interval se aloc unui a ntreg grup, nu unei statii). cadrul ecrui grup se In a aplic un protocol cu coliziuni i retransmitere. artirea grupuri poate a s Imp n fcut dinamic: dac cadrul unui grup apar frecvent coliziuni, grupul a a a n este scindat dou; dac dou grupuri au transmisii sucient de rare, pot n a a a recombinate ntr-unul singur.
Aceste trei conditii mpreun formeaz dezideratul de transmitere sigur (engl. a a a reliable).
timeout
S examinm acum protocolul din punctul de vedere al ecrui para a a ticipant (emittorul i receptorul) i s nu uitm c ecare are viziunea lui a s s a a a despre sistem, dat de acele informatii care sunt accesibile. a i Algoritmul emittorului este urmtorul: pentru ecare pachet al sura a sei, ct timp nu a primit conrmare de la receptor, trimite pachetul i ateapt a s s a pn cnd e primete conrmarea, e trece un timp egal cu durata dus- a a a s ntors normal. a
Algoritmul receptorului este urmtorul: pentru ecare pachet primit a de la emittor, trimite un pachet de conrmare spre emittor i livreaz a a s a destinatiei pachetul primit. Exist o problem cu algoritmul de mai sus. a a Intrebare pentru cititor: ce se ampl dac un pachet ajunge la destinatie a conrmarea lui se nt a a ns pierde?
Surs a Emittor a Receptor Destinatie
Figura 4.5: lipsa unor msuri adecvate, pierderea unei conrmri conduce la In a a dublarea unui pachet.
Rezultatul se vede gura 4.5 (pachetul ce contine textul ,,al doilea n este livrat dublu exemplar destinatiei). S observm (comparati i cu n a a s gura 4.4) c receptorul nu are cum s disting a a a ntre trimiterea urmtorului a pachet de date i retrimiterea unui pachet datorit pierderii conrmrii. s a a Pentru a obtine un algoritm corect, trebuie s furnizm receptorului a a sucient informatie pentru ca acesta s disting a a a ntre repetarea pachetului precedent i pachetul urmtor. O solutie este ca emittorul s pun ecare s a a a a n pachet trimis numrul su de ordine cadrul uxului de date; acest numr de a a n a ordine se numete numrul de secvent al pachetului. acest fel, receptorul s a a In va retine numrul ultimului pachet receptionat i va capabil s verice dac a s a a urmtorul pachet primit este repetarea acestuia sau este urmtorul pachet al a a
sursei. Intrebare pentru cititor: dac receptorul primete un duplicat al paa s chetului precedent, trebuie s-l conrme sau nu? a S vedem rationamentul ce ne duce la rspuns: Emittorul nu are a a a de unde s tie dac un pachet de date a ajuns sau nu la receptor. Dac a s a a primete conrmarea unui pachet, poate sigur c pachetul conrmat a ajuns s a la receptor; dac a a trimis un pachet i nu a primit ( a) conrmarea a ns s nc acestuia, este posibil (conform informatiilor emittorului) ca pachetul s a a ajuns (i eventual s se pierdut conrmarea) sau ca pachetul s nu ajuns s a a deloc. El insist retransmiterea pachetului pn la primirea conrmrii. a n a a a Prin urmare, receptorul trebuie s conrme ecare pachet primit, chiar dac a a este un duplicat al unui pachet anterior (vezi gura 4.6).
Surs a Emittor a Receptor Destinatie
2 al doilea timeout
. . .
2 al doilea
Figura 4.6: Neconrmarea duplicatelor determin emittorul s repete la innit un a a a pachet a crui conrmare s-a pierdut. a
Suntem acum msur s dm algoritmii corecti pentru emittor i n a a a a a s pentru receptor: functionarea emittorului este descris algoritmul 4.1, iar a a n cea a receptorului algoritmul 4.2. Un exemplu de functionare a acestora n
este dat gura 4.7 n Algoritmul Emittor pas cu pas a algoritmul: n:=0 ct timp sursa mai are pachete de trimis execut a a e d urmtorul pachet al sursei a p:=(n, d) execut a trimite p receptioneaz n , fr a atepta o durat mai mare de t a aa s a ct timp n = n sau a expirat durata t a sfrit ct timp as a sfrit algoritm as
Algoritmul 4.1: Algoritmul emittorului protocolul simplu cu conrmri i rea n a s transmiteri. Parametrul t este ales putin mai mare dect durata dus- a ntors a nivelului zic.
Algoritmul Receptor pas cu pas algoritmul: n:=0 ct timp mai exist pachete de primit execut a a a receptioneaz (n , d) de la nivelul zic a dac n = n atunci a n:=n + 1 livreaz d destinatiei a sfrit dac as a trimite n spre nivelul zic sfrit ct timp as a sfrit algoritm as
Algoritmul 4.2: Algoritmul receptorului protocolul simplu cu conrmri i ren a s transmiteri.
aceti algoritmi am presupus c numrul de secvent n poate crete In s a a a s orict de mult. practic, n se reprezint pe un numr x de biti i ca urmare a In a a a s are o valoare maxim dup care revine la 0. Vom vedea 4.3.3 ce conditii a a n n acest lucru afecteaz corectitudinea algoritmului. a
Surs a
Emittor a
Receptor
Destinatie
2 al doilea
3 al treilea
ACK
Alegerea uneia sau a celeilate variante privete doar receptorul, nu s este parte a protocolului de comunicatie. Mai mult, decizia de-a memora sau de-a ignora pachetul poate luat independent pentru ecare pachet a primit de receptor, functie de memoria disponibil acel moment. n a n O metod utilizat frecvent este ca receptorul s xeze o fereastr a a a a de receptie, adic un interval de numere de secvent acceptabile. Pentru a a aceasta, receptorul xeaz la a nceput un numr k. Dac la un moa a ment dat toate pachetele pn la numrul de secvent n inclusiv au fost a a a a receptionate i livrate destinatiei, receptorul accept doar pachetele cu s a numere de secvent situate a ntre n + 1 i n + k; acest interval constituie s fereastra de receptie. Un pachet cu numr de secvent mai mic sau egal a a cu n este sigur un duplicat, un pachet ntre n + 1 i n + k este memorat s (dac nu a fost primit deja) i conrmat, iar un pachet cu numr de a s a secvent strict mai mare dect n + k este ignorat. La primirea pachetua a lui n + 1, fereastra este avansat pn la primul numr de secvent ce a a a a a nu a fost a primit. nc Este esential ca un pachet, ce nu este nici memorat de receptor, nici transmis destinatiei, s nu e conrmat. cazul conrmrii unui a In a astfel de pachet, este probabil ca emittorul s nu-l mai retransmit a a a niciodat, ca urmare receptorul nu va putea s-l furnizeze destinatiei. a a Emittorul trebuie s in i el evidenta unei ferestre de emisie, a a t a s continnd pachete, primite de la surs vederea trimiterii spre receptor, dar a a n a neconrmate de ctre receptor. Notnd cu n primul numr de secvent nc a a a a neconrmat i cu k dimensiunea ferestrei emittorului, fereastra emittorului s a a poate contine pachetele cu numere de la n la n + k 1. Emittorul trimite, a mod repetat, pachetele din fereastr, pn ce primete conrmri pentru n a a a s a momentul care pachetul n este conrmat, fereastra emittorului ele. In n a avanseaz pn la urmtorul pachet neconrmat. a a a a Din cauza ferestrelor emittorului i receptorului, protocolul acesta a s se numete protocolul ferestrei glisante. Dac fereastra emittorului este de s a a dimensiune 1, protocolul ferestrei glisante functioneaz exact ca i protocolul a s pas cu pas din paragraful precedent. Functionarea protocolului ferestrei glisante, diverse variante, este n ilustrat gurile 4.84.10. a n
Surs a Unu
Emittor a 1 Unu
Receptor
Destinatie
doi
2 doi ACK=1
Unu
trei
3 trei
patru
4 patru
2 doi
doi
trei
patru ACK=4
Figura 4.8: Functionarea ferestrei glisante cazul care dimensiunea ferestrei de n n receptie este 1 i dimensiunea ferestrei de emisie este cel putin 3. s
Surs a Unu
Emittor a 1 Unu
Receptor
Destinatie
doi
2 doi ACK=1
Unu
trei
3 trei
patru
memoreaz pachetul, a dar a nu-l livreaz nc a destinatiei memoreaz pachetul, a dar a nu-l livreaz nc a destinatiei
patru Figura 4.9: Functionarea ferestrei glisante cazul care dimensiunea ferestrei de n n receptie este cel putin 3 i protocolul prevede conrmarea individual a pachetelor. s a
Surs a Unu
Emittor a 1 Unu
Receptor
Destinatie
doi
2 doi
Unu
trei
3 trei ACK=2
doi
conrm dou pachete a a printr-o singur conrmare a
patru
4 patru
3 trei
Figura 4.10: Functionarea ferestrei glisante cazul care dimensiunea ferestrei n n de receptie este cel putin 2 i protocolul prevede c un pachet de conrmare conrm s a a toate pachetele de date pn la numrul de secvent continut pachet. De remarcat a a a a n posibilitatea de optimizare a numrului de pachete de conrmare prin combinarea a mai multor conrmri a ntr-un singur pachet (conrmarea cu numrul 2). a
Pentru a preciza lucrurile, vom numi numr de secvent teoretic a a numrul de secvent pe care l-ar avea un pachet dac numerele de secvent a a a a nu ar limitate i numr de secvent transmis numrul transmis efectiv. s a a a Numrul de secvent transmis are ca valoare numrul de secvent teoretic a a a a modulo n, unde n este numrul de numere de secvent distincte disponibile. a a Pentru ca mecanismele de conrmare i retransmitere, descrise s n 4.3.1 i 4.3.2, s functioneze corect, ele trebuie modicate aa fel at s a n s nc s compare efectiv numerele de secvent teoretice. Pentru aceasta, este necea a sar ca, orice moment, att receptorul ct i emittorul s poat, pe baza n a a s a a a informatiilor pe care le au, s deduc univoc numrul de secvent teoretic din a a a a numrul de secvent transmis. a a Vom analiza continuare ce relatie trebuie s existe n a ntre numrul a n de valori distincte pe care le poate lua numrul de secvent transmis i a a s numrul de pachete trimise avans pentru a nu exista ambiguiti privitor a n at la numrul de secvent teoretic al unui pachet de date sau de conrmare. a a Propozitia 4.1 Dac dimensiunea ferestrei emittorului este k i dac pa a a s a chetele se pot doar pierde, fr s-i poat schimba ordinea, atunci sunt neceaa as a sare i suciente 2k numere de secvent distincte pentru identicarea univoc s a a a pachetelor.
Demonstratie. Trebuie s artm trei lucruri: c exist a aa a a ntotdeauna un interval de lungime 2k, calculabil cu datele receptorului, care se n ncadreaz a numrul de secvent al urmtorului pachet primit de receptor, c exist un a a a a a interval de lungime 2k care se n ncadreaz urmtoarea conrmare primit a a a de emittor i, nal, c dac utilizm doar 2k 1 numere de secvent a s n a a a a distincte putem da un exemplu care apare o ambiguitate. n Presupunem c cel mai mare numr de secvent primit de ctre rea a a a ceptor este n. Deoarece emitatorul a trimis deja pachetul n, rezult c a a pachetele pn la n k inclusiv au fost deja conrmate i deci nu vor mai a a s trimise. Pe de alt parte, deoarece pachetul n + 1 a nu a ajuns la a nc receptor, rezult c acest pachet nu a fost conmat i deci receptorul nu a a s poate trimite pachete cu numere de secvent strict mai mari dect n + k. a a Ca urmare, dac la un moment dat cel mai mare numr de secvent primit a a a de receptor este n, urmtorul numr de secvent primit va intervalul a a a n [n k 1, n + k]. S privim acum din perspectiva emitatorului. Fie n cel mai mare a numr de secvent trimis. Deoarece n a fost deja trimis, rezult c toate a a a a pachetele pn la nk inclusiv au fost deja conrmate. momentul primei a a In transmiteri a pachetului n k, pachetele pn la n 2k inclusiv erau deja a a conrmate. Ca urmare, nici unul dintre pachetele cu numere de secvent a mai mici sau egale cu n 2k nu a mai fost trimis ulterior primei trimiteri a
necesar sistemului, poate anticipat, iar surplusul de capacitate nu poate a a valoricat. Dac solutia unui debit x de transmisie nu este satisfctoare, este a a a necesar un mecanism prin care receptorul s informeze emittorul asupra posia a bilitii sale de preluare a datelor. Pentru aceasta este necesar un al doilea at canal de comunicatie, napoi, dinspre receptor spre emittor. a
mittorul trimite un singr pachet, apoi ateapt semnalizarea receptorului c a s a a este pregtit s primeasc urmtorul pachet, apoi trimite urmtorul pachet a a a a a . a. m. d. Mecanismul este asemntor cu mecanismul de retransmitere a s a a pachetelor pierdute ( 4.3), a cu diferenta c emittorul ateapt primns a a s a irea ,,conrmrii fr a retransmite pachetul de date dac aceast ateptare a aa a a s depete o anumit durat. as s a a Ca i la mecanismul de retransmitere a pachetelor pierdute, trimiterea s a cte unui singur pachet urmat de ateptarea permisiunii de a-l trimite pe a a s urmtorul conduce la inecient dac durata dus- a a a ntors este semnicativ mai mare dect durata de transfer a unui pachet. acest caz, se poate stabili ca a In receptorul s comunice periodic emittorului numrul de pachete pentru care a a a mai are spatiu memoria tampon. Emittorul poate trimite cel mult numrul n a a de pachete anuntat de receptor nainte de-a primi un nou anunt de disponibil itate de la acesta. Deoarece anuntul de disponibilitate al receptorului ajunge la emittor cu o anumit arziere, timp care emittorul a putut trimite a a nt n a un numr de pachete, este necesar ca emittorul s scad din disponibilitatea a a a a anuntat de receptor numrul de pachete trimise a a ntre timp. Pentru aceasta este necesar ca pachetele s e numerotate i anuntul de disponibilitate s a s a acest fel, contin i numrul de ordine al ultimului pachet de date primit. In as a dac emittorul primete un anunt de disponibilitate prin care este informat a a s c receptorul tocmai a primit pachetul n i are memorie pentru a k pachete, a s nc atunci emittorul poate trimite cel mult pachetul n + k a nainte de-a primi un nou anunt de la receptor.
tru ambele mecanisme. Un exemplu clasic de astfel de mecanism combinat este protocolul TCP, descris pe larg 10.3.1. n
Surs 1 a
Surs 3 a
Surs 1 a D C B A
Surs 2 a
Surs 3 a Z
N M
Y X
Surs 1 a
Surs 3 a
Capitolul 5
Dac nite dispozitive, relativ numeroase sau a s ntinse pe distante mari, trebuie s poat comunica ecare cu ecare, este adesea prea costisitor s se a a a construiasc cte o legtur zic a a a a a ntre ecare dou dispozitive. Este necesar a acest caz s se poat stabili comunicatii n a a ntre dispozitive ntre care nu exist a o legtur zic direct dar exist legturi indirecte prin intermediul unui ir a a a a a a s de dispozitive legate zic ecare cu urmtorul. a O retea de comunicatie este un ansamblu de dispozitive care permit stabilirea de comunicatii indirecte. Intr-o retea de comunicatie numim: nod: orice dispozitiv ce particip activ retea. a n legtur direct: orice legtur a a a a a ntre noduri, utilizabil de ctre nivelul a a retea; dou noduri a ntre care exist o legtur direct se numesc vecini . a a a a nod nal sau statie (engl. host): un nod care este surs sau destinatie a pentru date; nod intermediar sau ruter (engl. router ): un nod ce poate tranzitat de trac ce nu are ca surs sau destinatie acel nod; uneori este numit, a n mod incorect, server. adres de retea sau, simplu, adres : un identicator (un ir de simboluri) a a s ce identic unic un nod al retelei. Fiecare nod terminal trebuie s aib a a a cel putin o adres; nodurile intermediare nu au a ntotdeauna adrese. drum sau rut : o secvent de noduri, ecare vecin cu urmtorul, a a a mpreun a cu legturile directe dintre ele. a Notm c unele retele exist o distinctie net a a n a a ntre nodurile nale i nodurile intermediare: de exemplu reteaua telefonic, aparatele telefonice s n a
sunt noduri nale iar centralele telefonice sunt noduri intermediare. alte In retele, unele sau toate nodurile sunt simultan noduri nale i noduri interme s diare. Unei retele i se asociaz un graf, construit astfel: ecrui nod al a a retelei i se asociaz un vrf al grafului, iar ecrei legturi directe i se asociaz a a a a a o muchie (sau un arc, dac legturile sunt asimetrice). Reteaua trebuie s a a a e astfel construit at graful asociat ei s e conex (respectiv tare conex), a nc a altfel, evident, vor exista perechi de noduri ce nu vor putea comunica. Functia principal a nodurilor retelei este aceea de-a retransmite a datele, asigurnd continuitatea transportului lor de la nodul surs la nodul a a destinatie. Realizarea acestei functii va studiat 5.1. Pentru retrans a n miterea datelor spre destinatie, ecare nod trebuie s decid crui vecin s re a a a a transmit datele; problema lurii aceastei decizii se numete problema dirijrii a a s a nal, 5.3 vom studia problemele (engl. routing) i va studiat 5.2. In s a n n ce apar atunci cnd solicitarea retelei este ridicat (nu este neglijabil fat de a a a a capacitatea nodurilor i legturilor utilizate). s a
Legatur zic a a
Legatur zic a a
Figura 5.1: Modulele nodurilor unei retele. Sunt gurate doar modulele din trei noduri, de-a lungul traseului datelor ntre dou aplicatii. a
Un ansamblu de calculatoare constituie o retea dac i numai dac as a graful nodurilor i legturilor directe este conex (tare conex, dac legturile pot s a a a asimetrice), i plus modulele de retea ale tuturor nodurilor pot comunica s n printr-un protocol comun. lipsa unui protocol comun In ntre modulele de retea nu se poate sta bili comunicatia ntre oricare dou noduri nale a ntr-un mod uniform, fr ca aa aplicatia client s trebuiasc s aibe cunotinte despre nodurile intermediare. a a a s Din acest punct de vedere spunem c nivelul retea, i special protocolul a s n utilizat de nivelul retea, este liantul ntregii retele. Dup serviciul oferit, o retea poate cu datagrame (numite uneori a pachete) sau cu conexiune: datagrame: Intr-o retea ce ofer serviciu tip datagrame, aplicatia surs a a creaz o datagram continnd datele de transmis i o paseze modulului a a a s retea, specicnd totodat adresa nodului destinatie. Datagrama este a a transmis din aproape aproape pn la nodul destinatie, unde este a n a a pasat aplicatiei (vezi 5.1.1). De remarcat c dou datagrame distincte a a a generate de acelai nod surs i adresate aceluiai nod destinatie sunt s a s s prelucrate, de ctre retea, complet independent una de alta. Functionaa rea retelelor ce ofer servicii de tip datagrame este similar sistemului a a de pot (pota obinuit). sa s s a conexiune: Intr-o retea ce ofer serviciu de tip conexiune, o aplicatie a ce dorete s comunice cu o aplicatie dintr-un alt nod s a ncepe prin a so-
licita modulului retea deschiderea unei conexiuni ctre acel nod. Nivelul a retea informeaz nodul destinatie despre cererea de deschidere a cone a xiunii i, dac aplicatia destinatie accept, conexiunea este deschis i s a a as nodul initiator este informat de acest lucru. Dup deschiderea cone a xiunii, unul sau ambele noduri ( functie de tipul conexiunii deschise, n unidirectional sau bidirectional) poate transmite celuilalt pachete de a a date prin conexiunea deschis. La terminarea comunicatiei, una dintre a aplicatii solicit nivelului retea a nchiderea conexiunii. Ca efect, nivelul retea informeaz nodul partener cu privire la a nchiderea conexiunii i s elibereaz resursele alocate conexiunii. Functionarea retelelor ce ofer a a serviciu de tip conexiune este descris 5.1.2. Un model tipic de retea a n ce ofer conexiuni este sistemul telefonic. a
Fiecare nod intermediar, pe rnd, determin nodul urmtor prin care trebuie a a a s treac conexiunea i-i trimite mai departe cererea de deschidere a conexiua a s nii. Determinarea nodului urmtor se face la fel ca i cazul retelelor bazate a s n pe datagrame (vezi 5.2). Dup determinarea nodului vecin, nodul curent a memoreaz tabela conexiunilor deschise nodul astfel ales. Conexiunea este a n deschis momentul care cererea de deschidere a conexiunii ajunge i a n n s este acceptat de nodul destinatie. Odat conexiunea deschis, drumul corea a a spunztor a ntre cele dou noduri nale este xat pe toat durata conexiunii. a a faza de comunicare prorpiu-zis, exist dou metode prin care se In a a a poate realiza tranzitarea tracului prin ecare nod intermediar: Comutare de circuite zice: acest caz, mediul prin care intr datele In a nod este conectat zic (de exemplu, cu ajutorul unui n ntreruptor a electric) la mediul prin care trebuie trimise mai departe datele (vezi g. 5.2). Aceasta metod, amintit aici doar pentru completudine, nu a a se mai utilizeaz prezent (a fost utilizat retelele telefonice vechi, a n a n analogice).
X A B C
1 2 1 2 1 2 3
Y A
B Figura 5.2: O retea cu comutare de circuite zice. Cercurile mari reprezint nodurile a intermediare, iar liniile punctate reprezint interconectrile mediilor zice. De remara a cat necesitatea mai multor legturi zice a ntre cte dou noduri. a a
Comutare de circuite virtuale: Fiecare pachet ce sosete printr-o legtur s a a de date este memorat temporar i apoi retransmis prin legtura spre s a urmtorul nod. a S remarcm c, ambele cazuri, o legtur a a a n a a ntre dou noduri este a
asociat unei singure conexiuni; dou conexiuni nu pot utiliza (direct) o aceeai a a s legtur. (Din acest motiv, sistemul telefonic vechi, a a n ntre dou centrale a telefonice erau duse paralel mai multe perechi de conductoare, numrul de n a convorbiri simultane utiliznd o rut trecnd prin cele dou centrale ind lima a a a itat la numrul de perechi de conductoare.) Deoarece, special pe distante a n mari, mediul zic este scump, se utilizeaz mecanisme de multiplexare. Acesa tea pot lucra e la nivel zic (multiplexare frecvent 3.3.3 sau n a n lungimea de und 3.6.2.3), e la nivelul legturii de date (multiplexare a a n timp, 4.5). Mai remarcm c multiplexarea timp poate utilizat doar a a n a sistemele cu comutare de circuite virtuale. n La utilizarea comutrii de circuite virtuale a mpreun cu multiplexarea a timp, un nod care a primit un pachet trebuie s-l memoreze pn cnd n a a a a i vine rndul s e transmis mai departe prin legtura de ieire, adic pn a a a s a a a cnd, legtura zic de ieire, vine rndul la transmisie canalului logic prin a n a a s a care trebuie trimis pachetul.
X A B C XZ ZY C XY Y A
B Figura 5.3: O retea cu comutare de circuite virtuale. Desfurarea timp a receptiei as n i transmitere mai departe a pachetelor, pentru nodul X, este prezentat gura 5.4. s a n Legturile directe a ntre nodurile intermediare utilizeaz multiplexare timp. a n
Inchiderea conexiunii se face prin transmiterea unui pachet special de cerere a nchiderii conexiunii. Acest pachet urmeaz aceeai rut ca i a s a s pachetele normale de date. Fiecare nod de pe traseu, la primirea pachetului, terge conexiunea respectiv din tabelul conexiunilor i elibereaz resursele s a s a alocate. Comutarea de circuite virtuale seamn la prima vedere cu transmisia a a
125
a2
1
a3
1
b1
1
b2
1
b3
1
c1
1
c2
1
c3
1
XY
a1
1 2
c1 a2
3 1 2
c2 a3
3 1 2
c3
3
XZ
b1
1 2
b2
1 2
b3
1 2
timpul Figura 5.4: Desfurarea timp a receptiei i a transmiterii mai departe a paas n s chetelor, pentru nodul X din reteaua din gura 5.3. XY i XZ desemneaz legturile s a a zice ntre nodurile X i Y , respectiv X i Z. Numerele de sub axe marcheaz pes s a rioadele de timp alocate canalelor logice corespunztoare. Legturile dintre canalele a a virtuale de intrare i de ieire sunt identice cu legturile zice din gura 5.2 s s a
de datagrame. Diferenta vine din felul care un nod, care primete un pachet n s i trebuie s-l trimit mai departe, ia decizia privind legtura prin care s-l s a a a a trimit. cazul comutrii de circuite virtuale, decizia este luat functie a In a a n de circuitul virtual cruia apartine pachetul, informatie dedus din legtura a i a a de date prin care a intrat pachetul. Decizia se ia pe baza tabelei de circuite i este identic pentru toate pachetele apartinnd aceluiai circuit. O urmare s a a s a acestui fapt este c defectarea oricrui nod sau oricrei legturi de-a lungul a a a a unei conexiuni duce la nchiderea fortat a conexiunii. cazul retelei bazate a In pe datagrame, decizia de dirijare se ia functie de adresa destinatie, continut n a datagram. Dou datagrame n a a ntre aceleai dou statii pot dirijate pe rute s a diferite.
Rezolvarea problemei dirijrii se bazeaz pe determinarea unui drum a a de cost minim, de la nodul surs la nodul destinatie al datagramei sau al a conexiunii, graful asociat retelei de calculatoare. n Graful asociat retelei de calculatoare este un graf ce are cte un vrf a a asociat ecrui nod al retelei i cte o muchie asociat ecrei legturi directe a s a a a a ntre dou noduri. Fiecrei muchii i se asociaz un cost, existnd urmtoarele a a a a a posibiliti pentru denirea costului: at toate costurile egale; functie de lungimea zic a legturii (cu ct o legtur este mai lung, n a a a a a a cu att costul asociat este mai mare); a functie de capacitatea legturii; n a functie de arcarea legturii. n nc a Remintim, din teoria grafelor, o proprietate important a drumurilor a de cost minim: Dac v0 , v1 , . . . , vj1 , vj , vj+1 , . . . , vk este un drum de cost a minim de la v0 la vk , atunci v0 , v1 , . . . , vj1 , vj este un drum de cost minim de la v0 la vj i vj , vj+1 , . . . , vk este un drum de cost minim de la vj la vk . s De asemenea, dac exist cel putin un drum de cost minim de la v0 la vk a a ce trece prin vj , dac v0 , v1 , . . . , vj1 , vj este un drum de cost minim de la a v0 la vj i vj , vj+1 , . . . , vk este un drum de cost minim de la vj la vk , atunci s v0 , v1 , . . . , vj1 , vj , vj+1 , . . . , vk este drum de cost minim de la v0 la vk . Aceast a proprietate st la baza algoritmilor de determinare a drumului minim a ntr-un graf. consecint, dac un pachet de la un nod v0 spre un nod vk ajunge In a a la un nod vj , nodul urmtor, dup vj , de pe drumul de cost minim de la v0 spre a a vk depinde doar de vk , nu i de v0 . Ca urmare, pentru a efectua retransmiterea s datelor, ecare nod vj trebuie s cunoasc doar, pentru ecare destinatie a a posibil vk , urmtorul vrf vj+1 de pe drumul optim spre acea destinatie. a a a Corespondenta, pentru ecare vj , ntre destinatia vk i nodul urmtor vj+1 s a poart denumirea de tabel de dirijare. a a Pentru a putea aplica direct un algoritm clasic de determinare a drumurilor de cost minim, este necesar centralizarea datelor despre nodurile i a s legturile din retea, vederea obtinerii efective a grafului retelei. Dup cala n a culul drumurilor, este necesar distribuirea tabelelor de dirijare ctre toate a a nodurile retelei. Intr-o retea mic, centralizarea informatiilor despre legturi i apoi a a s distribuirea informatiilor de dirijare ctre noduri se poate face manual, de a ctre administratorul retelei. a
retelele mai mari, acest proces trebuie automatizat (total sau In partial). Deoarece nu este de dorit oprirea complet a retelei oridecteori a a se modic vreo legtur, trebuie luate msuri ca timpul scurs de la modia a a a carea legturilor pn la actualizarea a regulilor de dirijare pe toate nodurile a a a s e scurt i functionarea retelei acest timp s e acceptabil. Metodele a s n a a principale de calcul pentru tabelele de dirijare sunt descrise 5.2.1 i 5.2.2. n s retelele foarte mari, cum ar Internet-ul, centralizarea complet a In a datelor nu este rezonabil; trebuie utilizati algoritmi de dirijare care s permit a a a ecrui nod efectuarea dirijrii fr a necesita dect putine informatii i doar a a aa a s despre o mic parte a retelei. De asemenea, tabela de dirijare trebuie s aib a a a o reprezentare mai compact dect cte un rnd pentru ecare nod destinatie a a a a posibil. astfel de cazuri se utilizeaz dirijarea ierarhic ( 5.2.3). In a a Exist i metode ad-hoc de dirijare, utilizate diverse situatii mai as n deosebite, de exemplu dac graful asociat retelei de calculatoare are anumite a particulariti. Acestea vor studiate 5.2.4. at n
Calculul drumurilor de cost minim de la un vrf la toate celelalte este a o problem clasic teoria grafelor. Dac toate costurile sunt pozitive a a n a conditie ndeplinit de graful asociat unei retele de calculatoare algoritmul a cel mai ecient este algoritmul lui Dijkstra (algoritmul 5.1). Notnd cu n a numrul de vrfuri (noduri ale retelei) i cu m numrul de muchii (legturi a a s a a directe), complexitatea algoritmului lui Dijkstra este timp O(m + n log n) i s spatiu O(m + n). Calculul trebuie refcut complet la ecare modicare a a grafului asociat retelei de calculatoare.
Algoritmul Dijkstra intrarea: G = (V, E) graf orientat (E V V ) c : E [0, ) costurile asociate arcelor x0 V vrful curent a ieirea: t : V {(x0 , y) E} tabela de dirijare; t(x) este legtura direct prin s a a care x0 trebuie s trimit pachetele destinate lui x. a a algoritmul: pentru i V execut a d[i]: = sfrit pentru as d[x0 ]: = 0 Q: = V ct timp Q = execut a a e v Q elementul din Q pentru care d[v] este minim Q: = Q \ {v} pentru y Q : (v, y) E execut a dac d[v] + c(v, y) < d[y] atunci a d[y]: = d[v] + c(v, y) dac v = x0 atunci a t(y): = (x0 , y) altfel t(y): = t(v) sfrit dac as a sfrit dac as a Q: = Q {y} sfrit pentru as sfrit ct timp as a sfrit algoritm as
Algoritmul 5.1: Algoritmul lui Dijkstra cu adugirea pentru calculul tabelei de a dirijare.
Algoritmul Vector dist intrarea: V multimea de noduri a retelei; x nodul curent; N out (i) multimea vecinilor directi ai lui i; (ci,j )i,jV costurile legturilor directe; ci,j = dac i N out (i); ecare a a nod x cunoate doar (cx,j )jV . s ieirea: (di,j )i,jV costurile drumurilor optime; ecare nod va calcula doar s (dx,j )jV ; (pi,j )i,jV primul nod, dup i, pe drumul optim de la i la j. a algoritmul: pentru i V execut a dx,i :=cx,i sfrit pentru as ct timp adevrat execut a a a obtine de la vecinii directi di,j , pentru i N out (i) pentru j V execut a dx,j :=min(cx,j , min )cx,i + di,j
iN out (x)
px,i := vecinul pentru care s-a obtinut minimul sfrit pentru as sfrit ct timp as a sfrit algoritm as
Algoritmul 5.2: Algoritmul de dirijare cu vectori distant a
pentru ca, dac ulterior se modic legturile directe, s actualizeze cona a a a n tinuare tabelele de dirijare. Dealtfel, este destul de dicil de determinat, n interiorul algoritmului, momentul care s-a produs stabilizarea. Dac apare n a o legtur direct nou sau dac scade costul unei legturi directe existente, a a a a a a tabelele de dirijare se stabilizeaz din nou dup un numr de iteratii cel mult a a a egal cu numrul maxim de muchii de-a lungul unui drum optim. Dac se a a elimin o legtur direct sau crete costul unei legturi directe, tabelele de a a a a s a dirijare se stabilizeaz mult mai a ncet, aa cum se vede exemplul 5.2. s n
A 2 B 21 20 D 3 5 C
Figura 5.5: Reteaua pentru exemplele 5.1 i 5.2. Numerele reprezint costurile s a asociate legturilor directe. a
Exemplul 5.1: Fie reteaua din gura 5.5. Calculul tabelelor de dirijare, con form algoritmului 5.2, de la initializare pn la stabilizare, duce la urmtoarele a a a tabele: Initializarea: aceast faz, sunt luate considerare doar legturile In a a n a directe; dac un nod nu este accesibil direct, ruta pn la acesta este a a a marcat ca avnd cost innit. a a Nodul B: Nodul C: Nodul A: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A C C C 5 B B 5 D D 21 D D 20 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Iteratia 1: Pentru ecare destinatie posibil, se ia considerare legtura a n a direct (dac exist) i rutele prin ecare din vecinii directi. Costul a a a s legturii directe este cunoscut, iar costul rutei printr-un vecin este costul a legturii spre acel vecin plus costul raportat de acel vecin. De exemplu, a nodul B ia considerare ca rute spre D: legtura direct de cost 20, n a a
legtura prin A de cost 2+21=23 i legtura prin C de cost 5+3=8; cea a s a mai bun este cea prin C. Ca alt exemplu, nodul A are urmtoarele rute a a spre D: legtura direct de cost 21 i legtura prin B de cost 2+20=22; a a s a de notat c pentru legtura prin B se ia costul BD raportat de B, a a calculat de ctre B la initializare. a Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D D 21 D C 8 D D 3 Nodul D: dest. via cost A A 21 B C 8 C C 3 Iteratia 2: S urmrim ruta calculat de A ctre D. Sunt luate con a a a a n siderare legtura direct de cost 21 i legtura prin B a crui cost este a a s a a acum 2+8=10 ntruct se bazeaz pe costul legturii BD calculat de a a a ctre B la iteratia 1. a Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A B 7 C B 7 C C 5 B B 5 D B 10 D C 8 D D 3 Nodul D: dest. via cost A C 10 B C 8 C C 3 Incepnd cu iteratia 3, tabelele calculate sunt identice cu cele de la itaretia a 2. Exemplul 5.2: Fie reteaua din gura 5.5 i e tabelele de dirijare rezultate s dup stabilizarea algoritmului cu vectori distant (vezi exemplul 5.1). S prea a a supunem c legtura BC cade, rezultnd reteaua din gura 5.6. S urmrim a a a a a evolutia, continuare, a tabelelor de dirijare. n La prima iteratie, la recalcularea rutelor nodului B spre C i spre D, s nodul B ia calcul rute prin A sau prin D. Rutele optime gsite sunt cele n a prin A, bazate pe vechile tabele ale lui A; nodul B nu are cum s determine a
Figura 5.6: Reteaua rezultat prin cderea legturii BC din reteaua din gura 5.6. a a a
c aceste rute nu mai sunt valide deoarece se bazau pe legtura BC. La fel a a procedeaz i nodul C, gsind c rutele optime spre A i B trec prin D. as a a s Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 7 10 cost 10 8 3 Nodul dest. A C D B: via A A A cost 2 9 12 Nodul dest. A B D C: via D D D cost 13 11 3
La urmtoarea iteratie se vor modica costurile rutelor din A spre C a i D i din D spre A i B: s s s Nodul dest. B C D Nodul dest. A B C A: via B B B D: via C C C cost 2 11 14 cost 16 14 3 Nodul dest. A C D B: via A A A cost 2 9 10 Nodul dest. A B D C: via D D D cost 13 11 3
continuare, costurile aparente ale rutelor cresc de la o iteratie la In alta, pn cnd ajung la valorile rutelor reale optime. La a 3-a iteratie de la a a a cderea legturii BC, tabelele ajung forma urmtoare: a a n a
Nodul B: Nodul C: A: via cost dest. via cost dest. via cost B 2 A A 2 A D 19 B 11 C A 13 B D 17 B 14 D A 14 D D 3 D: via cost C 16 C 14 C 3 Urmeaz, la a 4-a iteratie, descoperirea de ctre D a rutelor reale a a spre A i spre B: s Nodul A: Nodul B: Nodul C: dest. via cost dest. via cost dest. via cost B B 2 A A 2 A D 19 C B 15 C A 13 B D 17 D B 18 D A 14 D D 3 Nodul D: dest. via cost A A 21 B B 20 C C 3 Restul rutelor reale sunt descoperite i mai trziu, stabilizarea tabelelor s a survenind abia la a 8-a iteratie. Nodul dest. B C D Nodul dest. A B C general, numrul de iteratii dup care se stabilizeaz tabelele dup In a a a a cderea sau creterea costului unei legturi poate cel mult egal cu raportul a s a dintre cea mai mare cretere de cost s ntre dou noduri i cel mai mic cost al a s cazul exemplului 5.2, costul drumului optim de la B unei legturi directe. In a la C crete, prin cderea legturii directe BC, de la 5 la 23, o cretere de s a a s 18 uniti. Costul cel mai mic al unei legturi directe este 2 (legtura AB). at a a In Ca urmare, stabilizarea tabelelor poate lua cel mult 18 = 9 iteratii. cazul 2 care cderea unei legturi duce la deconectarea retelei, acest lucru nu va n a a detectat niciodat, numrul de iteratii necesar ind innit. a a Pentru a mbunti comportamentul cazul cderii sau creterii a at n a s costului legturilor, se poate modica algoritmul astfel: tabelele vor ine ruta a t complet spre destinatie, iar la recalcularea rutelor, rutele ce trec de dou ori a a prin acelai nod nu sunt luate considerare. s n Exemplul 5.3: S relum reteaua din exemplul 5.2, cu memorarea a a ntregului
drum tabela de distante. Dup stabilizarea tabelelor pe reteaua din gura 5.5, n a se obtin urmtoarele tabele: a Nodul dest. B C D Nodul dest. A B C A: ruta B B,C B,C,D D: ruta C,B,A C,B C Nodul dest. A C D B: ruta A C C,D Nodul dest. A B D C: ruta B,A B D
cost 2 7 10 cost 10 8 3
cost 2 5 8
cost 7 5 3
Dup cderea legturii BC (g. 5.6), evolutia tabelelor de dirijare a a a are loc dup cum urmeaz: a a Iteratia 1: S considerm drumurile posibile de la nodul B spre nodul C. a a Legtur direct nu exist. Drumul prin A a a a a ncepe cu muchia AB i cons tinu cu ruta din tabela, de la iteratia anterioar, a lui A, adic drumul a a a ABC. Prin urmare, drumul prin A este BABC i este respins datorit s a repetrii vrfului B. De mentionat c nu se face vreo vericare urma a a a n creia s se observe c drumul BABC contine muchia inexistent BC; a a a a din lipsa unor informatii globale, este imposibil de prins toate cazurile de utilizare a unor muchii inexistente. Drumul de la B la C prin D este BDC, de cost 20+3=23; acesta este singurul candidat, ca urmare este ales ca rut optim de la B la C. a a Analog, calculul rutei de la B la D, ruta prin A, anume BABCD, n este respins i, ca urmare, rmne s e aleas doar legtura direct a s a a a a a a BD. La calculul rutei de la C la A, ar exista o singur posibilitate, prin a nodul D, a aceasta conduce la drumul CDCBA care este respins din ns cauza repetrii nodului C. Ca urmare, nodul C marcheaz lipsa rutei a a punnd costul . Analog, se determin inexistenta vreunei rute valide a a de la C la B. Nodul B: Nodul C: Nodul A: dest. ruta cost dest. ruta cost dest. ruta cost B B 2 A A 2 A C B,C 7 C D,C 23 B D B,C,D 10 D D 20 D D 3
Nodul D: dest. ruta cost A C,B,A 10 B C,B 8 C C 3 Iteratia 2: Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3 Iteratia 3: Se stabilizeaz a Nodul A: dest. ruta cost B B 2 C D,C 24 D D 21 Nodul D: dest. ruta cost A A 21 B B 20 C C 3
Nodul dest. A C D
B: ruta A D,C D
cost 2 23 20
Nodul dest. A B D
C: ruta D
cost 3
cost 2 23 20
Nodul dest. A B D
cost 24 23 3
ctre subreteaua imediat superioar ierarhic: o singur rut, comun, a a a a a pentru toate nodurile din acea subretea, ruta conducnd spre cel mai a apropiat ctre ecare din subretelele imediat inferioare ierarhic, cte o rut pentru a a a ecare subretea. Ruta de la un nod initial ctre o subretea vecin subretelei nodului initial este a a ruta de la nodul initial ctre cel mai apropiat nod de la granita dintre cele a dou subretele. a Fiecare subretea este sucient de mic, astfel at, interiorul a nc n ecrei subretele, calculul rutelor se face prin metode de dirijare ,,obinuite. a s Pentru ca orice nod s poat determina din ce subretea face parte a a nodul destinatie a unui pachet, precum i localizarea subretelei respective s n ierarhie, adresa ecrui nod este astfel construit at s descrie pozitia nodua a nc a lui ierarhia de retele. Astfel, adresele sunt formate din componente, prima n component identicnd subreteaua de nivel 1 din care face parte sau creia a a a i este subordonat nodul, urmnd identicatorul subretelei de nivel 2, . a. m. d., a s ncheind cu identicatorul nodului cadrul subretelei din care face parte. n De remarcat c, general, dirijarea ierarhic nu conduce la drumul a n a optim ctre destinatie. Aceasta deoarece dirijarea ierarhic se caut optimul a n a a local ecare subretea i, ca urmare, este posibil s se rateze optimul global n s a (a se vedea exemplul 5.4). Exemplul 5.4: gura 5.7 este reprezentat o retea cu dirijare ierarhic pe In a a dou nivele. Reteaua este format dintr-o subretea rdcin i patru subretele a a a a as subordonate ei. Adresa ecrui nod este format din dou componente, prima idena a a ticnd subreteaua de nivel 1 din care face parte i a doua identicnd nodul a s a cadrul subretelei respective. n S presupunem c nodul 1.1 are de trimis un pachet ctre nodul 3.4. a a a Dirijarea decurge astfel: Nodul 1.1 determin c destinatia 3.4 face parte din alt subretea dect a a a a el si; ca urmare, caut drumul spre cel mai apropiat nod ce are nsu a legtur cu reteaua ierarhic superioar. Nodul acesta este 1.2. a a a Nodul 1.2 caut drumul spre cel mai apropiat nod din subreteaua 3. a Nodul gsit este 3.1 i drumul pn la el este 1.2, 2.3, 3.1 (echivalent, se a s a a poate lua drumul 1.2, 2.1, 3.1). Nodul 3.1 trimite pachetul spre destinatia 3.4 pe drumul cel mai scurt, anume 3.1, 3.2, 3.3, 3.4 (alt drum, echivalent, este 3.1, 3.6, 3.5, 3.4). S observm c drumul pe care urmeaz pachetul, 1.1, 1.2, 2.3, 3.1, 3.2, 3.3, a a a l a
1.1
1.5
1.4 1.3
1.2
3.3
3.4
Figura 5.7: O retea cu dirijare ierarhic pe dou nivele. Reteaua de pe nivelul a a rdcin are nodurile reprezentate prin cercuri pline (mici) i legturile reprezentate a a a s a cu linii ngroate. s
3.4 nu este optim, ntruct lungimea lui este 6, iar drumul 1.1, 1.5, 1.3, 4.1, a 3.3, 3.4 are lungimea 5.
5.2.4.2. aarea rutelor din adresele surs ale pachetelor Invt a O metod simpl de constructie a tabelelor de dirijare este ca, la a a primirea unui pachet de la un nod surs S dinspre un nod vecin V , s se a a introduc sau s se actualizeze tabela de dirijare regula pentru destinatia a a n S prevznd ca urmtor nod pe V . Regulile astfel introduse trebuie s aib a a a a a valabilitate limitat timp altfel apar probleme la modicarea legturilor a n a din retea. De asemenea, mai trebuie un mecanism pentru dirijarea pachetelor pentru care a nu exist reguli de dirijare de exemplu, se poate folosi nc a inundarea. Metoda este utilizat retelele Ethernet. a n
este preferabil s e aruncate datagramele mai vechi. a De notat c, adesea, rezolvarea problemelor de mai sus necesit o colaborare a a ntre nivelul retea i nivelele superioare. s
cozile ordine descresctoare a nivelelor de prioritate pn gsete o coad n a a a a s a nevid. Pachetul urmtor ce va transmis este extras din prima coad nevid. a a a a Dac metoda prioritilor este combinat cu ateptarea echitabil, a at a s a ecrui nivel i se asociaz un set de cozi, interiorul setului functionnd a a n a regulile de la ateptarea echitabil. Urmtorul pachet trimis este extras din s a a setul de cozi cel mai prioritar care exist cel putin o coad nevid. n a a a
informarea, mai departe, a sursei se poate utiliza dimensiunea ferestrei TCP ( 10.3.1.8). O semnalizare implicit a faptului c reteaua este arcat const a a nc a a ai pierderea pachetelor. Pierderea poate observat de nodul surs n nss a a prin aceea c nu primete conrmri ( cazul utilizrii unui protocol cu cona s a n a rmare i retransmitere, 4.3) sau rspuns la mesajele trimise ( cazul unei s a n aplicatii care trimite o datagram de cerere i ateapt o datagram care s a s s a a a rspund la cerere). Pentru ca pierderea pachetelor s poat utilizat ca a a a a a semnalizare a congestiei, mai este necesar ca pierderea unui pachet din alte cauze dect congestia s e putin probabil. Rezult, pentru legturile directe a a a a a cu rat a erorilor ridicat ( principal, legturi radio), necesitatea utilizrii, a a n a a la nivelul legturii de date, e a unui cod corector de erori, e a unui protocol a de conrmare i retransmitere . s Indiferent de metoda de semnalizare utilizat, o implementare simpl a a risc s duc la oscilatii: dac un nod intermediar ajunge congestionat, sema a a a nalizeaz tuturor nodurilor terminale ale legturilor stabilite prin el despre a a congestie. Reactia este diminuarea tracului prin toate legturile i ca ur a s mare scderea tracului mult sub maximul admis. Dup un timp, nodurile a a terminale vor crete din nou tracul, pn la congestionarea, din nou, a nodus a a lui intermediar considerat. Solutionarea problemei oscilatiilor se face punnd a nodul intermediar s trimit semnale c este supra arcat cu putin a a a nc nainte de-a ajunge la limita capacitii sale i de-a alege aleator legturile crora li at s a a se semnalizeaz arcarea. a nc
de pachete se pierd). Un mecanism mai elaborat permite scurte rafale. Ca idee, ruterul ine evidenta capacitii nefolosite (diferenta dintre debitul maxim acceptat t at i debitul uxului) i permite, contul acesteia, un exces de debit. Mai s s n n detaliu, ruterul asociaz cozii un numr de jetoane. Periodic, numrul de a a a jetoane este crescut cu o unitate, fr a a depi o valoare maxim. Dac a a ns as a a exist un pachet coad i numrul de jetoane este mai mare sau egal cu a n a s a numrul de biti ai pachetului, pachetul este preluat din coad i retransmis, a as iar numrul de jetoane asociat cozii este sczut cu o valoare egal cu numrul a a a a de biti ai pachetului. Mecanismul se numete gleata cu jeton. s a
Sunt permise i alte date (de exemplu, prin conexiuni fr trac garantat), s aa a acestora li se asociaz un nivel de prioritate sczut. ecare ruter se ns a a In utilizeaz un mecanism bazat pe prioriti. acest fel, uxurile ce au rezervat a at In resurse au capacitate garantat, iar restul datelor sunt transmise, fr vreo a aa garantie, dac mai rmn resurse i pentru ele. a a a s
9 5 8
Reteaua B
Figura 5.8: Legturi prin tunel. O parte dintre legturile directe din reteaua A, a a gurate cu linie punctat, sunt obtinute apelnd la serviciile retelei B. Legtura 45 a a a apare ca legtur direct pentru reteaua A, dar este construit de reteaua B prin a a a a intermediul nodului 6.
Un tunel este o legtur, realizat prin intermediul unei retele, care a a a este utilizat de o alt retea ca i cnd ar o legtur direct (vezi g. 5.8). a a s a a a a Pachetele celei de-a doua retele, incluznd antetele specice acesteia, sunt a transportate ca date utile printr-o conexiune sau, dup caz, prin datagrame a ale primei retele.
Capitolul 6
Vom studia acest capitol cum se poate proteja comunicatia dintre n dou entiti contra actiunilor unui tert, numit adversar sau intrus, care intera at cepteaz sau altereaz comunicatia a a ntre ele. Protectia comunicatiei mpotriva actiunilor unui adversar se numete securizarea comunicatiei. s Adversarul poate : adversar pasiv , care doar intercepteaz mesajele transmise; a adversar activ , care i intercepteaz i modic mesajele. s as a Protectia comunicatiei fat de actiunile adversarului cuprinde: a Asigurarea condentialitii are ca obiectiv s impiedice un adversar at a pasiv s eleag un mesaj interceptat sau s extrag vreo informatie a nt a a a din el. Vericarea autenticitii mesajelor, numit i autenticarea mesajelor, at as are ca obiectiv detectarea, de ctre receptor, a falsurilor, adic a mesajelor a a create sau modicate de un adversar activ. Vericarea autenticitii at mesajelor se aseamn cu detectarea erorilor. Spre deosebire a de a a ns detectarea erorilor, unde modicrile produse de mediul de transmisie a sunt aleatoare, la vericarea autenticitii mesajelor avem un adversar at care ncearc mod deliberat s produc modicri nedetectabile. a n a a a Asigurarea non-repudiabilitii mesajelor are ca obiectiv s permit at a a receptorului s dovedeasc autenticitatea unui mesaj fata unui tert, a a n altfel spus, emittorul s nu poat nega faptul c a transmis un anumit a a a a mesaj. Asigurarea non-repudiabilitii este similar cu autenticarea at a mesajelor, dar plus trebuie s nu permit nici mcar receptorului s n a a a a creeze un mesaj care s par autentic. a a
Vericarea prospetimii are ca obiectiv detectarea, de ctre receptor, a a eventualelor copii ale unui mesaj (autentic) mai vechi. Este posibil ca un adversar s intercepteze, de exemplu, un ordin de transfer de bani a favoarea sa i apoi s transmit bncii multiple copii ale ordinului n s a a a de transfer de bani. lipsa vericrii prospetimii, banca va efectua de In a mai multe ori transferul de bani. Vericarea autenticitii mesajelor, at singur, nu rezolv problema, deoarece ecare copie este identic cu a a a originalul i, ca atare, este autentic. s a Autenticarea entitilor are ca obiectiv vericarea, de ctre o entitate, at a a identitii entitii cu care comunic. Mai exact, exist un server i at at a a s unul sau mai multi clienti legitimi care deschid conexiuni ctre server. a Modelul adversarului, acest caz, este putin diferit: adversarul poate s n a deschid o conexiune spre server i s a s a ncerce s se dea drept un client lea gitim. Eventual, adversarul poate s intercepteze comunicatiile clientilor a legitimi, pentru a obtine informatii vederea pclirii serverului, dar n a a nu poate altera comunicatia printr-o conexiune deschis de altcineva. a prezenta unui adversar activ, autenticarea entitilor nu este prea In at util, deoarece adversarul poate s lase protocolul de autenticare s a a a se desfoare normal i apoi s trimit orice numele clientului. as s a a n In prezenta unui adversar activ, este mai degrab necesar un mecanism de a stabilirea cheii (vezi mai jos). Stabilirea cheii are ca obiectiv obtinerea, de ctre partenerii de comu a nicatie legitimi, a unui ir de biti, numit cheie, ce urmeaz a utilizat s a a la asigurarea condentialitii i la vericarea autenticitii mesajelor. at s at Cheia obtinut trebuie s e cunoscut doar de ctre cei doi parteneri a a a a care doresc s comunice. a multe lucrri, loc de autenticarea mesajelor se pune problema In a n vericrii integritii mesajelor vericarea de ctre receptor c mesajul a at a a este identic cu cel emis de emittor (c nu a fost modicat pe traseu) i a a s a autenticrii sursei mesajului vericarea de ctre receptor a identitii a a at autorului unui mesajului. Cele dou operatii vericarea integritii i aua at s tenticarea sursei nu au sens dect a mpreun. Aceasta deoarece, dac a a un mesaj a fost alterat de ctre adversar (lucru care se constat cu ocazia a a vericrii integritii), mesajul poate vzut ca un mesaj produs de adversar a at a i pretinznd c provine de la autorul mesajului original; acest din urm mesaj s a a a nu a fost modicat timpul transportului (de la adversar spre destinatar), n dar sursa sa nu este autentic (mesajul provine de la altcineva dect autorul a a indicat mesaj). n
numit cheie. Fiecare valoare a cheii produce o pereche criptare-decriptare distinct. Cheia se presupune a uor de generat la nevoie. a s Multimea cheilor posibile se numete spatiul cheilor i o vom nota s s n continuare cu K. Functiile de criptare i decriptare sunt de forma c : T K s M i respectiv d : M K T . Cheia este scris ca parametru. Pentru o s a valoare xat a cheii k K, criptarea devine ck : T M , iar decriptarea a dk : M T , cu dk ck = 1T . Pentru ecare k K, (ck , dk ) formeaz o a pereche criptare-decriptare. Algoritmii propriu-zii, adic functiile c : T K M i d : M K s a s T , se presupune c sunt cunoscuti adversarului; dac merit s puteti schimba a a a a cheia, nseamn c deja aveti a a ndoieli privitoare la ct de secret puteti ine a t algoritmul fat de adversar. . . Ca urmare, pentru o aplicatie, un algoritm a public nu este mai nesigur dect un algoritm ,,secret, necunoscut publicului a dar posibil cunoscut adversarului. Un algoritm foarte cunoscut, dar fr vulaa nerabiliti cunoscute, este preferabil fat de un algoritm ,,secret deoarece at a exist anse mult mai mari ca autorul i utilizatorul aplicatiei s ae despre as s a vulnerabiliti at nainte ca vulnerabilitile s e exploatate at a mpotriva lor. Adesea avem T = M ; acest caz ck este o functie bijectiv (o n a aceste conditii, uneori rolurile functiilor c i d pot permutare pe T ). In s interschimbate, adic dk s se foloseasc ca functie de criptare i ck pentru a a a s decriptare. Exemplul 6.1 (Substitutia monoalfabetic ): Considerm un alfabet (nit) S a a i notm cu n numrul de litere (n = |S|). De exemplu, s a a S = {a, b, c, . . . , z}; acest caz n = 26. Textele clare sunt iruri de litere din alfabet: T = S . n s Multimea textelor cifrate este identic cu multimea textelor clare: M = T . a Cheile posibile sunt permutrile lui S; |K| = n!. Pentru un text clar p = a (s1 , s2 , . . . , sl ), textul cifrat este ck (p) = (k(s1 ), k(s2 ), . . . , k(sl )). Decriptarea se calculeaz a dk ((m1 , m2 , . . . , ml )) = (k 1 (m1 ), k 1 (m2 ), . . . , k1 (ml )). Criptarea i decriptarea sunt simplu de executat, chiar i manual. s s Cheile sunt uor de reprezentat. Dac alfabetul are o ordine cunoscut, s a a
reprezentarea cheii poate consta siruirea literelor ordinea dat de pern n n a mutare. De exemplu qwertyuiopasdfghjklzxcvbnm nseamn k(a) = q, k(b) = w, etc. Cu aceast cheie, cuvntul ,,criptic devine, a a a prin criptare, ,,ekohzoe. S examinm putin siguranta. S presupunem c un adversar a a a a ncearc decriptarea textului cifrat cu ecare cheie posibil. O astfel de a a ncercare se numete atac prin fort brut. S mai presupunem c adversarul reuete s s a a a a s s a verice un miliard de chei ecare secund. Deoarece numrul de chei este n a a 26! 4 1026 , adversarul ar avea nevoie medie de 6,5 miliarde de ani pentru n a gsi cheia corect. a a Pe de alt parte, a ntr-un text limba romna, anumite litere (de n a exemplu e, a, t, s) apar mai frecvent dect altele. Ca urmare, permutrile a a primelor prin functia k vor apare textul cifrat cu frecvent mai mare dect n a a permutrile celorlalte. Un adversar, care dispune de sucient text cifrat, va a ncerca doar acele chei care fac s corespund unei litere din textul cifrat doar a a litere a cror frecvent normal de aparitie este apropiat de frecventa de a a a a aparitie a literei considerate textul cifrat. acest fel, numrul de n In a ncercri a se reduce considerabil, astfel at un astfel de cifru poate spart uor nc s n cteva minute. a Exemplul 6.2 (Cifrul Vernam, numit i cheia acoperitoare, engl. One time s : |t| n} (multimea irurilor de biti pad ): La acest cifru, T = {t {0, 1} s de lungime mai mic sau egal cu un n I xat), M = T i K = {0, 1}n . a a N s Functia de criptare este ck (t1 , t2 , . . . , tl ) = (t1 k1 , t2 k2 , . . . , tl kl ), unde este operatia sau exclusiv. Decriptarea coincide cu criptarea, dk = ck . Din punctul de vedere al sigurantei, criptarea cu cheie acoperitoare este un mecanism perfect de criptare: adversarul nu poate deduce nimic din mesajul criptat ( afar de lungimea textului clar), deoarece orice text clar n a putea , cu egal probabilitate, originea textului cifrat receptionat. a Criptarea cu cheie acoperitoare este dicil de utilizat practic deoarece necesit o cheie la fel de lung ca i mesajul de transmis i, plus, cheia nu a a s s n poate refolosit (dac se transmit dou mesaje folosind aceeai cheie, se a a a s pierde siguranta metodei).
Dicultatea spargerii unui cifru este de dou feluri: a dicultatea probabilistic sau informational, a a dicultate computational. a Dicultatea informational const faptul c pot exista mai multe a a n a perechi text clar, cheie, care ar putut produce textul cifrat interceptat m. Presupunnd |T | = |M | i c orice bijectie c : T M putea aleas, a s a a cu egal probabilitate, ca functie de criptare, adversarul care receptioneaz un a a text cifrat m nu poate deduce nimic cu privire la textul clar t orice text clar avea aceeai probabilitate de a genera m. Un astfel de cifru este perfect s textul cifrat nu aduce nici o informatie adversarului. Deoarece exist (|T |)! bijectii posibile, lungimea necesar a cheii este a a log2 ((|T |)!). Presupunnd c T este multimea irurilor de n biti, avem |T | = 2n a a s i lungimea cheii este log2 ((2n )!) biti, lungime a crei comportament asimptotic s a n ). Pentru n = 20, cheia are civa megabiti. este de forma (n2 at De notat c un algoritm de criptare secret nu este un cifru perfect, a deoarece nu toate cele (2n )! functii de criptare posibile au aceeai probabilitate s de a alese. Cifrul Vernam (vezi exemplul 6.2) este de asemenea un cifru perfect, ct vreme cheia nu este refolosit. aa a exemplul 6.3, dicultatea informational const imposibilitatea In a a n adversarului de a distinge ntre DAN i ION s Incertitudinea adversarului asupra textului clar este cel mult egal cu a incertitudinea asupra cheii. De aici rezult c, pentru a obtinerea unui cifru a a perfect, numrul de biti ai cheii trebuie s e mai mare sau egal cu numrul a a a de biti de informatie din mesaj. Cifrul Vernam este acelai timp perfect n s (sub aspectul dicultii informationale a spargerii) i optim din punctul de at s vedere al lungimii cheii. Dicultatea computational const imposibilitatea adversarului de a a n a deduce informatii asupra textului clar cu un efort computational rezonabil. Un prim lucru care se cere de la un cifru este ca, dndu-se un numr a a de perechi text clar text cifrat, s nu existe o metod rapid de a determina a a a cheia. Un atac prin fort brut (engl. brute force attack ) const a decripta a a a n textul cifrat folosind toate cheile posibile i a verica dac se obtine textul s a clar (sau un text clar inteligibil, dac textul clar adevrat nu este cunoscut a a dinainte). Fezabilitatea unui atac prin fort brut depinde direct de lungimea a a cheii (de fapt, de numrul de chei posibile). Pentru o cheie de 56 de biti a (exemplu cifrul DES), un atac prin fort brut este perfect posibil, la viteza a a
actual necesitnd un efort jur de un an-calculator. Un atac prin fort brut a a n a a este nefezabil deocamdat de la 80 de biti sus; se consider c va fezabil a n a a jurul anului 2015. De la 128 de biti sus atacul prin fort brut necesit, n n a a a din cauza unor limitri zice teoretice, o cantitate de energie comparabil cu a a productia mondial pe cteva luni; o astfel de cheie este putin probabil c va a a a putea spart vreodat prin fort brut. a a a a Un cifru se consider a vulnerabil momentul care se descoper a n n a o metod de decriptare a unui mesaj semnicativ mai ecient dect un atac a a a prin fort brut. Inexistenta unei metode eciente de spargere nu este nicioa a dat demonstrat; cel mai bun caz se demonstreaz c spargerea unui cifru a a n a a este cel putin la fel de dicil ca rezolvarea unei anumite probleme de matem a atic, problem cunoscut de mult vreme dar fr rezolvare ecient cunosa a a a aa a cut. Acest din urm tip de demonstratie se aplic mai mult la cifrurile asia a a metrice din 6.1.5; problemele de matematic sunt de exemplu descompunerea a factori primi a unui numr mare de ordinul sutelor de cifre sau logn a aritmul discret rezolvarea x {0, . . . , p 1} a ecuatiei ax = b (mod p), n cu p numr prim mare. a Pentru un cifru bloc (un cifru care cripteaz independent blocuri de a text clar de o anumit lungime x), dimensiunea blocului trebuie s e mare a a a pentru a face repetrile blocurilor sucient de rare. Dac dimensiunea blocului a a este de n biti, exist 2n posibiliti pentru continutul unui bloc. Considernd a at a o distributie uniform a continutului ecrui bloc, un ir de 2n/2 blocuri are a a s probabilitate cam 1/2 s aib cel putin dou blocuri cu continut identic. (Acest a a a fapt este cunoscut ca paradoxul zilei de natere: s ntr-un grup de 23 de persoane, probabilitatea s existe dou dintre ele nscute aceeai zi din an este a a a n s a peste 50%; general, n ntr-un grup de k numere aleatoare avnd k valori posibile, probabilitatea ca cel putin dou s e egale este jur de 1/2). a a n Ca o consecint, dimensiunea n a blocului trebuie s e sucient a a de mare i cheia s e schimbat sucient de des, astfel at numrul de s a a nc a blocuri criptate cu o cheie dat s e mult mai mic dect 2n/2 . majoritatea a a a In cazurilor, valoarea minim rezonabil pentru n este 64 de biti. La aceast a a a lungime, repetarea unui bloc de text cifrat este probabil s apar a a ncepnd de a la 232 blocuri, adic 32 GiB. a
de lungime arbitrar i produc bitii textului cifrat pe msur ce primesc bitii as a a corespunztori din textul clar. a Pentru a cripta un text de lungime arbitrar, cu ajutorul unui cifru a bloc, exist cteva metode standard, pe care le vom descrie continuare. a a n In cele ce urmeaz, notm cu n lungimea blocului, biti. a a n ECB Electronic Code Book: Textul clar se mparte blocuri de n lungime n. Ultimul bloc se completeaz la lungimea n; bitii adugati a a pot zerouri, biti aleatori sau se pot utiliza alte scheme de completare. Fiecare bloc se cripteaz apoi independent de celelalte (vezi g. 6.1). a
Text clar
1 0 1 0 1 0
C
1111 111 111 0000 000 000 1111 111 111 0000 000 000 1111 111 111 0000 000 000
D D D
Text cifrat
1111 111 111 0000 000 000 1111 111 111 0000 000 000 1111 111 111 0000 000 000
Text cifrat
(a) Criptarea
Text clar
(b) Decriptarea
1 0 1 0 1 0
Metoda ECB nu se recomand deoarece pentru o cheie x acelai a a s text clar se transform acelai text cifrat. a n s O alt critic citat frecvent este c un adversar care permut a a a a a blocurile de text cifrat va obtine permutarea blocurilor corespunztoare a de text clar, chiar dac nu elege nimic din textul cifrat. Dei armatia a nt s este adevrat, critica este nefondat a a a ntruct un cifru nu are ca scop a protejarea integritii mesajelor. at CBC Cipher Block Chaining: (Vezi g. 6.2.) Ca i la ECB, textul s clar se mparte blocuri i ultimul bloc se completeaz cu biti aleatori. n s a plus, se alege un ir de n biti aleatori; acesta se numete vector de In s s initializare. Vectorul de initializare se transmite de obicei separat. Se efectueaz xor pe biti a ntre vectorul de initializare i primul bloc de text s clar; rezultatul se cifreaz i se trimite. Apoi, se face xor as ntre ecare bloc de text clar i blocul precedent de text cifrat, i rezultatul se cifreaz s s a i se transmite destinatarului. s Fat de ECB, metoda CBC face ca un acelai bloc de text clar s a s a se cripteze diferit, functie de vectorul de initializare utilizat. Dac n a
Nume DES
lungime bloc 64
lungime cheie 56
observatii A fost utilizat pe scar destul de larg, a a ind sustinut ca standard de ctre gu a vernul Statelor Unite ale Americii. In prezent este nesigur datorit lungimii a mici a cheii (a fost deja spart prin fort a brut). Au existat i speculatii cum c a s a ar fost proiectat astfel at s e uor nc a s de spart de ctre cei care ar cunoate a s nite detalii de proiectare. s Const aplicarea de 3 ori succesiv a a n cifrului DES, cu 2 sau toate 3 cheile distincte. A fost creat pentru a nu inventa un cifru total nou, dar fcnd imposibil a a a spargerea prin fort brut. a a Desemnat, urma unui concurs, ca nou n standard utilizat de guvernul american. Proiectat de doi belgieni, Joan Daemen i Vincent Rijmen i publicat sub numele s s rijndael. Creat de Carlisle Adams i Staord s Tavares 1996. n Creat de Bruce Schneier 1993. n Creat de Bruce Schneier i altii i a pars s ticipat la concursul pentru AES. Creat de Ross Anderson, Eli Biham i s Lars Knudsen; candidat pentru AES. Creat de Ronald Rivest; candidat pentru AES; patentat favoarea rmei RSA n Security. Creat de Ronald Rivest 1987; foarte n rapid; are cteva slbiciuni, care pot a a contracarate prin articii legate de modul de utilizare.
3DES
64
AES
128
CAST-128
64 ntre 40 i 128 s biti 64 pn la a a 448 biti 128 pn la a a 256 biti 128 128, 192 sau 256 128 128, 192 sau 256 ux pn la a a 256 biti
RC4
Text clar
11 00 11 00 11 00 11 00
1111 111 111 0000 000 000 1111 111 111 0000 000 000 1111 111 111 0000 000 000 1111 111 111 0000 000 000
Text cifrat
(a) Criptarea
Text clar
(b) Decriptarea
1 0 1 0 1 0 1 0
vectorul de initializare este ales aleator, repetrile unui bloc de text a cifrat vor extrem de rare (imposibil de exploatat de adversar). Vectorul de initializare trebuie ales satisfcnd : a a - s e distribuit uniform i necorelat cu textul clar sau alti vectori a s de initializare; - s nu poat controlat de adversar; a a - s nu poat aat de adversar ct timp adversarul ar putea inuenta a a a textul clar, pentru a mpiedica un atac cu text clar ales. Vectorul de initializare se construiete utiliznd una din urmtoa s a a rele variante: - se genereaz cu un generator de numere aleatoare criptograc (vezi a 6.4) i se transmite clar s n naintea mesajului; - se stabilete prin metode asemntoare cu stabilirea cheii (vezi s a a 6.3); - dac se transmit mai multe mesaje unul dup altul, vectorul de a a initializare pentru un mesaj se ia ca ind ultimul bloc al mesajului precedent (ca la antiurea blocurilor cadrul aceluiai mesaj). nl n s Pentru a mpiedica un atac cu text clar ales, dac textul clar al a unui mesaj este format dup expedierea mesajului precedent este a necesar trimiterea unui mesaj care s e ignorat de destinatar i a s cu continut aleator. CFB Cipher Feedback: CFB i urmtorul mod, OFB, sunt utilizate s a special acolo unde mesajele sunt mult mai scurte dect dimensiunea n a blocului, a emittorul transmite aceluiai receptor o secvent mai ns a s a lung de mesaje (presupunem c un mesaj nu poate grupat a a mpreun a cu urmtorul deoarece, de exemplu, un mesaj depinde de rspunsul rea a ceptorului la mesajul precedent; prin urmare, un mesaj nu este disponibil pentru criptare nainte ca mesajul precedent s e criptat totalitate a n i trimis). s CFB cripteaz fragmente de text clar de dimensiune x m. Dia a mensiunea m a fragmentului trebuie s a ndeplineasc o singur restrictie, a a i anume s e un divizor al dimensiunii n a blocului cifrului. Se s a poate lua m = 8 i atunci cifrul cripteaz cte un caracter. CFB s a a functioneaz astfel (vezi g. 6.3): Emittorul genereaz aleator un vec a a a tor de initializare de n biti, pe care transmite receptorului i l s l ncarc a totodat a ntr-un registru de deplasare. Apoi, pentru ecare caracter de
registru de deplasare
Se ignor a
Se ignor a
+
Text clar
(a) Criptarea
Text cifrat
1 0 1 0 1 0
11 00 11 00 11 00
+
Text clar
(b) Decriptarea
Text cifrat
criptat, emittorul: a - cripteaz continutul registrului de deplasare utiliznd cheia secret, a a a - execut xor pe biti a ntre urmtorii m biti din textul clar i primii a s m biti din rezultatul criptrii, a - transmite ca text cifrat rezultatul pasului precedent, - deplaseaz continutul registrului de deplasare cu m biti spre stnga, a a - introduce, pe pozitiile cele mai din dreapta ale registrului de de plasare, m biti de text cifrat produs. CFB are o proprietate interesant de autosincronizare: dac la un a a moment dat, din cauza unor erori de transmisie, se pierde sincronismul dintre emittor i receptor, sincronismul se reface automat dup n biti. a s a De remarcat, de asemenea, c decriptarea CFB utilizeaz tot funca a ia de criptare a cifrului bloc. t OFB Output Feedback: OFB este un mecanism asemntor cu cifrul a a Vernam (cu cheie acoperitoare) (exemplul 6.2), a cheia este un ir ns s pseudoaleator generat cu un algoritm de criptare. Primii n biti din irul s pseudoaleator se obtin criptnd vectorul de initializare, urmtorii n biti a a
se obtin criptnd precedentii n biti pseudoaleatori, . a. m. d. a s La OFB utilizarea unui vector de initializare aleator este chiar mai important dect la celelalte moduri de criptare, a a ntruct refolosirea unui a vector de initializare conduce la repetarea irului pseudoaleator (cheia s Vernam), rezultnd un cifru relativ uor de spart. a s CTR Counter: Se construiete similar cu OFB, a irul pseudoaleator s ns s se obtine criptnd numerele v, v + 1, v + 2, etc., reprezentate pe n biti, a v ind vectorul de initializare. Modul CTR este foarte asemnntor cu a a OFB, a are avantajul c destinatarul poate decripta un fragment de ns a mesaj fr a decripta tot mesajul pn la fragmentul dorit. Acest fapt aa a a face potrivit pentru criptarea ierelor pe disc. Totui, deoarece cifrul l s s Vernam aat la baz este vulnerabil unui adversar avnd la dispozitie a a dou texte clare criptate cu aceeai cheie, metoda este vulnerabil dac a s a a adversarul are posibilitatea de-a obtine dou variante ale unui ier. a s
Evident, cunoscnd cheia public kc este posibil, a trebuie s e a a ns a dicil computational, s se calculeze cheia secret kd corespunztoare. Pentru a a a ca sistemul de criptare s e util mai este necesar s existe un procedeu ecient a a (computational) de generare a unei perechi de chei (kc , kd ) aleatoare. Un sistem criptograc asimetric (sau cifru asimetric sau cifru cu cheie public ) este un ansamblu format din algoritmii de criptare c i decriptare a s d i un algoritm de generare aleatoare a perechilor de chei (kc , kd ). s Pentru ca sistemul criptograc s e sigur trebuie ca rezolvarea ea cuatiei ckc (t) = m cu necunoscuta t s e dicil computational. Implicit, a a determinarea cheii secrete kd corespunztoare unei chei publice kc trebuie de a asemenea s e dicil computational. a a Exemplul 6.4 (Cifrul RSA): Generarea cheilor se face astfel: se genereaz numerele prime p i q (de ordinul a 500 cifre zecimale ecare); a s se calculeaz n = pq i = (p 1)(q 1); a s se genereaz aleator un numr e {2, 3, . . . , 1}, relativ prim cu ; a a se calculeaz d cu proprietatea c ed 1 (mod ) (utiliznd algoritmul a a a lui Euclid). Cheia public este kc = (n, e), iar cheia secret este kd = (n, d). a a Spatiul textelor clare i spatiul textelor cifrate sunt s P = M = {0, 1, . . . , n 1}. Criptarea i decriptarea sunt: s ckc (p) = pe dkd (m) = m
d
(mod n) (mod n)
(6.1) (6.2)
Cifrul a fost inventat de Rivest, Shamir i Adelman 1977. Numele s n RSA vine de la initialele autorilor. 6.1.5.1. Utilizarea criptograei asimetrice Pentru pregtirea comunicatiei, receptorul genereaz o pereche de a a chei (kc , kd ) i face public kc . Emittorul poate cripta un mesaj, folosind s a a kc , i numai posesorul lui kd va putea decripta. Notm c odat criptat un s l a a a mesaj, acesta nu mai poate decriptat nici mcar de autorul su (dei autorul a a s i dealtfel oricine poate verica dac un text cifrat dat corespunde sau s a nu unui text clar dat). Dac se dorete comunicatie bidirectional, se utilizeaz cte o pereche a s a a a de chei (kc , kd ) distinct pentru ecare sens. a
O aceeai pereche de chei poate utilizat de o entitate pentru toate s a mesajele pe care le primete, indiferent cu ci parteneri comunic. Astfel, s at a ecare entitate si stabilete o pereche de chei din care cheia public o trans s a mite tuturor partenerilor de comunicatie i cheia secret o folosete pentru a s a s decripta mesajele trimise de toti ctre ea. Pentru comparatie, criptograa a n simetric, ecare pereche de parteneri ce comunic trebuie s aib propria a a a a cheie secret. a Un sistem criptograc asimetric este esent un cifru bloc. Pentru n a a cripta o cantitate arbitrar de text clar, se pot utiliza modurile ECB sau a CBC. Modurile CFB, OFB i CTR nu sunt utilizabile deoarece utilizeaz doar s a functia de criptare, care cazul criptograei asimetrice este public. n a Algoritmii criptograci asimetrici sunt mult mai lenti dect cei si a metrici. Din acest motiv, datele propriu-zise se cripteaz de obicei cu algoritmi a simetrici, iar cheia de criptare pentru date se transmite utiliznd criptograe a asimetric (vezi i 6.3). a s
repetarea unor mesaje anterioare este o problem separat i va studiat a as a n 6.2.4. studiul metodelor de autenticare a mesajelor, presupunem c In a mesajul de transmis nu este secret. Aceasta deoarece practic apare frecvent n a necesitatea ca un mesaj public s poat testat de oricine privinta auta a n enticitii. De exemplu, textul unei legi este o informatie public, dar un at a cetean ar trebui s poat verica dac textul ce i-a parvenit este textul at a a a autentic emis de autoritatea abilitat. a Remarcm de asemenea c faptul c un mesaj criptat utiliznd un a a a a algoritm simetric poate decriptat de ctre receptor (utiliznd cheia secret) a a a i este inteligibil nu e o garantie privind autenticitatea mesajului. s Intr-adevr, a pentru unele metode de criptare, cum ar modul OFB al oricrui cifru bloc, a un adversar poate opera modicri asupra textului cifrat cu efecte previzibile a asupra textului clar, chiar dac nu cunoate efectiv textul clar. Din acest a s motiv, metodele de asigurare a condentialitii se separ de metodele de at a control a autenticitii. at
majoritatea functiilor rezistente la coliziuni satisfac i conditia de rezistent s a la preimagine. Numrul de biti n ai dispersiei trebuie s e sucient de mare pentru a a a mpiedica cutarea unei coliziuni prin fort brut. Conform paradoxului zilei a a a de natere, exist anse mari de gsire a unei coliziuni s as a ntr-o multime de 2n/2 intrri. Pentru a face impractic un atac prin fort brut, trebuie ca n/2 64 a a a (i mai bine n/2 80), de unde n 128 sau mai bine n 160. s Functiile de dispersie mai cunoscute sunt descrise tabelul 6.2. n Nume MD5 lungime 128 observatii Creat de Ronald Rivest 1991. Este extrem a n de rspndit, a cteva slbiciuni descoperite a a a ns a a recent o fac destul de nesigur. a Dezvoltat de NSA (National Security Agency, a SUA). Deocamdat este mai sigur dect MD5, a a a dar are deja cteva slbiciuni. a a Dezvoltat la Katholieke Universiteit Leuven a n 1996.
SHA1
160
RIPEMD-160
160
6.2.1.1. Utilizarea functiilor de dispersie Presupunem existenta ntre emittor i receptor a dou canale de a s a transmitere a informatiei: un canal principal nesigur i un canal sigur dar cu s capacitate foarte redus. Ca exemplu practic, canalul nesigur este Internet-ul, a iar canalul sigur este un bilet scris sau o convorbire telefonic. a Presupunem de asemenea c h este o functie de dispersie rezistent a a la a doua preimagine i preferabil rezistent la coliziuni. s a Emittorul unui mesaj t calculeaz s = h(t). Apoi, transmite t prin a a canalul principal i transmite s prin canalul sigur. Receptorul testeaz dac s a a h(t) = s. Un adversar care ar modica t t ar trebui s gseasc un t cu n a a a h(t ) = h(t) pentru a pcli receptorul; acest lucru este nefezabil virtutea a a n proprietii de rezistent la a doua preimagine a functiei de dispersie h. at a Exist situatii practice care t este (partial) la dispozitia adversarua n lui. De exemplu, presupunem c secretara redacteaz un mesaj t la cererea a a efului, secretara putnd alege formularea exact a mesajului t. Seful si exs a a prim acordul asupra mesajului calculnd i trimitnd destinatarului s = h(t). a a s a Dac adversarul este secretara, ea nu se gsete situatia de-a crea un t sata a s n isfcnd h(t ) = h(t) pentru t xat (adic de-a crea a doua preimagine) ci a a a
este situatia de-a crea t i t distincte cu h(t) = h(t ) (adic de-a gsi o n s a a coliziune). Din acest motiv, o functie de dispersie utilizat pentru controlul a autenticitii mesajelor se cere s e rezistent la coliziuni. at a a Exist pe sistemele Linux comenzile md5sum i sha1sum care cala s culeaz i aeaz dispersia md5 respectiv sha1 a continutului unui ier. a s s a s Dispersia este aat hexa. Dac notm s a n a a ntr-un loc sigur dispersia unui ier, putem controla ulterior dac ierul a fost sau nu modicat s a s ntre timp.
(conform [RFC 2104, 1997]): hk (m) = hash(K opad hash(K ipad m)) unde: reprezint concatenarea, a este operatia sau exclusiv, hash este functia de dispersie criptograc (de exemplu md5 sau sha1 ), a K este cheia k completat la o lungime B aleas functie de anumite a a n particulariti ale functiei de dispersie de la baz; pentru md5 i sha1, at a s B se ia de 64 de octeti. ipad i opad sunt iruri obtinute prin repetarea de B ori a octetului cu s s valoarea (hexa) 36, respectiv 5C. Rezultatul functiei hash se poate trunchia la lungime mai mic (notm a a c functia de dispersie hash d 128160 biti, iar pentru o dispersie cu cheie a a sunt sucienti 6480 de biti). Trunchierea are ca avantaj micorarea cantitii s at de informatie pus la dispozitia adversarului. a O constructie uzual pentru functii de dispersie cu cheie pornind de a la un cifru bloc este urmtoarea: a se completeaz mesajul la un numr a a ntreg de blocuri; se execut o criptare mod CBC cu un vector de initializare zero (sau a n initializat cu dispersia mesajului precedent); rezultatul criptrii ultimului bloc se cripteaz utiliznd o a doua cheie a a a (cheia functiei de dispersie este considerat ca ind concatenarea celor a dou chei de criptare), rezultnd valoarea dispersiei. a a
o functie de semnare h; o functie de vericare v. faza pregtitoare, autorul de mesaje semnate genereaz o pereche In a a de chei (ks , kv ) i transmite cheia public kv receptorului sau receptoarelor. s a La transmiterea cheii publice, trebuie utilizat un canal sigur, astfel at cheia nc s nu poat modicat timpul transmisiei. a a a n Autorul mesajului t creaz semntura s = hks (t) i transmite perechea a a s (s, t). Receptorul veric dac vkv (t, s) = true. a a Aa cum se vede, semntura s depinde i de mesajul de semnat t i s a s s de semnatarul acestuia (mai exact de cheia ks ). Ca urmare, o semntur nu a a poate tiat de pe un mesaj i plasat pe alt mesaj. a a s a Unii algoritmi de semntur digital necesit un al treilea argument a a a a pentru functia de semntur; acest argument trebuie s e un numr aleator. a a a a acest caz exist mai multe semnturi valide pentru un acelai mesaj. In a a s O posibilitate de constructie pentru semntur este pe baza unui a a mecanism de criptare asimetric care criptarea este bijectiv; de exemplu n a RSA are aceast proprietate. Constructia simplicat este: a a hks (t) = dks (t) vkv (t, s) = (ckv (s) = t) Constructia de mai sus se bazeaz pe nefezabilitatea calculului lui s = a dks (t) fr cunoaterea lui ks . Totui, constructia aceasta permite adversarului aa s s s produc un fals existent: un adversar poate alege aleator un s i calcula a a s t = ckv (s). O mbuntire a semnturii electronice de mai sus este s nu se a at a a aplice dks direct asupra lui t ci asupra unei dispersii rezistente la preimagine i la coliziuni a lui t. Metoda are dou avantaje, pe de o parte c algoritmul s a a de criptare asimetric, lent, se aplic asupra dispersiei i nu asupra a s ntregului mesaj (dispersia se calculeaz mai repede dect criptarea asimetric), iar pe de a a a alt parte se a mpiedic falsul existent deoarece chiar dac adversarul calculeaz a a a ckv (s) nu poate gsi un mesaj t cu dispersia astfel xat. a a Semntura digital asigur nu doar autenticarea mesajelor, ci i a a a s nonrepudiabilitatea mesajelor. Acest lucru se ampl deoarece cheia de nt a semntur este cunoscut doar de ctre emittor. Ca urmare, doar emittorul a a a a a a poate genera semntura. Prin urmare, prezenta unei semnturi vericabile a a atest faptul c documentul a fost produs de emittor. Functiile de dispersie a a a cu cheie nu realizeaz (direct) mesaje nerepudiabile deoarece receptorul poate a produce mesaje semnate la fel de bine ca i emittorul. s a
perfect sincronizate i deoarece transportul mesajului nu este instantas interiorul acestui decalaj admis, adversarul poate trimite copii neu. In ale mesajului, copii ce vor acceptate ca proaspete de destinatar. Pentru corectarea acestei probleme, mecanismul se face astfel: Emittorul se asigur c dou mesaje distincte vor avea numrul unic a a a a a distinct. Pentru aceasta, e rezolutia marcajului de timp se face mai n dect timpul necesar emiterii unui mesaj, e emittorul mai ine un a a a t contor care se incrementeaz la ecare mesaj trimis i fcut astfel at a s a nc s nu se reseteze a nainte ca marcajul de timp s treac la urmtoarea a a a valoare. Receptorul memoreaz numerele unice ale mesajelor primite, a pe durata ct marcajul de timp din mesaj este acceptabil de ctre testul a a de prospetime (de exemplu, dac mesajul este trimis la ora 08:12:45 i a s testul de prospetime accept un decalaj de 10 secunde, numrul unic al a a mesajului va pstrat pn la ora 08:12:55). La primirea unui mesaj, a a a receptorul veric dac marcajul de timp este actual ( interiorul intera a n valului acceptabil) i dac numrul unic nu este identic cu cel al unuia s a a dintre mesajele memorate. Utilizarea orei la vericarea prospetimii necesit un mecanism a sigur care s mentin sincronismul ceasurilor dispozitivelor care comua a nic. a un numr (aleator) ales de receptor: Receptorul care ateapt un a s a mesaj trimite emittorului un numr aleator proaspt generat. Numrul a a a a aleator trebuie s aib cel putin 6480 biti, pentru ca s nu se repete a a a (dect cu probabilitate neglijabil de mic) i s nu poat prezis de a a s a a ctre adversar. Emittorul adaug numrul la mesajul trimis. Recepa a a a torul accept un mesaj ca proaspt doar dac numrul aleator din mesaj a a a a coincide cu numrul aleator tocmai trimis. Ca i pentru varianta cu a s numr de ordine, numrul aleator nu este necesar s e inclus mesaj; a a a n este sucient s participe la calculul semnturii mesajului. a a Neajunsul principal al metodei este necesitatea de-a transfera numrul aleator dinspre receptor spre emittor. plus, este necesar ca a a In receptorul s tie c urmeaz s primeasc un mesaj, ceea ce necesit a s a a a a a adesea a un mesaj (emittorul spune vezi c vreau s-ti spun ceva, nc a a a receptorul rspunde trimitnd numrul aleator i, nal, emittorul a a a s n a trimite mesajul propriu-zis). Acest lucru face aplicarea metodei scump a i anumite cazuri imposibil de exemplu metoda nu este aplicabil s n a a pentru securizarea potei electronice sau pentru protocoale de difuziune s (broadcast). cazul unui schimb de mai multe mesaje, de exemplu o sesiune In
ssh, se poate combina numrul aleator cu un numr de ordine. La dea a schiderea conexiunii, receptorul trimite numrul aleator. Emittorul a a include ecare pachet al conexiunii numrul aleator primit la den a schiderea conexiunii i numrul de ordine al pachetului. s a
cele ce urmeaz, vom studia cum se poate face ca aceste chei s e disponibile a a partenerilor. Cheile respective pot chei pentru criptograe simetric sau a pentru autenticare prin dispersie cu cheie, caz care cheile le vom numi n chei simetrice, sau pot chei publice pentru criptograe asimetric sau pentru a semntur digital. Transmiterea celor dou tipuri de chei au cerinte distincte. a a a a cazul unei chei simetrice, actiunea prin care cheia este generat i In as fcut disponibil partenerilor de comunicatie se numete stabilirea cheii . Un a a a s protocol de stabilire a cheii trebuie s a ndeplineasc urmtoarele cerinte: a a Cheia stabilit s nu poat cunoscut de altcineva dect de entitile a a a a a at ce doresc s comunice. Actiunea de satisfacere a acestei cerinte poart a a denumirea de autenticarea cheilor i este obligatorie orice proces de s n stabilire a cheilor. Cheia stabilit s e proaspt i, eventual, s nu poat impus unilata a a as a a a eral de vreuna dintre prti ci s e calculat din elemente generate de a a a ecare dintre parteneri. Aceast cerint este util pentru a pre ampina a a a nt situatia care un adversar, care reuete s obtin o cheie mai veche, n s s a a ar putea determina entitile care comunic s refoloseasc acea cheie. at a a a Fiecare entitate ce comunic s aib conrmarea c partenerul de coa a a a municatie a primit efectiv cheia. Actiunea care veric satisfacerea a aceastei cerinte poart denumirea de conrmarea cheii, iar conrmarea a cheii mpreun cu autenticarea cheii poart denumirea de autenticarea a a explicit a cheii. Este posibil s nu se prevad conrmarea cheii ca parte a a a a protocolului de stabilire a cheii; acest caz, n nceperea comunicatiei propriu-zise cu ajutorul cheii respective constituie conrmarea cheii. Notm c, anumite cazuri, autenticarea cheii stabilite se face a a n unilateral (adic doar una dintre entiti tie cu certitudine ce entitate mai a at s cunoate cheia negociat). astfel de cazuri, a doua entitate e nu are nevoie s a In s o autentice pe prima (de exemplu, a doua entitate este un server public), a e utilizeaz un mecanism de autenticare a utilizatorilor ( 6.5). a cazul unei chei publice, actiunea prin care cheia este fcut disponiIn a a bil partenerilor se numete certicarea cheii. Spre deosebire de cazul cheilor a s simetrice, unde transmisia unei chei ntre partenerii de comunicatie se face doar pentru o cheie proaspt generat, cazul cheilor publice se ampl a a n nt a frecvent ca o aceeai cheie public s e transmis de mai multe ori ctre o s a a a a aceeai entitate. Certicarea unei chei are urmtoarele cerinte: s a Receptorul unei chei publice s poat verica dac cheia primit este a a a a ntr-adevr cheia public a partenerului de comunicatie. a a Receptorul cheii s poat verica dac cheia mai este valid. O cheie a a a a
public trebuie s poat invalidat dac se suspecteaz c a fost coma a a a a a a promis cheia secret corespunztoare. a a a prezenta unui adversar, stabilirea cheilor simetrice i certicarea In s cheilor publice necesit mecanisme de securizare a comunicatiei (criptare i a s autenticare). Stabilirea cheilor sau certicarea cheilor ntre dou entiti care nu a at au deja chei care s le permit o comunicatie securizat a a a ntre ele se poate face prin dou metode: a cu ajutorul unui tert de ncredere: Aceast metod necesit existenta a a a unei a treia entiti care s poat deja comunica securizat cu ecare din at a a primele dou i care s prezinte as a ncredere acestora. prin intermediul unui utilizator uman ( 6.3.5). Dup rolul lor fat de un mecanism de stabilire a cheilor, cheile se a a numesc: chei efemere (engl. ephemeral key) sau chei de sesiune (engl. session key), utilizate pentru comunicatia propriu-zis a ntre dou entiti. O a at cheie efemer se utilizeaz pe durat scurt, de exemplu pe durata unei a a a a conexiuni sau pentru a cripta un singur mesaj. Ea este creat special a pentru o anumit ocazie i este distrus imediat dup aceea. Deoarece, a s a a din motive de vitez, comunicatia propriu-zis este protejat prin cripa a a tograe simetric i, uneori, prin dispersie cu cheie, cheile efemere sunt as chei simetrice. chei de lung durat (engl. long-term key), utilizate cadrul mecanisa a n melor de stabilire sau certicare a cheilor. Cheile de lung durat pot a a chei simetrice sau chei asimetrice. Mai dm cteva considerente practice legate de stabilirea sau certia a carea cheilor: Numrul de chei pe care trebuie s le posede o entitate pentru a putea a a comunica trebuie s e ct mai mic. Ideal, ecare entitate dispune de o a a singur cheie de lung durat, permitnd o comunicatie securizat cu un a a a a a tert de ncredere. Atunci cnd entitatea are nevoie s comunice cu o alt a a a entitate, obtine, prin intermediul tertului de ncredere, cheia necesar a comunicrii cu partenerul dorit. Dup utilizare, cheia respectiv poate a a a tears. s a Interventia manual stabilirea cheilor trebuie s e minim. Totui, a n a a s un prim transport manual al unei chei este ntotdeauna necesar.
Deoarece cheile de lung durat pot aate de adversari, cheile trea a buie s poat schimbate periodic. De asemenea, dac un adversar a a a nregistreaz comunicatia legat de stabilirea unei chei de sesiune i, ula a s terior, obtine o cheie de lung durat utilizat stabilirea acelei chei a a a n de sesiune, este bine s nu poat s obtin cheia de sesiune, pentru a nu a a a a putea mai departe decripta sesiunea.
durat. Avantajul obtinut este c dac un adversar obtine cheia secret de a a a a lung durat a lui A, dar a a ntre timp cheia proaspt a expirat i a fost distrus, aa s a adversarul nu mai poate decripta comunicatiile vechi. Solutia varianta simpl este utilizat de PGP/GPG. Aici emitto n a a a rul mesajului are rolul lui B i receptorul are rolul lui A. Emittorul obtine s a cheia public a receptorului, iar la trimiterea unui mesaj genereaz aleator o a a cheie de sesiune, cripteaz mesajul folosind cheia de sesiune i cripteaz cheia a s a de sesiune folosind cheia public a destinatarului. Mesajul transmis contine a cele dou elemente criptate. a Solutia varianta n mbuntit este aplicat de protocolul ssh vera at a a siunea 1. Serverul are rolul lui A, genernd perechile de chei i transmitnd a s a clientului cele dou chei publice. Clientul genereaz cheia de sesiune i i-o a a s trimite serverului criptat pe rnd cu cele dou chei. a a a 6.3.1.2. Stabilirea cheii prin metoda Die-Hellman Protocolul este urmtorul: a 1. Se genenereaz (pe o cale oarecare) un numr prim p mare i un numr a a s a g; 2. A alege un numr aleator x i calculeaz i-i transmite lui B numrul a s as a nA = g x mod p; 3. B alege un numr aleator y i calculeaz i-i transmite lui A numrul a s as a nB = g y mod p; 4. A i B calculeaz cheia de sesiune k astfel: A calculeaz s a a k = (nB )x mod p, iar B calculeaz a k = (nA )y mod p. Cheia de sesiune calculat de cei doi este aceeai: a s (g x mod p)y mod p = (g y mod p)x mod p = g xy mod p, iar calcularea lui g xy mod p cunoscnd doar g, n, g x mod p i g y mod p este a s foarte dicil. a Ca avantaj fat de solutia din paragraful precedent, nu este necesar a a o cheie de lung durat. De asemenea, aplicarea metodei Die-Hellman este a a
mai rapid dect regenerarea la ecare mesaj a unei perechi de chei pentru a a un cifru asimetric. Ca dezavantaj, este necesar o comunicatie interactiv; a a protocolul Die-Hellman nu este aplicabil transmiterii mesajelor prin pot sa electronic. a 6.3.1.3. Atacul man-in-the-middle Protocoalele descrise paragrafele 6.3.1.1 i 6.3.1.2 sunt aplicabile n s doar absenta unui adversar activ. Un adversar activ I se poate interpune n ntre A i B astfel: s comunic cu A jucnd rolul lui B pentru a stabili o cheie de sesiune k1 ; a a comunic cu B jucnd rolul lui A pentru a stabili o cheie de sesiune k2 ; a a decripteaz mesajele trimise de A lui B (acestea ind criptate cu k1 ), a le citete, eventual le modic, dup care le cripteaz (i eventual le s a a a s autentic) utiliznd cheia k2 . a a Rezultatul atacului este c A i B cred c comunic ecare cu cellalt a s a a a cnd de fapt ei comunic cu I. a a Exist metode, bazate pe transmiterea fragmente a mesajelor, care a n mpiedic forma pur a atacului man-in-the-middle; totui, general, pentru a a s n ca A s-l disting pe B de un adversar este necesar ca B s aib o caracteristic a a a a a distinctiv inimitabil; o astfel de caracteristic este cunoaterea unei chei a a a s secrete. Ca urmare, orice comunicatie sigur trebuie s existe cel putin un n a a pas din initializare care s se transfere o cheie n a ntre B i A, sau s ntre B i s un tert de ncredere i s ntre tert i A. s
3. Fiecare parte trimite celeilalte o semntur sau o dispersie calculat din a a a informatiile de la punctele 1 i 2. s Primul punct are ca scop obtinerea unei chei pe care s o cunoasc doar prtile a a a ntre care a avut loc schimbul de mesaje. Al doilea punct are rolul de-a asigura c negocierea i, consecint, cheia rezultat este proaspt. Al treilea punct a s n a a aa are rolul de-a asigura ecare parte c mesajele de la punctele 1 i 2 au fost a s schimbate cu partenerul dorit. Dac vericarea semnturii sau dispersiei de a a la punctul 3 eueaz, s a nseamn c protocolul a fost inuentat de un adversar a a activ i, consecint, cheia negociat este compromis. Este esential deci ca, s n a a a pn momentul care vericarea auenticitii mesajelor transmise a fost a a n n at efectuat cu succes, cheia negociat s nu e utilizat. a a a a Exemplul 6.5: Transmiterea unei chei prin criptare simetric se poate face a dup cum urmeaz. Notm cu A i B cele dou entiti care comunic, cu a a a s a at a Kc o cheie pentru criptare simetric, cunoscut doar de A i de B i cu Kh o a a s s cheie pentru dispersie, de asemenea cunoscut doar de A i de B. a s 1. A alege un numr aleator rA i-l transmite lui B. a s 2. B alege cheia de sesiune k. Apoi calculeaz i transmite x = cKc (k) i as s s = hKh (rA k). 3. A decripteaz x obtinnd k i veric dispersia s. a a s a De remarcat c, dac transmisia continnd cheia de sesiune k criptat cu cheia a a a a de lung durat Kc este interceptat de un adversar, iar adversarul obtine a a a ulterior cheia Kc , atunci adversarul poate decripta cheia de sesiune i s ntreaga sesiune protejat cu aceast cheie. a a Exemplul 6.6: Stabilirea cheii de sesiune prin schimb Die-Hellman i auts enticare prin semntur digital se face dup cum urmeaz. Protocolul este, a a a a a cu mici modicri, cel utilizat de ssh versiunea 2. cele ce urmeaz, notm a In a a cu A i B cele dou entiti, cu g i p baza i modulul din schimbul Dies a at s s Hellman, cu KsA i KsB cheile (secrete) de semntur ale lui A i B i cu KvA s a a s s i KvB cheile (publice) de vericare corespunztoare. s a 1. A alege dou numere aleatoare, rA , utilizat pentru asigurarea prospetimii a schimbului de chei, i xA utilizat pentru derivarea cheii prin metoda s Die-Hellman. Apoi A transmite lui B numerele rA i nA = g xA mod p s (unde g i p sunt parametrii pentru Die-Hellman). s 2. B procedeaz similar, alegnd rB i xB i transmitnd rB i nB = a a s s a s xB mod p. g 3. A transmite lui B semntura sA = hKsA (rA nA rB nB ). a
4. analog, B transmite lui A semntura sB = hKsB (rB nB rA nA ). a 5. A veric semntura sB i, dac se potrivete, calculeaz cheia de sesiune a a s a s a k = nxA mod p. B 6. B veric semntura sA i, dac se potrivete, calculeaz cheia de sesiune a a s a s a xB k = nA mod p.
4. T transmite spre B un pachet (A, B, cKcB (k), hKcB (k A B)) 5. A decripteaz cheia de sesiune k i veric dispersia, precum i numele a s a s A i B; s 6. B procedeaz la fel ca i A. a s Protocolul de mai sus ofer doar autenticarea cheii; nu veric i a a s prospetimea acesteia. Vulnerabilitatea introdus este dat de faptul c un a a a adversar poate trimite mesajele de la paii 3 i 4 locul serverului T pentru a s s n forta stabilirea unei chei vechi. Dac adversarul reuete s obtin o cheie de a s s a a sesiune, el poate forta astfel stabilirea aceleiai chei, compromise, sesiunile s n urmtoare. a Pentru vericarea prospetimii, trebuie introduse mesaje nite ele n s mente de control al prospetimii. O prim posibilitate, exploatat de protocolul Kerberos, este adua a a garea unei perioade de valabilitate. Perioada de valabilitate este adugat a a mesajele transmise paii 1, 3 i 4. A i B resping, cadrul pailor 5 n n s s s n s i 6, cheia de sesiune dac timpul curent este afara perioadei de valabilitate s a n nscrise pachete lng cheie. n a a Protocolul Kerberos mai aduce cteva modicri fat de protocolul a a a descris mai sus, una dintre ele ind aceea c mesajul de la pasul 4 este trimis a de T lui A mpreun cu mesajul de la pasul 3, urmnd ca A s-l transmit a a a a ctre B la deschiderea conexiunii ctre acesta. a a O a doua posibilitate, exploatat de protocolul Otway-Rees, se bazeaz a a pe numere aleatoare. Acesta prevede c A i B transmit ctre T cte un numr a s a a a aleator, iar T include numrul aleator transmis de A mesajul de la pasul 3 a n i numrul aleator transmis de B mesajul de la pasul 4. A i B veric, s a n s a n cadrul pailor 5, respectiv 6, c numerele aleatoare incluse mesajul autens a n ticat de la T sunt ntr-adevr numerele trimise de ele. a Utilizarea practic a stabilirii cheilor cu ajutorul unui tert de a ncredere se face construind un server T care creaz chei de sesiune, la cerere, pentru a toate entitile din retea. Astfel, T partajeaz o cheie simetric (de fapt, dou: at a a a una pentru criptare, cealalt pentru auteticare) cu ecare dintre entitile din a at retea. Intr-o retea mare, nu mai este posibil s se lucreze cu un singur a server T , deoarece aceasta ar cere tuturor s aib a a ncredere administran torul serverului T . Pentru stabilirea de chei ntre orice dou entiti aceste a at n
conditii, se construiete un sistem astfel: s Se congureaz mai multe servere de distribuire a cheilor, ecare entitate a avnd o cheie partajat cu unul dintre aceste servere. a a Se congureaz chei partajate a ntre cte dou servere de distribuire a a a cheilor. Aceste chei partajate formeaz legturi securizate a a ntre servere. Graful format de serverele de distribuire a cheilor i de legturile securs a izate trebuie s e conex. a Atunci cnd o entitate A dorete s comunice cu o entitate B, se caut un a s a a lant de servere, T1 ,. . . ,Tn , astfel at A s aib cheie partajat cu T1 , T1 s nc a a a a aib cheie partajat cu T2 , . a. m. d. Apoi, se stabilete, cu ajutorul lui T1 , a a s s o cheie ntre A i T2 ; cu ajutorul lui T2 se stabilete o cheie s s ntre A i T3 s . a. m. d. pn la obtinerea unei chei s a a ntre A i B. s acest sistem, loc s aib toat lumea In n a a a ncredere ntr-un singur server, ecare pereche de entiti care doresc s comunice trebuie s aib at a a a ncredere lantul de servere ce particip la stabilirea cheii. n a
Schema de mai sus poate cuprinde mai multe autoriti de certicare, at din care o prim autoritate a crei cheie se obtine prin transport de ctre om a a a i un lant de autoriti din care ecare semneaz certicatul urmtoareia. s at a a Pentru schimbarea cheilor, cazul compromiterii unei chei secrete, n se prevd dou mecanisme: a a expirarea cheilor. Un certicat are durat de valabilitate limitat; data a a creerii i data expirrii sunt de asemenea s a nscrise certicat i semnate n s de autoritatea de certicare. O entitate a crui certicat se apropie a de expirare va crea o nou pereche de chei i va solicita autoritii de a s at certicare eliberarea unui nou certicat pentru noua cheie public. Dup a a expirare, un certicat nu mai este recunoscut de nimeni ca valid i nu s mai este folosit. revocarea certicatelor. Se in, pe servere accesibile public, aa-zise t s certicate de revocare ale certicatelor ale cror chei secrete se consider a a compromise. Un certicat de revocare al unui certicat este un ansamblu cuprinznd datele de identicare ale certicatului revocat i semntura a s a autoritii de certicare a certicatului revocat asupra acelor date de at identicare. Publicarea unui certicat de revocare pentru un certicat anunt a invalidrii certicatului original. O entitate care utilizeaz un certicat a a va verica nainte, de ecare utilizare, dac nu exist un certicat de a a revocare al certicatului respectiv. Certicatul de revocare poate produs doar de ctre autoritatea a de certicare emitent sau de posesorul certicatului. a
portabil este mic, de ordinul ctorva sute de biti cel mult. Metoda a a a este greu de aplicat pentru informatii secrete, deoarece informatia este aat pe ecranul sistemului surs i ca urmare este vizibil persoanelor s a as a din apropiere. Informatiile astfel transportate sunt de obicei dispersiile criptograce ale unor chei publice. 3. Omul inventeaz o parol i o introduce pe ambele sisteme. Parola este a as utilizat pe post de cheie secret. Omul este utilizat att cu rolul de a a a canal sigur de transport, ct i ca generator de ,,numere aleatoare. a s Ne vom ocupa continuare de aspecte privind implementarea metoden lor 2 i 3. s Metoda 2 necesit o scriere a unui ir de biti a s ntr-o form uor de a s citit de ctre un om. Trebuie inut cont de faptul c omul nu poate atent a t a simultan la un ansamblu prea mare de obiecte diferite (simboluri, grupuri de simboluri, cuvinte). Intre citirile unor astfel de grupuri, omul trebuie sa i poat lua puncte de reper pentru a ti unde a rmas. Ca urmare, un s a s a grup de cifre sau simboluri fr legtur intre ele (adic care nu constituie aa a a a un cuv din vocabularul utilizatorului) nu trebuie s e mai mare de 68 nt a simboluri. O dispersie md5 scris direct hexa cuprinde 32 simboluri (cifre a n hexa); utilizatorul va avea nevoie s pun degetul pe ecran pentru a o citi. a a Dac aceeai dispersie md5 este scris ca 8 grupuri de cte 4 cifre, cu spatiu a s a a sau alt separator ntre grupuri, devine mult mai uor de citit. Pentru iruri s s mai lungi, devine necesar un al doilea nivel de grupare. O alt metod, mai dicil de pus practic, este transformarea a a n a irului de biti s ntr-un ir de cuvinte dintr-un dictionar standard sau s ntr-un ir s de silabe ce alctuiesc cuvinte, probabil fr sens, dar pronuntabile. Pentru un a aa dictionar de 4096 cuvinte, un cuvnt codic 12 biti. O dispersie md5 poate a a scris ca un ir de 11 cuvinte. Un astfel de ir de cuvinte poate memorat a s s mai uor dect secvanta de 32 cifre hexa echivalent. s a a Pentru a aplica metoda 3, remarcm pentru a nceput c o parol ina a ventat i memorat de om nu poate utilizat direct pe post de cheie. Ideal, as a a dac caracterele utilizate pentru parol sunt cele 94 caractere ASCII imprimaa a bile, parola ar avea o entropie de 6,44 biti pe caracter. Se estimeaz c un a a text limbaj natural nu are mai mult de 12 biti pe caracter. O parol ce n a poate memorat rezonabil va avea o entropie cuprins undeva a a ntre aceste dou limite. Pe de alt parte, securitatea unui sistem criptograc se bazeaz a a a pe faptul c entropia cheii este de 1 bit pe cifr binar (vezi 6.1.3). Rezult a a a a de aici dou lucruri: a Parola trebuie trecut printr-un ,,concentrator de entropie a nainte de-a
utilizat ca i cheie. Acest ,,concentrator de entropie poate o functie a s de dispersie (nu neaprat criptograc). a a Parola trebuie s e sucient de lung (i de aleator aleas) ca s furnizeze a a s a a efectiv bitii de entropie necesari. O fraz limbaj natural, utilizat a n a pentru derivarea unei chei de 128 biti, trebuie s aib cam 85 litere ( a a n jur de 20 de cuvinte). De obicei este nerezonabil s cerem unui om s utilizeze o parol cu a a a entropie sucient de mare. acest caz, micorarea lungimii efective a cheii In s derivate din parol trebuie compensat prin a a ngreunarea ncercrii cheilor de a ctre adversar. Mai exact, protocolul ce utilizeaz cheia derivat din parol a a a a trebuie modicat aa fel at s nu permit unui adversar s fac n s nc a a a a ncercarea exhaustiv a cheilor pe maina lui (unde poate dispune de putere mare de a s calcul i nu las urme) ci s trebuiasc s contacteze una din mainile care s a a a a s cunosc cheia (maini care s nregistreaz tentativa i pot refuza un numr prea a s a mare de tentative timp scurt). n Ca terminologie, distingem tentative de spargere o-line, care adn versarul poate verica dac o parol este corect utiliznd doar echipamentele a a a a proprii, i tentative de spargere on-line, care adversarul contacteaz serverul s n a atacat, ncercnd s deschid o conexiune cu parola supus vericrii. Dac o a a a a a a cheie nu poate spart o-line, o lungime efectiv (entropie) de 3040 biti este a a sucient. O parol bun, acest context, trebuie s aib doar 56 cuvinte, a a a n a a sau, dac contine cifre i punctuatie, 1012 caractere. a s
generatoare de numere pseudoaleatoare, care produc numerele prin calcule (prin urmare, numerele generate sunt deterministe), dar algoritmul de generare ,,amestec sucient de bine numerele pentru ca irul de numere a s rezultat s par aleator. a a
f (st ), unde f este o functie xat. a Dup producerea unui numr aleator, starea intern este modicat, a a a a pentru ca urmtorul numr s nu mai aib aceeai valoare. Actua a a a s alizarea strii interne se face pe baza unei a doua functii, g. Avem a deci st+1 = g(st ). Dac functiile f i g ,,amestec sucient de bine bitii, irul pseua s a s doaleator produs, (xt )tIN are proprieti statistice sucient de apropiate de at numerele cu adevrat aleatoare. a De remarcat c a ntregul ir depinde de valoarea strii initiale s0 a s a generatorului; pentru aplicatii non-criptograce i pentru teste, acest lucru s este bun deoarece face comportamentul programelor reproductibil. De asemenea, trebuie remarcat c, deoarece, practic, multimea a n a strilor interne posibile este nit, mai devreme sau mai trziu starea intern a a a a se repet i, ca urmare, a s ntregul ir pseudoaleator este periodic. Perioada s irului pseudoaleator este cel mult egal cu numrul de stri interne posibile. s a a a Pentru o functie g cu comportament apropiat de o functie aleatoare sau de o permutare aleatoare, perioada irului este de ordinul rdcinii ptrate din s a a a numrul de stri interne posibile. a a Pentru scopuri criptograce, sunt necesare cteva proprieti suplia at mentare: Un adversar care cunoate functiile f i g utilizate i cunoate o parte s s s s dintre elementele irului pseudoaleator (xt ) s nu poat calcula alte eles a a mente ale irului pseudoaleator. O conditie necesar pentru aceasta este s a ca functia f s e rezistent la preimagine. O alt conditie necesar este a a a a ca multimea strilor interne posibile s e sucient de mare pentru ca a a explorarea ei prin fort brut s nu e posibil practic. a a a a Starea initial s0 trebuie s e creat pornind de la un generator zic. a a a caz contrar, starea initial este previzibil pentru un adversar i, ca In a a s urmare, ntregul ir este previzibil. s Este bine ca, dac un adversar reuete s obtin starea intern st , s nu a s s a a a a poat calcula numerele pseudoaleatoare deja generate (adic x0 . . . xt1 ). a a Aceast lucru este util pentru ca, dac un adversar reuete s spagr a s s a a un calculator, s nu poat decripta comunicatiile anterioare. Pentru a a a ndeplini aceast cerint, este necesar ca i g s e rezistent la preimaga a s a a ine. Generatoarele de numere pseudoaleatoare utilizate practic nu se n a bazeaz pe generatoare zice doar pentru starea initial s0 , ci modic starea a a a
intern i timpul functionrii generatorului, pe msur ce obtin biti aleatori a s n a a a de la generatorul zic. Acest lucru are scopul ca, dac un adversar reuete s a s s a obtin starea intern la un moment dat sau s ae starea intern initial, s a a a a a a nu poat prevedea dect o mic parte dintre numerele aleatoare produse ultea a a rior. De asemenea, starea initial nu este generat la pornirea calculatorului, a a ntruct, de obicei, acel moment nu sunt disponibili prea multi biti aleatori a n de la generatoarele zice. Starea intern este salvat la oprirea calculatorua a lui, ntr-un ier ce nu poate citit de utilizatorii obinuiti, i re arcat la s s s nc a pornirea calculatorului.
criptograc h rezistent la preimagine. baza de date este stocat locul a a In a n parolei p transformata parolei s = h(p). La conectarea unui utilizator, sistemul cere parola utilizatorului i s veric, pentru parola introdus p , dac h(p ) = s. Deoarece h este rezistent a a a a la preimagine, probabilitatea ca un adversar, care nu cunoate parola p, s s a gseasc o parol p satisfcnd h(p ) = s este neglijabil de mic. a a a a a a Solutia are continuare o slbiciune, legat de faptul c un adversar n a a a care obtine s poate obtine p printr-un dictionar creat o-line: adversarul ia o multime de parole i, pentru ecare parol, calculeaz i memoreaz dispersia, s a as a obtinnd astfel un dictionar care asociaz dispersiei parola corespunztoare. a a a Inarmat cu un astfel de dictionar, un adversar care obtine s poate regsi foarte a rapid p dac p era dictionarul a n ncercat. Metoda de mai sus poate mbuntit, a at a mpiedicnd crearea unui a dictionar de dispersii i oblignd adversarul s fac toat munca de spargere s a a a a a parolelor dup obtinerea lui s. Conform noii metode, la initializarea parolei, a sistemul genereaz un numr aleator r i scrie ierul de parole perechea a a s n s (r, s) unde s = h(p r). Vericarea parolei p dat de utilizator se face testnd a a dac s = h(p r). Un adversar care ar dori s fac un dictionar ar avea nevoie a a a de un numr de dispersii egal cu produsul dintre numrul de parole de a a ncercat i numrul de valori posibile pentru r. s a Notm c, indiferent de mecanismul folosit la stocarea parolelor, a a un adversar ce a spart un sistem, sau un administrator indiscret, va putea ntotdeauna s obtin parola cu care se conecteaz un utilizator la acel sistem. a a a De exemplu, adversarul poate nlocui programul obinuit de login cu un pros gram care scrie undeva parola clar. Schemele de mai sus protejeaz doar n a parolele neutilizate dup momentul spargerii sistemului. a Mai notm c, vederea transmiterii parolei prin retea, transforma a n a rile descrise mai sus nu pot nlocui criptarea ,,adevrat. Dac, vederea a a a n autenticrii utilizatorului, serverul cere h(p) ( loc de p), atunci h(p) devine a n efectiv parola de conectare prin retea i orice adversar care cunoate h(p) poate s s impersona utilizatorul, fr a avea nevoie de p aa
mise trebuie s rmn secrete; a a a a un adversar activ poate ,,deturna conexiunea dup deschidere i poate a s da orice comenzi numele utilizatorului conectat. n Unul dintre sistemele de parole de unic folosint este descris cona a n tinuare. cele ce urmeaz, h este o dispersie rezistent la preimagine, iar In a a hn (x) = h(h(. . . h(x) . . .)). 1. Utilizatorul alege o parol primar, de lung durat, p. a a a a 2. La initializarea parolei pe sistem, sistemul genereaz i aeaz un numr as s a a aleator, nesecret, r. De asemenea, sistemul aeaz un numr de iteratii, s a a n, precongurat (uzual n = 10000). 3. Utilizatorul calculeaz, cu ajutorul unui dispozitiv de calcul de a ncredere, pn = hn (p r). Apoi transmite pn sistemului pe care dorete s-i cons as gureze autenticarea. 4. Sistemul memoreaz baza de date ansamblul (pn , n, r). a n 5. La prima conectare, sistemul aeaz r i n 1 i cere utilizatorului s a s s s calculeze i s introduc parola de unic folosint pn1 = hn1 (p r). a s a a a a Sistemul veric parola de unic folosint testnd dac h(pn1 ) = pn . a a a a a Apoi sistemul nlocuiete baza de date (pn , n, r) cu (pn1 , n 1, r). s n Un avantaj al sistemului este faptul c parola primar p este cunosa a cut doar de ctre dispozitivul utilizat pentru calculul parolelor de unic a a a particular, calculatorul care autentic utilizatorul nu obtine folosint. In a a niciodat i nici nu poate deduce parola primar. Administratorul unui astas a fel de calculator nu poate impersona utilizatorul pe un alt calculator pe care utilizatorul utilizeaz aceeai parol primar. a s a a Dezavantajul sistemului, fat de parola clasic, este c utilizatorul a a a are nevoie de un dispozitiv de calcul vederea calculrii parolelor de unic n a a folosint. Proceduri de lucru pentru utilizator pot : a Utilizatorul ruleaz local un program pentru calculul parolelor de unic a a folosint. Aceast metod este aplicabil doar dac utilizatorul are a a a a a deplin a ncredere calculatorul local. n Utilizatorul calculeaz, cu ajutorul unui calculator de a ncredere, urmtoaa rele 45 parole de unic folosint i le noteaz pe hrtie. Ca de obicei, a a s a a scrierea parolelor pe hrtie implic un risc, a aarea parolelor de ctre a a ns a un adversar nu permite dect deschiderea unui numr mic de sesiuni i a a s mai ales nu permite aarea, de ctre adversar, a parolei primare. a Utilizatorul folosete un dispozitiv de calcul dedicat. Aceasta este metoda s cea mai sigur, dar i cea mai scump. a s a
Retele de calculatoare
Protocoale
Radu-Lucian Lupa s
Cuprins
Principii
Cuprins Prefat a 1 Introducere 1.1 Serviciile oferite de retea . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Principalele elemente ale unei retele de calculatoare . . . . . . . . . . 1.3 Premise generale elaborarea i implementarea protocoalelor retele n s n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Notiuni de teoria informatiei 2.1 Problema codicrii informatiei pentru un canal discret . . a 2.2 Coduri cu proprietatea de prex . . . . . . . . . . . . . . . 2.2.1 Reprezentarea arborescent a codurilor prex . . . . . a 2.2.2 Decodicarea cazul codurilor prex . . . . . . . . . n 2.2.3 Lungimile cuvintelor unui cod prex . . . . . . . . . . 2.3 Coduri optime . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Cantitatea de informatie . . . . . . . . . . . . . . . . 2.3.2 Lungimea medie a cuvintelor de cod . . . . . . . . . . 2.3.3 Generarea codului optim prin algoritmul lui Human 2.3.4 Compresia ierelor . . . . . . . . . . . . . . . . . . . s 2.4 Coduri detectoare i corectoare de erori . . . . . . . . . . . s 2.4.1 Modelul erorilor . . . . . . . . . . . . . . . . . . . . . 2.4.2 Principiile codurilor detectoare i corectoare de erori . s 2.4.3 Cteva coduri detectoare sau corectoare de erori . . . a 2.4.3.1 Bitul de paritate . . . . . . . . . . . . . . . . . . 2.4.3.2 Paritate pe linii i coloane . . . . . . . . . . . . . s 2.4.3.3 Coduri polinomiale . . . . . . . . . . . . . . . . . 2.4.4 Coduri detectoare i corectoare de erori alte domenii s n 5 13 15 15 20 22 25 26 29 29 31 33 39 40 41 44 50 51 52 53 55 55 55 56 57
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Protocoale
Cuprins 7 Codicri de interes practic a 7.1 Probleme privind reprezentarea numerelor ntregi . . . . . . . . 7.1.1 Reprezentri pe biti . . . . . . . . . . . . . . . . . . . . . . a 7.1.1.1 Bitul . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.2 Siruri de biti . . . . . . . . . . . . . . . . . . . . . . . 7.1.1.3 Reprezentarea pe biti a numerelor ntregi . . . . . . . 7.1.2 Reprezentri pe octeti . . . . . . . . . . . . . . . . . . . . . a 7.1.2.1 Octeti . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2.2 Siruri de octeti . . . . . . . . . . . . . . . . . . . . . . 7.1.2.3 Reprezentarea numerelor pe un numr a ntreg de octeti 7.1.2.4 Reprezentarea numerelor pe un ir arbitar de biti . . . s 7.1.3 Probleme privind reprezentarea lungimii irurilor . . . . . . s 7.1.4 Alte metode de reprezentare a numerelor ntregi . . . . . . 195 203 203 203 204 204 205 206 206 208 208 210 212 214
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . accept() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
Retele IEEE 802 9.1 Retele IEEE 802.3 (Ethernet) . . . . . . . . . . . . . . . 9.1.1 Legturi punct la punct prin perechi de conductoare a 9.1.2 Legturi prin bre optice . . . . . . . . . . . . . . . a 9.1.3 Legturi prin cablu magistral . . . . . . . . . . . . a a 9.1.4 Repetoarele i comutatoarele . . . . . . . . . . . . . s 9.1.5 Dirijarea efectuat de comutatoare (switch-uri) . . . a 9.1.6 Faciliti avansate ale switch-urilor . . . . . . . . . . at 9.1.6.1 Switch-uri congurabile . . . . . . . . . . . . . 9.1.6.2 Filtrare pe baz de adrese MAC . . . . . . . . a 9.1.6.3 Trunking . . . . . . . . . . . . . . . . . . . . . 9.1.6.4 Legturi redundante . . . . . . . . . . . . . . . a 9.1.6.5 Retele virtuale (VLAN) . . . . . . . . . . . . . 9.1.7 Considerente privind proiectarea unei retele . . . . . 9.2 Retele IEEE 802.11 (Wireless) . . . . . . . . . . . . . . . 9.2.1 Arhitectura retelei . . . . . . . . . . . . . . . . . . . 9.2.2 Accesul la mediu . . . . . . . . . . . . . . . . . . . . 9.2.3 Generarea pachetelor beacon . . . . . . . . . . . . . 9.2.4 Securitatea retelelor 802.11 . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
10 Internetul 10.1 Arhitectura retelei . . . . . . . . . . . . . . . . . 10.2 Protocolul IP . . . . . . . . . . . . . . . . . . . 10.2.1 Structura pachetului IP . . . . . . . . . . . 10.2.2 Bazele dirijrii pachetelor IP . . . . . . . . a 10.2.2.1 Subretele i interfete . . . . . . . . . . s 10.2.2.2 Prexul de retea . . . . . . . . . . . . 10.2.2.3 Tabela de dirijare . . . . . . . . . . . . 10.2.3 Scrierea ca text a adreselor i prexelor . . s 10.2.3.1 Scrierea adreselor IP . . . . . . . . . . 10.2.3.2 Scrierea prexelor de retea . . . . . . . 10.2.4 Alocarea adreselor IP i prexelor de retea s 10.2.4.1 Alocarea pe utilizri . . . . . . . . . . a 10.2.4.2 Alocarea adreselor i dirijarea ierarhic s a
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Capitolul 7
7.1.1.1. Bitul Pentru reprezentarea diverselor date, alegerea unui alfabet cu dou a simboluri este avantajoas din dou motive. Pe de o parte, este cel mai mic a a alfabet posibil, ca urmare alegerea unui alfabet cu dou elemente aduce o a anumit simplitate i naturalete constructiei matematice. Pe de alt parte, a s a din punct de vedere practic, al constructiei echipamentelor zice, dispozitive cu dou stri stabile sunt mult mai uor de construit dect dispozitive cu mai a a s a multe stri. a scris, cele dou simboluri sunt notate mod obinuit cu 0 i 1. In a n s s Atragem atentia c: a Alegerea celor dou simboluri utilizate, precum i a corespondentei dintre a s starea dispozitivului zic i simbolul asociat, poate fcut oricum. s a a Odat a fcut o alegere, aceasta trebuie respectat de toate entitile a ns a a a at implicate comunicatie. n Numai unele cazuri simbolurile au rol de cifr, adic au asociate valn a a ori numerice. Valoarea numeric a unui simbol este important doar a a dac simbolul este interpretat ca numr sau intr reprezentarea unui a a a n numr. restul cazurilor, este important doar s existe simboluri disa In a tincte. Un simbol dintr-un alfabet cu dou elemente se numete bit, de la a s binary digit (rom. cifr binar ). a a 7.1.1.2. Siruri de biti cadrul unui ir de biti, avem nevoie s identicm ecare bit al In s a a irului. Pentru aceasta, se stabilete o ordine a bitilor: avem un prim bit, un s s al doilea bit, etc. Trebuie remarcat a c ordinea este o conventie: nu exist o ns a a legtur direct a a a ntre ordinea conventional a unui ir de biti i amplasamentul a s s dispozitivelor zice care memoreaz acei biti. Numrul de ordine al unui bit, a a cadrul acestei ordini conventionale, se numete mod obinuit pozitia (sau, n s n s eventual, adresa sau deplasamentul ) bitului. Numerotarea pozitiilor se face de obicei ncepnd de la 0 sau de la 1; cele ce urmeaz vom utiliza numerotarea a n a de la 0. La transmiterea unui ir de biti, este natural ca primul bit transmis, s considernd ordinea cronologic, s e primul bit al irului (pozitia 0). La a a a s memorarea unui ir s ntr-o memorie cu acces direct (memorie RAM sau ier s pe disc), este natural ca celula cu adresa cea mai mic, dintre celulele alocate n a irului, s e plasat primul bit al irului (bitul de pe pozitia 0). acest fel, s a s In primul bit al unui ir s nseamn, simultan, bitul de pe pozitia (conventional) a a 0, bitul transmis primul (cronologic) i bitul memorat la adresa cea mai mic. s a
7.1.1.3. Reprezentarea pe biti a numerelor ntregi Reprezentarea numerelor naturale prin iruri de biti se bazeaz pe s a ceea ce matematicienii numesc reprezentare pozitional baza 2, pe care o a n presupunem cunoscut. reprezentarea a In ntr-o baz de numeratie, distingem a cifra unitilor, avnd ponderea 20 = 1, cifra de pondere 21 = 2 ( baza zece at a n s-ar numi cifra zecilor; pentru baza 2 nu avem un nume), cifra de pondere 22 = 4, etc. Exist dou alegeri posibile cu privire la legtura dintre ponderile a a a cifrelor numr i pozitiile lor ir: n a s n s 1. Primul bit al irului este cifra de pondere maxim. Aceasta alegere s a este identic celei utilizate scrierea numerelor limbile ,,obinuite a n n s (indo-europene), cu scriere de la stnga spre dreapta. Se mai numete a s big endian. aceast schem de reprezentare, un ir de biti b0 b1 . . . bn1 In a a s reprezint numrul a a b0 2n1 + b1 2n2 + . . . + bn1 20 . 2. Primul bit al irului este cifra de pondere 1. Aceast reprezentare este s a asemntoare scrierii numerelor limbile semite (araba i ebraica, cu a a n s scriere de la dreapta spre stnga i unde numerele sunt scrise tot cu cifra a s unitilor dreapta). Se mai numete little endian. at n s Aceast alegere are avantajul unei scrieri mai simple a relatiei dina tre valoarea numrului i irul de biti: valoarea unui numr reprezentat a s s a pe n biti este b0 20 + b1 21 + . . . + bn1 2n1 . Fiind dou scheme de reprezentare distincte, dac un sistem transa a mite un numr reprezentare little endian, iar cellalt sistem interpreteaz a n a a irul de biti primit ca ind s ntr-o reprezentare big endian, receptorul ,, elege nt alt numr dect cel transmis de emittor. Ca urmare, orice protocol care spea a a cic transmitere binar a numerelor trebuie s precizeze dac se utilizeaz o a a a a a reprezentare little endian sau una big endian. Exemplul 7.1: Fie irul de biti 11001, care am scris primul bit ( sensul s n n din 7.1.1.2) pe pozitia cea mai din stnga. a Dac acest ir este reprezentarea big endian a unui numr, numrul a s a a respectiv este 25. Dac reprezentarea a fost fcut format little endian, a a a n numrul este 19. a
Este important de remarcat c distinctia dintre schema de reprezentare a big endian si schema little endian exist numai acolo unde pe de o parte avem a o ordine a a bitilor dat de adresele lor memorie sau de ordinea cronologic a n a la transmiterea lor prin mediul zic, iar pe de alt parte ecare bit are o a anumit pondere reprezentarea unui numr a n a ntreg.
primele sau cu ultimele pozitii. Aceste operatii sunt efectuate de uni tatea aritmetic din microprocesorul calculatorului. a 2. Operatii pentru care bitii sunt identicati dup numrul lor de ordine a a sau, echivalent, octetul este privit ca un ir arbitrar de biti, fr a avea s aa asociat o valoare numeric. Aici intr transmiterea bit cu bit (transa a a mitere serial) a unui octet. Aceast operatie este efectuat de placa de a a a retea i de alte adaptoare seriale (de exemplu, adaptoarele USB). Tot s aici s-ar ncadra, dac ar exista, o operatie de obtinere sau de modicare a a unui bit (al octetului) identicat prin numrul su de ordine. O asemea a nea operatie nu este oferit, mod normal, a n ntr-un sistem de calcul nu exist o instructiune care s extrag, de exemplu, bitul numrul 5 a a a a dintr-un octet. 3. Operatii care pot denite e identicnd bitii dup ponderea lor, e a a identicnd bitii dup numrul lor de ordine. aceast categorie se a a a In a ncadreaz transmiterea unui octet ca un tot unitar, vericarea egalitii a at a doi octeti i operatiile logice pe bit (i, sau, sau exclusiv i negatia). s s s Pentru oricare dintre aceste operatii, dac denim operatia identi a cnd bitii dup numrul lor de ordine, efectul ei asupra valorii numerice a a a a octetului nu depinde de corespondenta aleas a ntre pozitiile bitilor i s ponderile lor. aceste conditii, interiorul unui calculator, bitii din cadrul unui In n octet sunt identicati dup ponderea lor. constructia calculatorului, proiec a In tantul are grij ca atunci cnd un bit avnd, a a a ntr-un modul al calculatorului, o anumit pondere este transferat ctre alt modul al calculatorului, s ajung a a a a acolo pe o pozitie cu aceeai pondere. s La transmisia unui octet ntre dou sisteme de calcul, mecanismele a de transmisie sunt astfel construite at s transmit valoarea octetului. nc a a Intruct, prin mediul zic al retelei, bitii sunt transmii secvential, bitii unui a s octet sunt aici identicati prin numrul lor de ordine in cadrul transmisiei. a Pentru a pstra valoarea octetului timpul transmisiei prin mediul retelei, a n corespondenta dintre numrul de ordine al unui bit i ponderea sa (little en a s dian sau big endian) trebuie s fac parte din specicatiile protocolului de a a nivel zic al retelei. Numerotarea bitilor unui octet intervine, de asemenea, descrierea n unor scheme de reprezentare a datelor unde un numr este reprezentat pe un a grup de biti ce nu formeaz un numr a a ntreg de octeti. Este cazul schemelor de reprezentare pentru structuri de date ce contin cmpuri de 1 bit, 2 biti, 12 a biti, etc. Si aici este necesar s se specice dac numerotarea bitilor este little a a
endian sau big endian. Mai multe detalii despre astfel de reprezentri vor a studiate 7.1.2.4. n 7.1.2.2. Siruri de octeti Ca i cazul bitilor (vezi 7.1.1.2), i cu octetii putem construi s n s iruri. cadrul unui ir de octeti, octetii sunt aezati s In s s ntr-o ordine, existnd a un prim octet (numerotat ca octetul 0), al doilea octet (pozitia 1), etc. La transmisia printr-o legtur retea, primul octet al irului este, cronologic, a a n s primul octet transmis. La memorare, primul octet este cel memorat la adresa cea mai mic. a virtutea celor dou moduri de-a privi un octet, un ir de n octeti In a s poate , la rndul lui, privit ca: a un ir de 8n biti, s un ir de n numere, ecare cuprins s ntre 0 i 255. s Pentru a putea privi un ir de n octeti ca un ir de 8n biti, este necesar s s s avem o numerotare, bine denit, a bitilor cadrul unui octet. Rezult un a a n a ir de biti care s n ntre pozitia pB a unui bit irul de 8n biti, pozitia pBO n s a bitului cadrul octetului care se gsete i pozitia pO a acelui octet n n a s s n irul de octeti are loc relatia: s pB = 8 pO + pBO . (7.1)
Relatia de mai sus are aceast form simpl dac se utilizeaz numerotare de a a a a a la 0; pentru numerotarea de la 1, forma relatiei e mai complicat. a Transmiterea unui ir de octeti printr-o conexiune, precum i mems s orarea irului s ntr-un ier pe disc urmat de citirea lui s a napoi memorie, n pstreaz ordinea i valorile octetilor din ir. Valorile octetilor sunt pstrate a a s s a dac privim octetii ca numere a ntre 0 i 255; dac privim octetii ca iruri de s a s 8 biti, valorile octetilor se pstreaz numai dac pe ambele sisteme utilizm a a a a aceeai corespondent s a ntre numerele de ordine i ponderile bitilor. s 7.1.2.3. Reprezentarea numerelor pe un numr a ntreg de octeti Cel mai mare numr ce poate reprezentat pe un octet este 255, a ceea ce este mult prea putin pentru majoritatea aplicatiilor. Pentru a putea reprezenta numere din intervale mai largi, sunt necesare scheme de reprezentare pe mai mult de 8 biti. Schemele cele mai simple sunt cele care utilizeaz un a numr a ntreg de octeti; acestea vor prezentate continuare. Schemele de n reprezentare ce utilizeaz iruri de biti ce nu formeaz neaprat un numr a s a a a ntreg de octeti vor studiate 7.1.2.4. n
Deoarece un octet are valoarea ntre 0 i 255, putem considera ecare s octet ca ind o cifr baza 256. Reprezentarea unui numr printr-un ir de a n a s octeti se face ca reprezentare pozitional baza 256. Exist dou reprezentri a n a a a posibile: little endian: primul octet are ponderea 1, al doilea octet are ponderea 256, al treilea octet are ponderea 2562 = 65536, etc. big endian: primul octet are ponderea 256n1 (unde n este numrul de a n2 . a. m. d., octeti ai reprezentrii), al doilea octet are ponderea 256 a s penultimul octet are ponderea 256, iar ultimul octet are ponderea 1. Reamintim c prin primul octet elegem octetul care este transmis primul, a nt ordine cronologic, de la un dispozitiv la altul i, totodat, octetul memorat n a s a la adresa cea mai mic. a Exemplul 7.2: Descriem mai jos reprezentarea numrului 300 schemele a n de reprezentare little endian i big endian, pe 2 i pe 4 octeti. Pentru ecare s s dintre aceste patru scheme de codicare, este dat irul de octeti ce reprezint s a numrul 300. a pozitie octet (nr. ordine) 0 1 2 3 Valorile octetilor pentru diverse reprezentri a 2 octeti 2 octeti 4 octeti 4 octeti big endian little endian big endian little endian 1 44 0 44 44 1 0 1 1 0 44 0
De exemplu, cadrul reprezentrii pe 2 octeti format big endian, n a n valoarea numrului reprezentat se regsete ca valoarea octetului 0 a a s nmultit a cadrul cu 256 plus valoarea octetului 1, anume: 1 256 + 44 = 300. In reprezentrii pe 4 octeti format little endian, octetul 0 are ponderea 2560 = a n 1, octetul 1 are ponderea 2561 = 256, octetul 2 are ponderea 2562 = 65536, iar octetul 3 are ponderea 2563 = 16218368. Valoarea numrului reprezentat a este 44 1 + 1 256 + 0 2562 + 0 2563 = 300
Unitatea aritmetic a calculatorului poate efectua operatii aritmeta ice asupra numerelor reprezentate pe 2 octeti sau, pentru unele calculatoare, pe 4 sau 8 octeti. Pe unele calculatoare, unitatea aritmetic lucreaz cu nu a a mere reprezentate dup sistemul big endian; pe alte calculatoate, unitatea a
aritmetic cere reprezentare little endian. Dup acest criteriu, calculatoarele a a ale cror uniti aritmetice lucreaz cu numere reprezentate pe mai mult de a at a un octet se mpart calculatoare little endian i calculatoare big endian. n s Variabilele de tip ntreg, majoritatea limbajelor de programare, n sunt reprezentate pe 2, 4 sau 8 octeti, ordinea xat de unitatea aritmetic. n a a Este posibil utilizarea, pentru anumite variabile a ntregi, a unei reprezentri a diferite de cea a unitii aritmetice. De asemenea, se pot utiliza reprezentri at a pe mai multi octeti dect permite unitatea aritmetic. La manipularea aces a a tor variabile, programatorul trebuie s aib vedere c operatiile aritmetice a a n a ,,normale e nu pot executate deloc, e nu se efectueaz corect asupra lor. a Astfel de numere se manipuleaz, de obicei, prelucrnd separat ecare octet. a a La memorarea pe disc sau la transmiterea printr-o conexiune, trebuie stabilit printr-un standard dac se utilizeaz un format little endian sau big a a endian, precum i numrul de octeti pe care se reprezint ecare numr memos a a a rat sau, respectiv, transmis. Majoritatea protocoalelor pentru Internet prevd a formate big endian pentru numerele ntregi transmise. Multe dintre formatele de iere prevd formate little endian. Exist i formate (de exemplu, fors a a s matul TIFF pentru imagini, formatele UTF-16 i UTF-32 pentru texte) care s permit emittorului s aleag formatul dorit i prevd un mecanism prin care a a a s a emittorul informeaz receptorului despre alegerea fcut. a a a a Dac formatul de pe disc sau de pe conexiune coincide cu formatul a unitii aritmetice locale, un program poate transfera direct iruri de octeti at s ntre o variabil a ntreag local i ierul de pe disc sau, respectiv, conexiunea a as s spre cellalt calculator. Dac formatul de pe disc sau de pe conexiune este a a invers fat de cel local, un program care transfer date trebuie s inverseze a a a ordinea octetilor imediat nainte de scrierea pe disc sau de trimiterea pe conexiune, precum i imediat dup citirea de pe disc sau receptionarea de pe s a conexiune. 7.1.2.4. Reprezentarea numerelor pe un ir arbitar de biti s Ne vom ocupa continuare de metode de reprezentare, pentru nun mere ntregi, care bitii ce intr reprezentarea unui numr nu formeaz n a n a a neaprat un numr a a ntreg de octeti. O astfel de schem este o generalizare a a schemei prezentate paragraful precedent. n O astfel de metod de reprezentare se bazeaz pe reprezentarea nua a merelor baza 2 (vezi i 7.1.1.3). Pentru ca o astfel de schem s e n s a a complet denit, este necesar s e stabilit (standardizat) corespondenta a a a a descrierea dintre pozitia ecrui bit din reprezentare i ponderea asociat. In a s a
unei astfel de scheme de reprezentare, trebuie precizate trei lucruri: dac reprezentarea numrului prin irul de biti se face dup metoda big a a s a endian sau little endian; dac numerotarea bitilor cadrul ecrui octet se face a n a ncepnd de a la bitul de pondere 1 (adic valoarea octetului este reprezentat dup a a a schema little endian) sau ncepnd de la bitul de pondere 128 (adic a a valoarea octetului este reprezentat dup schema big endian). a a dac numerotarea bitilor cadrul irului de biti se face dup relatia (7.1) a n s a sau dup o alt metod. a a a Intr-o schem de reprezentare ,,rational, la primele dou puncte se utilizeaz a a a a e formatul big endian pentru amndou, e formatul little endian pentru a a amndou, iar la punctul al treilea se utilizeaz relatia (7.1). a a a Rezult astfel dou metode coerente: a a aceast metod, numerotarea bitilor big endian. In a a ncepe cu cel mai semnicativ bit al primului octet, iar dup cel mai putin semnicativ a bit al primului octet urmeaz cel mai semnicativ bit al celui de-al doilea a octet. Orice numr, indiferent pe ci biti s-ar reprezenta, se reprezint a at a format big endian. n little endian. aceast metod, numerotarea bitilor In a a ncepe cu cel mai putin semnicativ bit al primului octet, iar dup cel mai semnicativ a bit al primului octet urmeaz cel mai putin semnicativ bit al celui dea al doilea octet. Orice numr, indiferent pe ci biti s-ar reprezenta, se a at reprezint format little endian. a n cadrul acestor dou metode, dac reprezentm un numr folosind un ir de In a a a a s biti ce formeaz un numr a a ntreg de octeti, formatele de reprezentare rezultate coincid cu formatele de reprezentare pe octeti studiate paragraful precedent. n Exemplul 7.3: Considerm o schem de reprezentare pentru dou numere a a a ntregi, a i b, care a se reprezint pe 4 biti i b se reprezint pe 12 biti. s n a s a In total avem 4 + 12 = 16 biti, adic 2 octeti. a Dac alegem metoda big endian, schema de reprezentare va utiliza cei a mai semnicativi 4 biti ai primului octet pentru a-l reprezenta pe a, ceilalti 4 biti ai primului octet vor cei mai semnicativi 4 biti ai lui b, iar cel de-al doilea octet va contine cei mai putin semnicativi 8 biti din b. Aceast schem a a de reprezentare este ilustrat gura 7.1, cu valori concrete a = 11 i b = 300. a n s Dac alegem metoda little endian, schema de reprezentare va utiliza a cei mai putin semnicativi 4 biti ai primului octet pentru a-l reprezenta pe a, ceilalti 4 biti ai primului octet vor cei mai putin semnicativi 4 biti ai lui b,
iar cel de-al doilea octet va contine cei mai semnicativi 8 biti din b. Aceast a schem de reprezentare este ilustrat gura 7.2, cu valori concrete a = 11 a a n i b = 300. s
b0 1 b1 0 b2 1 b3 1 Nr. octet 0 1 c0 1 0 c1 0 0 c2 1 1 b4 0 b5 0 b6 0 b7 1 b8 0 b9 0 b10 1 b11 0 b12 1 b13 1 b14 0 b15 0
Valoare (binar) c3 c4 1 0 0 1
(b) Valorile octetilor. La scrierea valorilor bitilor octet n (coloana din mijloc) s-a utilizat conventia obinuit, de-a scrie s a cifrele mai semnicative stnga. n a
Figura 7.1: Reprezentare big endian pentru numrul 11 pe 4 biti urmat de a numrul 300 reprezentat pe 12 biti (exemplul 7.3). a
b0 1
b1 1
b2 0
b3 1 Nr. octet 0 1
b4 0
b5 0
b6 1
b7 1
b8 0
b9 1
b10 0
b11 0
b12 1
b13 0
b14 0
b15 0
c7 1 0
c6 1 0
c5 0 0
Valoare (binar) c4 c3 0 1 1 0
(b) Valorile octetilor. La scrierea valorilor bitilor octet n (coloana din mijloc) s-a utilizat conventia obinuit, de-a scrie s a cifrele mai semnicative stnga. n a
Figura 7.2: Reprezentare little endian pentru numrul 11 pe 4 biti urmat de a numrul 300 reprezentat pe 12 biti (exemplul 7.3). a
Un alt exemplu care avem de-a face cu numere reprezentate pe n iruri arbitrare de biti este legat de aa-zisa codicare baza 64, descris s s n a n 7.4.2.
indiferent de natura obiectelor: biti, octeti, cifre zecimale, caractere ale unui text, numere cadrul unui ir de numere. n s Exist trei metode de a face ca receptorul s poat determina numrul a a a a de obiecte ce-i sunt transmise: Numrul de obiecte este xat. acest caz, indiferent de valorile datelor a In ce se transmit, numrul de obiecte transmise este acelai. Metoda este a s utilizat frecvent la memorarea unui ir memoria RAM sau pe disc, a s n deoarece permite alocarea de la nceput a memoriei pentru reprezentarea lui i permite accesul direct la datele memorate dup irul discutie. s as n Dezavantajul principal al metodei este acela c dimensiunea xat trea a buie astfel aleas at s e sucient orice caz ce poate s apar a nc a a n a a la executie. De asemenea, trebuie s existe o valoare potrivit pentru a a pozitiile ,,neutilizate din ir; de exemplu, reprezentarea numerelor, s n pozitiile cele mai semnicative se completeaz cu zerouri. a Deoarece la transmisia printr-o conexiune nu se poate pune problema accesului direct (adic altfel dect secvential) la date, metoda este a a putin utilizat transmisia datelor prin retea. Siruri de lungime x a n a se utilizeaz la reprezentarea binar a numerelor. a a Numrul de obiecte este transmis separat, fata irului. Aceast metod a n s a a uureaz munca receptorului, care tie exact ce s astepte i poate aloca s a s a s memorie pentru receptionarea datelor. schimb, munca emittorului In a este complicat prin faptul c acesta trebuie s cunoasc de la a a a a nceput numrul de obiecte din ir. Acest fapt face metoda inaplicabil anua s a n mite situatii. Transmiterea de la nceput a numrului de obiecte este utilizat, a a de exemplu, de protocolul HTTP ( 11.3.2) la transmiterea, de ctre a server, a continutului paginii cerute de client. Serverul transmite ai nt numrul de octeti ai paginii i apoi irul de octeti ce formeaz pagina. a s s a Dup ultimul obiect din irul propriu-zis, se transmite o valoare special, a s a cu rol de terminator. Aceast metod uureaz munca emittorului, a a s a a care poate s a nceap transmiterea irului a s nainte de-a ti cte elemente s a are, schimb n ngreuneaz munca receptorului, care trebuie s citeasc a a a elementele irului unu cte unu i s verice dac nu a alnit terminas a s a a nt torul. De asemenea, trebuie xat valoarea terminatorului, care trebuie a s e o valoare reprezentabil formatul pentru element, dar care nu a a n apare niciodat ca valoare a unui element valid. a Metoda este utilizat frecvent transmiterea unui ir de caraca n s tere. Rolul de terminator poate acordat caracterului null (caracterul cu codul ASCII zero), caracterului newline (sfrit de rnd), caracterului as a
spatiu, etc. Orice alegere s-ar face, caracterul sau caracterele astfel alese pentru a marca sfritul unui ir nu pot s apar irul propriu-zis. as s a a n s Ca urmare, transmiterea unui ier cu continut arbitrar (ir de octeti s s cu valori arbitrare) nu se poate face prin metoda cu terminator (dect a dac un octet al ierului se codic pe mai mult de 8 biti). a s a
Exemplul 7.4: Redm mai jos reprezentrile text ASCII terminat cu spatiu, a a BCD big endian pe 4 octeti i BCD little endian pe 4 octeti, pentru numrul s a 300. Valorile octetilor sunt scrise baza 2, bitul cel mai semnicativ ind n scris stnga. n a pozitie octet (nr. ordine) 0 1 2 3 Valorile octetilor BCD BCD big endian little endian 00000000 00000000 00000000 00000011 00000011 00000000 00000000 00000000
cutarea unui cuvnt, extragerea unor cuvinte sau unor fragmente de text a a i diverse alte operatii de analiz a textului; s a sortarea alfabetic. a De notat c regulile de sortare alfabetic sunt complexe i depind a a s de limb. De exemplu, limba romn, literele cu diacritice sunt consida n a a erate imediat dup literele fr diacritice. Urmtoarele cuvinte sunt sortate a aa a alfabetic: sac, suc, iret; de notat c orice cuvnt ce s a a ncepe cu este sortat s francez, a, literele cu diacritice sunt dup toate cuvintele ce a ncep cu s. In a ns considerate, prima faz, echivalente cu cele fr diacritice, intervenind n a aa n ordinea alfabetic doar pentru cuvinte care difer doar prin diacritice. Exa a emplu: t, tre, tude; de notat c apar amestecate cuvinte ce ee e e a ncep cu i e s . e Majoritatea codicrilor sunt bazate pe reprezentarea una dup alta a a a literelor (caracterelor) ce formeaz cuvintele textului. a Codicrile caracterelor sunt de obicei descrise dou etape. a n a In prima etap, ecrui caracter este asociat un numr a a i a ntreg pozitiv, numit codul caracterului. a doua etap, ecrui cod de caracter este asociat o In a a i a codicare ca ir de biti sau ca ir de octeti. s s Pentru o schem de codicare trebuie aadar specicate trei elemente: a s setul de caractere; numerotarea (codicarea) caracterelor; reprezentarea pe biti sau pe octeti a codurilor caracterelor.
(celelalte) caractere imprimabile au codurile cuprinse ntre 33 i 126. Pentru s a uura sortarea alfabetic, codurile sunt grupate astfel: s a literele mari de la 65 (41 hexa) pentru A la 90 (5A hexa) pentru Z; literele mici de la 97 (61 hexa) pentru a la 122 (7A hexa) pentru z; cifrele de la 48 (30 hexa) pentru 0 la 57 (39 hexa) pentru 9. De remarcat i c diferenta dintre codul oricrei litere mici i codul literei mari s a a s corespunztoare este 32 (20 hexa). a Pentru reprezentarea unui caracter ASCII sunt necesari doar 7 biti, a cel mai adesea un caracter ASCII se reprezint pe un octet, al crui cel ns a a mai semnicativ bit este ntotdeauna 0. Datorit faptului c pe de o parte caracterele ASCII se reprezint pe a a a un octet, iar pe de alt parte c dintre caracterele de control multe nu sunt a a utilizate deloc majoritatea aplicatiilor, rmn multe coduri reprezentabile n a a (cca. 140) care nu sunt utilizate. Se poate extinde setul de caractere, asociind noilor caractere coduri ntre 128 i 255 sau coduri s ntre 0 i 31 a cror caractere s a corespunztoare nu sunt folosite efectiv. Toate aceste codicri rezultate se a a numesc generic seturi ASCII extinse.
Caracter A A I S T
Cod (hexa) E3 E2 EE BA FE
Tabelul 7.1: Caracterele cu diacritice din alfabetul limbii romne i codicrile a s a ISO-8859-2 corespunztoare a
ASCII i codurile asociate caracterelor comune cu setul ASCII coincid cu cos durile ASCII. Ca urmare, un text ASCII este ntotdeauna interpretat corect ca text ISO-8859-n. Pe de alt parte, un text scris ISO-8859-n i interpretat a n s ca ISO-8859-m va evident interpretat greit. s Ordinea numeric a codurilor din oricare dintre codicrile ISO-8859 a a este diferit de ordinea alfabetic. general, ordinea alfabetic, literele a a In n a cu diacritice si au locul imediat lng literele similare fr diacritice; a a aa n codicrile ISO-8859-1 sau ISO-8859-2, de exemplu, literele cu diacritice au a codurile mai mari de 128 vreme ce literele fr diacritice au coduri n aa ntre 65 i 123. s
Caracter A a A a I S , s , T , t , S s T t
Cod unicode (hexa) 102 103 C2 E2 CE EE 218 219 21A 21B 15E 15F 162 163
Cod unicode (zecimal) 258 259 194 226 206 238 536 537 538 539 350 351 354 355
UTF-8 (hexa) C4 C4 C3 C3 C3 C3 C8 C8 C8 C8 C5 C5 C5 C5 82 83 82 A2 8E AE 98 99 9A 9B 9E 9F A2 A3
Tabelul 7.2: Caracterele cu diacritice din alfabetul limbii romne i codicrile a s a unicode corespunztoare. Not: caracterele S, , T i au cte dou forme utilizate: a a s s t a a una cu virgul dedesupt, cealalt cu sedil. Conform normelor stabilite de Academia a a a Romn, forma corect este cea cu virgul. Codicarea formei cu virgul a fost a a a a a standardizat mai recent, motiv pentru care multe documente utilizeaz a forma a a nc cu sedil. a
7.2.3.1. Codicarea UTF-8 Corespondenta de la codul caracterului la irul de octeti este dat s a n tabelul 7.3.
Valorile lui c ( baza 16) n 07F 807FF 800FFFF 100001FFFFF reprezentarea UTF-8 ( baza 2) n 0c7 c6 c5 c4 c3 c2 c1 c0 110c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 1110c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0 11110c20 c19 c18 10c17 c16 c15 c14 c13 c12 10c11 c10 c9 c8 c7 c6 10c5 c4 c3 c2 c1 c0
Tabelul 7.3: Codicarea UTF-8. c reprezint codul unicode al caracterului; c20 . . . c0 a reprezint cifrele reprezentrii binare a lui c, cu c20 reprezentnd cifra cea mai semnia a a cativ i c0 cea mai putin semnicativ. Codicarea exist doar pentru 0 c < 221 . as a a
De remarcat c schema pentru coduri mari (de exemplu, schema pena tru c ntre 8016 i 7FF16 ) poate principial aplicat i la coduri mai mici (de s as exemplu, pentru c = 4116 , rezultnd doi octeti, C116 urmat de 8116 ). O asta fel de codicare este a interzis de standard pentru a asigura unicitatea ns a codicrii UTF-8. a Codicarea UTF-8 permite recuperarea sincronismului (dac recepa torul pierde civa octeti poate regsi unde at a ncepe un caracter nou), deoarece ecare caracter nou ncepe cu un octet cuprins ntre 0 i 127 sau s ntre 192 i 255, iar ceilalti octet din codicarea unui caracter sunt cuprini s s ntre 128 i 191. O alt proprietate este c lungimea codicrii UTF-8 a unui caracter s a a a poate determinat dup citirea primului octet. a a 7.2.3.2. Codicrile UTF-16 a Codicarea UTF-16 este descris dou etape: a n a ntr-o prim etap, a a codul unicode este transformat ntr-unul sau dou numere de cte 16 biti, iar a a a doua etap ecare astfel de numr este scris ca 2 octeti consecutivi. n a a Caracterele cu codul unicode ntre 0 i D7FF16 sau s ntre E00016 i s FFFF16 se scriu ca un singur ntreg pe 16 biti. Caracterele cu codul unicode ntre 1000016 i 10FFFF16 se scriu ca s doi ntregi de cte 16 biti astfel: Mai ai, din codul unicode se scade 1000016 , a nt rezultnd o valoare a ntre 0 i FFFFF16 (20 biti). Primul s ntreg de 16 biti se formeaz punnd cifrele 110110 urmate de primii 10 din cei 20 de biti. Al a a doilea ntreg se formeaz punnd cifrele 110111 urmate de ultimii 10 din cei a a 20 de biti. De exemplu, codul unicode 1030216 se scrie ca doi ntregi astfel: D83C16 DF0216 .
Intr-o a doua etap este denit scrierea ecrui a a a ntreg de 16 biti ca un ir de doi octeti. Exist dou modaliti de a reprezenta ecare astfel s a a at de ntreg, ncepnd de la octetul mai semnicativ (de rang mai mare) sau a ncepnd de la octetul mai putin semnicativ. Pentru a reecta aceste variante a diferite de alegere, exist trei codicri distincte numite generic UTF-16 : a a UTF-16LE : Primul octet este cel mai putin semnicativ (little endian); UTF-16BE : Primul octet este cel mai semnicativ (big endian); UTF-16 : Ordinea octetilor poate e big endian, e little endian, la alegerea emittorului. Primul caracter codicat trebuie s e caracterul a a cu codul FEFF16 (denit initial ca ind un caracter de control ce in terzice ruperea rnduri acel punct, dar este utilizat prezent doar n a n n ca marcaj pentru identicarea ordinii octetilor). Ordinea octetilor este dedus de receptor prin examinarea primilor doi octeti: dac acetia a a s sunt FE16 urmat de FF16 , nseamn c ordinea octetilor este big ena a dian; dac este FF16 urmat de FE16 , a nseamn c ordinea octetilor este a a little endian. 7.2.3.3. Codicrile UTF-32 a Codicarea UTF-32 const codicarea ecrui caracter ca un a n a ntreg pe 32 de biti, reprezentat la rndul lui ca un ir de 4 octeti. Ca i cazul a s s n codicrilor UTF-16, exist trei codicri UTF-32 : a a a UTF-32LE : Primul octet este cel mai putin semnicativ (little endian); UTF-32BE : Primul octet este cel mai semnicativ (big endian); UTF-32 : Ordinea octetilor poate e big endian, e little endian, la alegerea emittorului. Primul caracter codicat trebuie s e caracterul a a cu codul F EF F16 . Ordinea octetilor este dedus de receptor prin ex a aminarea primilor patru octeti: dac acetia sunt 0, 0, F E16 , F F16 , a s nseamn c ordinea octetilor este big endian; dac este F F16 , F E16 , 0, a a a 0, nseamn c ordinea octetilor este little endian. a a
prin ,,ora curent, iar apoi vom vedea ce scheme de reprezentare ale datei i a s orei exist i ce avantaje i dezavantaje aduce ecare dintre ele. as s
pe meridianul 0 , al soarelui mijlociu.) Curge neuniform datorit neunia formitii micrii de rotatie a Pmntului; dup media ultimilor civa at s a a a a at ani, 24 h UT1 este aproximativ 86400,002 s SI. Timpul universal coordonat (UTC) este bazat pe secunda SI, dar gruparea secundelor zile este modicat pentru a mentine diferenta n a dintre UT1 i UTC la sub o secund. s a Astfel, o zi UTC normal are 24 ore a 60 minute a 60 secunde SI a ecare, adic 86400 s. Dac UT1UTC se apropie de 1 s, se adaug o a a a secund de corectie (engl. leap second ) la o zi, astfel at acea zi UTC a nc are 86401 s, proces aproape echivalent cu a muta UTC cu o secund a acest scop, ultimul minut al zilei are 61 de secunde loc de napoi. In n 60, dup ora 23:59:59 urmeaz, la o secund, 23:59:60 i abia dup a a a a s a nc o secund ora 0:00:00 a zilei urmtoare. Dac UT1UTC se apropie a a a de 1 s, se elimin o secund din ultimul minut al unei zile, astfel c la a a a o secund dup 23:59:58 urmeaz ora 0:00:00 a zilei urmtoare. Din a a a a anul 1972 (de la introducerea UTC forma actual) pn 2008 au n a a a n fost adugate 23 de secunde de corectie i nu a fost eliminat nici una. a s a A 24-a secund de corectie se va aduga la sfritul anului 2008, astfel a a as at ziua de 31 decembrie 2008 va avea 86401 secunde. Datorit unei nc a diferente initiale de 10 s ntre TAI i UTC, diferenta TAIUTC este s n prezent de 33 s. Timpul legal ecare ar este denit e pe baza UT1, e pe baza UTC n t a (diferenta este neglijabil pentru uzul practic), ca ind UTC (sau UT1) a plus sau minus un anumit numr de ore i uneori i fractiuni de or a s s a (exemplu, India are ora legal UTC+5h30min). a rile care exist or de var, la trecerea de la ora de iarn la In ta n a a a a cea de var i invers, diferenta dintre ora legal i UTC crete, respectiv as as s scade, cu o or (de notat c UTC nu are or de var). De exemplu, a a a a ora legal Romnia este UTC+2 h timpul iernii (din ultima dua n a n minic din octombrie pn ultima duminic din martie) i UTC+3 h a a a n a s timpul verii. n Ora suplimentar introdus la trecerea de la ora de var la cea de a a a iarn nu are notatie distinct, de tipul secundelor de corectie din UTC. a a Ca urmare, la trecerea de la ora de var la ora de iarn, exist perechi de a a a momente de timp care sunt notate la fel i ca urmare ora legal este ams a bigu. Exemplu: dac prin trecerea de la ora de var la cea de iarn ora a a a a 4:00:00 devine 3:00:00, atunci notatia 3:30:00 poate corespunde la dou a momente de timp, ora de var 3:30:00 (la 30 min a naintea schimbrii a orei) i ora de iarn 3:30:00 (la 30 min dup schimbarea orei). s a a
Pentru gruparea zilelor uniti mai mari, special ani, sunt n at n n utilizate mai multe sisteme (calendare): Calendarul gregorian , introdus anul 1582 i vigoare Romnia n s n n a din anul 1924, este calendarul actual. Anii bisecti (de 366 de zile) sunt anii cu numrul anului divizibil cu 4, cu exceptia celor divizibili cu 100 a fr a divizibili cu 400. Ani bisecti sunt 1600, 2000, 2400 etc; ani aa nebisecti divizibili cu 100 sunt 1700, 1800, 1900, 2100, 2200 etc. Durata medie a anului gregorian este 365,2425 zile, ceva mai lung dect anul a tropic de aproximativ 265,2422 zile. Calendarul iulian , predecesorul calendarului gregorian, introdus anul n 45 .e.n. i avnd regula mai simpl cum c sunt bisecti toti anii cu s a a a numr divizibil cu 4. Este utilizat adesea de istorici pentru a data i a s evenimente dinainte de anul 45 .e.n., caz care el este numit calendar n iulian proleptic. Cu o durat medie a anului de 365,25 zile, calendarul a iulian rmne urm cu 1 zi la aproximativ 128 de ani. a a n a Ziua iulian este un simplu numr ce arat numrul de zile scurse de la a a a a o dat de referint. Acest sistem este utilizat frecvent astronomie a a n deoarece permite uor calculul duratelor dintre dou date; din acelai s a s motiv reprezint o schem potrivit pentru reprezentarea datei cala a a n culator. Exist dou variante. Prima, JD (julian day), are ca referinta a n a data de 1 ianuarie 4713 .e.n. conform calendarului iulian proleptic, la amiaza UT1. Momentul respectiv este JD 0,0, miezul noptii urmtoare a este JD 0,5, etc. Cealalt, MJD (modied julian day), are ca referint a a 17 noiembrie 1858 ora 0, adic este JD2400000,5 . a
4. pentru aplicatii speciale, citirea sau aarea timpului alte formate s n (timpul legal al altui fus orar, UTC, TAI, JD, etc). Punctul 1 este cerut de toate sistemele. Punctul 2 este important pentru foarte multe aplicatii i rezolvarea lui corect interzice mutarea ceasului s a napoi. Punctul 3 este important aplicatiile timp real; de asemenea, n n functionarea ceasului sistem presupune, mod repetat, adunarea unei durate n de timp la un moment de timp. Reprezentarea direct a orei legale, sub forma an, lun, zi, or, minut, a a a secund, fractiuni de secund, rezolv simplu punctul 1. Ea ridic a proba a a a ns leme la punctul 2 dac sunt implicate calculatoare aate pe fusuri orare disa tincte sau dac se efectueaz operatii intervalul de o or jurul trecerii de a a n a n la ora de var la cea de iarn; pentru tratarea corect a acestor cazuri este a a a necesar s se tie, despre ecare or, pe ce fus orar este considerat i care a s a a s sunt regulile privind ora de var. Punctul 3 ridic, pe lng problemele coa a a a mune cu cele legate de punctul 2, complicatii legate de saltul cu o or a nainte la trecerea de la ora de iarn la ora de var i calculele legate de calendar; a a s de asemenea, pentru calcule exacte ale duratelor, sunt necesare informatii cu privire la secundele de corectie. Reprezentarea orei UTC permite determinarea ordinii cronologice i s a duratelor fr a necesita date despre fusurile orare sau regulile privind ora aa de var, schimb aceste date sunt necesare la conversia a n ntre reprezentarea UTC i timpul legal. s Reprezentarea TAI ca numr de uniti de timp scurse de la un ana at umit moment xat rezolv extrem de simplu punctele 2 i 3 schimb mut a s n a dicultile la rezolvarea punctului 1. at
anul, ca ir de 4 cifre, s ora, totdeauna ca 2 cifre, ntre 00 i 23, s minutul, ca dou cifre, a ntre 00 i 59, s optional, secunda, ca dou cifre a ntre 00 i 60, s diferenta dintre ora legal conform creia a fost scris data i ora UTC; a a a s aceasta este dat ca 4 cifre, 2 pentru numrul de ore i 2 pentru numrul a a s a de minute, cele patru cifre ind precedate de semnul + sau . Componentele datei sunt separate printr-un amestec de virgule, spatii i carac s tere dou puncte. a De exemplu, data:
nseamn c la momentul scrierii mesajului ora local a expeditorului era joi, a a a 25 octombrie 2007, ora 17:22:19 i c ora respectiv este cu 3 ore avans fat s a a n a de UTC. Ca urmare, ora UTC la acel moment era 14:22:19. Data considerat acest exemplu este plauzibil conform orei legale a n a a Romniei, 25 octombrie 2007 ind a vigoare ora de var care este a n nc n a cu 3 ore avans fat de UTC. n a Orele astfel specicate sunt uor de comparat i nu exist ambiguiti s s a at legate de trecerea de la ora de var la cea de iarn. De exemplu, un mesaj a a trimis nainte de trecerea la ora de iarn ar datat a
Sun, 28 Oct 2007, 03:40 +0300
7.3.3.2. ISO-8601 i RFC-3339 s ISO-8601 este o standardizare a modului de scriere ca text a datei i orei. Standardul ind foarte complex, a aprut RFC-3339 care cuprinde s a cazurile mai utile i mai frecvent folosite din ISO-8601. s RFC-3339 prevede reprezentarea datelor astfel: anul, ca patru cifre (nu sunt admise prescurtri de genul 07 pentru 2007), a luna, ca 2 cifre (01 pentru ianuarie, 12 pentru decembrie), ziua, ca 2 cifre (de la 01 pn la 31 sau mai putin, functie de lun). a a n a Cele trei componente sunt separate prin liniute (ISO-8601 permite i alipirea s lor):
Ora se reprezint prin 2 cifre pentru or (0023), 2 cifre pentru minut a a (0059), dou cifre pentru secund (0060, functie i de prezenta unei sea a n s cunde de corectie), eventual fractiunile de secund i eventual specicarea fusu as lui orar. Ora, minutul i secunda sunt separate prin dou puncte, fractiunile s a de secund se separ de cmpul pentru secunde prin punct, iar specicarea a a a fusului orar se face printr-un semn plus sau minus urmat de dou cifre pentru a numrul de ore diferent urmat de caracterul dou puncte i a dou cifre a a a s nc a pentru numrul de minute diferent. Exemplu: a a
21:12:58.342+02:00
7.3.3.3. Timpul POSIX sistemele de tip UNIX (conforme standardului POSIX), reprezentarea In timpului este fcut printr-un numr a a a ntreg considerat de obicei c reprezint a a numrul de secunde scurse de la 1 ianuarie 1970 ora 0:00 UTC. Ora UTC a formatul obinuit se obtine grupnd secundele minute, ore, zile, luni i n s a n s ani conform regulilor obinuite. De fapt, numrul dat ca dat nu este exs a a act numrul de secunde scurse de la 1 ianuarie 1970, ci difer de acesta prin a a numrul de secunde de corectie adugate pentru mentinerea sincronism a a a n UTC cu rotatia Pmntului. De aceea, ,,timpul unix are salturi a a napoi de cte a o secund la ecare introducere a unei astfel de secunde de corectie. Timpul a POSIX este reprezentat mod obinuit ca n s ntreg cu semn pe 32 de biti, i ca s urmare valoarea cea mai mare ce poate reprezentat corespunde datei de 19 a ianuarie 2038, ora 3:14:07 UTC. 7.3.3.4. TAI 64 TAI 64 este un standard ce presupune reprezentarea timpului ca numr de secunde, incluznd secundele de corectie. Numrul de secunde este a a a reprezentat pe 63 de biti (plus un bit rezervat), cu valoarea 262 corespunznd a datei de 1 ianuarie 1970 ora 0 TAI. Intervalul de timp reprezentabil este imens, de ordinul a 1011 ani.
Pentru aplicatii ce au nevoie de rezolutie mai bun de o secund, a a standardul prevede a dou cmpuri de cte 32 de biti (total 128 de biti), nc a a a reprezentnd respectiv numrul de nanosecunde i de attosecunde (valori a a s ntre 0 i 109 1). s
7.4. Recodicri a
Este necesar uneori s codicm un ir mai mult sau mai putin arbia a s trar de octeti sub forma unui ir de caractere supus unor restrictii. Astfel de s situatii apar: La trimiterea ierelor ataate la mesajele de pot electronic, s s sa a ntregul mesaj, inclusiv partea ce cuprinde ierele ataate, trebuie s s s a ndeplineasc anumite restrictii, a ntre altele, s nu contin caractere ASCII a a de control cu exceptia perechilor carriage returnline feed de la nalul ecrui rnd, s nu aib rnduri prea lungi, etc. Pe de alt parte, ierele a a a a a a s ataate pot iere binare cu continut arbitrar. s s La stocarea iere text a unor informatii reprezentate natural ca ir n s s arbitrar de octeti, de exemplu la stocarea iere text a unor chei de n s criptare, semnturi electronice, etc. a limbaje de programare, la scrierea irurile de caractere a unor carIn n s actere cu rol special, ca de exemplu a ghilimelelor (care mod normal n sunt interpretate ca terminatorul irului de caractere). s astfel de situatii, este necesar s se codice un ir arbitrar de octeti In a s (ecare octet poate lua orice valori ntre 0 i 255) pe un alfabet constnd s a litere, cifre i cteva simboluri speciale. Deoarece numrul de simboluri n s a a disponibile este mai mic dect numrul de valori posibile ale octetilor, un a a octet nu se va putea codica numai pe un singur caracter.
Caracterul de evitare (dac face parte din alfabetul surs), precum i a a s caracterele din alfabetul surs ce nu se gsesc alfabetul destinatie, se a a n codic ca secvente de caractere ce a ncep cu un caracter de evitare. Exemple: Pentru pota electronic, un caracter ce nu pot transmise direct este s a codicat ca o secvent de trei caractere, un caracter egal (=) i dou a s a cifre hexa reprezentnd codul caracterului de transmis. Aceast recodia a care se numete quouted printables. Caracterele ASCII imprimabile, cu s exceptia caracterului egal, se transmit direct (fr recodicare). Ca ur aa mare, un text care caracterele ce trebuie recodicate sunt rare poate n eles de ctre un utilizator uman fr prea mari diculti. Ca exnt a aa at emplu, fraza precedent se scrie (presupunnd o codicare ISO-8859-2 a a pentru caractere i apoi o recodicare quouted printables): s
Ca urmare, un text =EEn care caracterele ce trebuie recodificate sunt rare poate fi =EEn=FEeles de c=E3tre un utilizator uman f=E3r=E3 prea mari dificult=E3=FEi.
URL-uri, caracterele ce au rol sintactic (spatiu, /, etc) se codic In a prin caracterul procent (%) urmat de dou cifre hexa reprezentnd vala a oarea caracterului respectiv. De notat c aceste coduri sunt cadrul a n codicrii UTF-8; ca urmare, o pagin cu numele ir ar avea un URL a a s de forma
http://example.com/%C8%98ir
limbajul C i alte limbaje derivate din el, ghilimelele (") servesc In s n la delimitarea irurilor de caractere. Dac se dorete introducerea unor s a s astfel de caractere ntr-un ir, sau a caracterelor ASCII de control, se s introduc secvente escape cum ar : \" pentru ghilimele ("), \\ pentru backslash (\), \n pentru newline (caracterul ASCII cu codul 10). HTML, caracterele unicode sunt scrise prin secvente &#cod ;. De ex In emplu, litera se scrie ț. t
Capitolul 8
i gura 8.1): s Pe ecare calculator ruleaz mai multe procese i ecare proces poate avea a s mai multe ci de comunicatie deschise. Prin urmare, pe un calculator a trebuie s poat exista la un moment dat mai multe legturi (conexiuni) a a a active. Realizarea comunicrii este intermediat de sistemele de operare de pe a a calculatoarele pe care ruleaz cele dou procese. Deschiderea unei conea a xiuni, nchiderea ei, transmiterea sau receptionarea de date pe o cone xiune i congurarea parametrilor unei conexiuni se fac de ctre sistemul s a de operare, la cererea procesului. Cererile procesului se fac prin apelarea functiilor sistem din familia socket. cadrul comunicatiei dintre procesul utilizator i sistemul de operare In s local (prin intermediul apelurilor din familia socket), capetele locale ale conexiunilor deschise sunt numite socket-uri i sunt identicate prin nus mere ntregi, unice cadrul unui proces la ecare moment de timp. n Fiecare entitate care comunic cadrul retelei este identicat printr-o a n adres unic. O adresa este asociat de fapt unui socket. Adresa este a a a format conform regulilor protocolului de retea utilizat. a Interfata socket contine functii pentru comunicatiei att conform mod a elului conexiune ct i conform modelului cu datagrame. a s Functiile sistem oferite permit stabilirea comunicatiei prin diferite pro tocoale (de exemplu, IPv4, IPv6, IPX), dar au aceeai sintax de apel s a independent de protocolul dorit.
8.1.1.1. Deschiderea conexiunii de ctre client a Procesul client trebuie s cear mai ai sistemului de operare local a a nt crearea unui socket. Trebuie specicat protocolul de retea utilizat (TCP/IPv4, TCP/IPv6, etc), dar a nu se specic partenerul de comunicatie. Socket-ul nc a proaspt creat este starea neconectat. a n Dup crearea socket-ului, clientul cere sistemului de operare conectarea a socket-ului la un anumit server, specicat prin adresa socket-ului serverului. De exemplu, pentru protocolul TCP/IPv4, adresa partenerului se specic a prin adresa IP (vezi 10.1) i numrul portului (vezi 10.3.1). s a Functiile sistem apelate sunt: socket() pentru crearea socket-ului i s connect() pentru deschiderea efectiv a conexiunii. a
8.1.1.2. Deschiderea conexiunii de ctre server a Procesul server ncepe tot prin a cere sistemului de operare crearea unui socket de tip conexiune pentru protocolul dorit. Acest socket nu va servi pentru conexiunea propriu-zis cu un client, ci doar pentru ateptarea a s conectrii clientilor; ca urmare este numit uneori socket de ateptare. Dup a s a crearea acestui socket, serverul trebuie s cear sistemului de operare stabilirea a a adresei la care serverul ateapt cereri de conectare (desigur, acea parte din s a adres care identic maina serverului nu este la alegerea procesului server) a a s i apoi cere efectiv s nceperea ateptrii clientilor. Functiile apelate aceast s a n a faz sunt, ordinea care trebuie apelate: socket() pentru crearea socketa n n ului, bind() pentru stabilirea adresei i listen() pentru s nceperea ateptrii s a clientilor. Preluarea efectiv a unui client conectat se face prin apelarea unei a functii sistem numit accept(). La apelul functiei accept(), sistemul de a operare execut urmtoarele: a a ateapt cererea de conectare a unui client i deschide conexiunea ctre s a s a acesta; creaz un nou socket, numit socket de conexiune, care reprezint captul a a a dinspre server al conexiunii proaspt deschise; a returneaz apelantului (procesului server) identicatorul socket-ului de a conexiune creat. Dup un apel accept(), socket-ul de ateptare poate utilizat pentru a a s atepta noi clienti, iar socket-ul de conexiune nou creat se utilizeaz pentru a s a comunica efectiv cu acel client.
8.1.1.3. Comunicatia propriu-zis a O dat deschis conexiunea, clientul poate trimite iruri de octeti a a s ctre server i invers, serverul poate trimite iruri de octeti ctre client. Cele a s s a dou sensuri de comunicatie functioneaz identic (nu se mai distinge cine a a a fost client i cine a fost server) i complet independent (trimiterea datelor pe s s un sens nu este conditionat de receptionarea datelor pe cellalt sens). a a Pe ecare sens al conexiunii, se poate transmite un ir arbitrar de s octeti. Octetii trimii de ctre unul dintre procese spre cellalt sunt plasati s a a ntr-o coad, transferati prin retea la cellalt capt i cititi de ctre procesul a a a s a de acolo. Comportamentul acesta este similar cu cel al unui pipe UNIX. Trimiterea datelor se face prin apelul functiei send() (sau, cu functio nalitate mai redus, write()). Apelul acestor functii plaseaz datele coad a a n a spre a transmise, dar nu ateapt transmiterea lor efectiv (returneaz, de s a a a principiu, imediat controlul ctre procesul apelant). Dac dimensiunea datelor a a din coad este mai mare dect o anumit valoare prag, (aleas de sistemele a a a a de operare de pe cele dou maini), apelul send() se blocheaz, returnnd a s a a controlul procesului apelant abia dup ce partenerul de comunicatie citete a s date din coad, ducnd la scderea dimensiunii datelor din coad sub valoarea a a a a prag. Receptionarea datelor trimise de ctre partenerul de comunicatie se a face prin intermediul apelului sistem recv() (cu functionalitate mai redus a se poate utiliza read()). Aceste functii returneaz procesului apelant datele a deja sosite pe calculatorul receptor i le elimin din coad. cazul care nu s a a In n sunt a date disponibile, ele ateapt sosirea a cel putin un octet. nc s a Sistemul garanteaz sosirea la destinatie a tuturor octetilor trimii a s (sau stiintarea receptorului, printr-un cod de eroare, asupra cderii conen a xiunii), ordinea care au fost trimii. Nu se pstreaz a demarcarea n n s a a ns ntre secventele de octeti trimise apeluri send() distincte. De exemplu, este n posibil ca emittorul s trimit, dou apeluri succesive, irurile abc i def, a a a n a s s iar receptorul s primeasc, apeluri recv() succesive, irurile ab, cde i f. a a n s s 8.1.1.4. Inchiderea conexiunii Inchiderea conexiunii se face separat pentru ecare sens i pentru s ecare capt. Exist dou functii: a a a shutdown() nchide, la captul local al conexiunii, sensul de comunicatie a cerut de procesul apelant; close() nchide la captul local ambele sensuri de comunicatie i plus a s n distruge socket-ul, elibernd resursele alocate (identicatorul de socket a
i memoria alocat spatiul nucleului). s a n Terminarea unui proces are efect identic cu un apel close() pentru toate socket-urile existente acel moment posesia acelui proces. n n Dac captul de emisie al unui sens de comunicatie a fost a a nchis, receptorul poate citi continuare datele existente acel moment coad, n n n a dup care un eventual apel recv() va semnaliza apelantului faptul c a fost a a nchis conexiunea. a Dac captul de receptie al unui sens a fost a a nchis, o scriere ulterioar a de la cellalt capt este posibil s returneze un cod de eroare (pe sistemele a a a de tip UNIX, scrierea poate duce i la primirea, de ctre procesul emittor, a s a a unui semnal SIGPIPE).
este posibil ca dou sau mai multe datagrame adresate aceluiai destinatar s a s a ajung la destinatie alt ordine dect cea care au fost emise. Dac astfel a n a a n a de situatii sunt inadmisibile pentru aplicatie, atunci protocolul de comunicatie trebuie s prevad conrmri de primire i repetarea datagramelor pierdute, a a a s precum i numere de secvent sau alte informatii pentru identicarea ordinii s a corecte a datagramelor i a duplicatelor. Implementarea acestor mecanisme s cade sarcina proceselor. n La terminarea utilizrii unui socket, procesul posesor poate cere disa trugerea socket-ului i eliberarea resurselor asociate (identicatorul de socket, s memoria ocupat sistemul de operare pentru datele asociate socket-ului, a n portul asociat socket-ului). Distrugerea socket-ului se face prin apelul functiei close(). mod curent, In ntr-o comunicatie prin datagrame, unul dintre pro cese are rol de client, sensul c trimite cereri, iar cellalt actioneaz ca n a a a server, sensul c prelucreaz cererile clientului i trimite n a a s napoi clientului rspunsurile la cereri. a Intr-un astfel de scenariu, serverul creaz un socket a cruia asociaz o adres prestabilit, dup care ateapt cereri, apelnd a i a a a a s a a mod repetat recvfrom(). Clientul creaz un socket, cruia nu-i asociaz n a a a o adres (nu execut bind()). Clientul trimite apoi cererea sub forma unei a a datagrame de pe socket-ul creat. La trimiterea primei datagrame, sistemul de operare d o adres socket-ului; datagrama emis poart ca adres surs a a a a a a acest adres. La primirea unei datagrame, serverul recupereaz datele utile a a a i adresa surs, proceseaz cererea i trimite rspunsul ctre adresa surs a s a a s a a a cererii. acest fel, rspunsul este adresat exact socket-ului de pe care clienIn a tul a trimis cererea. Clientul obtine rspunsul executnd recvfrom() asupra a a socket-ului de pe care a expediat cererea. Cu privire la tratarea datagramelor pierdute, un caz simplu este acela care clientul pune doar n ntrebri (interogri) serverului, iar procesarea ina a terogrii nu modic nici un fel starea serverului. Un exemplu tipic acest a a n n sens este protocolul DNS ( 10.4). acest caz, datagrama cerere contine inIn terogarea i daatgrama rspuns contine att cererea la care se rspunde ct i s a a a a s rspunsul la interogare. Serverul ia ( mod repetat) cte o cerere, calculeaz a n a a rspunsul i trimite o a s napoi o datagram cu cererea primit i rspunsul la a as a cerere. Clientul trimite cererile sale i ateapt rspunsurile. Deoarece ecare s s a a rspuns contine el i cererea, clientul poate identica ecare rspuns la ce a n s a cerere corespunde, chiar i cazul inversrii ordinii datagramelor. Dac la o i s n a a cerere nu primete rspuns s a ntr-un anumit interval de timp, clientul repet cera erea; deoarece procesarea unei cereri nu modic starea serverului, duplicarea a cererii de ctre retea sau repetarea cererii de ctre client ca urmare a pierderii a a
rspunsului nu au efecte nocive. Clientul trebuie s ignore rspunsurile duplia a a cate la o aceeai interogare. s
Functia creaz un socket i returneaz identicatorul su. Parametrii a s a a sunt: type: desemneaz tipul de servicii dorite: a SOCK STREAM:conexiune punct la punct, ux de date bidirectional la nivel de octet, asigurnd livrare sigura, cu pastrarea ordinii a octetilor i transmisie fara erori. s SOCK DGRAM:datagrame, att punct la punct ct i difuziune; transa a s misia este garantat a fr erori, dar livrarea nu este sigura i a aa s nici ordinea datagramelor garantata. SOCK RAW:acces la protocoale de vel cobort; este de exemplu utilizat a de ctre comanda ping pentru comunicatie prin protocolul ICMP. a a a proto family identic tipul de retea cu care se lucreaz (IP, IPX, etc). Valori posibile: PF INET:protocol Internet, versiunea 4 (IPv4) PF INET6:protocol Internet, versiunea 6 (IPv6) PF UNIX:comunicatie local pe o main UNIX. a s a protocol selecteaz protocolul particular de utilizat. Acest parametru a este util dac pentru un tip de retea dat i pentru un tip de serviciu a s xat exist mai multe protocoale utilizabile. Valoarea 0 desemneaz a a protocolul implicit pentru tipul de retea i tipul de serviciu alese. s 8.1.3.2. Functia connect() Functia are sintaxa:
int connect(int sock_id, struct sockaddr* addr, int addr_len)
Functia are ca efect conectarea socketului identicat de primul parametru care trebuie s e un socket de tip conexiune proaspt creat ( a neconectat) a a nc
la serverul identicat prin adres dat prin parametrii addr i addr len. a a s La adresa respectiv trebuie s existe deja un server care s atepte conexiuni a a a s (s fost deja executat apelul listen() asupra socket-ului serverului). a Adresa trebuie plasat, a nainte de apelul connect(), ntr-o structur a avnd un anumit format; continutul acestei structuri va descris 8.1.3.6. a n Adresa memorie a acestei structuri trebuie dat ca parametrul addr, iar n a lungimea structurii de adres trebuie dat ca parametrul addr len. Motivul a a acestei complicatii este legat de faptul c functia connect() trebuie s poat a a a lucra cu formate diferite de adres, pentru diferite protocoale, iar unele proa tocoale au adrese de lungime variabil. a Functia connect() returneaz 0 caz de succes i 1 caz de a n s n eroare. Eroarea survenit poate constatat e vericnd valoarea variabilei a a a globale errno, e apelnd functia perror() imediat dup functia sistem ce a a a ampinat probleme. Eroarea cea mai frecvent este lipsa unui server care s nt a a asculte la adresa specicat. a 8.1.3.3. Functia bind()
int bind(int sd, struct sockaddr* addr, socklen_t len)
Functia are ca efect atribuirea adresei specicate parametrul addr n socket-ului identicat prin identicatorul sd. Aceast functie se apeleaz a a n mod normal dintr-un proces server, pentru a pregti un socket stream de a ateptare sau un socket dgram pe care se ateapt cereri de la clienti. s s a Partea, din adresa de atribuit socket-ului, ce contine adresa mainii s poate e una dintre adresele mainii locale, e valoarea special INADDR_ANY s a (pentru IPv4) sau IN6ADDR_ANY_INIT (pentru IPv6). primul caz, socket-ul In va primi doar cereri de conexiune (sau, respectiv, pachete) adresate adresei IP date socket-ului, i nu i cele adresate altora dintre adresele mainii server. s s s Exemplul 8.1: S presupunem c maina server are adresele 193.226.40.130 a a s i 127.0.0.1. Dac la apelul functiei bind() se d adresa IP 127.0.0.1, atunci s a a socket-ul respectiv va primi doar cereri de conectare destinate adresei IP 127.0.0.1, nu i adresei 193.226.40.130. Dimpotriv, dac adresa acordat s a a a prin bind() este INADDR_ANY, atunci socket-ul respectiv va accepta cereri de conectare adresate oricreia dintre adresele mainii locale, adic att adresei a s a a 193.226.40.130 ct i adresei 127.0.0.1. a s Adresa atribuit prin functia bind() trebuie s e liber acel moa a a n ment. Dac momentul apelului bind() exist un alt socket de acelai tip a n a s avnd aceeai adres, apelul bind() eueaza. a s a s
Pe sistemele de tip UNIX, pentru atribuirea unui numr de port mai a mic dect 1024 este necesar ca procesul apelant s ruleze din cont de admina a istrator. Functia bind() poate apelat doar pentru un socket proaspt creat, a a cruia nu i s-a atribuit a o adres. Aceasta a nc a nseamn c functia bind() a a nu poate apelat de dou ori pentru acelai socket. De asemenea, functia a a s bind() nu poate apelat pentru un socket de conexiune creat prin functia a accept() i nici pentru un socket asupra cruia s-a apelat prealabil vreuna s a n dintre functiile connect(), listen() sau sendto() aceste functii avnd ca a efect atribuirea unei adrese libere aleatoare. Functia returneaz 0 caz de succes i 1 caz de eroare. Eroarea a n s n cea mai frecvent este c adresa dorit este deja ocupat. a a a a 8.1.3.4. Functia listen()
int listen(int sd, int backlog)
Functia cere sistemului de operare s accepte, din acel moment, cererile a de conexiune pe adresa socket-ului sd. Dac socketului respectiv nu i s-a a atribuit a o adres (printr-un apel bind() anterior), functia listen() nc a i atribuie o adres aleas aleator. a a Parametrul backlog xeaz dimensiunea cozii de ateptare aca s n ceptarea conexiunilor. Anume, vor putea exista backlog clienti care au exe cutat connect() fr ca serverul s creat a pentru ei socket-uri de coneaa a nc xiune prin apeluri accept(). De notat c nu exist nici o limitare a numrului a a a de clienti conectati, preluati deja prin apelul accept(). 8.1.3.5. Functia accept()
int accept(int sd, struct sockaddr *addr, socklen_t *addrlen)
Apelul functiei accept() are ca efect crearea unui socket de cone xiune, asociat unui client conectat (prin apelul connect()) la socket-ul de ateptare sd. Dac nu exist a nici un client conectat i pentru care s nu s a a nc s a se creat socket de conexiune, functia accept() ateapt pn la conectarea s a a a urmtorului client. a Functia returneaz identicatorul socket-ului de conexiune creat. a Dac procesul server nu dorete s ae adresa clientului, va da valori a s a NULL parametrilor addr i addrlen. Dac procesul server dorete s ae adresa s a s a clientului, atunci va trebui s aloce spatiu pentru o structur pentru memoa a rarea adresei clientului, s pun adresa structurii respective parametrul a a n
addr, s plaseze a ntr-o variabil de tip a ntreg dimensiunea memoriei alocate pentru adresa clientului i s pun adresa acestui s a a ntreg parametrul adrlen. n acest caz, la revenirea din apelul accept(), procesul server va gsi strucIn a n tura de adres adresa socket-ului client i variabila a s n ntreag a crui adres a a a a fost dat parametrul adrlen va gsi dimensiunea efectiv utilizat de sisa n a a temul de operare pentru a scrie adresa clientului. 8.1.3.6. Formatul adreselor Pentru functiile socket ce primesc de la apelant (ca parametru) o adres din retea (bind(), connect() i sendto()), precum i pentru cele ce rea s s turneaz apelantului adrese de retea (accept(), recvfrom(), getsockname() a i getpeername()), sunt denite structuri de date (struct) care se plaseaz s n a adresele socket-urilor. Pentru ca functiile de mai sus s poat avea aceeai sintax de apel a a s a independent de tipul de retea (i, consecint, de structura adresei), functiile s n a primesc adresa printr-un pointer la zona de memorie ce contine adresa de retea. Structura zonei de memorie respective depinde de tipul retelei utilizate. toate cazurile, aceasta In ncepe cu un ntreg pe 16 biti reprezentnd tipul de a retea. Dimensiunea structurii de date ce contine adresa de retea depinde de tipul de retea i, plus, pentru anumite tipuri de retea, dimensiunea este s n variabil. Din acest motiv: a functiile care primesc de la apelant o adres (connect(), bind() i a s sendto()) au doi parametri: un pointer ctre structura de adres i a a s un ntreg reprezentnd dimensiunea acestei structuri; a functiile care furnizeaz apelantului o adres (accept(), recvfrom(), a a getsockname() i getpeername()) primesc doi parametri: un pointer s ctre structura de adres i un pointer ctre o variabil de tip a as a a ntreg pe care apelantul trebuie s-o initializeze, naintea apelului, cu dimensiunea pe care a alocat-o pentru structura de adres i care functia pune, a s n n timpul apelului, dimensiunea utilizat efectiv de astuctura de adres. a a ambele cazuri, parametrul pointer ctre structura de adres este declarat In a a ca ind de tip struct sockaddr*. La apelul acestor functii este necesar con a versia a pointer-ului ctre structura de adres de la pointer-ul specic tipului a a de retea la struct sockaddr*. O adres a unui capt al unei conexiuni TCP sau a unei legturi a a a prin datagrame UDP este format din adresa IP a mainii i numrul de port a s s a (vezi 10.2.3.1, 10.3.1.6 i 10.3.2). Pentru nevoile functiilor de mai sus, s adresele socket-urilor TCP i UDP se pun, functie de protocolul de nivel s n
retea (IPv4 sau IPv6), ntr-o structur de tip sockaddr_in pentru IPv4 sau a sockaddr_in6 pentru IPv6. Pentru adrese IPv4 este denit structura sockaddr_in avnd urma a a torii membrii: sin family:trebuie s contin constanta AF_INET; a a sin port:de tip ntreg de 16 biti (2 octeti), fr semn, ordine retea (cel aa n mai semnicativ octet este primul), reprezentnd numrul portului; a a sin addr:contine adresa IP. Are tipul struct in_addr, avnd un singur a cmp, s_addr, de tip a ntreg pe 4 octeti ordine retea. n Adresa IPv4 poate convertit de la notatia obinuit (notatia zeca s a imal cu puncte) la struct in_addr cu ajutorul functiei a
int inet_aton(const char *cp, struct in_addr *inp);
Conversia invers, de la structura in_addr la string notatie zecia n mal cu punct se face cu ajutorul functiei a
char *inet_ntoa(struct in_addr in);
care returneaz rezultatul a ntr-un buer static, apelantul trebuind s copieze a rezultatul nainte de un nou apel al functiei. Pentru adrese IPv6 este denit structura sockaddr_in6 avnd ura a mtorii membrii: a a a sin6 family:trebuie s contin constanta AF_INET6; ntreg de 16 biti (2 octeti), fr semn, ordine retea (cel aa n sin6 port:de tip mai semnicativ octet este primul), reprezentnd numrul portului; a a sin6 flow:eticheta de ux. sin6 addr:contine adresa IP. Are tipul struct in6_addr, avnd un singur a cmp, s6_addr, de tip tablou de 16 octeti. a Obtinerea unei adrese IPv4 sau IPv6 cunoscnd numele de domeniu a (vezi 10.4) se face cu ajutorul functiei
struct hostent *gethostbyname(const char *name);
care returneaz un pointer la o structur ce contine mai multe cmpuri dintre a a a care cele mai importante sunt: int h addrtype:tipul adresei, AF_INET sau AF_INET6;
char **h addr list:pointer la un ir de pointeri ctre adresele IPv4 sau s a IPv6 ale mainii cu numele name, formatul in_addr sau respectiv s n in6_addr; int h length:lungimea irului h_addr_list. s 8.1.3.7. Interactiunea dintre connect(), listen() i accept() s La apelul connect(), sistemul de operare de pe maina client trimite s mainii server o cerere de conectare. La primirea cererii de conectare, sistemul s de operare de pe maina server actioneaz astfel: s a dac adresa din cerere nu corespunde unui socket pentru care s-a efectuat a deja apelul listen(), refuz conectarea; a dac adresa corespunde unui socket pentru care s-a efectuat listen(), a ncearc plasarea clientului a ntr-o coad de clienti conectati i nepreluati a s a prin accept(). Dac plasarea reuete (coada ind mai mic dect nc a s s a a valoarea parametrului backlog din apelul listen()), sistemul de operare trimite sistemului de operare de pe maina client un mesaj de s acceptare; caz contrar trimite un mesaj de refuz. n Apelul connect() revine procesul client momentul sosirii acceptului sau n n refuzului de la sistemul de operare de pe maina server. Revenirea din apelul s connect() nu este deci conditionat de apelul accept() al procesului server. a Apelul accept() preia un client din coada descris mai sus. Dac a a coada este vid momentul apelului, functia ateapt sosirea unui client. a n s a Dac coada nu este vid, apelul accept() returneaz imediat. a a a Parametrul backlog al apelului listen() se refer la dimensiunea a cozii de clienti conectati (prin connect()) i a nepreluati prin accept(), s nc i nu la clientii deja preluati prin accept(). s 8.1.3.8. Functiile getsockname() i getpeername() s
int getsockname(int sd, struct sockaddr *name, socklen_t *namelen); int getpeername(int sd, struct sockaddr *name, socklen_t *namelen);
Functia getsockname() furnizeaz apelantului adresa socket-ului sd. a Functia getpeername(), apelat pentru un socket de tip conexiune deja conec a tat, furnizeaz adresa partenerului de comunicatie. a Functia getsockname() este util dac un proces actioneaz ca server, a a a cre acest scop un socket de ateptare, dar numrul portul pe care nd n s a ateapt conexiunile nu este prestabilit ci este transmis, pe alt cale, viitorilor s a a acest caz, procesul server creaz un socket (apelnd socket()), client. In a a
cere primirea cererilor de conexiune (apelnd listen(), dar fr a apelat a aa bind()) dup care determin, prin apelul getsockname(), adresa atribuit la a a a listen() socket-ului respectiv i transmite aceast adres viitorilor clienti. s a a 8.1.3.9. Functiile send() i recv() s Apelurile sistem send() i recv() sunt utilizate faza de comunis n catie pentru socket-uri de tip conexiune. Descriem continuare utilizarea n acestor functii considernd un singur sens de comunicatie i ca urmare ne vom a s referi la un proces emitator i un proces receptor raport cu sensul considerat. s n De notat a c o conexiune socket stream este bidirectional i comunicarea ns a as cele dou sensuri se desfoar independent i prin aceleai mecanisme. n a as a s s Sintaxa functiilor este:
ssize_t send(int sd, const void *buf, size_t len, int flags); ssize_t recv(int sd, void *buf, size_t len, int flags);
Functia send() trimite pe conexiunea identicat prin socket-ul sd a un numr de len octeti din variabila a crui adres este indicat de pointer-ul a a a a buf. Functia returneaz controlul dup plasarea datelor de transmis buer a a n ele sistemului de operare al mainii locale. Valoarea returnat de functia s a send() este numrul de octeti scrii efectiv, sau 1 caz de eroare. Datele a s n plasate buer-e prin apelul send() urmeaz a trimise spre receptor fr n a aa alte actiuni din partea emittorului. a modul normal de lucru, dac nu exist spatiu sucient buer-ele In a a n sistemului de operare, functia send() ateapt ca aceste buer-e s se elibereze s a a (prin transmiterea efectiv a datelor ctre sistemul de operare al receptorului a a i citirea lor de ctre procesul receptor). Aceast ateptare are ca rol frnarea s a a s a procesului emittor dac acesta produce date la un debit mai mare dect cel a a a cu care este capabil reteaua s le transmit sau procesul receptor s le preia. a a a a Prin plasarea valorii MSG_DONTWAIT parametrul flags, acest comportament n este modicat. Astfel, acest caz, dac nu exist sucient spatiu buer-ele n a a n sistemului de operare, functia send() scrie doar o parte din datele furnizate i returneaz imediat controlul procesului apelant. cazul care functia s a In n send() nu scrie nimic, ea returneaz valoarea 1 i seteaz variabila global a s a a cazul care functia send() scrie cel putin un errno la valoarea EAGAIN. In n octet, ea returneaz numrul de octeti scrii efectiv. ambele cazuri, este a a s In sarcina procesului emittor s apeleze din nou, la un moment ulterior, functia a a send() vederea scrierii octetilor rmai. n a s Deoarece functia send() returneaz a nainte de transmiterea efectiv a a datelor, eventualele erori legate de transmiterea datelor nu pot raportate
apelantului prin valoarea returnat de send(). Pot s apar dou tipuri de a a a a erori: cderea retelei i a s nchiderea conexiunii de ctre receptor. Aceste erori a vor raportate de ctre sistemul de operare al emittorului procesului emittor a a a prin aceea c apeluri send() ulterioare pentru acelai socket vor returna 1. a s plus, pe sistemele de tip UNIX, apelul send() pentru o conexiune al crui In a capt destinatie este a nchis duce la primirea de ctre procesul emittor a unui a a semnal SIGPIPE, care are ca efect implicit terminarea imediat a procesului a emittor. a Functia recv() extrage date sosite pe conexiune i aate buer s n ul sistemului de operare local. Functia primete ca argumente identicatorul s socket-ului corespunztor conexiunii, adresa unei zone de memorie unde s a a plaseze datele citite i numrul de octeti de citit. s a Numrul de octeti de citit reprezint numrul maxim de octeti pe care a a a functia va transfera din buer-ul sistemului de operare zona procesului i n apelant. Dac numrul de octeti disponibili buer-ele sistemului de operare a a n este mai mic, doar octetii disponibili acel moment vor transferati. Dac n a momentul apelului nu exist nici un octet disponibil buer-ele sistemului n a n de operare local, functia recv() ateapt sosirea a cel putin un octet. Functia s a returneaz numrul de octeti transferati (cititi de pe conexiune). a a Comportamentul descris mai sus poate modicat prin plasarea uneia din urmtoarele valori parametrul flags: a n n n MSG DONTWAIT: cazul care nu este nici un octet disponibil, functia recv() returneaz valoarea 1 i seteaz variabila global errno la a s a a valoarea EAGAIN; s a a MSG WAITALL:functia recv() ateapt s e disponibili cel putin len octeti i citete exact len octeti. s s Este important de notat c datele sunt transmise de la sistemul de opa erare emittor spre cel receptor fragmente (pachete), c artirea datelor a n a mp fragmente este independent de modul care au fost furnizate prin apeluri n a n send() succesive i c, nal, fragmentele ce vor disponibile succesiv pentru s a n receptor sunt independente de fragmentele furnizate apelurile send(). Ca n urmare, este posibil ca emittorul s trimit, prin dou apeluri send() conseca a a a utive, irurile de octeti abc i def, iar receptorul, apelnd repetat recv() cu s s a len=3 i flags=0, s primeasc ab, cd i ef. Singurul lucru garantat este c s a a s a prin concatenarea tuturor fragmentelor trimise de emittor se obtine acelai a s ir de octeti ca i prin concatenarea tuturor fragmentelor primite de receptor. s s cazul In nchiderii conexiunii de ctre emittor, apelurile recv() efeca a tuate de procesul receptor vor citi mai ai datele rmase buer-e, iar nt a n
dup epuizarea acestora vor returna valoarea 0. Prin urmare, functia recv() a returneaz valoarea 0 dac i numai dac emittorul a a a s a a nchis conexiunea i s toate datele trimise nainte de nchiderea conexiunii au fost deja citite. Dealtfel, valoarea 0 returnat de recv() sau read() este semnalizarea uzual a a a terminrii datelor de citit i se utilizeaz i pentru a semnaliza sfritul unui a s as as ier sau s nchiderii captului de scriere a ntr-un pipe UNIX. 8.1.3.10. Functiile shutdown() i close() s
int shutdown(int sd, int how); int close(int sd);
Functia shutdown() nchide sensul de emisie, sensul de receptie sau ambele sensuri de comunicatie ale conexiunii identicate de indeticatorul de socket sd, conform valorii parametrului how: SHUT_WR, SHUT_RD sau respectiv SHUT_RDWR. Utilitatea principal a functiei este a nchiderea sensului de emisie pentru a semnaliza celuilalt capt terminarea datelor transmise (apelurile a recv() din procesul de la cellalt capt al conexiunii vor returna 0). Functia a a shutdown() poate apelat doar pe un socket conectat i nu distruge socketa s ul. Functia close() distruge socket-ul sd. Dac socket-ul era un socket a conectat acel moment, n nchide ambele sensuri de comunicatie. Dup apelul a close(), identicatorul de socket este eliberat i poate utilizat ulterior de s ctre sistemul de operare pentru a identica socket-uri sau alte obiecte create a ulterior. Apelul close() este necesar pentru a elibera resursele ocupate de socket. Poate efectuat oricnd asupra oricrui tip de socket. a a Terminarea unui proces, indiferent de modul de terminare, are ca efect i distrugerea tuturor socket-urilor existente acel moment, printr-un s n mecanism identic cu cte un apel close() pentru ecare socket. a 8.1.3.11. Functiile sendto() i recvfrom() s
ssize_t sendto(int sd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); ssize_t recvfrom(int sd, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
Functia sendto() trimite o datagram de pe un socket dgram. Parametrii a reprezint : a sd: socket-ul de pe care se transmite datagrama, adic a crui adres va a a a utilizat ca adres surs a datagramei; a a a
to: pointer spre structura ce contine adresa de retea a destinatarului; tolen reprezint lungimea structurii pointate de to; a buf: pointer spre o zon de memorie ce contine datele utile; len reprezint a a lungimea datelor utile. Datele utile sunt un ir arbitrar de octeti. s Functia returneaz numrul de octeti ai datagramei trimise (adic valoarea a a a lui len) caz de succes i 1 caz de eroare. Functia returneaz conn s n a trolul apelantului nainte ca pachetul s e livrat destinatarului i ca urmare a s eventuala pierdere a pachetului nu poate raportat apelantului. a Functia recvfrom() citete din buerele sistemului de operare local s urmtoarea datagram adresat socket-ului dat ca parametru. Dac nu exist a a a a a nici o datagram, functia ateapt sosirea urmtoarei datagrame, cu exceptia a s a a cazului care flags contine valoarea MSG_DONTWAIT, caz care recvfrom() n n returneaz imediat valoarea 1 i seteaz errno la valoarea EAGAIN. a s a Datagrama este citit zona de memorie pointat de parametrul a n a buf i a crei dimensiune este dat variabila len. Functia recvfrom() s a a n returneaz dimensiunea datagramei. Dac datagrama este mai mare dect a a a valoara parametrului len, nalul datagramei este pierdut; functia recvfrom() nu scrie niciodat dincolo de len octeti memoria procesului. a n Adresa emittorului datagramei este plasat de functia recvfrom() a a variabila pointat de from. Parametrul fromlen trebuie s pointeze la o n a a variabil de tip a ntreg a crui valoare, a nainte de apelul recvfrom(), trebuie s a e egal cu dimensiunea, octeti, a zonei de memorie alocate pentru adresa a n emittorului. Functia recvfrom() modic aceast variabil, punnd ea a a a a a n dimensiunea utilizat efectiv pentru scrierea adresei emittorului. a a
8.1.4. Exemple
8.1.4.1. Comunicare prin conexiune Dm mai jos textul surs ( C pentru Linux) pentru un client care se a a n conecteaz la un server TCP/IPv4 specicat prin numele mainii i numrul a s s a portului TCP (date ca argumente linia de comand), trimite un ir de n a i s caractere xat (abcd), dup care citete i aeaz tot ce trimite server-ul. a s s s a
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) {
Dm continuare textul surs pentru un server care ateapt conectarea a n a s a unui client pe portul specicat linia de comand, aeaz adresa de la care n a s a s-a conectat clientul (adresa IP i numrul de port), citete de pe conexiune s a s
i aeaz pe ecran tot ce transmite clientul (pn la s s a a a nchiderea sensului de conexiune de la client la server) i apoi trimite s napoi textul xyz.
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> int main(int argc, char* argv[]) { int sd, sd_c, port, r; struct sockaddr_in my_addr, cli_addr; socklen_t cli_addr_size; char buf[100]; if(argc!=2){ fprintf(stderr, "Utilizare: srv port\n"); return 1; } memset(&my_addr, 0, sizeof(my_addr)); my_addr.sin_family = AF_INET; if(1!=sscanf(argv[1], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } my_addr.sin_port=htons(port); my_addr.sin_addr.s_addr=htonl(INADDR_ANY); sd=socket(PF_INET, SOCK_STREAM, 0); if(-1==bind(sd, (struct sockaddr*)&my_addr, sizeof(my_addr)) ) { perror("bind()"); return 1; } listen(sd, 1); cli_addr_size=sizeof(cli_addr); sd_c = accept(sd, (struct sockaddr*)&cli_addr, &cli_addr_size); printf("client conectat de la %s:%d\n", inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port) ); close(sd); while((r=recv(sd_c, buf, 100, 0))>0){
8.1.4.2. Comunicare prin datagrame Mai jos este descris un client UDP/IPv4 care se conecteaz la un a server specicat prin numele mainii sau adresa IP i numrul de port. Clientul s s a trimite serverului o datagram de 4 octeti continnd textul abcd i ateapt a a s s a o datagram ca rspuns, a crei continut aeaz. a a a l s a
#include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <arpa/inet.h> int main(int argc, char* argv[]) { int port, sd, r; struct hostent* hh; struct sockaddr_in adr; socklen_t adr_size; char buf[100]; if(argc!=3){ fprintf(stderr, "Utilizare: cli adresa port\n"); return 1; } memset(&adr, 0, sizeof(adr)); adr.sin_family = AF_INET; if(1!=sscanf(argv[2], "%d", &port)){ fprintf(stderr, "numarul de port trebuie sa fie un numar\n"); return 1; } adr.sin_port = htons(port); hh=gethostbyname(argv[1]); if(hh==0 || hh->h_addrtype!=AF_INET || hh->h_length<=0){
continuare descriem un server UDP/IPv4. Acesta ateapt o dataIn s a gram de la un client, aeaz adresa de la care a fost trimis datagrama a s a a precum i continutul datagramei primite. Apoi trimite s napoi, la adresa de la care a sosit datagrama de la client, o datagram continnd irul de 3 octeti a a s xyz.
#include #include #include #include #include #include #include <sys/socket.h> <netinet/in.h> <arpa/inet.h> <netdb.h> <stdio.h> <unistd.h> <string.h>
i receptia prin s
Tip msg; ... recv(sd, &msg, sizeof(msg), MSG_WAITALL);
unde Tip este un tip de date oarecare declarat identic ambele programe n (emittor i receptor). a s Exist a cteva motive pentru care o astfel de abordare nu este, a ns a n general, acceptabil. Vom descrie continuare problemele legate de ecare a n tip de date parte, precum i cteva idei privind rezolvarea lor. n s a 8.2.1.1. Tipuri ntregi La transmiterea variabilelor ntregi apar dou probleme de portabila itate: dimensiunea unui ntreg nu este, general, standardizat exact ( n a n C/C++ un int poate avea 16, 32 sau 64 de biti); ordinea octetilor memorie (big endian sau little endian) depinde de n arhitectura calculatorului. Dac scriem un program pentru un anumit tip de calculatoare i a s pentru un anumit compilator, pentru care tim exact dimensiunea unui int i s s ordinea octetilor, putem transmite i receptiona date prin secvente de tipul: s
int a; ... send(sd, &a, sizeof(a), 0);
pentru emittor i a s
int a; ... recv(sd, &a, sizeof(a), MSG_WAITALL);
pentru receptor. Dac a emittorul este compilat pe o platform pe care a ns a a int are 16 biti i este reprezentat big endian, iar receptorul este compilat pe s o platform pe care int are 32 de biti i este little endian, cele dou programe a s a nu vor comunica corect. Pentru a putea scrie programe portabile, biblioteca C standard pe sisteme de tip UNIX contine, header-ul arpa/inet.h: n typedef-uri pentru tipuri ntregi de lungime standardizat (independent a a de compilator): uint16_t de 16 biti i uint32_t de 32 de biti; s functii de conversie ntre formatul locat (little endian sau big endian, dup a caz) i formatul big endian, utilizat cel mai adesea pentru datele transs mise Internet. Aceste functii sunt: htons() i htonl() (de la host n s to network, short, respectiv host to network, long), pentru conversia de la format local la format big endian (numit i format retea), i ntohs() s s i ntohl() pentru conversia sens invers. Variantele cu s (htons() i s n s ntohs()) convertesc ntregi de 16 biti (de tip uint16_t, iar cele cu l convertesc ntregi de 32 de biti (uint32_t). Implementarea acestor typedef-uri i functii depinde de platform (de arhis a tectur i de compilator). Utilizarea lor permite ca restul sursei programului as s nu depind de platform. a a a Transmiterea unui ntreg, ntr-un mod portabil, se face astfel:
uint32_t a; ... a=htonl(a); send(sd, &a, sizeof(a), 0);
Indiferent pe ce platform sunt compilate, fragmentele de mai sus emit, rea spectiv receptioneaz, un a ntreg reprezentat pe 32 de biti format big endian. n
8.2.1.2. Siruri de caractere i tablouri s Transmiterea sau memorarea unui tablou necesit transmiterea (rea spectiv memorarea), ntr-un fel sau altul, a numrului de elemente din tablou. a Dou metode sunt frecvent utilizate acest scop: transmiterea prealaa n n bil a numrului de elemente i transmiterea unui element cu valoare speciale a s (terminator) dup ultimul element. a Pe lng numrul de elemente efective ale tabloului este necesar a a a a cunoaterea numrului de elemente alocate. La reprezentarea memorie sau s a n iere pe disc, sunt utilizate frecvent tablouri de dimensiune xat la comn s a pilare. Avantajul dimensiunii xe este c variabilele situate dup tabloul rea a spectiv se pot plasa la adrese xe i pot accesate direct; dezavantajul este s un consum sporit de memorie i o limit mai mic a numrului de obiecte ce s a a a pot puse tablou. n La transmiterea tablourilor prin conexiuni retea, de regul numrul n a a de elemente transmise este egal cu numrul de elemente existente mod real, a n plus elementul terminator (dac este adoptat varianta cu terminator). Nu a a sunt utilizate tablouri de lungime x deoarece datele situate dup tablou a a oricum nu pot accesate direct. cazul reprezentrii cu numr de elemente, receptorul citete ai In a a s nt numrul de elemente, dup care aloc spatiu (sau veric dac spatiul aloa a a a a cat este sucient) i citete elementele. cazul reprezentrii cu terminator, s s In a receptorul citete pe rnd ecare elemen i-i veric valoarea; la alnirea s a s a nt terminatorului se oprete. s Inainte de-a citi ecare element, receptorul trebuie s verice dac mai are spatiu alocat pentru acesta, iar caz contrar e s rea a n a aloce spatiu pentru tablou i s copieze spatiul nou alocat elementele citite, s a n e s renunte i s semnaleze eroare. a s a Exemplul 8.2: Se cere transmiterea unui ir de caractere. Reprezentarea s irului pe conexiune este: un s ntreg pe 16 biti big endian reprezentnd lungimea a irului, urmat de irul propriu-zis (reprezentare diferit deci de reprezentarea s s a uzual memorie, unde irul se termin cu un caracter nul). Descriem a n s a n continuare emittorul: a
char* s; uint16_t l; ... l=htons(strlen(s)); send(sd, &l, 2, 0); send(sd, s, strlen(s), 0);
i receptorul: s
De remarcat la receptor necesitatea de-a reface terminatorul nul, netransmis prin retea. Exemplul 8.3: Se cere transmiterea unui ir de caractere. Reprezentarea s pe conexiune va ca un ir de caractere urmat de un caracter nul (adic s a reprezentare identic celei din memorie, dar pe lungime variabil, egal cu a a a minimul necesar). Emittorul este: a
char* s; ... send(sd, s, strlen(s)+1, 0);
Receptorul:
char s[500]; int dim_alloc=500, pos, ret; while(pos<dim_alloc-1 && 1==(ret=recv(sd, s+pos, 1, 0)) && s[pos++]!=0) {} if(ret==1 && s[pos-1]==0){ // sir citit cu succes } else { // tratare eroare }
8.2.1.3. Variabile compuse (struct-uri) La prima vedere, variabilele compuse (struct-urile) sunt reprezentate la fel i memorie i pe conexiune se reprezint cmpurile unul dup s n s a a a altul i ca urmare transmiterea lor nu ridic probleme deosebite. s a Din pcate a, reprezentarea unei structuri memorie depinde a ns n de platform (arhitectura calculatorului i compilator), datorit problemelor a s a
privind alinierea ntregilor. Din considerente legate de arhitectura magistralei de date a calculatorului (detalii ce ies din cadrul cursului de fat), accesarea de a ctre procesor a unei variabile de tip a ntreg sau real a crui adres memorie a a n nu este multiplu de un anumit numr de octeti este pentru unele procesoare a imposibil iar pentru celelalte inecient. Numrul ce trebuie s divid adresa a a a a a se numete aliniere i este de obicei minimul dintre dimensiunea variabilei i s s s limea magistralei. Astfel, dac magistrala de date este de 4 octeti, at a ntregii de 2 octati trebuie s e plasati la adrese pare, iar a ntregii de 4 sau 8 octeti trebuie s e la adrese multiplu de 4; nu exist restrictii cu privire la caractere a a ( ntregi pe 1 octet). Compilatorul, mpreun cu functiile de alocare dinamic a a a memoriei, asigur alinierea recurgnd la urmtoarele metode: a a a adaug octeti nefolositi a ntre variabile, adaug octeti nefolositi a ntre cmpurile unei structuri, a adaug octeti nefolositi la nalul unei structuri ce face parte dintr-un a tablou, aloc variabilele de tip structur la adrese multiplu de o limea magisa a at tralei. Ca urmare, reprezentarea memorie a unei strcturi depinde de platn form i, consecint, un fragment de cod de forma: a s n a
struct Msg { char c; uint32_t i; }; Msg m; ... m.i=htonl(m.i); send(sd, &m, sizeof(m), 0);
este neportabil. functie de limea magistralei, de faptul c alinierea inIn at a corect duce la imposibilitatea accesrii variabilei sau doar la inecient i, a a a s n acest din urm caz, de optiunile de compilare, dimensiunea structurii Msg de a mai sus poate 5, 6 sau 8 octeti, ntre cele dou cmpuri ind respectiv 0, 1 a a sau 3 octeti neutilizati. Rezolvarea problemei de portabilitate se face transmitnd separat a ecare cmp: a
struct Msg { char c; uint32_t i;
8.2.1.4. Pointeri Deoarece un pointer este o adres cadrul unui proces, transmiterea a n unui pointer ctre un alt proces este complet inutil. a a
i s
FILE* f; char s[512]; int i,r; ... while( (r=fgetc(f))!=EOF && (s[i++]=r)!=0) {}
Ambele fragmente de cod citesc de pe un socket stream un ir de octeti ters minat cu un caracter nul. Primul fragment de cod apeleaz recv() o dat a a pentru ecare caracter al irului. Al doilea fragment apeleaz fgetc() o dat s a a pentru ecare caracter al irului. La o mic parte dintre aceste apeluri, functia s a fgetc() va apela spate functia sistem read() pentru a citi efectiv datele n de pe conexiune; la restul apelurilor, fgetc() returneaz apelantului cte un a a caracter aat deja zona tampon. Ca rezultat global, al doilea fragment de n cod se va executa de cteva zeci de ori mai repede dect primul. a a Testarea nchiderii conexiunii i terminrii datelor se poate face apes a lnd functia foef(). De notat c aceast functie poate s returneze false a a a a chiar dac s-a ajuns la nalul datelor; rezultatul true este garantat doar dup a a o tentativ nereuit de-a citi dincolo de nalul datelor transmise. a s a Pentru scriere, functiile de bibliotec corespunztoare sunt fwrite(), a a fprintf(), fputs() i fputc(). Aceste functii scriu datele zona tampon s n din structura FILE. Transmiterea efectiv pe conexiune (sau scrierea ier) a n s se face automat la umplerea zonei tampon. Dac este necesar s ne asigurm a a a c datele au fost transmise efectiv (sau scrise ier), functia fflush() a n s efectueaz acest lucru. Functia fclose() de asemenea trimite sau scrie ula timele date rmase zona tampon. a n Asocierea unei zone tampon unei conexiuni deja deschise se face apelnd functia fdopen(). Functia fdopen() primete doi parametri. Primul a s parametru este identicatorul de socket cruia trebuie s-i asocieze zona tama a pon (identicatorul returnat de functia socket() sau accept()). Al doilea parametru specic functiei fdopen() dac trebuie s asocieze zona tampon a a a pentru citire sau pentru scriere; este de tip ir de caractere i poate avea vals s oarea "r" pentru citire sau "w" pentru scriere. Pentru un socket stream, cele dou sensuri functionnd complet independent, aceluiai socket i se pot asocia a a s dou zone tampon (dou structuri FILE), cte una pentru ecare sens. a a a Functia fclose() scrie informatiile rmase zona tampon (dac a n a zona tampon a fost creat pentru sensul de scriere), elibereaz memoria aloa a cat zonei tampon i a s nchide conexiunea.
acest fel, serverul nu este pus ateptare dac un client nu i-a trimis In n s a nimic. Dezavantajul solutiei este acela c, dac o perioad de timp a a a nici un client nu trimite nimic, atunci bucla se execut mod repetat, a n consumnd inutil timp de procesor. a Pentru evitarea inconvenientului solutiei anterioare, sistemele de operare de tip UNIX ofer o functie sistem, numit select(), care primete o a a s list de identicatori de socket i, optional, o durat, i pune procesul a s a s n ateptare pn cnd e exist date disponibile pe vreunul din socket-ii s a a a a dati, e expir durata de timp specicat. a a O abordare complet diferit este aceea de-a crea mai multe procese sau, a sistemele de operare moderne, mai multe re de executie (thread-uri) n cardul procesului server ecare proces sau r de executie urmrind n a un singur client. acest caz, procesul sau rul de executie poate executa In recv() blocant asupra socket-ului corespunztor clientului su. lipsa a a In
activitii clientilor, ecare proces sau r de executie al serverului este at blocat apelul recv() asupra socket-ului corespunztor. momentul n a In care un client trimite date, nucleul sistemului de operare trezete n s procesul sau rul ce executa recv() pe socket-ul corespunztor; procesul a sau rul execut prelucrrile necesare dup care probabil execut un nou a a a a recv() blocant. Cazul unui server cu mai multi clienti nu este singura situatie care n este nevoie de a urmri simultan evenimente pe mai multe canale. Alte situatii a sunt: un client care trebuie s urmreasc simultan actiunile utilizatorului i a a a s mesajele sosite de la server; un server care poate trimite date cu debit mai mare dect capacitatea a retelei sau capacitatea de prelucrare a clientului; acest caz serverul n are de urmrit simultan, pe de o parte noi cereri ale clientilor, iar pe de a alt parte posibilitatea de-a trimite noi date spre clienti urma faptului a n c vechile date au fost prelucrate de acetia. a s un server care trebuie s preia mesaje de la clientii conectati i, acelai a s n s timp, s poat accepta clienti noi. a a Un aspect important ce trebuie urmrit proiectarea unui server a n concurent este servirea echitabil a clientilor, independent de comportamentul a acestora. Dac un client trimite cereri mai repede dect este capabil serverul a a s-l serveasc, serverul trebuie s execute o parte din cereri, apoi s serveasc a a a a a cereri ale celorlalti clienti, apoi s revin la primul i s mai proceseze o parte a a s a din cereri i aa mai departe. Nu este permis ca un client care inund serverul s s a cu cereri s acapareze a ntreaga putere de calcul a serverului i ceilalti clienti s s atepte la innit. a s
Capitolul 9
Vom studia continuare standardul utilizat de cele mai multe retele n locale. IEEE 802 denete de fapt o familie de tipuri de retele locale, dintre s care cele mai des alnite sunt: nt retele Ethernet (de 10, 100 sau 1000 Mbit/s), construite conform stan dardului IEEE 802.3; retele numite Wireless Ethernet, conform standardului IEEE 802.11.
conectate, paralel, interfetele de retea ale calculatoarelor (g. 9.1). n In acest sistem, semnalul emis de orice interfat de retea este receptionat a de toate celelalte interfete de retea conectate la acel cablu.
statie statie statie statie
terminator
cablu magistral a
terminator
Comunicatia se face prin pachete de dimensiune variabil. a Dou interfete care emit simultan si bruiaz reciproc semnalele a a emise; este necesar deci un mecanism de control al accesului la mediu (vezi 4.2). IEEE 802.3 alege solutia cu detectarea coliziunilor i re s transmiterea pachetelor distruse de coliziuni. Deoarece ecare interfat de retea ,,aude toate pachetele emise a retea, este prevzut un mecanism prin care interfata s identice i n a a s s livreze sistemului de operare numai pachetele ce sunt destinate. a i Anume, ecare interfat de retea are o adres unic, numit adres a a a a a zic sau adres MAC i ecare pachet poart adresa sursei i adresa a a s a s destinatiei. Repetorul (engl. repeater ) este un dispozitiv care este conectat la mai multe cabluri de retea i copiaz pachetele de date de pe ecare cablu s a pe celelalte. Repetorul este conectat la ecare cablu de retea ntocmai ca o interfat de retea a unui calculator. Interfata repetorului ctre cablul a a de retea se numete port. s Oridecteori repetorul receptioneaz un pachet printr-unul dintre a a porturile sale (printr-unul din cablurile de retea conectate la repetor), l retransmite (repet) pe toate celelalte cabluri de retea conectate (toate a cu exceptia celui prin care a intrat pachetul). Retransmiterea se face cu arziere de ordinul duratei ctorva biti, orice caz mai putin dect nt a n a durata unui pachet. Dac repetorul receptioneaz simultan pachete prin a a dou sau mai multe porturi, consider c are loc o coliziune i semnala a a s izeaz acest lucru emitnd, prin toate porturile, un semnal special de a a anuntare a coliziunii. Acest semnal de coliziune se propag toat a n a reteaua.
repetor
repetor
Figura 9.2: O retea construit din mai multe cabluri magistral interconectate prin a a repetoare.
Repetoarele permit construirea unei retele ntinse pe o distant a mai mare dect lungimea maxim a unui singur cablu (lungime limitat a a a de atenuarea semnalului pe cablu). O retea construit cu repetoare este a desenat gura 9.2. a n Odat cu ieftinirea repetoarelor, a devenit curent utilizarea cte a a a acest unui cablu pentru conectarea ecrui calculator la un repetor. In a fel, un cablu de retea va avea legate la el doar dou echipamente: e a o interfat de retea i un repetor, e dou repetoare, e dou interfete a s a a de retea ( acest din urm caz rezult o retea format doar din dou n a a a a calculatoare). De regul, cablul de legtur folosit aceste cazuri este o a a a n legtur duplex (vezi mai jos) i poate conecta doar dou echipamente. a a s a Repetoarele utilizate aceast situatie se mai numesc hub-uri (engl. n a hub = butuc de roat). a Comutatoarele. Un comutator (eng. switch) este un dispozitiv asema ntor cu un repetor, dar cu urmtoarele modicri: a a a - este capabil s memoreze cte un pachet a a ntreg pentru ecare port; - dac primete simultan dou sau mai multe pachete, le memoreaz a s a a i le retransmite pe rnd; s a - dac este posibil, loc s retransmit un pachet prin toate porturile a n a a comutatorului, retrimite doar pe calea ctre interfata de retea l a
creia este destinat pachetul (a se vedea 9.1.5 pentru detalii). a i Legturile duplex. Cablurile de legtur a a a ntre dou echipamente pot a fcute cu ci independente pentru cele dou sensuri. Dac i echipaa a a as mentele conectate sunt capabile s emit i s receptioneze simultan, este a as a posibil realizarea unei comunicatii duplex a ntre cele dou echipamente. a Exist cadrul IEEE 802.3 mai multe sub-standarde legate de nivelul a n zic, privitoare la cablurile de legtur a a ntre echipamente. Cu exceptia debitu lui de comunicatie i a existentei sau absentei posibilitii comunicatiei duplex, s at tipul cablului de legtur ales nu afecteaz restul retelei. a a a Pentru echipamente capabile s functioneze dup mai multe stana a darde privind nivelul zic (debite diferite i mod semi-duplex sau duplex), s exist un protocol de negociere al modului de transmisie la nivel zic folosit; a acesta va studiat 9.1.1 cu ocazia prezentrii standardului 10 Base T. n a
pentru reducerea interferentelor cu cmpurile electromagnetice din jur. Car a acteristicile electrice ale cablurilor, specicate prin standard, sunt general n ndeplinite de ctre tronsoanele de pn la 100 m construite din cablurile a a a folosite mod curent pentru reteaua telefonic i clasicate, sistemul amern as n ican de telefonie, UTP Cat 3 (UTP de la Unshielded Twisted Pairs perechi torsadate neecranate, iar Cat 3, de la Category 3 ). Dm continuare, cu titlu informativ, cteva caracteristici: a n a impedanta caracteristic: 100 ; a atenuare: maxim 11,5 dB pentru tot tronsonul de cablu (de fapt acesta este parametrul care limiteaz lungimea unui tronson de cablu; dac a a folosim un cablu cu atenuarea pe 200 m mai mic de 11,5 dB, putem a cabla un tronson de 200 m cu astfel de cablu fr probleme); aa timpul de propagare al semnalului: maxim 1000 ns. Standardul cere, n plus, ca viteza de propagare s e cel putin 0,585 c (adic cel putin de a a 0,585 de ori viteza luminii vid). n Conectarea cablului la interfata de retea sau la repetoare se real izeaz prin intermediul unui conector cu 8 pini, asemntor cu cel de telefon, a a a standardizat sub numele RJ45. Utilizarea pinilor este urmtoarea: emisia a ntre pinii 1 i 2 i receptia s s ntre pinii 3 i 6. Pinii 4, 5, 7 i 8 sunt neutilizati. s s Conductoarele legate la emittor la un capt trebuie legate la receptor a a la cellalt capt (g. 9.3). Acest lucru se poate realiza dou moduri: a a n a 1. Legarea cablului la conectoare se face ,, X: pinul 1 de pe un conector n se leag la pinul 3 de pe cellalt conector, 2 cu 6, 3 cu 1 i respectiv 6 a a s cu 2, conform g. 9.3(a)). Un astfel de cablu se numete cablu inversor s sau cablu X. 2. Cablul este ,,unu-la-unu(adic pinul 1 de pe un conector este legat cu a pinul 1 de pe cellalt conector, 2 cu 2, 3 cu 3 i 6 cu 6), iar inversarea a s se face dispozitivul de la un capt al cablului, prin legarea inversat n a a a conectorului la circuite: pinii 1 i 2 la receptor i 3 i 6 la emittor, ca s s s a g. 9.3(b). n Standardul recomand inversarea legturilor conectoarele repetoarelor a a n i cere marcarea conectoarelor cu inversare printr-un simbol ,,X. s Conectarea a dou echipamente prevzute cu inversare conector se face cu a a n ajutorul unui cablu inversor, ca gura 9.3(c). n Exist i dispozitive care detecteaz automat pinii folositi la emisie as a i receptie. Aceste dispozitive sunt desemnate auto MDI/MDIX. Dac la unul s a
emittor a
receptor
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
emittor a
receptor
receptor
1 2 3 4 5 6 7 8
emittor a
receptor
conector normal
conector cu inversare
emittor a
1 2 3 4 5 6 7 8
receptor
emittor a
conector cu inversare
conector cu inversare
Figura 9.3: Conectarea a dou echipamente 10 Base T. Sunt date i culorile standard a s pentru izolatiile conductoarelor din cablu.
dintre capete se gsete un astfel de dispozitiv, se poate utiliza att cablu a s a unu-la-unu ct i cablu inversor, fr nici un fel de restrictii. Mecanismul de a s aa detectare a pinilor utilizati se bazeaz pe pulsurile pentru vericarea mediului, a descrise mai jos. Transmiterea bitilor se face codicare Manchester. Cele dou n a nivele de tensiune, la emittor, sunt unul a ntre 2,2 V i 2,8 V i cellalt s s a ntre 2,2 V i 2,8 V. s Pe lng transmiterea informatiei utile, standardul prevede emiterea a a periodic, de ctre ecare echipament, a unui puls de testare a cablului. O a a interfat de retea sau un repetor care nu primete periodic pulsuri de test a s de la cellalt capt va ,,deduce c legtura nu este valid. Starea legturii a a a a a a este semnalat printr-un led; de asemenea, plcile de retea semnaleaz starea a a a legturii printr-un bit de control ce poate citit de driver-ul plcii de retea. a a O adugire ulterioar la standard prevede ca secventa de pulsuri a a n de testare a cablului s se codice disponibilitatea echipamentului ce le emite a de a functiona regim duplex sau la o vitez mai mare de 10 Mbit/s (adic n a a conform unuia din standardele descrise mai jos). Un echipament capabil de comunicatie duplex i care este informat c echipamentul de la cellalt capt s a a a este capabil de asemenea de comunicatie duplex va intra automat mod n duplex. Un echipament vechi, datnd dinaintea acestei adugiri la standard, a a va functiona numai regim semiduplex. Pstrarea compatibilitii este asig n a at urat de faptul c echipamentul vechi va elege pulsurile doar ca testarea a a nt liniei, iar pulsurile generate de el este putin probabil s coincid ampltor a a nt a cu pulsurile de negociere a modului de transmisie. 100 Base Tx. Este foarte asemntor cu 10 Base T, dar obtine o vitez de a a a transmisie de 100 Mbit/s. Cablul const tot din dou perechi de conductoare torsadate, a cu a a ns proprieti mai bune de transmitere a semnalului (obtine aceleai caracteristici at s de atenuare pn la frecvente de 10 ori mai mari). Cablurile utilizate sunt cele a a desemnate UTP Cat 5 . Lungimea maxim a unui tronson este de 100 m. a Conectoarele i utilizarea pinilor sunt identice cu 10 Base T. Din acest s motiv un cablu pentru 100 Base Tx poate ntotdeauna utilizat la o legtur a a 10 Base T. general, echipamentele capabile s opereze conform standardului In a 100 Base Tx sunt capabile s lucreze i cu 10 Base T. Stabilirea vitezei se a s face printr-un mecanism similar cu cel utilizat la 10 Base T pentru negocierea modului semiduplex sau duplex. Trebuie a spus c mecanismul de negociere ns a
nu testeaz i calitatea cablului; din acest motiv, dac legm o plac de retea de as a a a 100 Mbit/s la un hub sau switch de 100 Mbit/s printr-un cablu ce nu permite 100 Mbit/s (de exemplu Cat 3 loc de Cat 5 ), este necesar s congurm n a a manual viteza de 10 Mbit/s. 100 Base T4. Transmite 100 Mbit/s semi-duplex, utiliznd cabluri Cat 3. a Sunt necesare 4 perechi de conductoare (8 conductoare total). n Cte o pereche de conductoare este rezervat pentru ecare sens. a a Celelalte dou perechi se utilizeaz sensul care are loc efectiv transmiterea a a n n informatiei (adic, a ntotdeauna trei perechi sunt utilizate pentru transmiterea informatiei i a patra este temporar nefolosit). s a Codicarea informatiei este mai special, utiliznd 3 nivele de sem a a nalizare loc de obinuitele 2 i transmitnd simultan pe trei canale, pentru n s s a a obtine un semnal ce se ncadreaz banda de trecere a unui cablu Cat 3. a n
emittor a receptor bidirectional 1 bidirectional 2
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
Figura 9.4: Utilizarea pinilor i conectarea s ntre echipamente la 100 Base T4.
Conectoarele sunt tot RJ45, cu urmtoarea utilizare a pinilor: emisie: a pinii 1 i 2; receptie: 3 i 6, bidirectional 1: pinii 4 i 5; bidirectional 2: pinii 7 s s s i 8. Ca i la celelalte cabluri, descrise mai sus, este necesar o s s a ncruciare, res alizat e cablu, e conectorul unuia dintre echipamente. Standardul cere a n n inversarea att a emisiei cu receptia ct i a celor dou legturi bidirectionale a a s a a (g. 9.4). Intruct majoritatea instalatiilor sunt disponibile cabluri Cat 5, a n utilizarea standardului 100 Base T4 este extrem de rar. a 100 Base T2. Transmite 100 Mbit/s duplex, utiliznd dou perechi Cat 3. a a Ca i la 100 Base T4, se utilizeaz o codicare complicat, a obtine perfors a a ns mantele lui 100 Base Tx pe cabluri identice cu cele folosite de 10 Base T. Utilizarea lui este rar, datorit rspndirii cablului Cat 5. a a a a 1000 Base T. Transmite 1 Gbit/s duplex, utiliznd 4 perechi Cat 5. a Legtura const patru perechi torsadate (8 conductoare) conforme a a n Cat 5, de lungime maxim 100 m.
Se utilizeaz o schem de codicare mai complicat, ce utilizeaz a a a a ecare pereche de conductoare regim duplex. n Conectoarele folosite sunt tot RJ45. Din ratiuni de compatibilitate, legturile trebuie s realizeze aceeai inversare a unor perechi de re ca i la a a s s 100 Base T4 (g. 9.4). Majoritatea plcilor de retea i celorlalte echipamente pentru retele a s IEEE 802.3, produse recent i desemnate Ethernet gigabit, implementeaz s a standardele 10 Base T, 100 Base Tx i 1000 Base T. s 1000 Base Cx. Transmite 1 Gbit/s duplex utiliznd 2 perechi de conductoare a de constructie specal. a Se utilizeaz cte o pereche pentru ecare sens. a a Standardul permite dou tipuri de conectoare: conectoare trapea zoidale cu 9 pini (identice cu cele utilizate pentru porturile seriale) sau nite s conectoare cu 8 pini asemntoare, dar incompatibile, cu RJ45. a a Datorit incompatibilitii cu 10 Base T i 100 Base Tx, putine a at s echipamente utilizeaz 1000 Base Cx. a Realizarea practic a cablajelor a Cablurile UTP Cat 5 folosite au de obicei 4 perechi de re torsadate (8 re total), invelite toate n ntr-o teac protectoare. Doar 2 perechi (4 re) a sunt utilizate efectiv de legturile 10 Base T i 100 Base Tx. a s cadrul ecrei perechi, unul din re are izolatia In a ntr-o culoare plin a iar cellalt este combinat, alb alternnd cu culoarea rului pereche. Culorile a a folosite pentru perechi sunt portocaliu, verde, albastru i maro. Mentionm c s a a se comercializeaz, din pcate, i cabluri care rele ce ar trebui s e colorate a a s n a cu alb plus o culoare sunt doar albe i, ca urmare, pentru a le identica este s necesar s se desfac teaca protectoare pe o lungime sucient de mare pentru a a a vedea cum sunt torsadate rele (care cu care este mperecheat prin rsucire). a Schema de conectare standardizat este dat tabela 9.1. Varianta a a n ,,normal este utilizat la cablurile unu-la unu, precum i la unul din capetele a s cablurilor inversoare. Varianta ,,inversat este utilizat la cellalt capt al a a a cablurilor inversoare. Varianta ,,semi-inversat a fost utilizat frecvent pena tru al doilea capt al cablurilor inversoare, dar nu functioneaz dect pentru a a a retele 10 Base T i 100 Base Tx, care nu utilizeaz deloc perechile albastru s a i maro. Pentru 1000 Base T, varianta ,,semi-inversat nu este prevzut de s a a standard; ca urmare unele echipamente functioneaz cu astfel de cabluri, iar a alte echipamente nu functioneaz. a
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 atentia c este foarte important s se respecte schema de a a conectare din urmtoarele motive: a Rsucirea relor afecteaz transmiterea semnalului i sensibilitatea la a a s paraziti. Nerespectarea perechilor, adic utilizarea pentru un circuit a a dou re care nu sunt a mperecheate prin rsucire, duce la pierderi a aleatoare de pachete, cu att mai multe cu ct cablul este mai lung. a a Este necesar un efort inutil de mare pentru ataarea corect a conectorului s a la al doilea capt, dac ataarea primului s-a fcut nestandard. Amatorii a a s a s se gndeasc la cazul cnd captul cablat nestandard se gsete a a a a a a s ntrun dulap nghesuit, iar captul unde trebuie ataat cellalt conector este a s a cteva etaje mai sus sau mai jos. . . a Toate sistemele IEEE 802.3 ce utilizeaz perechi torsadate sunt proieca tate pentru legturi interiorul unei singure cldiri. La cablurile trase prin a n a exterior, descrcrile electrice din atmosfer risc s induc cablul de retea a a a a a a n tensiuni sucient de mari pentru a distruge plcile de retea sau hub-urile sau a switch-urile ataate. Pentru legturi exterioare se recomand utilizarea brelor s a a optice.
multe plci de retea i care distribuie semnalul transmis de o plac spre toate a s a celelalte. Astfel, o stea pasiv se comport a a ntructva similar cu un cablu a magistral. a O legtur punct la punct const din dou bre optice, cte una a a a a a pentru ecare sens; astfel, ecare legtur este capabile de transmisie duplex. a a 10 Base F: standardizeaz transmisia prin br optic la un debit de transa a a misie de 10 Mbit/s. Rata erorilor, obtinut cu o astfel de legtur, este jur a a a n 9 (1 bit eronat la 109 biti transmii). de 10 s Grupeaz trei variante, cu diferente foarte mici a ntre ele ( general, n echipamentele corespunztoare pot interconectate fr probleme): a aa 10 Base FP, destinat utilizrii conguratii cu stea pasiv, ca atare a n a functionnd mod semi-duplex. a n 10 Base FB, destinat utilizrii conjunctie cu multe repetoare cascad a n n a i functionnd mod semi-duplex. s a n 10 Base FL, functionnd mod duplex. a n Se utilizeaz o br optic cu diametrul miezului de 62,5 m (i dia a a s ametrul exterior, al nveliului, de 125 m), avnd o vitez de propagare de s a a minim 0,67c, o atenuare de 3,75 dB/km (dac atenuarea brei utilizate este a mai mare, lungimea maxim a unei legturi trebuie micorat corespunztor) a a s a a i o band de 160 MHzkm. Lungimea unui tronson de cablu este maxim 2 km s a (pentru 10 Base FP, lungimea ecrei conexiuni dintre placa de retea i steaua a s pasiv este de cel mult 1 km). a Conectarea cablului la echipamente se face cu ajutorul a dou coneca toare (cte unul pentru ecare br; reamintim c se utilizeaz o br pentru a a a a a ecare sens). Conectoarele sunt descrise de standardul IEC 60874-10:1992 sub numele BFOC/2.5. Atenuarea introdus de conector nu trebuie s depeasc a a as a 1 dB, iar puterea undei reectate nu trebuie s depeasc 25 dB din puterea a as a undei incidente. Pentru semnalizare se folosesc unde infraroii cu lungimea de und s a cuprins a ntre 800 nm i 910 nm. Nivelul semnalului emittorului este s a ntre 15 dBm i 11 dBm pentru 10 Base FP i s s ntre 12 dBm i 11 dBm pentru s 10 Base FB i 10 Base FL. Nivelul acceptabil pentru semnalul receptionat este s ntre 41 dBm i 27 dBm pentru 10 Base FP i s s ntre 32,5 dBm i 12 dBm s pentru 10 Base FB i 10 Base FL. s Semnalizarea utilizeaz codicarea Manchester, a ntocmai ca cazul n lui 10 Base T.
Spre deosebire de 10 Base T, nu se utilizeaz pulsuri de testare a a legturii care s permit negocierea modului semiduplex sau duplex sau a a a a vitezei de transmisie; ca urmare, aceti parametri trebuie congurati manual. s 100 Base FX: ofer o vitez de transfer de 100 Mbit/s. Pe lng viteza mai a a a a mare, 100 Base FX aduce cteva modicri fat de 10 Base F, i anume utia a a s lizarea unor conectoare duble (conectnd ambele bre simultan) i un mecana s ism de negociere a vitezei de transfer. 1000 Base SX i 1000 Base LX. Aceste standarde ofer vitez de transfer s a a de 1 Gbit/s. Varianta 1000 Base SX transmite pe lungimea de und de 850 nm, a prin bre cu diametrul miezului de 62,5 m sau de 50 m. Lungimea maxim a de cablu ntre dou echipamente este cuprins a a ntre 220 m pentru br cu a dispersie intermodal de 160 MHzkm i 550 m pentru br cu dispersie intera s a modal de 500 MHzkm. a Varianta 1000 Base LX transmite pe lungimea de und de 1310 nm, a prin bre multimod de 62,5 m sau de 50 m sau monomod de 10 m. Lungimea maxim de cablu a ntre dou echipamente este de 550 m pentru bra multimod a i 5 km pentru bra monomod. s
Semnalul este produs codicare Manchester, cu durata unui bit de n 100 ns; de aici viteza brut de transmisie de 10 Mbit/s. a Ca modicare fat de codicarea Manchester clasic, peste semnal a a este suprapus o component continu, scopul simplicrii detectrii cola a a n a a iziunilor. Pe cablul repaus, tensiunea n ntre conductoare este 0 V. Dac o a interfat emite date, apare o tensiune continu a a ntre conductorul central i s tres. Dac dou sau mai multe interfete emit simultan, tensiunea continu a a a a crete peste un anumit prag la care se declar coliziune. La detectarea unei s a coliziuni, interfetele de retea conectate la cablu opresc transmisia, conform metodei CSMA/CD ( 4.2.2). Exist dou sub-standarde privitoare la caracteristicile mecanice i a a s electrice ale cablului de conectare: 10 Base 5 i 10 Base 2. s 10 Base 5, numit i cablu galben sau cablu gros, prevede utilizarea unui cablu s coaxial avnd aproximativ 10 mm grosime total, preferabil colorat galben a a n pentru o mai bun vizibilitate. Lungimea total maxim a unui cablu este de a a a 500 m. Standardul este gndit pentru cablare prin exteriorul cldirilor. a a Denumirea sub-standardului vine de la viteza (10Mbit/s), codicarea ( banda de baz Base) i lungimea maxim a cablului, sute de metri. n a s a n Cu titlu informativ, dm cteva detalii, specicate prin standard, cu a a privire la caracteristicile cablului: impedanta caracteristic: 50 2 ; a viteza de propagare a semnalului: minim 0,77 c; atenuarea: maxim 17 dB/km (8,5 dB pe tot tronsonul de cablu) la 10 MHz i maxim 12 dB/km (6 dB pe tot cablul) la 5 MHz; s se accept maxim 100 interfete de retea pe un tronson de cablu. a Cablul trebuie conectat la pmnt (la instalatia de pmntare a a a a a cldirii) a ntr-un singur punct. Se specic explicit prin standard c att cablul a a a ct i elementele legate de el trebuie s e izolate fat de pmnt sau fat de a s a a a a a alte conductoare (cu exceptia sus-mentionatei unice legturi de pmntare). a a a De asemenea, interfetele de retea trebuie s realizeze o izolare electric a a ntre cablul de retea i circuitele calculatorului care s reziste la o tensiune de 1500 V. s a La efectuarea lucrrilor asupra retelei, persoanele care lucreaz trebuie s aib a a a a grij s nu ating simultan cablul de retea i un conductor legat la pmnt, iar a a a s a a cazul care conecteaz sau deconecteaz dou tronsoane de retea s aib n n a a a a a grij s nu a a nchid contactul electric a ntre cele dou tronsoane prin corpul lor. a Toate aceste msuri sunt luate deoarece este posibil s apar tensiuni electrice a a a ntre legturile de pmntarea ale instalatiilor electrice cldiri diferite. De a a a n a
asemenea, este posibil ca ntr-un cablu, special dac este dus prin exterior, n a s se induc, inductiv sau capacitiv, tensiuni parazite importante din cauza a a retelelor de alimentare electric din apropiere sau din cauza fulgerelor. a Circuitele electronice ale interfetelor de retea sunt artite dou mp n a module: un modul, continnd emittorul i receptorul propriu-zise, se ataeaz a a s s a direct pe cablu; al doilea modul cuprinde logic de comand i este construit a as sub forma unei plci ce se introduce calculator. a n Ataarea modulului de semnal la cablul de retea se poate realiza s n dou moduri: a prin conectarea celor dou segmente de cablu de-o parte i de alta prin a s conectoare standardizate (conectoare coaxiale, numite conectoare N, cu prindere cu let); prin realizara unei prize vampir : se d o gaur cablu fr a-i intrerupe a a n aa conductoarele, prin gaur se introduce o clem ce va face contact cu rul a a central, iar legtura cu tresa se face printr-o alt clem ce se strnge pe a a a a o zon de pe care s-a a ndeprtat mantaua exterioar a cablului. a a Legtura dintre modulul emittor-receptor (engl. transceiver ) i moda a s ulul de logic al plcii de retea sau al repetorului este de asemenea standarda a izat, sub numele de interfat AUI . Cablul de legtur dintre cele dou module a a a a a const din 5 perechi de conductoare torsadate i ecranate individual, utilizeaz a s a conectoare trapezoidale cu 15 pini i poate avea lungime maxim de aproxis a mativ 50m. 10 Base 2 se mai numete cablu subtire, cablu negru sau cablu BNC (oarecum s incorect, BNC ind numele conectoarelor prevzute a utilizate pentru acest a tip de legtur). Este foarte asemntor cu 10 Base 5, a folosete un cablu a a a a ns s mai potrivit pentru cablaje interior. Lungimea maxim a unui tronson este n a de 185 m. Cablul este tot coaxial, dar este mai subtire ( 5 mm) pentru a putea ndoit mai uor (standardul cere s poat s a a ndoit la raza de 5 cm), schimb n este admis s aib atenuare mai mare i, ca urmare, tronsoanele sunt limitate a a s la lungime mai mic. a Dm din nou cteva caracteristici ale cablului: a a viteza de propagare: 0,65 c; atenuarea, pentru 185 m: maxim 8,5 dB la 10 MHz i maxim 6 dB la s 5 MHz; maxim 30 interfete ataate pe un tronson. s
Conectarea interfetelor de retea i a terminatoarelor se face prin s conectori standardizati sub numele BNC (conectorii BNC sunt standardizati pentru aparatur electronic general, nu se folosesc doar la retele Ethernet), a a n astfel (g. 9.5): Fiecare bucat de cablu trebuie s aib montate pe capete a a a conectoare BNC mam. Exist elemente numite jonctiuni T care contin o a a ramicatie i sunt prevzute cu un conector BNC mam (pe mijlocul T-ului) i s a a s dou conectoare BNC tat. La conectoarele tat se ataeaz bucile de cablu a a a s a at de-o parte i de alta, iar la conectorul mam al T-ului se ataeaz conectorul s a s a tat de pe placa de retea. Terminatoarele sunt prevzute cu conector BNC a a mam i se ataeaz pe T-urile de la plcile de retea extreme. as s a a
conectori BNC
Pana cea mai frecvent ce apare la o retea, afectnd conexiunile dia a recte, este ntreruperea unui r (de obicei o pan de contact a ntre srm i a a s conector sau ntre contactele unui conector). O ntrerupere a cablului magistral duce de regul la oprirea functionrii a a a ntregii retele, nu doar ,,ruperea dou a retelei. Aceasta se ampl deoarece captul de cablu unde s-a n a nt a a produs ntreruperea reect semnalul (este ca un cablu fr terminator) i, ca a aa s urmare, orice pachet emis pe acel cablu se ciocnete cu reexia lui. Solutia cea s mai ecient de gsire a penei este o cutare binar prin izolarea neaprat a a a a a cu terminatoare a unor portiuni din ce ce mai lungi din cablul retelei. n
arborescent, adic a a ntre orice dou interfete de retea trebuie s existe un a a drum i numai unul format din cabluri directe i repetoare sau comutatoare. s s Intr-o retea construit corect, arborescent, un pachet emis de o plac a a de retea se propag prin cabluri i repetoare sau comutatoare din ce ce mai a s n departe de interfata de origine, sfrind prin a ajunge la toate plcile din retea. as a cazul care reteaua, loc s e arborescent, contine circuite, se In n n a a va ampla ca dou copii ale aceluiai pachet s ajung pe dou ci distincte nt a s a a a a la un anumit repetor sau comutator. Dac este un repetor, cele dou copii, a a ajungnd aproximativ simultan, vor produce o coliziune. Cum acest lucru se a ampl cu orice pachet trimis retea, ecare pachet va suferi o coliziune cu nt a n el si i va repetat la innit cu acelai insucces, rezultnd astfel trac util nsu s s a cazul comutatoarelor, dac dou copii ale unui pachet ajung pe dou nul. In a a a ci diferite la un comutator, acesta le va considera ca ind pachete distincte. a consecint, le va memora i retransmite, ecare copie ind retransmis In a s a inclusiv pe calea prin care a intrat cealalt copie. acest fel, copiile cicleaz a In a la innit prin retea, rezultnd o ,,furtun de pachete, adic o multiplicare a a a incontrolabil a pachetelor. a cazul utilizrii repetoarelor, pe lng topologia arbore mai treIn a a a n buie respectate nite conditii, i anume: s s toate componentele legate la repetoare trebuie s lucreze la aceeai vitez a s a (e 10 Mbit/s, e 100 Mbit/s, e 1 Gbit/s). Aceasta deoarece un repetor nu memoreaz pachetul de retransmis i, ca urmare, nu-l poate retransa s mite la alt cadent a bitilor dect cea cu care receptioneaz. a a a l a s nu existe mai mult de 4 repetoare de-a lungul nici unui drum a ntre dou a interfete de retea. Aceast restrictie este impus pentru ca diferentele a a de vitez de transmisie a repetoarelor i variatia arzierii introduse a s nt de repetoare s nu duc la micorarea sub o anumit limit a timpului a a s a a dintre dou pachete consecutive. a arzierea cea mai mare a transmisiei nt ntre dou interfete de retea ( a ntrzierea pe cablu plus arzierea introdus de repetoare) s nu e mai a nt a a mare dect jumtate din durata necesar emiterii unui pachet. Pentru a a a o retea de 10 Mbit/s, aceasta nseamn o lungime maxim total de a a a 2500 m ntre oricare dou interfete de retea. a cazul switch-urilor, nu apare nici una din limitrile expuse mai sus, In a cu exceptia faptului c pe eventualele legturi semi-duplex arzierea trebuie a a nt s e de cel mult jumtate din durata minim a pachatului. a a a La retele ce utilizeaz att switch-uri ct i repetoare, restrictiile a a a s de la repetoare se aplic, separat, pe ecare subretea format din repetoare a a
congurabil (adresa IP initial se congureaz prin intermediul conea a a xiunii seriale descrise mai sus). Conectarea prin telnet la adresa IP a switch-ului (pe portul standard al protocolului telnet, anume 23) ofer a acces la interfata de congurare prezentat mai sus. Evident, pen a tru mpiedicarea congurrii switch-ului de ctre persoane neautorizate, a a switch-ul permite congurarea unei parole, care este cerut la conectare. a Prin interfat web: Ca i la conectarea prin telnet, switch-ul prezint o a s a adres IP. Administratorul se poate conecta cu orice navigator web la a aceast adres i va primi pagini ce contin parametrii actuali i formulare a as s pentru modicarea parametrilor. Ca i cazul congurrii prin telnet, s n a accesul poate i este recomandabil s e restrictionat prin parol. s a a Pentru cazul uitrii parolei, exist o procedur de revenire la conga a a urarea implicit. Aceasta const de obicei apsarea unui buton de reset a a n a timp de 1015 secunde sau punerea sub tensiune a switch-ului timp ce se n ine apsat butonul de reset. t a 9.1.6.2. Filtrare pe baz de adrese MAC a Unele switch-uri pot congurate s nu accepte, pe un anumit port, a dect pachete ce provin de la o anumit adres MAC sau de la o adres dintra a a a o anumit list. De asemenea, un pachet destinat unei adrese MAC dintr-o a a astfel de list nu va trimis dect prin portul pe a crui list se gsete adresa. a a a a a s Aceast facilitate este introdus pentru a a a mpiedica eventuali intrui s s intre retea racordndu-se pur i simplu la prizele de retea accesibile. a n a s Dei s mbuntete securitatea unei retele, solutia are cteva limitri: a at s a a lista adreselor asociabile unui port este limitat (de multe ori la 8 sau 16 a adrese); multe plci de retea permit schimbarea (prin soft) a adresei MAC. a 9.1.6.3. Trunking Prin trunking se elege utilizarea mai multor cabluri paralel ca nt n legtur a a ntre dou switch-uri. acest fel, tracul ce se poate stabili a In ntre acele dou switch-uri este suma capacitilor legturilor congurate trunka at a n ing. Porturile utilizate regim trunking trebuie congurate pe ambele n switch-uri. Este de asemenea posibil ca legarea trunking s utilizeze o n a extensie a protocolului IEEE 802.3 care este proprietatea rmei productoare a a switch-ului; acest caz este posibil ca dou swithc-uri realizate de rme n a diferite s nu se poat lega trunking. a a n
9.1.6.4. Legturi redundante a IEEE 802.1D [IEEE 802.1D, 2004] prevede un protocol pentru descoperirea i dezactivarea ciclurilor ( sensul teoriei grafelor) formate de legturile s n a dintre switch-uri. Majoritatea switch-urilor nu implementeaz a acest algoritm i, a ns s ca urmare, majoritatea cazurilor existenta ciclurilor duce la ,,furtuni de n pachete (multiplicarea incontrolabil a pachetelor retea). a n Dac toate swicth-urile de pe traseul unui ciclu implementeaz protoa a colul de descoperire a ciclurilor, ele colaboreaz automat pentru dezactivarea a uneia dintre legturi i utilizarea doar a unui arbore partial al grafului initial a s al legturilor. La cderea unei legturi, switch-urile vor colabora pentru reaca a a tivarea unei legturi dezactivate, vederea pstrrii conexitii retelei. a n a a at Mentionm c, cazul existentei unui ciclu, nu este posibil ar a a n a mp irea tracului t ntre drumurile alternative. Unul din drumuri va obligatoriu dezactivat complet, ct timp cellalt este functional. a a 9.1.6.5. Retele virtuale (VLAN) Mecanismul de retele virtuale (Virtual Local Area Network ) const a artirea unei retele zice mai multe retele virtuale disjuncte. Fiecare n mp n retea virtual se comport exact ca o retea IEEE 802.3 independent. Con a a a structiv, retelele virtuale partajeaz aceleai echipamente (comutatoare, ca a s bluri sau chiar plci de retea). a A nu se confunda VLAN cu VPN (Virtual Private Network retea privat virtual descris 10.7.4). a a a n Partitionarea VLAN-uri poate dezirabil din mai multe motive, n a cum ar : limitarea tracului de broadcast sau separarea tracului din motive de securitate. Exist dou posibiliti de constructie a VLAN-urilor. a a at O prim posibilitate const partitionarea porturilor unui switch. a a n acest fel, un switch se comport ca mai multe switch-uri (virtuale) indeIn a pendente, ecare avnd doar o parte a porturilor switch-ului zic. Un port al a unui switch poate s apartin doar unui singur VLAN. a a O a doua posibilitate este cea denit [IEEE 802.1Q, 2003]. Fiecare a n VLAN const dintr-o parte din echipamentele (interfete de retea, cabluri i a s switch-uri) retelei zice; VLAN-uri distincte pot partaja voie echipamente n zice. Astfel, ecare interfat de retea apartine unuia sau mai multor VLANa uri, ecare cablu apartine unuia sau mai multor VLAN-uri i ecare port al s ecrui switch apartine unuia sau mai multor VLAN-uri. Fiecare switch, la a primirea unui pachet de broadcast sau pentru a crui destinatie nu are asociere, a
va trimite pachetul prin toate porturile apartinnd VLAN-ului pachetului, cu a exceptia portului prin care a intrat pachetul. Pentru ca mecanismul descris mai sus s poat functiona, este necesar a a ca, pe cablurile ce apartin mai multor VLAN-uri, pentru ecare pachet s a se poat deduce crui VLAN apartine. Pentru aceasta, ecare pachet este a a etichetat cu un identicator de VLAN (VLAN-ID); acest VLAN-ID este un numr reprezentabil pe 12 biti. a Pentru pstrarea compatibilitii cu echipamentele ce nu suport a at a VLAN-uri 802.1Q, un segment de retea care apartine doar unui singur VLAN poate congurat s utilizeze pachete neetichetate; switch-ul ce realizeaz a a legtura dintre un astfel de segment i restul retelei zice realizeaz adugarea a s a a i eliminarea etichetei de VLAN pe pachetele ce tranziteaz spre, respectiv dins a spre, restul retelei. Echipamentele incompatibile 802.1Q pot montate doar pe cabluri prin care trac pachete neetichetate. O plac de retea compatibil 802.1Q poate congurat s fac parte a a a a a din mai multe VLAN-uri. Pentru aceasta, ea se monteaz pe un cablu prin a care trec pachete etichetate. Placa de retea se comport ca i cnd ar de a s a fapt mai multe plci de retea, virtuale, cte una ecare VLAN. Fiecare a a n plac virtual are asociat un VLAN-ID, primete doar pachetele ce poart a a s a acel VLAN-ID i marcheaz cu VLAN-ID-ul su toate pachetele emise. s a a Pe ecare switch trebuie congurate porturile care apartin ecrui a VLAN. De asemenea, pentru ecare port trebuie stabilit dac utilizeaz paa a chete etichetate (cu VLAN ID-ul) sau pachete neetichetate. Un port ce utilizeaz pachete neetichetate poate apartine unui singur VLAN. a
instalatiile mici i fr pretentii, cablurile se duc aparent i se xIn s aa s eaz de pereti sau pe mobil numai acolo unde este strict necesar. Uurinta rea a s alizrii i recongurrii este pltit prin faptul c apar diculti la curenie, a s a a a a at at cablurile se degradeaz uor dac se calc pe ele i, sfrit, se mai ampl a s a a s n a s nt a ca cineva s se a mpiedice de un cablu, rezultnd echipamente trase pe jos sau a cabluri smulse din conectoare. Pentru evitatarea neajunsurilor expuse mai sus, se prefer s se trag a a a cablurile prin paturi de cablu, tuburi ngropate (ca la instalatiile electrice) sau prin tavane false. Deoarece astfel de cablaje se modic mai dicil, este bine a s se aib vedere posibilele modicri ce ar putea de dorit viitor. Asta a a n a n nseamn: a S se prevad mai multe cabluri de la posibile amplasamente de calcua a latoare la amplasamentul switch-ului asociat aperii. Cablurile neunc tilizate nu e necesar s aib toate loc switch; se vor conecta sau a a n deconecta dup necesiti. a at S se prevad 23 cabluri de la switch-urile corespunztoare unei aperi a a a nc la switch-ul central. Astfel, dac va nevoie s se construiasc dou a a a a retele distincte, o parte din calculatoarele din apere conectndu-se la nc a o retea i altele la alt retea, se vor pune dou switch-uri apere, s a a n nc ecare conectat prin cte un cablu la switch-ul central. a
oricnd dintr-o celul. Fiecare statie se identic printr-o adres unic de 48 a a a a a de biti, numit mod curent adresa MAC a statiei. a n Accesul la mediu este controlat principal prin metode bazate pe n urmrirea tracului pe mediu, detectarea coliziunilor i, a s ntr-o anumit ma a sur, metode de rezervare prealabil a accesului la mediu. Acestea vor a n descrise detaliu 9.2.2. n n Prezenta unei celule wireless organizate ntr-o anumit zon este mana a ifestat prin emiterea periodic de ctre una dintre statii a unui pachet special, a a a numit beacon. Pe lng BSSID-ul celulei, pachetele beacon mai contin un ir de a a s caractere numit SSID sau uneori numele retelei (engl. network name). Acest ir este xat de administratorul retelei i servete la identicarea retelei pentru s s s utilizatorii umani. O statie poate obtine lista celulelor active zona sa ascultnd pa n a chetele beacon. Lista aat utilizatorului va contine SSID-urile retelelor. s a Exist dou moduri de lucru care poate functiona o retea 802.11: a a n Retea format dintr-o singur celul independent, neconectat prin mi a a a a a terminologia standardului, o jloace IEEE 802 de alte echipamente. In astfel de celul se numete Independent BSS IBSS; mod curent a s n reteaua astfel format se numete ad-hoc. a s Retea format din una sau mai multe celule, opernd a a mpreun i posibil as conectate la o infrastructur IEEE 802 (de exemplu la o retea Ethernet a 802.3). Un astfel de mod de lucru se numete mod infrastructur sau s a managed . mod infrastructur, cadrul ecrei celule exist o statie care In a n a a are rolul legrii celulei la infrastructur (altfel spus, la restul retelei IEEE a a 802.11). O astfel de statie poart denumirea de Access Point AP. Un AP a este o statie, i ca atare are o adres MAC. s a Intr-o celul a unei retele de tip a infrastructur, o statie ce intr sau iese dintr-o celul trebuie s anunte AP-ul a a a a responsabil de celula respectiv. a AP-ul este responsabil de generarea pachetelor beacon i BSSID-ul s celulei este adresa MAC a AP-ului. AP-urile unei aceleiai retele 802.11 trebuie s e interconectate, s a formnd aa-numitul Distribution System (DS). DS-ul poate conectat la a s alte retele din familia IEEE 802 prin intermediul unor dispozitive numite por tal -uri. Celulele din aceeai retea vor avea acelai SSID. s s Standardul original nu prevede nimic legtur cu modul de conectare n a a a AP-urilor i deci de realizare a DS-ului. Ca urmare, ecare fabricant de APs uri i-a construit propriul protocol de comunicare inter-AP. Ulterior IEEE a s
emis un standard, [IEEE 802.11F, 2003], care xeaz un protocol de comunia care ntre AP-uri. De obicei un dispozitiv vndut sub numele de access point contine a un AP i un portal ctre retele Ethernet. Un astfel de dispozitiv prezint un s a a modul radio prin intermediul cruia se comport ca o statie cu rol de AP i a a s un conector Ethernet. Intr-o prim aproximatie, un astfel de dispozitiv poate a privit ca un switch conectat pe de o parte la ecare dintre statiile membre ale celulei i pe de alt parte la un dispozitiv Ethernet. s a Unele access point-uri ce se gsesc comert ofer functionaliti a n a at suplimentare fat de un AP combinat cu un portal. Aceste functii sunt a oferite prin extensii ale protocolului i ca urmare pot utilizate de regul s a doar mpreun cu echipamente produse de aceeai rm. Functionalitile a s a at sunt: functie de switch (punte) ntre o retea Ethernet (x) i o celul wireless, a s a actionnd a ca i statie oarecare (nu AP). Aceast functie se numete a ns s a s wireless bridge sau AP client (uneori exist functii cu ambele nume, cu a diferente minore ntre ele); functie de AP, dar utiliznd tot reteaua wireless pentru partea de infra a structur. acest mod, dispozitivul este acelai timp AP pentru o a In n s celul i statie oarecare alt celul, iar a dou legtur este utilizat as n a a a a a a pentru dirijarea spre reteaua x a datelor din celula care dispozitivul a n este AP.
una din statiile A i C nu receptioneaz transmisia celeilalte ele nu au cum s s a a detecteze coliziunea. retelele IEEE 802.11, o statie care dorete s trimit un pachet In s a a va trimite ai un pachet de control, numit Request To Send (RTS; rom: nt cerere de transmisie), care specic destinatarul i durata de timp necesar n a s a transmiterii pachetului. Dac destinatarul a primit pachetul RTS i este liber, a s va trimite napoi un pachet de control Clear To Send (CTS; rom: accept transmisia). La primirea pachetului CTS, emittorul trimite pachetul de date. a O statie care receptioneaz un pachet CTS destinat altei statii nu a are voie s trimit nimic pe durata rezervat de pachetul CTS, pentru a nu a a a interfera cu transmisia acceptat prin acel CTS. Aceast restrictie trebuie a a respectat i cazul receptiei unui pachet CTS destinat altei retele din aceeai a s n s zon (adic purtnd un BSS-ID diferit). a a a Utilizarea pachetelor RTS i CTS nu este obligatorie. Pentru pas chetele mici este preferabil trimiterea direct a pachetului de date i repetarea a s acestuia cazul unei coliziuni. Pentru pachetele de broadcast, utilizarea RTS n i CTS este imposibil; ca urmare un pachet de broadcast este trimis direct. s a
mesajelor. acest scop, toti membrii celulei trebuie s cunoasc o anIn a a umit cheie de lung durat, numit pre-shared key (rom. cheie para a a a tajat prealabil ); aceast cheie trebuie dat de utilizator la initierea a n a a celulei sau, dup caz, la introducerea statiei celul. Criptarea se a n a face utiliznd cifrul RC4, cu o cheie construit din secretul partajat a a i dintr-un vector de initializare ales aleator, pentru ecare pachet, de s ctre emittor i transmis antetul pachetului. Controlul integritii a a s n at pachetului este fcut tot pe baza secretului partajat. WEP are dou a a slbiciuni: pe de o parte, datorit existentei unei slbiciuni a cifrului a a a RC4 (exist cteva chei slabe, foarte uor de spart), WEP poate spart a a s destul de uor; pe de alt parte, modelul de securitate oferit este destul s a de neexibil. WiFi Protected Access WPA: corecteaz problemele WEP, pstrnd a a a compatibilitatea cu plcile de retea existente. privinta criptrii, WPA a In a pstreaz cifrul RC4 din motive de compatibilitate, dar vine cu o schem a a a diferit de gestiune a cheilor de criptare, capabil s evite cheile slabe. a a a privinta obtinerii unui model de securitate mai exibil, WPA In are dou moduri de lucru: a - WPA-Personal, numit i WPA-PSK (de la Pre-Shared Key), s n care se utilizeaz un secret partajat a ntre toti membrii celulei, ind similar cu WEP (dar mult mai sigur). - WPA-Entreprise, care cheile se obtin pe baza unor chei individn uale ale utilizatorilor. Controlul accesului i obtinerea cheilor se s face printr-un mecanism numit Extensible Authentication Protocol (EAP ), descris mai jos. IEEE 802.11i [IEEE 802.11i, 2004], numit i WPA2, extinde WPA as dugnd, a a ntre altele, posibilitatea utilizrii cifrului AES. Ca i cazul a s n WPA, exist dou moduri de lucru, cu cheie partajat prealabil sau a a a n utiliznd EAP. a Protocolul de autenticare extensibil, EAP [RFC 3748, 2004], este un protocol generic, ce permite utilizarea mai multor scheme de autenticare. EAP este utilizat i de alte protocoale afar de WPA i WPA2, i s n a s s anume poate utilizat cadrul legturilor PPP [RFC 1661, 1994], precum n a i pentru autenticarea conectrilor la o retea cablat IEEE 802.3, conform s a a [IEEE 802.1X, 2001]. Arhitectura EAP contine urmtoarele componente: a clientul ce trebuie s-i dovedeasc identitatea scopul obtinerii accesului as a n
la retea. Rolul clientului are placa de retea 802.11 (sau placa de l terminologia EAP, acesta este numit retea 802.3 sau clientul PPP). In supplicant. punctul de acces este entitatea care trebuie s autentice clientul pentru a a-i oferi acces la serviciile retelei. Rolul de punct de acces are AP-ul l 802.11 (sau switch-ul 802.3 sau serverul PPP). terminologia EAP, In acesta se numete authenticator. s serverul de autenticare este entitatea care detine baza de date cu cheile clientilor i realizeaz efectiv autenticarea. s a Protocolul EAP prevede un schimb de mesaje ntre client i serverul de autens ticare. Dac serverul de autenticare este distinct fat de punctul de acces, a a comunicatia dintre client i serverul de autenticare trece prin punctul de ac s ces, iar portiunea din calea de comunicatie dintre punctul de acces i serverul s de autenticare este protejat criptograc pe baza unui secret partajat a ntre punctul de acces i serverul de autenticare. Serverul de autenticare este de s obicei un server RADIUS. Unele dintre mecanismele efective de autenticare utilizabile cadrul n EAP sunt: EAP-MD5 prevede c serverul de autenticare trimite clientului un numr a a aleator, iar clientul rspunde cu dispersia MD5 a concatenrii numrului a a a aleator cu parola clientului. Functionarea mecanismului necesit ca a serverul s aib baza de date, clar, parola clientului. EAP-MD5 a a n n permite doar autenticarea clientului, nu i stabilirea unor chei pentru s criptarea sau autenticarea mesajelor. EAP-TLS necesit ca att clientul ct i serverul de autenticare s aib a a a s a a prestabilite chei secrete SSL/TLS, iar ecare dintre ei s aib certicatul a a TLS al celuilalt (vezi i 11.3.2.5). Se stabilete o conexiune TLS s s ntre client i serverul de autenticare, utiliznd certicatele acestora, iar s a n cadrul acestei conexiuni stabilesc cheile pentru comunicatia ulterioar a ntre client i punctul de acces. s PEAP (de la Protected EAP ) prevede utilizarea TLS pentru deschiderea unei conexiuni securizate ntre client i serverul de autenticare, a s ns doar serverul are o cheie TLS, clientul autenticnd serverul pe baza a certicatului corespunztor. Dup deschiderea conexiunii TLS, urmeaz a a a autenticarea clientului de ctre server, iar caz de succes are loc nea n gocierea cheilor pentru securizarea comunicatiei ntre client i punctul s de acces. terminologia PEAP, conexiunea TLS se numete mecanisIn s mul exterior de autenticare, iar mecanismul de autenticare a clientului
se numete mecanismul interior. Mecanismul interior cel mai rspndit s a a este MSCHAP, care este un mecanism similar cu EAP-MD5.
Capitolul 10
Internetul
Denumirea Internet desemneaz dou lucruri: pe de o parte un proa a tocol de nivel retea (Internet Protocol, IP, protocolul Internet), iar pe de alt a parte reteaua Internet, care este o retea la scar mondial bazat pe protocolul a a a Internet. Capitolul de fat prezint: a a protocolul Internet (IP), mpreun cu celelalte protocoale de baz ale a a retelelor de tip Internet (TCP, DNS, ARP, etc.); cteva aspecte administrative legate de reteaua mondial Internet. a a
Nodurile intermediare sunt e PC-uri, e dispozitive dedicate (rutere dedicate). Legturile directe pot realizate prin linii seriale, linii telefonice cu a modemuri, retele locale IEEE 802, cablu TV, etc. Modul de utilizare a ecrui a tip de legtur direct de ctre o retea Internet este standardizat prin stana a a a darde auxiliare ( 10.5). Exist chiar un standard [RFC 1149, 1990] de utia lizare ca legturi directe a porumbeilor cltori; dei standardul a fost publicat a aa s ca o glum de 1 aprilie, el ilustreaz foarte bine independenta a a ntre nivele ntr-o retea. Din punctul de vedere al unei retele Internet, o legtur direct este a a a orice fel de canal de comunicatie pe care reteaua de tip Internet o poate folosi. Fiecare nod este identicat prin una sau mai multe adrese IP . Cu exceptia unor adrese cu rol special, o adres IP identic unic un nod. Unele a a noduri, special cele intermediare, au mai multe adrese IP asociate. n Adresele IP sunt arareori folosite direct de utilizatorii umani. locul In lor se utilizeaz numele de domeniu. Corespondenta a ntre un nume de domeniu i adresa IP se realizeaz cu ajutorul sistemulul DNS (Domain Name Service), s a descris 10.4. n Protocolul Internet a fost proiectat pentru a asigura o tolerant dea osebit de mare la pene. Dup cderea unor noduri sau a unor legturi, dac a a a a mai exist totui un drum a s ntre dou noduri el va gsit i utilizat cele a a s n din urm. Aceast tolerant la pene vine cu un pret: nu exist garantii cu a a a a privire la arzierea maxim livrarea unui pachet sau debit minim garannt a n tat; ba chiar este posibil ca un pachet s e pierdut complet (acest lucru se a poate ampla cu pachetele surprinse pe drum de o pan, precum i caz nt a s n de arcare mare a retelei), s ajung dublu exemplar sau dou pachete s nc a a n a a ajung la destinatie ordine invers a trimiterii. a n a Este sarcina nivelelor superioare s se descurce aceste conditii. a n In acest scop, ntre aplicatie i nivelul retea este plasat un nivel intermediar, s nivelul transport, cu rolul de-a furniza aplicatiei un serviciu mai potrivit.
10.2. Protocolul IP
Protocolul Internet (engl. Internet Protocol IP ) descrie formatul pachetelor i cteva aspecte privind activitatea nodurilor retelei. s a Protocolul IP are dou versiuni aate curent uz: versiunea 4 a n (cea mai utilizat prezent, numit prescurtat IPv4 ) standardizat prin a n a a [RFC 791, 1981] i versiunea 6 (care se rspndete relativ s a a s ncet, numit presa curtat IPv6 ) standardizat prin [RFC 2460, 1998]. a
TOS Lungime totala Identicare Rezervat Nu fragmenta Ultimul fragment Deplasament Timp de viat a Protocol Suma de control Adres surs a a Adres destinatie a
8 16 16 1 1 1 13 8 8 16 32 32
Optiunile sunt informatii pentru dirijarea pachetului pentru cazuri mai speciale; deoarece aceste informatii nu sunt necesare dect pentru anumite a tipuri de pachete, ele sunt prezente doar pachetele care este nevoie de n n
Nume cmp a Versiune Clas trac a Etichet ux a Lungime rest Tip antet urmtor a
Lungime (biti) 4 8 20 16 8
Rol Versiunea protocolului IP. Valoarea este x: 6. a tip serviciu (vezi 10.2.6.2). vezi 10.3.1.8. Lungimea pachetului minus antetul x, n octeti. Dac exist optiuni, tipul primului ana a tet optional; altfel, protocolul cruia a i apartin datele utile. Numrul maxim de salturi pn la disa a a trugerea pachetului (vezi 10.2.5.3). Adresa nodului ce a emis pachetul. Adresa destinatarului nal al pachetului.
8 128 128
ele. Datele utile sunt un ir de octeti asupra cruia protocolul IP nu s a impune nici o restrictie, cu exceptia lungimii. Lungimea maxim admis de a a protocol este de 65515 octeti (65535 octeti pachetul ntreg) pentru IPv4 i s 65535 octeti, inclusiv antetele optionale, pentru IPv6. Este permis ca unele noduri s nu poat procesa pachete care datele utile sunt mai lungi de 556 a a n octeti (576 octeti tot pachetul) pentru IPv4 i 1240 octeti (1280 octeti tot s pachetul) pentru IPv6 (a se vedea i 10.2.6.1). s
o retea IEEE 802, interfata de retea este placa de retea mpreun cu driver-ul a ei. Fiecare interfat de retea are propria adres IP. Ca urmare, un nod a a ce are n plci de retea va avea n adrese IP distincte. a Are sens s vorbim despre interfetele membre ale unei subretele, ca a ind interfetele prin care nodurile din subretea sunt conectate la acea subretea. Adresele IP dintr-o subretea sunt adresele IP ale interfetelor din acea subretea. 10.2.2.2. Prexul de retea Fiecare subretea are asociat un prex de retea, adic un anumit ir a s de biti de lungime mai mic dect lungimea unei adrese IP. Toate adresele IP a a ale interfetelor din acea subretea trebuie s a nceap cu acel prex de retea. a Prexul unei subretele nu este permis s e prex al unei adrese IP din afara a acelei subretele. Ca urmare, un prex identic unic o subretea. a Suxul unei adrese, adic irul de biti din adres care nu fac parte as a din prexul subretelei, vom numi adresa cadrul subretelei. Numrul de l n a biti ai suxului determin numrul de noduri ce pot membre ale subretelei. a a Adresele care suxul este format numai din biti 0 sau numai din n biti 1 (aadar dou adrese pentru ecare subretea) sunt rezervate i nu pot s a s asignate nodurilor retelei (a se vedea i [RFC 1700, 1994]). s Exemplul 10.1: Pentru simplicarea exemplului vom presupune c adresele a IP sunt doar de 8 biti. Presupunem c o subretea ar avea prexul de retea a 10110. Adresa 10110010, dac exist, trebuie s desemneze o interfat din a a a a acea retea. Adresa 10111010 nu poate face parte din acea subretea, deoarece nu ncepe cu prexul subretelei. Notm c un nod care are o interfat a a a n subreteaua 10110 i o interfat alt retea ar putea avea adresa 10111010 pe s a n a cea de-a doua interfat. a Din subreteaua considerat, cu prexul 10110, pot face parte adresele, a numr de 23 = 8, din intervalul 1011000010110111. Adresele 10110000 i n a s 10110111 sunt rezervate; rmn deci 6 adrese ce pot asignate nodurilor a a subretelei. Un exemplu de asignare a adreselor este prezentat gura 10.1. n Ptrelele numerotate reprezint calculatoarele, iar liniile reprezint legturile a at a a a directe, gurate aici ca i cnd ar realizate prin cabluri magistral. De res a a marcat c nodul cu numrul 3 are dou adrese, 10110001 i 10111010, cte a a a s a una pentru ecare interfat. a
10111011 5
Alt subretea, cu prexul 10111 a Figura 10.1: O retea format din dou subretele. Vezi exemplul 10.1 a a
10.2.2.3. Tabela de dirijare La primirea unui pachet IP, un nod execut urmtorul algoritm: a a 1. dac adresa destinatie este una din adresele nodului curent, pachetul a este livrat local (nivelului superior); 2. altfel, dac adresa destinatie este adresa unui vecin direct, pachetul este a livrat direct acelui vecin; 3. altfel, se determin vecinul direct cel mai apropiat de destinatarul paa chetului i i se d pachetul, urmnd ca acesta s-l trimit mai departe. s a a a a Pentru pasul 2, este necesar ca nodul s determine dac adresa destia a natie corespunde unui vecin direct i care este interfata prin care se realizeaz s a legtura. Livrarea efectiv este realizat de interfata de retea; acesteia i se d a a a a pachetul i adresa IP a vecinului. s Pentru pasul 3, trebuie determinat primul rnd vecinul direct n a cruia i se va trimite pachetul. Dac acesta are mai multe interfete, trebuie a a utilizat interfata prin intermediul cruia el este vecin nodului curent. O dat a a a determinat adresa interfetei, trimiterea pachetului se face ca la pasul 2. a Deciziile de la paii 2 i 3 se iau pe baza tabelei de dirijare a nodus s lui curent. O tabel de dirijare const dintr-o multime de reguli de dirijare. a a Fiecare regul asociaz o int unui grup de adrese destinatie. a a t a Grupul de adrese este specicat printr-un prex de retea. Pentru un pachet dat se aplic acea regul de dirijare care prexul ce specic grupul a a n a este prex al adresei destinatie a pachetului. Dac exist mai multe astfel de a a
reguli de dirijare, se aplic regula cu prexul cel mai lung adic cea mai a a specic dintre regulile de dirijare aplicabile. a Tinta poate e o interfat, e o adres IP. a a Dac inta este o interfat, destinatia trebuie s e un vecin direct, at a a accesibil prin acea interfat; acest caz pachetul de dirijat este livrat direct a n destinatarului prin interfata dat regul, conform pasului 2. a n a Dac inta este o adres, aceasta trebuie s e adresa unei interfete at a a vecine. acest caz pachetul de dirijat este trimis nodului vecin a crui adres In a a este specicat tabela de dirijare. Nodul vecin respectiv poart denumirea a n a de gateway i trebuie s e congurat s actioneze ca nod intermediar. s a a De notat c adresa surs i adresa destinatie din antetul IP nu se a a s modic cursul acestei proceduri. Sursa rmne nodul care a emis paa n a a chetul, iar destinatia rmne nodul cruia trebuie s-i e livrat cele din a a a a n urm pachetul. Atunci cnd modulul de retea paseaz unei interfete de retea a a a un pachet vederea transmiterii pachetului ctre un nod vecin, modulul de n a retea va comunica interfetei dou lucruri: pachetul, care adresa destinatie a n reprezint destinatarul nal, i adresa vecinului direct cruia interfata va a s a i livra pachetul. Acesta din urm poate diferit fat de destinatarul nal dac a a a este doar un intermediar pe drumul ctre destinatarul nal. a
Subreteaua 10110
1 2
Subreteaua 1000
6 7
10110010
10110100
10000010
10000011
eth0: 10110001
3 5
eth1: 10111010
Exemplul 10.2: Fie reteaua din gura 10.2, format din trei subretele. Pen a tru nodul nr. 3, au fost gurate i numele interfetelor de retea: eth0 ctre s a subreteaua de sus i eth1 ctre subreteaua de jos. Tabela de dirijare a nodu s a lui 3 este cea ilustrat tabelul 10.3. a n
Nr. crt. 1. 2. 3.
Tabelul 10.3: Tabela de dirijare pentru nodul 3 din gura 10.2 (exemplul 10.2).
Considerm c nodul 3 primete un pachet cu destinatia 10110010 a a s (nodul 1). Singura regul aplicabil este regula 1, deoarece 10110 este prex a a pentru 10110010. Conform acestei reguli, pachetul poate livrat direct prin interfata eth0. Fie acum un pachet cu destinatia 10000010 (nodul 6). Regula apli cabil este regula 3. Conform acesteia, pachetul trebuie trimis nodului cu a adresa 1011101, urmnd ca acesta s-l trimit mai departe. Modulul IP caut a a a a continuare regula aplicabil pentru destinatia 10111011 i gsete regula 2, n a s a s conform creia pachetul se trimite prin interfata eth1. Prin urmare, pachetul a destinat lui 10000010 va trimis lui 10111011 prin interfat eth1 (urmnd ca a a nodul 5 s-l livreze mai departe nodului 6). a De remarcat c nodurile ce apar ca int regulile tabelelor de diria t a n jare trebuie specicate prin adresele interfetelor accesibile direct din nodul curent. exemplul 10.2, este esential ca, ultima regul a tabelei de dirijare In n a a nodului 3, nodul 5 s e specicat prin adresa 10111011 i nu prin adresa a s 10000001. Nodul cu adresa 10111011 este accesibil prin interfata eth1, con form regulii 2; dac ar fost specicat prin adresa 10000001, nodul 3 nu ar a putut determina cum s-i trimit pachetul. a a majoritatea cazurilor, tabela de dirijare are o regul numit imIn a a plicit, corespunztoare prexului vid i, ca urmare, aplicat pentru pachetele a a s a pentru care nu este aplicabil nici o alt regul. Aceast regul, dac exist, a a a a a a a are totdeauna ca int o adres IP a unui nod vecin al nodului curent. Acest t a a nod (de fapt, aceast adres IP) poart denumirea de default gateway. a a a
Adresele IP versiunea 4, care sunt iruri de 32 de biti, se scriu ca ir de s s 4 numere, scrise baza 10, separate prin puncte. Fiecare numr este de n a fapt valoarea cte unui grup de 8 biti, vzut ca numr. Aceast scriere a a a a se numete notatie zecimal cu punct. s a Pe lng notatia zecimal cu punct, adresele IP versiunea 4 pot a a a scrise notatia zecimal simpl : se scrie direct valoarea adresei ca n a a numr, scris baza 10. a n Exemplul 10.3: Fie adresa 1100-0000-1010-1000-0000-0000-0010-0010 (liniutele au fost scrise numai pentru uurarea citirii). Notatia zecimal s a cu punct este 192.168.0.34. Notatia zecimal simpl este 3232235554. a a Adresele IP versiunea 6 sunt iruri de 128 de biti. Scrierea lor obinuit s s a se face ca un ir de 32 cifre hexa, ecare reprezentnd cte 4 biti din s a a adres. Cifrele hexa sunt grupate cte 4, iar grupurile succesive sunt a a separate prin cte un caracter dou puncte. Pentru a scurta scrierea, se a a permit urmtoarele optimizri: a a - zerourile de la nceputul unui grup pot s nu e scrise; a - un grup cu valoarea 0 sau mai multe astfel de grupuri consecutive se pot elimina, mpreun cu separatorii dou puncte dintre ei, a a rmnnd doar dou caractere dou puncte succesive. Acest lucru a a a a a se poate face ntr-un singur loc al adresei, altfel s-ar crea evident o ambiguitate. Exemplul 10.4: O posibil adres IPv6 este a a
fe80:0000:0000:0000:0213:8fff:fe4e:fbf4
sau
fe80::213:8fff:fe4e:fbf4
Adresa 0:0:0:0:0:0:0:1 se scrie compact ::1. Pentru adrese IPv6 alocate vederea compatibilitii cu IPv4, n at este acceptat scrierea care primii 96 biti sunt scrii format IPv6, a n s n iar ultimii 32 de biti sunt scrii format IPv4, separati de primii printr s n un caracter dou puncte. a
10.2.3.2. Scrierea prexelor de retea Prexele de retea ind de lungime variabil, trebuie precizat att a a a valoarea efectiv a prexului ct i lungimea acestuia. Exist dou notatii: a a s a a notatia cu adresa subretelei i lungimea prexului i notatia cu adresa subre s s elei i masca de retea. t s notatia cu adres i lungime, prexul se completeaz cu zerouri la In as a lungimea unei adrese IP (adic la 32 de biti pentru versiunea 4 i la 128 de biti a s pentru versiunea 6); rezultatul se numete adresa de retea. Adresa de retea se s scrie ca i cnd ar o adres IP normal, dup care se scrie (fr spatiu) un s a a a a aa caracter slash (/) urmat de lungimea prexului scris ca numr baza 10. a a n Exemplul 10.6: Prexul IPv4 1100-0000-1010-1000-110 se scrie, notatia cu n adres de retea i lungime (notatie cu slash) 192.168.192.0/19. Prexul 1100a s 0000-1010-1000-1100-0000 se scrie 192.168.192.0/24. De remarcat importanta specicrii lungimii. a notatia cu adres de retea i masc de retea, se scrie mai ai In a s a nt adresa de retea, ca i cazul scrierii cu adres i lungime, dup care se scrie s n as a (cu un slash ntre ele sau rubrici separate) aa-numita masc de retea. n s a Masca de retea const dintr-un ir de biti 1 de lungimea prexului de retea a s urmat de un ir de biti 0, avnd total lungimea unei adrese IP. Masc de s a n a retea, se scrie ca i cnd ar o adres IP. s a a Notatia cu adres i masc se utilizeaz numai pentru IP versiunea as a a 4. Exemplul 10.7: Prexul 1100-0000-1010-1000-110 se scrie, notatia cu n adres de retea i masca, 192.168.192.0/255.255.224.0. Prexul 1100-0000a s 1010-1000-1100-0000 se scrie 192.168.192.0/255.255.255.0.
10.2.4.1. Alocarea pe utilizri a Adresele IPv4 sunt artite dup cum urmeaz: mp a a Adresele cu prexele 0.0.0.0/8 i i 127.0.0.0/8 sunt rezervate. Adresa s s 127.0.0.1, pentru ecare nod, desemneaz acel nod, cu alte cuvinte un a pachet destinat adresei 127.0.0.1 este totdeauna livrat nodului curent. Adresa 0.0.0.0 nseamn adres necunoscut; poate folosit doar ca a a a a adres surs pachete emise de un nod care a a n ncearc s si ae propria a a adres. a Adresele cu prexul 224.0.0.0/4 sunt utilizate ca adrese de multicast (aas numita clas D). a Adresele cu prexul 240.0.0.0/4 sunt rezervate (aa-numita clas E ). s a Adresele cu prexele 10.0.0.0/8, 172.16.0.0/12 i 192.168.0.0/16 sunt nus mite adrese private [RFC 1918, 1996]. Aceste adrese pot utilizate intern de oricine, fr s e necesar alocarea la IANA, a cu conditia ca aa a ns pachetele purtnd astfel de adrese ca surs sau destinatie s nu ajung a a a a n afara nodurilor gestionate de acea persoan sau institutie. Aceste adrese a se utilizeaz pentru acele noduri, din reteaua proprie a unei institutii, a care nu au nevoie de acces direct la Internet. Mai multe detalii despre utilizarea acestor adrese vor date 10.7.2 n Restul adreselor se aloc normal nodurilor din Internet. a 10.2.4.2. Alocarea adreselor i dirijarea ierarhic s a lipsa oricror grupri ale adreselor, majoritatea nodurilor din InIn a a ternet ar trebui s aib tabela de dirijare cte o regul pentru ecare nod. a a n a a O asemenea solutie nu este realizabil practic la scar mondial. Din aceast a a a a cauz, adresele se aloc institutiilor doritoare blocuri de adrese, ecare bloc a a n avnd un prex unic, a ntocmai ca cazul subretelelor. n Un bloc de adrese se aloc unei subretele sau grup de subretele ina terconectate care apar, din restul Internetului, ca o singur subretea. Din a afara subretelei corespunztoare unui bloc, toate pachetele destinate adreselor a din bloc sunt dirijate identic, conform unei reguli care are ca prex prexul blocului. tabela de dirijare a unui nod oarecare din Internet va necesar In astfel cte o regul pentru ecare bloc, i nu cte o regul pentru ecare nod. a a s a a Pentru stabilirea dimensiunilor blocurilor, initial adresele IP versi unea 4 au fost artite clase: mp n A: Adresele cu prexul 0.0.0.0/1 au fost artite 128 blocuri alocabile, mp n ecare bloc avnd cte 224 adrese. Lungimea prexului unui bloc este a a de 8 biti.
B: Adresele cu prexul 128.0.0.0/2 au fost artite 16384 blocuri de mp n cte 65536 adrese. Prexul unui bloc este de 16 biti. a C: Adresele cu prexul 192.0.0.0/3 au fost artite 221 blocuri de cte mp n a 256 adrese. Lungimea prexului unui bloc este de 24 de biti. Ideea artirii mp ntre clasele A, B i C era aceea ca, dndu-se o adres s a a IP, s se poat determina lungimea prexului blocului din care face parte. a a Acest lucru simplic mult calcularea tabelelor de dirijare i chiar cutarea a s a n tabela de dirijare a regulii aplicabile. artirea clase s-a dovedit prea inexibil. Pe de o parte, Imp n a mprtirea este inecient, ducnd la alocarea cte unui bloc de clas B (adic a a a a a a 65536 adrese) pentru institutii care nu aveau nevoie de mai mult de cteva a sute de adrese. Pe de alt parte, nu exist nici o corelatie a a ntre blocurile de adrese alocate unor institutii diferite dar din aceeai zon geograc; s a a n consecint, pentru majoritatea ruterelor din Internet este nevoie de cte o a a regul de dirijare pentru ecare institutie creia i s-a alocat un bloc de adrese. a a Ca urmare s-a decis o nou schem de alocare a blocurilor de adrese. a a Noua schem se numete CIDR (engl. Classless InterDomain Routing) i este a s s descris [RFC 1518, 1993]. a n schema CIDR, un prex de bloc poate avea orice lungime. O In institutie ce dorete acces Internet poate solicita alocarea unui bloc de adrese, s cu un numr de adrese egal cu o putere a lui 2. a O institutie care furnizeaz acces Internet altor institutii este a ncurajat s aloce mai departe, din blocul alocat ei, sub-blocuri pentru institutiile a a crora le ofer acces Internet. Astfel, din afara retelei furnizorului de acces a a Internet, reteaua furnizorului mpreun cu toti clientii lui se vede ca o singur a a subretea care toate adresele au acelai prex. n s CIDR mai prevede o grupare a blocurilor pe continente, astfel at nc pentru un nod aat pe un continent toate (sau majoritatea) adreselor de pe un alt continent s se dirijeze conform unei singure reguli. Aceast grupare este a a aplicabil doar adreselor care nu erau deja alocate la momentul introducerii a CIDR; CIDR nu i-a pus problema realocrii adreselor deja alocate. s a Pentru adresele IP versiunea 6 se folosete numai schema CIDR. s
Protocolul const transmiterea, anumite situatii, a unor pachete a n n ICMP. Un pachet ICMP este un pachet IP care cmpul protocol are valn a oarea 1 pentru ICMPv4, respectiv 58 pentru ICMPv6, iar zona de date utile este structurat conform standardului ICMP. a Pachetele ICMP sunt de obicei generate de modulul de retea al unui nod, ca urmare a unei erori aprute livrarea unui pachet IP. Pachete ICMP a n mai pot generate i de programe utilizator, prin intermediul socket-urilor de s tip SOCK RAW. Astfel de aplicatii servesc la testarea functionrii retelei. a O dat generat, un pachet ICMP este transmis prin retea ca orice a alt pachet IP. Ajuns la destinatie, modulul de retea (IP) al nodului destinatie examineaz cmpul protocol i, constatnd c este vorba de un pachet ICMP, a a s a a livreaz modulului ICMP al nodului destinatie. Modulul ICMP trebuie s l a a e prezent i functional orice nod IP; implementrile obinuite este parte s n n a s a nucleului sistemului de operare al calculatorului ce constituie nodul. Datele utile sunt formatate conform standardului ICMP i s ncep cu doi ntregi pe cte 8 biti reprezentnd tipul i subtipul mesajului ICMP (vezi a a s tabelul 10.4). Formatul restului pachetului depinde de tipul mesajului ICMP; majoritatea cazurilor, este prezent o copie a primilor cteva zeci de octeti n a a din pachetului IP care a dus la generarea pachetului ICMP. Situatiile ce duc la generarea pachetelor ICMP, precum i actiunile s ntreprinse de un nod la primirea unui pachet ICMP, sunt descrise paran grafele urmtoare. a 10.2.5.1. Pachete nelivrabile Un nod declar un pachet nelivrabil dac: a a nici o regul din tabela de dirijare a nodului nu este aplicabil destinatiei a a pachetului; sau interfata de retea prin care trebuie trimis pachetul nu este functional a sau nu poate livra pachetul destinatarului (destinatarul nu rspunde). a aceste cazuri, nodul curent trimite un pachet ICMP, avnd: In a adresa sursa: adresa nodului curent, adresa destinatie: adresa surs a pachetului nelivrabil, a tip: destination unreachable. Pachetul ICMP mai cuprinde antetul pachetului ce nu a putut livrat. Destinatarul pachetului ICMP, care este de fapt sursa pachetului nelivrabil, trebuie s analizeze antetul pachetului returnat i s informeze nivelul a s a superior (probabil TCP sau UDP) asupra problemei.
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 i s agul nu fragmenta setat; vezi 10.2.6.1 pachetul a avut optiunea dirijare de ctre surs i ruta speca as icat este invalid. a a pachetul se a de a prea mult timp retea n (probabil cicleaz), a 10.2.5.3 probabil fragment pierdut, 10.2.6.1 pachet neconform cu standardul cerere ncetinire surs, a 10.2.5.4 redirectionare, 10.2.5.5 cerere ecou, 10.2.5.2 rspuns ecou, 10.2.5.2 a
10.2.5.2. Diagnosticarea functionrii rutelor a Testarea functionrii comunicatiei la nivel retea este un test simplu a i extrem de util gsirea penelor dintr-o retea. s n a acest scop, pe majoritatea sistemelor exist o comand utilizator, In a a numit ping, care testeaz legtura dintre nodul curent i nodul specicat. a a a s Comanda ping functioneaz prin trimiterea unui pachet ICMP cu a tipul echo request (rom. cerere ecou) ctre nodul specicat. Nodul destinatie a al unui pachet echo request rspunde prin trimiterea a napoi (ctre sursa paa chetului echo request) a unui pachet ICMP cu tipul echo reply (rom. rspuns a ecou). Pachetul echo reply este livrat comenzii ping. Pachetele echo request i echo reply se mai numesc uneori ping i s s pong. Pachetele cu tipurile ping i pong au prevzute, conform standardului, s a dou cmpuri, identicare i nr. secvent, pe baza crora nucleul sistemului a a s a a i comanda ping identic corespondentele s a ntre pachetele ping trimise i pas chetele pong receptionate. Pachetele ping i pong au prevzut i un cmp, de s a s a dimensiune arbitrar, de date utile; scopul acestui cmp este testarea transa a miterii pachetelor mari. Pe lng comanda ping care testeaz functionarea unei legturi, exa a a a ist o comand, traceroute (pe sisteme de tip Unix) sau tracert (pe Wina a dows), care aeaz adresele ruterelor prin care trece un pachet pentru o ans a umit destinatie. a Exist mai multe metode pentru a aa drumul spre un anumit nod. a Metoda utilizat de comanda traceroute se bazeaz pe trimiterea, spre acel a a nod, a unor pachete ping cu valori mici pentru timpul de viat (vezi 10.2.5.3). a Un astfel de pachet parcurge nceputul drumului spre nodul destinatie, a, ns dup parcurgerea unui numr de noduri intermediare egal cu valoarea initial a a a a timpului de viat, provoac trimiterea a a napoi a unui pachet ICMP de tip TTL exceeded. Trimitnd pachete ping cu diferite valori pentru timpul de a viat, se primesc pachete TTL exceeded de la diferitele noduri de pe traseul a spre destinatie. O alt posibilitate de-a aa ruta spre un anumit nod este furnizat a a de un antet optional, standardizat i IPv4 i IPv6, care cere ruterelor s n s n s-i scrie ecare adresa acest antet optional. as n 10.2.5.3. Ciclarea pachetelor IP Este posibil s existe (temporar) inconsistente tabelele de dirijare. a n De exemplu, se poate ca tabela de dirijare a nodului A s indice nodul B ca a nod urmtor pe ruta ctre C, iar tabela nodului B s indice ca nod urmtor a a a a acest caz, dac A primete un pachet destinat lui pe ruta ctre C nodul A. In a a s
C i-l va trimite lui B, B va pasa pachetul napoi lui A, . a. m. d. s Pentru a preveni ciclarea nelimitat a pachetelor astfel de cazuri, a n antetul IP este prevzut un cmp numit timp de viat. Valoarea acestui n a a a cmp este initializat de ctre nodul surs al pachetului (valoarea initial este a a a a a de ordinul zecilor) i este sczut cel putin cu 1 de ctre ecare nod prin care s a a a trece pachetul. Dac valoarea ajunge la 0, nodul nu mai trimite mai departe a pachetul ci ignor sau trimite l a napoi un pachet ICMP cu tipul time exceeded, subtipul time to live (TTL) exceeded (rom. depire timp de viat ) pentru a as a semnala situatia. 10.2.5.4. Congestia general, prin congestie se elege situatia care In nt n ntr-un nod intr pachete a ntr-un ritm mai rapid dect poate nodul s retrimit pachetele, a a a rezultnd de aici o functionare proast a retelei (vezi 5.3). a a cazul congestiei, nodul congestionat poate cere sursei s reduc In a a tracul prin trimiterea ctre aceasta a unui pachet ICMP cu tipul source a quench. 10.2.5.5. Redirectionarea Un nod, care primete un pachet i constat c trebuie trimis mai s s a a departe aceeai subretea din care a sosit pachetul, poate informa sursa pan s chetului cu privire la faptul c pachetul a mers pe o rut neoptim. Informarea a a a se face printr-un pachet ICMP cu tipul redirect.
192.168.7.7 192.168.7.1
192.168.1.3 192.168.1.1
192.168.1.9
Spre exterior
Figura 10.3: O retea pentru ilustrarea redirectionrii pachetelor (vezi exemplul 10.8) a
Exemplul 10.8: Considerm reteaua din gura 10.3. Pentru nodurile din a
subreteaua 192.168.1.0/24, ar trebui s existe tabela de dirijare: a n o regul care s asocieze prexului 192.168.7.0/24 gateway-ul 192.168.1.3; a a o regul indicnd ca default gateway adresa 192.168.1.1. a a practic, pentru simplicarea administrrii, se omite congurarea In a a primei reguli pe toate nodurile cu exceptia nodului 192.168.1.1. consecint, In a o statie din subreteaua 192.168.1.0/24, de exemplu 192.168.1.9, care are de trimis un pachet ctre un nod din subreteaua 192.168.7.0/24, de exemplu a ctre 192.168.7.7, va trimite pachetul lui 192.168.1.1 loc de 192.168.1.3. a n Nodul 192.168.1.1 trimite mai departe pachetul ctre 192.168.1.3 i, totodat, a s a trimite un pachet ICMP redirect ctre 192.168.1.9; aceasta din urm si poate a a actualiza tabela de dirijare pentru a trimite direct la 192.168.1.3 urmtoarele a pachete destinate nodurilor din subreteaua 192.168.7.0/24.
Pentru a permite producerea, de ctre nivelul superior, a unor pachete a IP sucient de mici, exist un protocol pentru aarea dimensiunii maxime a a pachetelor ce pot trece prin legturile directe. Protocolul este descris a n [RFC 1981, 1996]. Protocolul Internet permite i fragmentarea la nivel retea a pachetelor. s Pentru IP versiunea 4, cmpurile necesare pentru fragmentarea i a s reasamblarea pachetelor sunt prevzute antetul standard. De asemenea, a n exist un ag, nu fragmenta, care cere ruterelor de pe traseu s nu a a ncerce fragmentarea ci schimb s abandoneze transmiterea pachetului. n a Pentru IP versiunea 6, cmpurile privind fragmentarea au fost mua tate ntr-un antet optional, deoarece este probabil s nu e utilizate frecvent. a Fragmentarea poate fcut doar de emittorul pachetului, ruterele de pe a a a traseu ind obligate s abandoneze transmiterea cazul care pachetul este a n n prea mare. Fragmentele sunt pachete IP obinuite, care se transmit independent s unul de altul din punctul care s-a efectuat fragmentarea. n Nodul destinatie efectueaz reasamblarea pachetelor. acest scop a In se utilizeaz cmpurile identicare i deplasament i agul mai urmeaz fraga a s s a mente. Astfel, un pachet se va asambla din fragmente avnd toate aceeai a s valoare cmpurile identicare, adres surs, adres destinatie i proton a a a a s col. Pachetul asamblat va avea antetul identic cu al fragmentelor (mai putin cmpurile ce controleaz fragmentarea). Datele utile vor reconstituite din a a datele utile ale fragmentelor. Cmpul deplasament al unui fragment arat a a locul datelor utile din fragment cadrul pachetului (reamintim c fragmentele, n a ca orice pachete IP, se pot pierde, pot duplicate i ordinea lor de sosire poate s inversat). Lungimea pachetului este determinat din faptul c, ultimul a a a n fragment, agul mai urmeaz fragmente are valoarea 0. a Destinatia ncearc reasamblarea unui pachet din momentul care a n a primit primul fragment al pachetului. Dac celelalte fragmente nu sosesc a ntr-un interval de timp sucent de scurt, nodul abandoneaz reasamblarea a i trimite s napoi un pachet ICMP cu tipul time exceeded, subtipul fragment reassembly time exceeded. 10.2.6.2. Calitatea serviciului Dac un nod este relativ aglomerat, acesta trebuie s ia decizii privind a a prioritatea pachetelor: dac unele pachete trebuie trimise ct mai repede, fat de altele care pot a a a inute mai mult coada de ateptare; t n s la umplerea memoriei ruterului, care pachete pot aruncate (distruse).
Cmpul tip serviciu din antetul IP contine informatii despre nivelul a de calitate a serviciului cerut de emittorul pachetului; functie de acesta, a n modulul de retea ia deciziile privind ordinea de prioritate a pachetelor.
ind nodul din subretea cel mai apropiat de ieirea spre restul Internet s ului. Se obinuiete ca nodul ales ca default gateway s primeasc adresa s s a a IP cea mai mic din subretea (adic adresa care suxul are valoarea a a n 1). Pe toate nodurile subretelei se congureaz ca default gateway nodul a ales ca default gateway al subretelei. Pentru nodurile care fac parte din mai multe subretele, se ia default gateway-ul din subreteaua cea mai apropiat de exterior (astfel un nod nu va avea ca default gateway pe el a si). nsu Pe nodul ales ca default gateway pentru o subretea se vor congura rutele ctre subretelele ,,din subordine subretelele mai deprtate de a a legtura spre exterior dect subreteaua considerat. a a a Mai notm c a a ntr-o tabel de dirijare static nu se pot congura, a a pentru tolerant la pene, mai multe ci spre o aceeai destinatie. Dac se a a s a dorete aa ceva este necesar instalarea unui program de calcul automat al s s a tabelei de dirijare.
Subretea secretariat 193.0.227.192/27 S1 193.0.227.194 S2 193.0.227.222 Subretea laboratoare 193.0.224.0/23 L1 193.0.224.2 L2 193.0.224.3 L3 193.0.225.254
eth0: 193.0.224.4 L4 eth1: 193.0.227.225 193.0.227.226 E1 193.0.227.238 E2 Subretea experimental a eth2: 193.0.224.1 eth1: 193.0.227.193 193.0.227.224/28
G
eth0: 193.226.40.130/255.255.255.240 Spre reteaua furnizorului
Exemplul 10.9: S considerm c avem de construit o retea a a a ntr-o coal. s a Presupunem c am obtinut alocarea blocului de adrese 193.0.224.0/22 pentru a utilizare reteaua proprie i c ruterul ce asigur legtura cu reteaua furnin s a a a zorului de acces Internet a primit adresa ( reteaua furnizorului) 193.226.40.130 n cu masca 255.255.255.240 (prex de 28 de biti). S presupunem, de asemenea, c s-a decis artirea retelei interne a a mp trei subretele (g. 10.4), respectiv pentru secretariat, laboratorul de inforn matic i o retea special pentru experimente. artirea luat ca exemplu as a Imp a este o artire tipic din considerente de trac i de securitate: reteaua exmp a s perimental trebuie s poat izolat uor de restul retelei, iar secretariatul a a a a s este separat fat de tracul i eventual atacurile dinspre laboratorarele de a s informatic. a Fiecare subretea este construit dintr-un numr de switch-uri Ether a a net, access point-uri 802.11 i calculatoarele respective. Switch-urile i access s s point-urile nu au fost gurate explicit deoarece ele nu sunt vizibile din punctul de vedere al nivelului IP. Pentru conectarea celor trei subretele mpreun i la Internet cona s gurm dou rutere: G, dotat cu trei plci de retea, care leag reteaua secrea a a a tariatului, reteaua din laboratoare i reteaua furnizorului de acces Internet i s s L4 (probabil amplasat laborator, pentru a la n ndemn timpul experia a n mentelor), dotat cu dou plci de retea, care leag reteaua experimental de a a a a reteaua din laborator. Odat stabilite subretelele, s alocm adresele. Blocul de adrese a a a disponibile este 193.0.224.0/22, continnd 1024 de adrese. Putem crea blocuri a avnd ca dimensiuni puteri ale lui 2: 512, 256, 128, 64, 32, 16, 8 sau 4 adrese. a Incepem prin a aloca laboratoarelor un bloc ct mai mare, de 512 adrese (510 a utilizabile efectiv), anume 193.0.224.0/23. Din blocul de 512 adrese rmas a (193.0.226.0/23), s alocm 32 adrese secretariatului i 16 adrese retelei exa a s perimentale. Este bine s le alocm ct mai compact, pentru ca dintre adresele a a a nealocate s pstrm posibilitatea de-a aloca blocuri ct mai mari. Vom aloca a a a a cele dou blocuri de 32 i 16 adrese din ultimul bloc de 64 de adrese din cele 512 a s libere: 193.0.227.192/27 pentru secretariat i 193.0.227.224/28 pentru reteaua s experimental. a Pentru ecare din cele trei subretele, exist o alegere natural pentru a a default gateway: G pentru reteaua secretariatului i pentru reteaua din labo s ratoare i, respectiv, L4 pentru reteaua experimental. ecare caz, default s a In gateway-ul este nodul cel mai apropiat de exterior. ecare subretea, adresa In dat ruterului cu rol de default gateway este cea mai mic adres din acea a a a subretea.
S vedem acum cum trebuie congurate tabelele de dirijare. Pentru a statii, tabelele sunt formate din cte dou reguli: o regul pentru livrarea a a a direct, care asociaz prexului subretelei unica interfat de retea, i o regul a a a s a implicit, care asociaz prexului vid adresa default gateway-ului. a a Pentru nodul L4 , tabela de dirijare are trei reguli, dou ind pentru a livrarea direct prin cele dou interfete, iar a treia este regula implicit: a a a 193.0.224.0/23 eth0 ; 193.0.227.224/28 eth1 ; 0.0.0.0/0 193.0.224.1 (prin eth0 ). Pentru nodul G avem 5 reguli: trei reguli de livrare direct prin cele a trei interfete, o regul implicit indicnd default gateway-ul retelei furnizorului a a a de acces Internet i o regul pentru dirijarea spre subreteaua ,,subordonat s a a 193.0.227.224/28: 193.226.40.128/28 eth0 ; 193.0.227.192/27 eth1 ; 193.0.224.0/23 eth2 ; 0.0.0.0/0 193.226.40.129 (prin eth0 ). 193.0.227.224/28 193.0.224.1 (prin eth1 ). 10.2.7.2. Congurarea parametrilor de retea pe diverse sisteme de operare Pe sistemele Windows, exist dou posibiliti de congurare: coa a at manda ipconfig ( mod text) i seria de casete de dialog din Start/ Control n s panel/ Network/ interfat. Prin ambele interfete se realizeaz att modia a a carea parametrilor din modulul IP din nucleul sistemului de operare ct i a s scrierea lor Windows registry pentru re arcarea lor la repornirea sistemun nc lui. Comportamentul de ruter, dac este dorit, trebuie activat explicit. a Pe sistemele de tip Linux congurarea este putin mai complicat, a dar i mult mai exibil. Comanda ifconfig seteaz parametrii legati de s a a interfetele de retea, anume adresa IP i masca de retea. Tot comanda ifconfig s introduce tabela de dirijare regulile de livrare direct (de fapt acesta este n a motivul pentru care are nevoie de masca de retea). Tabela de dirijare se aeaz i se modic cu comenzile route sau ip (prima este mai simpl i s as a as se gsete pe toate sistemele, a doua este mai complex i servete i altor a s a s s s scopuri). De remarcat c oprirea unei interfete de retea cu ifconfig duce a automat la eliminarea din tabela de dirijare a tuturor regulilor ce au ca int t a
adrese accesibile prin acea interfat. Activarea comportamentului de ruter se a face cu o comand sysctl. a Comenzile ifconfig, route, ip i sysctl au efect imediat asupra s modulului IP din nucleu, dar congurrile respective se pierd la repornirea a sistemului. Parametrii de retea utilizati la pornirea sistemului sunt luati de script-urile de initializare din nite iere text; din pcate, ecare distributie s s a de Linux are propriile iere de congurare. De exemplu, Fedora plaseaz s a datele iere directorul /etc/sysconfig/network-scripts. n s n 10.2.7.3. Testarea i depanarea retelelor s Cel mai util instrument de depanare pentru problemele de conectivitate este comanda ping. Pentru buna functionare a acesteia i a comenzii s traceroute, este necesar ca, dac este instalat un ltru de pachete (rewall), a acesta s permit trecerea pachetelor ICMP cu tipurile echo-request, echoa a reply, destination unreachable i time exceeded. s Primul lucru ce trebuie testat, cazul unei probleme de conecn tivitate sau dup o lucrare mai ampl la retea, este dac legturile directe a a a a functioneaz. Acest lucru se face dnd comanda ping pentru cte un vecin a a a din ecare subretea din care face parte calculatorul de pe care se efectueaz a testul. Dac ping-ul merge, a nseamn c legtura functioneaz (plcile de a a a a a retea, cablurile, switch-urile i access point-urile de pe traseu) i c adresele s s a IP i mtile de retea sunt ,,sucient de bune pentru ca nodurile s e vzute s as a a ca fcnd parte din aceeai subretea. Dac ping-ul nu merge i pachetele ping a a s a s i pong nu sunt ltrate, pana trebuie cutat printre lucrurile enumerate pn s a a a a aici. Dac ping-ul merge pe legturile directe, se trece la vericarea lega a a turilor ntre subretele diferite. Dac o legtur indirect nu functioneaz dei a a a a a s toate legturile directe ce ar trebui s e utilizate functioneaz, problema este a a a de la regulile de dirijare (sau de la un ltru de pachete; de aceea este bine ca pachetele ping i pong s nu e ltrate). Exist dou lucruri uor de scpat s a a a s a din vedere aici: faptul c pentru ca ping-ul s mearg este necesar ca dirijarea a a a s functioneze corect ambele sensuri i faptul c a n s a ntre regulile de dirijare intr inclusiv regulile de default gateway de pe statii. a De exemplu, o statie care nu are congurat default gateway va putea comunica cu vecinii directi, dar nu i cu alte calculatoare nici mcar cu s a default gateway-ul, dac esre specicat prin alt adres dect cea din aceeai a a a a s subretea cu statia congurat. Alt exemplu: la reteaua din exemplul 10.9, a dac pe nodul G nu se pune regula care asociaz prexului 193.0.227.224/28 a a gateway-ul 193.0.224.4, atunci pachetele dinspre subreteaua 193.0.227.224/28
pot s ias spre Internet, a pachetele dinspre Internet nu trec de nodul G. a a ns Un ping executat de pe E1 ctre L4 merge, a ctre L2 nu merge. acest a ns a In din urm caz, pachetele ping ajung la L2 , dar pachetele pong sunt trimise a de L2 ctre G (conform regulii implicite). G, neavnd alt regul, aplic i a a a a a s el regula implicit i le trimite ctre 193.226.40.129 (default gateway-ul din a s a reteaua furnizorului, negurat pe desen). De aici pachetele se ntorc napoi spre G, deoarece furnizorul tie c toat reteaua 193.0.224.0/22 este spatele s a a n lui G. Astfel, pachetele pong cicleaz a ntre G i 193.226.40.129. s
Figura 10.5: Modulele unei retele IP. Partea inclus sistemul de operare este a n delimitat cu linie punctat. a a
legtur bidirectional, adic ecare din cei doi parteneri de comunicatie a a a a poate trimite date celuilalt; livrare sigur, adic octetii trimii de emittor ajung la receptor sigur, a a s a fr duplicate i aceeai ordine care au fost trimii. aa s n s n s Modulul TCP are la dispozitie, pentru realizarea conexiunilor TCP, facilitile oferite de reteaua IP. at 10.3.1.1. Principiul conexiunii TCP Livrarea sigur este obtinut pe baza unui mecanism de numerotare a a i conrmare a pachetelor, aa cum am vzut 4.3. Mecanismul este imples s a n mentat dup cum urmeaz. Pentru a a nceput considerm transmisia unidirectional a a i conexiunea deja deschis. s a Zona de date utile a unui pachet IP ce transport date pentru proa tocolul TCP contine un antet TCP i datele utile TCP. Antetul TCP este s descris tabelul 10.5. n Fiecrui octet al uxului de date utile (de transportat de ctre TCP) a a i se asociaz un numr de secvent ; octeti consecutivi au asociate numere de a a a secvent consecutive. a Fiecare pachet TCP contine, zona de date utile, un ir de octeti n s utili consecutivi. Cmpul numr de secvent din antetul TCP contine numrul a a a a de secvent al primului octet din datele utile. a
Nume cmp a Port surs a Port destinatie Nr. secvent a Nr. conrmare Deplasament date Rezervat Urgent Acknowledge Push Reset Synchronize Finalize Dim. fereastr a Suma de control Pozitie date urgente Optiuni
Observatii
pozitia datelor utile pachet, dependent n de dimensiunea optiunilor valoarea 0 vezi 10.3.1.11 indic faptul c numrul de conrmare a a a este valid arat c pachetul trebuie trimis urgent, a a fr a inut diverse zone tampon aa t n cere nchiderea fortat a conexiunii a cere deschiderea conexiunii cere nchiderea conexiunii vezi 10.3.1.8 suma de control a antetului vezi 10.3.1.11
Modulul TCP receptor ine evidenta numrului de secvent al ultimt a a ului octet primit. La primirea unui pachet TCP, modulul receptor determin a dac datele utile sunt octeti deja primiti (duplicate), octeti ce vin imediat a n continuarea celor primiti pn acel moment sau octeti pn la care exist a a n a a a octeti lips (nereceptionati a din cauza unui pachet pierdut sau arziat). a nc nt Octetii primiti continuarea celor deja primiti sunt pui n s ntr-o coad pentru a a livrati aplicatiei la cererea acesteia. La primirea unui pachet TCP, receptorul trimite napoi un pachet TCP de conrmare. Un pachet TCP de conrmare are antetul TCP agul n acknowledge setat i cmpul numr de conrmare numrul de secvent al s n a a a a urmtorului octet ateptat de la emittor. Un pachet cu numr de conrmare a s a a n informeaz emittorul c toti octetii cu numere de secvent mai mici sau a a a a egale cu n 1 au fost primiti de receptor i nu mai trebuie retransmii. s s Emittorul retransmite octetii neconrmati. Datele utile, furnizate a de aplicatie emittorului, sunt pstrate a a ntr-o zon tampon i inute acolo pn a s t a a la conrmarea primirii lor de ctre receptor. Datele trimise i neconrmate a s ntr-un anumit interval de timp se retransmit. Datele noi intrate zona n tampon sunt trimise cu un nou pachet. Dac un pachet nu este conrmat i a s ntre prima trimitere i momentul retrimiterii au mai sosit date de la aplicatie, s emittoul poate la retrimitere s concateneze datele vechi neconrmate cu cele a a noi. Exemplul 10.10: gura 10.6 este prezentat (simplicat) o parte dintr-un In a schimb de pachete corespunztor unei conexiuni TCP. Presupunem c aplicatia a a surs are de trimis irul abcdefghi, i c acesta este pasat modulului TCP a s s a emittor etape, ai irul abcd, apoi efg, h i nal i. Mai presupunem a n nt s s n conexiunea TCP deja deschis i numrul curent de secvent 10. S analizm as a a a a putin schimbul de pachete: Emittorul trimite un prim pachet, cu numr de secvent 10 i date utile a a a s irul de 4 octeti abcd. Aceti 4 octeti au numere de secvent respectiv s s a 10, 11, 12 i 13; primul dintre acestea este scris cmpul numr de s n a a secvent al antetului TCP. a La primirea acestui pachet, receptorul rspunde cu un pachet de cona rmare, cu numrul de conrmare 14 (acesta este urmtorul numr de a a a secvent ateptat). a s Emittorul trimite acum urmtorul pachet de date, cu numrul de seca a a vent 14 i date utile efg. Presupunem c acest pachet se pierde. a s a Ca urmare a primirii de la aplicatia surs a urmtorului octet, h, emi a a torul TCP trimite imediat urmtorul pachet, cu numrul de secvent ta a a a
Surs a abcd
Destinatie abcd
efg secv.=14 h secv.=17 efg h conrm=14 i secv.=14 efghi efghi conrm=19 secv.=14 efghi conrm=19
Figura 10.6: O secvent de pachete TCP schimbate a ntre emittor (stnga) i rea a s ceptor (dreapta); vezi exemplul 10.10.
17 i date utile h (presupunem c emittorul nu utilizeaz algoritmul s a a a Nagle, 10.3.1.10). La primirea acestui pachet (cu numr de secvent 17), receptorul nu a a l poate conrma deoarece nu a primit numerele de secvent 1416; dac a a n acest moment receptorul ar trimite un pachet cu numr de conrmare 18, a emittorul ar crede c toate numerele de secvent pn la 17 inclusiv au a a a a a fost primite i nu ar mai retrimite niciodat numerele de secvent 1416. s a a Ca urmare, receptorul are dou posibiliti: s ignore pachetul primit a at a (adic s nu trimit nici un pachet a a a napoi) sau s retrimit numrul de a a a conrmare 14; exemplul de fat am considerat a doua variant. n a a Presupunem acum c pe de o parte a expirat time-out-ul emittorului a a pentru numerele de secvent 1417 i pe de alt parte c a primit de la a s a a aplicatia surs urmtorul octet (i). Emittorul a a a mpacheteaz acum tot a ce are de (re)trimis ntr-un singur pachet i trimite numrul de secventa s a 14 i datele utile efghi. s Receptorul conrm pachetul primit, trimitnd numrul de conrmare a a a 19. Presupunem c pachetul de conrmare respectiv se pierde. a Emittorul retrimite pachetul anterior, dup expirarea time-out-ului de a a la trimiterea lui. Receptorul constat c a primit un duplicat al datelor precedente, a a a ns retrimite conrmarea cu numrul 19. Netrimiterea acest moment a a n conrmrii ar duce la repetarea la innit de ctre emittor a pachetului a a a precedent. De notat c, dei receptorul primete un duplicat, emittorul a s s a a nu tie de primirea datelor de ctre receptor. nc s a continuarea schimbului de pachete ilustrat, nu se vor mai trimite pachete In pn ce aplicatia surs nu va da emittorului TCP noi date de transmis. a a a a Am presupus pna aici c numerele de secvent sunt numere natua a a rale care pot crete nedeterminat de mult. realitate, numerele de secvent s In a sunt reprezentate (vezi tabelul 10.5) pe 32 de biti. Cum un numr de secvent a a este asociat unui octet transmis, rezult c exist numere de secvent distincte a a a a doar pentru 4 GiB de date; dup aceea numerele de secvent a a ncep s se repete. a Aceasta nu era o problem anii 80, deoarece la 10 Mbit/s repetarea unui a n numr de secvent apare cel mai repede dup aproape o or, timp care a a a a n este putin probabil s mai existe retea un pachet vechi cu acelai numr a n s a de secvent. Intr-o retea cu debit de 1 Gbit/s, se pot transmite 4 GiB a n 34 secunde, ceea ce face foarte posibil o confuzie a ntre un pachet care s-a ,, ncurcat prin retea timp de 34 s i un pachet nou care poart informatie sit s a uat, cadrul conexiunii, 4 GiB mai a n ncolo, i are acelai numr de secvent. s s a a
Eliminarea riscului de confuzie ntre pachete la debite mari de transmisie a datelor se realizeaz, conform [RFC 1323, 1992], prin introducerea antetul a n TCP a unui cmp optional cuprinznd un marcaj de timp. Metoda se aplic a a a doar la comunicatia ntre module TCP care implementeaz RFC 1323. In a cazul care unul din modulele TCP nu implementeaz RFC 1323, modulele n a TCP vor avea grij s nu repete un numr de secvent mai devreme de cteva a a a a a minute, oprind efectiv transmisia la nevoie. 10.3.1.2. Comunicatia bidirectional a Cele dou sensuri de comunicatie ale unei conexiuni TCP functioneaz a a (aproape) complet independent. Numerele de secvent utilizate pe cele dou a a sensuri evolueaz independent. a Totui, datele utile pentru un sens sunt plasate acelai pachet s n s TCP cu conrmarea pentru cellalt sens. Astfel, ecare pachet TCP contine a ntotdeauna date pentru un sens i conrmare pentru cellalt sens. s a Dac este necesar transmiterea unor date, dar nu i a unei cona a s rmri, cmpul numr de conrmare se repet ultimul numr de conrmare a n a a a a transmis. Dac este necesar s se transmit doar o conrmare, fr date utile a a a aa pentru cellalt sens, atunci zona de date utile se face de dimensiune 0 iar a n cmpul numr de secvent se pune numrul de secvent al urmtorului octet a a a a a a ce va transmis. 10.3.1.3. Deschiderea i s nchiderea conexiunii Pentru ecare sens de comunicatie se consider cte doi octeti ctivi: a a un octet de pornire aat naintea primului octet util al datelor transmise i un s octet de ncheiere aat dup ultimul octet al datelor utile. Aceti octetii ctivi a s au asociate numere de secvent ca i cnd ar octeti obinuiti. Ei nu sunt a s a s transmii zona de date utile; prezenta lor s n ntr-un pachet este semnalizat a prin setarea agurilor synchronize i respectiv nalize din antetul TCP. s Astfel, dac un pachet TCP are agul synchronize setat, numrul a a de secvent n i zona de date utile continnd k octeti, a s a nseamn c pachetul a a transmite k+1 octeti dintre care primul, cu numrul de secvent n, este octetul a a ctiv de pornire, urmat de cei k octeti din zona de date utile, cu numere de la n + 1 la n + k. Initiatorul unei comunicatii TCP trimite un pachet TCP continnd a un octet ctiv de pornire, fr a seta agul acknowledge (acesta este sinaa gurul pachet ce nu are agul acknowledge setat) i punnd o valoare ars a bitrar (care va ignorat la destinatie) cmpul numr de conrmare. a a n a a
Numrul de secvent al octetului ctiv de pornire este la alegerea initiatorului a a comunicatiei. Receptorul pachetului initial rspunde, dac dorete s accepte co a a s a nexiunea, printr-un pachet TCP care, pe de o parte, conrm pachetul de a initiere primit, iar pe de alt parte contine la rndul lui un octet ctiv de a a pornire. Fiecare parte consider conexiunea deschis momentul care sunt a a n n satisfcute simultan conditiile: a octetul ctiv de pornire trimis de ea a fost conrmat; a primit un octet ctiv de pornire de la partener. Fiecare parte poate trimite date nainte de a dispune de o conexiune deschis; datele primite a nainte de momentul care conexiunea este deschis n a nu pot livrate aplicatiei pn la deschiderea complet a conexiunii. a a a Inchiderea conexiunii se face separat pe ecare sens de comunicatie. Marcarea nchiderii unui sens se face trimitnd un octet ctiv de a ncheiere. Dup trimitera octetului de a ncheiere este interzis s se mai trimit date noi. a a Ca urmare, orice pachete (de conrmare) trimise de partea care a nchis conexiunea vor avea ca numr de secvent numrul imediat urmtor octetului a a a a ctiv de ncheiere i date utile vide. Octetul ctiv de s ncheiere se conrm a normal. O conexiune poate functiona orict de mult timp cu un sens a nchis. Nr. pachet 1 2 3 4 5 6 7 8 9 10 Sens AB AB AB AB AB AB AB AB AB AB Nr. secv. 123 25 124 26 127 26 26 130 29 130 Nr. conrm. 0 124 26 127 26 130 130 29 130 30 Flaguri syn syn,ack ack ack ack,n ack ack ack ack,n ack Date utile abc de xyz
Tabelul 10.6: Un exemplu de schimb de pachete cadrul unei conexiuni. Vezi n exemplul 10.11.
Exemplul 10.11: Un exemplu de schimb de pachete cadrul unei conexiuni n este dat tabelul 10.6. n
Pentru a urmri uor schimbul de pachete, s remarcm c A trimite a s a a a lui B un numr de 7 octeti din care 2 ctivi, ,, syn abcde n , cu numerele de a secvent de la 123 la 129 inclusiv, iar B trimite lui A un numr de 5 octeti din a a care 2 ctivi, ,, syn xyz n , cu numerele de secvent de la 25 la 29 inclusiv. a Fiecare pachet care transport octeti numerotati, indiferent dac acetia sunt a a s date utile sau octeti ctivi syn sau n , trebuie conrmat. Pachetele ce contin doar numrul de conrmare nu se conrm. a a Din punctul de vedere a lui A, conexiunea este complet deschis la a primirea pachetului nr. 2; din punctul de vedere al lui B conexiunea este complet deschis la primirea pachetului 3. Dup trimiterea pachetului 5, A a a nu mai are voie s trimit date noi; poate doar s repete datele vechi (dac a a a a nu ar primit pachetul 6 ar trebuit s retrimit pachetul 5) i s trimit a a s a a conrmri. B consider conexiunea complet a a nchis dup primirea pachetului a a 10 (a primit un n de la A i a trimis i i s-a conrmat n -ul propriu). s s A poate considera de asemenea conexiunea complet nchis dup trimiterea a a pachetului 10, a mai trebuie s pstreze un timp datele despre conexiune ns a a pentru cazul care pachetul 10 s-ar pierde i B ar repeta pachetul 9. n s O problem special legat de a a a nchiderea conexiunii este problema determinrii duratei de la a nchiderea conexiunii pn la momentul care a a n datele asociate conexiunii nu mai sunt necesare i memoria asociat poate s a eliberat. a Din punctul de vedere al unui modul TCP, conexiunea este nchis a momentul care sunt n n ndeplinite conditiile: modulul TCP a trimis octetul special de ncheiere, modulul TCP a primit conrmarea propriului octet de ncheiere, modulul TCP a primit un octet special de ncheiere de la partener. Dup a nchiderea conexiunii din punctul de vedere al modulului TCP local, exist a posibilitatea ca modulul TCP partener s nu primeasc cona nc a a rmarea modulului TCP local pentru octetul special de nchidere trimis de modulul TCP partener). Urmarea este c modulul TCP partener nu cona sider a nchis conexiunea (conform regulilor de mai sus) i retrimite octea s tul special de ncheiere pn la conrmarea acestuia. Modulul TCP local a a ar trebui s pstreze informatiile despre conexiune pn cnd modulul TCP a a a a a partener primete conrmarea octetului su de s a ncheiere. Din pcate, detera minarea acestui moment este imposibil, deoarece din acel moment modulul a TCP partener nu va mai trimite nici un pachet (conexiunea ind nchis). Ca a solutie de compromis, protocolul TCP prevede pstrarea datelor despre cone a xiune un anumit interval de timp (de ordinul ctorva minute) dup a a nchiderea
conexiunii. 10.3.1.4. Alegerea numrului initial de secvent a a Numrul de secvent al octetului ctiv de pornire, numit i numr a a s a initial de secvent (engl. initial sequence number, ISN ), trebuie ales aa fel a n s at s nu poat exista confuzie nc a a ntre numere de secvent dintr-o conexiune a veche i cele din conexiunea curent s a ntre aceleai dou prti (aceleai adrese s a a s IP i numere de port). s Ideal, modulul TCP ar trebui s pstreze datele despre o conexiune a a att timp ct mai pot exista retea pachete apartinnd conexiunii. aceste a a n a In conditii, la redeschiderea unei conexiuni ntre aceleai dou prti, ecare parte s a a poate atribui octetului ctiv de pornire numrul de secvent imediat urmtor a a a numrului de secvent asociat octetului ctiv de a a ncheiere al conexiunii precedente. acest caz, putem privi conexiunile succesive ca ind o singur In a conexiune care transmisiile sunt delimitate prin secvente de octeti ctivi n n syn . Dac de la precedenta conexiune a trecut destul timp pentru ca paa chetele corespunztoare s nu mai existe retea (e au ajuns la destinatie, e a a n au fost distruse ca urmare a depirii timpului de viat), alegerea numrului as a a initial de secvent poate fcut oricum. Exist cteva considerente, enumer a a a a a ate mai jos, care duc la utilitatea unor alegeri particulare. Un prim considerent este ngreunarea unor atacuri de tip IP spoong. Un atac IP spoong (numiu uneori simplu spoong) const a trima n ite pachete IP care se falsic valoarea cmpului adres surs. Scopul unui n a a a a astfel de atac este de-a sela un mecanism de autenticare bazat pe adresa n IP a partenerului de comunicatie sau de-a deturna o conexiune TCP deja acest din urm caz, adversarul las un client legitim s se autenticat. In a a a a conecteze la server i, dup efectuarea autenticrii, adversarul injecteaz un s a a a mesaj destinat serverului i avnd ca adres surs adresa clientului autentis a a a cat. Mesajul este interpretat de server ca provenind de la clientul autenticat i, dac contine o comand autorizat pentru client, comanda este executat, s a a a a dei realitate provine de la adversar. s n De multe ori, ntr-un atac de tip spoong adversarul nu are i posibilis tatea de-a determina ruterele de pe traseu s-i permit recuperarea pachetelor a a de rspuns. Un atac astfel de conditii se numete blind spoong. a n s Un atac blind spoong se contracareaz foarte simplu genernd aleator a a numrul initial de secvent, adic fcnd ca valoarea lui s e imprevizibil a a a a a a a pentru adversar. Cum adversarul trebuie s emit pachete cu numere de a a secvent i de conrmare valide, cazul acestor msuri adversarul trebuie a s n a
efectiv s ghiceasc numrul de secvent. a a a a Un al doilea considerent este prevenirea atacului syn ooding. Intrun astfel de atac, adversarul trimite multe pachete TCP de deschidere de conexiune (cu agul synchronize pe 1 i acknowledge pe 0), cu diferite valori s pentru cmpurile port surs i uneori adres surs (este posibil ca adversarul a as a a s execute i IP spoong). Maina atacat trebuie s aloce o structur de date a s s a a a care s memoreze datele despre conexiune pn la terminarea conexiunii sau n a a a la expirarea unui time-out. Adversarul a nu mai trimite nimic pe nici una ns dintre conexiuni, multumindu-se s in ocupat memorie pe maina atacat; at a a s a este vorba deci de un atac denial of service. Contramsura, numit syn cookie, se realizeaz astfel. O main a a a s a care ateapt cereri de conectare genereaz aleator un ir de biti, pe care s a a s l ine secret. La primirea unei cereri de conectare, maina alege, ca numr de t s a secvent initial (pentru sensul dinspre ea spre initiatorul conexiunii), valoarea a unei functie de dispersie criptograc, aplicat asupra numrului de secvent a a a a al pachetului primit concatenat cu un irul secret. Apoi, maina int a cos s t a nexiunii trimite pachetul de rspuns, acceptnd numrul de secvent proa a a a pus de initiatorul conexiunii i continnd numrul de secvent astfel generat. s a a a Maina int nu s t a nregistreaz a, tabela de conexiuni, conexiunea astfel a nc n deschis. cazul unei conexiuni reale, la trimiterea urmtorului pachet de a In a ctre initiatorul conexiunii, maina int veric numrul de secvent folosind a s t a a a a aceeai functie de dispersie, dup care memoreaz conexiunea tabelul de cos a a n nexiuni. acest fel, o conexiune creat dintr-un atac syn ooding nu ocup In a a memorie, schimb o conexiune legitim se poate deschide. n a 10.3.1.5. Inchiderea fortat a conexiunii a Refuzul cererii de deschidere a unei conexiuni se face trimitnd inia iatorului un pachet TCP cu agul reset setat. t La primirea unui pachet care nu corespunde unei conexiuni deschise (adic pachetul este primit a ntr-un moment care conexiunea este n nchis a i pachetul nu are agul synchronize setat), modulul TCP trebuie s trimit s a a napoi un pachet cu agul reset setat. Ideea este ca, dac nodul curent a czut a a i a fost repornit, pierznd evidenta conexiunilor deschise, s informeze toti s a a partenerii de comunicatie care ncearc s continue comunicatia cu el c datele a a a despre comunicatie au fost pierdute. Un nod care a primit un pachet cu agul reset ca rspuns la un a pachet TCP pentru o conexiune trebuie s abandoneze fortat conexiunea. a Aplicatia ce utilizeaz acea conexiune este informat, printr-un cod de eroare, a a la urmtoarea operatie privind conexiunea. a
Alte situatii care conduc la abandonarea unei conexiuni sunt: depirea unui numr de as a ncercri de trimitere de date fr a primi cona aa rmare; primirea unui pachet ICMP cu tipul destination unreachable. Timpul ct emittorul a a ncearc retrimiterea pachetelor neconrmate, a pn momentul care declar legtura czut, este de ordinul zecilor a a n n a a a a de secunde pn la 23 minute. Ca urmare, a a ntreruperea pe termen scurt a unui cablu de retea nu duce la ntreruperea conexiunilor TCP ce utilizau acel cablu. De asemenea, dac un nod sau o legtur a retelei IP cade, dar a a a rmne un drum alternativ a a ntre capetele conexiunii TCP, iar nivelul retea reface tabelele de dirijare pentru a folosi acel drum alternativ i acest lucru se s ampl sucient de repede pentru ca modulul TCP s nu declare conexiunea nt a a czut, atunci conexiunea TCP continu s functioneze normal, cu pachetele a a a a IP circulnd pe noua rut. a a Dac, pe o conexiune TCP deschis, toate datele vechi au fost trimise a a i conrmate, atunci nu se transmit pachete IP ct vreme nu sunt date utile s aa noi de transmis. Ca urmare, dac aplicatiile nu comunic vreme a a ndelungat a pe o conexiune TCP deschis, cderea legturii sau a unuia din capete nu este a a a detectat de cellalt capt dect momentul care acesta are de transmis a a a a n n date. Dac acel capt nu are de transmis date vreme a a ndelungat, de exemplu a cteva ore sau chiar zile, conexiunea rmne deschis din punctul de vedere al a a a a modulului TCP local. Pentru a evita o astfel de situatie, modulul TCP poate instruit via un apel fcntl() asupra socket-ului corespunztor conexiunii a s trimit din cnd cnd cte un pachet fr date utile, doar pentru a a a a n a a aa solicita o conrmare de la cellalt capt. Optiunea aceasta se numete keep a a s alive (rom. mentine viata ), dei mai degrab ar trebui numit testeaz c n s a a a a mai este viat. Utilizarea optiunii keep alive are i un dezavantaj: cderea n a s a temporar a retelei are anse mai mari s duc la abandonarea conexiunii. a s a a 10.3.1.6. Identicarea aplicatiei destinatie Pentru a identica aplicatia creia sunt destinate datele primite, a i conexiunile TCP sunt identicate printr-un cvadruplet format din adresele IP ale celor dou capete i porturile celor dou capete. Porturile sunt numere a s a n intervalul 165535 utilizate pentru a deosebi conexiunile stabilite ntre aceleai s adrese IP. Sistemul de operare ine evidenta conexiunilor deschise. Pentru ecare t conexiune, sistemul retine adresa IP local, portul local, adresa IP a celuilalt a capt i portul de la cellalt capt. De asemenea, sistemul retine aplicatia a s a a care a deschis conexiunea.
La primirea unui pachet TCP, sistemul ia adresele surs i destinatie as din antetul IP i portul surs i destinatie din antetul TCP. Pe baza acestora s as sistemul identic conexiunea creia apartine pachetul. De aici sistemul a a i regsete pe de o parte informatiile necesare gestionrii conexiunii (zone tama s a pon, numere de secvent, etc) i pe de alt parte aplicatia creia sunt desa s a a i tinate datele. 10.3.1.7. Corespondenta ntre functiile socket() i actiunile modul s ului TCP Functionalitatea modulului TCP este oferit programului utilizator a prin intermediul functiilor sistem din familia socket(). Functiile socket() i s modul lor de utilizare ntr-o aplicatie au fost studiate 8.1. Aici vom arta n a legtura dintre apelarea de ctre o aplicatie a functiilor socket i actiunile a a s modulului TCP de expediere i de receptie a unor pachete. s Apelul socket(PF INET, SOCK STREAM, 0) are ca efect doar crearea unei structuri de date pentru apelurile ulterioare. Pe partea de server, apelurile bind() i listen() au, de asemenea, ca s efect doar completarea unor informatii structurile de date. Dac aplicatia n a a apelat direct listen() fr a apelat aa nainte bind(), sistemul (modulul TCP) aloc un port liber. i a La primirea unui pachet de deschidere conexiune (cu agul synchronize setat) pentru o adres i un numr de port pentru care se ateapt deas a s a schiderea unei conexiuni (a fost deja apelat listen()), modulul TCP execut schimbul de pachete de deschidere a conexiunii. Dup aceea, modulul a a TCP ateapt ca aplicatia s apeleze accept() pentru a-i putea semnaliza s a a deschiderea unei noi conexiuni. cazul care nu se ateapt deschiderea In n s a unei conexiuni, modulul TCP trimite un pachet cu agul reset. Dac, adresa local dat functiei bind(), s-a specicat constanta a n a a a INADDR ANY, este acceptat un pachet de deschidere de conexiune ce specic ca adres destinatie oricare dintre adresele nodului curent. Dac apelul bind() a a n s-a specicat o anumit adres a nodului curent, este acceptat deschiderea a a a conexiunii doar dac adresa destinatie a pachetului de deschidere este adresa a specicat apelul bind(). a n Pe partea de client, apelul connect() este cel care determin trima iterea unui pachet cu agul synchronize. Functia connect() ateapt e de s a schiderea complet a conexiunii (conrmarea pachetului syn plus un pachet a syn de la server), e o semnalizare de eroare (un pachet TCP cu agul reset sau un pachet ICMP). caz favorabil, functia connect() returneaz 0, In a n caz defavorabil semnalizeaz eroarea survenit. a a
10.3.1.8. Controlul uxului TCP are i rol de control al uxului, adic de-a s a ncetini emittorul a n cazul care receptorul nu este capabil s proceseze datele sucient de repede. n a O metod extrem de control al uxului este neconrmarea de ctre a a a receptor a octetilor ce nu pot procesati. Metoda aceasta are a dezavan ns tajul c determin emittorul s retrimit octetii respectivi, genernd trac a a a a a a inutil. Metoda utilizat de TCP este ca receptorul s semnalizeze emittoa a a rului, prin valoarea cmpului dimensiune fereastr din antetul TCP, numrul a a a de octeti pe care receptorul este capabil s-i receptioneze acel moment. a n Emittorul nu va trimite mai multi octeti dect dimensiunea ferestrei trimis a a a de receptor. Exist o singur exceptie: dac receptorul a semnalizat dimena a a siunea ferestrei 0, emittorul poate trimite un singur octet; aceasta se face a pentru cazul care receptorul a anuntat o fereastr de dimensiune 0 i apoi n a s a anuntat o fereastr mai mare dar pachetul ce anunta mrirea ferestrei s-a a a pierdut. Pe lng mecanismul sus-mentionat, emittorul TCP reduce debitul a a a de date emise i cazul care constat pierderi de pachete. Ideea este c s n n a a pachetele IP se pot pierde e ca urmare a erorilor la nivel zic, e ca urmare a congestiei nodurilor intermediare. Cu exceptia transmisiei radio, erorile la nivel zic sunt rare, astfel at pierderile de pachete IP se datoreaz nc a n majoritatea cazurilor congestiei nodurilor. 10.3.1.9. Stabilirea time-out-ului pentru retransmiterea pachetelor Aa cum am vzut, pachetele TCP neconrmate s a ntr-un anumit interval de timp sunt retransmise. Valoarea aleas a timpului dup care se face a a retransmiterea inuenteaz performantele transferului de date. O valoare prea a mic duce la repetarea inutil a unor pachete ce ajung la destinatie a a a ns ntrun timp mai lung i, ca urmare, la generarea unui trac inutil. O valoare prea s mare duce la detectarea cu arziere a pachetelor pierdute. nt Modulul TCP ncearc s estimeze durata de timp necesar unui a a a pachet emis s ajung la destinatie, s e procesat i s se a a a s a ntoarc i s se as a receptioneze conrmarea. Acest timp se numete timp dus- s ntors (engl. roundtrip time, RTT ). Timpul dus- ntors nu este x, ci depinde de perechea emittorreceptor considerat i de arcarea retelei momentul considerat. a as nc n Modulul TCP estimeaz statistic media i dispersia timpului dus- a s ntors pentru ecare conexiune deschis i xeaz timpul dup care se retrimit pachetele a s a a neconrmate la o valoare ceva mai mare dect media timpului dus- a ntors.
10.3.1.10. Algoritmul lui Nagle i optimizarea numrului de pachete s a La primirea datelor de la programul aplicatie, prin apelul sistem send(), modulul TCP poate trimite imediat un pachet sau poate atepta; s ateptarea este util dac astfel se pot plasa mai multe date acelai pachet s a a n s IP. Algoritmul lui Nagle prevede c, la primirea unor date de la utilizator a prin send(): dac nu sunt date trimise i neconrmate, sau dac datele noi sunt sua s a cient de mari pentru a umple un pachet, datele se trimit imediat; altfel, modulul TCP ateapt pn la primirea conrmrii sau expirarea s a a a a timpului de retransmitere, i abia atunci trimite datele primite s ntre timp de la aplicatie. O alt optimizare const a arzia cteva fractiuni de secund a a n nt a a trimiterea conrmrii pentru un pachet TCP primit. Ideea este c, dac a a a aplicatia care receptioneaz datele din acel pachet are de trimis date ca rspuns a a la datele primite, datele ce constituie rspunsul s e trimise acelai pachet a a n s cu conrmarea datelor primite. 10.3.1.11. Trimiterea datelor speciale (out of band) TCP prevede un mecanism de transmitere, cadrul uxului normal n de date, a unor date cu un marcaj special. Mecanismul este ntructva echivaa lent cu a avea dou uxuri de date ataate conexiunii, unul pentru datele a s ,,obinuite i cellalt pentru date ,,speciale. Datele speciale poart denus s a a mirea, terminologia angloamerican, out of band data (OOB ). n a O posibil utilizare este urmtoarea: presupunem o aplicatie care a a transfer iere. Presupunem c emittorul trimite mai ai lungimea iea s a a nt s rului i apoi continutul. Dac utilizatorul lanseaz trimiterea unui ier mare s a a s (s zicem civa gigaocteti) i apoi se rzgndete i dorete s abandoneze a at s a a s s s a operatia, partea de emittor a aplicatiei nu poate semnaliza receptorului a n nici un fel abandonarea transmiterii. Aceasta deoarece octetii transmii sunt s interpretati de receptor ca ind continutul ierului. Aici intervin datele cu s marcajul special (out of band ): emittorul trimite continutul ierului ca date a s normale, iar o eventual semnalizare de abandonare a transferului este trimis a a ca date speciale. Datele speciale se consider c trebuie s e livrate ct mari repede a a a a cu putint aplicatiei destinatie. terminologia TCP, ele sunt denumite date a In urgente (engl. urgent data). Transmiterea lor se face astfel: datele speciale se plaseaz a ntr-un pachet TCP fr a precedate de date aa normale;
pachetul respectiv are agul urgent setat; cmpul pozitie date urgente contine dimensiunea datelor speciale rmase a a de transmis ( pachetul curent i urmtoarele). n s n a De principiu un pachet continnd date speciale va avea setat i agul a s push, care indic faptul c modulul TCP receptor ar trebui s livreze datele a a a ctre aplicatia destinatie ct mai repede. a a
ment. Functia returneaz datele utile din datagram precum i adresa surs a a s a a datagramei.
nu e minus. Literele mari sunt echivalente cu literele mici corespunztoare. a Componentele au asociat o ordine ierarhic. a a Scrierea text a unui nume de domeniu se face scriind componentele, n ncepnd cu cea mai de jos, din punct de vedere al ierarhiei, i terminnd cu a s a cea mai de sus. Dup ecare component se scrie un caracter punct (.). a a In particular, numele vid (format din zero componente) se scrie ,,. (un caracter punct). Exemplul 10.12: adresa nessie.cs.ubbcluj.ro. componentele sunt, In n ordine descresctoare ierarhic: a ro Romnia, a ubbcluj Universitatea Babe-Bolyai Cluj-Napoca, s cs Departamentul de Informatic (din engl. Computer Science), a nessie numele statiei. Aceast scriere este inspirat din scrierea adreselor potale, care a a s ncep cu numele destinatarului i se termin cu ara. s a t majoritatea cazurilor, aplicatiile accept specicarea numelor de In a domenii fr punctul nal. lipsa punctului nal, interpretarea este a aa In ns diferit. Anume, dac numele nu este terminat cu punct, aplicatia va a a ncerca s adauge la nume iruri de componente superioare ierarhic dintr-o list cona s a gurat de administratorul sistemului. Primul nume de domeniu, astfel cona struit, care exist DNS este considerat ca ind semnicatia numelui dat de a n utilizator. Exemplul 10.13: Presupunem c lista de cutare congurat de adminisa a a trator pentru un sistem contine, ordine, scs.ubbcluj.ro, cs.ubbcluj.ro n i ubbcluj.ro. O cutare pentru numele www va duce la cutarea numelui s a a www.scs.ubbcluj.ro. care va gsit i vor returnate informatiile dea s spre acest nume. O cutare pentru numele www.cs va duce la cutarea, a a n ordine, a numelor www.cs.scs.ubbcluj.ro., www.cs.cs.ubbcluj.ro. i s www.cs.ubbcluj.ro.; acesta din urm este gsit i cutarea este a a s a ncheiat. a Structurarea numelui mai multe componente servete la adminn s istrarea ierarhic a spatiului de nume. O organizatie care dobndete un a a s nume de domeniu poate crea i administra dup voie numele formate prin s a adugare de componente ierarhic inferioare. De exemplu, Universitatea Babea s Bolyai din Cluj-Napoca a obtinut numele ubbcluj.ro. . Crearea numelui nessie.cs.ubbcluj.ro. este decizia exclusiv a Universitii Babe-Bolyai. a at s O institutie care dorete un nume de domeniu trebuie s contacteze s a institutia care administreaz domeniul printe i s cear alocarea unui nume. a a s a a
Alocarea numelui se pltete e o tax pltit o singur dat, e o tax a s a a a a a a anual. Institutia ce a obtinut numele este responsabil de a a ntretinerea unui server de nume (vezi 10.4.3 i 10.4.4) pentru domeniul ce i-a fost alocat. s Adesea rmele care ofer acces Internet ofer gratuit clientilor nume a a de domeniu ca subdomenii ale domeniului rmei. Exemplu ipotetic, rma XYNet, posesoarea domeniului xynet.example, ofer clientului ABC s.r.l. a domeniul abc.xynet.example. Din pcate, numele mainilor rmei ABC sunt a s legate acest caz de furnizorul de acces Internet, iar dac rma ABC s.r.l. va n a schimba furnizorul de Internet, va nevoit s-i schimbe numele de domeniu a as ale serverelor sale, ceea ce poate duce la pierderea clientilor ce nu a noul a nume al site-ului rmei. De remarcat c, dei organizarea ierarhic a numelor de domeniu a s a seamn cu organizarea numelor de iere i directoare, nu exist o restrictie a a s s a similar cu aceea c a a ntr-un director nu e permis s aib acelai nume un ier i a a s s s un subdirector. Anume, ca exemplu, numele ubbcluj.ro. i cs.ubbcluj.ro. s pot desemna simultan noduri retea. n
Valoare adres IPv4 a adres IPv6 a nume de domeniu nume de domeniu date de identicare ale informatiilor despre zon a nume de domeniu nume de domeniu i s prioritate
Observatii adresa corespunztoare numelui solicitat a adresa IPv6 corespunztoare numelui solicitat a ([RFC 3596, 2003]) numele canonic corespunztor numelui solicitat a numele canonic al nodului cu adresa IP solicitat, vezi 10.4.6 a vezi 10.4.5
NS MX
numele canonic al serverului de domeniu pentru zona avnd ca rdcin numele solicitat a a a a serverele de pot electronic pentru domeniul sa a solicitat, 11.1
Mai mult, numele canonic din cmpul valoare al unei a nregistrri CNAME nu a este permis s apar ca nume de domeniu alt a a n a nregistrare CNAME. O aplicatie care caut o a nregistrare de un anumit tip pentru un nume trebuie s caute i o a s nregistrare CNAME pentru acel nume. Dac gsete o a a s nregistrare CNAME, trebuie s caute o a nregistrare cu numele canonic gsit a i avnd tipul cutat initial. Valoarea astfel gsit trebuie utilizat ca i cnd s a a a a a s a ar fost gsit pentru numele original. a a
apartine zonei nu gureaz tabela inut de acel server a n t a nseamn c numele a a respectiv nu exist. a Din motive de tolerant la pene, pentru ecare zon exist de regul a a a a cel putin dou servere responsabile. De principiu, tabelele despre o zon dat a a a ale serverelor responsabile de acea zon trebuie s e identice; pot exista a a a ns temporar incoerente ntre tabele cu ocazia modicrilor unor informatii. a Pe lng a a nregistrrile despre zonele pentru care este responsabil, un a server de nume trebuie s mai detin a a nregistrri care s permit regsirea a a a a serverelor de nume ale zonelor adiacente zona imediat superioar ierarhic a i zonele imediat subordonate, dac exist i a serverelor de nume pentru s a a s zona rdcin. Aceste a a a nregistrri se numesc glue records a nregistrri lipici a deoarece creaz legtura cu zonele a a nvecinate. Pentru numele rdcin al ecrei zone trebuie s existe urmtoarele a a a a a a nregistrri: a O nregistrare SOA (Start Of Authority), care contine nite date admin s istrative despre zon (vezi 10.4.5); a Una sau mai multe nregistrri NS (Name Server ) care contin numele a serverelor de nume responsabile de zon. De remarcat c serverele de a a nume nu este obligatoriu s e ele a nsele membre ale zonei. Inregistrrile NS ale rdcinii unei zone a a a mpreun cu a nregistrrile A a ale acelor nume sunt ,, nregistrrile lipici ce trebuie inute de un server cu a t privire la zonele vecine. Un server poate ine i alte t s nregistrri, afar de a n a nregistrrile din a zonele pentru care este responsabil i de s nregistrrile de legtur. a a a
Dac numele cutat este din afara zonei de responsabilitate, exist a a a dou comportamente posibile pentru server: a iterativ. Serverul rspunde cu a nregistrrile de legtur ctre zona cutat a a a a a a de client. Clientul urmeaz s interogheze alte servere. a a recursiv. Serverul interogheaz (el si) un server pentru zona vecin a nsu a mai apropiat de zona numelui cutat de client, eventual interogheaz a a a continuare servere din n nregistrrile returnate, pn ce a rspunsul a a a a a la ntrebarea clientului. Inregistrrile gsite sunt plasate categoria a a a n treia alte nregistrri. a Un server recursiv poate congurat s retin a a nregistrrile astfel a obtinute, astfel at la o interogare ulterioar s poat rspunde direct, nc a a a a fr a mai cuta un server responsabil pentru numele cerut de client. O aa a nregistrare astfel memorat este inut un timp cel mult egal cu tera t a menul de valabilitate al nregistrrii, dup care se consider c informatia a a a a s-ar putut modica i ca urmare s nregistrarea este aruncat. a Cutarea adresei corespunztoare unui nume se face de ctre proa a a gramul utilizator care are de contactat nodul cu numele dat. Interogarea DNS se face de regul prin intermediul unor functii de bibliotec, cum ar a a gethostbyname(). Aceste functii de bibliotec trebuie s gseasc un prim a a a a server de nume pe care s-l interogheze. Pentru aceasta, sistemul de opera n are exist un loc standardizat unde administratorul scrie adresele IP ale unuia a sau mai multor servere de nume. sistemele de tip Unix, locul este ieru In s /etc/resolv.conf, iar Windows este registry. n n
Un slave nu execut copierea dac numrul serial curent al master -ului a a a coincide cu numrul serial propriu. a refresh este timpul dup care un server slave trebuie s interogheze a a serverul master pentru a vedea dac s-a modicat vreo a nregistrare; retry este timpul de ateptare dup o s a ncercare euat de-a contacta s a serverul master nainte de-a ncerca din nou; expire este timpul dup care, cazul care nu a reuit s contacteze a n n s a serverul master, serverul slave trebuie s nu se mai considere responsabil a de zon. a Exist i un protocol ([RFC 1996, 1996]) prin care serverul master as cere explicit unui server slave s copieze datele despre zon. a a
193.226.40.128/28, a crui administrare este delegat rmei X; a a numele de domeniu de la 128.40.226.193.in-addr.arpa. pn la a a 143.40.226.193.in-addr.arpa. se denesc ca pseudonime (CNAME ) pentru numele de la 128.128/28.40.226.193.in-addr.arpa. pn la a a 143.128/28.40.226.193.in-addr.arpa. Pentru adresele IPv6 se folosete un mecanism asemntor, denit s a a [RFC 3596, 2003]. Anume, ecrei adrese IPv6 i se asociaz un nume n a a n domeniul ip6.arpa . Numele se construiete astfel: s Se iau grupuri de ctre 4 biti din adresa IPv6 i se scrie cifra hexa corea s spunztoare ca o component separat. a a a Ordinea ierarhic a componentelor astfel obtinute este aceea care coma n ponentele corespunztoare bitilor mai semnicativi din adresa IP sunt a superioare ierarhic componentelor corespunztoare bitilor mai putin sema nicativi. Exemplul 10.14: Pentru adresa 4321:0:1:2:3:4:567:89ab, numele de domeniu asociat este
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4. ip6.arpa
Determinarea adresei MAC a nodului B se face cu ajutorul unui mecanism numit ARP (engl. Address Resolution Protocol, rom. protocol de determinare a adresei ). Mecanismul functioneaz astfel: a A trimite reteaua de nivel inferior un pachet de difuziune (broadcast) n continnd adresa IP a lui B. Acest pachet este un fel de a ntrebare ,,cine are adresa IP cutare?. La un astfel de pachet rspunde doar nodul cu adresa IP specicat a a n pachet adic doar nodul B cazul de fat. Pachetul de rspuns este a n a a adresat direct lui A (prin adresa MAC a lui A recuperat din interogare) a i contine adresa IP i adresa MAC ale lui B. Pachetul are semnicatia s s ,,eu am adresa IP cutare i am adresa MAC cutare. s Dup determinarea corespondentei IP MAC prin mecanismul ARP, a nodul A pstreaz corespondenta memorie un anumit timp (de ordinul a a n minutelor), astfel at, dac nodurile A i B schimb mai multe pachete nc a s a n timp scurt, mecanismul ARP este invocat doar o singur dat. a a Dac nodul A primete mai multe rspunsuri ARP cu adrese MAC a s a diferite pentru aceeai adres IP, s a nseamn c exist mai multe noduri crora a a a a li s-a dat din greeal aceeai adres IP. aceast situatie A ar trebui s s a s a In a a semnalizeze situatia: printr-un pachet ICMP cu tipul destination unreachable destinat sursei pachetului destinat lui B, i s printr-un mesaj aat pe ecran i s s nregistrat ierele jurnal ale sisn s temului de operare. Mecanismul ARP este utilizat de asemnea la congurarea adresei unei interfete de retea ca vericare c adresa congurat este unic subretea. a a a n Mai exact, dac administratorul congureaz o anumit adres IP pentru o a a a a interfat, sistemul emite mai ai o cerere ARP pentru adresa ce urmeaz a a nt a setat. Dac cererea primete rspuns a a s a nseamn c mai exist un nod ce a a a are adresa respectiv, caz care sistemul tiprete un mesaj de avertisment a n a s i eventual refuz congurarea adresei respective. Dac cererea nu primete s a a s rspuns este probabil ca adresa s e unic i ca urmare sistemul o poate a a a s accepta ca adres proprie. a Informatiile despre asocierile IP MAC cunoscute nodului curent se determin, pe sistemele de tip UNIX, cu ajutorul comenzii arp. Trimiterea, a vedera testrii, a unei cereri ARP ctre o statie se poate face cu ajutorul n a a comenzii arping.
(sau s existe aceeai subretea un server proxy DHCP care s preia cererea a n s a clientului i s-o retrimit serverului). s a Rspunsul DHCP este plasat la rndul lui a a ntr-un pachet UDP purtnd ca adres surs adresa serverului DHCP i ca adres destinatie adresa a a a s a alocat clientului DHCP, cu portul destinatie 68. Pachetul este a ncapsulat ntrun pachet Ethernet destinat adresei MAC a clientului. Asocierea IP MAC pentru transmiterea pachetului de ctre server nu se face prin mecanismul a ARP (care ar eua deoarece clientul DHCP nu poate a rspunde la cererea s nc a ARP) ci este setat de ctre serverul DHCP prin intermediul unui apel sistem. a a Determinarea parametrilor de ctre server. Pentru ecare subretea a pentru care actioneaz, un server DHCP trebuie s aib dou categorii de date: a a a a parametrii comuni tuturor nodurilor din subretea (masca de retea, gateway uri, servere DNS) i parametrii specici ecrui nod parte (adresa IP a s a n nodului). Parametrii comuni sunt setati de administratorul serverului DHCP ntr-un ier de congurare al serverului. s Pentru adresele IP ale nodurilor din retea exist dou strategii ce pot a a folosite: Alocare manual: Adresa ecrui nod este xat manual de ctre ada a a a ministratorul serverului DHCP. Nodul client este identicat prin adresa MAC sau prin nume. primul caz administratorul trebuie s scrie In a ntrun ier de congurare al serverului toate adresele MAC ale plcilor de s a retea i adresele IP corespunztoare. al doilea caz, pe serverul DHCP s a In se scriu numele statiilor i adresele corespunztoare iar pe ecare statie s a se seteaz numele statiei (a doua solutie nu este aplicabil pe calculaa a toare fr harddisc). aa Alocare dinamic: Serverul dispune de o multime de adrese pe care le a aloc nodurilor. Serverul pstreaz corespondenta dintre adresele MAC a a a ale clientilor i adresele IP ce le-au fost alocate. Adresele alocate pot s eliberate la cererea explicit a clientului sau la expirarea perioadei de a alocare (vezi mai jos). Adresele se atribuie de regul pe o durat determinat. Perioada de a a a alocare poate prelungit la solicitarea clientului printr-o cerere DHCP de a prelungire. Dup expirarea perioadei de alocare, clientul nu mai are voie s a a utilizeze adresa. Atribuirea adreselor pe perioad determinat are dou avantaje (fat a a a a de atribuirea pe durat nedeterminat): a a la alocarea dinamic a adreselor, dac clientul este scos din retea fr a a aa
a elibera explicit adresa, adresa este eliberat automat la expirarea pea rioadei de atribuire; dac este necesar modicarea strategiei de atribuire a adreselor se pot a a opera modicrile necesare congurarea serverului DHCP iar clientii a n vor primi noile adrese cu ocazia ncercrii de prelungire a atribuirii adrea sei.
REJECT se trimite napoi un pachet semnalnd o eroare implicit a ICMP destination unreachable. Conditiile specicate ntr-o regul pot privi: a interfata prin care a intrat pachetul (cu exceptia lantului OUTPUT ), interfat prin care ar iei pachetul (cu exceptia lantului INPUT ), a s adresa IP surs i adresa IP destinatie (se poate specica i un prex de as s retea, conditia ind satisfcut de pachetele ce au adres a a a ncepnd cu a acel prex sau, eventual, pachetele ce au adres ce nu a ncepe cu acel prex), adresa MAC surs sau destinatie (pentru pachete ce intr, respectiv ies, a a prin interfete ce au conceptul de adres MAC), a protocolul (TCP, UDP, ICMP), portul surs sau destinatie (pentru protocoale care au notiunea de port), a tipul i subtipul ICMP (pentru pachete ICMP), s ag-uri ale diverselor protocoale, dimensiunea pachetului, starea conexiunii TCP creia apartine pachetul (vezi mai jos). a i Un nod (intermediar) prin care trec toate pachetele asociate unei conexiuni TCP poate, examinnd antetul TCP al ecrui pachet, s in a a a t a evident strii conexiunii. Ca urmare, nodul poate stabili dac un pachet a a a deschide o conexiune nou, apartine unei conexiuni deschise sau este un paa chet invalid. Este adevrat, acest lucru a nseamn o alcare a principiului separrii a nc a nivelelor: TCP este un protocol de nivel transport, deasupra nivelului retea. Ca urmare, modulele de retea nu ar trebui s interpreteze protocolul TCP (an a tetele TCP ar trebui considerate pur i simplu date utile). Ca urmare, nodurile s intermediare, din care nu actioneaz asupra pachetelor tranzit dect mod a n a ulul retea i modulele inferioare, nu ar trebui s ,, eleag protocolul TCP. s a nt a Regulile de ltrare se congureaz de ctre administratorul sistemua a lui. Ca i cazul parametrilor IP: s n Pe sistemele Linux, regulile aplicate de nucleul sistemului de operare se examineaz i se modic cu ajutorul unei comenzi iptables. a s a Regulile valabile la initializarea sistemului sunt congurate de script urile invocate la pornire, ind arcate dintr-un ier text. nc s
Pe sistemele Windows exist o interfat grac cu care se congureaz a a a a simultan regulile curente aplicate de nucleu i acelai timp acele reguli s n s sunt scrise registry pentru a arcate la repornirea sistemului. n nc Prin regulile de ltrare se urmresc de obicei urmtoarele lucruri: a a S e blocate pachetele pentru care se poate determina c adresa surs a a a a fost falsicat. Aici intr: a a - pachete ce intr pe interfat ctre Internet i au ca adres surs o a a a s a a adres din reteaua intern, a a - pachete ce au ca surs o adres de broadcast (clasa D) sau de clas a a a E, - pachete ce intr dinspre o anumit subretea au ca surs o adres ce a a a a nu face parte din subreteaua respectiv i nici din alte subretele as din directia respectiv. a S e interzise conexiunile din afara retelei locale ctre servicii care sunt a a oferite doar pentru reteaua local. De exemplu, accesul la un share a Windows este adesea de dorit s nu e posibil din afara retelei locale. a Pentru aceasta exist dou strategii: a a - se blocheaz pachetele destinate porturilor pe care ateapt conea s a xiuni serviciile respective; - se permit conexiunile ctre serviciile ce se doresc a accesibile din a afar (web, mail, eventual ssh), se permit conexiunile initiate din a interior i se interzic toate celelalte pachete. s Prima metod este mai simpl a necesit lista complet a serviciilor a a ns a a ce trebuie blocate. A doua metod este mai sigur, a a ntruct serviciile a sunt inaccesibile dac nu s-a specicat explicit contrariul, a este dicil a ns de permis intrarea pachetelor de rspuns pentru conexiunile initiate din a interior. Aceasta se ampl deoarece o conexiune initiat din interior nt a a are alocat un port local cu numr imprevizibil; ca urmare nu se poate a stabili o regul simpl pentru permiterea intrrii pachetelor destinate a a a acelui port. Solutia uzual este: a - pentru conexiun TCP, se permit pachetele asociate unei conexiuni deja deschise, se permit pachetele ctre exterior, se permit paa chetele destinate serviciilor publice i se interzic toate celelalte s pachete.
- pentru UDP, unde nu se poate ine evidenta unor conexiuni, se int terzic pachetele destinate unor servicii private, se permit pachetele spre exterior, se permit pachetele provenite de la serviciile ce se dorete a accesate exterior (serverele DNS sau NTP utilizate) s n i se interzic toate celelalte pachete. s S e interzise diferite alte pachete ,,dubioase, cum ar : a - pachete destinate adresei de broadcast a retelei locale sau adresei de broadcast generale (255.255.255.255), - pachete avnd ca adres surs sau destinatie adresa mainii locale a a a s (127.0.0.1) sau o adres privat. a a
Exemplul 10.15: Fie un ruter avnd spate o retea intern avnd adrese cu a n a a prexul 193.226.40.128/28. Ruterul are interfata eth0 cu adresa 193.0.225.20 ctre exterior i interfata eth1 cu adresa 193.226.40.129 ctre subreteaua loa s a cal. a Din reteaua local dorim s se poat deschide orice fel de conexiuni a a a TCP ctre exterior; din exterior dorim s nu se poat deschide alte conexiuni a a a dect ctre serverul http i https de pe 193.226.40.130 i ctre serverele ssh de a a s s a pe toate mainile din reteaua local. s a Din reteaua local dorim s putem accesa servicii DNS i NTP. Aces a a s tea le furnizm astfel: a pe ruter instalm un server DNS i un server NTP, accesibile din reteaua a s local; acestea furnizeaz serviciile respective pentru reteaua local a a a permitem cererile emise de serverele DNS i NTP de pe ruter, precum i s s rspunsurile corespunztoare. Cererile NTP provin de pe portul UDP a a 123 al ruterului i sunt adresate portului UDP 123 al unui nod din s exterior, iar cererile DNS sunt emise de pe un port UDP mai mare sau egal cu 1024 i sunt adresate portului DNS 53 de pe un nod extern. s Pentru diagnosticarea functionrii retelei vom mai permite trecerea a pachetelor ICMP ping, pong, destination unreachable i time exceeded. s Tracul interiorul retelei locale permitem fr restrictii. n l aa Blocm toate a ncercrile de spoong detectabile. a
# blocare spoofing detectabil si alte pachete dubioase iptables -A FORWARD -i eth0 -s 193.226.40.128/28 -j DROP iptables -A FORWARD -i eth0 -s 193.0.225.20 -j DROP iptables -A FORWARD -i eth0 -s 127.0.0.0/8 -j DROP
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 retele locale avnd ecare aceleai adrese private pentru o parte a a s din calculatoare.
Calculatoarele private nu este necesar s aib adrese unice Internet. a a n Adresele calculatoarelor private pot refolosite de ctre calculatoare private a din alte astfel de retele interne, de exemplu de cele ale institutiei B din gur. a De fapt, general, o adres trebuie s e unic doar multimea nodurilor n a a a n cu care un anumit nod ar putea dori s comunice. a situatia descris, este necesar ca adresele din Internet-ul ,,public In a s e unice, adresele din reteaua local s e unice i s nu existe suprapuneri a a a s a ntre adresele din Internet i adresele din reteaua local. Cerinta din urm s a a este determinat de cerinta ca nodurile cu adrese publice din reteaua proprie a s poat comunica i cu nodurile private i cu nodurile din Internet. a a s s Un pachet a crui adres destinatie este o adres privat este dirijat a a a a de ctre rutere astfel: a dac ruterul face parte dintr-o retea local care exist acea adres, a a n a a
pachetul este dirijat ctre unicul nod din reteaua local purtnd adresa a a a respectiv; a altfel, ruter-ul declar pachetul nelivrabil. a Aa cum am vzut 10.2.4.1, urmtoarele blocuri de adrese IP sunt s a n a alocate pentru astfel de utilizri retele private: 10.0.0.0/8, 172.16.0.0/12 i a n s 192.168.0.0/16. De cele mai multe ori, calculatoarelor private li se ofer posibiliti a at limitate de-a comunica cu calculatoare din Internet, prin intermediul unor mecanisme descrise paragrafele urmtoare. n a
Figura 10.8: Retea privat pentru exemplicarea mecanismului de translatie a adre a sei surs a
dup care trimite mai departe pachetul ctre C acest lucru este acum posia a bil deoarece G este reteaua intern, i ca urmare adresa lui C indic singurul n a s a nod din reteaua proprie avnd acea adres. a a Pentru ca mecanismul de mai sus s e realizabil, este necesar ca a ruterul G s poat determina crui nod privat este destinat mod real a a a i n ecare pachet avnd ca adres destinatie adresa G. De regul, acest lucru a a a necesit identicarea ecrui pachet venit din Internet ca rspuns la un pachet a a a dinspre un nod privat spre Internet. Acest lucru este cel mai simplu de fcut pentru conexiunile TCP. a Pentru o conexiune TCP, ruterul G urmrete pachetele de deschidere a coa s nexiunii. La primirea unui pachet de deschiderea conexiunii dinspre un nod privat C, de pe un port pc , ctre un server S, ruterul G aloc un port TCP a a local pg (de preferint pg = pc , a dac pc nu este liber se poate aloca un pg a ns a diferit). Pachetul de deschidere a conexiunii este modicat de G astfel at nc adresa surs s e G i portul surs s e pg . G pstreaz asocierea (C, pc , pg ). a a s a a a a La sosirea unui pachet cu adresa destinatie G i portul destinatie pg , ruterul s G pune adresa destinatie C i portul destinatie pc ; la primirea unui pachet s cu adresa surs C i portul surs pc ruterul G pune adresa surs G i pora s a a s tul surs pg . Asocierea (C, pc , pg ) este pstrat pn la a a a a a nchiderea conexiunii, determinat prin schimbul corespunztor de pachete. a a Exemplul 10.16: Pentru reteaua ilustrat gura 10.8, presupunem c a n a clientul C avnd adresa (privat) 192.168.0.123 deschide o conexiune TCP a a de pe portul efemer 3456 ctre serverul S, avnd adresa 193.226.40.130, pe a a
Sens CS CS
Intre C i G s surs a destinatie 192.168.0.123 193.226.40.130 port 3456 (pc ) port 80 193.226.40.130 192.168.0.123 port 80 port 3456 (pc )
Intre G i S s surs a destinatie 193.0.225.20 193.226.40.130 port 7890 (pg ) port 80 193.226.40.130 193.0.225.20 port 80 port 7890 (pg )
Tabelul 10.8: Adresele surs i destinatie ale pachetelor schimbate as ntre clientul C i serverul S exemplul 10.16 s n
portul 80 (pentru a aduce o pagin web). Ruterul G avnd adresa public a a a 193.0.225.20 efectueaz translatia adresei surs. Adresele pachetelor transmise a a ntre C i S sunt date tabelul 10.8. s n Pentru alte protocoale, asocierea este mai dicil de fcut. Pentru a UDP, exist notiunea de port i ca urmare identicarea pachetelor primite a s de G pe baza portului destinatie pg este posibil. Este a dicil de deter a ns minat durata valabilitii asocierii (C, pc , pg ), at nturct nu exist pachete de a a ,, nchiderea conexiunii UDP. Se poate a utiliza un timp de expirare, de ns ordinul ctorva minute, de exemplu, care dac nu trec pachete asocierea a n a este desfcut. Pentru ICMP ping i pong exist un numr de identicare a a s a a care poate folosit cu acelai rol ca i un numr de port. Translatia adreselor s s a pentru astfel de pachete functioneaz a ntocmai ca i cazul UDP. s n Mecanismul de translatie a adresei surs, descris mai sus, permite a deschiderea unei conexiuni de la un nod cu adres privat ctre un nod public a a a din Internet. Nodul privat ,,are impresia c comunic direct cu serverul din a a Internet. Serverul din Internet ,,are impresia c comunic cu ruterul G pe a a portul alocat de acesta. Fat de utilizarea adreselor publice, utilizarea adreselor private i a a s translatiei adresei surs are dou limitri majore: a a a nu permite deschiderea conexiunilor sens invers, dinspre Internet ctre n a un nod privat; dac pe conexiune sunt trimise, sub forma de date utile pentru protocolul a TCP, informatii privind adresa IP i portul de pe client, vor constatate s incoerente ntre IP-ul i portul clientului vzute de ctre server (acess a a tea ind G i respectiv pg ) i IP-ul i portul clientului vzute de client s s s a (acestea ind C i respectiv pc ). s Cea de-a doua limitare poate eliminat dac G cunoate protocolul a a s de nivel aplicatie dintre C i S i modic datele despre conexiune schimbate s s a
ntre C i S. Prima limitare poate eliminat msura care este vorba de s a n a n conexiuni initiate urma unor negocieri pe o conexiune anterioar (de exem n a plu, conexiunile de date din protocolul FTP); pentru aceasta, G trebuie, din nou, s urmreasc comunicatia dintre C i S i s modice datele privitoare a a a s s a la adresa i portul pe care clientul ateapt conexiune dinspre server. s s a 10.7.3.2. Translatia adresei destinatie Presupunem c avem o retea privat, un server S cu adres privat, a a a a un ruter G situat reteaua proprie dar avnd adres public i un client C n a a as din Internet. Clientul C dorete s deschid o conexiune ctre serverul S. s a a a Desigur, comunicarea ,,normal nu este posibil deoarece contextul lui C a a n adresa privat a lui S nu este unic. a a Este posibil a ca adresa publicat ( DNS-ul public) pentru serverul ns a n S s e adresa lui G. acest caz, C deschide conexiunea ctre G. Printr-un a In a mecanism similar cu cel din paragraful precedent, G modic de data aceasta a adresa destinatie, punnd, locul propriei adrese, adresa privat a lui S. Pa a n a chetul de rspuns de la S este de asemenea modicat de ctre G, care pune a a ca adres surs adresa proprie G loc de S. Astfel, S ,,are impresia c a a n a comunic direct cu C, iar C ,,are impresia c comunic cu G. a a a Translatia adresei destinatie poate util urmtoarele situatii: a n a dac avem o singur adres public i dorim s avem mai multe servere a a a as a accesibile din exterior, servere ce nu pot functiona pe aceeai main. s s a Putem furniza astfel un server HTTP i un server SMTP care apar din s Internet ca ind la aceeai adres IP dar sunt gzduite realitate pe s a a n calculatoare distincte. Necesitatea utilizrea calculatoarelor distincte a pentru aceste servicii poate rezulta din motive de securitate sau din motive legate de performantele calculatoarelor utilizate. dac dorim totui acces din afar ctre calculatoarele din reteaua intern. a s a a a De exemplu, pe ecare calculator ruleaz un server SSH. Fiecrui cala a culator vom asocia un port pe ruterul G. O conexiune din afar, prin i a protocolul SSH, ctre un anumit port de pe G va redirectionat ctre a a a serverul SSH de pe calculatorul privat corespunztor. a pentru a distribui cererile ctre un server foarte solicitat. acest caz, a In serverul va avea ca adres publicat DNS adresa lui G, a vor exista a a n ns de fapt mai multe servere pe calculatoare S1 , S2 , . . . , Sn reteaua n intern. Conexiunile deschise din Internet ctre G vor redirectionate a a echilibrat ctre serverele S1 , S2 , . . . Sn . Mai exact, la deschiderea unei a conexiuni ctre G, G alege un server Sk ctre care redirectioneaz acea a a a conexiune. Orice pachet ulterior de pe acea conexiune va redirectionat
10.7.4. Tunelarea
Prin tunelare se elege, general, transmiterea unor date aparnt n innd unui anumit protocol ca date utile cadrul unui protocol de acelai t a n s nivel sau de nivel superior. Ne vom ocupa cele ce urmeaz de tunelarea pachetelor IP, adic de n a a transmiterea pachetelor IP prin protocoale de nivel retea sau de nivel aplicatie. O situatie care este necesar tunelarea este aceea care exist n a n a dou retele private i se dorete ca nodurile din cele dou retele s poat a s s a a a comunica nerestrictionat ntre ele. De exemplu, avem o institutie care are dou sedii i are o retea privat in ecare sediu. Exist mai multe solutii a s a a pentru a realiza legtura: a Translatia adreselor realizeaz o legtur supus unor restrictii, studiate a a a a 10.7.3. n Unicarea zic a celor dou retele private, ducnd o legtur zic a a a a a a ntre ele (g. 10.9), ofer conectivitate complet, a ducerea unui cablu a a ns specual pentru aceasta poate extrem de costisitor.
Retea privat a Retea sediu A Retea sediu B
192.168.1.0/24
192.168.2.0/24
192.168.1.1
192.168.2.1
192.0.225.20
193.226.40.130
Internet
Tunelarea ofer conectivitate completa ca i legtura zic folosind lea s a a gturile la Internet existente. Constructia const realizarea unei coa a n nexiuni (de exemplu TCP) ntre dou rutere cu adrese publice din cele a dou retele interne (g. 10.10). Conexiunea dintre rutere este un ,,cablu a virtual ce preia rolul conexiunii zice.
Retea privat virtual (VPN) a a Retea sediu A Retea sediu B
192.168.1.0/24
192.168.2.0/24
192.168.2.1 192.168.0.2
Internet
Tunelul se prezint fat de nivelul retea ca i cnd ar o legtur a a s a a a zic. Ca urmare, ecare capt al tunelului este o interfat de retea, avnd o a a a a adres IP i o masc de retea. a s a Pentru tunelarea propriu-zis exist mai multe protocoale. Unele a a dintre protocoale cripteaz pachetele tunelate; astfel de protocoale ofer secua a ritatea unui cablu direct bine pzit. a Un tunel poate avea mai mult de dou capete. Un tunel cu mai multe a capete se comport ca o subretea cu mai multe interfete conectate la ea de a exemplu o retea Ethernet.
Capitolul 11
Aplicatii retele n
Mail user agent (MUA) SMTP Mail transfer agent (MTA) Mail transfer agent (MTA)
Mail user agent (MUA) POP3 sau IMAP Mail transfer agent (MTA) responsabil de adresa dest. SMTP
SMTP
Figura 11.1: Elementele sistemului de transmitere a potei electronice. Sgetile s a arat sensul care se initiaz comunicatia (de la client spre server), nu sensul care a n a n se transfer mesajul de pot electronic. a sa a
mail transfer agent-ul rspunztor de adresa destinatie, el este memoa a rat local (afar de cazul care are loc aici o rescriere de adres, vezi a n a 11.1.2.3). Utilizatorul destinatie citete mesajul cu ajutorul unui proces de tip mail s user agent. Acesta contacteaz mail transfer agent-ul responsabil de a adresa utilizatorului destinatie i recupereaz mesajul de la el. Trans s a ferul este initiat de MUA (adic de receptor). Exist dou protocoale a a a utilizate pentru transfer: POP3 i IMAP. s
Pentru a permite transmiterea mesajelor prin linii seriale incapabile s transmit caractere de 8 biti (ci doar caractere de 7 biti), este recomandabil a a ca mesajele s nu contin caractere cu codul a a ntre 128 i 255. s Datorit unor protocoale folosite pentru transmiterea i pentru stoa s carea mesajelor, se impun urmtoarele restrictii suplimentare asupra continutului a mesajelor: nici un rnd s nu constea doar dintr-un caracter punct; a a un rnd ce urmeaz dup un rnd vid s nu a a a a a nceap cu cuvntul From. a a De mentionat c protocolul de comunicatie dintre dou mail trans a n a fer agent-uri sunt transferate informatii privind adresa expeditorului i adresa s destinatarului, independente de cele plasate antetul mesajului. Aceste n informatii formeaz aa-numitul plic (engl. envelope) al mesajului. Expedi a s torul i destinatarul date antetul mesajului sunt informatii pentru utilizas n torul uman; informatiile de pe plic sunt cele utilizate efectiv transmiterea n mesajului. 11.1.1.1. Antetul mesajelor Antetul mesajelor este constituit dintr-un numr de cmpuri, ecare a a cmp avnd un nume i o valoare. De principiu, ecare cmp este un rnd a a s a a separat continnd numele, caracterul dou puncte (:) i valoarea; secventa a a s carriage return urmat de line feed actioneaz ca separator a ntre cmpuri. Ana tentul se termin cu dou secvente carriage return line feed consecutive. a a Dac un cmp este prea lung pentru a a a ncape ntr-un rnd (standardul a recomand ca rndurile s nu depeasc 78 de caractere i interzice rndurile a a a as a s a mai lungi de 998 caractere), cmpul poate continuat pe rndurile urmtoare, a a a care trebuie s a nceap cu spatiu sau tab; spatiile i tab-urile de la a s nceputul rndurilor urmtoare se consider ca fcnd parte din cmp. a a a a a a Exemplul 11.1: Un posibil document (vezi mai jos explicatiile privind sem nicatiile diverselor cmpuri): a
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu.
Principalele cmpuri ce pot apare a ntr-un mesaj sunt: To, Cc i Bcc reprezint adresele la care trebuie livrat mesajul. s a Adresele din cmpul To reprezint persoanele crora le este adresat a a a mesajul. Adresele din cmpul Cc reprezint persoane ce trebuie informate a a de trimiterea mesajului; de exemplu, corespondenta ocial n a ntre un angajat al unei rme i un client al rmei, angajatul va pune adresa s clientului cmpul To (deoarece acestuia este destinat mesajul), iar n a i cmpul Cc va pune adresa efului (care trebuie informat cu privire la n a s comunicatie). Adresele din cmpul Bcc reprezint pesoane crora le va livrat a a a mesajul, fr ca ceilalti destinatari s e informati despre aceasta. Cmpul aa a a Bcc este completat de ctre mail user agent i este eliminat de ctre a s a primul mail transfer agent de pe traseu. From, Sender i Reply-to reprezint adresa expeditorului i adresa la s a s care trebuie rspuns. a conditii obinuite, un mesaj contine doar cmpul From, reprezentnd In s a a adresa expeditorului mesajului i totodat adresa la care trebuie trimis s a un eventual rspuns. a Cmpul Sender este utilizat atunci cnd o persoan trimite un a a a mesaj numele altei persoane sau numele unei organizatii pe care o n n reprezint. Exist dou situatii practice care conduc la aceast situatie: a a a a Dac mesajul provine de la ef, dar este scris i trimis efectiv de secrea s s tara efului, atunci adresa efului este pus cmpul From, iar adresa s s a n a secretarei cmpul Sender. Dac o persoan trimite un mesaj nun a a a n mele unei organizatii, atunci adresa organizatiei va trecut cmpul a n a From i adresa persoanei ce scrie mesajul va plasat cmpul Sender. s a n a ne, cmpul Reply-to reprezint adresa la care trebuie trimis In a a un eventual rspuns la mesaj, dac aceast adres este diferit de adresa a a a a a din cmpul From. Dac destinatarul rspunde la un mesaj primit, utia a a liznd functionalitatea de reply a mail user agent-ului su, MUA-ul ofer a a a implicit, ca adres destinatie a mesajului de rspuns, adresa preluat din a a a cmpul Reply-to a mesajului original. lipsa unui cmp Reply-to, a In a MUA-ul ofer adresa din cmpul From. De asemenea, chiar prezenta a a n unui cmp Reply-to, este bine ca MUA-ul s ofere posibilitatea de-a a a trimite rspunsul la adresa din cmpul From. a a Un exemplu de utilizare a cmpului Reply-to este urmtorul: a a un mesaj adresat unei liste de discutii are ca From adresa autorului mesajului i ca To adresa listei. Mesajul se transmite centrului de s
distributie al listei (un mail transfer agent), care retransmite mesajul ctre abonatii listei. Mesajul retransmis ctre abonati va avea adugat a a a un cmp Reply-to indicnd adresa listei. Astfel, mesajul primit de a a abonat are From autorul mesajului, To adresa listei i Reply-to tot s adresa listei. Abonatul listei va rspunde foarte uor pe adresa listei a s deoarece mail user agent-ul su va prelua adresa listei din Reply-to i a s o va pune ca adres destinatie mesajul de rspuns. Totui, e bine ca a n a s utilizatorul s nu foloseasc orbete aceast facilitate, a a s a ntruct uneori a rspunsul este bine s ajung doar la autorul mesajului original, nu la a a a toat lista. . . a Received i Return-path au ca rol diagnosticarea sistemului de livrare a s mesajelor. Fiecare mail transfer agent de pe traseul mesajului adaug a fata mesajului un cmp Received care scrie numele mainii sale, n a n s numele i adresa IP a mail transfer agent-ului care i-a trimis mesajul, s data i ora curent i emittorul i destinatarul mesajului conform cererii s as a s mail transfer agent-ului care transmite mesajul (cei indicati pe ,,plicul i mesajului, nu cei din cmpurile To sau From). Astfel, un mesaj a ncepe cu un ir de antete Received continnd, ordine invers, nodurile prin s a n a care a trecut mesajul. Ultimul mail transfer agent adaug un cmp Return-path, cona a innd adresa surs a mesajului conform plicului (datele furnizate de t a a MTA-ul surs). a Cmpurile Received i Return-path sunt utilizate pentru a rea s turna un mesaj la autorul su cazul care apar probleme la livrarea a n n mesajului. De notat diferenta ntre Reply-to, care reprezint destia natarul unui eventual rspuns dat de utilizator la mesaj, i Return-path, a s care reprezint destinatarul unui eventual mesaj de eroare. a Date reprezint data generrii mesajului. Este mod normal completat a a n de mail user agent-ul expeditorului mesajului. Are un format standard, cuprinznd data i ora local a expeditorului precum i indicativul fusua s a s lui orar pe care se gsete expeditorul. Formatul cuprinde: ziua din a s sptmn (prescurtare de trei litere din limba englez), un caracter a a a a a virgul, ziua din lun, luna (prescurtarea de trei litere din limba ena a glez), anul, ora, un caracter dou puncte, minutul, optional a un a a nc caracter dou puncte urmat de secund i nal indicativul fusului a a s n orar. Indicativul fusului orar cuprinde diferenta, ore i minute, n s ntre ora local i ora universal coordonat (UTC ; vezi 7.3.1 pentru dea s a a talii). Faptul c ora local este or de var sau nu apare indicativul a a a a n de fus orar. Romnia are timpul iernii ora local egal cu UTC+2h, a n a a
iar timpul verii UTC+3h. n Subject reprezint o scurt descriere (ct mai sugestiv) a mesajului, a a a a dat de autorul mesajului. a Message-ID, In-reply-to, Reference servesc la identicarea mesajelor. Valoarea cmpului Message-ID este un ir de caractere care identic a s a unic mesajul. El este construit de ctre mail user agent-ul expeditorului a pornind de la numele calculatorului, de la ora curent i de la nite a s s numere aleatoare, astfel at s e extrem de improbabil ca dou mesaje nc a a s aib acelai Message-ID. a a s cazul rspunsului la un mesaj prin functia reply a mail user In a agent-ului, mesajul de rspuns contine un cmp In-reply-to avnd ca a a a valoare Message-ID-ul mesajului la care se rspunde. Valoarea cmpului a a Reference se creaz din cmpurile Reference i Message-ID ale mesajua a s lui la care se rspunde. Cmpurile Reference i Message-ID pot a a s folosite de exemplu pentru aarea, de ctre mail user agent-ul destinatie, s a a succesiunilor de mesaje legate de o anumit problem i date ecare a as ca replic la precedentul. a Resent-from, Resent-sender, Resent-to, Resent-cc, Resent-bcc, Resent-date i Resent-msg-id sunt utilizate dac destinatarul unui s a mesaj dorete s retrimit mesajul, fr modicri, ctre altcineva. O s a a aa a a astfel de retrimitere se poate efectua printr-o comand bounce sau rea send a MUA-ului. acest caz, cmpurile din antetul mesajului original In a (inclusiv From, To sau Date) sunt pstrate, reectnd expeditorul, destia a natarii i data trimiterii mesajului original. Pentru informatiile privind s retransmiterea (adresa utilizatorului ce efectueaz retransmiterea, desa tinatarii mesajului retransmis, data retransmiterii, etc.), se utilizeaz a cmpurile Resent-. . . enumerate mai sus. Semnicatia ecruia dintre a a aceste cmpuri Resent-. . . este identic cu semnicatia cmpului fr a a a aa Resent- corespunztor, dar se refer la retransmitere, nu la mesajul a a original.
11.1.1.2. Extensii MIME Standardul original pentru mesaje de pot electronic (rfc 822) a sa a suferit o serie de extensii. Acestea sunt cunoscute sub numele Multipurpose Internet Mail Extension (MIME ) i sunt descrise [RFC 2045, 1996], s n [RFC 2046, 1996] i [RFC 2047, 1996]. s Extensiile MIME servesc principal pentru a putea transmite iere n s ataate unui mesaj de pot electronic. s sa a
Un mesaj conform standardului MIME trebuie s aib un cmp a a a n antet cu numele Mime-version. Valoarea cmpului este versiunea standardua lui MIME conformitate cu care a fost creat mesajul. n 11.1.1.3. Ataarea ierelor i mesaje din mai multe prti s s s a Standardul MIME ofer posibilitatea atarii unor iere la un mesaj a sa s de pot electronic. Mecanismul se sa a ncadreaz a ntr-unul mai general, care permite formarea unui mesaj din mai multe prti. Un mesaj cu ataamente a s este dat exemplul 11.2. n Fiecare mesaj are antet un cmp, Content-type, care arat ce n a a tip de date contine i ce format sunt ele reprezentate. Exemple de tipuri s n sunt: text/plain (text normal), text/html (document HTML), image/jpeg (imagine format JPEG), etc. n De regul, partea din fata caracterului slash (/) arat tipul de docua a ment, iar partea a doua arat formatul (codicarea) utilizat. Astfel, o imaga a ine va avea Content-type de forma image/format; de exemplu, image/gif, image/jpeg, etc. Mesajele ce contin doar text obinuit trebuie s aib Content-type: s a a text/plain. Acesta este dealtfel tipul implicit cazul absentei cmpului n a Content-type. Mesajele cu ataamente au Content-type: multipart/mixed. s In general, un mesaj de tip multipart/subtip este format de fapt din mai multe ,,iere (oarecum ca un ier arhiv zip). s s a Intr-un mesaj multipart/mixed, de obicei una dintre prti este mesajul propriu-zis, iar ecare dintre celelalte a prti este cte un ier ataat. a a s s Fiecare parte a unui mesaj multipart are un antet i un corp, similar s cu un mesaj de sine stttor. Antetul prtii poate contine doar cmpuri aa a a specice MIME. Astfel, ecare parte are propriul tip, care poate particular n chiar un multipart. Cele mai importante subtipuri ale tipului multipart sunt: multipart/mixed nseamn pur i simplu mai multe componente puse a s mpreun, ca un ier arhiv. a s a multipart/alternative arat c prtile sunt variante echivalente ale a a a aceluiai document, formate diferite. s n Separarea prtilor unui mesaj de tip multipart se face printr-un a rnd ce contine un anumit text, ce nu apare nici una dintre prtile mesajua n a lui. Textul utilizat ca separator este plasat cmpul Content-type dup n a a multipart/subtip. Este scris sub forma (utilizabil i alte cmpuri i pena s n a s
tru alte informatii) unui ir boundary=ir situat dup irul multipart/subtip s s as i separat prin punct i virgul fat de aceasta. Exemplu: s s a a
Content-type: multipart/mixed; boundary="abcdxxxx"
Corpul mesajului multipart este separat dup cum urmeaz: a a fata primei prti precum i n a s ntre ecare dou prti consecutive se a a gsete un rnd format doar din textul de dup boundary= precedat de a s a a dou caractere minus (--); a dup ultima parte se gsete un rnd format doar din textul de dup a a s a a boundary=. Fiecare parte a unui mesaj de tip multipart/mixed are un cmp a Content-disposition [RFC 2183, 1997]. Valoarea acestui cmp arat ce a a trebuie s fac mail user agent-ul destinatie cu partea de mesaj care se a a n gsete acest antet. Valori posibile sunt: a s inline arat c mesajul sau partea de mesaj trebuie s e aat utia a a s a lizatorului; attachment arat c mesajul sau partea de mesaj nu trebuie aat a a s a dect la cerere. Un astfel de cmp poate avea continuare o informatie a a n suplimentar, filename=nume, arat numele sugerat pentru salvarea a a prtii respective. De notat c, din motive de securitate, mail user agenta a ul destinatie trebuie s nu salveze orbete partea de mesaj sub numele a s extras din mesaj, ci s cear mai ai permisiunea utilizatorului. caz a a nt In contrar, un adversar poate s trimit un ier avnd ataat un anumit a a s a s ier, cu care s suprascrie un ier al destinatarului. s a s
11.1.1.4. Codicarea corpului mesajului i a ataamentelor s s Standardul original al formatului mesajelor prevede c mesajele cona in doar text ASCII, cu utilizare restrictionat a caracterelor de control. Sint a gurele caractere de control (cele cu codurile ntre 0 i 31) admise sunt carriage s return (cod 13) i line feed (cod 10), utilizate pentru separarea rndurilor din s a mesaj. De asemenea, se recomand s nu se utilizeze caracterele cu coduri a a ntre 128 i 255, datorit imposibilitii transmisiei lor unele sisteme. s a at n Ca urmare, transmiterea unui ier arbitrar (inclusiv a unui text s ISO-8859) nu este posibil direct. a Transmiterea unui continut arbitrar se face printr-o recodicare a acestuia utiliznd doar caracterele permise corpul mesajului. Ca urmare, a n
mesajele apar, fat de mail transfer agent-uri, identice cu cele conforme fora matului original. Un mail user agent vechi, conform standardului original, nu va capabil s transmit un mesaj cu extensii MIME, iar cazul primirii unui a a n astfel de mesaj va aa l s ntr-un mod mai putin inteligibil pentru utilizator. Recodicarea este aplicat doar asupra corpului mesajului, nu i a s asupra antetului. Antetul contine un cmp, Content-transfer-encoding, a a crui valoare arat dac i ce recodicare s-a aplicat asupra continutului. a a a s Codicrile denite de [RFC 2045, 1996] sunt: a 7bit nseamn de fapt lipsa oricrei recodicri. plus, arat c a a a In a a mesajul nu contine dect caractere ASCII (cu codurile cuprinse a ntre 0 i 127). s 8bit arat c mesajul nu a fost recodicat, dar poate contine orice a a caractere (cu coduri ntre 0 i 255). s quoted-printables arat c ecare caracter de control i ecare cara a s acter egal (=) a fost recodicat ca o secvent de trei caractere, format a a dintr-un caracter egal (=) urmat de dou cifre hexa; acestea din urm a a reprezint codul caracterului original. De exemplu, caracterul egal se a recodic =3D, iar caracterul escape (cod 27) se recodic =1B. Restul a a caracterelor pot scrise direct sau pot recodicate ca i caracterele s speciale; de exemplu litera a poate scris a sau =61. a base64 corpul mesajului a fost recodicat baza 64 (vezi 7.4.2). n lipsa vreunui antet Content-transfer-encoding, se presupune In codicarea 7bit. Pentru un mesaj (sau o parte de mesaj) de tip multipart, mesajul (respectiv partea) nu este permis s e codicat dect 7bit sau 8bit, a a a ns ecare parte a unui multipart poate codicat independent de restul. a In mod curent, un mesaj cu ataamente are corpul mesajului codicat 7bit, s partea corespunztoare mesajului propriu-zis este codicat 7bit sau quoted-printables, a a iar prtile corespunztoare ataamentelor sunt codicate base64. a a s Exemplul 11.2: Un mesaj cu iere ataate este dat continuare: s s n
From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@cs.ubbcluj.ro> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj cu fisiere atasate MIME-Version: 1.0 Content-transfer-encoding: 7bit Content-type: multipart/mixed; boundary="qwertyuiop"
--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 uor de procesat de ctre calculator, dac cererea s-a exea s a a cutat cu succes sau nu i cauza erorii. Textul cuprinde informatii suplimentare s pentru diagnosticarea manual a transmiterii mesajelor. a Clientul trebuie s a nceap printr-o cerere HELO care are ca parametru a numele mainii clientului. Prin aceasta clientul se identic fat de server. De s a a notat c nu exist posibilitatea autenticrii clientului de ctre server; serverul a a a a este nevoit s ,,ia de bun numele transmis de client. a Dup identicarea prin cererea HELO, clientul poate transmite serverua lui mai multe mesaje de pot electronic. sa a Transmiterea ecrui mesaj va a ncepe printr-o cerere MAIL FROM:, avnd ca parametru adresa expeditorului mesajului. Dup acceptarea de a a ctre server a comenzii MAIL FROM:, clientul va trimite una sau mai multe a cereri RCPT TO:; ecare cerere are ca parametru o adres destinatie. Fiecare a cerere RCPT TO: poate acceptat sau refuzat de ctre server independent a a a de celelalte. Serverul va transmite mesajul ecreia dintre adresele destinatie a nal, clientul trimite o cerere DATA fr parametrii. Serverul acceptate. In aa rspunde, mod normal cu un cod de succes. caz de succes, clientul trima n In ite corpul mesajului, ncheiat cu un rnd pe care se gsete doar caracterul a a s punct. Dup primirea corpului mesajului, serverul trimite a un rspuns. a nc a Mesajele primite de MTA sunt plasate ntr-o coad de ateptare, stoa s cat de obicei iere pe disc. MTA-ul receptor a n s ncearc imediat s trimit a a a mai departe ecare mesaj primit. Dac trimiterea mai departe nu este posia bil imediat, mesajul este pstrat coad i MTA-ul re a a n as ncearc periodic s-l a a trimit. Dup un numr de a a a ncercri euate sau cazul unei erori netempoa s n rare (de exemplu, dac nu exist adresa destinatie), MTA-ul abandoneaz i a a as ncearc trimiterea unui mesaj (e-mail) de eroare a napoi ctre expeditor. a Dac adresa destinatie este local, MTA-ul plaseaz mesajul ierul a a a n s corespunztor cutiei potale a destinatarului. a s De notat c trimiterea mai departe, livrarea local sau trimiterea a n a unui mesaj de eroare, MTA-ul utilizeaz doar informatiile de pe plic, adic a a parametrii comenzilor MAIL FROM: i RCPT TO:, i nu valorile cmpurilor From s s a sau To din antetul mesajului. Exemplul 11.3: Fie mesajul din exemplul 11.1. Transmiterea lui de la MTAul de pe cs.ubbcluj.ro ctre example.com decurge astfel (rndurile transa a mise de la cs.ubbcluj.ro la example.com sunt precedate de o sgeat la a a dreapta, iar rndurile transmise sens invers de o sgeat la stnga): a n a a a
220 example.com HELO nessie.cs.ubbcluj.ro
250 example.com MAIL FROM: <rlupsa@cs.ubbcluj.ro> 250 Ok RCPT TO: <test@example.com> 250 Ok DATA 354 End data with <CR><LF>.<CR><LF> From: Radu Lupsa <rlupsa@cs.ubbcluj.ro> To: Test User <test@example.com> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.53462@nessie.cs.ubbcluj.ro Subject: Un mesaj dat ca exemplu Salut, Mesajul acesta este doar un exemplu. . 250 Ok: queued QUIT 221 Bye
Exemplul 11.4: Urmtorul mesaj ilustreaz utilizarea cmpurilor cazul a a a n unui mesaj transmis unei liste de utilizatori. Mesajul este reprodus aa cum s ajunge la un abonat al listei, avnd adresa test@example.com. Mesajul ilusa treaz, de asemenea, utilizarea cmpului Sender de ctre cineva care transmite a a a un mesaj numele altcuiva i a cmpului Cc. n s a
Return-path: errors-26345@comunitati-online.example Received: from server27.comunitati-online.example by example.com for test@example.com; 31 Aug 2007 22:09:23 -0700 Reply-to: Forumul OZN <ozn@comunitati-online.example> Received: from roswell.greenmen.example by server27.comunitati-online.example for ozn@comunitati-online.example; 1 Sep 2007 05:09:21 +0000 Received: from localhost by roswell.greenmen.example for ozn@comunitati-online.example; 1 Sep 2007 08:09:20 +0300 From: Organizatia omuletilor verzi <office@greenmen.example> Sender: Ion Ionescu <ion@greenmen.example> To: Forumul OZN <ozn@comunitati-online.example> Cc: Organizatia omuletilor verzi <office@greenmen.example> Date: Sat, 1 Sep 2007 10:12:20 +0300 Message-ID: my-emailer.20070901101220.534@roswell.greenmen.example In-reply-to: my-emailer.20070830222222.321@ufo.example
11.1.2.2. Determinarea urmtorului MTA a Un MTA care are un mesaj de transmis ctre o anumit adres dea a a termin urmtorul MTA cruia trebuie s-i transmit mesajul astfel: a a a a a 1. MTA-ul caut mai ai, printre informatiile sale de congurare (vezi a nt 11.1.2.3), dac are vreo regul privind adresa destinatie. Dac MTAa a a ul este responsabil de adresa destinatie a mesajului, memoreaz lo l a cal. Dac MTA-ul este poart de intrare a mesajelor pentru MTA-urile a a din reteaua local, transmite mesajul ctre MTA-ul determinat conform a a congurrii. a 2. Dac nu exist informatii de congurare pentru adresa destinatie, MTAa a ul caut DNS o a n nregistrare cu tipul MX pentru numele de domeniu din adresa destinatie. O astfel de nregistrare contine una sau mai multe nume de servere SMTP capabile s preia mesajele destinate unei a adrese din acel domeniu. Dac gsete o astfel de a a s nregistrare, MTA-ul contacteaz una din mainile specicate a s n nregistrrile MX gsite i-i a a s transmite mesajul. 3. Dac nu exist nici a a nregistrri MX, MTA-ul contacteaz maina cu a a s numele de domeniu din adresa destinatie i-i transmite mesajul. s 4. Dac nu exist nici un server cu numele de domeniu din adresa destinatie, a a adic dac toate cele trei variante de mai sus eueaz, atunci MTA-ul a a s a declar c mesajul este nelivrabil i transmite a a s napoi spre emittor un a mesaj de eroare. Un MUA lucreaz, de obicei, mult mai simplu. Acest lucru duce la a simplicarea MUA-ului prin separarea clar a rolurilor: MUA-ul trebuie s a a ofere faciliti de editare i s prezinte utilizatorului o interfat prietenoas, at s a a a iar MTA-ul are toate complicatiile legate de livrarea mesajelor. Pentru trans miterea oricrui mesaj, un MUA contacteaz un acelai MTA, a crui adres a a s a a este congurat optiunile MUA-ului. Pe sistemele de tip UNIX, MUA-urile a n contacteaz implicit MTA-ul de pe maina local (localhost). a s a
11.1.2.3. Congurarea unui MTA De cele mai multe ori, un MTA este resposnabil de adresele utilizatorilor calculatoarelor dintr-o retea local. acest caz, MTA-ul memoreaz a In a local mesajele adresate acestor utilizatori i le ofer acestora posibilitatea de s a a le citi prin IMAP sau POP3. De asemenea, MTA-ul preia i transmite spre s exterior mesajele utilizatorilor, generate de MUA-urile ce ruleaz pe calculaa toarele din reteaua local. a conguratii mai complicate, un MTA actioneaz ca punct de treIn a cere pentru mesajele care pleac sau sosesc la un grup de MTA-uri dintr-o a retea local. El preia mesajele de la toate MTA-urile din reteaua local a a n scopul retransmiterii lor ctre exterior. De asemenea, preia mesajele din extea rior destinate tuturor adreselor din reteaua local i le retrimite MTA-urilor, as din reteaua local, responsabile. Un astfel de MTA este numit mail gateway. a Un mail gateway poate util ca unic ltru contra viruilor i spam-urilor pens s tru o ntreag retea local ( opozitie cu a congura ecare MTA din reteaua a a n local ca ltru). a Un MTA trebuie congurat cu privire la urmtoarele aspecte: a care sunt adresele locale i cum se livreaz mesajele destinate acestor s a adrese; care sunt mainile ( principiu, doar din reteaua local) de la care se s n a accept mesaje spre a trimise mai departe spre Internet; a ce transformri trebuie aplicate mesajelor. a Implicit, un MTA consider ca ind adrese locale acele adrese care a au numele de domeniu identic cu numele mainii pe care ruleaz MTA-ul i s a s avnd partea de utilizator identic cu un nume de utilizator al mainii locale. a a s Pe sistemele de operare de tip UNIX, un mesaj adresat unui utilizator local este adugat la nalul unui ier avnd ca nume numele utilizatorului i situat a s a s directorul /var/mail. n MTA-ul responsabil de o anumit adres destinatie poate congurat a a de ctre utilizatorul destinatar s execute anumite prelucrri asupra mesajului a a a primit. Pe sistemele de tip UNIX, aceast congurare se face prin directive a plasate ierele .forward i .procmailrc din directorul personal al utilizan s s torului. Fiierul .forward contine un ir de adrese la care trebuie retrimis s s mesajul loc s e livrat local /var/mail/user. n a n Fiierul .procmailrc cuprinde instructiuni mai complexe de proces sare a mesajelor primite: functie de aparitia unor iruri, descrise prin exn s presii regulare, mesajul primit, mesajul poate plasat iere specicate n n s
.procmailrc sau poate pasat unor comenzi care s-l proceseze. n a Pentru cazuri mai complicate, un MTA poate congurat de ctre a administrator s execute lucruri mai complicate: a Este posibil s se congureze adrese de pot, situate domeniul numelui a sa n mainii locale, care s e considerate valide chiar dac nu exist utilizas a a a tori cu acele nume. Pentru ecare astfel de adres trebuie denit o list a a a de adrese, de regul locale, la care se va distribui ecare mesaj primit. a Ca exemplu, adresa root@cs.ubbcluj.ro este congurat acest fel; a n un mesaj trimis la aceast adres nu este plasat /var/mail/root ci a a n este retrimis utilizatorilor (congurati ierul /etc/aliases) care se n s ocup de administrarea sistemului. a Un MTA poate congurat s se considere responsabil de mai multe a domenii, ale cror nume nu au nimic comun cu numele mainii MTA-ului. a s De exemplu, se poate congura MTA-ul de pe nessie.cs.ubbcluj.ro s accepte mesajele destinate lui ion@example.com i s le livreze utia s a lizatorului local gheorghe. Desigur, pentru ca un mesaj destinat lui ion@example.com s poat livrat, mai trebuie ca mesajul s ajung a a a a pn la nessie.cs.ubbcluj.ro. Pentru aceasta, trebuie ca MUA-ul exa a peditor sau un MTA de pe traseu s determine ca urmtor MTA maina a a s nessie.cs.ubbcluj.ro, lucru care se ampl dac DNS se pune nt a a n o nregistrare MX pentru numele de domeniu example.com indicnd a ctre nessie.cs.ubbcluj.ro. Un astfel de mecanism este utilizat a n mod curent de furnizorii de servicii Internet pentru a gzdui pota eleca s tronic a unor clienti care au nume propriu de domeniu dar nu detin a servere de pot electronic care s preia pota adresat adreselor din sa a a s a domeniul respectiv. Dac utilizatorii expediaz mesaje de pe mai multe maini dintr-o retea a a s local, nu este de dorit ca numele mainii interne s apar adresa de a s a a n pot electronic. De exemplu, dac un acelai utilizator are cont pe sa a a s mai multe maini, nu este de dorit ca adresa expeditorului s depind s a a de maina de pe care utilizatorul scrie efectiv mesajul. De exemplu, nu s este de dorit ca dac scrie un mesaj pe maina linux.scs.ubbcluj.ro a s mesajul s apar avnd adresa surs From: ion@linux.scs.ubbcluj.ro, a a a a iar dac scrie de pe freebsd.scs.ubbcluj.ro s apar cu adresa a l a a From: ion@freebsd.scs.ubbcluj.ro. Pentru aceasta, MTA-ul care se ocup de livrarea spre exterior a mesajelor generate reteaua ina n tern va schimba, att antetul mesajului (valoarea cmpului From) a a n a ct i pe ,,plic (valoarea parametrului comenzii SMTP MAIL FROM:), a s adresa expeditorului, eliminnd numele mainii locale i pstrnd doar a s s a a
restul componentelor numelui de domeniu. exemplul de mai sus, din In adres rmne doar ion@scs.ubbcluj.ro. Modicarea poate mai a a a complex: astfel, dac nessie.cs.ubbcluj.ro este congurat s aca a a cepte mesajele destinate lui ion@example.com i s le livreze utilizatorus a lui local gheorghe, este probabil de dorit ca pentru mesajele compuse de utilizatorul local gheorghe s fac transformarea adresei surs din a a a gheorghe@nessie.cs.ubbcluj.ro ion@example.com. n Un alt element important de congurare privete decizia unui MTA de a s accepta sau nu spre livrare un mesaj. mod normal, un MTA trebuie s In a accepte mesajele generate de calculatoarele din reteaua local i mesajele as destinate adreselor locale, dar s nu accepte trimiterea mai departe a a mesajelor provenite din exterior i destinate exterior. Un MTA care s n accept spre livrare orice mesaje este numit mod curent open relay. a n Un open relay este privit de obicei ca un risc pentru securitate, deoarece este adesea utilizat de utilizatori ru-voitori pentru a trimite mesaje a ascunzndu-i identitatea. a s
Vericarea semnturii necesit a ca destinatarul s dispun de cheia public a a ns a a a autentic a expeditorului. Pn la generalizarea utilizrii mesajelor semnate, a a a a sistemul de pot electronic trebuie s asigure livrarea mesajelor nesemnate sa a a i consecint cu risc de a falsicate. s n a Uurinta falsicrii adresei surs i uurinta pstrrii anonimatului s a a s s a a autorului unui mesaj a dus la proliferarea excrocheriilor. Adesea excrocheriile constau trimiterea de mesaje unui numr mare de utilizatori (acest fapt n a sine este spam) speranta de-a gsi printre acetia unii care s se lase n n a s a pcliti. a a Spam-urile duneaz deoarece consum mod inutil timpul destia a a n plus, exist riscul ca un mesaj legitim, ,, natarului. In a ngropat ntre multe spam-uri, s e ters din greeal. a s s a Exist detectoare automate de spam-uri, bazate pe diferite metode a din domeniul inteligentei articiale. Astfel de detectoare se instaleaz pe a MTA-uri i resping sau marcheaz prin antete speciale mesajele detectate ca s a spam-uri. Un MTA care detecteaz i respinge sau marcheaz spam-urile se as a numete ltru anti-spam. s De mentionat ltrele anti-spam nu pot fcute 100% sigure deoarece a nu exist un criteriu clar de diferentiere. Ca urmare, orice ltru anti-spam va a lsa s treac un anumit numr de spam-uri i exist i riscul de-a respinge a a a a s as mesaje legitime. Majoritatea furnizorilor de servicii Internet nu permit, prin contract, clientilor s trimit spam-uri i depun eforturi pentru depistarea i penalizarea a a s s acest scop, ei primesc sesizri i autorilor. In a s ntretin liste cu adresele de la care provin spam-urile (liste negre blacklist). Trimiterea spam-urilor necesit recoltarea, de ctre autorul spama a urilor, a unui numr mare de adrese valide de pot electronic. Acest lucru a sa a se realizeaz cel mai uor prin cutarea, paginile web, a tot ceea ce arat a s a n a a adres de pot electronic. Contramsura la aceast recoltare este scrierea a sa a a a adreselor, din paginile web, doar forme dicil de procesat automat de n exemplu, ca imagine ( ntr-un ier jpeg, gif sau png). s Termenul de virus poate desemna mai multe lucruri, nrudite dar dis general, un virus informatic este un fragment de program a crui tincte. In a executie duce la inserarea unor cpii ale sale alte programe de pe calcula o n torul pe care se execut virusul. Impropriu, prin virus se mai desemneaz un a a fragment, inserat ntr-un program util, care execut actiuni nocive utilizatorua lui contul cruia se execut acel program. Denumirea corect pentru un n a a a astfel de program este aceea de cal troian. Denumirea de virus poate dat, a corect, doar fragmentelor de program capabile s se reproduc (s-i insereze a a as
cpii alte programe). o n contextul potei electronice, un virus este un fragment dintr-un In s program plasat ca ier ataat la un mesaj electronic. Virusul se poate repros s duce e prin mijloace independente de pota electronic, e prin expedierea, s a ctre alti utilizatori, a unor cpii ale mesajului. acest al doilea caz, virusul a o In utilizeaz, de obicei, adrese extrase din lista, inut de MUA, a adreselor a t a partenerilor de corespondent ai utilizatorului care primete mesajul virusat. a s Indiferent de forma de propagare (infectarea ierelor locale sau transs miterea de mesaje spre alti utilizatori), pentru a-i realiza scopul, un virus s trebuie s ajung s determine executia, cu drepturile utilizatorului victim, a a a a a unei secvente de instructiuni aleas de autorul virusului. Acest lucru se poate a ampla dou moduri: nt n a Virusul se gsete a s ntr-un program executabil, pe care utilizatorul exel cut. a Virusul este un document astfel construit at, exploatnd o eroare din nc a programul utilizat pentru vizualizarea documentului, s determine proa gramul de vizualizare s execute actiunea dorit de autorul virusului. a a Pentru a pcli destinatarul i a-l determina s execute sau s vizuala a s a a izeze ierul atat, corpul mesajului este construit astfel at s ctige s s nc a as ncrederea utilizatorului. Astfel, mesajul este adesea construit ca i cnd ar proveni de s a la administratorul de sistem sau de la un prieten al destinatarului. Metodele de prevenire a viruilor de pot electronic sunt aceleai s sa a s ca i metodele de prevenire a viruilor general. Pentru programele exes s n cutabile, dac utilizatorul are a ncredere autorul declarat al programului (de n exemplu, autorul este o rm de soft de a ncredere), atunci programul poate semnat electronic, iar utilizatorul poate verica aceast semntur pentru a se a a a convinge de autenticitatea programului. Pentru programe provenite din surse ce nu sunt de ncredere, executia lor se poate face ntr-un mediu controlat, de exemplu dintr-un cont separat, cu drepturi minime, sau prin intermediul unui interpretor care s nu execute instructiunile potential nocive. Aceast a a din urm abordare este utilizat de applet-urile Java. a a Pe lng aceste metode de prevenire, exist cteva actiuni care micoa a a a s reaz riscul sau consecintele executiei unui virus. Una dintre ele este reducerea a la minimul necesar a lucrului din cont de administrator. Alt msur prea a a ventiv este aceea de a nu vizualiza sau executa ierele ataate unui mesaj a s s suspect; pentru aceasta, este bine ca expeditorul unui mesaj s nu trimit a a niciodat un mesaj numai cu iere ataate, ci s scrie un mic text explicativ, a s s a care s-i permit destinatarului s identice autorul i scopul ierelor ataate. a a a s s s
general ne gndim c pe un astfel de sistem lucreaz un singur utiIn a a a lizator la un moment dat. Totui, exist i posibilitatea de-a conecta mai multe s as ansambluri tastaturecran la un acelai calculator, felul acesta lucrnd sia s n a multan mai multi utilizatori. Acest mecanism s-a utilizat masiv anii 1970, n sistemele ind numite cu time-sharig. PC-urile au repetat, pn la un punct, a a istoria calculatoarelor mari: au nceput ca sisteme monoutilizator, monotasking (sistemul DOS), au continuat cu un multitasking primitiv, bazat pe solutii ad-hoc (deturnarea ntreruperilor DOS, sistemul Windows pn la versiun a a nile 3.x), sisteme multitasking fr protectie aa ntre utilizatori (Windows 9x i s ME) i nal sisteme multitasking propriu-zise (Windows NT/2000/XP i s n s sistemele de tip UNIX Linux i porturile FreeBSD, Solaris, etc). s Linux (prin mecanismul consolelor virtuale) i Windows XP (prin s mecanismul switch user ) permit deschiderea simultan a mai multor sesiuni a locale de la acelai ansamblu tastaturecran, pentru acelai utilizator sau s a s pentru utilizatori distincti. O singur sesiune poate activ la un moment a a dat, celelalte ind ,, nghetate. Sistemul permite comutarea ntre sesiuni.
cazul unei sesiuni la distant, locul unui terminal, conectat In a n printr-o interfat specializat la calculatorul pe care se desfoar sesiunea, a a as a se utilizeaz un calculator, conectat prin retea la calculatorul pe care se a desfoar sesiunea. felul acesta, un utilizator aat fata unui calcuas a In n lator conectat la Internet poate deschide o sesiune la distant ctre orice alt a a calculator din Internet (bine eles, cu conditia s aib un cont acolo). Prinnt a a cipial, numrul de sesiuni deschise simultan ctre un calculator este limitat a a doar de resursele calculatorului (memorie i vitez de procesare). s a Deschiderea unei sesiuni prin mecanismul de sesiune la distant se a poate face i ctre calculatorul local. Acest mecanism poate utilizat pentru s a deschiderea unei sesiuni ca alt utilizator, fr a a a nchide prima sesiune.
server login bash telnet S. O. driver pseudoterminal hard client telnet S. O. driver terminal
hard
Calculator server
Retea
Calculator client
Terminal zic
Sistemul pentru deschiderea sesiunilor la distant (vezi g. 11.3) a const din dou componente majore: a a Pe sistemul la care este conectat zic utilizatorul ruleaz o aplicatie care a trimite prin retea ceea ce utilizatorul introduce de la tastatur i aeaz as s a pe ecran ceea ce trimite sistemul de la distant. Aarea se poate face pe a s tot ecranul sau ntr-o fereastr. Aceast aplicatie deschide mod activ a a n conexiunea la deschiderea sesiunii, motiv pentru care este un client. Pe sistemul de la distant, pe care are loc sesiunea, ruleaz o aplicatie a a care primete prin retea datele trimise de aplicatia client i le livreaz s s a proceselor ce ruleaz cadrul sesiunii. De asemenea, preia datele de a n ieire ale acestor procese datele care cazul unei sesiuni locale s-ar s n aa pe ecran i le trimite prin retea clientului. Aceast aplicatie este s s a lansat la pornirea sistemului i ateapt conexiuni ind acest sens a s s a n un server. La conectarea unui client, aplicatia server autentic clientul a dup care ( cazul unei autenticri cu succes) lanseaz procesele care a n a a sunt lansate mod normal la deschiderea unei sesiuni. De exemplu, n
cazul unui sistem de tip UNIX, serverul lanseaz executie un shell n a n rulnd contul utilizatorului. a n Pentru ca serverul s comunice cu procesele din cadrul sesiunii, a este necesar ca sistemul de operare s ofere un mecanism adecvat de a comunicatie ntre procese. Mecanismul de comunicatie trebuie s apar a a fat de procesele din sesiunea utilizatorului ca i cnd ar tastatura a s a i ecranul adevrate. cazul sistemelor de tip UNIX, acest mecanism s a In este mecanismul pseudoterminalelor . De notat c mecanismul pipe nu a este adecvat deoarece un pipe nu apare procesului ca un terminal i s nu permite, de exemplu, unui editor de texte, ce ar rula sesiunea n utilizatorului, s solicite primirea ecrui caracter tastat parte. De a a n notat c, mod normal, un proces primete cte o linie momentul a n s a n care utilizatorul apas enter ; pn atunci nucleul sistemului permite n a a a utilizatorului editarea liniei.
Pentru ecare sens, datele de transmis sunt grupate pachete, de n dimensiune variabil. Pentru ecare pachet de date utile, se construiete i se a s s transmite pe conexiune un pachet generat astfel: 1. Datele utile sunt comprimate utiliznd algoritmul de compresie curent a pentru sensul de comunicatie curent. 2. Se adaug, dup datele comprimate, un ir de octeti aleatori, iar fata a a s n lor se adaug un octet reprezentnd lungimea irului aleator. Apoi, a a s n fata irului astfel obtinut, se adaug lungimea total a irului, reprezen s a a s tat pe patru octeti. Numrul de octeti aleatori adugati trebuie astfel a a a ales at s rezulte urma concatenrii un ir de lungime multiplu de nc a n a s lungimea blocului cifrului utilizat. 3. Rezultatul pasului precedent se cripteaz. a fata blocului (necriptat) rezultat din pasul 2 se adaug numrul 4. In a a de ordine al pachetului curent, dup care din rezultatul concatenrii a a se calculeaz dispersia cu cheia de autenticare curent. Numrul de a a a ordine ncepe de la 0 i crete cu 1 la ecare pachet independent de s s eventuala schimbare a cheilor sau algoritmilor criptograci utilizati. 5. Pachetul transmis efectiv este rezultatul concatenrii pachetului criptat a (rezultat din pasul 3) cu dispersia cu cheie (rezultat din pasul 4). a Rolul acestor transformri este urmtorul. Pe de o parte, compresia a a crete entropia datelor de criptat, fcnd mai dicil spargerea cifrului. Octetii s a a a adugati la nalul blocului fac ca cazul repetrii aceluiai bloc de date a n a s utile s rezulte blocuri criptate diferite. Lungimea completrii aleatoare este a a i ea criptat, fcnd dicil determinarea lungimii datelor utile din blocul s a a a a criptat. Pe de alt parte, dispersia criptograc cu cheie se calculeaz dintra a a un bloc continnd datele utile i numrul de ordine al blocului, fapt ce permite a s a receptorului s verice c datele sunt autentice i c sunt proaspete numrul a a s a a de ordine al blocului primit este cel ateptat. Numrul de ordine al blocului s a ind cunoscut receptorului, nu este nevoie s e trimis efectiv. a cazul vreunei nepotriviri privitoare la dispersia criptograc cu In a cheie a unui bloc, conexiunea este abandonat. Remarcm faptul c o astfel a a a de nepotrivire poate cauzat doar de o tentativ de modicare a datelor a a de ctre un adversar activ, nivelul TCP i nivelele inferioare corectnd erorile a s a de transmisie la nivel zic i eventualele pierderi de pachete IP datorate unei s congestii retea. n La deschiderea conexiunii ssh, compresia, criptarea i dispersia cu s cheie sunt dezactivate. Negocierea primului set de chei i a algoritmilor de s compresie, criptare i dispersie cu cheie se face clar. O dat alese cheile s n a
i algoritmii, acestea sunt activate i se poate s s ncepe comunicatia folosul n aplicatiilor. Algoritmii i cheile pot renegociate ulterior oridecteori una s a dintre prti (clientul sau serverul) o solicit. a a Negocierea cheilor i algoritmilor se face dup cum urmeaz. Fiecare s a a parte trimite liste, ordinea descresctoare a preferintei, cu algoritmii de n a criptare, compresie, dispersie cu cheie, semntur digital i schimb de chei sua a as portate. Algoritmul utilizat, pentru ecare categorie, este primul algoritm de pe lista clientului care se regsete i lista serverului (adic cel mai favorabil a s s n a clientului, dintre cei acceptati de server). Urmeaz schimbul de mesaje con a form protocolului Die-Hellman (ssh nu are denite deocamdat alte metode a de schimb de chei). Din informatia secret construit prin schimbul Die a a Hellman se construiesc (pe baza unor functii de dispersie fr cheie) cheile aa secrete pentru criptare i pentru autenticare pentru ecare sens. s Mai rmne de autenticat schimbul Die-Hellman, despre care am a a vzut c, singur, este vulnerabil la atacul unui adversar activ. Autentia a carea cheii fat de client (adic autenticarea, fat de client, a serverului cu a a a care comunic acesta) se face dup cum urmeaz. Serverul are o pereche de a a a chei pentru semntur electronic. Clientul trebuie s aib cheia public a a a a a a a serverului. Dup realizarea schimbului Die-Hellman, serverul trimite cliena tului o semntur, calculat cu cheia sa secret, asupra a a a a ntregului schimb de informatie de pn atunci adic listele de algoritmi suportati i pachetele a a a s corespunztoare protocolul Die-Hellman, emise de ambele prti. Prin vera a icarea semnturii, clientul se asigur c negocierea a avut loc a a a ntr-adevr a cu serverul autentic. Autenticarea clientului fat de server se face ulterior, a existnd acest scop mai multe mecanisme posibile (vezi 11.2.1.2). a n Pentru facilitarea rspndirii utilizrii protocolului ssh, serverul transa a a mite la deschiderea conexiunii cheia sa public ctre client. Notm c, deoarece a a a a transmisia cheii publice a serverului nu poate a autenticat, utilizarea de nc a ctre client a cheii publice transmise de server prezint riscul ca un adversar a a activ s se dea drept serverul autentic. Dac a adversarul n-a modicat a a ns cheia public transmis de server, restul comunicatiei este sigur. Mai mult, a a la prima conectare, clientul stocheaz local cheia primit de la server. La a a urmtoarele conectri, clientul compar cheia primit de la server cu cea stoa a a a cat locat; dac sunt diferite, avertizeaz utilizatorul. acest fel, dac la a a a In a prima conectare cheia primit de client de la server este cea autentic, orice a a atac ulterior din partea unui adversar activ este descoperit. a La prima conectare a programului client ssh la un server nou, clientul avertizeaz utilizatorul cu privire la faptul c nu poate verica cheia serverului. a a La aceast prim conectare, a a mpiedicarea unui atac al unui eventual adversar
se poate face dou moduri: n a Inainte de prima conectare, utilizatorul copiaz, de pe maina server a s sau dintr-o surs autenticat, cheia public a serverului i o introduce a a a s manual lista de chei memorate local de programul client ssh. acest n In fel, clientul ssh poate verica cheia serverului chiar de la prima sesiune, ntocmai ca cazul unei sesiuni ulterioare. n Utilizatorul obtine, dintr-o surs autenticat (de exemplu, vorbind la a a telefon cu administratorul mainii server), dispersia criptograc a cheii s a publice a serverului. La prima conectare, utilizatorul compar dispersia a astfel obtinut cu dispersia cheii trimise de server (aceasta este aat a s a de clientul ssh mpreun cu mesajul de avertisment prin care anunt a a imposibilitatea vericrii cheii). Dac cele dou dispersii coincid, cheia a a a trimis de server este autentic. a a Pe sistemele de tip UNIX, cheile publice ale serverului (pentru diferitele protocoale de semntur) se gsesc directorul /etc/ssh, ierele ssh_host_rsa_key.pub, a a a n n s respectiv ssh_host_dsa_key.pub. Aceste iere pot citite de orice utilizator s al sistemului. Amprenta cheii dintr-un astfel de ier se determin cu comanda s a ssh-keygen -l -f ier. Cleintul ssh memoreaz cheile serverelor ierul s a n s ~/.ssh/known_hosts. 11.2.1.2. Metode de autenticare ssh n ssh, exist autenticare reciproc In a a ntre client i server. s Aa cum am vzut, serverul se autentic fat de client cu ajutorul s a a a unui mecanism cu cheie privat i cheie public. as a Dup initializarea mecanismului de protectie criptograc a conexiua a nii, este rndul clientului s-i declare identitatea (numele de utilizator) i s a as s a se autentice. Clientul poate autenticat de server prin mai multe metode. Cele mai comune sunt autenticarea prin parol i autenticarea prin semntur a s a a digital (numit i autenticare cu cheie public). a as a Autenticarea prin parol presupune trimiterea de ctre client a parolei. a a Este esential faptul c serverul este deja autenticat i condentialitatea, in a s tegritatea i prospetimea comunicatiei sunt protejate. Ca urmare clientul s nu risc s trimit parola unui adversar i nici ca un adversar ce capteaz a a a s a comunicatia criptat s retrimit datele interceptate pentru a repeta o sesiune a a a legitim. a Autenticarea prin semntur digital presupune ca faza de initia a a n alizare utilizatorul s congureze pe server o cheie public, corespunztoare a a a
cheii sale secrete. La conectare, clientul se autentic trimitnd semntura, cu a a a cheia sa secret, asupra identicatorului de sesiune creat faza de stabilire a n a comunicatiei protejate criptograc. Serverul veric semntura utiliznd a a a cheia public ce a fost congurat. a a Congurarea autenticrii cu cheie public, pe sistemele de tip UNIX a a avnd server OpenSSH, este descris continuare. a a n Perechile de chei se genereaz cu ajutorul utilitarului ssh-keygen. a Cheia public admisibil pentru conectarea contul unui utilizator a a n se scrie ierul ~/.ssh/authorized_keys (sub directorul personal al utin s lizatorului). Deoarece acest ier poate modicat doar de ctre posesorul s a contului, doar posesorul contului poate stabili cheia admisibil pentru auta enticare. Fiierul ~/.ssh/autthorized_keys poate contine mai multe chei. s acest caz, oricare dintre cheile secrete corespunztoare este valid pentru In a a autenticare. Este posibil ca, pentru anumite chei, s se congureze lansarea a unei anumite aplicatii; acest caz, dac clientul utilizeaz cheia pereche pen n a a tru autenticare, i se va lansa automat aplicatia respectiv i nu o sesiune a s nerestrictionat. a Pentru schimbarea cheii, de exemplu cazul compromiterii cheii sen crete, utilizatorul trebuie s genereze o nou pereche de chei, s scrie noua a a a cheie public ierul ~/.ssh/authorized_keys, s tearg vechea cheie a n s a s a public din acest ier i s furnizeze noua cheie secret clientului ssh la a s s a a conectrile ulterioare. Deoarece cheia public nu este o informatie secret, a a a compromiterea sistemului server nu duce la compromiterea, i deci la neces sitatea schimbrii, cheii. Acesta este un avantaj fat de cazul autenticrii a a a prin parole, unde compromiterea serverului duce la compromiterea parolei i s la necesitatea schimbrii parolei nu numai pe acel sistem ci i pe alte sisteme a s pe care utilizatorul avea aceeai parol. s a Pentru furnizarea cheii secrete ctre clientul ssh, exist dou posia a a biliti. Prima posibilitate este ca ierul cu cheia secret s e fcut disponiat s a a a bil clientului ssh. Dac ierul contine cheia secret ca atare, conectarea se a s a face fr ca utilizatorul s mai dea vreo parol. Dac utilizatorul dorete s aa a a a s a se conecteze de pe maini (client) diferite, trebuie e s poarte cheia cu el pe s a un suport amovibil, e s pun copii ale cheii secrete pe ecare sistem, e s a a a utilizeze chei diferite pentru conectarea de pe ecare sistem. Ultima solutie ofer avantajul c, cazul compromiterii unuia dintre sistemele client, este a a n necesar schimbarea cheii secrete doar de pe acel sistem. a Deoarece compromiterea unui sistem client duce, cazul stocrii ca n a atare a cheii secrete, la compromiterea imediat a contului utilizatorului, cheile a secrete se stocheaz, mod obinuit, form criptat iere. Criptarea a n s n a a n s
se realizeaz printr-un algoritm simetric cu ajutorul unei chei derivate dintr-o a parol aleas de utilizator. Stocarea cheii numai form criptat ofer un a a n a a a plus de sigurant (un intrus trebuie s obtin att ierul cu cheia secret, ct a a a a s a a i parola de decriptare a acestuia), a duce la necesitatea de a da clientului s ns ssh parola de decriptare la ecare utilizare. A doua posibilitate de a furniza aplicatiei client accesul la cheia se cret este prin intermediul unui program numit agent de autenticare. Agena tul de autenticare este un proces server care are memorie cheia secret a n a utilizatorului, forma decriptat. Clientul ssh se conecteaz la agentul de n a a autenticare pentru a obtine accesul la cheie. Agentul de autenticare, avnd ca nume de executabil ssh-agent, se a lanseaz de regul la deschiderea sesiunii pe maina client. Cheile secrete se a a s ncarc agentul de autenticare cu ajutorul unui program numit ssh-add. a n Acest program permite i listarea i tergerea cheilor secrete. Dac cheia ses s s a cret este stocat criptat, ssh-add solicit utilizatorului parola de decriptare. a a a Cheia secret decriptat se gsete doar memoria agentului de autenticare, a a a s n nu se stocheaz pe disc. a La lansare, clientul ssh caut s vad dac pe maina local ruleaz a a a a s a a un agent de autenticare. Dac da, contacteaz agentul de autenticare i-i soa a s licit accesul la cheile secrete stocate de acesta. Clientul ssh paseaz agentului a a identicatorul de sesiune i primete s s napoi semntura cu cheia secret asupra a a acestuia. acest fel, clientul ssh nu ajunge s cunoasc efectiv cheia secret. In a a a Deschiderea sesiunii ctre maina server se face fr a solicita utilizatorului a s aa vreo parol. a Comunicatia dintre clientul ssh sau utilitarul ssh-add i agentul de s autenticare se face printr-un socket de tip UNIX, al crui nume este pus a n variabila de mediu SSH_AUTH_SOCK. Comunicatia ind local, ea nu poate a interceptat sau modicat. Autenticarea clientului (ssh sau ssh-add ) se face a a prin aceea c drepturile de acces la socket-ul corespunztor sunt acordate doar a a proprietarului agentului de autenticare. Protocolul ssh permite constructia unei conexiuni securizate dinspre maina server ssh spre agentul de autenticare de pe maina client ssh. s s In acest caz, la deschiderea sesiunii, serverul ssh actioneaz i ca un agent de a s autenticare. Cererile de semntur primite de serverul ssh sunt trimise prin a a conexiunea ssh ctre client, iar clientul le trimite agentului local (de pe maina a s client). Prelungirea nu se poate face lipsa unui agent de autenticare pe n maina client. s Analiznd securitatea prelungirii conexiunii la agentul de autentia care, observm c serverul nu obtine efectiv cheia secret, a, pe durata a a a ns
conexiunii, poate deschide sesiuni numele clientului ctre orice main care n a s a accept cheile stocate agentul de autenticare. Din acest motiv, clientul a n ssh nu face prelungirea conexiunii la agentul de autenticare dect la cererea a explicit a utilizatorului. a 11.2.1.3. Multiplexarea conexiunii, tunelarea i aplicatii s O dat deschis conexiunea i realizat autenticarea clientului, cliena a s a tul ssh poate solicita serverului deschiderea unei sesiuni de lucru, adic a n esent lansarea unui shell contul utilizatorului autenticat. Tot la solica n itarea clientului, canalul de comunicatie creat de server ntre server i shell -ul s lansat poate realizat printr-un pseudoterminal (cazul obinuit al unei sesiuni s interactive) sau printr-o pereche de pipe-uri. A doua variant se utilizeaz a a n cazul care utilizatorul a lansat clientul ssh cu specicarea unei comenzi de n executat pe server. acest caz, comanda specicat de utilizator este transIn a mis serverului i acesta o execut cu intrarea i ieirea redirectionate ctre a s a s s a server i prelungite prin conexiunea securizat ctre client. Redirectionnd pe s a a a client intrarea sau ieirea standard a comenzii ssh, se realizeaz, per ansams a blu, redirectionarea intrrii sau ieirii standard ctre iere sau pipe-uri de pe a s a s maina local pentru comanda executat la distant. s a a a Exemplul 11.5: Comanda
ssh rlupsa@nessie.cs.ubbcluj.ro ls -l > lista
are ca efect nal crearea, pe maina local, a unui ier lista, continnd s a s a lista numelor de iere de pe maina nessie.cs.ubbcluj.ro din directorul s s personal al utilizatorului rlupsa.
tastatura ataat se numete client X. Un client X se conecteaz la serverul X s a s a i, dup auteticare, poate: s a s cear serverului s deseneze diverse lucruri pe ecran; a a a s solicite s primeasc informri cu privire la tastele apsate de utilizator a a a a a i la micrile mouse-ului. s s a La un server se pot conecta simultan mai multi clienti, inclusiv de pe calcula toare diferite. Serverul ine evidenta unor ferestre, ecare operatie de desenare at vnd specicat o fereastr care s deseneze. Ecranul cu totul este consida a a n a erat o fereastr, iar ecare fereastr se pot deschide subferestre. Serverul a n a ine evidenta modului care se suprapun ferestrele i determin ce parte din t n s a desenul efectuat ntr-o fereastr este vizibil i trebuie desenat pe ecran. a s Un client autenticat are acces deplin la tastatura i ecranul gestions ate de server. Asta nseamn, de exemplu, c un client poate s deseneze a a a ntr-o fereastr deschis de alt client i poate s capteze tot ceea ce tasteaz a a s a a utilizatorul acea fereastr. De principiu, sunt admise la un moment dat s n a a se conecteze doar aplicatii rulnd contul aceluiai utilizator. a n s Pentru ca aplicatii distincte s nu se a ncurce reciproc, exist nite a s linii mari, acestea conventii pe care aplicatiile se recomand s le respecte. In a a prevd ca o aplicatie s nu deseneze ferestrele deschise de alt aplicatie i a a n a s s nu capteze tastele cnd nu este activ. a a a Comutarea ntre aplicatii, precum i mutarea i redimensionarea fer s s estrelor principale ale aplicatiilor, cad sarcina unui client mai special numit n window manager . Window manager -ul se conecteaz i se autentic ca un a s a client obinuit, dup care solicit serverului s e informat de cererile de des a a a schidere de ferestre trimise de ceilalti clienti. La ecare fereastr principal de a a schis, window manager -ul adaug bara de titlu i marginile. Deoarece oricum a a s nu exist protectie a ntre clientii conectati la un server X, un client nu are nevoie de privilegii speciale ca s actioneze ca window manager. Totui, cteva dina s a tre operatiile de care are nevoie un window manager ca s functioneze sunt a acordate de serverul X doar unui client la un moment dat. Ca urmare, nu pot exista dou window manager -e simultan. a
O prim categorie de protocoale i aplicatii privete, principal, a s s n transferul ierelor unui utilizator de pe o main pe alta, conditiile care s s a n n utilizatorul are cont pe ambele maini. Protocoalele construite pentru aceasta s sunt ftp i ssh. De notat c i pota electronic poate servi ca mecanism de s as s a transfer de iere. s O a doua categorie privete transferul ierelor publice de la un cals s culator ce stocheaz astfel de iere la calculatorul unui utilizator ce dorete a s s s citeasc ierele respective. Initial se utiliza protocolul ftp acest scop. a a s n Protocolul utilizat mod curent este a http. n ns O a treia categorie pivete accesul proceselor de pe un calculator la s iere stocate pe alt calculator ca i cnd ierele ar locale. De principiu s s a s ierele respective sunt private, ca i pentru prima categorie de protocoale. s s Protocoalele din aceast categorie trebuie s satisfac dou cerinte specice a a a a (fat de prima categorie): s permit transferul doar a unei prti mici dintra a a a un ier i s permit controlul partajrii ierului s s a a a s ntre procese. Protocoalele utilizate aici sunt SMB (utilizat retelele Windows) i NFS. n s
serverul creaz (prin apelul sistem fork()) un proces u care se ocup de a a acel client; dup autenticare, procesul u trece contul utilizatorului auta n enticat (prin apelul setuid()); continuare, serverul accept orice comenzi n a de la client i s ncearc s le execute, iar vericarea drepturilor de acces este a a fcut de nucleul sistemului de operare momentul care procesul server a a n n u ncearc s acceseze sistemul de iere. a a s Pentru transferul de iere publice, serverul este congurat s accepte s a autenticare cu numele de utilizator ftp sau anonymous fr s solicite parol aa a a vremurile de sau acceptnd orice ir de caractere pe post de parol. In a s a nceput ale Internet-ului, se obinuia ca un utilizator ce dorea acces la iere publice ss s a i dea, pe post de parol, adresa sa de pot electronic. O dat cu rspndirea s a sa a a a a spam-urilor, s-a renuntat la acest obicei. Transferul ierelor se cere prin comenzile SEND (dinspre client spre s server) i RETR (dinspre server spre client). Comenzile au ca argument numele s de pe server al ierului de transferat. Transferul propriu-zis are loc printr-o s conexiune separat, numit conexiune de date. Pentru ecare ier se deschide a a s o nou conexiune de date, care se a nchide la nalul transferului ierului. s Dimensiunea ierului nu este specicat explicit nicieri, receptorul ierului s a a s obtinnd lungimea din faptul c emittorul a a a nchide conexiunea de date la nalul ierului. s Exist dou moduri de deschidere a conexiunii de date: a a Modul activ prevede c serverul deschide conexiunea de date ca o conea xiune TCP dinspre portul 20 al serverului ctre un port specicat de a client. Clientul specic portul pe care ateapt conexiunea prin coa s a manda PORT. Conexiunea se deschide ca urmare a comenzii de transfer (SEND sau RETR), nu imediat dup primirea comenzii PORT. a Modul pasiv prevede deschiderea conexiunii de date de ctre client, dina spre un port oarecare al su, ctre un port specicat de server. Portul a a specicat de server se obtine ca rspuns al comenzii PASV date de client. a Acesta este singurul caz care clientul interpreteaz din rspunsul n a a serverului i altceva dect codul returnat. s a Listarea ierelor de pe server este solicitat de client prin comanda s a LIST. Trasnferul listei de iere se face tot printr-o conexiune de date, ca i s s n cazul comenzii RETR.
public. El nlocuiete protocolul ftp utilizat cu conectare ca utilizator anonys mous. Dei numele protocolului face referire la hipertext, el poate utilizat s pentru a transfera orice fel de continut. Protocolul de baz const trimiterea de ctre client a unei cereri, a a n a care informatia principal este numele ierului cerut. Rspunsul serverului n a s a contine nite informatii despre ier i continutul efectiv al ierului. Implicit, s s s s conexiunea se nchide dup transferul unui ier. Dac clientul dorete mai a s a s multe iere de pe acelai server, va trebui s deschid cte o conexiune pentru s s a a a ecare ier. s Protocolul a fost a extins, ajungnd s e folosit ca protocol de ns a a transfer de date pentru aplicatii de orice tip. 11.3.2.1. Structura cererilor i a rspunsurilor s a Formatul comunicatiei este mixt, att la cereri ct i la rspunsuri. a a s a Partea de nceput este text, iar continutul ierului este binar. s Cererea cuprinde, pe prima linie, un cuvnt reprezentnd numele a a operatiei cerut. Pentru solicitarea unui ier public de pe server, numele este a s GET. Dup numele operatiei urmeaz numele ierului i apoi identicarea a a s s versiunii de protocol conformitate cu care este format cererea. Cele trei n a elemente sunt separate prin cte un spatiu. a Urmtoarele linii sunt de forma nume:valoare, similar cu antetul unui a mesaj de pot electronic. Dup ultima linie de antet urmeaz o linie vid. sa a a a a Pentru unele tipuri de cereri, dup linia goal se gsete un continut. acest a a a s In caz, una dintre liniile din antet are numele Content-length i are ca valoare s lungimea continutului, dat ca ir de cifre zecimale. a s Rspunsul este structurat similar cu cererea. Pe prima linie se a a a identicatorul versiunii HTTP, numr de trei cifre i un text. Numrul arat a s a a dac cererea a fost satisfcut cu succes sau nu, iar textul, neinterpretat a a a de client, este o descriere cuvinte a semnicatiei codului de trei cifre. n Urmtoarele linii sunt de forma nume:valoare i dau informatii despre ierul a s s solicitat. Dup ultima linie de antet urmeaz o linie vid i apoi continutul a a as (binar) al ierului. antet se gsete o linie cu numele Content-length s In a s avnd ca valoare lungimea ierului. Determinarea sfritului continutului a s as propriu-zis de ctre client trebuie fcut prin numrea octetilor din partea de a a a a continut. Adesea, mai multe servere HTTP sunt gzduite zic pe acelai cala s culator. acest caz, e numele serverelor corespund, prin DNS, unor adrese In IP diferite, dar apartinnd aceluiai calculator, caz care serverul este con a s n gurat s rspund functie de IP-ul ctre care a fost deschis conexiunea, a a a n a a
e numele serverelor corespund aceleiai adrese IP, caz care este necesar ca s n cererea HTTP s e specicat serverul dorit. Acest lucru se realizeaz prin n a a aceea c, cererea clientului, se plaseaz un antet cu numele Host i avnd a n a s a ca valoare numele de server dorit. 11.3.2.2. URL-urile O pagin web este general un ier scris HyperText Markup a n s n Language (HTTP) i oferit acces public prin protocolul HTTP. s n O pagin web const, de obicei, din mai multe iere. Exist un ier a a s a s de baz, scris limbajul HTML, i alte iere, continnd anumite elemente ale a n s s a paginii: imagini ( iere separate formate specice JPEG, PNG, GIF), n s n applet-uri (Java), specicri de formatare a paginii (iere Cascading Style a s Sheet CSS). De asemenea, o pagin contine general legturi (link -uri) a n a spre alte pagini. Toate acestea necesit referiri dintr-un ier HTML ctre alte a s a iere disponibile acces public. Referirea acestor iere se face prin nume s n s care s permit regsirea lor uoar. a a a s a Un Universal Resource Locator (URL) este un nume prin care se poate identica i cu ajutorul crora se potate regsi o resurs disponibile s a a a n Internet. URL-urile au aprut ca un format standard de scriere a numelor a ierelor referite din paginile web; ele permit a utilizri mult mai vaste. s ns a Un URL este alctuit general din trei componente: a n Tipul identic protocolul utilizat. Exemple mai cunoscute sunt: http, a ftp, https, mailto. Numele mainii este numele de domeniu sau adresa IP a mainii pe care s s se gsete resursa (ierul). a s s Pe lng numele mainii, cadrul acestei componente se poate a a s n aduga numele de utilizator contul cruia trebuie s se autentice un a n a a client pentru a obtine accesul dorit la resurs. Numele de utilizator se a d fata numelui sau adresei mainii, separat de acesta prin caracterul a n s @. Standardul original prevedea i posibilitatea de-a scrie URL parola s n necesar conectrii. Aceast utilizare este nerecomandat. a a a a Calea identic resursa (ierul) cadrul serverului care o gzduiete. a s n a s In principiu, ea este calea complet a ierului cerut, relativ la un director a s a de baz, xat, al documentelor publice. a URL-urile se pot utiliza i se utilizeaz efectiv multe alte scopuri s a n dect identicarea paginilor web. De exemplu, sistemul SubVersion (SVN) a utilizeaz URL-uri de forma svn://main /cale pentru a referi ierele dintra s a s un repository.
11.3.2.3. Alte faciliti HTTP at Antetul rspunsului HTTP ofer mai multe informatii despre ierul a a s returnat: Tipul continutului ierului este specicat de ctre server prin intermediul s a unui antet cu numale Content-type i cu valoarea construit ca i s a s n cazul antetului Mime-type de la pota electronic. Tot ca i cazul lui s a s n Mime-type, tipul continutului poate urmat de specicarea codicrii a utilizate pentru text; de exemplu,
Content-type: text/html; charset=utf-8
nseamn c ierul este de tip HTML, iar codicarea utilizat pentru a a s a caractere este UTF-8. Data ultimei modicri a ierului este specicat prin valoarea antetului a s a cu numele Date. Tipul de compresie utilizat (dac ierul returnat este comprimat) este a s dat ca valoare a antetului Content-transfer-encoding. Limba care este scris textul din ier (dac este cazul) este returnat n s a a ca valoare a antetului Language:. Este posibil ca unui URL s-i corespund mai multe iere pe server, a a s avnd continut echivalent, dar diverse formate, limbi sau codicri. Pentru a n a a selectiona varianta dorit, clientul poate anunta posibilitile i preferintele a at s sale cu privire la tipul de ier, limb i codicare. Antetele corespunztoare, s as a din cererea clientului, sunt: Accept, Accept-language i Accept-encoding. s Fiecare dintre acestea are ca valoare o list de variante, ordinea preferintei. a n De exemplu,
Accept-language: ro,en,fr
solicit serverului, de preferint, varianta limba romn a textului. Dac o a a n a a a variant limba romn nu este disponibil, se solicit una limba englez, a n a a a a n a iar lipsa acesteia una limba francez. n n a Protocolul HTTP permite formularea de cereri conditionate sau par iale. O cerere partial este util dac ierul cerut este mare i clientul dorete t a a a s s s s-l aduc din buci sau dac la o cerere precedent a czut legtura dup a a at a a a a a transferul unei prti din ier. O cerere conditionat determin serverul s a s a a a transmit clientului ierul numai dac este a s a ndeplinit o anumit conditie, cel a a mai adesea dac a fost modicat mai recent dect o anumit dat specicat a a a a a
de client. Dac nu este a ndeplinit conditia, serverul d un rspuns format a a a doar din antet, fr continutul propriu-zis. Aceast facilitate este util dac aa a a a clientul detine o copie a unui ier i dorete s s s mprosptarea acesteia. Cererea a partial se specic de ctre client prin intermediul antetului Range; cererea a a a conditionat se specic prin antetul If-modified-since. a a Pentru optimizarea tracului, cazul care un client dorete mai n n s multe iere de pe acelai server (aceasta se ampl adesea cazul care s s nt a n n clientul aduce un ier html, iar apoi are de adus imaginile i eventual alte s s obiecte din document), este prevzut posibilitatea de-a pstra conexiunea a a a acest scop, clientul cere pstrarea deschis pe durata mai multor cereri. In a a conexiunii deschise, plasnd cerere antetul a n
Connection: keep-alive
Pentru a nu permite unor clienti s deschid o conexiune i apoi s o lase a a s a deschis la nesfrit, innd ocupate resurse pe server, serverul trebuie conga as t a urat s a nchid automat conexiunea dac nu se transfer date o perioad de a a a a timp. Este uneori util ca un utilizator care acceseaz un URL s e redireca a ionat automat ctre alt URL. Aceasta se ampl dac administratorul saitt a nt a a ului decide o reorganizare a paginilor i dorete ca utilizatorii care au retinut s s URL-uri desintate urma reorganizrii s e redirectionati ctre paginile n a a a corespunztoare din noua organizare. Aceast redirectionare se face prin trima a iterea de ctre server a unui antet cu numele Location i avnd drept continut a s a URL-ul spre care se dorete redirectionarea clientului. acest caz, programul s In client nu aeaz continutul returnat de server (continut care mod normal s a n lipsete complet), ci cere i aeaz continutul de la URL-ul indicat antetul s s s a n Location. 11.3.2.4. Proxy HTTP Un proxy HTTP este un proces care, fat de un client HTTP, actioa neaz aproape ca un server HTTP, iar pentru satisfacerea cererii contacteaz a a serverul solicitat de client i actioneaz, fat de acest server, ca un client. s a a Un proxy HTTP este utilizat mod normal pentru urmtoarele n a functii: dac dintr-o retea local exist anse mari ca mai multi utilizatori s a a a s a acceseze aceleai pagini web: acest caz, clientii HTTP ai calculas In toarelor din retea se congureaz s utilizeze un acelai proxy HTTP a a s din reteaua local. Dac exist mai multe cereri pentru aceeai pagin, a a a s a la prima cerere proxy-ul memoreaz pagina adus, iar la urmtoarele a a a cereri o servete clientilor din memoria local. s a
dac a ntr-o retea se utilizeaz adrese IP locale (vezi 10.2.4.1 i 10.7.2) i a s s nu se dorete congurarea unui mecanism de translatie de adrese (NAT, s 10.7.3): acest caz, se instaleaz un proxy HTTP pe un calculator In a din reteaua local dar avnd i adres IP public. Clientul acceseaz a a s a a a proxy-ul prin reteaua local, iar proxy-ul, avnd adres public, poate a a a a accesa fr restrictii serverul dorit. aa dac este de dorit un control n asupra paginilor ce pot accesate dintra o retea local (de exemplu, pentru a restrictiona accesul angajatilor la a saituri nelegate de activitatea lor normal). acest caz, se conga In ureaz un proxy care se congureaz toate restrictiile de acces dorite. a n a Apoi, pentru a mpiedica accesul direct, prin evitarea proxy-ului, pe ruterul ce leag reteaua intern la Internet se congureaz un ltru de a a a pachete ( 10.7.1) care s blocheze pachetele adresate portului TCP 80 a al serverelor exterioare. O diferenta ntre protocolul de comunicatie dintre un client i un s proxy fat de protocolul client-server este c, dup o cerere (de exemplu, GET), a a a la protocolul client-server urmeaz calea local din URL, iar la protocolul a a client-proxy urmeaz URL-ul solicitat (inclusiv numele protocolului i numele a s serverului). O a doua diferent este dat de existenta unei cereri, CONNECT, ce a a poate adresat doar unui proxy. La primirea unei cereri CONNECT, proxya ul deschide o conexiune ctre serverul specicat comanda CONNECT i apoi a n s retrimite datele dinspre client direct spre server i, reciproc, dinspre server s napoi spre client. cazul unei cereri CONNECT, proxy-ul nu se implic mai In a departe comunicatia dintre client i server. Ca urmare, acest caz proxy-ul n s n nu mai memoreaz paginile aduse i nu permite ltrarea cererilor dect dup a s a a serverul i portul la care se conecteaz, schimb permite tunelarea oricrui s a n a protocol (nu numai a protocolului HTTP) ntre un client dintr-o retea cu adrese interne i un server din Internet. s 11.3.2.5. Conexiuni securizate: SSL/TLS SSL Secure Sockets Layer , rom. nivelul conexiunilor securizate este un protocol pentru securizarea conexiunilor. A fost creat de rma Netscape vederea securizrii comunicatiei n a ntre clientul i serverul HTTP. s Protocolul este a sucient de exibil pentru a permite oricrei aplicatii ce ns a comunic prin conexiuni s-l foloseasc. TLS [RFC 4346, 2006] Transport a a a Layer Security, rom. securitate la nivel transport este derivat din SSL versiunea 3, dar dezvoltat de IETF (Internet Engineering Task Force). cele ce In
urmeaz, vom discuta doar despre TLS, a toate chestiunile prezentate sunt a ns valabile i pentru SSL. s Protocolul TLS presupune existenta unei legturi nesecurizate a ntre un client (entitatea care initiaz activ comunicatia) i un server (entitatea a s care ateapt s e contactat de ctre client). Legtura nesecurizat este, s a a a a a a mod obinuit, o conexiune TCP. Protocolul TLS ofer un serviciu de tip n s a conexiune. TLS asigur condentialitatea i autenticitatea datelor utile transa s portate. Datele utile transportate de TLS pot apartine oricrui protocol. Pro a tocolul ale crui date sunt transportate ca date utile de ctre TLS este numit a a tunelat prin TLS. cadrul initierii unei conexiuni TLS, se realizeaz stabilirea unei In a chei de sesiune care este utilizat continuare pentru securizarea transportua n lui datelor utile. Autenticarea stabilirii cheii poate unilateral, doar cliena tul autenticnd serverul cu care a realizat negocierea cheii de sesiune, sau a bilateral. cazul autenticrii unilaterale, se poate utiliza o autenticare a a In a clientului fat de server cadrul protocolului tunelat. acest caz, deoarece a n In serverul este deja autenticat, autenticarea clientului poate fcut prin a a parol, fr riscul ca parola s e transmis unui adversar. a aa a a Autenticarea stabilirii cheii de sesiune se face printr-un mecanism de semntur digital. Pentru distribuirea sigur a cheilor publice, utilizate a a a a cadrul autenticrii, se utilizeaz certicate ( 6.3.4). n a a Serverul trebuie s aib o pereche de chei pentru semntur digital a a a a a i un certicat, semnat de o autoritate care clientul are s n ncredere, pentru cheia public. La initierea conexiunii TLS, serverul transmite clientului certia catul su Clientul veric faptul c numele din certicat coincide cu numele a a a serverului la care dorea conectarea, c semntura autoritii de certicare a a at asupra certicatului este valid, c autoritatea de certicare este de a a ncredere i, nal, utilizeaz cheia public din certicatul clientului pentru a autens n a a tica stabilirea cheii de sesiune. Dac se dorete i autenticarea clientului a s s fat de server tot prin TLS, atunci clientul trebuie s aib, la rndul su, o a a a a a pereche de chei i un certicat. s vederea vericrii semnturii din certicat i a faptului c semIn a a s a natarul (autoritatea de certicare) este de ncredere, ecare dintre parteneri trebuie s aib o list cu cheile autoritilor de certicare de a a a at ncredere. Cheia unei autoriti de certicare este, mod obinuit, plasat tot at n s a ntr-un certicat. Certicatul unei autoriti de certicare poate semnat de ctre o at a alt autoritate de certicare sau chiar de ctre autoritatea posesoare a certia a catului. acest din urm caz, certicatul se numete certicat autosemnat In a s
(engl. self-signed certicate) sau certicat rdcin (engl. root certicate). a a a In majoritatea cazurilor, clientul are o multime de certicate autosemnate ale autoritilor care are at n ncredere. Exist mai multe produse soft pentru crearea perechilor de chei i a s pentru crearea i semnarea certicatelor. Un astfel de produs este OpenSSL, s disponibil pe sistemele de tip UNIX. 11.3.2.6. Utilizarea TLS pentru web Transferul securizat al paginilor web se realizeaz prin tunelarea proa tocolului HTTP peste SSL sau TLS. Constructia realizat se numete HTTPS. a s URL-urile resurselor accesibile prin conexiuni securizate au, ca nume al protocolului, irul de caractere https ( loc de http). s n Un navigator web care are de adus o pagin a crei URL are, a a n partea de protocol, https, execut urmtoarele: a a Afar de cazul care URL-ul specic explicit un numr de port, clientul a n a a deschide conexiunea ctre portul 443 al serverului ( loc de portul 80, a n implicit pentru HTTP). Dac, locul contactrii directe a serverului web, se utilizeaz un proxy, a n a a clientul trimite serverului proxy o cerere CONNECT pentru stabilirea conexiunii spre server. Prin aceast conexiune, stabilit prin intermediul a a proxy-ului, se transmit mesajele SSL sau TLS, cadrul crora se transn a mit datele HTTP. La deschiderea conexiunii (e conexiune TCP direct, e un lant de coa nexiuni TCP prin intermediul proxy-ului), are loc mai ai schimbul de nt mesaje legat de stabilirea cheii SSL sau TLS. Dup initializarea conea xiunii securizate, prin canalul securizat are loc un dialog conform protocolului HTTP. Cu alte cuvinte, cererile i rspunsurile HTTP constituie s a date utile pentru nivelul SSL sau TLS. Autenticarea serverului, cadrul protocolului TLS, necesit, aa n a s cum am vzut, ca navigatorul web s dispun de certicatele autoritilor de a a a at certicare de ncredere. general, productorii de navigatoare In a ncorporeaz a acestea nite certicate, ale unor autoriti de certicare larg recunoscute. n s at Utilizatorul poate a s dezactiveze oricare dintre aceste certicate, precum ns a i s adauge alte certicate. s a Atragem atentia asupra unor particulariti legate de utilizarea HTTPS: at Deoarece autenticarea serverului, prin mecanismul TLS, se face naintea trimiterii cererii HTTP, certicatul trimis de server nu poate depinde de antetul Host transmis de ctre client. Ca urmare, dac mai multe a a
saituri web securizate sunt gzduite de un acelai calculator, este necea s sar ca aceste saituri s e distinse prin adresa IP sau prin numrul de a a port. cazul care s-ar utiliza doar antetul Host pentru ca serverul s In n a determine saitul cerut de client, serverul ar trimite acelai certicat ins diferent de saitul dorit de client. Ca urmare, ar exista o nepotrivire ntre numele din certicat i numele saitului solicitat de client. consecint, s In a clientul ar declara saitul ca ind unul fals. O pagin web este format, mod obinuit, din mai multe obiecte, cu a a n s URL-uri diferite (pagina HTML propriu-zis i imaginile din pagin). a s a aceste conditii, este posibil ca, In ntr-o aceeai pagin, unele dintre eles a mente s e securizate i celelalte elemente s e nesecurizate. De asemea s a nea, este posibil ca diferite elemente s provin de pe saituri diferite, a a autenticate prin certicate diferite. Intr-un astfel de caz, navigatorul web trebuie s avertizeze utilizatorul. a
11.4. PGP/GPG
Preety Good Privacy (PGP) este un program pentru criptarea i s semnarea digital a mesajelor de pot electronic i a ierelor general. a sa as s n Gnu Privacy Guard, abreviat GPG sau GnuPG, este o reimplementare a PGP, cu statut de soft liber. Prezentm continuare principalele concepte legate de constructia a n i functionarea GnuPG. s
Aarea cheilor secrete se face prin comanda s gpg --list-secret-keys 11.4.1.1. Chei primare i subchei s Cheile GnuPG sunt de dou tipuri: chei primare i subchei. O cheie a s primar (de fapt, o pereche primar de chei) este a a ntotdeauna o pereche de chei pentru semntur digital. O subcheie (de fapt, sub-pereche de chei) este a a a subordonat unei anumite perechi primare. Fiecare subcheie poate cheie de a criptare sau cheie de semntur. a a Fiecare utilizator are o cheie primar i, subordonate acesteia, zero as sau mai multe subchei. modul cel mai simplu de lucru, ecare utilizator In GnuPG are asociate, dou perechi de chei: o pereche primar de chei pena a tru semntur digital i o sub-pereche de chei pentru criptare asimetric. a a a s a Perechea de chei de criptare este folosit pentru a trimite mesaje secrete posa esorului perechii de chei. Perechea de chei de semntur este folosit atunci a a a cnd posesorul trimite mesaje semnate. a Fiecare cheie public are asociat aa-numita amprent a cheii (engl. a a s a key ngerprint). Aceasta este un ir de biti, calculati, printr-o functie de s dispersie criptograc, din cheia public respectiv. a a a Pentru a ne putea referi la o pereche de chei, ecare pereche de chei (e ea primar sau subcheie) are asociate doi identicatori de cheie (engl. key a ID): Identicatorul lung (engl. long key ID) este format din 16 cifre hexa. Sansele ca dou chei distincte s aib acelai identicator lung sunt a a a s extrem de mici, astfel at identicatorul lung este sucient pentru a nc identica unic orice cheie. Totui, identicatorul lung nu este utilizabil, s locul amprentei cheii, pentru vericarea autenticitii acesteia. n at Identicatorul scurt (engl. short key ID) este format din ultimele 8 cifre hexa ale identicatorului lung. Dac, a ntr-un anumit context, nu exist a dou chei cu acelai identicator scurt, el poate folosit pentru a ne a s referi la o cheie. Identicatorul unei perechi de chei este calculat, printr-o functie de dispersie, din cheia public din pereche. a Identicatorii scurti ai cheilor pot listati prin comanda
gpg --list-keys
Amprenta unei chei primare se poate aa prin comanda gpg --fingerprint id-cheie unde id-cheie este e identicatorul scurt sau lung al cheii primare sau al unei subchei subordonate acesteia, e numele real, adresa de pot electronic sau sa a numele complet al proprietarului cheii. 11.4.1.2. Utilizatori i identiti s at Fiecrei chei primare este asociat una sau mai multe identiti. a i a at Fiecare identitate este un nume complet de utilizator, format din trei componente: numele real (numele i prenumele persoanei), adresa de pot elecs sa scrierea numelui complet, adresa de tronic i, optional, un comentariu. In a s pot electronic se scrie sa a ntre semne mai mic i mai mare, iar comentariul se s scrie ntre paranteze. Exemple:
Ion Popescu <ion@example.com> Gheorghe Ionescu (Presedinte ONG) <gion@ong.example.com>
Este posibil ca o cheie primar s aib asociate mai multe identiti. a a a at Acest lucru este util dac un utilizator are mai multe adrese de pot eleca sa tronic i dorete asocierea tuturor acestora cu aceeai cheie. as s s Reciproc, un acelai nume complet poate asociat mai multor chei s primare. Acest lucru se ampl deoarece nu poate nimeni s nt a a mpiedice doi utilizatori s genereze dou chei i s le asocieze acelai nume complet. a a s a s Mai mult, aceast posibilitate este utilizat frecvent situatia care a a n n aceast situatie, cheia primar a unui utilizator expir sau este revocat. In a a a a utilizatorul poate crea o nou cheie primar creia s-i asocieze acelai nume a a a a s complet. 11.4.1.3. Generarea i modicarea cheilor s Generarea unei chei primare se face cu comanda
gpg --gen-key
Comanda este interactiv, solicitnd utilizatorului urmtoarele informatii: tipul a a a cheilor generate i dimensiunea acestora, durata de valabilitate a cheilor, nus mele complet al utilizatorului i parola utilizat pentru criptarea cheii secrete. s a Comanda genereaz o pereche primar de chei (de semntur) i a a a a s i asociaz o identitate. Optional, comanda poate genera i o sub-pereche de a s
chei de criptare, subordonat perechii primare. Ulterior, se pot aduga noi a a subchei i identiti sau se pot terge subcheile i identitile asociate. s at s s at La generarea cheilor, GnuPG aeaz amprenta a cheii primare gens a erate. Este bine ca utilizatorul s noteze amprenta cheii generate. Acest lucru a este util la transmiterea cheii publice ctre partenerii de comunicatie. a Pentru o cheie primar dat, proprietarul ei poate crea (i, eventual, a a s terge) subchei. Pentru acestea, se lanseaz comanda s a gpg --edit-key cheie La lansarea acestei comenzi, gpg ateapt, de la utilizatori, subcomenzi pentru s a modicarea unor date privitoare la cheia primar identicat prin parametrul a a cheie. Terminarea seriei de subcomenzi se face dnd, mai ai, subcomanda a nt save pentru a memora efectiv modicrile efectuate, urmat de subcomanda a a quit. Crearea unei noi subchei se face cu subcomanda addkey. Subcheia creat poate o cheie de criptare sau o cheie de semntur. a a a La tergerea unei subchei se utilizeaz subcomenzile key i delkey. s a s Stergerea unei subchei este util doar dac subcheia nu a fost a transmis a a nc a nimnui. Nu exist o metod simpl de a propaga tergerea asupra cpiilor a a a a s o subcheii respective. Ca urmare, dac proprietarul dorete ca o subcheie, deja a s transmis partenerilor si, s nu mai e utilizat, solutia este revocarea suba a a a cheii i nu tergerea ei. s s Pentru a aduga, terge sau revoca o identitate asociat unei chei, se a s a lanseaz comanda a gpg --edit-key cheie i apoi se utilizeaz subcomenzile: adduid, uid, deluid, revuid, primary. s a Dup modicarea identitilor asociate unei chei primare, este necesar rea at a transmiterea cheii spre partenerii de comunicatie (vezi 11.4.2.1). 11.4.1.4. Controlul perioadei de valabilitate a cheilor Valabilitatea unei chei sau subchei este controlat pe dou ci: prin a a a xarea unei perioade de valabilitate, dup expirarea creia cheia nu mai este a a valid, i prin revocarea cheii. Controlul valabilitii unei chei este necesar a s at pentru a pre ampina utilizarea unei chei publice cazul care cheia secret nt n n a corespunztoare a fost aat de o persoan neautorizat. a a a a Perioada de valabilitate a unei chei sau subchei se xeaz la generarea a acesteia. Ulterior, perioada de valabilitate poate modicat cu comanda a gpg --edit-key cheie
cu subcomenzile key i expire. s Pentru revocarea unei chei primare, se creaz un certicat de revocare, a semnat de proprietarul cheii primare. Certicatul de revocare se transmite apoi partenerilor de comunicatie. Generarea certicatului de revocare se face prin comanda gpg -a -o ier --edit-key cheie s Certicatul de revocare este scris ierul cu nume ier. Pentru ca revocarea n s s s aib efect, certicatul de revocare trebuie importat prin comanda a a gpg --import ier s Odat importat un certicat de revocare pentru o cheie primar, semnturile a a a create cu acea cheie primar sau cu o subcheie a acesteia sunt considerate a invalide i, general, la orice utilizare a acelei chei sau a unei subchei gpg d s n a un avertisment. De asemenea, atunci cnd acea cheie primar este transmis a a a spre alti utilizatori (vezi 11.4.2.1), certicatul de revocare este transmis mpreun cu cheia revocat. a a Ca utilizare recomandabil, este bine ca, la crearea unei chei primare, a proprietarul ei s genereze imediat un certicat de revocare pe care s-l in a a t a ntr-un loc sigur. cazul care pierde cheia sau bnuiete c acea cheie In n a s a secret a fost aat de un adversar, proprietarul transmite partenerilor si a a a certicatul de revocare. Inainte de revocare, certicatul de revocare trebuie s a nu poat citit de nimeni; caz contrar, un adversar care obtine certicatul a n de revocare poate provoca neplceri proprietarului revocndu-i cheia. a a Revocarea unei subchei const adugarea la subcheie a unui mara n a caj, semnat de proprietarul subcheii, prin care se anunt c acea subcheie a a trebuie s nu mai e utilizat. O subcheie revocat este tratat similar cu o a a a a subcheie sau cheie expirat: dac se a a ncearc utilizarea ei, gpg d un mesaj a a de avertisment. Revocarea unei subchei se face cu ajutorul comenzii gpg --edit-key cheie cu subcomenzile key i revkey. s De notat c, dup revocarea sau schimbarea perioadei de valabilitate a a a unei subchei, subcheia modicat trebuie s ajung la partenerii propria a a etarului cheii (vezi 11.4.2.1).
11.4.1.5. Gestiunea cheilor secrete GnuPG plaseaz cheile secrete a ntr-un ier gestionat de GnuPG. s Acest ier este creat cu drepturi de citire ( sistemul de operare) doar pentru s n utilizatorul curent. Cheile sunt, mod normal, criptate cu o parol dat de utilizator. n a a Parola de criptare poate schimbat cu comanda a gpg --edit-key cheie subcomanda passwd. Cheile secrete pot exportate, prin comanda gpg -a -o ier --export-secret-keys cheie s Aceast comand export cheia secret primar identicat prin parametrul a a a a a a cheie, precum i subcheile sale secrete. Cheile secrete pot importate prin s comanda gpg --import ier s Acest lucru este util dac utilizatorul lucreaz pe mai multe calculatoare i a a s dorete s utilizeze aceeai chei pe mai multe calculatoare. Cheia secret este s a s a exportat forma criptat. a n a Exist posibilitatea de-a exporta doar subcheile secrete ale unei chei a primare. Acest lucru se face prin comanda gpg -a -o ier --export-secret-subkeys cheie s Cu ajutorul acestei comenzi, un utilizator poate ine cheia primar secret t a a pe un calculator sigur i poate transmite subcheile secrete ctre un calculator s a mai putin sigur pe care utilizeaz frecvent. acest mod, el poate utiliza l a In calculatorul mai nesigur pentru transmite mesaje semnate i primi mesaje s criptate utiliznd subcheile, fr a a risca compromiterea cheii primare a a a ns n cazul care cineva ar sparge acel calculator. Pentru o astfel de utilizare, n subcheile se creaz cu durat de valabilitate scurt i se revoc la nevoie. a a a s a Cheia primar este bine s aib durat lung de utilizare pentru a benecia a a a a a de semnturile obtinute de la alti utilizatori asupra ei (vezi 11.4.2.2). a
Transmiterea acestor obiecte de la un utilizator la altul se poate face prin dou metode: a prin iere (transmise, de exemplu, prin pot electronic sau prin web); s sa a prin servere de chei. La transmiterea prin iere, un utilizator export una sau mai multe s a chei primare, mpreun cu identitile, semnturile, subcheile i certicatele a at a s de revocare asociate acelor chei primare, ntr-un ier. Cellalt utilizator s a primete ierul (transmis prin pot electronic, web, pe o dischet sau prin s s sa a a alte mijloace) i import continutul GnuPG-ul local. s i a n Exportul unei chei publice primare, mpreun cu toate identitile, a at subcheile publice, semnturile i certicatele de revocare asociate, se face prin a s comanda gpg -a -o ier --export cheie s unde parametrul cheie este identicatorul cheii sau a uneia dintre subchei sau numele utilizatorului creia apartine, iar parametrul ier reprezint a i s a ierul care se vor scrie datele. Parametrul cheie poate lipsi sau poate s s n a nu identice o unic cheie primar; acest caz, toate cheile primare respective a a n sunt exportate. Importarea unei chei dintr-un ier se face prin comanda s gpg --import ier s Prin operatia de import, cheile i celelalte obiecte din ierul importat s s sunt adugate celor locale sau, eventual, le modic pe acestea. Niciodat a a a a ns nu sunt terse obiecte locale pe motiv c nu se regsesc ierul importat. Din s a a n s acest motiv, tergerea unei chei primare, subchei, identiti sau semnturi nu s at a poate transmis asupra partenerilor de comunicatie. Invalidarea unei chei, a identiti sau semnturi se poate face doar prin revocarea acesteia i apoi at a s transmiterea certicatului de revocare. La transmiterea prin servere de chei, primul utilizator ncarc, pe un a server de chei, cheile i celelalte obiecte de transmis, iar cellalt utilizator le s a descarc de pe serverul de chei. a Transmiterea unei chei primare i a obiectelor asociate ctre un server s a de chei se face prin comanda gpg --keyserver server --send-key cheie Descrcarea unei chei i a obiectelor asociate de pe un server de chei a s se face prin comanda gpg --keyserver server --recv-key cheie
unde cheie este identicatorul unei chei (nu poate numele posesorului cheii). Aarea identicatorului cheii unui utilizator se poate face prin comanda gpg --keyserver server --search-key nume-utilizator Este important de notat c, implicit, GnuPG nu consider o cheie a a proaspt importat ca ind autentic. La utilizarea unei chei publice a crei a a a a autenticitate nu a putut vericat, GnuPG d un mesaj de avertizare. Vera a icarea autenticitii este descris paragraful urmtor. at a n a 11.4.2.2. Vericarea autenticitii cheilor at GnuPG veric automat, a nainte de utilizarea unei chei publice, autenticitatea acesteia. Autenticitatea cheilor se veric cu ajutorul certicatelor a (vezi 6.3.4). terminologia GnuPG, un certicat este numit semntur In a a asupra unei chei. O sub-cheie este mod normal semnat cu cheia primar creia n a a a i este subordonat. O sub-cheie a crei semntur este valid este considerat a a a a a a autentic dac i numai dac cheia primar coresunztoare este considerat a a s a a a a autentic. consecint, dac se import noi sub-chei pentru o cheie primar a In a a a a declarat autentic, sub-cheile respective sunt imediat considerate autentice. a a Restul paragrafului de fat trateaz doar cheile primare. Reamintim a a c o cheie primar este a a ntotdeauna o cheie de semntur. a a O cheie public pentru care GnuPG dispune de cheia secret corea a spunztoare este automat considerat autentic. De asemenea, este consida a a erat autentic orice cheie specicat printr-o optiune a a a --trusted-key cheie e la executia comenzii gpg, e ierul cu optiunile implicite. afara n s In acestor dou cazuri, GnuPG consider o cheie autentic numai dac dispune a a a a de un certicat valid pentru ea i mai sunt s ndeplinite urmtoarele conditii: a cheia cu care este semnat certicatul este deja declarat ca autentic, a a semnatatul certicatului este considerat de ncredere. GnuPG retine, asociate ecrei chei primare, dou informatii (inde a a pendente una de alta): dac autenticitatea ei este vericat sau nu; a a nivelul de ncredere, acordat de utilizatorul care execut gpg, proprietarua lui acelei chei.
Un utilizator poate acorda proprietarului unei chei: ncredere deplin (full trusting) semntura acelui utilizator asupra a a unei identiti este sucient pentru ca acea identitate s e considerat at a a a vericat; a ncredere minimal (marginally trusting) o identitate semnat doar de a a utilizatori de ncredere minimal s e considerat vericat este necesar a a a a un anumit numr de astfel de semnturi (implicit 3). a a zero ncredere (no trusting) semntura unui astfel de utilizator nu este a luat considerare. a n Nivelul de ncredere acordat proprietarului unei chei este implicit zero. El poate modicat cu comanda gpg --edit-key cheie i subcomanda trust a acesteia. s Implicit, GnuPG are ncredere deplin proprietarul unei chei pena n tru care dispune de cheia secret corespunztoare (altfel spus, utilizatorul a a n care lanseaz comanda gpg), precum i proprietarii cheilor specicate prin a s n optiunea --trusted-key. Crearea, de ctre utilizatorul ce execut gpg, a unei semnturi asupra a a a unei identiti asociate unei chei se face prin comanda at gpg --sign-key cheie sau gpg --lsign-key cheie cazul primeia dintre comenzi, semntura poate transmis i altor utilizaIn a as tori GnuPG (vezi 11.4.2.1). A doua comand creaz o semntur pentru uz a a a a local. Este esential, pentru securitatea sistemului, ca un utilizator s nu a semneze un set de chei fr s-i verice mai ai autenticitatea. Autenticitatea aa a nt setului de chei se poate asigura dou moduri: n a Fiierul din care se import setul de chei este adus pe o cale sigur, de s a a exemplu printr-o dischet dat personal de ctre proprietarul cheii sau a a a este descrcat de pe un sait web securizat (https) i de a s ncredere. ai, amprenta cheii primare este transmis pe o cale sigur, de exemInt a a plu pe un bilet scris de ctre proprietarul cheii sau printr-o convorbire a telefonic cu proprietarul cheii. Apoi, la importarea i semnarea setului a s de chei, utilizatorul veric amprenta cheii primare din set. a
i vericarea semnturii se face exact ca cazul unui mesaj criptat i semnat, s a n s adic prin comanda: a gpg -o -ieire --decrypt -intrare s s s Semntura detaat se genereaz prin comanda a s a a gpg -a -o -sign --detach-sign -date s s Rezultatul comenzii este scrierea ierul -sign a semnturii continutului n s s a ierului -date. Fiierul produs, -sign, este mic i contine doar semntura; s s s s s a datele utile nu pot recuperate din el. Vericarea semnturii se face prin a comanda: gpg --verify -sign -date s s Semntura detaat este util deoarece pstreaz intact ierul de a s a a a a s date, neind nevoie de gpg pentru recuperarea datelor. De asemenea, permite mai multor utilizatori s semneze un acelai ier de date. a s s ne, semntura clar se poate utiliza doar dac datele sunt text In a n a ASCII. Semntura se genereaz prin comanda: a a gpg -o -ieire --clearsing -intrare s s s Fiierul astfel produs este un ier text, care poate citit uor de ctre utis s s a lizatorul uman. Textul original este pus ntre nite marcaje, iar semntura s a este adugat la sfrit. Vericarea semnturii se face prin comanda: a a as a gpg --verify s Semntura clar este util pentru semnarea documentelor text. a n a Acestea rmn uor de citit de ctre om i, spre deosebire de semntura a a s a s a detaat, datele utile i semntura sunt puse s a s a ntr-un singur ier. s Dac GnuPG are mai multe chei secrete (inclusiv subchei, 11.4.1.1) a utilizabile pentru semntur, se poate specica ce cheie trebuie utilizat pentru a a a crearea semnturii. Specicarea cheii se face adugnd optiunea a a a -u cheie GnuPG se utilizeaz curent pentru autenticarea softului liber. a In acest scop, alturi de programul distribuit, se distribuie un ier ce contine a s semntura detaat a ierului ce contine programul. a s a s
Bibliograe
[Boian 1999] Florian Mircea Boian. Programarea distribuit Internet. a n Editura Albastr, 1999. a [Cohen 1980] Danny Cohen. On holy wars and a plea for peace, 1980. http://www.ietf.org/rfc/ien/ien137.txt. [Crstici et al. 1981] B. Crstici, T Banzaru, O. Lipovan, M. Neagu, N. Neamtu, N. Neuhaus, B. Rendi, D. Rendi, I Sturz. Matem atici speciale. Editura didactic i pedagogic, Bucureti, 1981. as a s [Howard & LeBlanc 2003] Michael Howard, David LeBlanc. Writing secure code. Microsoft Press, 2003. [IANA, ] http://www.iana.org. [IEEE 802.11, 1999] IEEE Computer Society. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, 1999. [IEEE 802.11F, 2003] IEEE Computer Society. 802.11FTM IEEE Trial-Use Recommended Practice for Multi-Vendor Access Point Interoperability via an Inter-Access Point Protocol Across Distribution Systems Supporting IEEE 802.11TM Operation, 2003. [IEEE 802.11i, 2004] IEEE Computer Society. 802.11iTM Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specications, Amendment 6: Medium Access Control (MAC) Security Enhancements, 2004. [IEEE 802.1D, 2004] IEEE Computer Society. Media Access Control (MAC) Bridges, 2004.
[IEEE 802.1Q, 2003] IEEE Computer Society. 802.1QTM . IEEE Standards for Local and metropolitan area networks: Virtual Bridged Local Area Networks, 2003. [IEEE 802.1X, 2001] IEEE Computer Society. 802.1XTM . Port-Based Network Access Control, 2001. [IEEE 802.3, 2005] IEEE Computer Society. Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specications, 2005. [Kurose & Ross 2003] James F. Kurose, Keith W. Ross. Computer networking A top-down approach featuring the Internet. AddisonWesley, 2003. [Menezed et al. 1997] A. Menezed, P. van Oorschot, S. Vanstone. Handbook of Applied Cryptography. CRC Press, 1997. [Nicolau 1987] Edmond Nicolau. Radiotehnica. Manualul inginerului electronist. Editura tehnic, Bucureti, 1987. a s [Prasad 2003] K.V. Prasad. Principles of Digital Communication Systems and Computer Networks. Charles River Media, 2003. [RFC 1034, 1987] Domain names concepts and facilities, 1987. [RFC 1035, 1987] Domain names implementation and specication, 1987. [RFC 1149, 1990] A Standard for the Transmission of IP Datagrams on Avian Carriers, 1990. [RFC 1323, 1992] TCP Extensions for High Performance, 1992. [RFC 1518, 1993] 1993. An Architecture for IP Address Allocation with CIDR,
[RFC 1661, 1994] The Point-to-Point Protocol (PPP), 1994. [RFC 1700, 1994] Assigned numbers, 1994. [RFC 1918, 1996] Address Allocation for Private Internets, 1996. [RFC 1981, 1996] Path MTU Discovery for IP version 6, 1996. [RFC 1995, 1996] Icremental Zone Transfer in DNS, 1996.
[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. [Sptaru 1965] Al. Spataru. Teoria transmisiunii informatiei. Editura a Tehnic, Bucureti, 1965. a s [Stevens 1994] Richard Stevens. TCP-IP illustrated. Addison-Wesley, 1994. [Tanenbaum 1995] Andrew S. Tanenbaum. Distributed Operating Systems. Prentice Hall, 1995. [Tanenbaum 2003] Andrew S> Tanenbaum. Retele de calculatoare. Byb los, 2003.
Index
Speciale 0.0.0.0, 303, 341 0.0.0.0/8, 303 10 Base T, 268 10.0.0.0/8, 303, 349 100 Base Tx, 271 1000 Base T, 272 127.0.0.0/8, 303 127.0.0.1, 303 172.16.0.0/12, 303, 349 192.168.0.0/16, 303, 349 224.0.0.0/4, 303 240.0.0.0/4, 303 A access point, 286 ACK, Vezi conrmare acknowledge, Vezi conrmare ad hoc (wireless), Vezi IBSS adres a zic, 98, 266 a Internet, 294, 297, 300 IP, Vezi adres, Internet a MAC, 98, Vezi adres zic, 340 a a privat, 303, 348, 349 a de retea, 119 , subretea, 297 n , unei subretele, 302 , translatie, 349 , adversar, O entitate care intercepteaz sau a modic mesajele schimbate a ntre alte dou entitti, cu scopul obtinerii sau a a, , modicrii informatiei transmise. Vezi a , pg. 149
activ, Un adversar care intercepteaz a si modic dup voie mesajele a a , schimbate ntre dou entitti. Vezi a a, pg. 149 pasiv, Un adversar care intercepteaz a doar comunicatia, fr a o modia a , ca. Vezi pg. 149 agent de autenticare, 380 Aloha, 100 AM, Vezi modulatie de amplitudine , anten, 78 a anycast, 17 AP, Vezi access point ARP, 340 atenuare, 61 factor de, Raportul ntre puterea semnalului msurat la bornele a emittorului si puterea semnalu,a , lui msurat la bornele receptorua lui. Vezi pg. 61 AUI, 278 autenticare entitate, 150 mesaj, 149 surs, 150 a B B, Vezi bel band a lateral, 70 a ltime de, Diferenta dintre frecventa a, , , maxim si frecventa minim a a , a , benzii de trecere. Prin abuz
407
Index: HTTPSnetwork
mail transfer agent, 355, 364 user agent, 355 managed (wireless), Vezi infrastructur a masc a de retea, 302 , master DNS, 337 mediu de transmisie, Dispozitiv capabil s a transmit la distant o actiune a ,a , zic de la emittor la receptor. a ,a Vezi pg. 59 mesaj, 27 microunde, 77 MIME, 360 mod de propagare (bre optice), 91 modulatie, 68 , de amplitudine, 69 cuadratur, 70 n a de faz, 70 a de frecvent, 70 ,a MTA, Vezi mail transfer agent, 367 MUA, Vezi mail user agent multicast, Vezi difuziune selectiv a multimod (bra optic), Vezi br multia a mod multiplexare frecvent, Procedeu prin care mai n ,a multe comunicatii simultane pot , partaja acelasi mediu zic prin , transmiterea semnalelor corespunztoare comunicatiilor prin a , modulatie utiliznd frecvente a , , purttoare diferite. a lungimea de und, Procedeu de muln a tiplexare care mai multe semn nale optice utiliznd lungimi de a und diferite sunt transmise prin a aceeasi br optic. Vezi pg. 93 a a , timp, 117 n MX, 367, 369 N NAT, Vezi adres, translatie a , nerepudiabilitate, 149 network
409
prospetime , vericare, Vezi vericare prospetime , protocol, 16, 22 punct la punct, 16 purttoare, Vezi frecvent, purttoare a a ,a R raport semnal/zgomot, 62 receptor, 25, 59 redundant, 42 ,a regul a de dirijare, 298 reliable transmission, Vezi transmisie sigur a repeater, Vezi repetor repetor, 266 reprezentare a informatiei, 25 , request to send, 288 retea , privat, 348 a RJ45, 269 round-trip time, Vezi timp dus- ntors router, Vezi nod intermediar RTS, Vezi request to send RTT, Vezi timp dus- ntors rut, 119 a ruter, Vezi nod intermediar S securizare, 149 semi-duplex, 97 semnal, Mrimea zic ce msoar actiunea a a a a , produs de emittor si transmis de a a ,a , ctre mediu pn la receptor si care a a a , este utilizat efectiv ca purttoare a a a informatiei. Vezi pg. 25, 59 , modulat, 69 sinusoidal, 63 simbol de cod, 26 slave DNS, 337 SMTP, 355, 364 socket, 233 spectru, 64 spoong, 346 blind, 326
Index: SSHzona
uint32 t, 255 und a electromagnetic, 77 a lungime de, 77 radio, 77 unicast, 16 unshielded twisted pairs, Vezi pereche torsadat neecranat a a UTP, Vezi perechi torsadate neecranate V vecin, 119 vector de initializare, 154 , vericare integritate, Vezi integritate, vericare prospetime, 150 , VLAN, 283 VLAN-ID, 283 W wavelength division multiplexing, Vezi multiplexare lungimea de und n a WDM, Vezi multiplexare lungimea de n und a window manager, 382 Z zgomot, Modicare nedeterminist a sema nalului receptionat fat de cel emis. , ,a Pentru comparatie, vezi si distorsiune. , , Vezi pg. 62 zon a DNS, 335