Documente Academic
Documente Profesional
Documente Cultură
Programarea dinamic
Tehnicile de programare sunt modaliti generale de elaborare a
algoritmilor. Ele reprezint doar nite tipare de organizare a aciunilor
("scheme" de algoritmi), nu garanteaz i succesul acestora. Pentru a
avea succes trebuie ndeplinite nite condiii suplimentare, care sunt
specifice i se demonstreaz separat pentru fiecare problem n parte.
Programarea dinamic este o tehnic de proiectare a unui
algoritm care permite rezolvarea unei clase de probleme. Programarea
dinamic, la fel ca i metoda Divide and Conquer, rezolv problemele
combinnd soluiile unor subprobleme. Spre deosebire de abordarea din
Divide and Conquer, programarea dinamic este aplicabil atunci cnd
subproblemele nu sunt independente, adic subproblemele au n comun
sub-subprobleme. Astfel, un algoritm de tipul Divide and Conquer ar
presupune mai multe calcule dect ar fi necesar dac s-ar rezolva
repetat aceste sub-subprobleme comune.
Programarea dinamic rezolv fiecare sub-subproblem o singur
dat i salveaz rezultatul ntr-o tabel cu rezultate. Se evit astfel ca o
sub-subproblem s fie rezolvat de mai multe ori.
Programarea dinamic se aplic la probleme de optimizare,
probleme cu urmtoarele caracteristici:
Au mai multe soluii posibile, fiecare caracterizate printr-o
valoare
10
11
12
13
INMULTIRE-MATRICE(A,B)
If coloane[A]!=linii[B]
else
returneaza C
Figura 2.6 Algoritmul de nmulire a 2 matrici
Dac avem o matrice A(p,q) pe care dorim s o nmulim cu o
matrice B(q,r) pentru a rezulta matricea produs C(p,r) vor fi necesare
p*q*r nmuliri scalare.
Exemplu: Considerm A1(10,100), A2(100,5) i A3(5,50). Se pune
problema cnd vom avea un numr minim de nmuliri scalare pentru a
obine produsul celor 3 matrici: cnd vom calcula (A1A2)A3 sau cnd vom
calcula A1(A2A3)
A1A2 vom avea 10*100*5=5000 de nmuliri scalare pt a calcula A 1A2
de dimensiune 10x5. Apoi vom avea 10*5*50=2500 nmuliri scalare
pentru a calcula (A1A2)A3 deci n total 7500 de nmuliri scalare.
A2A3 -vom avea 100*5*50=25000 de nmuliri scalare pentru a calcula
A2A3 de dimensiune 100x50. Apoi vom avea 10*100*50=50000 nmuliri
scalare pentru a calcula A1(A2A3) deci n total 75000 de nmuliri scalare
n concluzie prima variant de parantezare ne ofer un algoritm de 10
ori mai rapid. Problema pe care urmeaz s o rezolvm are
urmtorul enun: Se d un ir de
matrici (A1A2An) care trebuie nmulite. Matricea Ai are dimensiunile pi1 x pi. S se pun parantezele pentru a rezolva produsul celor n matrici
astfel nct numrul de nmuliri scalare s fie minim.
P(n) va fi numrul de parantezri distincte ale unui ir de matrici
(altfel spus va fi numrul de posibile soluii pentru un ir de n matrici).
Vom demonstra c verificarea exhaustiv a tuturor parantezrilor nu
conduce la un algoritm eficient.
Formula recursiv de calcul a lui P(n) este prezentat n figura 2.7:
Figura 2.7 Formula recursiv de calcul a numrului de
parantezri posibile pentru un produs de n
matrici
Soluia recurenei pentru calculul lui P(n) va fi (2 n). Numrul de
soluii este exponenial n n i n concluzie metoda forei brute a cutrii
exhaustive este o strategie proast de determinare a modalitii de
parantezare a irului de matrici.
Pentru a calcula AiAi+1..Aj (vom nota acest produs cu Ai..j) va trebui
s gsim un k optim astfel nct s punem o parantez ntre Ak i Ak+1.
n consecin:
Costul lui Ai..j este egal cu costul lui Ai..k plus costul lui
Ak+1..j plus costul
nmulirii acestor dou matrici
Dac costurile lui Ai..k i Ak+1..j sunt optime, atunci i costul lui
Ai..j este optim
15
16
17
18
19
20
21
22
23
24
25
26
27
spune c h[k] este valoarea hash a cheii k. Figura 3.13 ilustreaz aceste
concepte.
28
29
30
Dndu-se cheia k, vom ncerca slotul T[h(k)] dac este liber; apoi
vom ncerca slotul T[h(k)+1] i tot aa pn la slotul T[m-1]. Vom
continua apoi cu sloturile T[0], T[1] pn la T[h(k)-1].
2. Probarea ptratic
Dac h:U->{0,1,m-1} este o funcie de dispersie obinuit
auxiliar, atunci h(k,i)=(h(k)+c1i+c2i2) mod m, cu c1 i c2 dou
constante pozitive iar i=0,1,m-1. Prima poziie ncercat va fi T[h (k)]
apoi urmtoarele poziii depind ntr-o manier ptratic de valorile lui i.
3. Dispersia dubl
Dac se consider dou funcii de dispersie auxiliare h1 i h2, atunci
h(k,i)=(h1(k)+ih2(k)) mod m.
De exemplu se poate considera h1(k)=k mod m i h2(k)=1+(k mod (m1)) cu m numr prim. Pentru k=123456 i m=701 vom aveam h1(k)=80
i h2(k)=257 deci vom proba nti poziia 80 apoi vom ncerca to al 257lea slot (modulo 701) pn vom gsi slotul liber.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Figura 4.23 Algoritmul de determinare a componentelor tare conexe dintrun graf orientat
45
acoperire minim pentru un graf conex. Algoritmul lui Prim are proprietatea
c muchiile din mulimea A formeaz ntotdeauna un singur arbore. Arborele
se formeaz pornind de la un vrf arbitrar r i crete
46
47
rezolvarea acestei probleme care s fie asimptotic mai rapizi dect cel
mai bun algoritm pentru determinarea drumurilor minime de surs
unic, n cazul cel mai defavorabil. Problema drumurilor minime pentru
surse i destinaii multiple: S se determine drumul minim de la u la v
pentru fiecare pereche de vrfuri u i v. Aceast problem poate fi
rezolvat, de exemplu, prin aplicarea algoritmului pentru surs unic
pentru fiecare vrf al grafului.
De regul, algoritmii pentru determinarea drumurilor minime
exploateaz proprietatea c un drum minim ntre dou vrfuri conine
alte drumuri optimale. Aceast proprietate de optimalitate
substructural este specific att programrii dinamice ct i metodei
greedy. Algoritmul Dijkstra aplic metoda greedy iar algoritmul FloydWarshall pentru determinarea drumurilor minime pentru toate perechile
de vrfuri este un algoritm de programare dinamic.
Proprietatea de optimalitate substructural a drumurilor minime
poate fi enunat
astfel:
Dac se d un graf orientat G=(V,E) i o funcie de cost w:E->R pe
graful G, i fie p={v0, v1, vk} calea de cost minim ntre 2 noduri v0 i
vk; atunci pentru orice 0<=i<=j<=k, p-ij={vi,v i+1, vj} este calea de
cost minim ntre vi i vj.
Considernd un graf G=(V,E), pentru fiecare nod vV vom
memora predecesorul acestuia v., care poate fi un alt nod sau NIL.
Algoritmii de determinare a drumului minim seteaz predecesorii astfel
nct dac se merge de la un nod v napoi, vom gsi calea minim
(printr-o traversare n ordine invers) de la sursa s pn la nodul v.
4.5.1. Reprezentarea drumurilor minime
Deseori dorim nu doar s determinm lungimea drumului minim ci
i vrfurile care compun acest drum minim. Pentru reprezentarea
acestor drumuri minime vom utiliza o reprezentare similar celei
considerate la parcurgerea n lime a arborilor. Dndu-se un graf
G=(V,E) vom pstra pentru fiecare nod vV un predecesor v. care este
fie un alt nod fie NIL. Algoritmii pentru determinarea drumurilor minime
ce urmeaz s fie prezentai determin astfel nct pentru fiecare vrf
v, lanul de predecesori care ncepe cu vrful v s corespund unei
traversri n ordine invers a unui drum minim de la s la v. Astfel, pentru
orice vrf v pentru care v.NIL vom putea utiliza procedura PRINTPATH(G,s,v) pentru tiprirea unui drum minim de la s la v.
Vom considera subgraful predecesor G=(V,E) indus de valorile
lui , unde V este mulimea nodurilor din V care au proprietatea c au
predecesor diferit de NIL reunit cu mulimea constnd din nodul surs:
V={vV:v.NIL}{s}
Mulimea de muchii orientate E este mulimea de muchii indus
de valorile lui pentru vrfurile din V:
E={(v.,v)E:vV-{s}}
Atunci G este un arbore al drumurilor minime adic este un
arbore cu rdcina s coninnd cte un drum minim de la sursa s la
fiecare vrf al grafului G care este accesibil din s.
4.5.2. Relaxarea
Algoritmii care urmeaz s fie prezentai n continuare utilizeaz
tehnica de relaxare. Pentru fiecare vrf vV vom pstra un atribut v.d
reprezentnd o margine superioar a costului unui drum minim de la
sursa s la vrful v. Numim d.v o estimare a
48
49
50
1. SISTEME DE OPERARE
Autor: George Sebastian Chi
Dezvoltat
de
Pachete de programe
utilizatori
Biblioteci, Browsere Editoare
Soft de baz
SO Translatoare
Editoare de legturi
Hard
Limbaj main
Microprograme (Firmware)
Componente fizice
Figura 2. 1 Sistem de calcul alctuit din structura hard, SO i aplicaii
Software de baz (sistem) fac sistemul s funcioneze:
Translatoare
Interpretoare de comenzi
Editoare de legturi
Programe de comunica ie etc.
Software de aplicaii ale unor utilitare pentru
utilizatori: Pachete de programe
Editoare de texte
SGBD-uri
Navigatoare Web
Instrumente de dezvoltare de
aplicaii Editoare de imagini
Sisteme financiar contabile, ERP (Entreprise Resource Planning), HRM, CRM, SCM, FMS
Bibliotecare etc.
Sistemele de operare realizeaz dou func ii de baz ntre care nu exist nici o legtur: extinderea
func ionalit ii ma inii i gestionarea resurselor,ceea ce nu putem spune este care din aceste func ii este mai
important. Prin func ia de extindere ascunde detalii neplcute precum: ntreruperile, timer-ele, gestiunea memoriei
i alte elemente de nivel sczut. Tot func ia de extindere ascunde programatorului adevrul despre structur hard
i prezint numai partea frumoas a fi ierelor cu nume nu i cu octe i i reprezint o vedere de sus n jos a SO.
n abordarea de jos n sus este prezen a func ia de gestionare a resurselor care are c sarcin s realizeze
o alocare ordonat i controlat a proceselor, memoriilor i dispozitivelor de I/O n diversele programe scrise
pentru ele. Administrarea resurselor include partajarea resurselor n timp i spa iu (multiplexarea). Cnd este n
timp programele sau utilizatorii le folosesc pe rnd resursele (exemplu: tiprirea) formndu-se o coad SO este acela
care spune cine urmeaz i ct timp are alocat. Cnd este n spa iu fiecare client folose te o parte din resursa
(exemplu: memoria principal este mpr it ntre mai multe programe, sau HDD este o alt resursa multiplexat n
spa iu.
fost ENIAC. Era de 1.000 de ori mai rapid ca Mark I i consuma 160 de kilowati. 1951: apare UNIVAC I, primul
computer disponibil comercial. 1952: UNIVAC I prezice matematic alegerea ca presedinte a lui Eisenhower.
A doua generaie 1955 1965 - tranzistoare, batch systems; tranzistoare; mainframeuri; apare conceptul de batch; sisteme de operare: FMS, IBSYS.
Inventarea tranzistorului aduce schimbari radicale. Introdus n computere n 1956 i cuplat cu memoria cu
miez magnetic, el da na tere unei genera ii de ordinatoare mai mici i mai eficiente. Primele supercomputere au
fost Stretch, produse de IBM i LARC pentru laboratoarele de energie atomica. La nceputul anilor 60 apare IBM
1401, considerat piatra de temelie a conceptului actual. Apar de asemenea limbajele de programare COBOL
(Common Business-Oriented Language) i FORTRAN (Formula Translator), care nlocuiesc codul binar criptic cu
cuvinte i formule matematice.
A treia generaie 1965 1980 - ICs i multiprogramarea; circuite integrate; apare conceptul de familie de
calculatoare (IBM System/360): aceea i arhitectura i set de instruc iuni.
De i tranzistorii reprezentau o evolu ie semnificativa, ei generau intens cldur, care deteriora restul
componentelor interne. A a ncepe folosirea cristalelor de cuar . n 1958, Texas Instruments produsese circuitul
integrat, care combina trei componente electronice pe un disc de siliciu. Un alt pas l-a constituit apari ia sistemelor
de operare, care au permis computerelor sa ruleze mai multe aplicaii simultan, cu un program central de
monitorizare i coordonare a memoriei.
Multiprogramare - Partiionarea memoriei n mai multe segmente, ct timp un job ateapt la I/O alt job se execut
Spooling - Citirea joburilor de pe cartele perforate i pstrarea lor pe disc pna la execuie
Multitasking (time-sharing):
MIT, Bell Labs, General Electric Lansat n 1960 are un succes comercial sczut, ns are o influen masiv
asupra dezvoltrii ulterioare a SO
UNIX
Perioada
Tehnologie
Generaia
I
II
CPU
1946-1956
Tuburi electronice
1957-1963
Tranzistori
1964-1981
Circuite integrate
Dup-1982
Circuite integrate
pe scar foarte larg
Dup 1990
Circuite integrate
pe scar extrem de
larg; maini LISP
i Prolog
Tehnologie
memorie
Tambur
magnetic
Inele de ferit
Memorii
semiconductori
discuri
magnetice
Memorii cu
bule,
discuri
optice
Arhitecturi
paralele
Limbaje
Utilizate
Asamblare
nivel nalt:
FORTRAN,
COBOL etc.
Pascal, Lisp, limbaje grafice
Performane,
memorie i CPU
vorbirii
3:
Concepte ale SO
Procesul - este n fapt un program n execuie. Fiecrui proces i se asociaz un spaiu de adrese, adic o list
de locaii n memorie din care programul poate ci sau n care poate scrie. Locaiile cuprinse ntre dou limite, una
minim (de obicei 0) i una maxim. Spaiul de adrese conine programul executabil, datele programului i stiva.
Procesului i se asociaz, de asemenea, un set de registre care cuprinde contorul program, indicatorul de stiva i alte
registre hard, precum i diverse alte informaii necesare rulrii programului.[TANENBAUM06]
La multe SO toate informaiile despre fiecare proces, altele dect cele aflate n propriul spaiu de adrese,
sunt memorate ntr-un tabel al sistemului de operare numit tabel de procese, care este un tablou de structuri pentru
fiecare proces existent.
Figura 3. 1 Arbore de proces. Procesul A a creat dou procese- copii: B i C Procesul B a creat 3 procese
copii D, E, F
Pentru a implementa un proces a SO folosete o tabel (un vector de structuri) numit tabel de procese cu
o intrare pentru fiecare proces. Aceast intrare conine informaii despre: starea procesului, contorul program,
indicatorul de stiva, alocarea memoriei, starea fiierelor deschise, detalii de contabilizare, i planificare i orice alte
informaii despre un proces, care trebuie salvate atunci cnd procesul comut ntre strile n execuie, gata de
execuie i blocat, astfel nct s poat fi repornit mai trziu ca i cum nu ar fi fost oprit niciodat.
n tabelul de mai jos se poate vedea cteva din cmpurile importante dintr-un sistem obinuit:
Gestiunea procesului
Registrare
Contorul program
Cuvntul de stare al programului
Gestiunea memoriei
Indicator spre segmentul de text
Indicator spre segmentul de date
Indicator spre segmentul de
stiv
Gestiunea fiierelor
Directorul rdcin
Directorul de lucru
Descriptorii de fiiere
Indicatorul de stiv
Starea procesului
Identificatorul
utilizatorului
Identificatorul grupului
Prioritate
Parametri de planificare
Identificatorul procesului
Proces primar
Grupul procesului
Semne
Momentele nceperii procesului
Durata de utilizare UCP
Durata de utilizare UCP de ctre
copii
Momentul urmtoarei alarme
Figura 3. 2 Cteva din cmpurile unei intrri obinuite din tabela de procese
Firele de execuie n sistemele de operare tradiionale, fiecare proces are un spaiu de adrese i un singur fir
de control. Dar de cele mai multe ori este de dorit existena mai multor fire de control n acelai spaiu de adrese
rulnd pseudo-paralel, c i cum ar fi procese separate(cu excepia partajrii spaiului de adrese).
Un proces este c o grupare de resurse nrudite i are spaiu de adrese ce conine textul programului i
date, precum i alte resurse. Aceste resurse pot include fiiere deschise, procese copil, semnale de alarm n
ateptare, rutine de tratare a semnalelor, informaii de contabilizare i altele. Acestea pot fi gestionate uor prin
gruparea lor sub form de proces.
Firul de execuie (thread) are un contor de program care ine evidena urmtoarei instruciuni de executat,
totodat deine i registre care in variabilele curente de lucru. Are de asemenea o stiva care conine istoricul execuiei, cu
un cadru pentru fiecare procedura apelat din care nu s-a revenit nc. Dei un fir de execuie trebuie s ruleze ntr-un
proces,firul i procesul sunt concepte diferite i pot fi tratate separat. Procesele sunt utilizate pentru a grup resurse, n
timp ce firele de execuie sunt entiti planificate pentru execuie n cadrul UCP (unitate central de procesare).
Modul de lucru al firelor de execuie este: partajeaz spaiul de adrese, fiiere deschise i ale resurse sau
partajeaz memoria fizic , discurile, imprimantele i alte resurse.
Prin comutarea ntre mai multe procese, sistemul ofer iluzia unor procese secveniale separate care se
execut n paralel. Programarea cu fire de execuie multiple funcioneaz n acelai mod: UCP comut rapid ntre
firele de execuie oferind iluzia c acestea ruleaz n paralel, dei pe o UCP mai lent dect pe cea real. n cazul
unui proces cu trei fire de execuie, toate efectund calcule, acestea pr s se execute n paralel, fiecare pe o UCP cu
o vitez de trei ori mai mic dect a UCP reale.
Situaiile n care dou sau mai multe procese citesc i scriu date partajate i rezultatul final depinde de cine
ce execut exact cnd, se numesc condiii de curs (race conditions). Rezolvarea acestora o reprezint excluderea
mutual (mutual exclusion), adic o cale prin care s fim asigurai c dac un proces folosete o variabila partajat
sau un fiier, celelalte procese nu vor putea face acelai lucru. Pentru a avea o soluie bun trebuie ndeplinite patru
condiii:
oricare dou procese nu se pot afla simultan n regiunile lor critice1;
nici un fel de presupunere nu se poate face asupra vitezelor sau numrului de UCP-uri;
nici un proces care ruleaz n afara regiunii lui critice nu poate bloca alte procese;
nici un proces nu trebuie sa atepte la infinit pentru a intra n regiunea lui critic.
Sistemele de fiiere se pot clasifica n: sisteme de fiiere pe disc, sisteme de fiiere de reea i sisteme de
fiiere cu destinaie special.
Un sistem al fiiere pe disc este destinat memorrii fiierelor pe un disc care este direct sau indirect legat la
un calculator.
Cele mai cunoscute astfel de sisteme, n ordine alfabetic, sunt:
EXT2 (second extended file system) este folosit de majoritatea sistemelor de operare din familia LINUX.
EXT3 (third extended file system) este o perfecionare a lui EXT2 n sensul monitorizrii n diverse jurnale
a tuturor activitilor efectuate; are tendina de a nlocui EXT2 dar nc are erori.
FAT (File Allocation Table) este sistemul de fiiere de baz dezvoltat pentru DOS i Windows; este
considerat cel mai simplu i, datorit popularitii sale, este cel mai folosit pentru discurile flexibile.
FAT este principalul sistem de administrare al fiierelor dezvoltat pentru DOS i Windows. Sistemul FAT
este considerat relativ simplu, acesta fiind unul din motivele pentru care este cel mai popular format pentru discurile
flexibile. Este suportat, virtual, de multe sisteme de operare i adesea este folosit pentru distribuirea informaiilor
ntre mai multe sisteme de operare instalate pe acelai calculator ntr-un mediu multibooting.
FAT a fost dezvoltat de mult timp, acesta fiind unul din motivele pentru care astzi este destul de criticat:
FAT induce n timp o fragmentare important a fiierelor pe disc, aceasta avnd drept consecin scderea
vitezei de accesare a fiierelor;
FAT nu pstreaz informaii redundante necesare pentru recuperarea datelor n cazul unei defeciuni a
sistemului; ntr-adevr, exist o copie a tabelului de alocare ns aceasta, de cele mai multe ori nu poate rezolva
problemele aprute;
FAT nu dispune de nici un mecanism pentru prevenirea accesului neautorizat la fiiere, atributele asociate
fiierelor fiind minimale;
primele versiuni de FAT aveau limitate numrul de caractere pentru numele i extensia fiierului (8+3); prin
VFAT, o variant modernizat, s-a extins totui la 255 numrul de caractere al numelui i extensiei;
organizarea, prin clustere2 de mari dimensiuni, irosete spaiul pe discurile de mare capacitate, spaiu
inaccesibil sistemului dar accesibil unor aplicaii perfide; spaiul respectiv este denumit slack file.
FAT a debutat o dat cu DOS 1.0 n 1983. Varianta iniial era destinat numai discurilor flexibile i nu
admitea existena directoarelor. Datorit dimensiunii reduse a discurilor, primele sisteme FAT erau realizate pe 12
2
Termen traductibil prin grmad, ciorchine; const ntr-un spaiu continuu pe disc obinut prin alipirea a mai multor sectoare
consecutive.
bii, dimensiune acceptabil pentru discurile flexibile cu care lucra sistemul de operare DOS1.0 (12 bii semnific
4096 de sectoare adresabile adic o capacitate de 2MB, mai mare dect cei 1.44 MB ai discului). Acest sistem de
administrare a cptat denumirea de FAT12.
Ulterior, DOS 2.0 a inclus i suportul pentru subdirectoare, precum i FAT pe 16 bii necesar pentru
utilizarea primelor hard discuri de 5 MB. Cele 65536 de locaii permiteau adresarea unui disc de 32 MB, suficieni la
data respectiv. Sistemul a cptat denumirea de FAT16.
Odat ce hard discurile au ncepu s creasc n dimensiuni, FAT16 a nceput s aib probleme n
administrarea ntregului spaiu util de pe un hard disc. Soluiile au constat n partiionarea discului (mprirea n mai
multe volume logice de sine stttoare) i n introducerea clusterelor care au mrit, virtual, capacitatea de stocare a
unei uniti de alocare. n principal, aceste faciliti au aprut odat cu Windows 95 care a mai eliminat o limitare a
sistemului clasic: prin VFAT (virtual FAT) era eliminat regula numelor de fiiere 8+3.
Din 1997, creterea n dimensiuni a clusterelor a fost epuizat: clusterul maxim era de 32768 octei, ceea ce
nsemna c Windows 95 nu putea vedea discuri mai mari de 2 GB. n consecin, pentru urmtorul sistem de
operare, Windows 95 OSR2, s-a introdus FAT32, sistem care permitea adresarea a 268 435 456 clustere (deocamdat
nu sunt folosii dect 28 de bii din cei 32; valoarea reprezint 228). n aceste condiii, dimensiunea clusterelor a
putut fi redus napoi la 4 KB (8 sectoare), fiind totui posibil adresarea unui disc de 1TB. O consecin pozitiv
rezultat din scderea dimensiunii clusterului a fost i utilizarea mai eficient a spaiului pe disc.
Sistemele de operare alternative pentru PC, de exemplu OS/2, BeOS, FreeBSD, LINUX etc. dispun i ele
de variante care suport VFAT i FAT32.
FAT32 - utilizeaz spaiul mai eficient. FAT32 utilizeaz clustere mai mici (adic clustere de 4 KO pentru
uniti de pn la 8 GO), avnd ca rezultat o utilizare a spaiului de disc cu 10-15 la sut mai eficient fa de
unitile mari FAT sau FAT16, este mai robust, poate relocaliza folderul rdcin i poate utiliza copia de rezerv a
tabelului de alocare a fiierelor n locul copiei implicite. n plus, nregistrarea de ncrcare a unitilor FAT32 este
extins pentru a include o copie de rezerv a structurilor de date critice, sunt mai puin predispuse la un singur punct
de eroare dect unitile FAT16, este mai flexibil. Folderul rdcin de pe o unitate FAT32 este un lan obinuit de
clustere, astfel nct poate fi plasat oriunde pe unitate. Limitrile anterioare n ceea ce privete numrul de intrri n
folderul rdcin nu mai exist. n plus, se poate dezactiva oglindirea tabelului de alocare de fiiere, permind s fie
activ o alt copie a tabelului de alocare a fiierelor n loc de prima copie. Aceste caracteristici permit
redimensionarea dinamic a partiiilor FAT32.
UMSDOS este un sistem de fiiere pentru LINUX care simuleaz cele mai avansate faciliti UNIX folosind
un sistem de fiiere de tip FAT.
HFS (Hierarchical File System) este folosit de sistemul de operare Apple Mac OS.
HPFS (High Performance File System) a fost creat pentru sistemul de operare OS/2.
ISO 9660 (mpreun cu extensiile Rock Ridge i Joliet) este un standard care definete sistemul de fiiere pentru
CD-ROM; este implementat n Windows, Mac OS, LINUX, UNIX etc.
JFS (Journalizing File System) sistem de fiiere cu monitorizarea activitilor dezvoltat de IBM; este disponibil
pe AIX, OS/2 i LINUX.
MINIX (Mini Unix) este unul din numeroasele clone de UNIX aprute n perioada n care AT&T (proprietarul
UNIX) refuza vnzarea acestuia; a stat la baza dezvoltrii LINUX.
NTFS (New Technology File System) este sistemul de fiiere standard pentru Windows NT i predecesoarele
sale Windows 2000 i Windows XP; capacitatea de a recupera automat dup anumite erori legate de disc, ceea ce
FAT32 nu poate realiza. Suport mbuntit pentru hard disk-uri mai mari. Are securitate mai bun, deoarece avei
posibilitatea s utilizai permisiuni i criptare pentru a restriciona accesul la anumite fi iere numai la utilizatorii
autorizai. Acest sistem de fiiere folosete adrese de disc de 64 de bii i poate suporta partiii de pn la 264 bytes,
totodat ofer posibilitatea folosirii caracterelor Unicode n numele de fiiere, permite folosirea numelor de fiiere
de pn la 255 de caractere, inclusiv spaii i puncte; permite indexare general a fiierelor; ofer posibilitatea
managementului dinamic al sectoarelor; datorit compatibilitii POSIX, permite crearea hard-link-uri, face
distincie ntre litere mari i mici n cadrul numelor de fiiere i pstreaz informaii de timp referitoare la fiier;
permite utilizarea fiierelor cu seturi multiple de date.
BIOS4-ul este un program de mrime mic (< 2MB) fr de care computerul nu poate funciona, acesta
reprezint interfaa intre componentele din sistem i sistemul de operare.
n zilele noastre un calculator personal - PC are n prezent mai mult memorie dect calculatorul IBM 7094,
cel mai mare calculator din lume la nceputul anilor 1960.n zilelor noastre programele cresc n dimensiune mai
repede dect memoria. Legea lui Parkison spune ca programele se extind pentru a ocupa toat memoria care le este
pus la dispoziie.
Ideea este c orice programator ar vrea ca memoria sa fie infinit de mare, infinit de rapid, nevolatil,
adic s i pstreze coninutul cnd nu este alimentat de curent.
Partea sistemului de operare care gestioneaz aceast memorie ierarhic se numete manager de memorie.
Este sarcina sa s urmreasc ce pri de memorie sunt libere, s aloce memorie proceselor cnd acestea au nevoie,
s dealoce memoria cnd procesele au terminat i s fac transferul dintre memoria principala i disc atunci cnd
memoria principal este insuficient pentru a conine toate procesele.
Sistemele de gestiune a memoriei pot fi mprite n dou categorii: cele care mut procesele ntre memorie
i disc n timpul execuiei acestora (interschimbare swapping i paginare) i cele care nu fac aceste operaii.
Trebuie s nelegem c interschimbarea i paginarea sunt n mare parte metode ce compenseaz lipsa unei
memorii principale suficient de mare nct s poat conine toate programele ce ruleaz la un moment dat. De exemplu,
Microsoft recomand urmtoarele specificaii pentru sistemul de operare Windows 7: Procesor: 1 GHz; RAM - 1 GB -2
GB i spaiu pe Hard Disk - 16 GB, asta n timp ce pentru Windows XP recomanda: Procesor: 200 MHz; RAM
utilizatorului
RAM
Sistemul
de operare n
RAM
(a)
(b)
(c)
Figura 3. 3 Trei moduri simple de organizare a memoriei pentru un sistem de operare i un singur
proces al utilizatorului
Cu excepia sistemelor ncorporate simple, monoprogramarea nu mai este folosit aproape nicieri. Cele mai
multe sisteme moderne permit rularea mai multor procese n acelai timp. A avea mai multe programe care ruleaz
Personal Digital Assistant - Asistente personale digitale sunt calculatoarele de tinut in mana care au fost initial proiectate
sa fie agende personale electronice, dar, in timp, au devenit mai polivalente. PDA-urile sunt de asemenea calculatoarele de
buzunar avand reputatia de calculatoarele sau de palmtop. Intrebuintari : calculator aritmetic, ceas de buzunar si agenda
calendaristica, pentru a juca jocuri electronice, accesarea internetul, receptionarea si transmiterea de e-mail-uri,
inregistrarea video, editarea de documente de tip text, agende electronice de contacte, editarea foilor de calcul tabelar,
receptor radio sau redarea fisierelor multimedia, si chiar Global Positioning System (GPS).
simultan nseamn c atunci cnd unul din procese este blocat ateptnd ca o operaie de I/E sa se termine, alt proces
poate utiliza procesorul. Deci multiprogramarea creste gradul de utilizare al procesorului. Dac n trecut numai
serverele de reea aveau ntotdeauna capacitatea de a rula mai multe procese n acelai timp pentru mai mul i clien i,
n zilele noastre PC-urile personale au aceast capacitate.
Cea mai simpl modalitate de a face multiprogramarea este de a diviza memoria n N parti ii posibil inegale
ca dimensiune, iar aceste partiii pot fi fcute manual la pornirea sistemului de operare. Cnd un proces trebuie
executat, va fi pus n coada de intrare a celei mai mici partiii care este suficient de mare pentru a-l cuprinde.
Deoarece partiiile sunt fixe, orice spaiu care nu este folosit de un proces, va fi pierdut.
Dezavantajul sortrii proceselor apare cnd o coada pentru o partiie mare este goal i o coad pentru o
partiie mic este plin (exemplu partiiile 1 i 3 din figura de mai jos).
Figura 3. 4 Partiii fixe ale memoriei cu cozi separate pentru fiecare partiie / Partiii fixe ale
memoriei cu o singur coad de intrare
Aici procese mici trebuie s atepte pentru a fi ncrcate n memorie, dei este suficient memorie liber,
alternativa ar fi s fie organizate ntr-o singur coad de ateptare. Deoarece cnd o partiie devine liber, procesul
cel mai apropiat de nceputul cozii care ncape n partiia respectiv va fi ncrcat i rulat n spaiul liber creat.
Deoarece este de preferat sa nu se piard o partiie mare pentru un proces mic, deci o strategie ar fi atunci cnd se
elibereaz o partiie s se caute prin toat coada de intrare cel mai mare proces care se potrivete. ns acest algoritm
dezavantajeaz procesele mici care se consider c nu merit o partiie pentru ele, n condi iile n care este de
preferat s se ofere proceselor mici cea mai buna servire, nu cea mai proast. Soluia ar reprezenta-o alocarea unei
partiii mici pentru rularea acestor procese, sau o alt soluie ar fi o regul care s nu permit ca un proces s fie srit
mai mult de k ori.
Acest sistem cu partiii fixe alese de operator dimineaa i care nu se mai schimb, a fost muli ani de
OS/260. Pe marile sisteme de calcul IBM, i se numeau MFT8, ns n prezent acest model nu mai este implementat
decat de foarte puine sisteme de operare (Exemplu: mainframe-uri).
n funcie de echipamentul folosit exist dou strategii de gestiune a memoriei: interschimbare (swapping)
aducerea unui proces n memorie, execuia sa pentru un timp, apoi trecerea lui napoi pe disc i memorie virtual
permite programelor s ruleze chiar dac nu sunt ncrcate complet n memorie.
Figura 3. 5 Alocarea memoriei se schimba pe msur ce procesele vin i pleac din memorie
Observaie: Regiunile haurate reprezint memoria nefolosit.
Figura 3. 8 Poziia i funcia MMU9 , dup cum se vede este parte a cipului procesorului.
Algoritmi de nlocuire a paginilor apar atunci cnd eroarea din pagina ne indic:
Ce pagin trebuie s nlocuim
9
Date rate
10 bytes/sec
100 bytes/sec
7 KB/sec
8 KB/sec
16 KB/sec
100 KB/sec
400 KB/sec
1.25 MB/sec
1.5 MB/sec
480MB/sec
4800MB/sec
4 MB/sec
5 MB/sec
6 MB/sec
12.5 Mb/sec
16.7 MB/sec
16.7 MB/sec
50 MB/sec - 800MB/sec
60 MB/sec
78 MB/sec
80 MB/sec
125 MB/sec
320 Mb/sec
528 Mb/sec
20 GB/sec
Figura 3. 10 RAID 1
RAID 3
oricare din ele poate ceda, fr s
afecteze integritatea matricei;
Performana este afectat, deoarece
scrierea/citirea se face simultan;
spaiul de stocare este de
jumtate; numr par de discuri.
Figura 3. 11 RAID 3
RAID 5
redundan de nivel N+1;
viabil de la mai mult de 3 discuri/partiii
ntr-o matrice;
scrierea informaiilor de paritate se face
pe toate discurile,
pentru un numr mare de discuri este cea
mai eficient metod;
capacitate de stocare este data de
(capacitatea unui disc)*(numrul de
discuri -1).
Figura 3. 12 RAID 5
RAID
RAID
RAID 0
RAID 1
RAID 5
RAID 6
10
Nr minim de
HDD
RAID
50
RAID 60
NU
un hdd
czut
un hdd czut
6
de la un de la un
disk
disc
czut n czut n
fiecare
fiecare
sub-ir
sub-ir
Ridicat
Ridicat
Ridicat
Ridicat
Ridicat Ridicat
Ridicat
Performanta
Scriere
Ridicat
Medie
Sczut
Sczut
Mediu
Mediu
Mediu
Performanta
Citire
(degradata)
N/A
Medie
Sczut
Sczut
Ridicat Mediu
Mediu
Protecia
Datelor
Performanta
Citire
8
de la doua
discuri czute
n fiecare subir
RAID
Performanta
Scriere
(degradata)
Capacitatea
de utilizare
Aplicaii
RAID 0
RAID 1
N/A
Ridicat
100%
Staii de
lucru,
loguri de
date,
redarea n
timp real,
date
foarte
tranzitorii
50%
Sisteme
de
operare,
tranzacii
n DB
RAID 5
Sczut
67% - 94%
Depozite BD,
servicii web,
arhivari
RAID 6
RAID
10
sczut
Ridicat
50% - 88%
50%
arhive DB,
backup pe disc,
soluii de
disponibilitate
foarte mare,
servere cu
cerine mari de
capacitate
BD
rapide,
servere
de
aplicaii
RAID
50
RAID 60
Mediu
67%94%
BD
mari,
Servere
de
fiiere,
servere
de
aplicaii
Sczut
50% - 88%
arhive DB,
backup pe
disc, soluii de
disponibilitate
foarte mare,
servere cu
cerine mari
de capacitate
Subsistemele trebuie s funcioneze implicit pentru a asigura setrile, i ori de cte ori este posibil ar trebui
s fie concepute pentru c nu reuesc sigure, mai degrab dect nu reuesc nesigure (a se vedea nu reuesc n
condiii de siguran pentru echivalentul n inginerie de siguran). n mod ideal, un sistem sigur ar trebui s solicite
o deliberat, decizie contient, cunotine i gratuit din partea autoritilor legitime n scopul de a face nesigure.
n plus, securitatea nu ar trebui s fie o problem de totul sau nimic. Designerii i operatorii de sisteme ar
trebui s presupun c nclcrile de securitate sunt inevitabile. Pistele de audit completa ar trebui s fie pstrate de
activitate de sistem, astfel nct atunci cnd se produce o nclcare a securitii, mecanismul i gradul de nclcare
poate fi determinat. Stocarea pistele de audit de la distan, n cazul n care acestea pot fi doar anexate, se poate
pstra intrui de la care s acopere urmele lor. n cele din urm, dezvluirea complet ajut s se asigure c, atunci
cnd sunt gsite bug-uri la fereastra de vulnerabilitate este meninut ct mai scurt posibil.
Atacuri DOS
Atacurile de tip Denial of Service10 sunt o cauz major de operare defectuoas a sistemelor n Internet i
reprezint cea mai serioas ameninare de astzi. Primul atac major a ngenunchiat reeaua Universitii Minnesota
n august 1999, iar 6 luni mai trziu un tnr canadian a atacat unele dintre cele mai importante site-uri Internet:
Yahoo, CNN, Amazon, Buy i eBay. De atunci atacurile par s fie n cretere.
Din nefericire, utilizatorii sunt mai interesai de software-ul cu mai multe faciliti dect de cel robust, fr
erori. n plus, securitatea are preul su. Software-ul modern cheltuiete un numr imens de cicluri main pentru a
desena ferestre tri-dimensionale cu alpha-blending sau alte asemenea mbuntiri vizuale, dar aceste lucruri nu aduc
nimic din punct de vedere al funcionalitii. Dei securitatea este o problem major, muli utilizatori nu se arat
dispui s cheltuiasc o putere de calcul similar pentru securitate. De asemenea, multor utilizatori nu le pas dac
sistemul lor este sigur sau poate fi utilizat ca int sau ramp de lansare a unor atacuri de diferite feluri.
Falsul sentiment de securitate este probabil mai ru dect lipsa total a securitii. nc exist suficient de
muli administratori care las sistemele lor neprotejate, neaplicnd ultimele patch-uri i neconformndu-se
procedurilor de bun practic adoptate de fiecare organizaie. Dac avem n vedere faptul c numrul de locuine,
coli, biblioteci i alte locuri publice conectate la Internet a crescut exponenial n ultima vreme, dimensiunea
problemei apare n toat mreia sa.
Ameninrile de securitate se pot categorisi, dup cum urmeaz:
Scurgeri de informaii (confidenialitate)
Autentificri nereuite
Termenul se traduce aproximativ prin interzicerea serviciului, dar am ales s folosim aici terminologia original
din limba englez deoarece este un termen de referin n articolele de specialitate
n perioada cnd Internetul nsui era proiectat, contabilizarea resurselor era scopul cu prioritatea cea mai
mic, lucru ce ne afecteaz astzi cel mai mult. n contrast cu reelele de telefonie omniprezente unde folosirea
resurselor era atent controlat, cei care au proiectat reeaua Internet nu au prut s acorde importan acestui aspect.
Astfel, serverele aloc aceeai putere de calcul tuturor cererilor care sosesc la un moment dat ceea ce mpiedic o
degradare elegant a performanei n cazul unui atac sau n cazul unei ncrcri excesive.
Scenariul anterior este oarecum similar cu mecanismul rudimentar de procesare a pachetelor de intrare
datorit arhitecturii bazate pe ntreruperi a subsistemului de reea. Toate sistemele de operare implementeaz acest
tip de arhitectur care s-a dovedit neadecvat n condiii de ncrcare mare. Pachetele de la intrare sunt procesate cu
prioritatea maxim pentru ca apoi s fie distruse pentru c nu exist nici o aplicaie care s le deserveasc. Aceast
situaie se numete receiver livelock. Mai mult, chiar dac exist o aplicaie care s deserveasc aceste pachete,
prioritatea procesului nu este luat n calcul. Astfel, aplicaiile cu prioritate mic primesc aceeai cantitate de trafic
ca cele cu prioritate mai mare. n lucrarea lor, Druschel i Banga propun o arhitectur cu de procesare ntrziat care
se bazeaz pe demultiplexarea timpurie a pachetelor i procesarea cu prioritatea destinatarului. Ei susin c noua
arhitectur ar mbunti stabilitatea, justeea i capacitatea sistemelor n condiii de ncrcare mare n timp ce
performana nu ar avea de suferit n condiii normale. O noua clas de atacuri de band ngust exploateaz
deficienele structurilor de date n diferite aplicaii. Structurile de date folosite n mod uzual au un timp de rulare n
cazul mediu mult mai bun dect n cazul cel mai defavorabil.
Spre exemplu, att tabelele de dispersie ct i arborii binari degenereaz n liste nlnuite atunci cnd la
intrare se prezint date alese corespunztor. Folosind banda tipic a unui modem, autorii citai au adus un server Bro
n pragul colapsului; n ase minute de la nceputul atacului, serverul ignora 71% din trafic i consuma ntreaga
putere de calcul disponibil.
Avnd n vedere tendina global a pieelor de a se muta on-line, atacurile DOS se dovedesc mult mai periculoase
dect s-a prevzut la nceput ntruct acestea pot bloca victimele pe durate lungi de timp. De la momentul la care a nceput
atacul i pn cnd acesta este detectat i eliminat, victima este paralizat i nu poate rspunde la cererile legitime. Pentru
site-urile comerciale mari aceasta se traduce prin pierderi de ordinul miliardelor de dolari.
Dei atacurile DOS nu amenin datele n mod direct, nu avem nici un motiv s credem c un altfel de atac
nu ar putea uram cu exact acest scop. Aceste atacuri de urmare pot distruge date critice, cauznd astfel mai multe
daune dect atacul DOS n sine, ceea ce nu este de dorit.
Acest fel de atacuri n lan pot avea loc dac protocoalele continu dialogul cu atacatorul chiar i dup
detectarea unor anomalii n dialogul purtat ntre pri. Ideea de baz n spatele protocoalelor rezistente (numite
protocoale fail-stop sau fail-safe) este c schimbul de mesaje s nceteze cu orice client care nu urmeaz cursul
firesc al protocolului.
Smurf Flood
Smurf Flood este un atac DOS cunoscut i sub numele de reflector. Un atacator trimite un numr mic de
pachete echo ICMP la o adres de broadcast care definete mai multe gazde. Rspunsurile tuturor acelor gazde sunt
trimise simultan ctre victim, epuiznd toat banda de comunicaie i posibil puterea de calcul.
TCP SYN
Atacul de tip TCP SYN este posibil datorit schimbului de mesaje de la nceputul protocolului TCP. Un
client trimite o cerere (SYN) ctre un server, anunndu-i intenia de a porni o conversaie. La rndul su, serverul
desemneaz o intrare n tabela cu conexiuni pe jumtate deschise i trimite napoi un mesaj de ncuviinare (SYN
ACK), semnaliznd astfel disponibilitatea sa. n acest moment clientul trebuie s rspund cu un pachet SYN ACK
ACK pentru a putea ncepe comunicaia de fapt. Un atacator ar putea s nu trimit niciodat aceast confirmare,
cauznd umplerea tabelei de conexiuni, cererile legitime ulterioare fiind astfel blocate. Daca un atacator trimite o
rafal de astfel de cereri, acesta poate paraliza activitatea unui server de 100 MIPS care poate deservi 2000 de
conexiuni pe secund [SPAT99], dimensiunea tipic a tabelei TCP fiind de 2048 de intrri [DEC96].
UDP Flood (Fraggle)
Acest atac este posibil datorit naturii protocolului UDP care nu este orientat pe conexiune. Din moment ce
nu este necesar nici un dialog n prealabil, un atacator poate trimite pachete ctre porturi aleatoare ale sistemului
vizat. Victima va aloca resurse pentru determinarea aplicaiilor care ascult porturile pe care sosesc date, iar cnd i
d seama c nici o aplicaie nu face acest lucru, va trimite ca rspuns un pachet ICMP. Dac numrul de pachete
aleatoare este suficient de mare, exist posibilitatea ca sistemul s aib probleme.
ICMP Flood
Acest atac const din trimiterea unui numr mare de pachete ICMP ctre victim. Aceasta nu poate ine
pasul cu volumul de informaie primit i poate observa o degradare a performanei.
E-mail bombing
E-mail bombing nseamn trimiterea unui numr mare de mesaje electronice ctre un server cu scopul de
a epuiza spaiul de pe disc i limea de band.
Cu excepia atacului UDP, restul se pot evita prin msuri luate la nivelul sistemului de operare. Atacul UDP
este dificil de contracarat ntruct exist o multitudine
de aplicaii care ascult la o multitudine de porturi. Filtrarea cu ajutorul firewall-urilor ar avea un impact
puternic asupra funcionalitii iar acest pre nu l vor plti foarte muli utilizatori.
Atacul prin pachete modificate este un alt fel de atac DOS rspndit. Scopul acestui tip de atac este
exploatare greelilor de proiectare a codului care prelucreaz pachete din diferite sisteme de operare. Efectele merg
de la degradarea performanei pn la cderea sistemului.
Aproximativ jumtate din totalul problemelor pe Internet au ca i cauz depirile de buffer. Acestea se
cunosc de mai bine de 40 de ani i cam din aceeai perioad dateaz i soluia. Limbajul Algol a introdus limitele
obligatorii la tablouri dar programatorii nc refuz s foloseasc instrumente mai bune. Acest lucru este comparabil
cu un fabricant de maini care nzestreaz mainile cu rezervor din hrtie cerat [DEWA01].
Principalele atacuri cu pachete modificate sunt:
Ping of Death
Acest atac const n trimiterea unui pachet ICMP mult mai mare dect pachetul maxim IP, i anume 64
KBytes. La destinaie, unele implementri nu pot decodifica pachetul, cauznd prbuirea sau reboot-ul sistemului.
Dou implementri binecunoscute care au acest comportament sunt Windows 95 i unele versiuni timpurii de
Windows NT.
Chargen
Acest atac este o variant a atacului de tip UDP Flood i folosete portul 19 (chargen) al unui sistem
intermediar folosit ca amplificator. Atacatorul trimite un pachet UDP fals ctre un sistem intermediar care la rndul
su rspunde cu un ir de caractere victimei, pe portul su echo. Victima trimite napoi un ecou al irului primit i
bucla creat consum rapid banda dintre victim i sistemul intermediar.
Teardrop
Datorit implementrii defectuoase, unele sisteme nu pot asambla fragmente de pachete care au deplasamente
eronate. n loc s ignore elegant aceste pachete, aceste implementri blocheaz sau reboot-eaz sistemul.
Land
Dei este greu de crezut, unele sisteme se blocheaz cnd primesc pachete avnd aceeai adresa ca surs i
destinaie.
WinNuke
Acest tip de atac este specific sistemelor de operare Windows. Atacatorul trimite date aleatoare la un port
anume, ceea ce cauzeaz blocarea sau reboot-ul sistemului.
O alt clasificare a atacurilor DOS este dup numrul de participani:
Atacuri uni-surs: un singur atacator are ca int o singur victim.
Atacuri multi-surs: mai multe gazde (numite zombie) particip fr s tie n rolul atacatorilor, fiind
compromise de capul operaiunii. Dei mai greu de pus n practic, acest tip de atac este i cel mai periculos i cel
mai greu de luptat mpotriva lui. Mai este cunoscut i sub numele de atac Distributed Denial of Service (DDOS).
[RAZM00] d un echivalent al atacului DOS n lumea real: Alice nu l place pe Bob i n consecin
telefoneaz mai multor companii de pizza, comandnd cte o pizza de la fiecare i cernd ca acestea s fie trimise la
domiciliul lui Bob la o or anume. Cnd timpul sosete, Bob este copleit de mulimea de distribuitori de pizza care
ajung la domiciliul su, fiecare pretinznd banii cuvenii. Simplu i eficient, acest atac poate s rmn cu autor
necunoscut dac Alice a sunat de la un telefon public (n esen ascunzndu-i identitatea).
2
Nichi
tefan Ioan
4
Nichi
tefan Ioan
6
Nichi
tefan Ioan
nivelul intern
nivelul conceptual
nivelul extern
8
Nichi
tefan Ioan
10
Nichi
tefan Ioan
12
Nichi
tefan Ioan
Nume
Ionescu
Popescu
An
II
III
Secie
CIG
FA
Situaie colar
BURSIER
NEBURSIER
111111
111111
111111
domeniul
111111
nregistrarea logic
111111
cardinalitatea relaiei
111111
rangul relaiei
Cod facultate
STE
FIL
BIO
MED
Denumire facultate
T. ECONOMICE
FILOLOGIE
BIOLOGIE
MEDICIN
Adresa
Mihali 58+60
Horea 5
Hajdeu 10
E. Isac 20
nregistrare logic
(antet relaie)
Linie (tuplu)
Domeniu
14
Nichi
tefan Ioan
pentru i=1,2,...,m
Ilustrarea acestui mod de abordare rezult din figura urmtoare:
tefan Ioan
Nichi
16
t1
t2
A2
d
1,1
2,1
tk
k,1
tm
A1
d
m,1
1,2
2,2
k,2
m,2
An
d
Antetul relaiei
1,n
2,n
Corpul relaiei
k,n
m,n
are marca 142, toi copiii vor avea valoarea cheii strine MARCA,
142.
Tipuri de legturi ntre relaii
Una din componentele modelului relaional se refer la legturile
dintre relaii sau tabele. O legtur (relaie dinamic) se definete
ca fiind o asociere ntre mai multe tipuri sau clase de entiti. Cea
mai frecvent legtur ntlnit n practic este cea dintre dou
tipuri de entiti, numit i legtur binar.
Legturile binare, aa cum s-a amintit, dup cardinalitatea lor
(numrul entitilor din fiecare clas de entiti care intr n
cadrul legturii) se pot clasifica astfel:
18
Nichi
tefan Ioan
legturi de tip 1-1, prin care unei entiti din mulimea sau
clasa M1 i corespunde o singur entitate n mulimea sau clasa
M2. Exemplu: legtura ntre tabelele SALARII i ANGAJATI legate
prin cheia COD_ANGAJAT; unui angajat din tabela ANGAJATI i
corespunde o singur entitate (nregistrare) n tabela SALARII i
invers; n relaiile sociale aceste relaii se numesc monogamie sau
relaii de tip iudeo-cretine;
legturi de tip 1-n, prin care unei entiti din mulimea M1 sau
din tabelul M1 i corespund mai multe entiti n mulimea sau
tabelul M2, iar unei entiti din M2 i corespunde o singur
entitate n M1. Exemplu: n cazul tabelelor DEPARTAMENTE i
ANGAJATI, un departament poate avea mai muli angajai, dar un
angajat nu poate face parte dect dintr-un departament; n cadrul
relaiilor sociale, acestea se numesc relaii de tip poligamie sau
poliandrie, dup caz;
legturi de tip m-n, prin care unei entiti din M1 i corespund mai
multe entiti n M2 i reciproc; relaiile sociale de acest tip se
numesc relaii de grup sau hyppie.
Observaii.
n unele materiale apar i legturile de tip n:1, care ns pot
fi considerate ca legturi de tip 1:n inversate.
Pentru datele dintr-o baz de date pot fi definite mai multe tipuri de
restricii, cum ar fi: restricia de domeniu, de atomicitate, referenial
i restricii utilizator. Dintre acestea, ne vom referi n continuare la
restricia referenial sau integritatea referenial, pe care se
bazeaz stabilirea legturilor dintre dou tabele.
20
Nichi
tefan Ioan
STUDENI
(NrMatricol, CNP,
Nume,
Prenume, AdresaDomiciliuStabil,
AdresaFlotant, AdresaE-mail, DataNasterii, LoculNasterii, Sectia,
An, Grupa)
NOTE (NrMatricol,
CodMaterie,
Semestru, TipExaminare, Nota,
NrCredite)
MATERIE(CodMaterie, DenumireMaterie)
An,
Den_fac
Adresa
FSE
STIINTE EC.
Mihaly 58-62
Tabelul 3.3
Relaia
FIL
FILOLOGIE
Horea 5
BIO
BIOLOGIE
Hajdeu 10
MED
MEDICINA
1 Mai 15
FACULTI
2
2
1.Relaie / tabel
nregistrare logic / antet
2. tabel
tefan Ioan
Nichi
FACULTA
TI
Cod_fac
Den_fac
Adresa
3.Atribute
Cod_fac, Den_fac,
Adresa
4.Tuple / Linii
7. Domeniu
FSE
STIINTE EC.
Mihaly 58-62
FIL
FILOLOGIE
Horea 5
BIO
BIOLOGIE
Hajdeu 10
MED
MEDICINA
1 Mai 15
ANTET
nregistrri
de date
Dicionarul de
date
Se memoreaz n
...
Aplicaia n
Fiier 1
Extensia bazei
de date
Fiier 1
...
Fiier m
Baza de date fizic
24
Nichi
tefan Ioan
tefan Ioan
Nichi
26
Sala#
Capacitat
ea
Orar
Zi
An
Materia
Cadrul
didactic
Ora
026
100
Luni 8
IE IV
Baze de
date
Ionescu
026
100
Luni 10
MF III
MRU
Popescu
...
022
150
Luni 8
Contabilitat
CIG III e
022
150
Luni 10
IE IV
...
...
033
033
150
150
Georgescu
CSBD
Ionescu
IEIII
CSBD
Apolodor
Luni 10
MKIII
Cercetri
de
marketing
Alexa
...
...
..
Luni 8
..
Sala1
Sala
Sala2:
An
Materia
Cadru
didactic
Luni 8
IE IV
Baze de
date
Ionescu
Luni 10
MF III
MRU
Popescu
Capaci
Capaci Orar
tatea
Tatea
Zi
026
100
100
026
100
100
Ora
...
022
150
150
Luni 8
Contabilitat
CIG III e
Georgescu
022
150
150
Luni 10
IE IV
...
...
..
CSBD
Ionescu
033
150
150
Luni 10
IE IV
CSBD
Apolodor
033
150
150
Luni 10
IE IV
CSBD
Alexa
...
...
..
tefan Ioan
Nichi
28
Sala#
Capacitat
e
Orar
Zi
An
Materia
Cadru
didactic
Ora
026
100
Luni 8
IE IV
Baze de
date
Ionescu
026
100
Luni 10
MF III
MRU
Popescu
Ionescu
Popescu
...
026
100
Luni 8
IE IV
Baze de
date
026
100
Luni 10
MF III
MRU
...
022
150
Luni 8
Contabilitat
CIG III e
022
150
Luni 10
IE IV
...
...
..
CSBD
Georgescu
Ionescu
022
150
Luni 8
Contabilitat
CIG III e
Georgescu
022
150
Luni 10
IE IV
Ionescu
...
...
..
CSBD
30
Nichi
tefan Ioan
r
...
...
...
...
...
...
... ...
...
...
Tabelul
3.7
Relaia
PERSONAL
32
Nichi
tefan Ioan
Relaie 1NF
Tabel nenormalizat
DDLocalitate Strad
Copi
D-Numr ... l
...
...
... ...
Tabelul
3.9
123Ionescu IonCJClujNapocaTh.Mihali2
..
. Petric
123Ionescu IonCJClujNapocaTh.Mihali2
.. Mrioar
. a
123Ionescu IonCJClujNapocaTh.Mihali2
.. Costic
. ...
Nume i
Prenume
...
...
DJude
DD-Localitate Strad
D-Numr ...
Locul-
ituaia Alocaie
...
Tabelul
3.10
i tabelul COPII cu
structura:
MARCA
#
...
Nume i
Prenum
e
...
Data-
Naterii Naterii
colar
Tabelul
3.11
unde MARCA# este o cheie strin, prin care se asigur legtura cu
tabelul PERS1, restul datelor fiind proprii copilului n cauz. MARCA#
nu mai poate fi cheie primar, deoarece un printe poate avea mai
muli copii i deci nu se mai asigur unicitatea valorilor cheii. Rezult
deci c s-ar putea lua ca i cheie primar atributul Nume i
Prenume mpreun cu Data-Naterii, avnd n vedere faptul c un
printe poate, prin absurd, boteza doi sau mai muli copii cu acelai
prenume.
Teorema de descompunere
Descompunerea se utilizeaz pentru a evita anomaliile de stocare
mai sus amintite.
Teorema de descompunere reversibil se mai numete teorema
lui Delobel i se enun astfel: Fie R o relaie definit pe
mulimea atributelor , R() i fie A,B,C o partiionare a
lui , as el nct s existe DF:AB. Atunci R() poate fi
descompus fr pierderi n dou relaii R(1 ) i R(2 ),
unde
1=A U B este reuniunea atributelor din DF
2=A U C- este reuniunea lui A cu atributele care nu fac
parte din DF.
34
Nichi
tefan Ioan
COPII
Nume i
prenume
COPIL2
Datanaterii
Situaia
colar
Datanaterii
Loculnaterii
Alocaie
Relaie 1NF
Teorema de
descompunere
Se izoleaz dependena
Relaie 2NF
B
C
36
Nichi
tefan Ioan
DataAngajrii
...
...
OreLucrate
SalarBrut
...
...
Tabelul 3.12
Aceasta, dei este n 2NF, nu este n 3NF, deoarece ntre
atributele care nu fac parte din cheie, Data-Angajrii i OreLucrate, pe de o parte, i Salar-Brut, pe de alt parte, exist o
relaie funcional. Izolnd aceast relaie, din tabelul PERS1 se
obin tabelele:
PERS11
MARCA#
PERS1
Nume i
prenume
Data
angajrii
PERS12
Dataangajrii
Ore
lucrate
Salar
brut
Ore
lucrare
Relaie 2NF
Teorema de
descompunere
Se izoleaz dependenele
tranzitive ntre atribute
care nu sunt chei
Relaie 3NF
Ore-lucrate
(1)
Figura 3.9
Aplicnd teorema descompunerii i izolnd (1), vor rezulta dou
tabele:
38
Nichi
tefan Ioan
PERS121
PERS122
Data-angajrii Orelucrate
Ore-lucrateSalarbrut
2.
Tabelul 3.13
Este de remarcat faptul c relaia PERS121 este format numai din
cheie (ALL KEY), deci nu are nici un atribut care s nu fie cheie, i
c descompunerea este fr pierderi, deci:
PERS12 = PERS121 [Ore_Lucrate = Ore_Lucrate]
PERS122
Schematic operaia se poate reprezenta astfel:
Relaie 3NF
Teorema de
descompunere
Se izoleaz dependenele
dintre atributul non-cheie
i o parte a cheii primare
Relaie BCNF
p
q
R2- R1.
Observaii. Aceste probleme au fost tratate de foarte mult timp
n literatura de specialitate. Astfel, enumerm cteva rezultate
din domeniu, pe care le considerm interesante:
6. Teorema lui Delobel asigur reversibilitatea descompunerii dar
nu i conservarea dependenelor.
7. S-a demonstrat (Ullman 1980), c orice relaie are cel puin o
descompunere reversibil n 3NF, cu conservarea
dependenelor. El a dat i un algoritm pentru o astfel de
descompunere.
vom utiliza n general noiunea de sit, ca sinonim pentru site, nod, staie etc.
Prin natura lor, datele din cadrul unei organizaii sunt dispersate att logic, ct i
fizic. Angajaii colaboreaz la realizarea unui proiectul prin intermediul a mai multe
calculatoare amplasate fizic n birouri, cldiri, ateliere specifice etc. Accesarea se poate face
de pe aceeai main de calcul sau de pe maini diferite, indiferent de apartenena
utilizatorului la un anumit departament sau birou. La fel, baza de date poate fi i ea plasat
ntr-o singur locaie sau n locaii diferite. Dispersarea poate s se fac depind bariera
unui birou sau a unei cldiri, ajungndu-se n seciile sau atelierele unitii de producie sau
n diferite sucursale, agenii sau puncte de lucru ale organizaiei respective rspndite n
diverse coluri ale unui ora, ar, continent, sau chiar ale lumii. n exemplele furnizate n
acest capitol vom considera o baz de date care reflect evidena studenilor facultii
noastre n condiiile unei activiti repartizate pe secretariate din doar dou locaii
posibile: Cluj-Napoca i Sighetu Marmaiei.
Apariia reelelor de calculatoare a fost un prim pas n integrarea informaiei existente
ntr-o companie. Integrarea tehnologiei bazelor de date cu cea a reelelor a dat natere unei
tehnologii mult mai puternice dect era fiecare dintre cele dou domenii anterior momentului
hibridizrii. Dei exploziv, dezvoltarea s-a fcut n trepte de evoluie. Cu toate acestea, nici
acum i niciodat nu vom putea spune c s-a epuizat cu totul acest domeniu.
1.2 Fragmentarea
n literatura de specialitate, pentru conceptul de fragmentare se folosete alternativ
i denumirea de partiionare.
Definiie: Fragmentarea reprezint procedeul de spargere a relaiilor utilizate ntrun sistem distribuit prin operaiuni relaionale de proiecie i selecie controlate, n vederea
plasrii aa-numitelor partiii (fragmente) rezultate n locul n care sunt cel mai frecvent
solicitate datele pe care le conin.
Fragmentarea reprezint o abordare a dimensiunii bazei de date, care se realizeaz
prin divizarea tabelelor de date n unul sau mai multe fragmente disjuncte, n scopul stocrii
fizice.
[Connolly et al. 2001] consider urmtoarele motive ca fiind premisele de baz n
favoarea recurgerii la fragmentare:
Uzana. n aplicaiile proiectate pentru baze de date n general, multiutilizator
se practic frecvent utilizarea tabelelor virtuale n detrimentul relaiilor ntregi. De cele mai
multe ori un operator nu are nevoie de toate informaiile, att ca i structur, ct i ca i
4
coninut, pe care o relaie ntreag este capabil s le furnizeze. Astfel, acesta poate s se
concentreze strict asupra problemelor cu care interacioneaz i nu asupra unor aspecte
colaterale. Datorit acestui aspect, unitatea atomic de proiectare i utilizare n cadrul unor
astfel de sisteme, nu va fi relaia (de cele mai multe ori), ci o subdiviziune a acesteia;
Eficiena. Distribuirea unor relaii ntregi pe diferite staii de lucru ar anula
aspectul semantic al siturilor n funcionalitatea sistemului distribuit. Cu ce ar ajuta dac
n situl X localizat n Cluj-Napoca am avea stocat relaia ce conine materiile de studiu, iar
pe nodul Y aflat n Sighetu Marmaiei am avea relaia care conine datele de identificare a
tuturor studenilor? n mod uzual secretariatul din Cluj-Napoca (X) ar dori s utilizeze
informaiile privind studenii care frecventeaz cursurile n Cluj-Napoca, iar cel din Sighet
(Y), informaiile referitoare la cei din Sighet;
Paralelismul. Mai multe fragmente ale unei baze de date permit sporirea accesului
concurent. Mai mult, sistemul va fi capabil s rspund aproximativ n acelai timp la mai
multe cereri tocmai datorit acestui aspect. De exemplu, mult mai rapid se va rspunde
unor cereri lansate simultan, una de pe situl X i una de pe Y, n cazul n care X solicit
mediile studenilor ce frecventeaz cursurile n Cluj-Napoca, iar Y ale celor din Sighet.
Dac relaia ce conine toi studenii ar fi stocat ntr-un singur loc s zicem n Sighet
rezolvarea cererilor ar fi ncetinit de secvenialitatea procesrii (mai nti una din cereri,
apoi cealalt) sau ntrzieri datorate metodelor de gestionare a accesului concurent,
dimensiunea mai mare a relaiei (prelucrare mai greoaie), i nu n ultimul rnd, distana;
Securitatea. n ceea ce privete securitatea, un atac din partea unor persoane ruvoitoare n-ar afecta funcionarea ntregului sistem (i n general chiar deloc, datorit
replicrii datelor) n cazul unui atac asupra unui sit, care conine doar cteva fragmente ale
bazei de date i nicidecum ntreaga baz sau relaii ntregi. Pentru succesul atacului acesta
ar trebui s fie direcionat asupra mai multor noduri, iar probabilitatea unui asemenea
eveniment este mult mai mic dect cea a reuitei asupra unui singur nod.
Cu toate punctele tari, aceasta prezint i unele dezavantaje:
Complexitatea proiectrii. Un sistem distribuit este mai greu de proiectat dect
unul nedistribuit. Existena fragmentelor implic o serie de factori suplimentari, cum ar fi
de exemplu stabilirea locaiei unui fragment, optimizarea interogrilor etc.;
Performana. Chiar dac n general, datorit unei alocri eficiente a fragmentelor,
performanele unui sistem distribuit sunt mai mari dect ale unui sistem nedistribuit, lucrurile se
pot complica n cazul unor interogri mai complexe ce solicit informaii prea disparate
legtura ntre datele unui tuplu i pentru a putea face recompunerea cu uurin, cheile
primare trebuie replicate pentru fiecare fragment creat de-a lungul atributelor.
n funcie de operatorii relaionali care se aplic asupra relaiilor, fragmentarea
(partiionarea) poate fi de mai multe tipuri: orizontal, vertical i mixt. Pe lng aceste
tipuri clasice, uneori situaia impune necesitatea unor fragmentri derivate sau chiar a unor
relaii nefragmentate. Toate acestea vor fi discutate mai pe larg n paragrafele urmtoare.
Limitele n care se ncadreaz fragmentarea sunt de la un tuplu, atribut, o valoare a
unui tuplu, pn la ntreaga relaie sau baz de date (n cazul fragmentrii derivate). ntre
aceste granie se afl granulaia fragmentrii. Ce, cum i ct fragmentm sunt ntrebrile pe
care i le pun toi proiectanii de baze de date.
unul conine pi, iar cellalt pi. Cele dou predicate minterm determin fragmentele f i i fj. pi
este relevant n raport su setul de atribute dac i numai dac:
acc(mi)/card(fi) acc(mj)/card(fj). [Sacca & Wiederhold 1985]
simple este 2n. Exist preri cum c la un numr dat de m atribute non-cheie ale unei relaii,
numrul de variante este determinat de o funcia B(m), care reprezint al m-lea numr Bell.
[Niamir 1978] Pentru valori mai mari ale lui m, numrul de variante posibile tinde spre
10m. Pentru m=15, B(m) 109, iar pentru m=30, B(m) 1023.
Exist dou modaliti de abordare a proiectrii fragmentrii verticale:
Gruparea atributelor. A fost propus pentru prima dat spre a fi utilizat n
bazele de date centralizate n 1978 [Niamir 1978], iar mai apoi, n 1985 [Sacca &
Wiederhold 1985], n bazele de date distribuite. Presupune iniial stabilirea cte unui
fragment pentru fiecare atribut. Apoi, pn la satisfacerea unor criterii stabilite se agreg
noi atribute. Aceast tehnic ncalc proprietatea de disjunctivitate a fragmentelor. De
aceea, se recomand ca atributele replicate s nu fie deloc, sau eventual doar foarte rar
actualizate [Lungu et al. 1995];
Partiionarea atributelor. Tehnica a fost discutat i propus pentru bazele de
date centralizate [Hoffer & Severance 1975], pentru a fi extins [Navathe et al. 1984] i n
cazul bazelor de date distribuite. Se pornete de la schema iniial a relaiei i pe baza unor
criterii statistice (numr de accese din partea aplicaiilor).
n general se aplic cea de-a doua metod. Pentru stabilirea atributelor care vor
face parte dintr-un anumit fragment se vor identifica mai nti aplicaiile (cererile) care
acioneaz asupra acestor atribute. Se va determina matricea afinitilor dintre atribute, iar
apoi se va utiliza algoritmului energiei de angajament (BEA5), propus de Mc Cormick
[Mohan et al. 1986], care este special proiectat pentru a grupa atributele cu afiniti
apropiate. Efortul computaional al acestuia este rezonabil (O(n 2)), iar n plus permite i
determinarea legturilor secundare dintre diferitele grupuri de atribute. [Hoffer &
Severance 1975] Algoritmul se bazeaz pe permutarea coloanelor i liniilor matricei de
afinitate i obinerii matricei de afinitate partiionat. Permutrile trebuie fcute de aa
manier nct s se maximizeze cuantumul afinitii globale.
Deoarece i matricea care va rezulta este o matrice simetric, formula de
maximizare a afinitii globale poate fi redus la:
n
i1 j1
Crearea matricei este un proces iterativ care presupune mai nti mutarea unei
singure coloane n noua matrice, apoi plasarea celorlalte n aa manier nct s fie n acord
cu condiiile expuse anterior. Dup plasarea tuturor coloanelor, i liniile trebuie
interschimbate astfel nct s potriveasc poziia relativ a coloanelor.
Dup gsirea matricei de afinitate partiionat, pe diagonala matricei trebuie s
fixm un punct, numit punct de divizare, care mparte mulimea atributelor relaiei n dou
submulimi formate din atributele {A1, A2, Ai}, respectiv {Ai+1, An}, alctuind matricele
(ptratele) TA7 i BA8.
Dup identificarea posibilelor fragmente n funcie de afinitile atributelor i
frecvenelor aplicaiilor care le solicit este necesar efectuarea procedurii de verificare a
celor trei condiii definitorii ale fragmentrii. Singura de la care putem face rabat ntr-o
anumit msur ar fi cea de disjunctivitate a fragmentelor. Aa cum am mai menionat, n
1 Bond Energy Algorithm
2
formul preluat din [zsu & Valduriez 1991], pagina 126
3 Top Attributes
4 Bottom Attributes
F1
F3
F2
F4
F1
F5
F6
F2
F3
F4
F5
F6
1.3 Replicarea
Unul din aspectele importante ce caracterizeaz sistemele distribuite este
fiabilitatea i disponibilitatea. Aceasta nseamn c o pan n unul dintre siturile sistemului
nu va paraliza funcionarea sistemului i nici nu va afecta disponibilitatea datelor care au
fost nmagazinate n situl respectiv. Atingerea acestei performane nu se poate realiza dect
cu ajutorul replicrii fragmentelor.
Replicarea cunoscut n literatura de specialitate i ca reproducere presupune
copierea unor fragmente n mai multe locaii. ntr-o baz de date distribuit exist mai
multe nivele de replicare. Astfel, avem:
Baze de date centralizate. Sunt sistemele cu prelucrare distribuit (centralizate),
n care avem o singur baz de date stocat pe nodul central. La fel avem un singur SGBD.
Caracterul local al referinei este cel mai sczut, deoarece doar nodul central poate face
accesri sau prelucrri locale. Securitatea, fiabilitatea i disponibilitatea sunt sczute i
depind n cea mai mare msur de nodul central. Costul comunicaiei este ridicat;
Baze de date partiionate, fragmentate sau nereplicate. Sunt acele baze de date
distribuite n care toate fragmentele apar o singur dat. Implementarea se face cu cel mai
sczut cost al stocrii. O astfel de baz de date nu ofer fiabilitate i nici disponibilitate prea
ridicate, ns este mai mare dect n cazul sistemelor centralizate. Caracterul local al
referinei este la un nivel acceptabil. Costurile de comunicaie sunt mai moderate.
Actualizrile i consultrile se fac eficient;
Baze de date replicate integral. Orice sit conine cte o copie a ntregii baze de
date. Caracterul local al referinei, disponibilitatea, securitatea i fiabilitatea sunt maxime.
Probleme ntmpinm la costul ridicat al echipamentelor de stocare, comunicaia
aglomerat n cazul actualizrilor. O rezolvare parial a acestor inconveniente ar fi
utilizarea instantaneelor, adic imagini ale bazei de date care se actualizeaz periodic.
Dezavantajul lor este c nu ntotdeauna ofer o situaie actualizat, iar n momentul
actualizrii se genereaz trafic mare pe reea;
Baze de date replicate parial sau selectiv. Anumite fragmente sunt replicate,
altele nu. Sunt replicate fie acele fragmente cu utilizare frecvent, fie relaii ntregi de
dimensiuni mici care nu merit s fie fragmentate, ci mai degrab memorate pe fiecare sit.
n aceast ultim situaie intr i acele relaii sau fragmente cu actualizri sporadice.
Aceast strategie este o mbinare a celor 3 enunate anterior. ncearc s le preia avantajele
i s le minimizeze dezavantajele. De aceea aceasta se implementeaz cel mai adesea.
Costurile de comunicaie i de stocare sunt relativ reduse. Caracterul local al referinei,
securitatea, fiabilitatea i disponibilitatea sunt apropiate de maxim. [Connolly et al. 2001]
..., qk, ..., qq}. Problema proiectrii alocrii se refer la distribuirea optim cost minim,
performan maxim a fragmentelor F pe siturile S.
Alocarea poate s fie neredundant sau redundant. Alocarea neredundant este
cea mai ieftin n ceea ce privete efortul de proiectare i cea mai uor de realizat. Un alt
avantaj l confer posibilitatea de actualizare a fragmentelor. Realizarea unei astfel de
proiectri se bazeaz pe metoda celei mai bune alegeri, care stipuleaz c unei staii pe care
deja a fost plasat un fragment, nu poate s-i mai fie alocat un fragment nrudit. Alocarea
redundant este o problem de proiectare mult mai complex. Mai mult, att consultrile de
date ct i actualizrile sunt problematice. Exist dou variante de abordare a proiectrii n
acest caz:
2.2.1. Metoda selectrii. Identificarea acelor situri pentru care beneficiul
alocrii unei copii depete costul alocrii;
2.2.2. Metoda alocrii progresive. Se implementeaz mai nti o alocare
neredundant. Apoi, n funcie de gradul de profitabilitate al staiilor se vor rspndi replici
ale fragmentelor deja alocate, pn cnd nu mai exist candidai.
Suntem de prere c o abordare mai eficient, dar i mai selectiv, ar fi aplicarea
metodei celei mai bune alegeri i n etapa de proliferare a copiilor. Atta doar c se va ncepe cu
fragmentele considerate ca fiind cele mai importante, inndu-se cont la fiecare alocare de relaia
de rudenie a tuturor fragmentelor ce exist sau urmeaz a fi stocate ntr-un sit.
Dup o propunere iniial din partea grupului DataBase Task Group (DBTG) din 1971
de a standardiza sistemele de baze de date pe dou nivele schem i subschem n
1975 a fost abordat o arhitectur pe trei nivele: extern, conceptual i intern, care i-a
propus separarea viziunii utilizatorului de modul fizic de reprezentare a datelor. Astfel a
rezultat arhitectura ANSI-SPARC pentru sisteme centralizate, prin iniiativa comun a dou
organisme: Institutului Naional American pentru Standarde (ANSI) i Comitetul de
Planificare i Cerine privind Standardele (SPARC). Dei intenia era una de standardizare
a proiectrii acestor sisteme, arhitectura amintit s-a impus doar ca una de referin, larg
uzitat n mediile academice i chiar pragmatice ale bazelor de date. [Connolly et al. 2001]
Datorit complexitii domeniului bazelor de date distribuite fa de cele centralizate,
impunerea unei arhitecturi standardizate ar fi cu mult mai greu de realizat. Totui, ne
permitem s prezentm o astfel de variant (vezi Figura 6. 2).
Arhitectura este format din:
schemele externe globale, care reprezint viziunea fiecrui utilizator asupra sistemului;
Dup cum aminteam, arhitectura prezentat este una orientativ, de care se poate
sau nu, ine seama. n funcie de specificul sistemului distribuit, o serie de componente ale
acesteia pot fi ignorate.
ntr-un sistem centralizat subsistemul tranzacional al unui SGBD este format din:
administratorul de tranzacii, planificator, administratorul de refacere i
administratorul de buffere (memorie-tampon). Administratorul de tranzacii dirijeaz
execuia tranzaciilor. n funcie de caracteristicile tranzaciei, planificatorul va hotr ce
strategie de control a concurenei se va impune n aceast situaie. Aceast strategie trebuie
s maximizeze gradul de concuren, fr ns s cauzeze interferen cu alte tranzacii.
Administratorul de refacere intervine atunci cnd execuia a fost ntrerupt sau perturbat
de anumite incidente. Rolul su este de a repune n funciune sistemul i de a aduce baza de
date n cea mai apropiat stare de consisten posibil. Administratorul de buffere
gestioneaz memoria tampon aferent execuiei tranzaciilor i asigur transferul
bidirecional ntre memoria de lucru i dispozitivul fizic de stocare.
Toate aceste componente exist n cadrul fiecrui sit al unui sistem distribuit. Pe
lng acestea mai avem i cte un administrator de tranzacii global sau coordonator de
tranzacii responsabil cu execuia tranzaciilor globale sau locale iniiate de situl respectiv.
Comunicarea dintre situri se realizeaz prin intermediul componentei de comunicaii de
date, care nu este specific procesului tranzacional.
n sistemele distribuite un mecanism de control al concurenei trebuie s fie
flexibil la cderile pariale ale sistemului, s permit un grad nalt de paralelism al
tranzaciilor n condiiile meninerii integritii bazei de date, s genereze un trafic
rezonabil al reelei i s nu suprasolicite resursele sistemului. [Kohler 1981]
Controlul concurenei tranzaciilor n cazul unui sistem centralizat se refer la
evitarea urmtoarelor posibile anomalii ce caracterizeaz execuia simultan a unor
tranzacii ce reclam aceleai resurse: actualizarea pierdut, dependena nefinalizat i
analiza inconsistent. O metod de evitare a acestora este transformarea accesului
concurent n acces secvenial. O soluie cu aplicabilitate doar teoretic, ns totui de
referin. Rezultatul execuiilor seriale este reperul n controlul corectitudinii execuiilor
paralele. Aadar, atunci cnd exist posibilitatea interferrii a dou sau mai multe tranzacii,
o planificare este considerat o soluie bun din acest punct de vedere dac i numai dac
rezultatul ei este identic cu al unei planificri seriale. O astfel de planificare se numete
serializabil. Identificarea tuturor sau doar uneia din aceste planificri n momentul
execuiei nu constituie o soluie pragmatic rezonabil. De aceea se recomand utilizarea
unor metode dovedite c garanteaz planificri serializabile. n funcie de gradul de
concuren al tranzaciilor dintr-un sistem, de probabilitatea de apariie a interferenelor i
de complexitatea i costul implementrii anumitor strategii se pot aplica metode pesimiste,
optimiste i mixte. [Sitar 2004-2], [Sitar 2004-3] i [Sitar 2005]
Pe lng anomaliile ce pot s intervin n cazul n care nu se aplic vreo metod
suplimentar de protecie, n mediul distribuit mai poate s apar problema incoerenei
copiilor multiple. Aceasta apare n special la bazele de date cu fragmente replicate total
sau parial, dar i atunci cnd e vorba de actualizarea dicionarelor sau cataloagelor.
Problematica tranzaciilor din cadrul unui sistem distribuit este ns mai complex. i
n sistemele distribuite, tranzaciile att cea global ct i cele locale trebuie s respecte
proprietile ACID. Respectarea acestora se face cu sacrificii mai mari dect n cazul
sistemelor centralizate, aici existnd mult mai multe tentaii de eludare a lor. Cu ct ntr-un
sistem coexist n acelai moment mai multe tranzacii care i pot disputa aceleai date, cu
att gestiunea tranzaciilor devine mai complex. Tranzaciile globale, subtranzaciile
acestora i toate celelalte care ruleaz la un moment dat, trebuie s asigure transparena la
nivelul concurenei i a toleranei la defecte.
n sistemele distribuite controlul accesului concurent se poate face prin: blocare
(Protocolul 2PL centralizat, Protocolul 2PL de copie primar, Protocolul 2PL distribuit i
Protocolul de zvorre a majoritii) sau prin utilizarea mrcilor de timp.
Performane mbuntite
Dezvoltare modular
Economie.
Dezavantajele sistemelor distribuite sunt:
Complexitatea
Lipsa de standarde
Securitatea
BDF]
Cea mai sugestiv exemplificare a conceptului o reprezint nsui Internetul, care,
la rndul su, reprezint un sistem federativ de dimensiuni mari.
Un sistem de baze de date federative al unei agenii de turism interconecteaz
sistemele unor tipuri de instituii cu domenii de activitate diferite (hoteluri, agenii de turism,
sisteme de rezervare etc). Din necesitatea de ntmpinare a nevoilor clientului, sunt necesare
bazelor de date care interopereaz, avnd fiiere clasice, baze de date ierarhice, reea,
funcionale, relaionale, obiectuale i obiect-relaionale.
Distribuirea. Aici nu este vorba doar de o singur baz de date distribuit, ci i de
un numr de baze de date separate ce pot fi localizate n diferite noduri ale unui sistem
distribuit [Saltor 1995], [Nukpe 2001].
Caracterul heterogen al datelor provenite din varii surse reprezint o mare i continu
provocare adresat tehnicii, de mai bine de un deceniu. S lum drept exemplu terminologia
bancar. Fiecare banc i are propriile denumiri i caracteristici pentru instrumentele de
creditare. Privite la nivel internaional, nsemnele monetare i ratele de schimb sunt de asemenea
diferite. S nu uitm i faptul cnd n lumea financiar se constituie acele consorii bancare, sau
sunt tot mai dese prelurile sau absorbiile unor bnci de ctre altele. Toate acestea sunt
premisele necesitii unei comunicri mai de suprafa sau mai n profunzime ntre acestea,
fr ca heterogenitatea s devin o barier informaional.
Faetele heterogenitii din cadrul bazelor de date multiple sunt uneori categorisite doar
n heterogenitate fizic i heterogenitate semantic. [Litwin 1988] Prima dintre ele se refer
la diferenele n reprezentarea datelor: unele sunt reprezentate ca ntregi, numere reale, iruri de
caractere, date calendaristice, reprezentri n virgul fix mobil cu simpl sau dubl precizie
.a.m.d.; sisteme de gestiune a bazelor de date (Oracle, Access, Visual Fox, Sysbase, Informix,
SQL Server, Paradox etc.); limbajul de interogare; modelul de date etc. Cel mai des utilizat
soluie pentru dobndirea interoperabilitii este utilizarea conexiunilor active la bazele de date
(ODBC13). Acest standard se folosete pentru omogenizarea bazelor de date relaionale, pentru
toate SGBDR-urile importante existnd cte un astfel de driver. Acum, o tabel sau interogare
definit n Access poate fi vizualizat/rulat fr probleme i n Oracle, Paradox, SQL Server
etc. n aceste condiii utilizatorii pot s uite c a existat heterogenitate fizic, atta vreme ct nu
exist conflicte ntre versiunile de drivere. n cazul unei diversiti mari de sisteme toate cele
din familia IBM DB2, Oracle, SQL Server, Sysbase, Informix, foi de lucru Excel, fiiere plate
se poate folosi produsul IBM DB2 Integrator, care le acoper pe toate acestea, n plus asigurnd
acces i asupra ODBC-urilor deja definite, servicii web i suport XML. Pentru browsere exist
un standard aflat deasupra ODBC-urilor clasice, i anume JDBC 14. Acesta permite rularea
interogrilor direct din appletele Java. JDBC asigur suport att pentru paginile, tabelele,
rapoartele sau formularele n format HTML, ct i pentru cele n format XML.
Cel mai popular concept, atunci cnd se vorbete despre interconectarea bazelor de
date heterogene, este wrapper-ul, uneori fiind cunoscut i cu denumirea de mediator.
Wrapper-ele sunt nite adaptoare, nite straturi software intermediare ce transparentizeaz
diferitele nivele ale heterogenitii. Heterogenitatea fizic poate fi mprit n urmtoarele
subcategorii: heterogenitate de hardware, heterogenitatea sistemelor de operare,
heterogenitatea modelelor de date, heterogenitate de limbaje de interogare,
heterogenitatea limbajelor de programare.
Heterogenitatea semantic se refer la numele obiectelor, valorile pe care pot s le
ia datele i structura conceptual. Un exemplu, ce-i drept puin utopic, care ar putea s
dezvluie o parte din problemele heterogenitii semantice, ar fi interconectarea sistemelor
educaionale naionale ntr-o federaie internaional. Dac vrem s analizm doar sistemul
de evaluare al elevilor, studenilor, masteranzilor, doctoranzilor etc. am constata c i n
cadrul aceleiai regiuni geografice modalitile de evaluare sunt heterogene: note,
calificative, admis/respins, premii, titluri dobndite. Asta ca s nu mai vorbim de stelue,
4.3.1
4.3.2
buline roii sau negre, porcuori etc. utilizate n primele etape ale stadiului didactic. Fr a
trece la detalii de subtilitate semantic, privitoare la calitatea nvmntului, cantitatea i
nivelul de dificultate a materiei predate, pentru a putea face o comparaie ntre un sistem
sau altul, ne lovim de bariera sistemului de notare. Putem s avem note de la 1 la 10
(Romnia), n SUA avem A, B ..., n Ungaria i n fosta URSS aveam note de la 1 la 5. La
fel i n Germania, cu deosebire c 1 este nota cea mai bun. La fel, exist punctaje sau
baremuri de admitere. Pentru a se realiza o comparaie echitabil trebuie ca wrapper-ul s
in cont de aceste aspecte, precum i de multe altele, cum ar fi perioada de colarizare,
vrsta minim de colarizare etc. Aspectul semantic este foarte delicat, mai ales c n acest
domeniu nu se pot impune standarde.
avnd deja baze de date). [W3C IDC #22542] Multe organizaii sunt nevoite s
interacioneze cu baze de date distribuite, preexistente, heterogene i autonome. Ele trebuie
s gseasc soluii care s fac posibil expansiunea bazelor de date i s promoveze
partajarea datelor ntre utilizatori i aplicaii, fr eforturi prea mari de implementare. Acest
lucru presupune o tehnologie ce furnizeaz o integrare selectiv, dar totui controlat a unor
astfel de baze de date. Bazele de date federative sunt capabile s ofere diferite nivele de
integrare, cu implicaii diverse asupra gradului de control n condiiile conservrii
autonomiei bazelor de date individuale. [Sheth 1991]
Ideea federalizrii a prins bine publicului, indiferent c este vorba de comunitatea
academic, de firme dezvoltatoare de tehnologii IT, sau de grupuri economice. Sistemele de
baze de date distribuite sunt de dorit, ns aria lor de aplicabilitate este relativ redus n
comparaie cu sistemele federative. Atunci cnd pornim o afacere mare care presupune o serie
de departamente, birouri, filiale, puncte de lucru dispersate geografic, ne vom construi cu
siguran un sistem distribuit. Pe parcurs ns, atunci cnd afacerea ta se ngemneaz cu o serie
de teri i i diversific domeniul de activitate, nu ne vom mai permite s reproiectm din
temelii sistemul informatic sau s-l actualizm n consecin, n baza concepiei iniiale.
Reproiectarea unui sistem de baze de date distribuite necesit n afar de resurse financiare
importante i o perioad destul de ndelungat de implementare. Cum lumea afacerilor se
mic i se schimb extrem de rapid, trebuie s gsim o soluie nu doar mai ieftin, ct mai
ales puin consumatoare de timp de implementare. Cu att mai mult cu ct relaiile cu unii
teri sunt sporadice i ntotdeauna se va ivi unul nou fa de care nu vom avea niciun interes
de a realiza o colaborare att de profund nct s necesite dezvoltarea unui sistem de
baze de date mpreun. n astfel de situaii soluia ideal este cea de construire a unui sistem
federativ peste sistemul nostru i cel al partenerilor de afaceri. Acest lucru nu va afecta
autonomia niciunuia dintre noi, fiecare avnd propria afacere, de cele mai multe cazuri
chiar total n domenii diferite. Aceeai abordare se impune i atunci cnd fuzionm cu alte
companii sau le prelum.
Bazele de date federative reprezint de multe ori suportul i pentru alte tehnologii,
precum depozitele, data mart-urile sau pieele de date, sisteme OLAP i OLTP, data mining,
baze de date multimedia, baze de date documentare, baze de date statistice etc. Ele pot fi
aplicate n orice domeniu de activitate, chiar i n cazul bibliotecilor on-line, sisteme GIS
(Geo-Information System) [Tuladhar 2005], afacerilor pe Internet 15, fie c vorba de simple
achiziii de bunuri sau de instrumente bancare, asigurri, marketing i multe altele.
15
care au neles c o analiz a datelor mai vechi este o cale spre succesul afacerii au ctigat
o lupt mut, dar important, cu concurena ignorant. nvarea din greelile trecutului prin
nerepetarea lor, precum i descoperirea unor abloane comportamentale care garanteaz
succesul constituie un avantaj.
Definiie: Depozitele de date (DW16) sunt colecii de date nevolatile, orientate spre
subiect, integrate, variabile n timp care sprijin managementul firmei n procedeul de luare
a deciziilor. [Inmon 1996]
Spunem c datele sunt nevolatile deoarece ale sunt reactualizate sporadic i meninute
n baza de date. Rareori avem de-a face cu actualizri de coninut, depozitele bazndu-se pe
inserri. Orientarea spre subiect se refer la faptul c depozitul graviteaz n jurul subiectelor
unei organizaii clieni, produse, vnzri i nu nspre domenii de aplicaie (facturare,
aprovizionare, desfacere etc.). Integrarea presupune nmagazinarea n acelai loc, ntr-o form
unitar i coerent a datelor provenite de la diverse subiecte sau activiti. Variabilitatea n timp
se refer la caracterul permanent dinamic al coninutului bazei de date, lucru ce confer o
instabilitate n timp a coninutului, neputnd afirma c ntre dou momente de timp mai
ndeprtate nu s-a ntmplat nimic semnificativ. [Connolly et al.
2001]
[Singh 1997] sintetizeaz diferenele i asemnrile dintre sistemele de
nmagazinare a datelor i cele de prelucrare on-line a tranzaciilor (OLTP 17):
Sisteme de nmagazinare a datelor
Pstreaz date istorice
Stocheaz date detaliate, rezumate pe diferite
nivele
Datele sunt n general statice
Prelucrare ad-hoc, nestructurat, euristic
Sisteme OLTP
Pstreaz date curente
Stocheaz date detaliate
Datele sunt dinamice
Prelucrare cu grad ridicat de
repetitivitate
Nivel nalt de transfer al tranzaciilor
Data Warehouse
piee de date [W3C ODC]. Nu subscriem ntru totul la aceast ipotez deoarece modalitile
de elaborare a unui depozit pot s difere de modalitatea expus anterior.
Definiie: Pieele de date (DM18) sunt submulimi ale depozitelor de date,
particularizate n vederea ndeplinirii nevoilor unui departament sau care acoper un subiect.
[Inmon 1996]
Pieele de date sunt depozite de date cu caracter mai specific, care conin date
sumarizate ntr-o anumit msur, putnd astfel s rspund unor probleme formulate de
utilizatorii unui domeniu.
Att pentru realizarea unui depozit de date, ct i pentru exploatare acestuia, un
sistem relaional trebuie s ndeplineasc o serie de cerine referitoare la: performanele de
ncrcare, prelucrarea ncrcrii, administrarea calitii datelor, performanele interogrilor,
scalabilitatea la nivel de teraoctei sau chiar superioare, scalabilitatea la nivelul masei de
utilizatori, distribuirea depozitului n reea, administrarea depozitului de date, analiza
dimensional integrat, funcionalitatea interogrilor avansate. [Connolly et al. 2001] i
sistemele SGBDOO ar putea furniza rezultate bune.
Beneficiile nmagazinrii datelor sunt: o potenial rat ridicat de ntoarcere a
investiiilor, avantajul competitiv pe care-l pot oferi i sporirea productivitii organelor
decizionale. Dezavantajele sunt: subestimarea resurselor necesare pentru ncrcarea datelor,
probleme ascunse ale sistemului surs, euarea capturrii unor date, cerine sporite din
partea utilizatorului final, uniformizarea datelor, cerine mai mult dect modeste privind
resursele, proprietatea asupra datelor, gradul nalt de ntreinere, iniierea unor proiecte de
lung durat i complexitatea integrrii.
nmagazinarea datelor, prin intermediul creia volume imense de date sunt extrase,
n general prin intermediul unui proces batch, este un domeniu care dateaz de trei decenii.
Ea este susinut de tehnologii precum bazele de date distribuite, baze de date
federative, tehnologii Web etc. i constituie un suport solid pentru instrumentele de raportare
i interogare, dezvoltare de aplicaii, sisteme EIS 19, OLAP, data mining i altele.
1.12.1 Introducere
Procesul de nmagazinare al datelor nu trebuie privit ca o obligaie sau mod. n
aceste condiii informaia strns cu atta rvn reprezint o povar mai mult chiar, una
scump pentru organizaie. Informaia reprezint cel mai de pre lucru pentru procesul
decizional. n anii 80, n SUA s-a estimat c aproximativ 70% din timpul de lucru al
angajailor este destinat procurrii, utilizrii sau difuzrii de informaie. Constituirea
depozitelor de date trebuie s se fac pentru progresul companiei ntr-o manier care s
permit ctigarea unui avantaj competitiv.
Acumularea unui volum din ce n ce mai mare de date i stocarea pe un singur sistem
de calcul este o ipotez de neconceput. n primul rnd, chiar i cu explozia tehnologic din
ultima vreme, este greu de neles c ar putea exista o unitate de stocare care s nmagazineze
experiena de zeci de ani a unei companii de dimensiuni mai mari, cu activitate frecvent i
Data Mart
Executive Information System
1993.
Definiie: Prelucrarea analitic on-line reprezint sinteza, analiza i consolidarea
dinamic a unor volume vaste de date multidimensionale. [Connolly et al. 2001]
OLAP este o tehnologie ce suport faciliti analitice asupra uneia sau mai multor
surse de date. n general, sistemele OLAP implic analiza datelor ce-i au originea n baze
de date tradiionale, dar au fost ulterior transformate n structuri multidimensionale pentru o
vizualizare i o analiz mai facil. De aceea, majoritatea instrumentelor OLAP au ca
platform sistemele de gestiune a bazelor de date multidimensionale (MDDBMS 20),
interfaa cu utilizatorul fiind personalizat
Instrumente OLAP multidimensionale sunt cele mai intuitive, mai fiabile, dar i cele
mai costisitoare material instrumente de prelucrare analitic. Sunt cunoscute n literatura de
specialitate sub acronimul MOLAP21. Ele sunt destinate n rezolvarea unor interogri care
furnizeaz rspunsuri multiple, facilitnd utilizatorului capacitatea de analiz, sintez i
comparaie. Atunci cnd vrem s aflm care sunt mediile generale ale studenilor facultii pe ani
de studiu, semestriale i anuale, pe specialiti n vederea comparrii rezultatelor cu situaiile din
anii precedeni, cel mai bine e s apelm la baze de date multidimensionale. Ulterior putem s
facem comparaii cu rezultatele obinute de facultile de profil din ar, de stat sau particulare,
n cadrul crora ntlnim secii similare. Sau, putem s agregm rezultatele n vederea crerii
premiselor de comparabilitate pe o anumit perioad a rezultatelor cu celelalte faculti ale
universitii. Dac interogarea trebuie s returneze doar rezultate simple: Care este media
general a studenilor de la secia de Informatic economic, anul 3 de studiu pe semestrul nti
al anului curent?, atunci nu se impune utilizarea bazelor de date multidimensionale. Pentru
aceste tipuri de interogri se pot folosi
baze de date relaionale. Totui, bazele de date relaionale nu fac fa cu succes unor volume
de date mari. Dup [Connolly et al. 2001], un sistem relaional obinuit poate efectua
prelucrarea a ctorva sute de nregistrri pe secund, n timp ce unul multidimensional tipic
efectueaz mai mult de 10.000 de grupri pe secund. Astfel, la dimensiuni mari ale bazei
de date, pentru sistemele relaionale componenta On-Line a instrumentelor OLAP i va
pierde semnificaia.
n cadrul sistemelor multidimensionale, reprezentarea intuitiv a datelor se face
prin intermediul cuburilor de date. Atunci cnd numrul de dimensiuni devine mai mare de
3, avem de-a face cu cuburi n-dimensionale, sau simplu: hipercuburi. Reprezentarea
intuitiv a acestora va fi ns prea dificil de realizat. Cuburile de date sunt uor de extins
pentru noi dimensiuni. Navigarea prin intermediul cuburilor este facil.
Instrumente ROLAP22 au cunoscut cea mai puternic cretere dintre toate
instrumentele OLAP. Pentru a se conforma regulilor instrumentelor OLAP, tehnologia
ROLAP solicit definirea unui strat de metadate care i confer o imagine
multidimensional dinamic.
22
Relational OLAP
bazelor de date, procesul de data mining este deja aplicat cu succes n diferite domenii,
printre care i cele exemplificate mai jos.
Comerul cu amnuntul/marketing
Identificarea tiparelor de cumprare ale clienilor
Gsirea de asociaii ntre caracteristicele demografice ale clienilor
Previziunea rspunsurilor la campaniile prin pot sau publicitate prin media
Analiza courilor de pia
Domeniul bancar
Detectarea tiparelor de utilizare frauduloas a crilor de credit
Identificarea clienilor loiali
Previziunea privind clienii care este probabil s-i schimbe afilierea crilor de
credit
Identificarea ablonului solicitantului de credite i particularizarea ofertei
Determinarea cheltuielilor din crile de credit pentru grupuri de utilizatori
Asigurri
Analiza solicitrilor
Previziunea clienilor care vor cumpra polie noi
Determinarea comportamentului fraudulos
Medicin
Caracterizarea comportamentului pacienilor pentru prognoza consultaiilor
chirurgicale
Identificarea terapiilor de succes pentru diverse boli
Stabilirea listelor de medicamente compensate
Connolly prezint principalele operaii de extragere a datelor. Acestea sunt:
Modelarea predictiv, Segmentarea bazei de date, Analiza legturilor i
Detectarea deviaiilor.
Toate cele 4 operaii expuse contribuie la procesul de data mining. n general se
poate folosi oricare dintre ele, sau asocieri de mai multe operaii. Totui, prin studiul
comportamentelor s-a constatat c anumite operaii dau rezultate mai bune n anumite
domenii. Spre exemplu, stabilirea profilului clientului este abordat prin segmentarea bazei
de date, apoi se aplic modelarea predictiv.
Informaiile sunt fcute publice prin intermediul paginilor web, care reprezint o
colecie organizat de informaii textuale, imagini, sunete, video, n general integrat cu
ajutorul limbajului HTML. Paginile Web pot comunica cu alte pagini web datorit
hiperlegturilor pe care le conin. n Internet siturile comunic unele cu celelalte prin
interaciunea clienilor cu serverele.
Integrarea tehnologiei bazelor de date cu tehnologiile web este unul din paii
importani pe care i-a fcut tehnologia modern. Paginile sunt acum mai atractive, mai
dinamice i mai uor de administrat. Se reduce foarte mult redundana, chiar dac din
punctul de vedere al stocrii unui numr enorm de fiiere HTML, accesarea unei astfel de
pagini se face mai rapid dect prin interogarea unei baze de date.
Exist diverse modaliti de integrare a celor dou tehnologii, ns niciuna dintre
ele nu este unanim acceptat pentru rezolvarea problemelor de integrare. Mai mult, datorit
caracteristicilor protocolului HTTP nc nu se poate garanta o calitate i o securitate deplin
a mediului Internet. Serviciile oferite prin platforma web sunt destul de lente. Viitorul va
asigura ns soluii mai fiabile.
Apariia limbajului XML este un pas revoluionar n integrarea Web-SGBD.
Considerm c ntre domeniul bazelor de date distribuite i cel al tehnologiei Web va exista
o colaborare de lung durat. Anumite detalii ale acestei simbioze vor fi prezentate n
capitolele urmtoare.
23
General Packet Radio Service, un serviciu mobil de date orientat pe pachete n cadrul
sistemelor de comunicaii mobile
Key-/Value-stores cel mai simplu model pentru date nestructurate. Foarte eficient
i flexibil. Dezavantaj: datele nu conin descrierea lor
Document databases pentru depozite XML i obiecte care se autodescriu. Stocarea n acest caz este
foarte ineficient. n aceast categorie ntlnim subtipurile urmtoare:
Baze de date relaionale cu faciliti XML: CLOB, XML mprit n mai multe tabele n funcie
de schema; SGBDR-uri care accept tipul ISO XML (Ex. IBM DB2, Microsoft SQL Server,
Access, Oracle Database, PostgreSQL)
Baze de date XML native.
Column-Oriented Databases (Baze de date pe coloane) model foarte bun folosit n cadrul
depozitelor de date pentru date rarefiate. Putem avea coloane grupate i agregate.
Graf [Oracle 2012] un model relativ nou, bun pentru parcurgerea relaiilor, dar nu pentru cutri
generale.
Un element HTML este tot ceea ce este intre tag-ul de start si tag-ul final,
inclusiv tag-urile. Tag-urile HTML si elementele HTML sunt adesea folosite pentru
a descrie acelasi lucru. Fiecare element spune browserului ceva despre
informatiile care se afla intre tag-ul de inceput si cel de sfarsit.
element HTML
<p> Acesta este un
paragraf.</p>
</ol>
<ul>
</ul>
<dl>
</dl>
<li>Alexandra
</li>
<li>Mihai</li
>
<li>Alexandra
</li>
<li>Mihai</li
>
<dt>Alexandra</dt>
<dd>- are ochii
albastri</dd>
<dt>Mihai</dt>
<dd>- are ochii verzi</dd>
Un tabel este impartit in randuri cu tag-ul <tr>. Un rand este impartit in celule
de date cu tag-ul <td>. Un rand poate fi, de asemenea, divizat in titluri cu tag-ul
<th>. Elementele <td> sunt containerele de date din tabel. Elementele <td>
poate contine tot felul de elemente HTML, cum ar fi text, imagini, liste, alte
tabele, etc. Formatarea unui tabel poate fi realizata folosind CSS.
In cele ce urmeaza prezentam cele mai importante tag-uri HTML pentru lucrul cu
tabele:
<table>
<th>
<tr>
<td>
<thead>
<tbody>
<tfoot>
defineste un tabel
defineste o celula antet intr-un tabel
defineste un rand intr-un tabel
defineste o celula intr-un tabel
grupeaza continutul din antetul unui tabel
grupeaza continutul din corpul unui tabel
grupeaza continutul din subsolul unui tabel
Mai jos prezentam un exemplu de folosire a tagurilor pentru afisarea unui tabel
cu doua linii. Prima linie este impartita in doua celule, iar cea de-a doua linie
contine o singura celula.
<table bordercolor="blue"
border="5"> <tr>
<td background="imagine.gif">celula 1
rand 1</td> <td>celula 2 rand 1</td>
</tr>
<tr>
<td colspan="2">celula 1 rand 2</td>
</tr>
</table>
Un iframe este folosit pentru a afisa o pagina web in cadrul unei alte pagini web.
Mai jos URL-ul indica locatia paginii care va fi apelata si deschisa in cadrul iframeului. Sintaxa pentru a adauga un iframe este:
<iframe src="URL"> </iframe>
Pentru formatarea unui iframe se folosesc stilurile CSS. Cele mai importante
atribute pe care le poate contine un iframe sunt prezentate in continuare:
src
srcdoc
height
width
pe care le poate lua sunt urmatoarele: _blank, _parent, _self, _top. Codul HTML
pentru un link se poate vedea mai jos:
<a href="URL" target="_blank">Textul link-ului /
Imagine</ a>
Un formular HTML se va afla tot timpul intre tag-urile <form> ... <form> si se
introduce astfel:
<form action="url-al-unui-script-aflat-pe-server"
method="get||post"> elemente de input
</form>
Atributul action indica URL-ul fisierului care va prelua, pe partea de server,
datele formularului. Acele fisiere pot fi constituite din scripturi CGI, ASP, PHP, etc.
Atributul method indica metoda de transfer, POST sau GET. Cu metoda POST
valorile sunt trimise prin intermediul antetelor HTTP, sau transfera un flux de
octeti la bufferul de intrare al serverului. Cu metoda (GET) datele sunt codificate
intr-un sir de caractere care se alipeste URL-ului specificat in action. URL-ul
scriptului de prelucrare contine un sir de caractere ce incepe cu ?, continua cu
perechi de forma numeElementFormular = valoareElementFormular, despartite
prin &. Acest sir de caractere va fi preluat pe server, de catre scripturile aflate pe
server, in vederea prelucrarii informatiilor.
In figura urmatoare se poate vedea cum se trimit datele din formularul de mai
sus prim metoda GET.
http://www.econ.ubbcluj.ro/~daniel.mican/script.php?
nume=daniel+mican&email=daniel.mican%4 0econ.ubbcluj.ro
4:
5:
6:
7:
valoare
<input type="text">
<input
type="password">
<input
type="radio">
<input
type="checkbox">
<input
type="submit">
<input
type="button">
type="text" name="nume">
</fieldset>
</form>
HTML5 a introdus noi controale care pot fi folosite in cadrul formularelor pentru a
standardiza modul in care unele informatii sunt colectate. Browserele mai vechi,
care nu recunosc aceste elemente, le vor trata la fel ca pe un simplu element de
tip text. Totusi, browserele unor smartphone-uri isi modifica tastatura in functie
de tipul elementului de input astfel incat sa se optimizeze introducerea datelor.
Elementul <input type="date"> defineste un control de tip data (an, luna si zi).
Daca s-a folosit un element de tipul date browserul se va verifica daca utilizatorul
a furnizat informatii in formatul corect pentru data.
<input type="date" name="data_eveniment" />
Selectorii indica carui element i se aplica regula. Aceeasi regula se poate aplica
la mai mult de un element, daca numele elementelor sunt separate prin virgule.
Declaratiile indica cum ar trebui sa fie stilizate elementele mentionate prin
intermediul selectorului. Declaratiile sunt impartite in doua parti (o proprietate si
o valoare), fiind separate prin punct si virgula.
Proprietatile indica aspectele elementului pe care dorim sa le modificam. De
exemplu, culoarea, fontul, latimea, inaltimea sau bordura.
Valorile specifica setarile pe care dorim sa le utilizam pentru proprietatile alese.
De exemplu, daca dorim sa modificam proprietatea culoare, atunci valoarea este
culoarea pe care dorim sa o aiba textul din elementele selectate.
Pentru un selector se pot adauga mai multe declaratii. Acestea vor fi adaugate
intre cele doua acolade si vor constitui un bloc de declaratii. Pentru a face mai
usor de citit codul CSS, se recomanda adaugarea unei singure declaratii pe
fiecare linie.
selector {
proprietate1:
valoare1;
proprietate2: valoare2; bloc de
declaratii proprietate3: valoare3;
}
Declaratiile CSS se pot introduce in cadrul paginilor HTML in trei moduri:
In general putem spune ca, toate stilurile vor fi agregate in "cascada", intr-o noua
foaie de stil virtuala. Agregarea se face respectand urmatoarea ordine, tinand
cont ca declaratiile inline au cea mai mare prioritate:
Prin urmare, un stil inline (declarat in interiorul unui element HTML) are cea mai
mare prioritate. Acest lucru inseamna ca va inlocui un stil definit in interiorul tagul <head>, sau intr-o foaie de stil externa, respectiv in cadrul browser-ului. Daca
legatura la foaia de stil externa este plasata dupa foaia de stil interna in HTML
<head>, foaia de stil externa va inlocui foaia de stil interna.
De exemplu, in cazul codului HTML de mai jos:
<html>
<head>
<title>Exemplu de agregare in cascada a
stilurilor</title> <link rel="stylesheet"
type="text/css" href="stilulmeu.css"> <style>
h1{color:
red;}
p{color:
blue;}
</style>
</head>
<body>
<h1 style="color:
indigo">Titlu</h1> <p
style="color:
violet">Paragraf</p>
</body>
</html>
Si a codului CSS de mai jos continut in cadrul fisierului stilulmeu.css:
h1{color:
green;}
p{color:
orange;}
Va rezulta:
Dupa ce foile de stil au fost agregate in "cascada", intr-o noua foaie de stil
virtuala, conflictele pot sa apara in continuare. Prin urmare, regula agregarii in
cascada continua si la nivel de regula. Cand doua reguli dintr-o foaie CSS intra in
conflict, tipul de selector este folosit pentru a determina castigatorul. Cu cat este
mai specific selectorul, cu atat mai multa greutate ii este acordata pentru a
suprascrie declaratiile contradictorii.
In cazul in care doi selectorii sunt identici, sau de aceeasi importanta, oricare
dintre acestia este declarat ultimul va suprascrie pe precedentii. Prin urmare cel
care apare ultimul va avea prioritate.
<title>Exemplu de specificitate si
prioritate</title> <style>
* { color:
blue; } h1 {
color: purple; }
p b { color:
violet; } b {
color:
orange; } b {
color: red; }
p { color:
chocolate; }
p#abstract{ color:
green; }
</style>
</head>
<body>
<h1>Titlu</h1>
<p id="abstract">Acesta este un
<b>abstract</b></p> <p>Acesta este un
text dintr-un paragraf</p>
Acesta e un text
<b>oarecare</b> </body>
</html>
Va rezulta:
body {
font-family: Arial, Verdana,
sans-serif; font-weight: bold;
color: blue;
background-color:
yellow; }
.cutie {
color: white;
background-color:
green; border: 1px
solid red; }
.cutiutza {
color:
gold; } </style>
</head>
<body>
<div>
<p>Mostenesc de la body fontul, proprietatea bold si culoarea
albastra</p>
</div>
<div class="cutie">
<p>Mostenesc de la body fontul si proprietatea bold. Dar am culoarea
alba, culoarea de fundal verde si bordura rosie.</p>
<div class="cutiutza">
<p>Mostenesc de la body fontul si proprietatea bold. Am culoarea
aurita, dar mostenesc culoarea de fundal verde de la cutie. Bordura
nu se mosteneste.</p> </div>
</div>
</body>
</html>
Va rezulta:
#RRGGBB
Alb = #FFFFFF sau #FFF (echivalentul lui 255,255,255)
Negru = #000000 sau #000 (echivalentul lui 0,0,0)
Modelul de mai sus permite stabilirea de borduri si spatieri intre elementele din
cadrul unei pagini Web.
Controlarea felului in care aceste casete pentru elemente apar, este esentiala.
Prin pozitionarea si gestionarea lor vom construi layout-ul paginilor web.
Proprietatea border-width este folosita pentru a controla latimea unei borduri.
Valoarea acestei proprietati poate fi specificata fie in pixeli sau folosind una dintre
urmatoarele valori:
Putem specifica, de asemenea, latimi diferite pentru cele patru valori ale bordurii
intr-o singura proprietate. Valorile vor aparea in sensul acelor de ceasornic: sus,
dreapta, jos si stanga.
<html>
<head>
<style>
div {
border: solid gray; borderwidth: 5px 6px 10px 3px;
}
</style>
</head>
<body>
<div>Sus 5px, dreapta 6px, jos 10px,
stanga 3px.</div> </body>
</html>
in care este continuta. Putem controla spatierea individuala din interiorul casetei
utilizand patru proprietati distincte:
La fel, putem specifica, margini si spatieri diferite pentru cele patru valori intr-o
singura proprietate. Valorile vor aparea in sensul acelor de ceasornic: sus,
dreapta, jos si stanga.
Dimensionarea casetelor
In mod normal o caseta se adapteaza la dimensiunea continutului care se afla in
ea. Pentru a stabili dimensiuni absolute se pot folosi proprietatile height si width.
Cele mai populare moduri prin care se poate specifica dimensiunea unei casete,
este de a utiliza pixeli, procente, sau ems. In mod traditional, pixeli au fost cea
mai populara metoda, deoarece permit proiectantilor sa controleze cu exactitate
dimensiunea casetei.
Cand utilizam procente, dimensiunea casetei este relativa la dimensiunea
fereastrei browser-ului sau, in cazul in care caseta este continuta de catre o alta
caseta, acesta reprezinta un procent din dimensiunea casetei in care este
continuta.
<html>
<head>
<style>
div
{
width:
210px;
padding:
15px;
border: 15px solid
gray; margin:
15px;
}
</style>
</head>
<body>
<img src="poza.png">
<div>Poza de deasupra e lata de 300px.
Latimea acestui element:<br> 210 (latime) +<br>30 (2*15 padding)
+<br>30 (2*15 bordura) +<br>30 (2*15 margine) =<br>300px.</div>
</body>
</html>
3. JavaScript
JavaScript:
este utilizat pentru programarea comportamentului paginilor web si pentru
adaugarea de interactivitate;
este un limbaj usor, dar foarte complex si puternic;
este case sensitive;
este un limbaj de scripting client-side, care ruleaza pe calculatorul
utilizatorului si nu pe server;
ruleaza in browser-ul utilizatorului, care citeste codul si il interpreteaza in
momentul in care il primeste (nu are nevoie de un compilator);
a fost standardizat in 1996 de catre European Computer Manufacturer's
Association (ECMA), iar din acest motiv se mai gaseste sub denumirea de
ECMAScript;
codul JavaScript poate fi editat in orice editor de texte;
codul JavaScript (si modul in care il folosim) este dependent de capacitatile
si setarile browser-ului;
JavaScript si Java sunt doua limbi complet diferite, atat in concept cat si in
design.
JavaScript:
1111111
nu a fost creat ca un limbaj de programare general, ci a fost creat cu
scopul de a manipula pagini web;
1111111
nu poate accesa fisierele locale;
1111111
nu poate accesa in mod direct o baza de date;
1111111
nu poate accesa componentele hardware (USB, etc);
1111111
nu este activat si suportat pe toate browserele, asa ca trebuie tinut
cont de acest lucru in momentul dezvoltarii unei aplicatii web.
JavaScript poate fi utilizat pentru:
scrierea script-urilor care reactioneaza la comportamentul sau datele
introduse de catre utilizator;
validarea datelor de intrare pe care le introduc utilizatorii in cadrul unui
formular;
schimbarea continutului si informatiilor dintre documentul curent si server.
Acest lucru se face, prin intermediul Ajax, fara a reincarca intreaga pagina;
crearea meniurilor dinamice si a plierii continutului in functie de click-urile
utilizatorilor;
manipularea arborelui DOM (pentru a schimba structura si continutul unei
pagini HTML). Astfel, JavaScript permite:
o schimbarea elementelor
HTML o stergerea
elemente HTML
o crearea de noi elemente HTML
o copierea si clonarea
elementelor HTML o schimbarea
atributelor CSS
Amplasarea codului se realizeaza intre tagurile <script></script>.
<script>
// aici va fi amplasat codul JavaScrpit
comanda JavaScrpit; cod JavaScript comanda
JavaScrpit;
</script>
Inserarea codului JavaScript in cadrul paginilor HTML se realizeaza in doua
moduri:
Fisier extern (declarat intr-un fisier *.js extern)
Script incorporat (incorporat in sectiunea de
documentului HTML)
head
sau
body
In sectiunea <body>
<html>
<head>
<script>
alert("Salutare");
</script >
</head>
<body>
Text oarecare
</body>
</html>
<html>
<head>
</head>
<body>
Text oarecare
<script>
alert("Salutare");
</script >
</body>
</html>
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
3.2. Operatori
Operatorii sunt folositi pentru a realiza anumite operatii elementare intre
variabile. In JavaScript sunt mai multe tipuri de operatori:
matematici - realizeaza diferite operatii matematice pe valorile numerice;
de comparare - evalueaza si compara valorile si variabilele;
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
*
/
x = 3 * 2 Inmultire
x = 3 / 2 Impartire
x=3%
%
2
Modul (restul impartirii)
Incrementeaza valoarea unui numar (sau a unei variabile care
++
x = y++ contine o valoare
x = ++y numerica) cu 1
Scad valoarea unui numar (sau a unei variabile care contine o
-x = y-e
valoare
x = y-numerica) cu 1
Operatori de
asignare
=
x=2
Asigneaza valoarea unei variabile
x += y (x = x
+=
+ y)
Insumeaza valoarea la valoarea variabilei
x -= y (x = x -=
y)
Scade valoarea din valoarea variabilei
x *= y (x = x *
*=
y)
Inmulteste valoarea la valoarea variabilei
x /= y (x = x /
/=
y)
Imparte valoarea variabilei
Operatori de
comparare
== 3 este
==
2 false
Este egal cu
!= 3 este
!=
2 true
Nu este egal cu
=== 3 este
=== 2 false
Este identic cu (este egal cu si de acelasi tip de date)
!== 3 este
!== 2 true
Nu este identic cu (nu este egal cu si de acelasi tip de date)
>
2> 3 este false Este mai mare decat
>= 3 este
>=
2 false
Este mai mare sau egal decat
<
2< 3 este true Este mai mic decat
<= 3 este
<=
2 true
Este mai mic sau egal decat
Operatori logici
1 < 5 && 3 < 1 este
&&
false
1 < 5 || 3 > 1 este
||
true
! (1 < 3 ) este
!
false
AND / SI logic
OR / SAU logic
Negatie logica
if( conditie ) {
// executa acest cod in cazul in care conditia este adevarata
}
else {
// executa acest cod in cazul in care conditia nu este adevarata
}
Exemplu:
var a = 2, b
= 4; if( a <
b){
alert (" a este < decat b ");
}
else {
alert (" a este > decat b ");
}
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
Structura for
Structura for este folosita pentru a executa un bloc de cod de un anumit numar
de ori si are urmatoarea sintaxa:
for (initializeaza variabila, testeaza conditie, modifica valoarea)
{
// executa acest cod in cazul in care conditia este adevarata
}
Exemplu:
for ( var i = 1; i < 3; i++) {
alert ("Numarul este " + i);
}
Structura while
Structura while executa un bloc de cod, atata timp cat o conditie
specificata este adevarata. while (conditie) {
// executa acest cod in cazul in care conditia este adevarata
}
Exemplu:
var i = 1;
while (i <
3) {
alert ("Numarul este
" + i); i++;
}
Structura do/while
Structura do/while este o varianta a structurii while. Aceasta va executa blocul de
cod cel putin o data, inainte de a verifica daca conditia este adevarata. Pe urma
se va repeta executia codului atata timp cat conditia este adevarata.
do {
executa acest cod in cazul in care conditia
este adevarata } while (conditie);
Exemplu:
var i =
1; do
{
alert ("Numarul este
" + i); i++;
} while (i < 3)
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
function afiseazaMesaj();
Variabile locale
variabila declarata in interiorul unei functii JavaScript, folosind var, va fi
LOCALA.
variabila LOCALA este vizibila si poate fi accesata numai in interiorul
functiei.
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
variabilele locale pot avea acelasi nume in diferite functii, deoarece sunt
recunoscute numai de functia in care au fost declarate.
argumentele (parametri) se comporta ca variabile locale in interiorul
functiilor.
variabilele locale sunt create atunci cand functia incepe si sterse in
momentul in care functia este finalizata.
Exemplu de definire si folosire a unei variabile locale:
<!DOCTYPE
html>
<html>
<body>
<div
id="c1"></div>
<div
id="c2"></div>
<script>
function myFunction() {
var a = 4; // variabila locala
document.getElementById("c1").innerHT
ML = a;
}
myFunction();
document.getElementById("c2").inner
HTML = a; </script>
</body>
</html>
Variabile globale
variabila declarata in exteriorul unei functii, devine GLOBALA.
variabila GLOBALA este vizibila si poate fi accesata de catre toate scripturile si functiile din cadrul paginii web.
variabilele globale sunt sterse in momentul in care se inchide pagina web.
Exemplu de definire si folosire a unei variabile globale:
<!DOCTYPE
html>
<html>
<body>
<div
id="c1"></div>
<div
id="c2"></div>
<script>
var a; // variabila
globala function
myFunction() {
a = 4;
document.getElementById("c1").innerHT
ML = a;
}
myFunction();
document.getElementById("c2").inner
HTML = a; </script>
</body>
</html>
Exemplu de definire, stocare si folosire a unei functii anonime in cadrul unei
variabile:
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
Evenimente
un eveniment este o actiune care poate fi detectata de catre JavaScript.
JavaScript permite executarea unui cod in momentul in care sunt detectate
anumite evenimente.
un eveniment HTML poate fi creat de catre browser, sau de catre actiunile
utilizatorului.
in JavaScript un eveniment este identificat de catre un handler de
evenimente.
un eveniment are loc in momentul in care se incarca o pagina web, cand
utilizatorul da clic pe un element sau misca cursorul mouse-ului peste el.
<elementHTML eveniment="cod JavaScript">
Exista trei metode prin intermediul carora se poate reactiona la evenimentele din
JavaScript:
6. Ca un atribut HTML
7. Ca metoda atasata la element
8. Utilizarea addEventListener
Ca un atribut HTML
Se specifica functia care va fi rulata prin intermediul unui atribut in cadrul
elementului.
<button onclick="functiaMea();">Click pe mine</button>
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
Descriere
Un element pierde focusul (este parasit)
Continutul unui camp dintr-un formular se modifica
onclick
onerror
onfocus
onkeydown
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
onkeypress
onkeyup
permite
In concluzie, HTML DOM este un standard pentru modul in care se obtin, schimba,
adauga si sterg elementele HTML.
Metodele HTML DOM sunt actiuni care se pot efectua (pe elementele HTML). O
metoda este o actiune precum adaugarea sau stergerea unui element HTML.
Proprietatile HTML DOM sunt valori, ale elementelor HTML, care se pot seta
sau schimba. O proprietate este o valoare precum continutul unui element HTML.
Cu modelul de obiecte, JavaScript poate crea HTML in mod dinamic. Astfel,
JavaScript poate:
2.2.3
2.2.4
2.2.5
2.2.6
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
definite de DOM. De asemenea vom prezenta si unele dintre cele mai populare
metode de manipulare a acestor elemente.
getElementById("Id")
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
getElementsByTagName("TagName")
Metoda acceseaza toate elementele
cu tagul specificat. Este ablolut necesar sa
se furnizeze numele tag-ului pe care dorim
sa il accesam/manipulam.
getElementsByClassName("ClassName")
Metoda
acceseaza
toate
elementele cu numele clasei specificat. Este
ablolut necesar sa se furnizeze numele clasei
pe care dorim sa o accesam/manipulam.
Dupa ce am accesat un nod folosind una din metodele discutate anterior, DOM ne
ofera mai multe metode standard pentru manipularea elementelor, atributelor si
continutului acestora. Aceste metode sunt:
element.innerHTML=
element.attribute=
element.setAttribute(attrib
ute,value)
element.style.property=
Permite modificarea
element
HTML
Permite modificarea
HTML
Permite modificarea
HTML
Permite modificarea
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
Aceasta metoda este una dintre cele mai comune metode din HTML DOM. Ea este
folosita aproape de fiecare data cand se doreste manipularea, sau obtinerea de
informatii de la un element din cadrul documentului.
Metoda returneaza null in cazul in care nu exista elemente cu ID-ul specificat.
In cazul in care exista mai mult de un element cu ID-ul specificat, metoda
getElementById() returneaza primul element.
Accesarea elementelor pe baza numelui elementului
document.getElementsByTagName("numeTag")
Metoda getElementsByTagName() acceseaza toate elementele cu numele tagului
specificat.
Metoda returneaza o colectie cu toate elementele din document, cu tagul
specificat, sub forma unui obiect NodeList.
NodeList se comporta la fel ca un array si contine toate elementele in ordinea in
care apar in document, de sus in jos.
Pentru a avea acces la anumite elemente din NodeList, vom face referinta la
indicele lor, la fel ca intr-un array.
paragrafe = getElementsByTagName("p")
Pentru a accesa primul paragraf din document vom folosi paragrafe[0], pentru a
accesa al doilea vom folosi paragrafe[1], si asa mai departe.
Accesarea elementelor pe baza numelui clasei
getElementsByClassName("numeClasa")
Metoda getElementsByClassName() acceseaza toate elementele cu numele clasei
specificate.
Metoda returneaza o colectie cu toate elementele din document, cu clasa
specificata, sub forma unui obiect NodeList.
Pentru a avea acces la anumite elemente din NodeList, vom face referinta la
indicele lor, la fel ca intr-un array.
elementeLista = getElementsByClassName("elementeLista")
Pentru a accesa primul element din lista cu clasa elementeLista vom folosi
elementeLista[0], pentru a accesa al doilea vom folosi elementeLista[1], si
asa mai departe.
Manipularea nodurilor
In continuare vom detalia mai multe metode, impreuna cu proprietatile pe care
DOM le ofera pentru manipularea elementelor, continutului si al atributelor
acestora.
Setarea valorii unui element
elementHTML.innerHTML="text"
Lect.univ.dr. Daniel
Mican
daniel.mican@econ.ubbcl
uj.ro
Conform statistici realizate de Netcraft , n luna martie 2015, serverul Apache a nregistrat o
scdere a numrului de hostname-uri de 2.9 milioane din 2012. Referitor la situatia hostname-uri,
Microsoft afirm c,n ultima perioada a crescut cota de pia a lui la 28,7%, dar Apache continu s
conduc cu o cot de 38,8%, n ciuda unei pierderi de 5,9 milioane de site-uri. n studiu realizat de
Netcraft, cota de pia Nginx prezint o cre tere u oar fa de trecuta de pn la 11,3%, n timp ce
Apache menine n continuare un avantaj confortabil, dat de o cot de 47,2%, n timp ce
Microsoft a a ajuns la o cot de 29,9%. n prezent Apache deservete 58,3% din totalul site-urile
2
ale cror server web se cunosc, conform lui studiului realizat de w3techs .
Proiectul Apache reprezint dezvoltarea unui soft colaborativ care urmrete cererea i utilizarea
unui Web Server puternic i robust. Proiectul era condus de ctre voluntari din ntreaga lume.Acest
grup de voluntari folosete Internet-ul pentru comunicare, planificri i dezvoltarea serverului i a
documentaiei de rigoare.Ei sunt cunoscui sub denumirea de Grupul Apache (Apache Group).n
plus, sute de utilizatori au contribuit cu idei, coduri i documentaie la acest proiect.
Apache furnizeaz o implementare robust a protocolului HTTP. Apache suport o mare varietate
de module care i extind funcionalitatea, acestea variaz de la server side programming i pn la
scheme de autentificare i anume: mod_ssl ofer suport pt SSL i TLS modulul proxyun, modul de
rescriere URL (cunoscut ca un motor de rescriere mod_rewrite), custom log files (mod_log_config)
i suport de filtrare (mod_include i mod_ext_filter).Apache este virtual hosting (gzduirea virtual),
care const n posibilitatea de a gzdui mai multe site-uri simultan pe acelai server.
2
http://www.netcraft.com/survey
http://w3techs.com/technologies/overview/web_ server/all
Dorina creatorilor Apache, dup cum se specific n site-ul Grupului Apache este ca
platforma sa s fie folosit de ct mai mult lume (companii mari sau mici, instituii de cercetare,
coli, Intranet-uri ) i s se acopere ct mai multe domenii de activitate.n prezent, motorul de
4
cutare folosit de Google utilizeaza o versiune modificat de Apache numit Google Web Server
5
(GWS) i proiectele Wikimedia inclusiv Wikipedia ruleaz tot pe un server Apache.
5:
http://www.apache.org,
http://code.google.com/webtoolkit/terms.html
poate fi: Apache HTTP Server, Microsoft Internet Information Services (IIS), iPlanet Web
Server, Roxen WebServer, Zeus WebServer, .a. Serverul web ruleaz pe un calculator. [site31]
Clientul folosit pentru accesarea serverului web poate fi att un browser ct i un alt program
capabil s se conecteze la un port TCP (de exemplu: telnet, ftp, etc.).
Browserul [site31] este un program folosit la afiarea de coninut web. Acesta se impune s
poat s interpreteze pagini HTML, s afieze imagini i alte forme de coninut multimedia, s
foloseasc referine (link-uri) etc. Cea mai important caracteristic a sa este capacitatea lui de a
se conecta prin protocolul TCP la un server web. Metoda de conectare s-a prezentat anterior. n
acest context se impune s se precizieze c introducerea unei adrese web (de exemplu:
http://www.ubbcluj.ro/exemplu.html) n browser, determin executarea urmtorilor pai:
[site31][site8][Boian1997] .[stanca2007]
8: Browser-ul determin protocolul pe care l va folosi n dialogul cu serverul web (http:// =
HTTP - HyperText Transfer Protocol).
9: Browser-ul determin adresa web a serverului (www.ubbcluj.ro).
10: Browser-ul determin ce anume trebuie s cear de la serverul web, adic pagina html
numit exemplu.html.
11: Browser-ul determin adresa IP a mainii pe care ruleaz serverul web prin interogri
DNS (Domain Name Service) pe baza adresei web introdus n address bar.
12: pe baza adresei IP determinat anterior, browserul va crea o conexiune TCP pe portul
specificat n URL sau implicit pe portul 80.
13: Browser-ul lanseaz o cerere GET sau POST ctre server specificnd fiierul dorit: GET
/exemplu.html.
14: Serverul web rspunde trimind fiierul dorit sau o eroare corespunztoare n cazul n
care trimiterea nu este posibil (lipsa fiierului, drepturi de acces insuficiente etc.). Aici
conexiunea dintre client i server se ncheie.
15: Browser-ul analizeaz fiierul primit i l afieaz corespunztor.
Browser-ele cele mai cunoscute i deci cele mai folosite sunt: Microsoft Internet Explorer,
Mozilla, Netscape, Opera, Lynx, etc.[stanca2007]
bazelor de date joac un rol decisiv, att n gestiunea datelor ca activitate de sine stttoare, ct i
n cadrul aplicaiilor ample [BuBois2001].
MySQL este un sistem multiuser (permite s fie folosit concomitent de mai muli utilizatori) i
multithread (prezint mai multe fire de execuie). Utilizeaz SQL, limbajul standard de
interogare a bazelor de date.[WellingThomson2005]
MySQL este un sistem de gestiune a bazelor de date relaionale. Tabelele sunt conectate prin
relaii predefinite, fapt ce face posibil combinarea datelor din mai multe tabele, la cerere.
MySQL este un produs open source.
MySQL este un sistem client-server care este alctuit dintr-un server SQL multithread care are
faciliti pentru mai muli utilizatori, mai multe programe i biblioteci client, instrumente de
administrare i un numr mare de interfee de programare. Avnd n vedere c MySQL suport o
gam variat de produse software, exist posibilitatea ca multe din limbajele de programare deja
folosite de anumii utilizatori s suporte deja interfaa cu acest produs [BuBois2001].
Orice main care dorete s proceseze interogri asupra unei baze de date MySQL trebuie s
ruleze MySQL server-MySQLd-, care este responsabil de tot traficul de tip incoming sau
outgoing cu baza de date. Ca orice server, MySQLd primete pe un port particular (3306)
eventualele cereri de conexiune ale unui client care trimite cereri ctre o baz de date via
MySQLd. Acest client poate fi un script n PHP care, graie modelului DBI, poate trimite o
cerere ctre baza de date prin intermediul serverului MySQL, sau chiar clientului command-line
MySQL. Clientul MySQL este o interfa interactiv pentru trimiterea de comenzi ctre server
[BuBois2001].
1.3.1. Modul de funcionare a unui server de baze de date pentru Web
Funcionarea unui server de baze de date pentru Web, n cazul nostru MySQL, implic
existena a dou elemente: un browser Web i un server. ntre aceste dou elemente se impune s
existe un canal de comunicare. Serverul de Web funcioneaz n moduri diferite n urmtoarele
situaii: [WellingThomson2005]
n cazul n care server-ul lucreaz cu pagini de web statice, un browser Web (clientul)
formuleaz cererea ctre server, iar serverul trimite napoi un rspuns.
n cazul n care server-ul lucreaz cu pagini web dinamice care preiau datele dintr-o baz
de date i le afieaz se realizeaz urmtorii pai: [WellingThomson2005]
browser-ul web al unui utilizator emite o cerere HTTP pentru o anumit pagin Web;
server-ul web recepioneaz cererea i transfer fiierul ctre motorul PHP, n cazul nostru,
pentru prelucrare;
motorul php ncepe analiza paginii. n interiorul unei pagini web dinamice exist o
comand care realizeaz legtura la baza de date i execut interogrile pe care le trimite
serverului MySql;
serverul MySQL recepioneaz interogarea bazei de date i o prelucreaz, iar apoi trimite
rezultatele motorului PHP;
motorul PHP afieaz rezultatele furnizate de server-ul MySQL formatate ntr-un cod
HTML pe care l returneaz server-ului Web, n cazul nostru Apache.
Server-ul Web transmite codul HTML browser-ului, unde utilizatorului i se afieaz rezultatul
dorit de acesta.
Selectarea unei baze de date ca fiind cea curent se face prin comanda:
USE nume_baza_de_data;
Pasul urmtor n procesul de creare a unei baze de date l constituie crearea tabelelor ce o
compun. Comanda de crearea a unui tabel are urmtoarea sintax:
CREATE TABLE nume_tabel (nume_cmp tip_cmp);
n procesul de creare a unui tabel activitile sunt:
denumirea cmpurilor;
alegerea unui tip de date potrivit pentru fiecare cmp;
definirea atributelor pentru fiecare cmp n parte;
stabilirea coloanei care va juca rolul de cheie primar sau secundar cu ajutorul creia se
va stabili legtura ctre alte tabele ale bazei de date.
Indexii pentru o tabel se pot crea astfel:
fie adugnd la sfritul instruciunii CREATE TABLE... comanda [Chip2/2003]
INDEX(nume_coloan_index);
valoare
coloanei
1`,
tergerea nregistrrilor dintr-o tabel se face prin comanda DELETE care are urmtorea
sintax [Chip2/2003]:
DELETE FROM nume_tabel WHERE condiii;
n cadrul prezentului capitol au fost expuse comenzi MySQL cu ajutorul crora se poate
proiecta i dezvolta o baz de date care s corespund n totalitate nevoilor unui magazin virtual
care ar putea avea, de exemplu, ca obiect de activitate vnzarea de componente de calculatoare,
componente de calculatoare i nu numai.
PHP este un limbaj de scripting folosit pentru crearea paginilor Web dinamice. PHP poate fi
folosit pentru scrierea unor programe stocate pe server ce acceseaz baze de date. PHP este un
limbaj eficient i securizat. Aplicaiile PHP sunt uor de configurat pentru exploatare. PHP
asigur timpi de rspuns competitivi la rularea aplicaiilor Web, asigurnd n acelai timp
securitatea informaiilor i transparena fa de utilizator [Chip2/2003].
PHP aa cum este cunoscut astzi, este, de fapt succesorul produsului numit PHP /
FI(prescurtarea de la "Interpret Forms").PHP a fostcreat n 1994 de ctre Rasmus Lerdorf. Prima
versiune PHP a fost un set binar de Common Gateway Interface (CGI),scris n limbajul de
programare C. Intre anii 1994-1999 au aprut pe pia o serie de versiuni de PHP care s-au
bucurat de succes. In 2000 s-a lansat versiunea PHP4 avnd la baz acest motor Zend Engine.
PHP 4.0 a inclus alte caracteristici-cheie, cum ar fi suport pentru mai multe servere de web,
sesiuni HTTP, cteva construcii noi ale limbajului.
PHP 4.0 a fost mprit n 3 pri:[Converse_Park_Morgan_2005]
1.Motor de baz(ZEND)- responsabil cu parsarea codului PHP i cu sintaxa limbajului
2.Server API(SAPI)- handlere de comunicare i interfaa cu servere web, permit ca PHP s se
integreze uor cu alte server web. De ex, are un modul ISAPI pentru a perimte ca PHP s lucreze
cu Internet Information Server(IIS)
3. Module funcionabile: MySql,XML,IMAP etc
PHP5.0 a fost lansat n iulie 2004, dup cteva lansri preliminare, se bazeaz pe Zend Engine
2.0,ofer suport OOP i zeci de alte caracteristici noi(clase i obiecte se creaz mult mai simplu
dect n PHP 4.0, se mbuntete integrarea dintre PHP i MySql, permite scrierea de XML
curat), ofer suport nativ pentru SQLite, pentru SOAP integrat, iteratori pentru date icontrolul
erorilor prin tratarea de excepii [Converse_Park_Morgan_2005]
PHP 6[site96] a fost lansat n decembrie 2007, i a adus att nouti ct i modificri la
versiunile anterioare, mai exact: mbuntirea suportului pentru Unicode;retragerea definitiv a
unor funcii ca register_globals imagic_quotes, ia variabilelor tip $HTTP_*_VARS; var va fi
un alias pentru public, ifolosirea lui va ridica o atenionare E_STRICT; suport pentru int pe 64
bii; taguri tip ASP sunt retrase definitiv; XMLReader, XMLWriter, Fileinfo sunt incluse n
distribuia principal; pachete Freetype1, GD1, mime_magic au fost scoase din distribuia
principal; funcia ereg() nu mai este disponibil; instanierea obiectelor prin referin (& new
Obiect()) genereaz o eroare E_STRICT; erorile tip E_STRICT sunt incluse n E_ALL;
adugarea instruciunii goto permite salturi la un alt bloc de comenzi; namespace, import, igoto
devin cuvinte rezervate; accesarea caracterelor ntr-un ir (string) se face prin operatorul []. {} se
scoate din uz ( ex: $str[42] funcioneaz, $str{42} nu funcioneaz); constantele FILE_BINARY
i FILE_TEXT devin disponibile pentru folosirea n funcii de citire/scriere fiiere; foreach va
suporta array multi dimensional: foreach($c as $b => list($a, $d)); pentru operatorul ternar
expresia pentru valoarea true nu mai este obligatorie ($x = $z ?: s; // returns $x = $z;) opiunea
safe_mode a fost nlturat;operatorul and a fost nlturat; funcia microtime() returneaz un
float; zend.ze1_compatibility_mode a fost nlturat.
Limbajul PHP [site97]este un limbaj de programare structurat, ca iC-ul, Perl-ul sau ncepnd
de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinaie a celor trei. PHP se poate
utiliza att pentru a dezvolta aplicaii de sine stttorare, datorit modularitii sale ct in linia
de comand ca Perl sau Python. PHP permite frr dificuti, conlucrarea cu majoritatea bazelor
de date relaionale, de la MySQL ipn la Oracle, trecnd prin MS Sql Server, PostgreSQL, sau
DB2.
Limbajul PHP-ul poate fi folosit pe aproape toate marile sisteme de operare, incluzand Linux,
multe variante de Unix , Microsoft Windows, Mac OS X, probabil si altele. PHP are deasemenea
suport pentru majoritatea serverelor de web din prezent. Acestea includ serverele Apache,
Microsoft Internet Information Server, Personal Web Server, Netscape , iPlanet si multe altele.
Pentru majoritatea serverelor PHP are un modul, iar pentru celelalte care suporta standardul CGI,
PHP putand sa lucreze ca un procesor CGI.
Cu PHP nu exista limitare in obtinerea unor rezultate doar HTML. Posibilitatile limbajului
PHP-ului includ afisarea de imagine, fisiere PDF si chiar filmulete Flash. PHP suporta incarcarea
fisierelor de pe calculatorul client upload si ofera suport pentru cookies.
PHP este un limbaj ideal pentru construirea de pagini Web dinamice. El poate fi rulat pe mai
multe platforme i se poate conecta la mai multe baze de date, n particular baze de date
relaionale create cu MySQL. Cel mai important aspect al limbajului este ns posibilitatea de a fi
inclus n cod HTML. Se pot crea pagini HTML statice i din loc n loc, acolo unde este nevoie,
s se introduc dinamism cu PHP.
Limbajul PHP fiind open-source beneficeaz de un sprijin activ din partea comunitii on-line,
acesta fiind i motivul creterii explozive a numrului de site-uri bazate pe acest limbaj.
Limbajul PHP ofer urmtoarele faciliti [Welling2001]:
manipularea coninutului paginilor web;
transmiterea header-elor HTTP pentru autentificare;
setarea cookie-urilor;
redirecionarea utilizatorilor;
asigurarea spargerii (paser) fiierelor XML;
crearea i manipularea imaginilor, animaiilor i a PDF-urilor;
conectarea la un server de e-mail.
( limbajului PHP)
Modul de funcionare a limbajului PHP este urmtorul: browser-ul trimite ctre server-ul Web
o cerere HTTP pentru un fiier PHP. Server-ul recunoate c fiierul cerut conine cod PHP, n
consecin va lansa parser-ul PHP, care va primi la intrare fiierul respectiv. Parser-ul va
identifica secvenele PHP, care n cadrul codului HTML sunt cuprinse ntre marcajele <? i ?
> i le va interpreta. Tot ce nu este cod PHP este trimis spre ieirea standard fr nici o
prelucrare. Codul PHP poate scrie la rndul su n ieirea standard prin comenzile prestabilite
cum ar fi echo sau print. n final serverul Web interceptez ieirea standard a parser-ului i
transfer totul browser-ului care a cerut pagina [McCarty2002].
PHP, i ntr-o anumit msur i alte limbaje Web, prezint urmtoarele caracteristici
[Welling2001]:
este interpretativ;
execuia este rapid deoarece interpretorul este inclus n server-ul Web, prin urmare nu
se cheltuiesc resurse cu configurarea;
este bogat n faciliti, coninnd numeroase funcii utile;
Crearea paginilor PHP se reduce la editarea unui fiier PHP care se poate realiza n orice editor
de texte: Notepad, editoare PHP, etc. i acesta poate conine: [Converse_Park_Morgan_2005]
text;
tag-uri HTML sau XML;
comenzi i instruciuni PHP;
comenzi i instruciuni MySQL.
Pe parcursul dezvoltrii fiierului, n fereastra editorului de texte Notepad se va aciona
comanda Save a meniului EDIT dup fiecare modificare adus fiierului, apoi Refresh n browser
pentru reflectarea modificrilor astfel efectuate (folosirea butoanelor Back i Forward din
browser trebuie s fie urmat de asemenea de Refresh). Cu condiia ca fiierele s fie salvate
corect, iar URL-urile locale s fie scrise corect, pentru fiecare pagin PHP la care se lucreaz
simultan trebuie deschis cte o fereastr a editorului.
O pagin PHP se salveaz cu extensia php n directorul serverului Apache numit htdocs i se
va accesez n browser astfel: http://localhost/numefisier.php. n cazul n care se dorete ca
paginile unui site Web s se pstreze ntr-un subdirector creat n rdcina server-ului Web atunci
la lansarea n browser a site-ului web se va introduce i numele acestuia n URL astfel:
http://localhost/numesubdirector/numefisier.php. Dup lansarea n browser a unei pagini PHP se
poate folosi opiunea View source a acestuia, i se observ c se afieaz doar ieirile scriptului
(text, cod HTML, etc.), nu i codul PHP care genereaz ieirile. [Stanca2007]
1.4.2. Accesul la paginile PHP i afiarea rezultatelor acestora
Comenzile de editare a unei pagini HTML dintr-un script PHP, sunt: echo, print, print_r, i
printf. Toate aceste comenzi mai sunt folosite pentru afiarea rezultatelor unei funcii, a valorilor
unei variabile, a elementelor unui tablou, a mesajelor text, a valorilor introduse de utilizator n
cmpurile unui formular HTML, pentru a transmite valorile ncadrate ntre ghilimele la browser,
etc. Exemple cu aceste comenzi se vor realiza pe tot parcursul incursiuni n limbajul PHP.
n cele ce urmeaz se prezint un exemplu de pagin PHP care folosete comenzile print i
echo pentru afiarea n browser a unui pagini web statice ce va conine dou mesaje text.
<?php
echo Exemplu de text scris cu
echo; print Exemplu de text scris
cu print; ?>
n momentul cnd fiierul de mai sus este solicitat de un utilizator, server-ul Web va
recunoate fiierul ca fiind o pagin PHP datorit faptului c are extensia .php. nainte de a
trimite fiierul ctre browser-ul utilizatorului server-ul Web va prelucra scriptul din fiier. n
cazul exemplului anterior, scriptul din fiier este codul surs scris ntre <?...?>. Dup prelucrarea
scripturilor va rezulta o pagin HTML n care codul surs PHP se va nlocui cu rezultatul
acestuia.
1.4.3. Particulariti ale programrii procedurale n PHP: variabilele PHP
Variabilele PHP nu trebuie declarate ci sunt create automat n momentul primei utilizri. n
acest moment li se definete tipul de date. Aceast facilitate permite programatorului
posibilitatea dezvoltrii rapide a unor aplicaii complexe. Odat ce o variabil a fost creat ea
poate fi folosit oriunde n program, cu excepia funciilor, unde trebuie inclus explicit n zona
local de alocare prin funcia global. Sintaxa unei variabile PHP este:
$nume_variabil=valoare;
unde valoare poate fi de orice tip.
Comentariile se realizeaz cu semnul // n cazul n care se comenteaz pe un singur rnd. n
cazul n care se dorete inserarea n codul surs a unui cometariu pe mai multe rnduri se
folosete semnul /*...*/. Aceste comentarii nu sunt interpretate de browser i se folosesc la
explicarea codului surs.
Tipurile de variabile acceptate de PHP sunt:
Integer [WellingThomson2005] [Chip2/2003] care se utilizeaz pentru numere ntregi, de
exemplu: 5,-5,90.
String [WellingThomson2005] [Chip2/2003] care se utilizeaz pentru iruri de caractere. Un
string este o succesiune de caractere (ir) ncadrate ntre ghilimele.
3.Float (Double) [WellingThomson2005] [Chip2/2003] care se utilizeaz pentru numere reale;
4.Boolean [WellingThomson2005] [Chip2/2003] utilizat pentru a defini o valoare de adevr
TRUE sau FALSE. Acest tip se folosete, n general, pentru a face diferite verificri n procesul
de programare. De exemplu, se verific dac un anumit produs exist n tabela Produse. n
cazul n care acesta exist se va returna TRUE i datele despre acest produs vor putea fi afiate
pe ecran, n caz contrar se va returna FALSE i date despre acesta nu se vor putea afia n
browser.
5.Array [WellingThomson2005] [Chip2/2003] se utilizeaz pentru extragerea mai multor date
de acelai tip. Un array poate fi considerat ca fiind un tablou n care fiecrei valori i corespunde
un numr, adic un indice (o poziie).
Variabilele superglobale sunt: [WellingThomson2005]
$_SERVER este un tablou ce conine variabile de mediu ale serverului;
$_GET este un tablou ce conine variabile transferate scriptului prin metoda GET;
$_POST este un tablou ce conine variabile transferate scriptului prin metoda POST;
$_COOKIE este un tablou ce conine blocuri cookie;
$_FILES este un tablou ce conine variabile legate de ncrcarea fiierelor;
$_REQUEST este un tablou ce conine toate variabilele introduse de utilizator, inclusiv
coninutul intrrilor din $_GET, $_POST i $_COOKIE;
$_SESSION este un tablou ce conine variabile de sesiune.
Variabilele globale cele mai folosite sunt:[site19]
$_SERVER['REMOTE_ADDR'] are misiunea de a returna adresa IP a vizitatorului;
$_SERVER['HTTP_USER_AGENT'] are misiunea de a returna informaii despre browserul folosit;
$_SERVER['HTTP_REFERER']are misiunea de a returna adresa paginii vizitat anterior;
$_SERVER['SERVER_NAME']are misiunea de a returna numele serverului;
$_SERVER['SCRIPT_NAME']are rolul de a returna numele fiierului php accesat.
O constant are un tip i o valoare. Att tipul, ct i valoare, sunt determinate de caracterele
care intr n componena constantei. Valoare unei constante nu poate fi schimbat n timpul
execuiei programului n care a fost utilizat. [Negrescu2000]
Constantele se caracterizeaz prin: [site16]
li se atribuie o valoare care nu poate fi modificat sau ters de-a lungul execuiei
programului;
constantele nu prezint n sintaxa lor simbolul $ ;
numele unei constante este o succesiune de litere i eventual cifre, primul caracter este n
mod obligatoriu liter. Aceasta este case sensitiv.
constantele au un caracter global.
definirea constantei se realizeaz cu funcia define().
4.4. Operatori
Interpretorul PHP permite folosirea a nou tipuri diferite de operatori. Acetia opereaz asupra
unor expresii (una, doua sau trei) i furnizeaz ca rezultat o alt expresie care este rezultatul
operaiei corespunztoare.[site14]
Operatorii aritmetici acioneaz asupra a doi sau mai muli operanzi. Acetia sunt: [site14]
[WellingThomson2005] [Chip2/2003]
adunare ('+');
scdere ('-');
nmulire ('*');
mprire ('/');
restul mpririi ('%').
Operatorii relaionali se folosesc n procesul de compararea a dou valori, variabile, constante,
etc. Expresiile n care acetia apar au ca rezultat valori logice (true sau false). Aceti operatori
sunt:
Operatorul de atribuire definit de semnul = are rolul de a atribui unei variabile,
constante o valoare.
Operatorul de egalitate se definete prin semnul == i se folosete pentru a compara
dou valori, expresii, etc.
Operatorul diferit este definit prin semnul != i se folosete n acelai scop ca i
operatorul de egalitate.
Operatorul mai mare este definit de semnul > .
Operatorul mai mare egal este definit de semnul >= .
Operatorul mai mic este definit de semnul < .
Operatorul mai mic egal este definit de semnul <=.
Operatorul condiional se definete prin semnul '?'. Acest operator are sintaxa:
expresie1?expresie2:expresie3
Operatorul condiional returneaz valoarea expresiei expresie2 n cazul n care valoarea
expresiei expresie1 este true, n caz contrar va returna valoarea expresiei expresie3.
Operatorul de concatenare este un operator ce se aplic asupra irurilor de caractere. Acest
operator este definit prin semnul . Operaia de atribuire a concatenrii este definit prin semnul
.=
Operatorii logici se folosesc n cazul n care se lucreaz cu valori de adevr. Aceti operatori
sunt:
9. Operatorul xor (SAU exclusiv) expresia n care apare operatorul 'xor' va avea valoarea
true dac exact unul dintre operanzi are aceast valoare.
10. Operatorul de negare este: ! (NOT) returneaz TRUE dac valoarea iniial de adevr e
FALSE i FALSE dac valoarea iniial este TRUE.
11. Operatorul sau logic este || (OR) returneaz TRUE dac oricare din valorile verificate e
TRUE. Returneaz FALSE doar dac amndou valorile verificate sunt FALSE.
4. Operatorul i logic este: && (AND) returneaz FALSE dac oricare dintre valori este
FALSE (sau dac amndou sunt FALSE) i n caz contrar returneaz TRUE
1.4.5. Structurile de control
n cadrul unei pagini web care folosete scripturi PHP fr s existe o delimitare clar, impus
de PHP pentru zona de declaraii i zona de instruciuni aa cum se ntmpl n alte limbaje de
programare cum ar fi, de exemplu, activitatea de declarare a variabilelor i constantelor se reduce
la iniialializarea lor cu o valoare. n php nu se va scrie explicit tipul de date a unei variabile sau
constante deoarece acesta se deduce n mod automat dup ce acestora li s-a atribuit o valoare.
[stanca2007]
Prelucrarea datelor n scripturile PHP, ca i n orice alt limbaj de programare, se face cu
ajutorul instruciunilor. Ordinea n care se execut instruciunile n cadrul scripturilor definete
aa numita structur de control a acestora. [stanca2007]
Structurile de control complexe prezente n PHP sunt: [stanca2007]
structura alternativ care se realizeaz cu ajutorul instruciunii IF;
structura repetitiv condiionat anterior care se realizeaz cu ajutorul instruciunilor
WHILE, FOR i FOREACH;
structura repetitiv condiionat posterior care se realizeaz cu ajutorul instruciunii DOWHILE;
structura selectiv care se realizeaz cu ajutorul instruciunii SWICH.
instruciuni folosite n cadrul ciclurilor care ofer o flexibilitatea mare n programarea n
PHP sunt: CONTINUE, BREAK i RETURN.
Instruciunea expresie se obine scriind punct i virgul dup o expresie. Deci, formatul acestei
instruciuni este: [Negrescu2000]
expresie;
n cazul n care componenta instruciunii expresie este o expresie de atribuire aceast
instruciune se transform n instruciune de atribuire [Negrescu2000],
Instruciunea break; se folosete cnd se dorete s se ntrerup forat execuia unui ciclu i
trecerea la urmtoarea instruciune existent imediat dup acesta. Aceast instruciune poate fi
folosit n cadrul instruciunilor WHILE, DO-WHILE, FOR, FOREACH i SWITCH.
Instruciunea continue; se poate utiliza numai n corpul unui ciclu, avnd ca efect abandonarea
iteraiei curente. Sintaxa ei este:[Negrescu2000] [WellingThomson2005]
continue;
Efectul acestei instruciuni este:[Negrescu2000;]
n corpul instruciunilor WHILE, DO-WHILE, se ntrerupe iteraia curent i se trece la
evaluarea condiiei care stabilete continuarea sau terminarea ciclului.
n corpul instruciunilor FOR, FOREACH, se ntrerupe iteraia curent i se trece la
executarea pasului de reiniializare.
Instruciunea return;[Negrescu2000] [WellingThomson2005] este o instruciune de revenire
dintr-o funcie cu urmtoarele dou formate:
return;
return $expresie;
Primul format al acestei instruciuni se folosete n corpul unei funcii care nu returneaz nici
o valoare, dar la ntlnirea acestei instruciuni se iese forat din ea.
Cel de al doilea format se folosete n cadrul unei funcii care ntoarce o valoare la ieirea din
aceasta $expresie deinnd valoarea ntoars de funcie.
Instruciunea exit; [WellingThomson2005] are rolul de a opri execuia ntregului script PHP.
Aceast instruciune se folosete n depistarea i corectarea erorilor din cadrul unui script PHP.
Instruciunea declare [WellingThomson2005] se folosete la stabilirea directivelor de
executare/rulare a unui cod surs. Pn n prezent a fost implementat o singur directiv de
executare, numit ticks care se stabilete astfel: ticks=n (se permite rularea n cadrul unui cod
surs a unei funcii dup fiecare n linii de cod) Sintaxa acestei instruciuni este:
declare(directiv){ set instruciuni;}
Funciileinclude(); i require(); sunt echivalente i au rolul de a insera coninutul unui fiier n
cadrul unui scipt PHP n locul acestora. Diferena dintre cele dou funcii este c n caz de eroare
require(); va produse o eroare fatal, n timp ce construcia include(); va afia un mesaj de
eroare.
1.4.6. Tab lou ri
n majoritatea limbajelor prin tablou se nelege o mulime de date de acelai tip cu acceai
structur. Tablourile sunt alctuite din elemente i indici. n PHP i nu numai, tipurile cele mai
utilizate de tablouri sunt: tablouri unidimensionale i bidimensionale. n cadrul unui tablou
activitile care se pot realiza sunt:
1.Crearea tablourilor n PHP se realizeaz prin atribuirea explicit a unei valori fiecrui elemet
al acestuia, cu funciile array();. Sintaxa funciei array(); este:[site21]
array( [index=>] value, ... );
unde
index poate fi de tipul integer sau string;
valoare poate fi de orice tip.
Funcia array(); permite crearea n dou moduri a tablourilor i anume:
a)Primul mod de creare a unui tablou cu funcia array const n omiterea parametrului opional
numit indice, existent n sintaxa acesteia, rezultatul fiind urmtorul: [Stanca2007]
<? $oamenii_la_masa = array(Mila,Cristian,Mioara) ;?>
Funcia array(); este de fapt o construcie a limbajului PHP la fel ca echo. n exemplul de mai
sus s-a creat un tablou numit $oamenii_la_masa care conine 3 elemente de tipul string.
b) Al doilea mod de creare a unui tablou cu funcia array(); const n folosirea parametrului
opional numit indice, existent n sintaxa acesteia, rezultatul fiind urmtorul: [Stanca2007]
<?$oamenii_la_masa = array (33=>Irinel, 2=>Mioara, 7=>Victorel ) ;?>
Deci, indici tabloului nu vor fi 0,1 i 2 ci cei precizai de cel care creaz tabloul. n exemplul
anterior indicii tabloului vor fi 33, 2, 7.
Tablourile n PHP mai pot fi create fr utilizarea funciei array(); prin atribuirea explicit de
valori fiecrui element al acestuia, ca n urmtoarul exemplu: [Stanca2004.3]
PHP prezint operatori care acioneaz att asupra variabilelor care, au fost prezentate n
paginile anterioare ct i asupra tablourilor. Operatorii care acioneaz asupra tablourilor sunt:
[WellingThomson2005]
operatorul reuniune care este reprezentat prin +. Efectul acestui operator este c se
adaug la sfritul primului tablou elementele tabloului de pe a doua poziie eliminndu-se
indicii care sunt dubluri.
operatorul egalitate reprezentat prin = = returneaz TRUE dac tablourile care se
compar au elemente identice altfel returneaz FALSE.
operatorul identitate reprezentat prin = = returneaz TRUE dac tablourile care se
compar au aceleai elemente i n aceeai ordine, altfel returneaz FALSE.
operatorul diferit reprezentat ! = sau <> returneaz TRUE dac tablourile conin
elemente diferite, altfel returneaz FALSE.
operatorul ! = = returneaz TRUE dac tablourile care sunt comparate nu conin
aceleai elemente pe aceleai poziii, altfel returneaz FALSE.
4.8. Funcii
O funcie este un ansamblu alctuit din tipuri de date, variabile, constante i instruciuni scrise
n vederea unei anumite prelucrri(calcule, citiri, scrieri) i care pot fi rulate doar dac sunt
apelate dintr-un script PHP. Sintaxa unei funcii este: [Stanca2007]
nume_funcie( list parametrilor formali)
{
corp funcie;
}
unde:
list de parametrilor formali este de forma: $nume_parametru1,
$nume_parametru2,...,$nume_parametru n
Observaie: O funcie poate s prezinte o list vid de parametri formali. Corpul unei funcii
este alctuit din dou pri : [Stanca2007.3]
este o copie a originalului.Prin aceast metod, se poate modifica valoarea din cadrul unei funcii
n orice mod, dar valoarea variabilei din exteriorul funciei rmne nemodificat.
2.Transmiterea prin referin:atunci cnd un parametru este transferat unei funcii: funcia
primete o referin la variabila original, nu creaz o variabil nou. Aceasta referin are un
nume de variabila care incepe cu semnul dolarului i poate fi folosit exact ca orice variabil.
Diferena constn faptul c aceast ultim variabiln loc s dein propria valoare ea se refer la
valoarea variabilei originale.Toate modificrile facute asupra referinei afecteazi originalul. n
PHP, pentru a se specifica faptul ca pentru un parametru se folosete transferul prin referina, se
trece un ampersant (&) n faa numelui parametrului,n definiia funciei. n apelul funciei nu se
face nici o modificare.
.
9. 4.9. Funcii predefinite
2.2.8
date() returneaz ora, luna, anul precum i alte elemente ale datei curente n
funcie de context ;
<?php
function fnSimpleXMLAdaugElement2sf()
{
$bd = new SimpleXMLElement('./bd.xml',null,true);
$carte = $library->addChild('carte'); $carte>addAttribute('isbn', '4'); $carte>addAttribute('pubdate', '2000-07-11'); $carte>addChild('titlu', "Cartea gesturilor"); $carte>addChild('autor', "Peter Collett"); $carte>addChild('pret', "10"); header("Content-type:
text/xml");
echo $bd->asXML();
}
fnSimpleXMLAdaugElement2sf();
?>
4. tergerea elementelor unui fiier XML se face astfel:[Converse_Park_Morgan_2005][site100]
<?php
function fnSimpleXMLStergere()
{
$bd = new SimpleXMLElement('./bd.xml',null,true);
unset($bd->carte[1]);
header("Content-type:
text/xml"); echo $lbd->asXML();
}
fnSimpleXMLStergere();
?>
SimpleXML este util pentru a realiza o prelucrare uoara a documentelor XML din PHP.
Prelucrrile mai complexe asupra documentelor XML, impun folosirea lui
DOM.[Greenspan_Bulger2001][site100]
se modifice interfaa. Astfel clasele sunt n esen, o reprezentarea a unui set de funcii (numite
metode) i variabile (numite proprieti) concepute s lucreze mpreuni s furnizeze o anumit
interfa.n acest tip de programare este esenial s se ineleagideea:clasele sunt doar planuri
care nu pot fi folosite direct, acestea trebuie s fie instane de obiecte, care pot s interacioneze
cu restul aplicaiei.[Converse_Park_Morgan_2005][Greenspan_Bulger2001]
Sintaxa de declarare a unei clase este:
Class Prima{
// Coninutul clasei
}
Deci, am declarat o clas numit Prima a crui coninut va fi o combinaie de constante,
variabile i funcii(numite metode). O clasa se impune s fie instanat n scopul de a profita de
funcionalitile pe care le ofer. Acest lucru se face prin utiliznd constructorul new astfel:
$nume=new Prima();
In PHP5 obiectele sunt tratate diferit n comparaie cu alte tipuri de variabile. Un obiect este
ntotdeauna trimis prin referin (n realitate este trimis prin handler).[WellingThomson2005]
Unul dintre punctele fundamentale ale conceptului OOP este motenirea. Aceasta permite unei
clase s se extind la alt clas, n esen se adaug noi metode i proprieti, precum i
rescrierea
celor
existente
n
funcie
de
nevoi.[Converse_Park_Morgan_2005]
[Greenspan_Bulger2001]
Asa cum s-a menionat mai sus clasele conin att metode(funcii) ct i proprieti(variabile).
Metodele se declar ca i funciile, astfel:
class Prima {
function prima_functie() {
echo "ApelPrima::prima_functie";
}
}
Din afara domeniului unei clase, metodele sunt apelate folosind operatorul: ->
$obiect = new Prima();
$obiect->prima_functie();
n exemplul de mai sus obiect este o proprietate care este vizibil n domeniul de definiie al
fragmentului de cod de mai sus. n acest context PHP deine o variabil special numit $this.
Aceast variabil este definit numai n cadrul domeniului de aplicare al unui obiect, i
ntotdeauna pointeaz spre obiectul n sine.
class Prima {
function prima_functie($val)
{ echo "Valoare este: $val";
}
function apel($val)
{
$this->prima($val);
}
}
$obiect = new Prima();
$obiect->prima_functie(3);//apel direct al funciei
prima_functie $obiect->apel(4);//apel direct al funciei apel
Codul surs de mai sus va afia pe ecran: Valoarea este 3 Valoare este: 4
Principiu de baz al programrii orienate obiect n PHP este: definirea claselor s se realizeze
ntr-o pagin seprat. Paginile n care se definesc clasele sunt incluse n pagina principal a
proiectului cu include sau require.[Converse_Park_Morgan_2005][Greenspan_Bulger2001]
Un exemplu de program care utilizeaz programarea orientat[ obiect pentru a afia un mesaj
de test de genul Merge!
<?php
Class merge
{ function merge()
{
return "Merge!";
}
}
$world = new
merge(); echo world>merge(); ?>
1.7.1. Const ru ctorii
PHP 5 introduce conceptul de constructor unificat i un nou destructor pentru obiecte.
Constructorul i destructorul sunt metode speciale ale unei clase care sunt apelate, aa cum
sugereazi numele lor, la crearea respectiv distrugerea unui obiect. Rolul constructorilor ntr-un
program este de a iniializa proprietile unui obiect, sau pentru a efectua proceduri de pornire,
cum ar fi de exemplu, conectarea la o baz de date sau deschiderea unui fiier de la
distan.Conceptul de constructor nu este nou introdus de PHP5 acest concept exista i n
PHP4.n PHP 4 constructorul era considerat o metoda ce avea acelai nume cu cel al clasei. n
PHP5 pentru a defini constructorul s-a introdus metoda special: __construct(), pentru toate
clasele indiferent de numele lor.[Converse_Park_Morgan_2005][Greenspan_Bulger2001]
class expclasa
{function __construct($parametru)
{
echo Constructorul apelat cu parametrul $parametru;
}
}
1.7.2. Destructorul
n PHP5 perechea metodei__construct() este metoda __destruct(). Constructorul este apelat pt
crearea unui obiect naintea destructorului. La terminarea unui program este bine ca toate
obiectele create n interiorul acestuia s se distrug apelnd destructorul. Aceast operaie este
Distrugerea unui obiect este indicat s se efectueze n momentul n care toate apelurile la
obiectul respectiv sunt terse. PHP ofer posibilitatea detergere a unei variabile care refer un
obiect fie prin apelarea funciei unset()fie prin rescrierea valorii acesteia, n aceste cazuri obiectul
nu se distruge imediat.
1.7.3. Vizibilitate
Unui obiect pe lng metode i proprieti i se mai adaug noiunea de vizibilitate.Vizibilitatea
permite s se precizeze domeniul de aplicare de unde fiecare componenta a clasei poate fi
instanat. Domeniile de vizibilitate n PHP sunt:[Converse_Park_Morgan_2005]
[Greenspan_Bulger2001]
r Protected:-resursele se pot accesa din interiorul clasei sau a descendenilor si acolo unde
sunt definii
s Private:-resursele pot fi accesate doar din interiorul clasei unde s-au definit.
t Final:resursele pot fi accesate din orice clas dar nu pot fi rescrise n clasele descendente.
u Public:resursele pot fi accesate din orice clas.
Observaie:1. Nivel de vizibilitate final se aplic numai la metode i clase. Clase care sunt
declarate ca fiind final nu poate fi extended.
uile . Clase abstracte nu pot fi folosite n mod direct, dar acestea trebuie s fie extinse, astfel
nct clasa descendent ofer o gam complet de metode. Alte astfel de exemplu ar fi s se
defineasc o clasa Pagina avnd ca rol principal limitarea de cod HTML necesar crerii unei
pagini noi.Pagina este creat de o clas ceea ce ar trebui s restrang libertatea de creare a ei i
permite adaugarea de funcionaliti noi in timp scurt.Avantajele unei astfel de abordri n
dezvoltarea
unui
site
sunt:[WellingThomson2005][Converse_Park_Morgan_2005]
[Greenspan_Bulger2001]
Modificarea elementelor paginii unui site se face ntr-un singur loc(se adaug un buton)
Identificarea paginii care este vizualizat;
Coninut prestabilit dar care se poate modifica de exemplu: titlul, metaetichetele
nlocuirea elementelor standard (butoanele standard cu alte butoane)
Elemetele care au o probabilitate mare de modificare se declar ca atribute ale clasei: de
exemplu: coninutul, titlul, cuvintele cheie i butoanele unei pagini.Operaiile n cadrul unei
astfel de clase sunt afiarea i formatarea coninutului n pagin.
Interfeele sunt folosite pentru a specifica un API. De exemplu, se pot utiliza interfee pentru a
abstractiza conceptul de furnizor al bazei de date printr-un API comun care ar putea fi apoi pus n
aplicare printr-o serie de clase ca interfa pentru DBMS-uri diferite.
n
PHP
exist
diferite
API
cu
ajutorul
crora
se
acceseaz
MySql:[WellingThomson2005][Converse_Park_Morgan_2005][Greenspan_Bulger2001]
1.mysql- este un API istoric folosit pn la versiunea 4 a lui PHP
2.mysqli- este versiunea orientat obiect a lui mysql
3.PDO_MySQL este PDO pentru mysql, rolul su este de a asigura o interfa comun pentru
a accesa orice tip de baz de date, fr a se schimba codul surs, este de asemenea orientat
obiect.PDO furnizeaz metode pentru prepared statements i lucreaz cu obiecte.Deci, PDO
este un layer de acces la baze de date care furnizeaz metode de a accesa multiple tipuri de
baze de date, nu ine cont de sintaxele specifice ale diferitelor baze de date,permite s comute
ntre diverse tipuri de baze de date prin realizarea unei conexiuni la acestea. Driverele pe care
le
suport
sunt:[WellingThomson2005][Converse_Park_Morgan_2005]
[Greenspan_Bulger2001][site100
]
5. PDO_DBLIB ( FreeTDS / Microsoft SQL Server / Sybase )
6. PDO_FIREBIRD ( Firebird/Interbase 6 )
7. PDO_IBM ( IBM DB2 )
8. PDO_INFORMIX ( IBM Informix Dynamic Server )
9. PDO_MYSQL ( MySQL 3.x/4.x/5.x )
10. PDO_OCI ( Oracle Call Interface )
11. PDO_ODBC ( ODBC v3 (IBM DB2, unixODBC and win32 ODBC) )
12. PDO_PGSQL ( PostgreSQL )
13. PDO_SQLITE ( SQLite 3 and SQLite 2 )
14. PDO_4D ( 4D )
1.7.6. Exemplu de utilizare
Clasele care se pot folosi in dezvoltarea WEB pot cuprinde pagini, componente de interfee
utilizator, liste de cumprturi, categorii de produse sau clieni, tratare de erori. Obiectele sunt
instaneale acestor clase. Un exemplu de utilizare a claselor ia avantajelor motenirii:
Se creaz o clas Pagina avnd ca rol principal limitarea de cod HTML necesar crerii unei
pagini noi. Pagina este creat de o clasa. Aceast abordare ar trebui s restrng libertatea de
creare a ei i s permit adugarea de functionalitai noi n timp scurt.Avantaje:
31. Modificarea elementelor paginii unui site se face intr-un sg loc(se adauga un buton)
32. Identificarea paginii care este vizualizata;
33. Continut prestabilit dar care se poate modifica ca ex: titlul, metaetichetele
34. Inlocuirea elementelor standard (butoanele standard cu alte butoane)
Elemetele care au o probabilitate mare de modificare se declar ca atribute ale clasei, de
exemplu: coninutul, titlul, cuvintele cheie i butoanele unei pagini. Operaiile care pot aprea
sunt cele de afiare iformatare a coninutului n pagin. Implementarea se va face ntr-un fiier
cu extensia inc. n cazul de fa vom crea un fiier numit clasap.inc care se va introduce n
toate fiierele php care alctuiesc site-ul. [WellingThomson2005]
<?php class
Pagina
{// continutul paginii HTML+text se numeste
var $continutpagina;
//definirea unui titlu predefinit pt o
pagina var $titlu="Magazinul YYY";
//metaetichete
var $keywords="search
engines"; //butoane minime pe o
pagina
var $buton=array("Home"=>"home.php", "Contact"=>"contact.php", "Harta
site"=>"harta.php", "help"=>"help.php");
// functie de afisare a unei
clase public function Display()
{echo "<html>\n<head>\n";
$this->DisplayTitle(); $this>Displaykeywords(); $this>DisplayStyles();
echo "</head>\n<body>\n"; $this>DisplayHeader(); $this>DisplayMenu($this->buton); echo
$this->continutpagina; $this>DisplayFooter();
echo "</body>\n</html>\n";}
public function DisplayTitle()
{ echo "<title>".$this->titlu."</title>";}
public function DisplayKeywords()
{echo
"<meta
name=\"keywords\"
content=\"".htmlentities($this>keywords)."\"/>";} public function DisplayStyles()
{ ?>
<style><!-h1 {color:white;font-size:24pt;text-align:center; font-family:arial,sans-serif}
.menu {color:white;font-size:12pt;text-align:center; font-family:arial,sans-serif; fontweight:bold}
td{background:blue}
p{color:blue;font-size:12pt;text-align:justify; font-family:arial,sans-serif}
p.foot{color:white;font-size:9pt;text-align:center; font-family:arial,sans-serif;fontweight:bold} a:link,a:visited,a:active{color:white}
--></style>
<?php}public function DisplayHeader(){?>
<table width="100% cellpadding="12" cellspacing="0"
border="0"> <tr bgcolor="blue"> <td align="left"><img
src="a.gif"/></td> <td> <h1>Magazin Virtual</h1> </td>
<td align="left"><img
src="a.gif"/></td></tr></table> <?php}
public function DisplayMenu($buton)
{ echo "<table width='100%' bgcolor='white' cellpadding='4' cellspacing='4' border='0'>";
echo "<tr>\n";
//dimensiunea butonului
$width=50/count($buton);
foreach($buton as $nume=>$url){
$this->DisplayButon($width,$nume,$url, !$this>IsURLCurrentPage($url));} echo "</tr>\n";
echo "</table>\n";}
public function IsURLCurrentPage($url)
{
if(strpos($_SERVER["PHP_SELF"],$url)==false)
{ return false;
} else{ return true;}}
public function DisplayButon($width,$nume,$url, $active=false)
{ if ($active)
{
echo "<td width='".htmlentities($width)."%'><a
href='".htmlentities($url)."'><img
src='logo.gif' alt='".htmlentities($nume)."' border='0'/></a>
<a href='".htmlentities($url)."'><span class='menu'>$nume</span></a></td>";
}else{echo "<td width='".htmlentities($width)."%'>
<img src='logo2.gif'>
<span class='menu'>$nume</span></a></td>";}}
public function DisplayFooter()
{?>
<table width="100%" bgcolor="blue" cellpadding="12" border="0"><tr> <td>
<p class="foot">© Gigel</p>
<p
class="foot"><a
href="legea.php">Legea
dreptului
de
autor</a></p></td></tr></table> <?php}}?>
Instanierea clasei pentru crearea paginii de exemplu home.php se face:
<?php
require('clasapagina.inc');
$paginastart=new Pagina();
$paginastart->continutpagina='<p>Bine ati
venit</p>'; $paginastart->Display();
?>
1. PROIECTAREA SISTEMELOR
INFORMATICE
Autor: Mircea Moca
nivelul sistemului informatic creat. A treia faz a ciclului de dezvoltare este implementarea, care
const n transpunerea n cod a algoritmilor, a logicii stabilite n faza de
Fish-bone.
Deasemenea este prezentat ierarhia motivelor pentru care se recurge la
dezvoltarea sistemului informatic pentru organizaia beneficiar i schema de
descompunere a obiectivelor (generale-specifice) avute n vedere de organizaie.
2.3 Delimitarea sistemului de contextul su
n aceast seciune se prezint explicit aspectele care aparin sistemului (procese,
organizaii, sisteme tehnice/nontehnice existente etc.), i totodat aspectele exterioare
(persoane, bunuri materiale/imateriale) graniei sistemului, dar cu care sistemul
interacioneaz. Aici se prezint i toate prile afectate semnificativ de sistem (n englez stakeholders).
2.4 Activiti i procese
n aceast seciune se prezint activitile principale ale organiza iei, furniznd
detalii legate de cine, cnd i ce documente produce sau modific n cadrul organiza iei.
Pentru fiecare document care este important pentru proces, se inventariaz cmpurile sale.
Pentru aceast etap se prezint diagrame de flux (flow-charts) pentru fiecare proces. Unele
procese pot fi n continuare detaliate n subprocese. Deasemenea, unde este cazul, se
folosesc diagrame de activitate.
3. Cerine
3.1 Elicitaia (extragerea) cerinelor
3.1.1 Surse de cerine
n aceast seciune se prezint sursele de cerine identificate, sunt descrise i se
justific de ce au fost acestea alese. Se specific totodat implica ia diverselor pr i n
stabilirea cerinelor.
3.1.2 Procesul de elicitaie a cerinelor
n aceast seciune se descriu prile implicate (stakeholders) i se explic cum i
va afecta viitorul sistem, discutnd n termeni de beneficii, dezavantaje, riscuri.
n continuare se descriu metodele de elicitaie i particulariti ale aplicrii lor n
cadrul organizaiei. Amintim aici metodele: model de business, cazuri de utilizare i metoda
interviului.
n cazul metodei cazurilor de utilizare, se realizeaz urmtoarele aciuni:
16:
17:
18:
Modelul prototipului are o abordare de la simplu la complex, ntruct la fiecare itera ie,
versiune de prototip sunt adugate funcionaliti.
Modelul spiral reprezint o combinaie a elementelor folosite de modelele n
cascad i prototipului, ns n plus trateaz riguros riscul la fiecare etap. Acest model este
utilizat n dezvoltarea sistemelor informatice mari, complexe, realizate cu costuri
semnificative, de obicei soluii dedicate. n acest model se ncepe cu stabilirea obiectivelor
pentru sistem, analiza cerinelor, identificnd sursele de risc posibile. Pentru fiecare surs
de risc se realizeaz o analiz i se ncearc gsirea unei metode de minimizare, excludere a
sa. n funcie de rezultatul analizei de risc se consult clientul care poate alege ntre a opri
proiectul sau a continua asumndu-i riscurile identificate. n aceast faz se poate construi
un prototip (care presupune costuri mai reduse) pentru a evalua riscul.
n mai multe forme: rapoarte, liste, grafice, valori sintetice. Aceste date pot fi salvate n
fiiere i pot reprezenta mai departe intrri pentru alte sisteme informatice (de analiz a
datelor de exemplu). La un nivel mai detaliat de proiectare trebuiesc desigur specificate
ieirile la nivel de componente. Deasemenea, observm c ieirile unui sistem informatic
pot fi utile direct utilizatorului uman sau altor sisteme informatice.
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8
parcursul execuiei.
Procesul de business:
via al sistemului.
Estimarea msurii n care aceste limitri pot fi influenate.
Mecanisme de reacie i analiz:
Asigurarea mecanismelor de reacie i analiz pe toat durata realizrii proiectului. Lipsa acestora poate
duce la disfuncionaliti i uneori la incapacitatea echipei de management de a reaciona n timp util pentru
evitarea manifestrii riscurilor. Aceste mecanisme sunt menite s ofere reac ia pr ilor afectate de proiect,
vis-a-vis de execuia acestuia.
Lista prezentat mai sus poate fi dezvoltat n continuare cu aspecte generale privind riscuri de proiect
informatic. Pentru fiecare proiect informatic ns exist riscuri specifice, care sunt mai greu de identificat dac
experiena n situaii cu spaiul problemei similare este redus.
Noiuni privind arhitectura i securitatea reelelor de calculatoare
19:
Tehnica CSMA/CD
Aceast tehnic rezult din utilizarea tehnicii CSMA mpreun cu tehnica "ascult ce transmii" (figura
11.1.). Principiul de baz este c, dup ce sursa transmite pachetul, ateapt un interval foarte scurt de timp
(dependent de ntrzierile de propagare i de sistem) apoi i ascult propria transmisie.
Dac sursa, atunci cnd acioneaz ca receptor al propriei transmisii, detecteaz o diferen ntre informaia
recepionat fa de cea transmis, va deduce c s-a produs o coliziune pe canal, va trunchia pachetul n curs de transmisie
i va cuta s rezolve coliziunea, organiznd dup un algoritm specific retransmiterea ulterioar a acestuia.
Este uzual ca sursa de pachete care detecteaz prima coliziune s ia imediat decizia de difuzare pe canal a
unui semnal de bruiaj specific de scurt durat ( jamming ), n acest fel este asigurat consensul de coliziune ntre
toate sursele de pe canal implicate n interfa.
Avantajul esenial al acestei tehnici const n faptul c ea permite detectarea prompt a unei coliziuni, adic
imediat ce ea apare i nu dup un interval de timp, evitndu-se transmiterea complet a pachetelor colizionate i se
reduc nu numai ntrzierile din reea datorate coliziunilor, dar i canalul de difuzare devine disponibil mai repede.
Intervalul de timp n care se pot produce coliziuni dup ce o staie a nceput emisia este de 2, unde este
ntrzierea de propagare a semnalelor ntre cele mai ndeprtate staii. Deci o staie poate fi sigur c a ocupat linia,
dup ce areuit s transmit o perioad de lungime 2, fr s se produc coliziuni.
Dup ce s-a produs coliziunea, obiectivul const n obinerea de perioade de ntrziere care s permit replanificarea
fiecrei surse de pachete n cuante discrete de timp. Apar dou cerine contradictorii: pentru a se garanta utilizarea
canalului cuanta de timp trebuie s fie suficient de scurt, iar pe de alt parte pentru a se evita coliziunile aceasta
trebuie s fie mai mare dect fereastra de coliziune. Din acest motiv cuantele de retransmisie sunt uzual fixate s fie
puin mai lungi dect dublul ntrzierii maxime de propagare capt la capt, specific pentru canalul utilizat.
Intrzierea de retransmisie este calculat ca produsul dintre un contor de retransmisie i cuanta de retransmisie. Tipic
o cuant este definit ca fiind egal cu timpul de transmisie minim. De exemplu standardul IEEE 802.3(care va fi
tratat mai trziu n acest capitol) CSMA/CD specific o cuant de 51,2 microsecunde pentru un mediu de 10Mbs.
Dimensiunea minim de pachet de 512 bii a fost aleas pentru a se asigura c timpul de transmisie este mai mare
sau egal cu aceastuante timp. Pentru a minimiza probabilitate de coliziuni repetate asupra aceluiai pachet fiecare
contor este selectat ca un num aleator dintr-un interval de retansmisie [0 , limit superioar]. Acest interval va fi
dublat la fiecare coliziune succesiv extinzndu-se astfel domeniul ntrzierilor de retransmisie. Aceas dublare face
s scad probabilitatea de coliziune
Staiile implicate n coliziune vor ncerca s retransmit cadrul dup un timp de ateptare de 0 sau 1 cuante de
retransmisie( o tran de ateptare este egal cu timpul de propagare prin mediu ). Dac o staie alege cuanta 0 i alta
trana 1 atunci totul e n ordine i vor transmite cadrele fr s mai apar coliziuni ( s-a presupus c n acest timp alte staii
nu au dorit s transmit). Daca aleg aceeai cuant se produce din nou coliziune i algoritmul va genera 4 cuante posibile.
Probabilitatea de a alege transmisia n aceeai cuant scade i deci si probabilitatea de apariie de coliziune. Mentionam
faptul c la coliziunea i se alege dintr-un numr de cuante cuprins ntre 0 i 2i-1 cu trunchierea
la 210-1.
10Base-5
Opereaz pe cablu coaxial gros cu o lungime maxim de 500m. Aceast variant se bazeaz pe specificaia
Ethernet dezvoltat de ctre DEC, Intel i Xerox. Aceast specificaie de mediu definete transmisii n banda de
baz, utiliznd cablu coaxial ce suport viteze de transmisie de 10 Mb/s. Conexiunile care leag calculatoarele la
cablu sunt fcute n general folosind conectori 'vampir', la care este introdus un pin pn n miezul cablului coaxial.
Notaia 10Base-5 nseamn c funcioneaz la 10 Mb/s, utilizeaz semnalizare n banda de baz i poate suporta
segmente de pn la 500m. Se pot conecta pn la 100 de noduri pe un segment de reea.
10Base-2
Aceast variant opereaz pe cablu subire(Thin Ethernet), care este de fapt un cablu coaxial cu un diametru de
5mm i impedana de 50 Ohmi. Se utilizeaz transmisia n banda de baz, cu aceeai vitez ca la specificaia 10Base-5, 10
Mb/s, dar lungimea maxim a unui segment de cablu este de 200m i pe un segment de cablu sunt suportate pn la 30 de
staii. Prin utilizarea repetoarelor pot fi create lungimi mai mari de segmente. Conexiunile la cablu sunt fcute cu ajutorul
unor conectori standard BNC pentru a forma jonciuni n T i nu se utilizeaz conectori-'vampir'. Acest tip de cablu este cu
mult mai ieftin i mai uor de instalat, fiind foarte des folosit n practic, dar ca i la varianta anterioar se pune problema
detectrii ntreruperilor n cablu sau a conectorilor defeci sau desprini.
Datorit faptului c noile aplicaii(mai ales cele multimedia) necesit o band de trecere mai mare i un
timp de rspuns ct mai mic, au aprut noi tehnologii pentru reelele de mare vitez.
Ethernetul rapid este o extensie a standardului Ethernet curent. Tehnologia Ethernet rapid crete rata de
transmisie de la 10Mb/s la 100Mb/s. Exist dou standarde create i anume IEEE 802.3u(100Base-T) i IEEE
802.12(100Vg-AnyLAN), care au fost n competiie, dar doar prima variant este folosit actualmente.
100Base-T
Acest standard a fost promovat de companiile 3Com, Intel i Synoptics. El este de fapt o extensie a
standardului original IEEE802.3. Lungimea cablului de transmisie este limitat la 250m, iar dac se dorete
prelungirea lui, este necesar regenerarea semnalului. Standardul 100Base-T const din urmtoarele specificaii:
la nivelul fizic sunt trei tipuri de medii de transmisie: cablu torsadat neecranat, cablu torsadat ecranat i cablu cu
fibr optic;
la nivelul fizic exist un subnivel numit MII(media independent interface), care definete interfaa standard ntre
subnivelul MAC al nivelului legtur de date i oricare din mediile de transmisie definite mai sus pentru nivelul fizic;
subnivelul de acces la mediu(MAC-media acces control); este localizat deasupra subnivelului MII i este bazat pe
100Base-T4
de fire sunt folosite pentru transmisie i recepie, deci 100Base-T4 obine viteza de 100Mb/s prin mprirea fluxului
de date n trei fluxuri de 33Mb/s, iar a patra pereche este folosit pentru ascultarea coliziunilor. Splitarea fluxului de
date ntre fire ajut la asigurarea integritii semnalului dup standardele FCC(Federal Comunications Commision ).
Datorit faptului c aceast variant spliteaz fluxul de date de-a lungul a trei perechi de fire, nu este posibil
transmisia full duplex.
100Base-TX
Utilizeaz cablu format din dou perechi de fire rsucite de categoria 5 (care este mai scump dect cablurile
de categoria 3 i 4) UTP(unshilded twisted pair) sau cablu format din dou perechi de tipul STP(Shilded twisted
pair). O pereche este folosit pentru transmisie i una pentru recepie. Categoria 5 de cablu (CAT5) crete numrul
de rsuciri a firelor pe unitatea de lungime, pentru a elimina interferena electromagnetic(EMI). Sistemul 100BaseTX folosete exact acelai protocol ca i Ethernet-ul actual(nu spliteaz fluxul de date), suportnd att modul fullduplex ct i cel semi-duplex.
4.3.7
100Base-FX
Folosete pentru transmisie dou fire de fibr multimod (cablu optic), cte unul pentru fiecare direcie,
astfel nct transmisia este full duplex cu 100Mb/s n fiecare direcie i n plus distana dintre staie i concentrator
poate fi pn la 2000m.
Distribuitoare(HUB-uri)
Pe lng plcile de reea(NIC-Network Interface Card sau NIU-Network Interface Unit), conectori i
cabluri de legtur avem i elemente de distribuie care se mai numesc i HUB-uri. Hubul este cunoscut sub numele
de repetor sau concentrator. Prima lui funciune este s primeasc i s regenereze semnalele de la dispozitivele
conectate. Toate repetoarele 10Base-T sunt considerate ca funcionnd la fel. Repetoarele pentru Ethernetul rapid
sunt mprite n dou clase distincte: Clasa I i Clasa II.
Comutatoare (switch-uri)
Datorit strangulrii benzii de trecere de numai 100Mb/s(sau 10 Mbs la Ethernetul calsic), oferit de tehnologia
Ethernet rapid i din cauza necesarului tot mai mare de band de trecere cerut de noile aplicaii multimedia s-a impus
utilizarea comutatoarelor Ethernet. Se folosete configuraia de tip stea ca i la 100Base-T. Avantajul utilizrii acestor
comutatoare este c fiecare staie obine n ntregime o band de 100Mb/s, fr a mai fi nevoie s o mpart cu alte staii
(fr a avea domeniu comun de coliziuni cu alte staii). Acest lucru este realizat prin utilizarea unei magistrale de semnale
extrem de rapide aflat n comutatorul Ethernet i poate avea viteze de peste 2Gb/s. Comutatorul "nva" adresele MAC i
le stocheaz ntr-o tabel de cutare intern. ntre expeditorul i destinatarul unui cadru este creat o cale comutat
temporar, iar cadrul este trimis de-a lungul acestei ci temporare. n acest mod, zeci de staii utiliznd adaptoare Ethernet
rapid pot comunica, fr a se mai produce coliziuni.
Intr-un concentrator comutat (comutator care funcioneaz pentru Ethernet rapid, deci la 100Mb/s la fiecare
port i deci fiecare statie avnd propriul su domeniu de coliziuni), fiecare cadru sosit este memorat ntr-un modul
de intrare. Dei aceast conectare este cu mult mai scump dect cea n care se folosete un repetor, datorit faptului
c un comutator este cu mult mai scump dect un repetor, totui faptul c toate staiile pot transmite (i primi) n
acelai timp pachete, mbuntind semnificativ banda total a sistemului (de cele mai multe ori cu un ordin de
mrime sau chiar mai mult), face acest mod de conectare cu mult mai atrgtor. Cadrele memorate sunt trecute
printr-un fund de sertar de vitez mare de la placa surs la placa destinaie.
Asigur dirijarea pachetelor de date ntre nodurile surs i destinaie, trecnd prin
noduri intermediare. Decizia este luat astfel nct s nu existe n acelai timp legturi
suprancrcate i legturi neutilizate, evitndu-se
deci congestionarea reelei. O alt funcie important a nivelului reea este de interconectare a reelelor cu arhitecturi
diferite.
In cazul reelelor cu comutarea pachetelor, serviciile menionate se bazeaz pe utilizarea circuitelor virtuale
(comutate sau permanente). Un circuit virtual parcurge mai multe rutere (comutatoare) de pachete ntre doi utilizatori
i permite schimbul unor secvene de pachete de date simultan, n ambele sensuri. El pstreaz ordinea pachetelor i
permite controlul fluxului datelor astfel nct comunicarea este posibil i ntre terminale sau calculatoare de viteze
diferite. Spre deosebire de circuitele virtuale, circuitele comutate se stabilesc i se desfiineaz n mod dinamic, la
cererea utilizatorilor, la fel ca circuitele telefonice ntre abonai.
Dirijarea (rutarea)
Algoritmii de rutare, referii ca i protocoale la nivel reea, permit ghidarea pachetelor de date prin
subsistemul de comunicaii, de la surs la destinaie. In reelele de tip datagram, dou pachete succesive ale
aceluiai utilizator pot traversa diverse rute, pentru fiecare pachet individual fiind necesar o decizie de rutare. In
reelele cu circuite virtuale, decizia de rutare este luat la conectare.
Intr-o reea, rutarea presupune o colecie de algoritmi care lucreaz mai mult sau mai puin independent
pentru schimbul de servicii i informaii [Ber92]. Complexitatea este determinat de mai muli factori. In primul
rnd, rutarea presupune coordonarea ntre nodurile unei subreele, chiar dac acestea nu sunt adiacente. In al doilea
rnd, sistemul de rutare trebuie s fac fa la defectele legturilor i a nodurilor, cernd redirijarea traficului i o
actualizare a bazei de date a sistemului care conine informaii cu privire la legturi i noduri. In al treilea rnd,
pentru a asigura o performan ridicat, algoritmii de rutare trebuie s-i modifice rutele, cnd anumite zone ale
reelei devin congestionate.
Principalele funciuni asigurate de algoritmii de rutare sunt selecia rutelor pentru diferite perechi originedestinaie i livrarea mesajelor la destinaia lor corect, odat ce rutele sunt selectate. A doua funciune este implementat
utiliznd o varietate de protocoale i structuri de date (cunoscute ca i tabele de rutare). In acest capitol ne vom concentra
eforturile asupra primei funciuni(selectarea rutelor) i a modului n care afecteaz ea performana.
Celelalte protocoale indicate n figur la nivel aplicaie sunt: Telnet-pentru legarea la calculatoare aflate la
distant, FTP-pentru transferul fiierelor, HTTP-protocol pentru documente Web, NNTP protocol pentru grupuri de
discuii, DNS-protocol pentru nume de domenii, SNMP-protocol pentru gestionarea reelelor, SMTP-protocol pentru
pota electronic.
Alte protocoale sunt: Finger-protocol pentru vizualizarea utilizatorilor legai la un server, NFS-protocol
pentru organizarea i accesarea fiierelor n reea, RSVP-protocol de rezervarea resurselor pentru aplicaiile n timp
real i multimedia.
Aceast structur difer fa de structura definit de modelul OSI. Figura 11.3b compar cele dou
arhitecturi ntre ele, indicnd c dei ambele standarde folosesc un model pe nivele n definirea funcionalitii
mediilor reea, limitele i definirea exact a nivelelor difer. Mai mult, nivelul OSI a definit i nivelele superioare ale
modelului (Prezentare, Sesiune, Aplicaie) (Figura 11.3.b)
trimiterii unui cadru IP de-a lungul unei reele fizice la un nod reea destinaie. Nivelul NAP este aproximativ
nivelelor OSI fizic, legtura de date i o parte din nivelul reea. Principala funcie a nivelului NAP este de a ascunde
nivelelor superioare toate detaliile de implementare reea. Nivelul IP poate fi comparat cu nivelul reea. Dirijarea,
fragmentarea i adresarea sunt sarcinile principale ale acestui nivel. UDP i TCP au grij de majoritatea
funcionalitilor gsite n nivelele transport i sesiune ale ierarhiei OSI .
Protocolul IP
A fost gndit de la bun nceput pentru a fi utilizat n sisteme interconectate de reele de calculatoare care
folosesc comutarea de pachete. IP, spre deosebire de X25 care e orientat pe conexiune, asigur transmiterea de
pachete de la surs la destinaie, sursa i destinaia fiind calculatoare gazd (host computer) identificate prin adrese
de lungime fix. IP asigur de asemenea fragmentarea pachetelor mai lungi dect dimensiunea maxim a unui cadru
ce poate fi transmis ntr-un anumit tip de reea. Nu trebuie uitat c sursa i destinaia se pot gsi n reele diferite i
c un pachet poate strbate cteva reele pn la destinaie.
IP nu garanteaz ajungerea la destinaie a pachetelor i nu asigur secvenierea blocurilor de date. Aceste
servicii sunt realizate de protocolul situat la nivelul imediat urmtor (TCP).
Specificarea protocolului IP nseamn definirea interfeei cu nivelul imediat superior nivelului transport i
cu cel aflat sub el. Singura presupunere pe care o face IP n legtur cu protocolul legtur de date este c exist o
modalitate de transfer pachete de informaie de la un nod la altul adiacent, n aceeai reea.
Nu se face nici un fel de presupunere privind calitatea legturii de date, tratarea i corectarea erorilor fiind
atribute ale nivelului transport.Transmiterea unui pachet ntre dou aplicaii ce ruleaz pe 2 calculatoare aflate n
reele distincte, ntre care exist o poart gateway se face astfel:
Aplicaia ce dorete transmiterea unui bloc de date face un apel ctre propriul modul Internet dndu-i ca
parametri adresa blocului n memorie i adresa destinaiei.
Modulul IP pregtete un antet specific care va fi ataat blocului de date formnd astfel un pachet.Tot el gsete
adresa imediat de destinaie, adic adresa porii n cadrul reelei surs. Pachetul astfel pregtit este transmis
interfeei locale de reea, care va aduga la rndul su un antet specific i l va trimite porii.
Interfaa local de reea din cadrul porii va prelua cadrul, va detaa antetul reelei locale i-l va transmite
modulului Internet.
Modulul Internet din poart va deduce din adresa destinaiei finale, prezent n antetul IP, urmtoarea adres
imediat (adresa final). Printr-un mecanism similar pachetul va ajunge la modulul Internet din destinaie.
Modulul Internet va elimina antetul propriu, prednd blocul de date aplicaiei destinaie, la cererea acesteia.
Nivelul IP vede reeaua ca o colecie de mai multe reele fizice interconectate de ctre rutere IP, prin
tradiie, numite pori IP. O poart IP este definit aici ca un nod de reea care conine interfeele la reelele fizice pe
care le conecteaz i un nivel IP care primete pachetele de date i le trimite mai departe reelei fizice corecte.
Nivelul IP ntr-un nod reea transmite un pachet de date prin ncapsularea lui ntr-un cadru IP i cere unuia dintre
nivelele NAP s transmit cadrul IP. Combinarea gazdelor IP i a porilor formeaz un nivel de reea virtual care
ofer ca i serviciu principal transport a pachetelor de date ntre oricare dou noduri reea IP n reeaua IP. Figura
11.4 arat o configuraie tipic de reea IP.
Patru reele fizice sunt interconectate prin cinci pori IP. n acest exemplu sunt artate dou aspecte
importante ale reelei IP. Se vede c pot exista mai multe ci ntre un nod de reea IP emitor i un nod de reea
receptor. De asemenea, se poate remarca faptul c reelele fizice pot fi realizate din medii diverse de transmisie i
astfel apare necesitatea conversiei semnalelor ntre aceste medii. Ambele aspecte sunt rezolvate de ctre nivele IP ale
nodurilor reea IP i de ctre porile IP. Aceasta se face transparent pentru utilizatorii de servicii IP.
Adresarea IP
Fiecrui nod de reea, ntr-o reea IP, i se asigneaz o adres IP unic. Cnd un nod IP este conectat la mai mult
de o reea fizic, nodul are o adres IP, pentru fiecare conexiune la o alt reea fizic. O adres IP const dintr-un
numr pe 32 de bii
Biii din primul cmp indic dac adresa face parte din clasele (Figura 11.5) A, B, C sau dac este o adres
multicast. O clas A de reele poate conine pn la 224 gazde, o clas de reele B pn la 216 gazde i o clas de reele
11
Forma multicast a unei reele IP este folosit cnd o gazd IP vrea s trimit articole de date unui grup de
gazde destinaie. n locul unei trimiteri explicite a articolului de date fiecruia dintre gazde din grupul destinaie
utiliznd schema de adresare, emitorul se bazeaz pe IP pentru a trimite un cadru IP tuturor gazdelor destinaie.
Aceast form de adresare este o adugare recent la protocolul IP.
Urmtorul lucru care trebuie avut n vedere este problema adreselor. Adresele IP (Internet Protocol) sunt pe
4 octei. Aceste adrese se scriu prin convenie n ceea ce se numete "notaia zecimal cu punct". n aceast form
fiecare octet este convertit ntr-un numr zecimal (0-255) iar ei sunt desprii unul de altul printr-un punct. Prin
convenie fiecare main gazd i ruter au o adres IP. n mod normal fiecare plac de reea trebuie s aib propria ei
adres de IP. Reelele IP sunt secvene continue de adrese IP. Toate adresele din reea au o parte numeric identic.
Acea parte comun la toate adresele din reeaua respectiv este numit partea de reea (network portion) iar partea
rmas este numit parte gazd (host portion). Numrul de biti care sunt mprii de toate adresele din reea sunt
numii masca reelei (netmask). Rolul matii este de a determina care adrese aparin reelei pe care se aplic i care
nu. Astfel, spre exemplu avem:
Adresa calculatorului gazd:
93.226.40.18
Masca reelei:
255.255.255.0
Poriunea reelei:
93.226.40.
Poriunea gazd:
.23
Adresa de reea:
193.226.40.0
Adresa de broadcast:
193.226.40.255.
Adresa de broadcast este o adres mai special care este ascultat de toate calculatoarele din reea. n
general acest adres este cea mai mare adres din reea. Important este ca toate calculatoarele s fie configurate pe
aceeai adres de broadcast
Protocolul IP folosete o schem de adresare care face posibil identificarea fiecrui calculator conectat la reea
prin intermediul unei adrese unice. Pe undeva, s-a ncercat modelarea situaiei existente n societatea uman, situaie n
care fiecare persoan de pe glob este identificat n mod unic printr-un buletin (carte) de identitate. In continuare vom
ncerca s vedem modul n care este rezolvat pe nternet problema adresei unice. De la nceput trebuie spus c adresa nu
se refer neaprat la un calculator ci la o anumit conexiune pe Internet. Mai clar spus, fiecare plac de reea ataat la
Internet trebuie s aib o adres unic. In realitate, un calculator poate conine mai multe plci de reea. Aceasta nseamn
c un calculator conectat la Internet poate avea cteva adrese IP valide. O mare parte din literatura referitoare la reeaua
Internet discut despre adresele IP ca aparinnd calculatorului i nu plcii de reea.
In continuare vom adopta aceeai metod de referire. Ca i programator de aplicaii Internet trebuie neles
foarte clar c o adres identific o conexiune i nu calculatorul n sine.
Deci, practic, adresa unei conexiuni este reprezentat pe 32 bii (sau 4 octei) coninnd suficiente
informaii pentru a identifica n mod unic o reea i o conexiune la o reea. In cazul limbajului C, o adres IP poate fi
reprezentat prin intermediul unei date de tip long int. In general, pentru specificarea adreselor IP se folosete
notaia dotted-decimal. In cadrul acestei convenii, adresele IP se reprezint pintr-o serie de numere (n baza zece)
separate prin puncte.
Este de la sine neles faptul c notaia zecimal cu punct (dotted-decimal) vine n ntmpinarea nelegerii
ct mai simple a adresei de ctre cei care o citesc. Este mult mai greu s lucrm cu reprezentarea adreselor n format
binar sau hexa. Partea mai "complicat" apare n momentul n care se trece la decodificarea informaiilor cuprinse n
cadrul adresei.
Exist cteva adrese cu destinaie special. Astfel, adresa de forma 127.0.0.1 desemneaz o bucl local
("loopback"). Aceasta nu corespunde unei interfee i are rolul de a permite testarea sotware-ului de reea. Adresa
255.255.255.255 este folosit ca adres de broadcast local, adic orice calculator dintr-o reea local recunoate pe
lng adresa sa proprie i aceast adres. O adres de forma 176.58.255.255 nseamn broadcast la toate
calculatoarele din clasa 176.58.0.0, indiferent dac acestea sunt direct legate cu calculatorul surs sau nu (e de
precizat c o reea este desemnat de adresa care are toi biii corespunztori nodurilor pui pe zero).
Mai nou a fost introdus distincia ntre adrese publice i adrese private. Se numesc adrese publice cele care
sunt obinute de la autoritile de alocare a adreselor i sunt rutate pe Internet. Aceste adrese au caracter de unicitate,
n sensul c nici o adres nu este alocat multiplu. Datorit creterii explozive a conectrilor la Internet a aprut
preocuparea fa de epuizarea adreselor pe 32 de bii i una din soluiile adoptate pentru evitarea acestui fenomen a
fost s se rezerve cteva adrese care s poat fi utilizate intern(privat) de orice organizaie, fr a fi vizibile n afara
organizaiei(nu vor fi rutate n afara organizaiei). Astfel de adrese private sunt:
10.0.0.0-10.255.255.255 -reea de clas A 172.16.0.0172.16.255.255-reea de clas B 192.168.0.0.192.168.255.255-bloc de reele de clas C
12.
Structura pachetului IP
Principalul serviciu oferit de ctre nivelul IP este serviciul de transport al unui articol de dat de la un nod
IP surs la unul destinaie. Pentru aceasta, articolul de dat este ncapsulat ntr-un pachet IP. Un astfel de pachet
poate fi definit ca o secven de octei divizat n cmpuri. Unul dintre cmpuri conine octeii care formeaz
articolul de date. Celelalte cmpuri sunt folosite de ctre nivelele IP uzitate pentru a transmite cadrul la destinaia IP
corect i pentru reconstruirea articolului de date. De asemenea, uneori e necesar fragmentarea unui pachet cnd
acesta provine dintr-o reea cu o dimensiune mare a cadrului de date. Un pachet poate fi marcat " a nu se fragmenta"
i el va fi ndrumat pe o cale ce evit fragmentarea, iar dac nu se poate, va fi ignorat.
Fragmentarea trebuie s poat fi fcut ntr-un numr arbitrar de pachete i trebuie prevzut posibilitatea
de reasamblare corect,n secven, la destinaie. Acest lucru se obine prin interpretarea cmpurilor de flag-uri i
offset din cadrul antetelor Internet ale fragmentelor.
Un pachet IP are structura indicat n Figura 11.6.
Ver: Versiunea, identificator de 4 bii, coninnd versiunea protocolului IP al acestui cadru. Prin verificarea lui
Ver-id, un nivel protocol nivel IP poate implementa mai multe versiuni ale protocolului IP.
Versiunea curent este
13
4(IPv4). S-a propus pentru Internet un protocol mbuntit cruia i s-a dat numele de IPv6(IP versiunea 5 era deja
utilizat pentru un protocol pentru fluxuri n timp real). Adresele surs i destinaie la acest nou protocol au lungimi
de 16 octei, deci un spaiu de adrese practic nelimitat. Pentru scrierea adreselor pe 16 octei se folosesc grupuri de
cte patru cifre hexazecimale cu semnul: ntre grupuri.
IHL: cmp de 4 bii care d lungimea antetului din cuvintele de 32 de bii. Acest cmp este cerut din cauza
lungimii variabile a cmpului opiune. Dac nu este prezent nici un cmp opiune, valoarea minim a cmpului va fi
5.
TOS: Tipul serviciului, cmp de 1 octet, specificnd tipul de serviciu cerut de acest cadru. Biii 0-2
specific precedena cadrului care e de la 0 (normal) - 7 (control reea).
Bit 3 - indic cerere pentru ntrziere mic (D-delay)
Bit 4 - indic cerere pentru debit mare (T-traffic)
Protocolul IPv6
Odat cu creterea numrului de utilizatori , precum i cu apariia noilor aplicaii multimedia forma curent
a protocolului IP(versiunea 4) nu mai poate satisface noile cerine. De asemenea odat cu creterea numrului de
echipamente portabile(calculatoare i telefoane mobile), e necesar ca acestea s poat comunica fr restricii,
indiferent de aplicaii. Totodat convergena industriilor comunicaiilor, calculatoarelor i a celor mas-media face
stringent schimbarea IP-ului actual. Obiectivele majore ale noii versiuni au fost:
s suporte mai multe gazde;
s reduc dimensiunea tabelelor de dirijare;
s simplifice protocolul, pentru a permite ruterelor procesarea mai rapid a pachetelor;
s asigure o securitate mai bun;
s acorde o mai mare atenie pentru datele aplicaiilor n timp real; s
ajute trimiterea multipl prin permiterea specificrii de domenii; s
permit migrarea unei gazde fr schimbarea adresei sale;
problem prin conversia adreselor. Acestea transform adresa IP ntr-o adres a nivelului
legtur de date i invers.
15
rata erorilor;
ntrzierea de desfiinare a conexiunii;
probabilitatea de eec la desfiinare a conexiunii;
nivelul de protecie;
prioritatea, conform creia unele conexiuni sunt servite naintea altora;
rezilierea, care d posibilitatea ca nivelul transport s nchid o conexiune datorit unor probleme interne;
erorile netratate;
probabilitatea de eec la tratarea erorilor;
posibilitatea de transmitere expeditiv a datelor.
Calitatea serviciului se negociaz la stabilirea conexiunii. Atingerea acestor performane depinde n mare
msur de tipul subreelei utilizate, funcie de care nivelul transport trebuie s realizeze un numr mai mare sau mai
redus de funcii. Astfel n cazul unor subreele fr erori, nivelul transport nu trebuie s realizeze corecii ale
transmisiei n timp ce n cazul unor erori semnalate sau nesemnalate de reea aceste corecii sunt necesare. Este deci
normal s existe mai multe clase de servicii de transport i corespunztor mai multe clase de protocoale.
Una din funciile importante a nivelului transport este multiplexarea conexiunilor. Multiplexarea "n sus"
const n utilizarea unei conexiuni reea ca suport al mai multor conexiuni de transport. In acest fel se utilizeaz mai
eficient reeaua n care traficul pe fiecare conexiune de transport este redus.
Multiplexarea "n jos" const n utilizarea mai multor conexiuni de reea pentru o singur conexiune de
transport astfel nct se urmrete viteza de transmitere a datelor n cazul unui flux ridicat.
La fel de important este controlul fluxului datelor, aspect ntlnit i la nivelul legturii de date.
Complexitatea acestuia, n contextul nivelului transport este determinat de numrul mult mai mare de conexiuni
gestionate i de intervalele de timp mult mai mari n care mesajele trebuie pstrate pentru eventuale retransmiteri.
10.
Conexiuni TCP
Nivelul TCP este o alternativ la nivelul UDP, utiliznd conceptul de conexiune pentru a lega transmitori i
receptori ai serviciilor TCP. Cnd crem o conexiune ntre doi utilizatori, nivelul TCP asigur un port TCP ambelor capete,
fiecare identificate printr-un numr de port. Combinaia de adrese IP i de porturi TCP identific din nou conexiunea TCP
n mod unic. Utilizatorii de servicii la ambele capete de conexiuni primesc i trimit articole de dat prin porturile TCP.
Nivelul TCP nu structureaz articolele de dat trimise de ctre utilizatorii de servicii. Un utilizator de servicii trimite
articole de dat de-a lungul conexiunii care sunt vzute de ctre nivelul TCP ca un ir de octei.
Prin stocare i fragmentare, nivelul TCP formateaz articolele de dat n pachete TCP i le remit nivelului
TCP receptor. Acolo, data este receptat ca un ir de octei. Conexiunea TCP lucreaz ca o conexiune full-duplex
astfel nct ambele capete ale conexiunii TCP pot trimite i primi date n mod concurent.
Este de responsabilitatea utilizatorilor serviciilor TCP s recunoasc formatul articolelor de dat trimise dea lungul unei conexiuni TCP.
Este un protocol fiabil de comunicare ntre procese aflate ntre calculatoare interconectate, folosind
comutarea de pachete. Este orientat pe conexiuni i se situeaz la nivelul transport din ierarhia OSI.
TCP presupune c la nivelul imediat inferior (reea) exist o modalitate, chiar neglijabil, de transmitere a
pachetelor n reea. El a fost gndit ca avnd la nivelul reea un modul Internet (IP) dar poate funciona i cu alte
protocoale. Interfaa dintre modulul TCP i modulele de nivel superior se face prin apeluri similare celor pe care un
sistem de operare le ofer pentru manipularea fiierelor.
fiabilitate
Modulul TCP trebuie s refac datele din pachetele eronate, s in cont de pachetele pierdute, de cele duplicate
sau transmise n alt ordine de sistemul de comunicaii de la nivelul reea. Pentru aceasta fiecare pachet primeste un numr
de secven i necesit confirmare de primire. Dac nu e primit confirmarea ntr-un interval maxim de timp, datele
neconfirmate sunt retransmise. Numerele de secven servesc att la refacerea fluxului de date ct i la eliminarea
pachetelor duplicate. Deci att timp ct modulele TCP funcioneaz corect i sistemul de reele nu devine complet
partiionat, erorile mediului fizic de propagare a datelor nu vor influena corectitudinea fluxului de date.
17
Serviciile de fiabilitate i control al fluxului de date impun unui modul TCP s menin pentru fiecare flux
de date anumite structuri de control (soclu, numere de secven, dimensiunea ferestrei de comunicaie). O conexiune
este definit de structurile de control din cele dou procese ce comunic prin fluxuri de date. Deci pentru a stabili o
conexiune ntre dou procese ce doresc s comunice, modulele TCP proprii trebuie mai nti s stabileasc o
conexiune (canal de comunicaie), ceea ce nseamn iniializarea celor dou structuri de control cu valori corelate. In
acest scop are loc un dialog prealabil ntre cele dou module TCP, pentru iniializarea structurilor de control.
Un modul TCP pune la dispoziie dou funcii de deschidere de conexiuni, una activ, de iniiere a
conexiunii, alta pasiv, de rspuns la orice cerere de stabilire de conexiune.
e) prioritate i securitate
Utilizatorii modulelor TCP pot indica nivelele de prioritate i de securitate pentru transferul de date. Pentru
transmiterea datelor modulele TCP folosesc pachete IP.
Fiecare pachet va conine dup antetul IP, un antet TCP cu informaii specifice acestui protocol. Formatul
mesajelor TCP este cel din figura 11.7.
Multe aplicaii care acioneaz ca utilizatorii de servicii ai stivei TCP/IP utilizeaz serviciile nivelului TCP
ca i un punct de intrare n stiva TCP/IP. Serviciile oferite de ctre nivelul TCP ascund majoritatea detaliilor de reea
serviciului utilizator i ofer servicii de transport, orientate pe flux, corecte.
Aplicaiile pot stabili o conexiune "egal la egal" de-a lungul reelei IP. Datorit caracteristicilor de control al
fluxului de niveluri TCP, folosirea serviciilor TCP duce la o utilizare eficient a lrgimii de band a reelei
disponibile. Numai aplicaiile care utilizeaz serviciile protocolului UDP sunt capabile s opereze folosind servicii
de comenzi fr conexiune.
In documentul original al DOD/DCA care definete stiva TCP/IP, au fost descrise un numr de aplicaii care
folosesc acest protocol. Aceste aplicaii includ FTP, SMTP, TELNET. Aceste aplicaii ar trebui s fie prezente n
orice implementare complet a stivei TCP/IP.
FTP este folosit pentru a schimba fiiere ntre noduri reea. FTP const dintr-o aplicaie client pe nodul
reelei care cere i o aplicaie server pe modul de reea ndeprtat.
Utilizatorul, cu ajutorul terminalului poate transfera n mod interactiv fiiere spre i de la nodul de reea
ndeprtat i nodul de reea local.
SMTP este un serviciu TCP utilizat pentru a interschimba mesaje ntre nodurile de reea folosind pachete IP.
Un pachet de control const dintr-un antet cu informaia despre partea trensmitoare i receptoare, ca i partea de
mesaj care conine mesajul potal curent. SMTP ofer facilitile de transfer mail. Pentru a construi o facilitate mail
complet, aplicaia utilizator-agent trebuie s fie prezent n toate nodurile de reea relevante. Un agent-utilizator
trebuie s fie capabil s creeze, citeasc i s mnuiesc mesaje e-mail.
TELNET este folosit pentru a conecta un nod de reea ca terminal la un alt nod de reea. Utilizatorul poate
folosi terminalul conectat la nodul de reea local pentru a se "log-a" la un alt nod de reea ndeprtat.
Porturi UDP
legturi UDP. Aplicaiile conectate la un port UDP iau parte la o conversaie ntr-o legtur tip
UDP.
19
Structura pachetului UDP este simpl n comparaie cu structura unui pachet IP.
pachet UDP: = {
Port Surs (octet 1:2)
Port Destinaie (3:4)
Lungime (5:6)
Verificare (7:8)
Data (9:...)
};
Cmpurile au urmtoarea semnificaie:
Port Surs: portul surs UDP;
Port Destinaie: portul destinaie UDP;
Lungime: lungimea pachetului UDP n octei;
Verificare: suma de control opional a ntregului pachet UDP;
Data: data propriu zis transportat de ctre pachetul UDP, n mod normal un pachet IP.
Un pachet IP este transportat la nivelul UDP destinaie ncapsulat n cmpul dat al pachetului IP. Pachetul
IP poate, de exemplu, fi transportat ntr-un cadru Ethernet. Intregul proces de ncapsulare este descris n figura 11.9.
{
:
Cmpuri Ethernet
:
{
:
Cmpuri IP
:
{
:
Cmpuri UDP
:
{
data UDP
}
}
}
}
Figura 11.9. Incapsularea unui pachet UDP
Principala funcie a nivelului UDP este de a aduga faciliti de conexiune serviciilor deja furnizate de ctre
nivelul IP. Aceasta face ca principalele caracteristici ale serviciilor nivelului IP s fie de asemenea prezente n
serviciile nivelului UDP. Datele trimise de-a lungul unei conexiuni UDP pot fi pierdute, pot conine erori, pot sosi
ntr-o ordine aleatoare (nu secvenial). Deoarece aceste probleme, ce pot apare, fac nesigur remiterea corect a
articolelor de date, apare necesitatea ca utilizatorii serviciilor UDP s trateze erorile ce apar n remiterea pachetelor
de date.
Un numr de aplicaii bine cunoscute utilizeaz serviciile UDP. Una dintre ele este protocolul de transport
fiier (TFTP-Triviale File Transport Protocol).
Serviciile oferite de ctre aceast aplicaie sunt adesea utilizate pentru a "bootstrap"-a un nod reea. Un mic
nucleu de software reea, incluznd Ethernet, IP, UDP i TFTP este rezident ntr-un astfel de nod reea. Serviciul acestui
nucleu este folosit pentru a ncrca alt software de-a lungul reelei. Acest software formeaz un set mai complet de servicii.
TFTP este construit n vrful nivelului UDP din cauza mrimii mici a implementrii UDP. El poate fi uor
21
Gestiunea configuraiei implic legarea prin puni i reconfigurarea sistemelor utilizator precum i a
subreelelor, incluznd puni i rutere, gestionarea folosirii numelor i asocierea acestora cu adresele de reea. Acest
bloc este fundamental pentru buna funcionare a sistemului de gestiune a reelelor. El include urmtoarele funciuni:
gestionarea de atribute ale dispozitivelor, setarea i modificarea valorilor individuale, colective sau predefinite
ale acestora;
gestionarea iniializrii i a opririi n totalitate sau a anumitor pri din reea;
inventarierea sarcinilor de gestionare a unei organizaii care are construit o baz de date privind toate
echipamentele (modemuri i multiplexoare), precum i a circuitelor i echipamentelor logice;
actualizarea topologiei de gestionare prin identificarea tuturor relaiilor de interconectare;
schimbarea modului de gestionare a reelei i a elementelor de reea prin adugarea, tergerea i aducerea la zi a
informaiilor care s reflecte schimbrile fcute ntre diverse componente;
identificarea gestionrii directorilor i corelaiile tuturor numelor pentru un serviciu dat i permiterea
sincronizrii acestora cu baza de date.
Monitorizarea este necesar pentru a-l ajuta pe manager s vad performana curent a reelei i s o
urmreasc de la caz la caz, din or n or, zilnic, sptmnal sau lunar precum i n momentele de trafic maxim.
Gestiunea costurilor reelei ajut la definirea bugetului pentru reea. Utilizatorii sunt informai asupra
costurilor pentru resursele consumate precum i alocarea acestor costuri pe diverse departamente.
Gestiunea securitii reelei este necesar pentru monitorizarea i controlarea mecanismelor de protecie a
datelor. Aceasta asigur o continu protecie a cilor de comunicaie. Principalii parametri de securitate sunt:
confidenialitatea, integritatea i disponibilitatea (adic validarea numelor i controlul accesului). Funciile de
23
Pe de alt parte IBM, care folosete protocolul de gestionare NetWiew, a construit o poart pentru CMIP.
Ali productori, precum DEC, au creat ceea ce se numete management integrat de reea (EMA - entreprise
management arhitecture).
Acest concept este foarte important n condiiile gestionrii integrate a informaiei de toate tipurile (voce,
date i imagini) pentru toate tipurile de echipamente (calculatoare, modemuri, multiplexoare, centrale telefonice,
reele LAN, dispozitive telefonice), protocoale standard i nestandard, de la diveri productori, baze de date
diferite, sisteme de aplicaii.
n NMS.
Scheme alternative includ o abordare distribuit, unde exist mai mult de un NMS n reelele gestionate i
activitile de gestionare reea sunt mprite ntre aceste staii.
Gestionarea, n cazul Internetului (Figura 11.14) se aseamn mult cu modelul OSI. Fiecare nod de reea
colecteaz date despre comportarea funciilor interne. Aceste date pot fi colectate folosind SNMP. O staie de
management reea poate comunica cu nodurile de reea gestionate i s extrag informaia necesar gestionrii
reelei. Pentru a face s funcioneze acest concept, fiecare nod trebuie s fie capabil s suporte cel puin o parte din
stiva TCP/IP i protocolul de management reea. Aceste cerine sunt uor satisfcute de ctre noduri de reea
complexe cum ar fi staii de lucru i alte echipamente.
25
HiperLan II: a fost proiectat pentru a administra infrastructura i distribuirea sistemelor wireless.
Opereaz la 5 GHz i banda este dedicat numai n Europa.
PAN
WLAN
WMAN
WAN
Standarde
Bluetooth
802.11a,11b,11g
802.16
GSM, GPRS,
HiperLAN2
MMDS, LMDS CDMA, 2.5-3G
Vitez
<1Mbps
2 pn la 54 Mbps
Peste 22
10 pn la Kbps
Mbps
Raz de
Mic
Medie
medieLung
aciune
lung
Aplicaii
Peer-to-Peer
Reele de
Acces fix
Acces PDA,
Device-to-Device
ntreprindere
Reele de
Telefoane mobile
campus
Tabel 11.1 Diferite tipuri de reele fr fir
HomeRF: este standardul pentru reelele la domiciliu. HomeRF este o specificaie industrial deschis.
Produsele compatibile HomeRF opereaz n banda de frecven gratuit de 2.4 GHz i utilizeaz tehnologia de
salturi de frecven.
Reele metropolitane WiMAX(Worldwide Interoperability for Microwawe Access)standardizate prin
standardele IEEE802.16; au fost proiectate pentru distane de pn la 100Km, pentru legturi cu vedere
direct(LOS-Line of Sight) sau fr(NLOS-Non Line of Sight), folosind frecvene ntre 0,7-66GHz, pe canale
liceniate sau fr licen. Se prevede c acest tip de reele va cunoate o puternic dezvoltare n urmtorii ani.
Nivelul legtur
de date
2
Nivelul fizic
Managementul subnivelului
MAC
Subnivelul PLCP
Managementul nivelului
Subnivelul PMD
fizic PHY
Tabelul 11.2 Modelul de referin OSI i reelele radio
Incapsularea datelor pe diferite nivele este ilustrat n figura 11.17. Se observ c avem o ncapsulare i la
nivel fizic.
Nivelul fizic
Nivelul fizic (PHY) acoper interfaa fizic ntre dispozitive i este in legtur direct cu transmiterea
irului de bii de-a lungul canalului de comunicare. Nivelul fizic este divizat n dou subnivele:
Subnivelul PLCP (Physical Layer Convergence Procedure) pentru ncapsularea datelor la nivel fizic;
Subnivelul PMD (Physical Media Dependent), pentru codificarea datelor i transmiterea lor pe canalele de
comunicaie.
27
Subnivelul MAC
La subnivelul MAC are loc ncapsularea datelor ce vin de la nivelul reea n cadre. Cadrele subnivelului
MAC ndeplinesc diverse funciuni i sunt de mai multe tipuri:
v de management(cadre de: informare-beacon, rspuns de prob, autentificare, deautentificare, asociere, reasociere,
dezasociere, de aciune) ;
w
de control(ACK, RTS, CTS, PS-POLL);
x
de date(Data, Null-Data, Qos)
Datele n reelele fr fir(la subnivelul MAC) sunt transmise n trei moduri:
r
date fr confirmare(Data, Data)
s
date cu confirmare(Data, rspuns Ack, Data, rspuns Ack,..)
t
date transmise dup anun RTS/CTS (RTS, rspuns CTS, Data, rspuns Ack, Data,..)
Subnivelului MAC folosete protocolul CSMA/CA (Carrier Sense Multiple Access with Collision
Avoidance). Deasemenea subnivelul MAC este responsabil de fragmentare i de criptare. Fiecare BSS are o adres
unic MAC pe 48 de bii i fiecare ESS are o lungime variabil a adresei.
Protocolul CSMA/CA este similar cu cel de la reelele Ethernet. Staia care are ceva de transmis ascult
mediul i cnd nu este nici o staie activ, aici este diferena fa de CSMA/CD ateapt un interval de timp aleator
nainte de a-i trimite datele monitoriznd n permanen mediul. Pierderile de vitez sunt datorate faptului c se
transmite dup intervale de ateptare aleatoare, dar acestea sunt compensate de retransmisii mai puine. Cu ct sunt
mai multe staii cu att este mai benefic aceast tehnic. Managementul nivelului MAC este responsabil de
sincronizare, managementul energiei, roaming i de MAC-MIB.
n standardul 802.11 subnivelul MAC, pe lng funciile obinuite, trebuie s se ocupe de fragmentarea
pachetelor, retransmiterea lor i confirmarea primirii lor. Nivelul MAC definete 2 metode diferite de acces:
DCF (Distributed Coordination Function) - funcie de coordonare distribuit
PCF (Point Coordination Function) - funcie de coordonare punctual
a)Funcia de coordonare punctual
Aceasta este o funcie opional pentru implementarea saltului de timp cum ar fi servicii de transmitere a
vocii i transmisii video. Aceast funcie este folosit pentru a iniia un punct de acces ca i un punct de coordonare.
n aceast funcie punctul de coordonare atribuie o prioritate fiecrui client ntr-o transmisiune a unui cadru.
b)Funcia de coordonare distribuit
n modul DCF o staie trebuie s verifice mediul nainte de a iniia transmiterea unui pachet. Ea ateapt ca,
pentru un anumit canal DIFS s devin nefolositor, apoi ateapt pentru un interval aleator de timp, timp backoff,
care are valori ntre 0 i valoarea lui CW (Convention Window-CW)(figura9.18).
c)Metoda de acces CSMA/CA
Principalele beneficii ale CSMA/CA sunt:
Reduce probabilitatea de coliziune unde este nevoie;
selectarea aleatoare a algoritmului Backoff dup o anumit ntrziere, rezolvarea acesteia prin
evitarea coliziunilor;
Fereastr de
PIFS
DIFS
Mediu ocupat
SIFS
Fereastr Backoff
Urmtorul cadru
Cuant de timp
Acces ntrziat
Date
SIFS
Destinaie
Ack
DIFS
Alte
Fereastr
Urmtorul MPDU
ntrziere de acces
29
EIFS (Extended IFS) este practic un IFS mai lung utilizat de o staie care a primit un pachet ce nu-l poate
nelege. Avem nevoie de acesta pentru a preveni coliziunile.
d)Problema nodurilor ascunse
Cele dou staii nu se aud, dar fiecare aude punctul de acces(figura 11.20).
Staie
Punct de acces
RTS
Raza RTS
Raza CTS
CTS
Date
Punct
de acces
Ack
Staie
Staie
RTS
Destinaie
Date
CTS
Ack
CW
Alte
NAV (RTS)
NAV (CTS)
Urmtorul MPDU
Acces ntrziat
Standardul
802.11a
Banda
802.11b
2,4GHz
802.11g
2,4GHz
802.11n
2.4 si
5Ghz
5GHz
Frec-vena Canale
Simultane
3008-13
555MHz
83,5
3
MHz
83,5
3
MHz
Dis-tana
(domeniul)
10-40m
Compati-bilitatea Interferen
Incompati-bila
Puine
HR-DSSS
11Mb/s
20-180m
OFDM
54Mb/s
20-180m
Compatibi-la cu
11g
Compatibi-la cu
11b
OFDM
Medie
de
15Mbps
Multe
Multe
IEEE 802.11 are dou subtipuri de autentificri: sistem deschis i cheie partajat. Autentificarea este fcut
ntre dou staii. De aici rezult c se poate face numai n cazul cadrelor unicast dar nu i la cele multicast.
Autentificarea sistemelor deschise: sistemul deschis este implicit algoritmul de autentificare i implic un
proces n 2 pai dup cum urmeaz:
A trimite o cerere de autentificare lui B
B trimite rezultatul napoi lui A
Dac punctul de autentificare a lui B specific sistem deschis rezultatul aciunii este reuit, altfel A nu
este autentificat.
Autentificarea cu cheie partajat: aceasta furnizeaz un grad de autentificare mai bun dect cea a
sistemelor deschise. Autentificarea cu cheie partajat suport autentificarea staiilor oricrui membru care tie cheia
secret partajat sau a unui membru care nu o tie. Cheia secret partajat se gsete n MIB-ul fiecrei staii ntr-o
form write-only i este accesibil numai coordonatorului MAC. Pentru staiile care folosesc autentificarea cheilor
partajate, trebuie s se implementeze WEP. Standardul 802.11 nu a specificat cum trebuie distribuite cheile fiecrei
staii. Cei patru pai de baz sunt urmtorii:
O staie trimite un cadru prin care cere autentificarea altei staii (sau unui punct de acces)
Punctul de acces folosete WEP pentru a genera un ir de octei ca i cerere de autentificare i rspunde lui
A.
Vector de initializare
RC4
Cheia secreta
31
IV
Secventa a cheii
WEP
PRNG
Text
cifrat
Text clar
Algoritm de integritate
Mesaj
Valoare de control
a integritatii
Text clar
RC4
IV
WEP
PRNG
Semnatura cheii
ICV
Algoritm de integritate
Text
cifrat
ICV=ICV
ICV
Mesaj
Pentru protejarea mpotriva modificrilor neautorizate, un algoritm de integritate (CRC-32) opereaz asupra
textului n clar pentru a produce ICV
La decriptarea datelor, vectorul de iniializare al mesajului primit este folosit pentru a genera secvena
necesar pentru decriptarea mesajului primit. Combinnd textul criptat cu o secven potrivit a cheii ne va furniza
textul original i ICV. Decriptarea este verificat executnd algoritmul de verificare a integritii asupra textului clar
refcut i comparnd ICV astfel rezultat cu ICV transmis odat cu mesajul. Dac ICV nu este egal cu ICV mesajul
a fost recepionat cu erori i este trimis un mesaj de eroare staiei transmitoare.
802.1x autentificarea clienilor se face printr-un server de autentificare extern(de obicei RADIUS sau, mai nou,
Diameter). Unele produse fr fir folosesc serverul de autentificare nu numai pentru simpla autentificare a
utilizatorilor, ci i pentru politici utilizator i funcii de control ale utilizatorilor. Aceste funcionaliti avansate pot
include asignare VLAN dinamic i politici utilizator dinamice.
Autentificarea 802.1x este un dialog ntre un sistem care dorete s se conecteze la serviciile reelei i reea.
Acest dialog folosete protocolul extensibil de autentificare EAP. 802.1x const dintr-un PAE (Port Access Entity) n
toate staiile (STA) i punctele de acces (AP), ncapsularea EAP a reelei (EAPOL) i un server de autentificare
RADIUS (AS) (figura 11.24.).
Dialogul de autorizare standard const n:
1. AP cere STA s se identifice folosind EAPOL (EAP over LAN);
2. STA i trimite identitatea la AP;
3. AP trimite mai departe identitatea STA la AS, prin intermediul EAP;
4. ntre AS i STA are loc un dialog de autentificare;
5. Dac dialogul este terminat cu succes, STA i AS partajeaz cheia de sesiune;
6. AS trimite cheia de sesiune la AP ntr-un atribut RADIUS precum i o parte a mesajului de acceptare a RADIUS.
7. AP d accesul portului su adresei STA a MAC ,i opional, permite o cheie WEP printr-un pachet EAPOL.
1.5.4.4
Pn la ratificarea standardului IEEE 802.11i, aliana WiFi a propus WiFi Protected Access(WPA) ca o
soluie interimar care s nlocuiasc criptarea bazat pe WEP. Dezvoltarea WPA face parte din eforturile WiFi
Alliance i IEEE de a oferi soluii de securitate puternice, bazate pe standarde i interoperabile. WPA a fost creat
pentru a fi compatibil, pe viitor cu standardul de securitate 802.11i ce va fi oferit de muli comerciani ca aducere la
zi(upgrade) pentru AP urile existente i plcile de reea fr fir.
WPA aduce mbuntiri securitii fr fir n mai multe moduri. In primul rnd adaug mecanismele de
autentificare care lipseau n implementrile WEP tradiionale. Autentificarea WPA poate fi realizat cu 802.1x sau
chei partajate. 802.1x ofer abilitatea de regenerare a cheilor, dar necesit un server de autentificare RADIUS
compatibil cu 802.1x/EAP. Folosirea cheilor partajate nu necesit un astfel de server, ns se pierd o parte din
funcionalitile de autentificare a utilizatorului.
Protocoalele folosite de WPA si RSN pentru implementarea securitii de acces sunt: IEEE 802.1x
EAP( Extensible Authentication Protocol) i RADIUS (Remote Authentication Dial-In User Service). Acestea sunt
sunt obligatorii pentru WAP i RSN.
WPA cere recodificarea cheilor de criptare folosind TKIP. WPA ncearc s fac referire i la probleme de
interoperabilitate.
1.5.4.5
schimbul de chei ntre client i AP. Cheile de criptare global sunt schimbate, printr-un anun
ctre toi clienii conectai, de ctre protocolul WPA.
33
A fost proiectat pentru a permite unele soluii pentru cteva probleme software i firmware ntlnite n
WEP. Schimbrile majore n cadrul WEP sunt:
un nou cod de integritate a mesajului (MIC ), generat cu algoritmul Michael. MIC este calculat cu textul MSDU,
adresele surs i destinaie i cmpul de prioritate MSDU, naintea fragmentrii n MPDU-uri. MIC asigur aprare
mpotriva atacurilor false;
din cauza limitrilor algoritmului Michael, au fost implementate un set de contramsuri. Din cauza limitrilor
hard, a fost imposibil folosirea unui algoritm mai puternic, dar totui aceast metod alternativ reduce
probabilitatea unui atac;
TKIP extinde vectorul de iniializare WEP(IV)( n principiu, este incrementat un numrtor la fiecare trimitere a
unui cadru) i utilizeaz aceasta la MPDU ca un TSC(TKIP Sequence Counter);
managementul de chei RSNA asigur o cheie temporar. Este aplicat o funcie de mixare la TSC i adresa de
transmitere(TA ). Aceasta asigur nu numai o cheie nou pentru fiecare secven trimis, dar previne i utilizarea
unor chei slabe, cu fluxul criptat, folosind RC4.
1.5.4.6
Protocolul 802.11i
Curnd dup succesul rsuntor al reelelor locale (LAN) fr fir, a devenit foarte evident lipsa securitii
acestora. Dup civa ani, a fost introdus un standard IEEE 802.11i(numit i WPA2) pentru a asigura o securitate
robust acestor reele. n cele ce urmeaz vom descrie mecanismele de autentificare, managementul parolelor,
protecia integritii i confidenialitii n cadrul acestor reele cu securitate robust.
mbuntirea principal a 802.11i pentru WLAN-uri este definirea unor reele cu servicii robuste de
securitate(RSN-Robust Security Netwok). Standardul IEEE 802.11i urmrete rezolvarea deficienelor asociate cu
confidenialitatea datelor n mediul fr fir.
O reea RSN este o reea sigur care permite crearea de asocieri n RSN (ARSN). O ARNS definete un numr de
trsturi cum ar fi mecanisme de autentificare mbuntite pentru staii, algoritmi criptografici i mecanisme de
ncorporare a datelor mbuntite care asigur confidenialitate crescut, numite CCMP i opionalul TKIP.
ntr-o reea cu securitate robust, IEEE 802.11i asigur funcii de protecie pentru secevenele de date,
802.1X asigur autentificarea i controlul porturilor, iar IEEE 802.11i i IEEE 802.1X colaboreaz pentru a furniza
managementul parolelor. Reelele capabile RSN adaug elemente speciale secvenelor lor, promovndu-le
capabilitile. n continuare nu se va discuta despre elementele de baz ale autentificrii 802.1x, ntruct acestea au
fost tratate anterior. Vom face o descriere a cheilor ierarhice din RSN-uri. Aceste procese se reunesc n protocolul
handshake pe 4 ci i a cheilor stabilite cu acestea. n final, se va aborda utilizarea cheilor generate n cele dou
moduri confideniale.
RSN-urile utilizeaz protocolul 802.1X pentru a asigura autentificare puternic , managementul cheilor i
controlul accesului. Aplicaiile variaz de la confidenialitate spre eviden, funcie de modelul de afacere. Asocierile
n problemele de securitate un aspect important l constituie cheile. Dac aceste chei sunt compromise sau
furate, nu mai putem vorbi securitate.
Exist dou tipuri de chei utilizate de protocoalele de criptare la nivelul legturii de date:
Cheile perechi (Pairwise keys), care protejeaz traficul ntre staie i punctul de acces;
Cheile de grup(Group keys) care protejeaz traficul broadcast sau multicast de la punctul de acces la clieni.
Cheile perechi sunt obinute din informaiile de autentificare, iar cheile de grup sunt create aleator i
distribuite la fiecare staie de punctul su de acces. 802.11i folosete dou protocoale de criptare i anume TKIP(tratat
anterior) i CCMP (care va fi descris mai jos). Ambele folosesc o cheie master pentru a obine cheile temporare cerute
pentru protecia cadrelor la nivelul legturii de date. Cheia master este cheia rdacin i trebuie protejat deoarece toate
celelate chei deriv din ea. n RSN contextul de securitate este definit de posesia cheilor cu via limitat. Fa de WEP, n
RSN sunt o mulime de chei care formeaz o ierarhie de chei i majoritatea acestor chei nu sunt cunoscute la nceputul
procesului de autentificare. Pentru c sunt create n timp real, ele sunt cunoscute i sub denumirea de chei temporare.
Aceste chei temporare pot fi actualizate(rennoite) din timp n timp, dar ntotdeauna sunt distruse odat cu
ncheierea contextului de securitate. RSN-urile folosesc diferite chei pentru diferite scopuri i pentru diferite nivele. n
fruntea ierarhiei cheilor perechi se afl cheia master pe 256 bii(Pairwise Master Key-PMK). n configuraiile WPA-PSK
cheia master este configurat, iar n configuraiile ce folosesc server de autentificare cheia master este calculat de srverul
RADIUS i trimis punctului de acces n atributul RADIUS. Din ea deriv patru chei diferite, fiecare pe 128 de bii i
anume: cheia utilizat la calcularea integritii mesajului EAPOL(KCK-Key Confirmation Key), cheia
Autentificarea utilizatorului
Dac ne conectm la un sistem de calcul trebuie (sau cel puin ar trebui) s existe un mod prin care s-l
convingem pe interlocutor asupra identitii noastre. Odat tiut identitatea, se poate verifica dac avem dreptul de
a intra n sistem. Acelai principiu se aplic cnd o persoan ncearc s comunice cu o alta: primul pas este acela de
a verifica dac persoana cu care se comunic este ntr-adevr cine susine c este. Deci, trebuie s existe un mod n
care s-i dovedeti identitatea. Procesul este numit autentificarea utilizatorului. Exist cteva ci de a obine aceast
autentificare.
Cel ce vrea s se conecteze va transmite un element de identificare pe care-l tie
numai el: o parol, un identificator de utilizator, un cod pin etc. Sau poate avea un element
specific cu care se poate identifica: un card magnetic, un smart card, un simbol etc. Se mai
pot folosi i proprietile biometrice; este un fapt bine cunoscut c amprentele digitale,
forma minii sau modelul retinal ale unei persoane sunt criterii bune de decizie. Acestea
35
perfecte: unii utilizatori legitimi vor eua inevitabil asupra identificrii, iar unii intrui vor fi acceptai ca autentici.
Alte tehnici includ msuri despre cum i tasteaz numele sau i scrie semntura, sau se ia n calcul locaia
utilizatorului.
1.6.2.2
Autentificarea datelor
Autentificarea datelor const din: faptul c datele nu au fost modificate (integritatea datelor) i faptul c se
tie cine este expeditorul (autentificarea datelor de origine).
a)Integritatea datelor.
Serviciul de integritate al datelor garanteaz faptul c, coninutul masajelor, care au fost transmise, nu a fost
atins de nimeni. Integritatea datelor n sine nu are un sens precis: nu te ajut s tii c datele pe care le-ai receptat nu
au fost modificate, doar dac tii sigur c i-au fost trimise direct de la persoana n cauz. De aceea, ntotdeauna ar
trebui combinat cu autentificarea datelor de origine. ntotdeauna ar trebui s fim n alert asupra posibililor intrui
n reea sau n sistemul de comunicaie. Un exemplu bine cunoscut este Internetul care conine universiti i
companii de pe ntreaga planet. Pota electronic de pe Internet nu ofer nici o securitate. n consecin, un
utilizator poate intercepta mesajele care sunt transmise de-a lungul liniei de comunicaie. Este foarte uor de citit i
de modificat corespondena electronic a unei persoane, care este privit n general ca fiind privat.
O persoan A transmite un mesaj unei persoane B. Poate exista un adversar care le poate intercepta mesajul.
Dac nu exist integritatea datelor, inamicul poate doar schimba mesajul i apoi s-l transmit lui B. B nu va observa
c mesajul a fost transformat i va presupune c A a scris ntr-adevr mesajul aa cum l-a primit el. Se poate afirma
c interceptarea pe fir este dificil. n general aceast interceptare este o problem de cost n sensul c este mult mai
uor de interceptat o linie telefonic dect un cablu coaxial. Interceptrile active de fire (modificare i apoi
retransmiterea mesajelor) sunt mult mai dificile dect interceptrile pasive de fire (doar ascultarea mesajelor).
b)Autentificarea datelor de origine.
Cineva dorete s se asigure c o persoan care susine c este transmitorul mesajului n sine, este cel
cruia i aparine n original. Dac A i trimite un mesaj lui B, dar inamicul intercepteaz mesajul i l retransmite lui
B susinnd c l-a transmis A, cum poate fi B sigur de originea datelor? O variant a acestei probleme este: inamicul
poate transmite lui B un mesaj susinnd c A este autorul. Mulumit criptografiei, exist tehnici de asigurare
mpotriva acestor tipuri de fraude.
1.6.2.3
Acceptarea originii
Acceptarea originii protejeaz mpotriva refuzului uneia dintre entiti care este implicat ntr-o convorbire,
de a participa n totalitate sau parial la comunicaie. Acceptarea unei dovezi a originii, protejeaz mpotriva oricrei
intenii a transmitorului de a respinge trimiterea unui mesaj, n timp ce acceptarea unei dovezi a livrrii, protejeaz
mpotriva oricrei tentative a destinatarului de negare, falsificare a mesajului recepionat. Un exemplu va ilustra
importana acceptrii originii. Presupunem c B este proprietarul unei companii de coresponden prin mail. Pentru
el este foarte important s poat arta unei a treia pri c A ntr-adevr a cerut lucrurile pe care le presupune el,
altfel, i-ar fi foarte uor unui client s nege achiziionarea bunurilor. n limbajul cuvintelor scrise pe hrtie,
acceptarea originii este furnizat de semntura manual.
1.6.2.4
Confidenialitatea datelor
Acest aspect al securitii datelor este cu siguran cel mai vechi i mai cunoscut. Exemplul cifrului lui
Caesar, dat n introducere demonstreaz acest lucru. Confidenialitatea a fost considerat a fi mult mai important
dect autentificarea, att din punct de vedere al datelor ct i din punct de vedere al transmiterii. Astfel o scrisoare
era scris lizibil, cu un sigiliu i o semntur. Cu ajutorul confidenialitii datelor, ne protejm mpotriva dezvluirii
neautorizate a mesajelor. Dac A trimite un mesaj lui B pe care l intercepteaz un inamic, se dorete ca inamicul s
nu poat nelege niciodat coninutul mesajului.
Confidenialitatea datelor este foarte important in lumea medical i de asemenea n sectorul bancar. n
ntreaga lume se fac mii de tranzacii n fiecare zi i toate acestea trebuie trecute de la o instituie financiar la alta.
Dac nu exist nici un mod de a proteja confidenialitatea, toat lumea ar fi n msur s vad ce s-a tranzacionat i
cine a cumprat i ce retrageri au avut loc, i aa mai departe.n mod evident ar avea loc violri de intimitate asupra
indivizilor i asupra companiilor. Pentru a furniza confidenialitate, este necesar cifrarea mesajelor.
b)Criptare simetric.
n acest moment, cel mai mare numr care a fost factorizat are o lungime de
aproximativ 512 (1997). Din acest motiv, lungimea minim absolut a cheilor sistemului RSA
trebuie stabilit la 640 bii; 768 sau 1024 bii sunt necesari pentru orice sistem care cere
securitate pentru mai mult de cteva luni.De fapt exist un al treilea tip de algoritm
criptografic, numit funcie hash sau message digest. Spre deosebire de tipurile anterioare,
folosirea unei funcii hash nu
37
implic folosirea unor chei. In loc de aceasta, ideea este de a mapa un mesaj lung ntr-un mesaj de o anumit
lungime fix, analog felului n care o funcie hash obinuit mapeaz valori dintr-un spaiu larg n valori ntr-un
spaiu ngust. Aceast metod calculeaz o sum de control criptografic (cryptographic checksum) a unui mesaj.
Asta nseamn c, aa cum o sum de control obinuit protejeaz destinatarul de schimbri accidentale ale
mesajului, o sum de control criptografic protejeaz destinatarul de modificri maliioase ale mesajului.
Aceasta deoarece toi algoritmii de criptare prin repetiie sunt alei astfel nct s aib o sum de control
unic pentru un mesaj i deci este aproape imposibil s gseti ce mesaj a produs acea sum de control. Cu alte
cuvinte, nu este computational fezabil s gseti dou mesaje care prin repetiie s te duc la aceeai sum de control
criptografic. Relevana acestei proprieti este c dac primeti o sum de control pentru un mesaj (mpreun cu
mesajul), i eti capabil s calculezi exact aceeai sum de control pentru mesaj, atunci este foarte posibil ca acel
mesaj s fi produs suma de control primit.
Dei nu-l vom descrie n detaliu, cel mai folosit algoritm pentru a calcula suma de control este MD5(Message
Digest versiunea 5). O proprietate important a algoritmului MD5, n plus fa de cele enumerate mai nainte, este c
e mult mai eficient de calculat dect DES sau RSA.
Sistemul RSA este de tip exponenial. n criptosistemul RSA cu cheie publica, un participant creeaz cheia
sa publica i secreta prin urmtoarea procedur:
1. Se selecteaz aleator dou numere prime mari, p i q. Acestea ar putea avea, de exemplu 100 cifre zecimale.
2. Se calculeaz n prin relaia n=pq.
3. Se alege un numr d relativ prim cu (n) (unde (n) este indicatorul lui Euler, iar n cazul de fa va fi egal cu
(n)=(p-1)*(q-1) i d n intervalul [max(p,q)+1, n-1].
4. Se calculeaz e ca fiind inversul lui d modulo (n) ( pentru calculul lui e se poate utiliza o versiune extins a
algoritmului lui Euclid).
5. Se declar perechea P=(e,n) drept cheie RSA public.
6. Se menine secret perechea S=(d,n), care este cheie RSA secret.
Schema poate fi folosit cu succes ntr-un criptosistem cu chei publice astfel: se vor
face publice e i n, iar d va fi inut secret. n consecin, cheia public este format din
perechea (e,n) iar cheia privat din perechea (d,n).
39
Deoarece cifrarea i descifrarea sunt funcii mutual inverse, metoda RSA poate fi utilizata att la
secretizare, ct i la autentificare. Fiecare utilizator A obine modulul n A i exponenii eA i dA. Apoi A va nregistra
ntr-un fiier public cheia public (nA, eA), n timp ce va ine secret pe dA.
Un alt utilizator B va putea cripta un mesaj M utiliznd cheia public a lui A:
Mesajul criptat este CA(M)=M^eA mod nA (unde mod este restul mpririi lui M^e A la nA ,, iar semnul ^
este ridicare la putere)
La recepie A va obine mesajul clar prin decriptare:
DA(CA(M)) = (M^eA mod nA) ^dA mod nA = M.
Utilizatorul A va putea semna un mesaj M ctre B calculnd:
DA(M) = M^dA mod nA,
iar B va autentifica acest mesaj, utiliznd cheia public a lui A:
CA(DA(M)) = (M^dA mod nA) ^eA mod nA = M.
Obinerea mesajului la decriptare se bazeaz pe rezultate din teoria numerelor care arat c dac p i q sunt
prime i n=p*q atunci: x^ymod n=x^(y mod (p-1)(q-1))mod n.
Deci dac la criptare avem c= m^e mod n atunci la decriptare trebuie s obinem mesajul m conform
formulei m=c^d mod n.
(m^e mod n) ^d mod n= m^(e*d) mod n=
m^(e*d mod (p-1)(q-1)) mod n= utiliznd rezultatele din teoria numerelor m^1 mod n= deoarece noi am
ales e*d s fie divizibil cu z=(p-1)(q-1) m
Exemplu:
S considerm un exemplu care s ilustreze acest
algoritm: Fie p=5 i q=7 dou numere prime;
Produsul acestor dou numere inute secrete este n=5*7=35 iar z=(p-1)*(q-1)=4*6=24.
Fie e =5 astfel c e i z sunt relativ prime, va rezulta d=29 , astfel ca ed-1 s fie divizibil cu z
Pentru a cifra mesajul, M=RETEA, acesta se va mpri n blocuri de cte un caracter fiecare, unde A=00,
B=01, C=02,.D=03, E=04, F=05, G=06, H=07, I=08, J=09, K=10, L=11, M=12, N=13,O=14, P=15, Q=16, R=17,
S=18, T=19, U=20, V=21, W=22, X=23, Y=24, Z=25 i blanc=26: M=R E T E A = 17 04 19 04 00. Primul bloc se
va cifra ca 17^5 mod 35(1419857mod35=12) =12 etc. Criptograma obinut devine: C =12 09 24 09 00
La descifrare, fiecare liter n clar se obine folosindu-se cheia secret d:12^29mod 35(
19781359483314150527412524285952mod35=17)=17 etc.
Alegnd numere prime mai mari se pot obine chei mai puternice(de ex pentru p=53 i q=61 se obine
n=3233, iar pentru d=791 e devine=71 i n acest caz se pot grupa literele cte dou, deci pe 4 digii)
Un protocol simplu de autentificare este posibil cnd cei doi participani care doresc s se autentifice unul
pe cellalt - clientul i serverul - partajeaz o cheie secret. Aceast situaie este analoag cazului n care utilizatorul
(clientul ) are un cont pe un sistem (pe server) i att clientul ct i serverul tiu parola pentru acel cont.
Clientul i serverul se autentific unul pe cellalt folosind un protocol simplu "n trei faze". In continuare
vom folosi E(m.k) pentru a numi criptarea mesajului m cu cheia k iar D(m.k) pentru a numi decriptarea mesajului m
Un scenariu mai plauzibil este c cei doi participani nu tiu nimic unul despre cellalt, dar amndoi au
ncredere ntr-o ter persoan. Aceast ter persoan este cteodat numit server de autentificare i foloseste un
protocol pentru a ajuta cei doi participani s se autentifice unul pe cellalt. Sunt dealtfel mai multe variaiuni ale
acestui protocol. Cel descris aici este numit Kerberos i este un sistem bazat pe TCP/IP dezvoltat la MIT.
In continuare numim cei doi participani pe care dorim s-i autentificm ca fiind A i B i numim serverul
de autentificare S. Protocolul Kerberos presupune c A i B partajeaz o cheie secret cu S, iar cele dou chei le
noteaz cu Ka, respectiv Kb. Ca i nainte, E(m,k) semnific mesajul m criptat cu cheia k. Aa cum se vede n figura
11.30, participantul A trimite un mesaj serverului S care l identific pe el i pe B. Serverul genereaz o cuant de
timp T, un timp de via L i o nou cheie de sesiune K. Cuanta de timp T va fi folosit similar numrului aleator din
metoda anterioar i este de asemenea folosit mpreun cu L pentru a limita timpul pentru care sesiunea K este
valid. Participanii A i B vor trebui s se ntoarc la serverul S pentru a primi o nou cheie de sesiune
cnd expir acest timp. Ideea aici este de a limita vulnerabilitatea oricrei chei de sesiune.
41
K decriptnd prima parte a mesajului primit de la S). In final B decripteaz partea din mesajul primit de la A, criptat
iniial de ctre S i astfel recupereaz T, K i A. Se folosete K pentru a decripta jumtate de mesaj criptat de ctre A
i dup ce se constat c A i T se regsesc( sunt consistente) n cele dou jumti ale mesajului, se replic cu un
mesaj care cripteaz T+1 folosind noua cheie de sesiune K. A i B pot acum comunica unul cu cellalt folosind cheia
secret de sesiune K, pentru a asigura securitatea comunicrii. Serverul se mai numete i KDC-Key Distribution
Center-centru de distribuie a cheilor care dup cum s-a vzut acioneaz ca un intermediar ntre entiti.
1.6.5.3
O semntur digital este un cod special, necesar pentru pstrarea integritii mesajului, codul putnd fi
generat de ctre un participant unic. Algoritmul cel mai uor de neles este cel ce creeaz o semntur RSA, care
funcioneaz n mod evident- deoarece participantul este unica persoan care i cunoate cheia privat, el/ea
folosete acea cheie pentru a produce acea semntur. Oricare alt participant poate verifica acea semntur folosind
cheia public corespunztoare. Cu alte cuvinte, pentru a semna un mesaj el se cripteaz folosind cheia privat, iar
pentru a verifica semntura se decripteaz, folosind cheia public a presupusului expeditor. In mod evident aceasta
nseamn c producerea unei semnturi RSA este la fel de nceat ca i RSA care este, dup cum am vzut mai
nainte, de dou pn la trei ordine de mrime mai ncet dect DES. Observm c folosirea cheilor este exact invers
relativ la folosirea lor pentru asigurarea secretului; expeditorul cripteaz cu cheia sa privat n locul cheii publice a
destinatarului, iar destinatarul decripteaz folosind cheia public a expeditorului n locul cheii sale private.
S notm c s-a mai propus o semntur digital cunoscut ca DSS care este similar abordrii descrise,
exceptnd faptul c folosete un algoritm alternativ, numit ElGamal, n loc de RSA.
1.6.6.2
MD5 cu cheie
S ne amintim c MD5 calculeaz o sum de control criptografic pentru un mesaj. Aceast sum de control nu
depinde de o cheie secret, deci nu previne faptul ca un impostor s se pretind drept altcineva i s calculeze o sum de
control MD5 pentru acel mesaj. Totui, exist dou moduri de a folosi MD5 n combinaie cu un algoritm cu cheie public,
cum ar fi RSA, pentru a implementa integritatea mesajului. Ambele abordri depesc problemele de performan inerente
i b.
Destinatarul reface cheia aleatoare folosind cheia public RSA a expeditorului i apoi aplic MD5 asupra
concatenrii acestei chei aleatoare cu corpul mesajului. Dac rezultatul corespunde sumei de control trimis
mpreun cu mesajul atunci acesta a fost trimis de ctre participantul care a generat cheia aleatoare.
1.6.6.3
Cea de-a doua metod ce folosete MD5 mpreun cu RSA funcioneaz astfel:
expeditorul aplic MD5 asupra mesajului original pe care dorete s-l protejeze, producnd
suma de control MD5 i semneaz aceast sum de control cu propria sa cheie RSA. Dup
cum se vede, expeditorul nu semneaz ntregul mesaj ci doar suma de control. Se transmite
43
apoi mesajul original, suma de control MD5 i semntura RSA pentru suma de control transmis. Folosind notaia de
mai sus, aceasta nseamn c expeditorul transmite:
m + MD5(m) + E(MD5(m),privata).
Destinatarul verific mesajul, asigurndu-se c semntura este corect, prin decriptarea semnturii cu cheia
public a expeditorului i comparnd rezultatul cu suma de control MD5 trimis mpreun cu mesajul. Acestea dou
trebuie s fie egale.
SSL(Security Socket Layer), cu varianta mai nou TLS(Transport Layer Security) este utilizat ntre
navigatoarele de Web i serverele pentru e-comerce(shttp-secure http). Serviciile de securitate ale protocolului SSL
asigur: autentificarea serverului, criptarea datelor, autentificarea clientului(opional).
Sesiunea de autentificare a serverului:
SSL permite navigatorului includerea cheii publice pentru autoritatea de certificareCA; Navigatorul cere serverului certificatul trimis de autoritatea de certificare CA;
Navigatorul utilizeaz cheia public de la CA pentru a extrage cheia public serverului;
Viziteaz meniul de securitate al navigatorului pentru a vedea CA-ul su.
r
u
l
n
e
g
u
s
t
o
r
u
l
u
i
;
Poarta de primire.
Securitatea la nivel reea (NLS-Network Layer Security)
Trimite gazdei date criptate n pachete de tip IP.Autentificarea la nivel reea
se face de gazda destinaie care poate autentifica adresa surs IP. Exist dou
protocoale:Protocolul de autentificare a antetului( AH- authentification header) i
protocolul de ncapsulare a plii securizate (ESP-encapsulation security payload).
Dialogul surs destinaie pentru protocoale AH i ESP:
se creeaz la nivel reea un canal logic numit acord de serviciu;
Fiecare SA este unidirecional.
In mod unic determinat de:
protocolul de securitate(AH sau ESP);
adresa surs IP;
identificator de conectare pe 32 de bi
1. TEHNOLOGII XML
Autor: Robert Buchmann
trebuie executat, ca text ce trebuie formatat, ca structur de date ce trei interogat sau
transferat, ca structur de cunotine ce trebuie inferat. De asemenea, XML deservete
paradigma MVC (Model-View-Control), prin separarea coninutului informaional brut
(modelul de date) de forma de prezentare (viziunea) i de entitatea sau agentul de procesare
(controlul).
Perspectivele sunt legate de transformarea spaiului economic virtual ntr-un spaiu
semantic, subordonat paradigmei Semantic Web. n sfera aplicaiilor strict economice,
primele iniiative sunt legate de crearea taxonomiilor XBRL, care nu se limiteaz la a
modela structurile de date i conceptul unificat de raport, ci creeaz o baz de asociaii
semantice ntre structurile respective. Att modelul de date XBRL ct i baza de asociaii
semantice sunt create cu vocabulare XML. Mai departe, paradigma Semantic Web propune
o convergen ntre metode provenind din inteligena artificial i suportul existent al
tehnologiilor Web, dintre care XML garanteaz stratul de interoperabilitate sintactic.
XML (limbajul de marcare extensibil) este ncununarea eforturilor de impunere a
limbajelor de marcare ntr-o lung istorie a standardizrilor i a generaiilor de limbaje
formale. n prezent, popularitatea XML l cimenteaz la baza tuturor soluiilor software
moderne, avnd n vedere c orientrile actuale au n vedere distribuirea ct mai facil a
datelor pe principii colaborative, ntre orice tipuri de aplicaii, organizaii sau utilizatori.
Originile limbajului XML se gsesc n limbajul SGML (limbaj standard general de
marcare), care a stabilit i standardizat principiile limbajelor de marcare. XML se supune
acestor principii de aa natur nct documentele XML s poat fi considerate documente
SGML particularizate (cu constrngeri/reguli specifice aplicate peste principiile generale),
cu cteva excepii1. Din acelai SGML s-a dezvoltat, printr-un proces similar de
particularizare, i HTML (limbaj de marcare a hipertextului), folosit n general la
construirea documentelor hipertext i, n particular, la construirea paginilor Web.
Problema imediat care se ridic este nelegerea marcatorilor - trebuie garantat
faptul c att emitorul ct i receptorul mesajului sunt capabili s interpreteze marcatorii.
Acest aspect este condiia fundamental a interoperabilitii.
ntr-o definiie de lucru, putem afirma c marcatorul este un simbol sau un set de
simboluri care se aplic asupra informaiei pe care o nso esc i are scopul de a-i stabili ori
modifica:
formatul (modul de prezentare, de afiare) utilizare consacrat de marcatorii
HTML;
structura (relaia dintre componentele mesajului) utilizare consacrat de
marcatorii DIV i SPAN din HTML i de limbajul XML;
semantica (sensul, interpretarea, contextul) utilizare consacrat de marcatorii
META din HTML i de modelul RDF;
pragmatica (potenialul de utilizare, operaiile la care va fi supus) utilizare
consacrat de instruciunile de procesare din XML, dar i din alte limbaje.
n lucrul cu informaie marcat:
emitorul informaiei este creatorul acesteia (uman sau software);
receptorul informaiei poate fi un utilizator uman (preocupat de lizibilitate i
modul de prezentare) sau un receptor software (un program care proceseaz
Cazurile n care aceast incluziune nu este posibil apar datorit faptului c XML a fost
proiectat pentru utilizare internaional, deci suport seturi de caractere internaionale (nonASCII) n timp ce SGML a fost proiectat pentru setul de caractere de baz.
Tehnologii XML
7
8
Pret
10000
12000
Tehnologii XML
ListaFructe
Fruct
Denumire
Mere
Fruct
Pret
10000
Denumire
Pere
Pret
12000
sau:
<ListaPreturiFructe>
<Fruct
Denumire="Mere"
Pret="10000" /> <Fruct Denumire="Pere"
Pret="12000" /> </ListaPreturiFructe>
Tehnologii XML
Limbaj pentru marcarea definiiilor de documente, Document Definition Markup Language, prima soluie care
10
Tehnologii XML
11
12
NodeList
Element Node
<produse>
NodeList
Element Node
<produs>
NodeList
NamedNodeMap
Character Data
Text Node
AttrNode
ID=p01
Televizor
Tehnologii XML
13
14
Tehnologii XML
15
<xsl:template
match="/"> Text
oarecare
</xsl:template>
O foaie XSLT conine una sau mai multe reguli de substituire cu dou
componente:
match este calea Xpath a
elementelor care vor suferi substituia
coninutul lui xsl:template este
noul coninut care va intra n locul celui
detectat de match.
Urmtorul exemplu genereaz o list cu numele produselor de mai sus, separate
printr-o linie HTML (HR). Documentul XML original are o structur neregulat primul
produs are denumirea ntr-un atribut, al doilea l are n coninutul textual, al treilea l are
ntr-un element-fiu. Deci, chiar dac parcurgem cu un ciclu FOR cele 3 produse, va trebui
s implementm o structur CASE care s extrag denumirea n mod diferit de la caz la
caz, prin ci XPath relative la elementul curent (la care a ajuns ciclul FOR):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="/">
<xsl:for-each
select="comanda/produs">
<xsl:choose>
<xsl:when test="@denumire">
<xsl:value-of select="@denumire"/>
</xsl:when>
<xsl:when test="denumire">
<xsl:value-of select="denumire"/>
16
</xsl:template>
</xsl:stylesheet>
Structura CASE e definit cu xsl:choose. Aceasta conine un ir de variante
definite cu xsl:when (fiecare cu cte o condiie testat cu atributul test). Ultima variant
este xsl:otherwise (pentru cazul n care nici una din ramuri nu a funcionat).
XSLT folosete ci XPath RELATIVE la nodul pe care s-a pozi ionat
instruciunea-printe (cea cu match e printe pentru for-each, acesta e printe pentru choose
i when etc.). XSLT nu conserv implicit codul XML original. Dac dorim s se conserve
anumite elemente, trebuie s crem o regul de conservare care s substituie elementele cu
ele nsele:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template
match="/">
<xsl:copy-of
select="."/>
</xsl:template>
</xsl:stylesheet>
Aceast regul substituie elementul rdcin cu el nsui, producnd o copie a
documentului original.
Tehnologii XML
17
18
function modifica()
{
try
{
xhr = new
ActiveXObject("Msxml2.XMLHTTP") }
catch (e)
Tehnologii XML
19
try
{
xhr = new
ActiveXObject("Microsoft.XMLHTTP") }
catch (e)
{
xhr = false
}
Pagina conine un bloc DIV gol, care este completat la apsarea unui buton cu
textul primit de la server. Sintetizm n continuare componentele mecanismului XHR:
1. Crearea obiectului XHR
y are loc prin trei tentative de instaniere, datorit faptului c diverse browsere
implementeaz sub denumiri diferite clasa XMLHttpRequest.
2. Trimiterea de date spre server
z e asigurat de metodele open (dac se trimit variabile GET) i send (dac se
trimit variabile POST); n exemplul de fa open nu trimite nici o variabil, send trimite
caracterul null, aadar tot ce se transmite spre server e o solicitare a unui script PHP.
3. Generarea datelor de ctre server
aa
scriptul PHP nu primete date de la client, aa c exemplul poate fi
verificat cu un script simplu care genereaz un ir de caractere:
<?php
?>
20
are loc prin utilizarea datelor extrase din responseText; n acest caz,
valoarea sa este atribuit coninutului textual al marcatorului cu id=mesaj
Tehnologii XML
21
{
}
cadru=document.getElementById("cadruint")
cadru.src="scripturi.php?CodPostal="+cod
function citestedate(cdr)
{
documentcadru=cdr.contentWindow.document
raspuns=documentcadru.body.innerHTML
procesare(raspuns)
}
function procesare(rasp)
{
vector=rasp.split(",")
document.getElementById("TXoras").value=vector[0]
document.getElementById("TXjudet").value=vector[1]
document.getElementById("TXadresa").value=vector[2]
}
</script>
</head>
<body>
<iframe id=cadruint width=400 height=50 src=""
onload="citestedate(this)"> </iframe>
<h1>Introduceti datele</h1>
22
</tr>
<tr>
<td>Nume</td>
<td><input type=text id=TXnume ></td>
<td>CodPostal</td>
<td><input
type=text
onblur="trimite(this.value)"></td>
</tr>
<tr>
<td>Adresa</td>
<td><input type=text id=TXadresa size=50></td>
</tr>
<tr>
<td>Oras</td>
<td><input type=text id=TXoras ></td>
</tr>
<tr>
<td>Judet</td>
<td><input type=text id=TXjudet ></td>
</tr>
<tr>
<td></td>
<td><input type=submit value=Trimite ></td>
</tr>
</table>
</form>
</body>
</html>
id=TXcodpostal
Tehnologii XML
23
</produse>
Astfel, produse devine un vector de dou elemente, fiecare element fiind un obiect
cu cte dou proprieti. Insistm asupra faptului c valorile masive se enumer ntre
paranteze ptrate, iar proprietile obiectelor ntre acolade, fiind posibil orice combinaie
de imbricare ntre acestea (ex: vector de obiecte, obiect cu proprieti vectori, obiect cu
proprieti obiect, vector cu elemente vector etc.).
Se observ c ambele modele (XML i JSON) pot transpune n format text
serializat (ir de caractere) structuri de date arborescente sau obiecte.
Avantajele JSON sunt:
performana, atunci cnd se transfer strict seturi date (n schimb XML devine
esenial atunci cnd se transfer poriuni de documente ce vor fi manipulate prin
DOM, validate sau procesate de instrumente XML);
compatibilitatea cu obiectele JavaScript efortul de extragere a datelor din JSON
e minimal n JavaScript;
accesul facil la proprietile JSON prin sintaxa JavaScript, comparativ cu accesul
mai dificil la XML prin DOM/Xpath n exemplul JSON, al doilea pre poate fi
accesat prin produse[1].pret, n timp ce n exemplul XML ar fi necesar
parcurgerea vectorilor getElementsByTagName sau childNodes pentru nodul
rdcin, urmate apoi de solicitarea atributului pret cu getAttribute.
Suporterii JSON susin c oricum conceptele XML sunt inutile: spaiile de nume
devin inutile dac nu se mai folosesc marcatori iar validarea prin vocabulare e considerat o
delegare inutil a responsabilitiilor:
Principiul XML este c aplicaiile trebuie s fie restrictive la receptarea datelor
(datele fiind validate sau transformate conform regulilor unui vocabular predefinit
de destinatar) i permisive la generarea lor (fiecare aplicaie poate genera orice
structur de date XML);
Principiul JSON este c orice aplicaie trebuie s fie permisiv la receptarea
datelor i restrictiv la generarea lor, adic s poat prelucra orice structuri de
date primite i s fixeze nite reguli stricte pentru structurile de date generate;
Aa cum sunt necesare programe de tip parser pentru a converti un ir de caractere
XML ntr-un arbore de obiecte DOM, parserele JSON convertesc iruri de caractere JSON
n obiecte. Site-ul http://json.org ntreine o list la zi cu site-urile de la care pot fi procurate
parsere JSON pentru diverse limbaje de programare. Pentru JavaScript, parsingul se poate
face n mod nativ funcia eval() convertete un ir de caractere ntr-o expresie sau un bloc
de instruciuni JavaScript, aadar prin aplicarea funciei asupra unui ir JSON stocat n
responseText se obine chiar un obiect JavaScript, mult mai facil de accesat dect un arbore
DOM. Exist i parsere avansate pentru JavaScript, cu metode complexe de manipulare a
structurii JSON, dar acestea trebuie instalate i invocate ca biblioteci de funcii JavaScript
(vezi biblioteca http://json.org/json2.js). Conversia unui ir JSON n obiect se realizeaz n
JavaScript astfel:
24
n obiect
Aa cum exist protocoale orientate pe transferul de date XML (SOAP, XMLRPC), exist i protocoale de transport JSON (JSON-RPC). Mai mult, comunitatea JSON a
propus nlocuirea obiectului XHR cu un obiect similar, JSONRequest, optimizat pentru
transferuri JSON (la adresa http://json.org exist legturi spre instrumente de acest gen,
inclusiv o extensie add-on pentru Firefox ce implementeaz obiectul JSONRequest). n
contextul nlocuirii XML cu JSON ca format de transfer al datelor structurate, susintorii
JSON arat c pn i litera X din acronimul AJAX i pierde semnificaia. Dei exist o
tendin de migrare a modelului AJAX spre structuri de date JSON, XML rmne un
standard puternic cnd nu e vorba de structuri de date, ci de documente spre exemplu,
atunci cnd serverul genereaz marcatori XML ce trebuie integrai fr modificri direct n
arborele DOM al paginii.
Tehnologii XML
25
26
Cuvntul cheie new este opional (ca i var la declararea variabilelor), rolul su
fiind s indice un obiect nou creat.
Opiunile sunt enumerate n format JSON. Cele mai uzuale dintre ele sunt:
duration n secunde;
fps frecvena de afiare a strilor intermediare ale animaiei (numrul de afiri
pe secund, implicit 25);
sync boolean, pentru sincronizarea frecvenei de afiare la efecte simultane;
from punctul de start al efectului;
to punctul de stop al efectului;
Tehnologii XML
27
Efecte fundamentale:
Morph tranziie ntre un stil CSS i altul
Opacity modificarea transparenei
Highlight evideniere (colorarea/plpirea fundalului pentru atragerea
ateniei)
Move deplasare pe o direcie;
Scale dimensionare (mrire/micorare);
Parallel definirea unui set de efecte care s se execute sincron i simultan
Queues definirea unei cozi (succesiuni) de efecte
Efecte combinate: combinaii ale celor fundamentale, cu efecte similare celor
oferite de Powerpoint:
Appear, Fade, Shake, BlindUp, BlindDown etc.
Helpere:
Transitions, Methods, toggle, multiple
Comportamente:
Draggable, Droppable, Sortable, DelayedObserver
Comportamente avansate (controale GUI preprogramate):
InPlaceEditor, Autocompleter, Slider
WEB SEMANTIC
1.6.2.3
Paradigma Semantic Web reprezint o nou viziune asupra sistemului World Wide
Web, o nou arhitectur a informaiei disponibile n acest sistem i un nou mod de regsire
a acestei informaii, inspirate de domeniul inteligenei artificiale. Pe scurt, e vorba de o
convergen ntre:
principiile propuse n inteligena artificial nc din anii 70 (n special
subdomeniul sistemelor expert) n ce privete reprezentarea cunotinelor...
... i arhitectura modern a Web-ului, bazat pe colaborare i interoperabilitate.
Obiectivul Semantic Web este s transforme WWW ntr-o reea global de sisteme
expert, capabile s deduc n mod automat informaii noi din cele existente i s rspund
la ntrebri (interogri) formulate cu ajutorul a ceea ce azi numim motoare de cutare (care
e previzibil c vor evolua n motoare de interogare i ageni inteligeni capabili s
ndeplineasc sarcini i s atrag resurse n numele utilizatorilor). Pentru a se putea
ndeplini acest deziderat, datele disponibile n Internet trebuie s fie reorganizate n baze de
cunotine, fa de Web-ul actual, n care sunt stocate cu precdere n baze de date
relaionale sau XML. Semantic Web se bazeaz pe stocarea informa iei sub form de baze
de cunotine accesibile on-line, de regul folosind tehnologii de stocare din familia bazelor
de date de tip graf (modelul de date RDF).
Bazele de cunotine sunt alctuite din fapte i reguli.
Faptele sunt descrieri de concepte sau afirmaii simple despre un anumit subiect.
Practic, sunt propoziii cu structura de baz: subiect, predicat i complement.
Exemplu: Adrian este rud cu Andrei.
Regulile sunt construcii logice de tip Dac X, atunci Y (interpretat cadin premisa
X, se deduce concluzia Y, unde X i Y sunt fapte). Exemplu: Dac a este rud cu
b, atunci i b este rud cu a. Aceast regul va genera faptul Andrei este rud cu
Adrian de cte ori va ntlni afirmaia Adrian este rud cu Andrei. Avertizm
asupra faptului c uneori regulile pot fi mascate i n afirmaii ( axiome). Regula
din acest exemplu poate s arate i astfel:
Relaia de rud este una reciproc.
Semnificaia acestei afirmaii este aceeai cu a regulii de mai sus. Pentru a face
mai uoar formularea unor reguli populare i intens reutilizate (precum cea data de
reciprocitate), limbaje ca OWL sau RDF Schema ofer sintaxe standardizate ce permit
formularea de axiome ce pot fi interpretate ca reguli de ctre motoarele inferen iale, i
executate n consecin.
Este important ca principiile dup care se construiesc bazele de cuno tin e s fie
cunoscute nainte de a studia limbajele standard ce se folosesc n acest scop.
1. Principiul validitii implicite
Rspundere asupra corectitudinii cunotinelor revine celui care le creeaz, iar
riscurile revin celui care le utilizeaz (consum). Calculatorul nu de ine mecanisme
implicite de stabilire a msurii n care cunotinele stocate reflect realitatea, Semantic Web
30
Allemang, Dean and Hendler, James, Semantic Web for the Working Ontologist, Morgan
Kaufmann, 2011
Web Semantic
31
32
Aadar, principiul Open World interzice concluziile trase din absen a afirma iilor.
Se spune c lumea bazelor de date este de tip Closed World, iar lumea bazelor de
cunotine este de tip Open World.
Se poate remarca faptul c aceste principii au stat dintotdeauna la baza WWW.
Noutatea adus de Semantic Web este c ele nu se mai aplic doar la pagini Web, ci i
conceptelor despre care se vorbete n paginile Web!
...nu doar Andrei este resurs, ci i relaia de rud, precum i Adrian. Resursele
nu sunt doar conceptele despre care se fac afirmaii, ci toate conceptele despre care s-ar
putea face afirmaii!
n funcie de semnificaia lor, resursele pot fi de mai multe tipuri: proprieti
(utilizate n mod curent ca predicate n afirmaii, dar pot servi uneori i ca subiecte atunci
cnd facem afirmaii despre relaii/atribute), clase (mulimi de indivizi/instane),
indivizi/instane (elemente ale unor mulimi/clase). O ontologie este n general constituit
din axiome afirmaii ce descriu clasele, proprietile i modurile n care pot fi utilizate
mpreun. Axiomele sunt interpretate ca reguli (de tip Dac X atunci Y) a cror execuie
duce la producia de noi fapte. O baz de cunotine e format din ontologie i baza de
fapte (afirmaii despre indivizi aparinnd claselor declarate n ontologie).
Atunci cnd oamenii comunic unii altora cunotine, o fac cu ajutorul unor
termeni alocai conceptelor utilizate n afirmaii, termeni oferi i de un vocabular asupra
cruia interlocutorii se pun de acord. n mod similar, atunci cnd se stocheaz cuno tin e n
calculator, trebuie s se foloseasc o terminologie. La debutul ideii de Semantic Web exista
deja un sistem de alocare de identificatori lipsii de ambiguitate la nivel global: adresele
URL. Dac de exemplu pe serverul Yahoo exist mai multe fi iere pe care proprietarii
doresc s le fac accesibile, adresa se poate prelungi cu o structur virtual de foldere i
subfoldere sau locaii (fragmente) din interiorul unor documente:
http://www.yahoo.com/documente/fisier.doc
http://www.yahoo.com/diverse/muzica/piesa.mp3
http://www.yahoo.com/documente/CodulluiDaVinci.html#capitolul1
http://www.yahoo.com/documente/CodulluiDaVinci.html#capitolul2
Web Semantic
33
http://en.wikipedia.org/wiki/Brother
34
n lingvistic mai intervine i atributul dar, conform RDF, acesta poate fi substituit de
complement.
Web Semantic
35
http://expl.ro#Alin
http://expl.ro#Andrei
20
http://expl.ro#Alin
http://expl.ro#esteMamaLui
http://expl.ro#esteTatalLui
http://expl.ro#Andrei
_:X
http://expl.ro#areVarsta
20
36
http://expl.ro#Ana
http://expl.ro#locuiesteLa
_:adresa
http://expl.ro#inOras
http://expl.ro#ClujNapoca
http://expl.ro#laNr
20
http://expl.ro#inAp
http://expl.ro#peStrada
http://expl.ro#Bait
a
200
Modelarea corect n RDF pentru acest caz este urmtoarea: (a) Subiectul este
Marian; (b) Predicatul este crede; (c) Acesta predicat exprim relaia cu o afirmaie
(format la rndul su din Alin, relaia de frate i Andrei). Aadar
reprezentarea grafic ar arta mai degrab astfel:
http://expl.ro#Marian
http://expl.ro#crede
_:afirmatie
http://expl.ro#areSubiect
http://expl.ro#areObiect
http://expl.ro#areProprietate
http://expl.ro#Alin
http://expl.ro#Andrei
http://expl.ro#frateCu
Web Semantic
37
n primul caz avem o relaie de aritate 3 ntre Andrei, Matematic i nota 10. Se
creeaz n mod artificial un nod anonim care s grupeze cele 3 componente ale rela iei,
permind interogarea oricreia pornind de la celelalte:
http://expl.ro#Andrei
10
http://expl.ro#are
http://expl.ro#nota
_:relatie
http://expl.ro#curs
http://expl.ro#Matematica
N-triples10 este sintax brut de serializare RDF. Aceasta e cea mai primitiv
sintax i are un set minim de reguli cu privire la scrierea afirma iilor (reguli pe care le-am
folosit deja n cteva exemple anterioare):
ntre concepte trebuie s apar minim un spaiu sau un Tab;
Orice afirmaie (triplet) trebuie s se ncheie cu un spaiu urmat de un punct i un
salt la rnd nou (Enter);
Identificatorii de tip URI se ncadreaz ntre <...>;
Identitatea resurselor anonime e asigurat prin nume prefixate de _:;
10
http://www.w3.org/2001/sw/RDFCore/ntriples/
38
Exemplu:
<http://expl.ro#Alin> <http://expl.ro#esteFrateCu> <http://expl.ro#Andrei> . <http://expl.ro#Alin>
<http://expl.ro#areVarsta> "20"^^<http://www.w3.org/XMLSchema#int> . <http://expl.ro#Alin>
<http://expl.ro#locuiesteIn> <http://expl.ro#Anglia> . <http://expl.ro#Anglia>
<http://expl.ro#areNumele> "Anglia"@ro .
...vom putea defini un prefix lociitor pentru partea de URI care se repet (de
asemenea nu mai sunt necesare parantezele ascuite):
@prefix x: <http://expl.ro#>.
x:Alin x:FrateCu x:Andrei .
x:Alin x:locuiesteIn x:Anglia .
x:Alin x:areNumele "Alin .
11
http://www.w3.org/TeamSubmission/turtle/
Web Semantic
39
Turtle:
@prefix : <http://expl.ro#>. :Alin :esteFrateCu :Andrei;
:areNumele "Alin .
Turtle:
40
...i exist o notaie particular pentru situaiile n care lista de obiecte este
ordonat i nchis:
@prefix : <http://expl.ro#>.
:Ana :esteMamaLui (:Andrei :Alin :Adrian).
_:x .
:Marian.
[:esteTatalLui :Marian].
_:x .
_:y .
:ClujNapoca .
Afirmaia...
Alin este o Resurs.
Turtle optimizat:
Web Semantic
41
n acest exemplu, afirmaia Alin este frate cu Andrei devine obiect n afirmaia care
ncepe cu Marian crede c. Am putea spune c afirmaia despre Alin:
este o credin subiectiv a lui Marian;
are drept surs pe Marian;
prezumia de validitate implicit trebuie s fie limitat la Marian (adic s se tolereze
apariia unei afirmaii contradictorii din alt surs);
sau, la modul cel mai general, l are drept context pe Marian.
Contextul poate fi considerat orice concept ce caracterizeaz o afirmaie n
ansamblu su, nu doar o parte a unei afirmaii. Interpretarea pe care o acordm contextului
poate s varieze:
contextul ca surs a afirmaiei, a unei credine sau a unei citri:
Marian crede c Alin este frate cu Andrei.
n primul caz, firma ABC este n Cluj Napoca (indiferent de rolul Mariei). Faptul
c Maria lucreaz la ABC i faptul c ABC se afl n Cluj Napoca sunt conectate (prin
nodul comun ABC) dar nu se influeneaz reciproc (ABC nu e n Cluj Napoca din cauza
relaiei cu Maria i nici relaia Mariei cu firma ABC nu e legat neaprat de Cluj
Napoca).n consecin, nu avem de a face cu un context propriu-zis, ci cu dou afirma ii
conectate:
http://expl.ro#lucreazaLa
http://expl.ro#Maria
http://expl.ro#localizataIn
http://expl.ro#ABC
http://expl.ro#ClujNapoca
42
http://expl.ro#ABC
http://expl.ro#ClujNapoca
http://expl.ro#Maria
http://expl.ro#lucreazaLa
http://expl.ro#ABC
http://expl.ro#esteUn
http://expl.ro#Oras
Web Semantic
43
Graful Cluj Napoca poate conine oricte afirmaii (care sunt valabile n Cluj
Napoca). Pentru a doua afirmaie, graful Cluj Napoca este un nod, deci avem de a face cu o
situaie n care grafurile se transform n noduri pentru alte grafuri.
Pentru a facilita exprimarea contextelor cu un efort mult mai mic dect al reificrii
s-a propus extinderea modelului RDF de la triplet la cvadruplet, unde al patrulea concept
este contextual (identificatorul de graf). Astfel se promoveaz ideea de grafuri denumite
(identificate). n acest scop s-au propus sintaxe ce le extind pe cele existente deja:
N-quads este o sintax similar cu N-triples, dar cu 4 concepte ntr-o afirma ie, ultima
fiind contextul (identificatorul de graf)12;
Trig este extensia lui Turtle13
Oferim n continuare un exemplu de reprezentare a unui set de cuno tin e n cele
trei variante, pornind de la afirmaiile:
Maria crede c Alin are vrsta 30 i este cstorit cu Raluca.
Andrei crede c Alin are vrsta 20 i este tatl lui Alina.
Andreea crede c toate opiniile Mariei au credibilitate sczut.
ntre acoladele respective pot apare oricte afirmaii i toate vor aparine grafului
denumit, respectiv contextului reprezentat de acesta. S-a ctigat mult n sintax, dar s-a
pierdut relaia :crede, care fie e considerat implicit printr-o conven ie ntre de intorii
cunotinelor i consumatorii acestora, fie e declarat explicit adugnd afirmaii de forma:
:Maria :relatiaCuAfirmatiile :crede. :Andrei :relatiaCuAfirmatiile :crede. :Andreea :relatiaCuAfirmatiile :crede.
Dup cum am sugerat la nceput, contextul poate avea orice relaii cu con inutul
su (loc, timp, evaluare, surs a unui citat etc.). Afirmaii contradictorii pot apare n
contexte diferite (vrsta lui Alin) sau contexte diferite i pot completa reciproc cuno tin ele
(faptele c Alin e cstorit i are copii). n plus, se pot face afirmaii despre contexte,
12
13
http://sw.deri.org/2008/07/n-quads/
http://www4.wiwiss.fu-berlin.de/bizer/trig/
44
afirmaii despre afirmaii despre contexte etc. (afirmaia Andreei). Limbajul de interogare
SPARQL deine opiuni de filtrare dup graf (context) a cunotinelor, de combinare a
cunotinelor din anumite grafuri sau pur i simplu de ignorare a mpr irii pe contexte, n
funcie de precizia informaiilor care se solicit.
Exemplul de mai sus se poate exprima i n N-quads, varianta extins la N-triples:
<http://expl.ro#Alin> <http://expl.ro#areVarsta> 30 <http://expl.ro#Maria> .
<http://expl.ro#Alin> <http://expl.ro#casatoritCu> <http://expl.ro#Raluca> <http://expl.ro#Maria> .
<http://expl.ro#Alin> <http://expl.ro#areVarsta> 20 <http://expl.ro#Andrei> .
<http://expl.ro#Alin> <http://expl.ro#tatalLui> <http://expl.ro#Alina> <http://expl.ro#Andrei> .
<http://expl.ro#Maria> <http://expl.ro#credibilitate> <http://expl.ro#scazuta> <http://expl.ro#Andreea> .
<#Avatar>, <#Terminator>.
<#Terminator>;
<#California>.
Terminator.
California.
"Arnold Schwarzenegger".
Web Semantic
45
<#JamesCameron> <#Nume>
<#Avatar>
<#Titlu>
James Cameron.
Avatar.
Posibile interogri:
base <http://expl.ro>
SELECT ?film
WHERE {<#JamesCameron> <#aRegizat> ?film}
46
Operaia creeaz un nou graf (set de triplei) din rezultatele interogrii, adugnd
totodat o proprietate nou. Poate fi considerat o metod de a produce triplei noi din
triplei existeni, deci un mod de implementare a regulilor! E vorba de reguli de tip querytime (genereaz concluzii la momentul interogrii fr a le aduga n baza de cuno tin e).
Cealalt categorie, regulile design-time se stabilesc nc de la crearea bazei de cuno tin e
(pot fi modificate i pe parcurs) i produc concluziile imediat ce ntlnesc afirma iile, fr
s atepte o interogare pentru asta (interogrile gsesc concluziile gata generate).
base <http://expl.ro>
ASK {
?regizor <#aRegizat> ?film.
?actor <#aJucat> ?film
}
base <http://expl.ro>
DESCRIBE <#Terminator>
Web Semantic
47
</binding>
</result>
</results>
</sparql>
48
http://www.w3.org/TR/rdf-schema/
http://www.w3.org/TR/owl-features/
Web Semantic
49
http://www.foaf-project.org/
http://www.heppnetz.de/projects/goodrelations/
http://dublincore.org/
http://developers.facebook.com/docs/opengraph/
http://vocab.deri.ie/void
http://www.w3.org/TR/2009/WD-sparql11-service-description-20091022/
http://www.w3.org/TR/owl-time/
http://www.w3.org/2005/Incubator/geo/XGR-geo-20071023/
http://dbpedia.org/About
50
se va deduce
:Ana a rdfs:Resource. :esteMamaLui
a rdfs:Resource. :Alin a
rdfs:Resource.
25
http://www.helsinki.fi/science/commens/terms/object.html
Web Semantic
51
se va deduce:
:Om a rdfs:Class.
se va deduce c:
52
Aceasta este una din relaiile cele mai importante din RDF Schema, care exprim
incluziunea dintre dou mulimi. Cu ajutorul ei se creeaz ierarhia de clase (taxonomia) ce
constituie scheletul unui vocabular i al unei poteniale ontologii care se poate dezvolta din
acesta. Pornind de la afirmaiile
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
:Andrei a :Barbat.
:Barbat rdfs:subClassOf :Om. :Om
rdfs:subClassOf :Fiinta.
se vor deduce:
Se vor genera:
?x a ?c2.
?c1 a rdfs:Class.
?c2 a rdfs:Class.
Dac avem
?c1 rdfs:subClassOf ?c2.
?c2 rdfs:subClassOf ?c3.
Se va genera:
Web Semantic
53
se vor deduce:
Prima regul permite nlocuirea unei relaii cu alta, mai general, ntre aceia i
indivizi. A doua regul reprezint tranzitivitatea acestor nlocuiri, precum i detectarea
faptului c toate conceptele implicate ntr-o astfel de ierarhie sunt proprieti.
owl:topObjectProperty
:ALucratLa
:ACreat
:ARegizat
:JamesCameron
:Terminator
54
Web Semantic
55
@prefix : <http://expl.ro#>.
:calculator rdfs:member :procesor, :placaBaza, :disc.
sau
@prefix : <http://expl.ro#>.
:mapaDocumente rdf:_1 :certificatNastere; rdf:_2 :diplomaBacalaureat; rdf:_3 :adeverintaSalariu.
Din a doua:
:mapaDocumente a rdfs:Container.
:mapaDocumente rdfs:member :certificatNastere, :diplomaBacalaureat, :adeverintaSalariu.
Interpretarea acestei construcii e urmtoarea: copiii Anei sunt cuprini ntr-o list
al crei prim element e :Alin, urmat de o sublist al crei prim element e :Maria, urmat de
o sublist al crei prim element e :Marian, urmat de un final de list (rdf:nil reprezint
ncheierea listei). Aadar e o structur de concepte ordonate asemntoare cu rdf:Seq dar
care ofer o informaie n plus: e nchis, are un element despre care se poate zice c e
ultimul i nimic dup el nu mai exist. Cu ajutorul interogrilor SPARQL se poate afla
relativ uor care e ultimul element al listei, cutnd conceptul rdf:nil:
prefix : <http://expl.ro#>
SELECT ?element
WHERE {?x rdf:first ?element; rdf:rest rdf:nil}
Listele sunt mai apropiate claselor dect containerele, prin aceea c de obicei
elementele enumerate ntr-o list au o semnificaie comun, ar putea deveni elementele unei
clase. De aceea, vom vedea mai trziu, OWL se bazeaz pe liste la definirea claselor:
permite ca o clas s fie creat prin enumerarea listei elementelor sale ( i prin aceasta
aplic i o nchidere clasei); n plus mai permite ca o clas s fie definit prin intersecie sau
reuniune aplicate asupra unei liste de alte clase.
56
vom scrie:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
:Ana :crede _:x.
_:x rdf:subject :Alin; rdf:predicate :areVarsta; rdf:object 30 .
_:x a rdf:Statement.
..declarm maparea:
se va deduce:
Web Semantic
57
apoi agenii software vor putea prin interogri SPARQL s identifice etichetele
textuale relevante pentru fiecare concept!
Proprietatea de a avea un comentariu (rdfs:comment)
Aceast proprietate funcioneaz similar cu rdfs:label, ne permite s ata m un ir
de caractere unui concept, ns rolul irului de caractere nu e de a oferi o denumire lizibil,
ci de a ataa un comentariu care s explice ct mai detaliat semnifica ia acelui concept
pentru un cititor uman care ar putea opta s parcurg cunotin ele noastre n sintaxa lor
brut, mai ales dac denumirea sau identificatorul URI nu. sunt foarte sugestive:
:ProABC rdfs:comment "acest concept reprezint compania Prosperitas ABC, cu sediul n Cluj
Napoca".
ntr-un capitol ulterior, dedicat fenomenului Linked Data vom arta c un server
poate oferi simultan informaii despre un concept n format HTML i n format RDF. n
acest caz, e recomandat ca baza de cunotine s conin asocieri precum cea de mai sus,
pentru a indica fiierele care sunt reprezentative pentru concept.
Proprietatea de a avea pagini Web descriptive alternative (rdfs:seeAlso)
Cum acelai concept poate fi descris de numeroase pagini Web (site propriu, o
pagin Wikipedia, o pagin Facebook, un blog etc.) avem posibilitatea de a anexa oricte
pagini Web secundare, considerate nedefinitorii pentru nelegerea conceptului, dar totu i
relevante. Printre acestea se pot numra chiar baze de cunotine RDF disponibile direct pe
Web, precum cele oferite de DBPedia:
@prefix : <http://expl.ro#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. :MichaelJackson
rdfs:isDefinedBy <http://www.michaeljackson.com>;
rdfs:seeAlso <http://en.wikipedia.org/wiki/Michaeljackson>;
rdfs:seeAlso < http://dbpedia.org/resource/Michael_Jackson>.
n ncheiere, sintetizm 4 tipuri de ierarhii care pot apare ntr-o baz de cunotine:
58
26
http://www.w3.org/TR/owl-overview/
Web Semantic
59
Prin prima concluzie se afirm c :Ana este un individ cu identitate, prin a doua se
afirm c :Femeie este o clas. Observai c pentru mul imea tuturor claselor aveam deja
conceptul standard rdfs:Class, i totui aici s-a dedus owl:Class. Aceasta este considerat o
submulime a lui rdfs:Class.
Conceptele
universale
(owl:Thing,
owl:topObjectProperty,
owl:topDataProperty),
absurde
(owl:Nothing,
owl:bottomObjectProperty,
owl:bottomDataProperty)
i
depreciate
(owl:DeprecateClass,
owl:DeprecatedProperty).
O parte din aceste concepte au fost prezentate deja n seciunea dedicat
taxonomiilor RDF Schema. Conceptele universale i absurde sunt menite s ntregeasc
taxonomia de clase cu mulimea tuturor lucrurilor din univers (owl:Thing) i mul imea vid
(owl:Nothing), respectiv s ntregeasc taxonomia de proprieti cu propriet ile care exist
pentru orice concept (owl:topProperty) i cele care nu au voie s apar pentru niciunul
(owl:bottomProperty). Rolul conceptelor absurde este s fie folosite n concluziile unor
reguli menite s surprind contradiciile. De exemplu, orice concept detectat ca fiind
contradictoriu poate fi declarat membru al lui owl:Nothing i orice relaie contradictorie
poate fi declarat subproprietate a uneia dintre cele dou owl:bottomProperty. Apoi, o
interogare SPARQL poate lista conceptele contradictorii bazndu-se pe aceste relaionri.
Cele dou clase depreciate (una pentru clase, una pentru proprieti) sunt dou
mulimi n care se pot ncadra explicit clase sau proprieti care au fost redefinite n
versiuni mai noi i urmeaz s fie terse sau sunt pstrate din raiuni de documentare:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>. :ClasaVeche a
owl:DeprecatedClass.
:ProprietateVeche a owl:DeprecatedProperty.
60
Categorii
de
proprieti:
relaie
(owl:ObjectProperty),
atribut
(owl:DataProperty), adnotare (owl:AnnotationProperty), adnotare de ontologie
(owl:OntologyProperty)
Acestea sunt mulimile relaiilor, atributelor, adnotrilor i proprietilor bazelor de
cunotine, toate submulimi ale lui rdf:Property:
n categoria relaiilor intr (prin deducie) orice proprietate ce are drept obiect un
identificator URI sau nod anonim;
n cea a atributelor intr (prin deducie) orice proprietate ce are drept obiect o
valoare;
n cea a adnotrilor sunt ncadrate implicit proprieti standard ce ata eaz
explicaii suplimentare unui concept: rdfs:label, rdfs:comment, rdfs:seeAlso,
rdfs:isDefinedBy, la care se adaug owl:versionInfo ce ataeaz un comentariu
unei baze de cunotine n ansamblul su, preferabil unul care s indice informa ii
de versiune (data crerii, autor, numr de versiune); subiectul acestei propriet i e
ntotdeauna o baz de cunotine, iar obiectul un ir de caractere;
celelalte proprieti ale bazelor de cunotine sunt ncadrate n clasa
owl:OntologyProperty, le detaliem n continuare:
Conceptul de afirmaie fals (owl:NegativePropertyAssertion, cu
componentele
owl:sourceIndividual,
owl:assertionProperty,
i
owl:targetIndividual/owl:targetValue)
OWL introduce posibilitatea de a afirma explicit valoarea de adevr a afirma iilor.
Tehnica nu e una comod, fiind inspirat din modelul afirmaiilor reificate, n care o
afirmaie e transformat n nod anonim i conectat cu cele trei componente ale sale.
Presupunem c dorim s exprimm:
Ana are varsta 20 este o afirmaie fals.
Ana este mama lui Alin este o afirmaie fals.
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
_:afirmatie1
a owl:NegativePropertyAssertion.
owl:sourceIndividual :Ana;
owl:assertionProperty :areVarsta;
owl:targetValue 20 .
_:afirmatie2
a owl:NegativePropertyAssertion.
owl:sourceIndividual :Ana;
owl:assertionProperty :esteMamaLui;
owl:targetIndividual :Alin.
Web Semantic
61
se va deduce:
se va deduce:
:Alin :eRudaCu :Ana.
62
relaie cu ele nsele. De exemplu, putem indica faptul c orice om se cunoate pe sine,
astfel:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>. :CunoastePe a
owl:ReflexiveProperty.
:Ana a :Femeie.
se va deduce:
:Ana a owl:NamedIndividual.
se va deduce:
:Alin :eFrateCu :Mihai.
se va deduce:
Web Semantic
63
Se vor deduce:
64
pot fi: semnalarea unei erori, listarea conceptelor contradictorii sau pur i simplu
clasificarea rezultatelor cu ajutorul clasei sau relaiei absurde, care apoi pot fi interogate cu
SPARQL pentru a obine o list a contradiciilor. Exemple de astfel de concluzii ar putea fi:
:Ana a owl:Nothing. :Ann
a owl:Nothing.
:Femeie rdfs:subClassOf owl:Nothing. :Barbat
rdfs:subClassOf owl:Nothing.
se va deduce:
:Ana owl:differentFrom :Marian.
se va deduce:
i de aici:
din
proprieti
incompatibile
Web Semantic
65
se va deduce:
:Ana owl:differentFrom :Maria.
Idem se poate deduce distincia obiectelor, dac subiectul e fix i obiectele variaz.
Deducerea disjunciei claselor sau proprietilor din list de clase disjuncte
(owl:AllDisjointClasses), respectiv list de proprieti incompatibile
(owl:AllDisjointProperties). Din afirmaiile:
@prefix : <http://expl.ro#>.
:StudentGrupa1 a owl:Class.
:Ana a :StudentGrupa1, owl:NamedIndividual.
:Ann a :StudentGrupa1, owl:NamedIndividual.
:Andrei a :StudentGrupa1, owl:NamedIndividual.
:Ana owl:differentFrom :Ann, :Andrei.
:Ann owl:differentFrom :Ana, :Andrei.
:Andrei owl:differentFrom :Ann, :Ana.
:Gen a owl:Class.
:Femeie a :Gen, owl:Class.
:Barbat a :Gen, owl:Class.
:Femeie owl:disjointWith :Barbat.
:RelatieRudenie a owl:Class.
:eMamaLui a :RelatieRudenie, rdf:Property.
:eCopilulLui a :RelatieRudenie, rdf:Property.
:eMamaLui owl:propertyDisjointWith :eCopilulLui.
se va deduce:
66
:areMamaPe a owl:FunctionalProperty.
se va deduce:
:Ana owl:sameAs :Aneta.
O persoan nu poate avea dou mame naturale, deci cele dou mame trebuie s fie
una i aceeai.
Dac ajungem pe alte ci i la concluzia c :Ana i :Aneta nu au cum s fie aceeai
persoan, ajungem la contradicie. Acest aspect e valabil pentru toate exemplele ce
urmeaz: regulile prezentate vor detecta echivalene atta timp ct nu exist alte reguli care
s detecteze distincia ntre aceiai indivizi. Altfel se vor produce contradic ii. Detectarea
automat a echivalenelor poate automatiza maparea semantic ntre baze de cuno tin e din
surse diferite, genernd automat echivalene.
Deducerea echivalenei indivizilor
din proprietatea invers funcional
(owl:inverseFunctionalProperty).
Aceasta se comport invers fa de cea funcional: pe orice obiect l poate pune n
relaie cu un singur subiect. Dac apar mai multe subiecte, se va deduce echivalena lor.
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana :areEmail <mailto:ana@expl.ro>. alt:Aneta
:areEmail <mailto:ana@expl.ro>. :areEmail a
owl:InverseFunctionalProperty.
se va deduce:
(ne bazm pe prezumia c dou persoane nu pot avea acelai e-mail, deci dac
apare o astfel de situaie e vorba de aceeai persoan)
Deducerea echivalenei indivizilor din setul de proprieti cheie (owl:hasKey)
Aceasta este o versiune mai precis a proprietii funcionale, sub dou aspecte:
se aplic la o combinaie de mai multe proprieti, care nu vor putea lua aceea i
combinaie de valori (obiecte) pentru dou subiecte din aceeai clas;
efectul e limitat doar la membrii unei clase.
Aadar, putem considera c e o transpunere a noiunii de cheie primar mutipl din
bazele de date relaionale! Din afirmaiile:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Ana :NrMatricol 100; :studentaLa :ASE, a :Student.
:Aneta :NrMatricol 100; studentaLa :ASE; a :Student.
:Student owl:hasKey (:NrMatricol :studentaLa).
se va deduce:
Web Semantic
67
Deducerea
echivalenei
indivizilor
din
cardinalitatea
maxim
(owl:maxCardinality) aplicat ca restricie (owl:Restriction) asupra unei propriet i
(owl:onProperty):
Prin cardinalitate putem impune de cte ori poate fi implicat un anumit subiect
ntr-o anumit relaie. Dac numrul de relaii depete limita pe care o impunem,
obiectele suplimentare trebuie s fie echivalente cu unele dintre celelalte. Din afirmaiile:
@prefix : <http://expl.ro#>.
@prefix alt: <http://altdomeniu.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
:Alin a :CopilCuUnParinte; areParintePe :Ana, alt:Maria.
se va deduce:
:CopilCuUnParinte a owl:Restriction,
owl:Class. :Ana owl:sameAs alt:Maria.
Deoarece n prima faz am afirmat c Alin face parte din clasa celor cu un parinte
(mai exact, care au relaia :areParintePe cu un singur obiect), iar apoi am indicat doi prin i,
s-a dedus c acetia trebuie s fie una i aceeai persoan.
Observai modul de creare a clasei CopilCuUnParinte. Aceasta e de un tip
particular, owl:Restriction care e mulimea acelor clase ce sunt create prin astfel de
mecanisme de restricionare a relaiilor (deci orice owl:Restriction e i clas). Dac
proprietatea ce sufer restricia are deja un domeniu declarat, clasa generat prin restric ie
va fi o submulime a acesteia. Din urmtorul set:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:areParintePe rdfs:domain Copil.
:CopilCuUnParinte owl:onProperty :areParintePe; owl:maxCardinality 1 .
68
se va deduce:
alt:Gerar owl:sameAs :Ianuarie.
sau
:EchipaFotbal owl:distinctMembers (:Steaua :Dinamo :Rapid).
Web Semantic
69
dup cum s-a artat deja n seciunea dedicat deducerii distinciilor) n timp ce primul caz
las loc posibilitii ca unele elemente s fie acelai element cu mai mul i identificatori.
Cele dou afirmaii vor produce:
:Steaua a :EchipaFotbal.
:Dinamo a :EchipaFotbal.
:Rapid a :EchipaFotbal.
:CainiiRosii a :EchipaFotbal.
se vor deduce:
(din reuniune)
(din intersecie)
n realitate complementul mulimii :Femeie e format din toate lucrurile din univers
care nu sunt femei, de exemplu o piatr. Pentru a defini corect mul imea Barbat pornind de
la Femeie, va trebui s afirmm:
:Barbat owl:intersectionOf (:Om _:X).
_:X complementOf :Femeie.
70
se poate deduce:
_:x owl:complementOf :Barbat.
_:y owl:complementOf :Femeie.
_:complOm owl:intersectionOf (_:x _:y).
se poate deduce:
_:x owl:complementOf :Scriitor.
_:y owl:complementOf :Clujean.
_:complSC owl:unionOf (_:x _:y).
se poate deduce:
_:x owl:complementOf :Om.
_:x rdfs:subClassOf _:complBarbat.
se poate deduce:
:Luna a :SatelitAlPamantului.
se deduce:
:Luna :Orbiteaza :Pamantul.
Web Semantic
71
domeniu clasa :Satelit, ceea ce ar face s se deduc urmtoarea afirmaie, asigurnd astfel i
alipirea restriciei la taxonomia existent de clase:
:SatelitAlPamantului rdfs:subClassOf :Satelit.
putem deduce urmtoarele, poziionnd astfel n taxonomie cele dou clase implicate n
restricie:
:Dramaturg rdfs:subClassOf :Scriitor. :PiesaTeatru
rdfs:subClassOf :Opera.
Avem i posibilitatea de a deduce tipul obiectului din tipul subiectelor cu care are
relaii:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Vegetarian owl:onProperty :Mananca; owl:allValuesFrom :MancareVegetariana.
:Alin a :Vegetarian; :Mananca :Salata.
Am afirmat c poi fi vegetarian doar dac mnnci NUMAI elemente ale mulimii
:MancareVegetariana, apoi am indicat c Alin mnnc aa ceva. Se va deduce:
:Salata a :MancareVegetariana. :Vegetarian
a owl:Restriction, owl:Class.
Putem deduce:
72
obinem
:Alin a :PersoanaSiguraPeSine.
Dac pornim de la
:Alin a :PersoanaSiguraPeSine.
obinem
:Alin :CunoastePe :Alin.
Am afirmat c oricine are mcar un copil se poate numi printe, apoi am fcut o
astfel de afirmaie despre Alin, deci obinem concluzia:
:Alin a :Parinte.
:Parinte a owl:Restriction, owl:Class.
n acest moment exist garania c :Alin are doi copii distinci i obinem:
:Alin a :ParinteCuDoiCopii.
Web Semantic
73
obinem o contradicie.
n concluzie:
limitnd inferior numrul de relaii ale unui subiect (cu owl:minCardinality) putem
deduce apartenena subiectului la o clas;
limitnd superior numrul de relaii (cu owl:maxCardinality) putem deduce
echivalena indivizilor (dac are relaii cu mai mult de n obiecte, o parte din acele
obiecte trebuie s fie echivalente) sau contradicii (dac echivalen a respectiv e
contrazis de distincii derivate din alte reguli);
folosind cardinalitatea precis (owl:cardinality) putem obine oricare din aceste
efecte, n funcie de cum evolueaz numrul de relaii (dac e sub sau peste
cardinalitatea declarat).
La aceste construcii oferite de OWL 1, OWL 2 a adus o rafinare superioar, cu
ajutorul cardinalitii calificate. Aceasta e o combinaie ntre restric iile de cardinalitate i
cele de necesitate/suficien, cci constrnge simultan numrul de rela ii ale unui subiect i
obiectele cu care acel numr de relaii trebuie afirmate:
@prefix : <http://expl.ro#>.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
@prefix owl: <http://www.w3.org/2002/07/owl#>.
:Parinte owl:onProperty :areCopilPe; owl:minCardinality 1.
:Bunic owl:onProperty :areCopilPe; owl:minQualifiedCardinality 1; owl:onClass
:Parinte. :areCopilPe rdfs:domain :Om.
:Ana :areCopilPe :Andrei. :Alin :areCopilPe :Ana.
74
afirmaiile din cele dou surse n momentul n care intr n contact, prin import, interogri
federative sau alte ci):
@prefix alt: <http://altdomeniu.ro#>.
alt:Mary alt:parentOf alt:Aly; alt:worksAt :CompanyX; a alt:Woman.
alt:Aly rdf:type alt:Human; alt:hasPhoneNo 01234567 .
:areTelefonul owl:equivalentProperty :hasPhoneNo.
:lucreazaLa owl:equivalentProperty alt:worksAt. :Femeie
owl:equivalentClass alt:Woman. :esteCopilulLui
owl:inverseOf alt:parentOf.
Coroborat cu faptul c :Alin a :Om i membri clasei :Om pot fi copiii unei singure
femei, se deduce:
:Maria owl:sameAs alt:Mary.
Dar cum cele dou relaii de a lucra sunt i ele declarate echivalente, avem de fapt:
:Maria :lucreazaLa :firmaABC, :CompanyX.
Web Semantic
75
Operaia POST este una de adugare de cunotine, iar PUT una de nlocuire a
cunotinelor existente (nlocuirea unui graf/context). Cunotinele trebuie transmise ca
upload de fiier sau prin inserarea coninutului complet al unui fi ier n corpul cererii
HTTP. Dac sunt permise, ambele operaii pot preciza contextul n care s aib loc
modificarea, tot printr-o variabil ataat la adres:
http://serviciu.com/cunostinte?context=..
http://serviciu.com/cunostinte/rdf-graphs/service?graph=..
http://www.w3.org/TR/rdf-sparql-protocol/
http://www.w3.org/TR/sparql11-http-rdf-update/
76