Realizarea Programelor de Retea Bazate pe Tehnologii Client Server
Realizarea programelor de retea bazate pe tehnologii client- server
CAPITOLUL I
Note introductive
A. Retele de calculatoare
Impreuna cu imensul potential al numarului mare de computere precum si extinderea pe care o are acum Internetul, oamenii pot comunica liber, repede si cu folos. Sistemele deschise, orientate pe obiect, interfetele grafice, bazele de date si super masinile – acestea sunt termenii care pot avea impact in cele mai nebanuite moduri.
Modelul client/server defineste acel drum spre succes al organizatiiler care folosesc tehnologia in urmatoarea decada. Acesta este punctul in care se inregistreaza o descrestere a aplicatiilor de la minicomputere si mainframe-uri catre desktop. Usurinta in utilizare, interfetele usoare (GUI) sunt cai care duc ca oricine sa poata folosi cu succes tehnologia existenta, personal si direct.
In aceasta competitie trebuie si este imperios necesar ca sa se foloseasca orice oportunitate pentru a reduce costurile, imbunatati calitatea . Multe din organizatiile de azi recunosc ideea de a lucra dupa mersul pietei, de a fi deschisi si a avea o interactiune cu piata directa, exemplu:
expunerea ofertei de produse online,
caracteristici si metode de fabricatie,
online-ordering
customer-complaints
Prin aceste lucruri o companie stie sa obtina acel feed-back atat de necesar din piata, de la clienti, iar prin masuri corective sa-si imbunatateasca si mai mult calitatea produselor sale.
II. Retele de calculatoare
II.1 Arhitecturi retele calculatoare
Pentru a intelege protocoalele de retea este necesara cunoasterea tipurilor de retele. Termenul de retea de obicei inseamna un set de computere si periferice (imprimante, modem-uri, plottere, scannere ) care sunt conectate impreuna cu ajutorul unui mediu(agent). Conexiunea poate fi directa (printr-un cablu) sau indirecta (printr-un modem). Diferitele mecanisme din retea comunica intre ele printr-un set de reguli (protocolul). Dispozitivele din retea pot exista in aceeasi incapere sau raspindite intr-o cladire. Ele pot fi separate de citiva km prin utilizarea liniilor telefonice dedicate, a microundelor, fibra optica sau a altui sistem similar.Ele chiar pot fi raspindite in toata lumea, conectate din nou prin intermediul comunicatiilor la distanta lunga. Prezentarea retelei (actualele dispozitive si maniera in care ele sunt conectate intre ele ) este numita topologia retelei.
De obicei, daca dispozitivele retelei se afla intr-o singura locatie cum ar fi o cladire sau un grup de incaperi, ele fac parte din reteaua locala (LAN). Lan-urile au de obicei toate dispozitivele din retea conectate de un singur tip de cablu de retea. Daca dispozitivele sunt imprastiate pretutindeni, cum ar fi diferite cladiri sau diferite orase, ele sunt setate de obicei in citeva LAN-uri care sunt legate intr-o structura mai mare numita retea pe zona extinsa ( WAN ). Un WAN este compus din doua sau mai multe LAN-uri. Fiecare LAN are propriul cablu de retea care conecteaza toate dispozitivele in LAN–ul respectiv. LAN-urile sunt legate intre ele printr-o alta metoda de conectare, adesea linii telefonice cu viteza mare sau cabluri de retea foarte rapide numite magistrale. WAN-urile sunt adesea tratate ca o singura entitate in scopuri organizatorice.
Exista trei topologii principale de retea :
Magistrala
Stea
Inel
II.1.1 Reteaua Bus
Reteaua Bus este cea mai simpla, cuprinzind o singura cale principala de comunicatie cu fiecare mecanism atasat principalului cablu (bus) printr-un dispozitiv numit emitator – receptor sau cutia de jonctiune. De la fiecare emitator – receptor , un alt cablu ( adesea foarte scurt ) se ataseaza la adaptatorul de retea al dispozitivului.
Principalul avantaj al retelei bus este ca aceasta permite a high – speed bus. Un alt avantaj al retelei “ bus “ este ca de obicei este imun la problemele cu oricare card de retea din interiorul unui dispozitiv din retea, deoarece emitatorul – receptorul permite trafic prin baza, daca un dispozitiveste atasat sau nu la cutia de legatura. Fiecare capat al “bus” –ului se termina cu un bloc de rezistoare sau un mecanism electric similar sa marcheze din punct de vedere electric, sfirsitul cablului. Fiecare dispozitiv de pe platforma are un numar special de identificare, sau adresa, care “ informeaza “ dispozitivul ca informatiile primite sunt pentru acel dispozitiv.
O retea “bus” este adesea un cablu direct. El este rasucit in jurul peretilor si cladirilor dupa nevoie. Acesta are o singura cale de la un capat la celalalt, cu fiecare capat terminat intr-un fel ( de obicei cu un rezistor ). Multe dispozitive in reteaua “ bus” pot trimite sau primi date de-a lungul “bus’-ului prin comprimarea mesajului cu adresa destinatarului.
O variatie a topologiei retelei “ bus” este gasita in multe LAN-uri mici care folosesc cablul Ethernet subtire ( care arata ca si cablul coaxial de televiziune ) sau cablul perechii rasucite ( care seamana cablurilor telefonice). Acest tip de retea consta dintr-un cablu coaxial lung care ajunge la toate calculatoarele.
Exista trei concepte la comunicatia pe magistrala:
Transmiterea semnalului
Reflectarea semnalului
Terminatorul
Transmiterea semnalului.
Datele din retea, sub forma de semnale electronice, sunt transmise tuturor calculatoarelor din retea; totusi informatia este acceptata doar de calculatorul a carui adresa corespunde cu adresa codificata in semnalul transmis. La un moment dat un singur calculator poate trimite mesaje. Performanta retelei va depinde de numarul calculatoarelor legate, deoarece numai un calculator poate trimite date la un moment dat, deci in cazul in care sunt mai multe calculatoare conectate acestea vor trebui sa astepta pe rand, deci reteaua va fi mai lenta. Magistrala este o topologie pasiva, adica acestea nu transmit semnalele de la un calculator la altul. Daca unul se defecteaza reteaua continua sa functioneze.
Reflectarea semnalului
Deoarece datele sau semnalele electronice sunt transmise in intreaga retea, acestea vor parcurge cablul de la un capat la altul. Daca semnalului i s-ar permite sa se deplaseze fara intrerupere, el ar continua se se reflecte inainte si inapoi, impiedicand celelalte calculatoare sa transmita semnale. Din acest motiv semnalul trebuie oprit odata ajuns la destinatie.
Terminatorul
Pentru a opri reflectarea semnalului, la fiecare capat al cablului este plasat un terminator, care va absorbi semnalele libere. Absorbirea acestora “elibereaza” cablul, permitand si altor calculatoare sa poata transmite date.
Mai sus se pot vedea cele 3 topologii de conectare a retelelor.
II.1.2 Reteaua “Ring”
Topologia retelei ring este adesea desenata cum si numele sugereaza, sub forma de cerc. In ciuda presupunerii ca un cerc are baza (coloana vertebrala ) cu capetele cablului cuplate pentru a forma o deschidere, nu exista nici un inel de cablare. Numele de cerc deriva din constructia unitatii centrale de control.
Termenul de inel ( cerc ) este un termen impropriu pentru ca retelele “ring” nu au un cablu interminabil ca o retea “ bus” cu cele doua terminatoare cuplate intre ele. Cercul se refera la desenul unitatii centrale care dirijeaza trecerea mesajului retelei. Intr-o retea “ring” seminficativa, unitatea centrala de control este numita Unitate de Acces Media sau MAU. MAU are inauntrul sau un circuit sub forma de cerc ( de unde si numele topologiei retelei ). Inelul din interiorul MAU serveste ca “ bus “ pentru dispozitive, in vederea obtinerii mesajelor.
II.1.3 Reteaua “ hub”
Reteaua” hub” foloseste un cablu principal mai mult decit reteaua “ bus”, care este numit backplane. De la backplane, un set de cabluri sunt directionate catre centru, care este o cutie continind citeva porturi in care dispozitivele sunt introduse. Cablurile la un punct de conectare sunt adesea numite picatru deoarece ele se scurg din backplane in porturi.
Retelele “hub” pot fi foarte vaste, folosind un backplane cu fibre optice de mare viteza si legaturi Ethernet putin mai incete pentru hub-urile din acelasi workgroup. Reteaua “hub” poate fi de asemenea mica, cu un cuplu de hub-uri sustinind citeva dispozitive conectate impreuna prin cabluri standard Ethernet. Reteaua “hub” este accesibila (poti incepe de la putin si extinzi cit ai nevoie) care este partea atractiei sale.
Retelele “hub” au devenit populare pentru instalari extinse, in parte pentru ca ele sunt usor de setat si de intretinut. De asemenea, ele pot fi sisteme mai putin costisitoare in instalarile mai extinse. Backplane poate oferi o distanta considerabila, tocmai ca o retea “bus“, in timp ce porturile, punctele de conexiune sunt de obicei grupate intr-o cutie sau intr-un tablou. Pot fi multe tablouri sau cutii de conexiune atasate la backplane.
Concentratoare
Unul din echipamentele care incepe sa devina un standard in cadrul retelelor este hub-ul si switch-ul. Acestea reprezinta componenta centrala intr-o retea cu topologie stea.
Concentratoarele pot fi de urmatoarele tipuri:
Active
Pasive
Concentratoarele active, sunt cele mai intalnite, in sensul ca ele regenereaza si retransmit semnalele, la fel ca receptoarele. Datorita acestui fapt ele au intre 8 si 24 de porturi acestea se numesc si multiport.
Concentratoarele pasive sunt panourile de cablare sau blocurile de conectare. Ele actioneaza doar ca puncte de conectare, fara sa amplifice sau sa regenereze semnalul.
I.1.4 Variante ale diferilelor topologii
Magistrala- stea
Aceasta topologie este o combinatie intre topologia magistrala si cea stea si consta in mai multe retele cu topologie stea, conectate prin intermediul unor trunchiuri liniare de tip magistrala.
Daca un calculator se defecteaza, acest lucru nu va afecta restul retelei; celelalte calculatoare vor functiona normal. Daca insa se defecteaza un concentrator conexiunile la acel concentrator vor fi off-line iar cele doua retele astfel formate, nu vor fi vizibile intre ele.
Inel-stea(numita si inel cablat in stea) este foarte asemanatoare cu topologia magistrala-stea. Ambele include un concentrator, care contine de fapt inelul , respectiv magistrala. Concentratoarele dintr-o magistrala stea sunt conectate prin trunchiuri liniare de magistrala, iar cele din inelul stea sunt conectate in principal prin concentratorul principal intr-o topologie stea.
II.2. Retele locale
TCP/IP lucreaza cu LAN-uri si WAN-uri si exista citeva aspecte importante ale topologiilor LAN si WAN. Desi exista multe topologii pentru LAN- uri, trei topologii sunt dominante: bus, ring si hub. LAN este acronimul de la "Local Area Network" deci o grupare de calculatoare, imprimante si alte dispozitive care se gasesc in aceeasi locatie geografica.
II.3 Retelele extinse (Wide Area Network)
Cum am mentionat mai devreme, LAN-urile pot fi combinate intr-o vasta entitate numita WAN. WAN-urile sunt de obicei compuse din LAN-uri legate intre ele printr-o legatura cu viteza mare (cum ar fi o linie telefonica sau cablul necesar). La intrarea in fiecare LAN, unul sau mai multe dispozitive actioneaza ca legatura dintre LAN si WAN: acestea se numesc porti de intrare(gateways). O poarta de intrare este interfata intre un LAN si un WAN si se aplica pentru oricare alt LAN care acceseaza Internetul: un dispozitiv de obicei actioneaza ca o poarta de intrare de LAN spre Internet (care chiar este un WAN foarte extins ).
Multi termeni altii decit gateway ( poarta de intrare ) sunt de asemenea folositi. Router si bridge sunt tot porti de intrare, dar ele realizeaza diferite sarcini. LAN-urile pot fi legate la un WAN printr-o poarta de intrare care dirijeaza datele dintre baza LAN si WAN.. Intr-o simpla prezentare routerul este folosit sa realizeze aceasta functie.
II.4 Interconectarea retelelor
II.4.1 Routere
Routere sunt echipamente care permit dirijarea traficului din doua retele care au clase de IP diferite. Router-ele se caracterizeaza printr-o tabela de rutare, tabela care cuprinde reguli de tranzit a pachetelor discpri si WAN-uri si exista citeva aspecte importante ale topologiilor LAN si WAN. Desi exista multe topologii pentru LAN- uri, trei topologii sunt dominante: bus, ring si hub. LAN este acronimul de la "Local Area Network" deci o grupare de calculatoare, imprimante si alte dispozitive care se gasesc in aceeasi locatie geografica.
II.3 Retelele extinse (Wide Area Network)
Cum am mentionat mai devreme, LAN-urile pot fi combinate intr-o vasta entitate numita WAN. WAN-urile sunt de obicei compuse din LAN-uri legate intre ele printr-o legatura cu viteza mare (cum ar fi o linie telefonica sau cablul necesar). La intrarea in fiecare LAN, unul sau mai multe dispozitive actioneaza ca legatura dintre LAN si WAN: acestea se numesc porti de intrare(gateways). O poarta de intrare este interfata intre un LAN si un WAN si se aplica pentru oricare alt LAN care acceseaza Internetul: un dispozitiv de obicei actioneaza ca o poarta de intrare de LAN spre Internet (care chiar este un WAN foarte extins ).
Multi termeni altii decit gateway ( poarta de intrare ) sunt de asemenea folositi. Router si bridge sunt tot porti de intrare, dar ele realizeaza diferite sarcini. LAN-urile pot fi legate la un WAN printr-o poarta de intrare care dirijeaza datele dintre baza LAN si WAN.. Intr-o simpla prezentare routerul este folosit sa realizeze aceasta functie.
II.4 Interconectarea retelelor
II.4.1 Routere
Routere sunt echipamente care permit dirijarea traficului din doua retele care au clase de IP diferite. Router-ele se caracterizeaza printr-o tabela de rutare, tabela care cuprinde reguli de tranzit a pachetelor discpre o retea catre cealalta retea.
In general la conectarea retelei interne (LAN) la alta retea mai mare folosim un router.
Un alt mecanism gateway, numit bridge (punte ), este flosit sa conecteze LAN-urile folosind acelasi protocol de retea. Puntile sunt folosite numai cind acelasi protocol de retea (cum ar fi TCP/IP) exista pentru ambele protocoale. Nu conteaza ce mijloc media este folosit. Puntile pot conecta perechi rasucite LAN la LAN-uri coaxiale, de exemplu, ori actioneaza ca o interfata la o retea de fibre optice. Atita timp cit protocolul de retea este acelasi, puntea functioneaza in mod corespunzator.
Daca doua sau mai multe LAN-uri sunt implicate intr-o organizatie si exista posibilitatea unui trafic intens intre ele, este mai bine sa conectam cele doua LAN-uri direct la o punte in loc sa incarcam baza cu trafic inutil.
II.4.2 Bridge-uri
Folosirea unei punti pentru conectarea a doua LAN-uri este prezentata in figura urmatoare.
Intr-o configuratie care foloseste punti intre LAN- uri, traficul de la un LAN catre altul poate fi trimis prin punte in loc sa fie trimis pe baza, furnizind astfel o mai buna executare. Pentru servicii ca Telnet si FTP, diferenta de viteza intre folosirea unei punti si trecerea printr-un router pe o baza intens folosita poate fi semnificativa.
II.4.3.Broutere
Un brouter, asa cum arata numele, combina calitatile unei punti(bridge) si ale unui router. El poate actiona ca router pentru un anumit protocol si ca punte pentru altele.
Brouterele pot:
Sa ruteze protocoalele rutabile selectate
Sa actioneze ca punte pentru protocoalele nerutabile
Sa ofere interconexiuni mai avantajoase din punct de vedere al costurilor si posibilitatilor de administrare decat puntile si ruterele folosite separat.
III Programarea in retea
III.1 Concepte folosite
Client/Server inseamna multe lucruri pentru multi oameni. De obicei perceptia generala este ca aplicatia are o portiune client, ce ruleaza pe un calculator local, in speta un PC, si o parte de server care ruleaza pe o statie UNIX sau un mainframe. De obicei aplicatiile client server sunt orientate pe baze de date insa sunt si aplicatii care ofera anumite servicii cum sunt:
server WEB
servere email
servere RAS
servere DNS, KCC, si majoritatea serviciilor de pe server.
Servere FTP, NIS etc
III.1.1 Conceptul client-server
III.1.1.1 Avantaje ale tehnologiei client/server
Note generale
Organizatiile doresc sa beneficieze de avantajele costului scazut ale mediilor prietenoase ale statiilor de lucru. Este de asemenea o nevoie puternica si o dorinta de a capitaliza investitiile existente. Astfel, retelele companiilor sunt puse in asa fel incat sa conecteze statiile de lucru catre diferite servere..
Tehnologia client/server aduce ca beneficiu utilizarea celor mai eficiente interfete utilizator, stocare date, conectivitate si servicii de aplicatie. Produsele client/server sunt instalate in interiorul organizatiei prezente dar nu sunt efectiv folosite. Modelul client/server furnizeaza mijloace tehnologice in vederea utilizarii investitiilor anterioare in concordanta cu optiunile tehnologiei actuale. Este un declin dramatic in ceea ce priveste costul componentelor tehnologiei client/server. Organizatiile folosesc aceasta tehnologie ca o oportunitate pentru a furniza solutii afacerii. Competitia intre servicii si calitate pe piata maresc si mai mult nevoia de a profita de beneficiile disponibile de la aplicatiile construite pe modelul client/server.
Tehnologia client/server in cele mai bune implementari ale sale muta captarea de date si procesarea de informatii direct catre utilizatorul expert – adica utilizatorul cu abilitatea de a raspunde erorilor de date, si utilizatorul cu abilitatea de a folosi informatiile facute disponibile. Sistemele cele mai importante sunt implicate direct in procesul executarii afacerilor, si sunt fortate sa arate valoric acest lucru.
Modelul tehnologiei client/server furnizeaza mijloace de integrare a aplicatii cu productivitate ridicata pentru un angajat anume sau un manager cu nevoi de a procesa date pentru a satisface cerintele de procesare a informatiilor in cadrul companiei.
Imbunatatirea partajarii datelor
Datele care sunt colectate ca parte a procesului uzual de lucru si stocate pe un server sunt disponibile imediat tuturor utilizatorilor autorizati. Folosirea limbajului SQL pentru a defini si a manipula date furnizeaza suportul pentru accesul deschis tuturor clientilor ce proceseaza informatie. SQL ofera tuturor utilizatorilor autorizati accesul la informatie printr-o imagine care este specifica nevoilor lor. Serviciile de retea transparente arata ca aceleasi date sunt disponibile cu acelasi nivel pentru toti utilizatorii desemnati.
Servicii integrate
In modelul client/server , toate informatiile pe care clientul este indreptatit sa le utilizeze sunt disponibile pe statia sa. Nu este necesara schimbarea in modul terminal sau logarea la alt procesor pentru accesarea de informatii. Toate procesele si informatiile autorizate sunt direct disponibile pentru interfata statiei sale.
Resurse partajate pe platforme diverse
Modelul client/server furnizeaza oportunitati de a realiza adevarate sisteme deschise. Aplicatiile pot fi create si implementate fara a tine cont de platforma sau caracteristici tehnice ale software-ului. De aceea utilizatorii pot obtine servicii sau acces transparent la servicii furnizate de baze de date, sau servere de aplicatii. Sistemele de operare si plaltformele hardware sunt independente de aplicatii si de uneltele folosite pentru dezvoltarea plicatiei respective.
Aplicatiile client/server functioneaza in doua moduri. Acestea pot functtiona ca si suport pentru o aplicatie deja existenta – sau acestea pot furniza intrari de date, pastrare date, sau raportare pentru un numar de clienti si servere. In celalalt caz, folosirea – sau chiar existenta – unei masini gazda este total mascata pentru dezvoltator prin folosirea diverselor limbaje de comunicare (exemplu limbajul SQL).
Schimbul si interoperabilitatea de date
SQL este o definitie standard si un limbaj de acces. Acest standard permite multor vanzatori care produc la ora actuala aplicatii de daze de date, motoare care sa manipuleze aceste date ca si tabele SQL. Aproape toate uneltele de dezvoltare permit o compatibilitate cu bazele de date accesate prin SQL. Serviciile de retea permit o conectivitate intre un client local si servere distante. Cu cateva produse de baze de date, cum sunt Ingres Star, un utilizator poate defini o vedere consolidata a datelor care in mod fizic distribuita intre platforme diverse.
Dezvoltatorii de sisteme au gasit un punct in care acest amestec neomogen va fi un atribut al dezvoltarii de motoare de baze de date din ce in ce mai puternice fara a fi dependente de platforma.
Serviciile pentru baze de date oferite ca raspuns al unei cereri SQL poate fi oferit de unul din serverele de baze de date: Oracle, Ingres, Sybase, care ruleaza pe platforme Windows NT, OS/2, Unix, sau Solaris. Mediul de dezvoltare (SDE) si uneltele trebuie sa implementeze o interfata cu producatorul bazei de date si cu produsele care exista in sistemul de operare. Dezvoltatorul nu trebuie sa stie ce motor sau ce sistem de operare ruleaza. Daca SDE nu anuleaza dreptul dezvoltatorului de a folosi acces direct in baza de date, atunci entuziasmul acestuia se va dovedi prin evitarea folosirrii unor optiuni ale vanzatorului bazei de date.
Modelul client/server asigura capabilitatea de a face cereri pe loc de informatie. Ca rezultat, optimizarea suportului pentru SQL dinamic in cazul bazelor de date distribuite este vital pentru succesul noii generatii de aplicatii client/server. Prima generatie implementeaza aspectele procesului afacerii. A doua generatie introduce cereri locale ca urmare a exerientei castigate in interiorul informatiilor deja existente.
Mascarea accesului fizic la date
Prin folosirea SQL pentru accesul la date, utilizatorii pot accesa informatii din baza de date de oriunde din retea. De pe PC-urile locale , serverul local, sau de oriunde din reteaua WAN, accesul la date fiind oferit dezvoltatorului si utilizatorului prin aceeasi cerere. Singura diferenta ar fi performanta diferita daca banda alocata este insuficienta. Datele mai pot fi accesate si din memoria RAM, de pe un disc magnetic optic, prin aceleasi cereri SQL. Tabelele logice pot fi accesate fara a cunoaste ordinea coloanelor. Numeroase tabele pot fi “alaturate” pentru a obtine un nou tabel logic folosit de aplicatie in acelasi fel, fara a tine cont de forma lui fizica.
Folosirea unor tipuri noi de date, cum ar fi obiectele binare foarte largi ( BLOB ) permit altor tipuri de informatii cum ar fi imagini, video si audio sa fie stocate si accesate folosind aceleasi cerei SQL pentru aceesul la date.
Independenta de locatie a datelor
Dezvoltatorii au astazi o foarte mare independenta. Datele sunt accesate prin SQL fara a fi nevoie de a cunoaste hardware, sisteme de operare sau locatia fizica care furnizeaza datele. Retelele permit accese ale aplicatiilor si cerereri SQL prin RPC. Retelele pot fi bazate pe OSI (Open Systems Interconnect ), TCPIP, SNA ( System Network Architecture) dar nu va fi nevoie de schimbare a codului scris. Dezvoltatorul unei solutii se loveste de standarde de proces fara a considera platforma fizica. Limbaje de dezvoltare ca: COBOL, C pot functiona pe platforme foarte diverse.
Conducere centralizata
Primul pas in a oferi o administrare eficienta a unei retele LAN este de a stabili standardele pentru hardware, software, retele, instalari, dezvoltari si codificari. Aceste standarde folosite impreuna cu alte produse de marca (IBM, HP, AT&T ) permit o vedere de ansamblu a retelei LAN.
Revolutia tehnologica
Este foarte important de realizat o vedere de ansamblu asupra tehnologiei in timpul vietii unui sistem. Arhitectura pe care un sistem este construit trebuie sa fie capabila sa suporte toti utilizatorii de-a lungul intregii sale vieti. Organizatii largi au luat in calcul pentru aplicatiile lor o folosinta intre 5 si 10 ani. Multe sisteme sunt construite cu o vedere asupra a numai ce exista astazi, insa ei sunt gata sa renunte la sistemele invechite odata cu schimbarile ce apar in arhitectura, schimbari la care nu s-ar fi putut adapta cu sistemele vechi.
Comparatii intre intrari / iesiri
Majoritatea sistemelor au nevoie de informatii citite si apoi salvate. Folosirea modelului client/server aduce ca avantaj utilizarea puterii de procesare a serverului, clientul preluind numai rezultatul cererii emis catre server. Serverul este de obicei o masina foarte rapida (atit pentru accese de citire cit si de calcule, dar si pentru trimiterea datelor catre clienti ). Clientii folosesc puterea serverului simultan rezultind o incarcare mica a statiilor client comparativ cu serverul.
Stocare de date
Cea mai mare revolutie tehnologica care a afecta industria de computere a fost cauzata de necesarul de crestere a capacitatii de stocare disponibila pentru aplicatie. Memoria RAM este folosita pentru executia programelor si pentru a stoca date temporar sau permanent.
Utilizatorii au intrat in era utilizarii memoriilor mari si ieftine ducind la eficientizarea aplicatiilor care aveau nevoie de memorie suplimentara.
Interfata grafica de proiectare ( utilizare )
Interfetele grafice utilizator( GUI ) au nevoie de o mare cantitate de memorie RAM pentru a pastra imaginiile de pe ecran, listele, textul de ajutor, caile de navigatie. Deoarece GUI permite procesarea aleatoare in locul traditionalei procesari secventiale, toate posibilele procese logice precum si codul de control GUI asociat imaginii trebuie sa fie disponibil in RAM pentru a furniza raspunsurile adecvate.
Baze de date relationale
O alta schimbare dramatica in domeniul software este zona bazelor de date. Sistemele de fisiere traditionale si tehnologia bazelor de date de bazeaza pe localizarea referintelor pentru o buna performanta a accesului. Localizarea referintelor implica ca toate datele necesare sa satisfaca o cerere sunt stocate fizic unele linga altele. In orice caz, mediile de astazi au nevoie de accese multiple ale inregistrarilor provenite din tabele diferite si locuri diferite. Performanta se poate obtine in aceste medii cind baza de date foloseste chei de extragere organizate in liste de cautare. Acccesul fizic la baza de date este limitat numai la selectarea inregistrarilor care satisfac criteriul de cautare.
Tehnologia bazelor de date relationale, folosind SQL imbina aceste lucruri cu succes. Cererea de cautare poate fi evaluata aplicand-o indexilor care identifica campurile ce satisfac criteriul de cautare. Numai aceste inregistrari sunt citite si extrase din baza de date fizica.
Conectivitatea
Era echipamentelor desktop a inceput cu introducerea calculatoarelor personale IBM PC.
Au fost simtiti mai multi pasi:
Statiile de lucru emulau sisteme complexe
Adaugarea de servere de baze de date si comunicatii
Aplicatii complete client/server
Productivitatea utilizatorului
Comparand productivitatea unui utilizator care foloseste pentru analiza unui buget un spreadsheet sau un program in COBOL. In primul caz utilizatorul are in fata o imagine vizuala a problemei iar introducerea unei simple variabile devine triviala comparativ cu introducerea acesteia in programul COBOL, unde va fi nevoie de un programator caruia trebuie sa-I fie explicata problema, acesta sa o inteleaga apoi sa incerce sa realizeze acest lucru.
III.1.1.2. Cai de imbunatatire
Lucru direct pe server
Bazele de date sunt de obicei mutate pe servere pentru a folosi procesoarele acestuia sau performantele I/O mai ridicate. Alte aplicatii pot fi partajate tot pentru viteza dar si pentru disponibilitate.
Reducerea timpului total de executie
Prin rularea unor cereri de cautare, sau alte comezi ce folosesc capacitatea de calcul foarte intens, precum si procedurile stocate duc la reducerea acestui timp de executie.
Folosirea unui client multitasking
O data cu devenirea tot mai sofisticata a statiei client , capabilitatea ca aceasta sa execute mai multe procese in acelasi timp este din ce in ce mai atractiva. Task-uri independente pot fi activate pentru a gestiona procesele de comunicatie, cum sunt email, mesaje news, colectarea de date de la servere remote. Aplicatii cu productivitate cunoscuta ca procesoare de texte si prezentari grafice pot fi atractive. Multe din aceste aplicatii pot fi legate impreuna pentru a furniza informatii despre mediul de procesare. Functii ca DDE sau OLE permit includerea de foi de calcul in documente . Aceste link-uri pot fi active in sensul ca modificari ce se executa in aceste “obiecte” se vor pastra si “updata” in documentul care le poarta.
Dezvoltatorii pot testa aprecia, crea si verifica programe in paralel.
Reducerea traficului de retea
Reducerea traficului de retea se poate face prin cateva metode bine cunoscute:
Minimizarea cererilor – acestea sunt realizate prin ecrane de prezentare. In modelul client/server, este posibil de a introduce scaderi de trafic. In vechile baze de date dBAse, FoxPro, Access sau Paradox, cautarea este un proces pe care il gestioneaza clientul. Toate inregistrarile sunt trimise clientului care va face si filtrarea necesara. In cazul unor baze de date de mari dimensiuni acest lucru este dramatic. Inregistrarile care sunt blocate de un client apar ca “lock-ed” pentru restul clientilor ele neputand fi updatate pana cand proprietarul lor nu va termina tranzactia. Pentru acest motiv modelul server nu este eficient la un nr. mare de utilizatori. OLTP(Online Transaction Processing) in modelul client/server are nevoie de trigere si proceduri stocate. Produse ca Sybase, Ellipse sau Ingres folosesc capacitatile pe care serverele gazda le ofera.
Folosirea cu grija a resurselor de retea
Folosirea aplicatiilor si a serverelor de baze de date pentru a produce un raspuns pentru un set necesar manipularii unor date pot reduce dramatic traficul in reteaua respectiva. Nu exista o valoare adaugata in a muta niste date de pe statia client catre alta zona a retelei. Scaderea maxima a incarcarii retelei se realizeaza atunci cand datele care vin la client sunt doar cele necesare in a popula forma respectiva de interogare.
III.1.1.3 COMPONENTELE APLICATIEI CLIENT/SERVER
Clientul in modelul client/server este statia de lucru. Acceasi statie de lucru daca este folosita in comun de mai multi utilizatori in acelasi timp devine server.
Rolul clientului
In modelul client/server, clientul joaca rolul de consumator al serviciilor provenite de la un server. Modelul face o separare clara intre functiunile bazate pe ideea de servere care furnizeaza servicii ca urmare a cererilor din partea clientilor.
Facilitati cum sunt DDE, OLE sau CORBA permit o foarte usoara comunicare intre un server si un client prin traditionala “cut and paste”.
O statie client foloseste un SO local pentru a acoperi atat serviciile de baza cat si interfata cu sistemul de operare de retea.
Serviciile clientului
Request for service
Statiile client emit cereri pentru un server arondat. Cand acest server este de fapt acelasi procesor sau este un procesor de informatie de retea, formatul cererii este acelasi. NOS software adauga specificatii speciale in cererea trimisa de solicitant.
Comunicarea interproces (IPC) este termenul generic folosit pentru a descrie comunicatiile intre procesele ce ruleaza. In modelul client/server, aceste procese pot fi pe acelasi computer, in aceeasi retea sau distante in Internet.
Cel mai intalnit serviciu furnizat de NOS este redirectarea. Acest serviciu intercepteaza cererile sistemului de operare si le redirecteaza catre serverul sistemului de operare. In acest fel, cererile catre directoarele discului, fisierele, imprimantele , porturile serale sunt interceptate de catre software-ul de redirectare(peste LAN) catre locatia corecta a serverului. Este posibil pentru unele servicii sa fie furnizate de catre client.
Apeluri de proceduri distante
Aceste proceduri permit standardizarea unor proceduri prin care programatorii trebuie sa scrie procedurile astfel incat procedurile distante sa fie recunoscute si interpretate corect.
Fax/Print Services
NOS permite clientului generarea de cereri cand printerul este ocupat. Acestea sunt redirectate de catre NOS redirector si controlate de catre serverul de printare. Clientii pot vedea status-ul cozii de printare in orice moment. Multe servere de printare notifica clientul cand cererea de printate a fost terminata . Serviciile de fax sunt disponibile in aceeasi maniera ca si print serverele, cu aceeasi interfata si notificare.
Servicii de ferestre
O statie client poate avea la un moment dat mai multe ferestre deschise la un moment dat. Capabilitatea de a activa, muta, mari sau ascunde o fereastra este permisa de catre serviciul de control a ferestrelor al sistemului de operare client. Aceste servicii sunt esentiale intr-o implementare client/server, pentru ca acestea interactioneaza cu serviciul de mesaje anuntand utilizatorul asupra diferitelor evenimente.
Servicii de pornire “remote”
Anumite aplicatii opereaza foarte bine pe clienti fara a avea un disk local de stocare date; terminale X sunt exemplele concludente. Statiile client trebuie sa asigure suficient software intr-un EPROM pentru a permite programului de boot care sa activeze acele interfete ce permit incarcarea sistemului din alte medii decat cele locale.
Alte servicii la distanta
Aplicatiile pot fi invocate de pe un client sau a fi executate pe un server la distanta. Procesul de Backup este cel mai intalnit exemplu.
Servicii utilitare
Sistemele de operare permit functiuni locale cum sunt: copiere, lipire, editare, comparare.
Servicii de mesaje
Servicii de baze de date
Schimb de date dinamic
DDE este o facilitate a sistemelor Windows si OS/2 care permite utilizatorilor sa trimita date intre aplicatii de la diferiti furnizori prin suportul unor functii API. De exemplu un chart poate fi legat de o baza de date pentru a permite ultimele grafice atunci cand datele se modifica.
Crearea de obiecte legate sau incluse (OLE)
OLE este o extensie a DDE care permite utilizatorilor ca obiectele sa fie create de catre aplicatii care “nu stiu” cum sa utilizeze acel obiect. Aceasta de fapt va fi o referinta care va folosi componentele ce stiu sa manipuleze aceste date. De exemplu, un document creat cu un procesor de texte poate include o imagine creata cu un packet grafic. Imaginea poate fi convertita intr-o imagine grafica interna folosita de acest procesor de texte cum ar fi WPG. Cu OLE, imaginea poate fi inclusa in forma sa originala in document. Cand imaginea este selectata, atunci packetul care a realizat acea imagine preia controlul manipularii imaginii. Activarea software-ului este total transparenta utilizatorilor .
CORBA
CORBA( Common Object Request Broker Arhitecture) este o specificatie de la OMG(Object Management Group), un consortiu ce vinde sisteme UNIX. OLE accentueaza impartirea de resurse intre aplicatii pe un singur desktop, insa CORBA adreseaza aceste transferuri intre platforme si cum aceste obiecte se pot muta prin retea. CORBA permite clientilor sistemului Windows sau Unix sa imparta obiecte. Un procesor de text care opereaza pe un desktop poate include imagini generate pe o platforma Unix.
Serverul
Serverul este un computer multiuser. Nu exista specificatii speciale care sa faca dintr-un computer obisnuit un server. Platforma hardware trebuie sa fie selectata pe baza cerintelor si economiei. Serverele , pentru aplicatiile client/server lucreaza cel mai bine cand ele sunt configurate cu un sistem de operare care suporta partajarea memoriei, isolarea aplicatiilor, si multitasking.
Serverul asigura controlul asupra resurselor partajate. Aplicatiile de pe un server trebuie sa fie izolate unele de altele pentru ca in cazul unei erori una sa nu o poata strica pe cealalta.
Cel mai intalnit sistem de operare de retea este Novell Netware .
Rolul serverului
Serverele ofera servicii de aplicatii, fisiere, tiparire, fax, imagine, comunicare, securitate, si controlul retelei. Acestea vor fi descrise in cele ce urmeaza.
Este foarte important de a intelege serverul ca si concept nu ca si o implementare fizica. Serviciile client si serverel pot fi oferite de catre acelasi sistem fizic. Aria retelelor se muta la retelele peer (ce pot comunica liber), oferind posibilitatea ca orice “device” sa poata juca atat rol de client cat si de server.
Serverele de aplicatii ofera suportul pentru clienti de a accesa informatii. In modelul client/server aceste servicii pot fi oferite pentru o intreaga organizatie sau doar pentru o parte a acesteia invocata prin IPC (Interprocess Control) . De exemplu, un sistem de salarii poate pastra datele despre angajati pe un server, salariile pe un alt server, iar calculele sa se execute pe un al treilea server. Aceste servere pot rula sisteme de operare diferite si pot fi situate la distanta mare unul de altul. Aplicatia client invoca aceste servicii fara a considera aceste tehnologii sau de a sti de diferentele fizice geografice intre aceste servere.
Serverele de fisiere ofera accesul catre fisierele sale discret catre clienti pe baza politicii de securitate elaborata de administratorii serverului. Exemple de file servere sunt low-end: Novell NetWare, OS/2 sau Windows NT. Clasa de mijloc o ocupa serverele UNIX cu acees via NFS. Ultimul nivel este oferit de mainframe-uri. Servicii de fisiere Serviciile de fisiere se ocupa cu accesul la directoarele si fisierele localizate in zona de stocare a serverului. Aceste servicii sunt posibile prin procesul redirectare existent in sistemul de operare de pe statia client.
Server de calcul
Sunt servere pe care se executa diverse calcule complexe . Acestea au configuratii speciale hardware, multiprocesor. Un exemplu sunt realizarea de programe in domeniul grafic 3D unde sunt simulate miscari complexe cu numar foarte mare de obiecte, rezolutii foarte mari.
Serverele de baze de date sunt controlate de catre motoare ca si Sybase, IBM, Ingres, Informix,sau Oracle. Serverul de fisiere ofera spatiul initial, iar baza de date aloca spatiul pentru tabelele proprii in spatiul alocat de file server.
Aceste masini sunt responsabile pentru a oferi servicii specializate necesare de catre produsele de backup, erori software, sau spatiu insuficient.
Primele tipuri de baze de date erau servere de fisiere cu o interfata diferita. Produse ca dBase, Clipper, FoxPro si Paradox executa motorul de baza de date in principiu pe masina client si foloseste serviciile de fisiere pentru accesul la inregistrari si pentru a obtine controlul spatiului liber.
Alte motoare de baze de date client/server cum sunt Sybase, IBM Database Manager, Ingres, Oracle si Informix aduc nou posibilitatea de a executa cereri SQL emise de la o statie de lucru. Serviciile de fisiere sunt inca folosite pentru a aloca spatiul si servicii de directoare, dar toate celelalte servicii sunt oferite de catre serverul de baze de date.
Dr. Codd a emis 13 reguli care trebuiesc respectate de catre un motor de baza de date pentru a fi compatibil. Iata cateva din standardele la cate trebuie sa se alinieze:
ANSI SQL si IBM DB2
O varietate de aplicatii de nivel inalt
C si COBOL SQL precompilers
Suport pentru: Netware, OS/2, Windows NT, Mac, UNIX
Suport pentru SO client: DOS, Windows, Mac, Unix
Cateva din capabilitatile unei daze de date pentru a asigura o performanta buna este:
Utilitare pentru optimizarea performantei
Anulare tranzactii dinamice
“Roll-back”, “Roll-forward”
Recuperare fisiere auditare
Detectare erori si recuperare
Unelte de reparare
Suport pentru baze de date “mirrored”
Control pentru baze de date distribuite la distanta
Mentenanta pentru acuratete si duplicare fisiere audit.
Intr-o implementare client/server, baza de date trebuie sa ruleze pe server. De aceea motorul bazei de date trebuie sa suporte cereri SQL de la client si sa le execute total pe server, returnand apoi raspunsul celui care a trimis cererea.
Servicii de fax/print/imagine
Imprimantele de inalta calitate, statiile care genereaza faxuri, si plotterele sunt candidati naturali pentru a sustine un server de resurse. Serverul poate accepta intrari de la mai multi clienti, forma coada in functie de prioritatea cererii si rezolvarea ei cand dispozituvul este disponibil.
Serverele de tiparire ofera suport pentru clienti de a primi documente, aranja pentru tiparire, prioritizare a lor. Un server de tiparire eficient va suporta si include modul cum se va comporta in cazul unor probleme fizice de imprimata, notificari client, etc.
Serverele de fax asigura un serviciu similar cu cel de tiparire. In plus, serverele de fax, pot crea cozi de intrare si de iesire pentru o distibutie ulterioara in cazul unor probleme de conexiune sau de aglomerare. Pentru ca faxurile sunt transmise folosind grupa de compresie III sau grupa IV , serverele de fax trebuie sa fie capabile de a comprima sau decomprima in timp real documente pentru a le putea tipari, trimite sau afisa. Acest lucru este posibil printr-o cartela atasata faxului.
Serverele de comunicatie asigura un serviciu de comunicare in retele WAN(wide area network). Acest suport include un subset al IBM SNA, protocoale asincrone, X25,ISDN, TCP/IP, OSI.
Serverele de securitate asigura restrictii de acces pentru software si date accesibile de pe server. Comunicarea este controlata de catre cserverul de comunicare. Folosirea unor nume de utilizator si a unei parole reprezinta minimul de securitate.
Cererea de procesare. Sunt cereri pe care le lanseaza un client catre NOS rezident catre masina client. Aceste cereri sunt impachetate intr-un RPC si trimisa catre nivelul aplicatie al stivei protocolului client. Aceasta cerere este primita de catre nivelul aplicatie.
III.2 Necesitatea de dezvoltare software specializat de retea
Planificarea strategica, dezvoltarea si suportul pentru aplicatiile software este vitala, uneori chiar scumpa, si poate duce a enorme beneficii si reduceri de costuri, timp de prezentare pentru produse noi, customer satisfaction si asa mai departe. Sunt multe oportunitati care infuenteaza si comprima timpul necesar pentru dezvoltarea unei aplicatii – prin folosirea unei strategii unitare . Programele “Total Quality Management” cer ca programele sa fie imbunatatite si dezvoltate continuu. O piata competitiva demonstreaza justa lor valoare.
In practica realizarea unei aplicatii client-server este un lucru care se face destul de usor. Insa extinderea retelelor locale(LAN) de la cateva calculatoare la un parc de cateva zeci sau chiar sute de calculatoare pune probleme in accesarea datelor simultane a mai multor utilizatori. Mai mult utilizatorii pot forma grupuri functionale (de. Ex. Departamente: Tehnic, Contabilitate…etc.) insa dispunerea lor in cadrul retelei sa fie la distanta: ex. o parte din colectivul de la Tehnic sa fie in Ploiesti, o parte in Bucuresti si cealalta parte in Constanta. Toti doresc accesarea datelor ce corespund departamentelor lor.Iata ca programele client trebuie sa aiba capabilitatea de a se integra si comunica intr-o retea extinsa de la LAN la WAN, prin legaturi care sunt destul de diferite ca viteza fiabilitate si care pot avea blocaje sau intreruperi. Aplicatiile trebuie sa stie ce sa faca atunci cand un client a intrerupt legatura (din varii motive) cand incepuse deja sa valideze anumite inregistrari. De asemenea trebuie sa aiba propriul sistem de criptare/decriptate (in afara de autentificarile obisnuite) si pastrare a comenzilor intr-un format care sa permita modificari usoare.
Programatorii de retea trebuie sa cunoasca acele “detalii” ale comunicarii in retea, a tipurilor de interceptare, sau de atacuri asupra informatiei care circula intre client si server. De exemplu se stie ca aplicatia telnet trimite toate comenzile catre server in clar (necriptat) , chiar si autentificarea adica introducerea numelui de utilizator si a parolei se face tot in clar, acest lucru fiind un lucru grav care face ca aceasta comunicatie sa poata fi interceptata.
Prin comunicarea numai a comenzii respective de la client la server si apoi a rezultatului aplicarii comenzii de la server la client traficul intre cele doua masini este redus la minim.
III.2.1. Metode de dezvoltare a sistemelor client/server
Scopul unei asa zise tehnologii este de a descrie un proces prin care o tehnologie poate fi aplicata pentru ca sa poate fi atinse obiectivele propuse. Metodologia trebuie sa descrie procesele implicate de-a lungul intregii vieti al sistemului.
Iata cateva din pasii din metodologia SILC:
Planificarea sistemului
Initializarea planificarii
Culegere de date
Identificarea situatiei curente
Descrierea sistemelor existente
Definire specificatii
Analiza aplicatii si arhitectura de date
Analiza performante tehnice
Pregatire plan de implementare
Pornire proiect
Cerere
Definire relatii in LRP
Initializare proiect
Pregatite faza a doua
Definire arhitectura
Strangere de date
Extindere specificatii la urmatorul nivel
Solutii alternative conceptuale
Dezvoltarea arhitecturii propuse
Selectare produse specifice
Analiza
Strangere date
Dezvoltarea unui model al noii aplicatii de sistem
Definire informatii si specificatii
Pregatire design extern
Proiectare
Post implementare
Suport
III.2.2 Unelte de programare de retea
Astazi sunt disponibile medii de programare cu capabiltati foarte puternice de programare de retea cum sunt:
Delphi Borland ,
Visual Basic
PowerBuilder
Visual C++
Java.
In continuare sunt prezentate cateva din uneltele cela mai cunoscute de programare de retea:
ICONIX PowerTools, este un pachet de aplicatii ce permit dezvoltarea de aplicatii structurate, orientate obiect.
Acest software aduce o suita de conceptein dezvoltarea aplicatiilor client/server , mai multe informatii se pot obtine de la adresa : http://www.biap.com/iconix
Unisys TransIT Open/OLTP este o colectie de unelte de dezvoltare si software de management care ofera module de procesare tranzactii pentru platformele Windows si Windows NT dar si pentru platforme UNIX. Se pot dezvolta foarte repede aplicatii distribuite si scalabile bazate pe standardele existente (X/open si ISO), API de nivel inalt, retele si protocoale. Aceste aplicatii pot amesteca cu usurinta atribute ale diferitelor platforme, UNIX, Windows putand sa integreze si sa sincronizeze multe baze de date prezente pe platforme diferite. Acest software de clasa medie lucreaza foarte bine cu Microsoft sau cu alte aplicatii de dezvoltare si include librarii pentru : C++, C sau COBOL, plus DLL(Dynamic Link Libraries) pentru Windows NT si Windows 9x. De asemnenea pentru plaftormele Windows este disponibil OLE “point-and-click). Pe orice platforma, aceste unelte imbunatatesc accesul la date( exemplu ODBC sa SQL) prin introducerea capabilitatilor cu procesare de tranzactii. Aplicatiile runtime pot asigura replicari pentru servere fara ca acest lucru sa duca la probleme pentru aplicatiile client. Adresa de Internet este: http://www.unisys.com
JAM 7, este un “tool” multiplatforma pentru constructia aplicatiilor distribuite client/server. Este format dintr-un modul grafic pentru desen, si propriul limbaj script numit JPL, un modul Visual de Librarii pentru a permite crearea de obiecte complexe care pot fi partajate ca si ecrane si updatate ca si mostenire. Este format din peste 100 de functii C si diferite alte unelte si utilitare. Aplicatiile dezvoltate in JAM pot rula in peste 100 de platforme nemodificate enumerand doar cateva din acestea: DOS, Windows, Motif, OS/2, Macintosh, VAX, Unix. JAM de asemenea este integrat cu peste 20 de tipuri se servere de baze de date relationale cum sunt: Oracle, Informix, ODBC, DB/2 si altele.
INTERSOLV este unul din liderii pietei de dezvoltare a aplicatiilor client/server. Solutiile dezvoltate se bazeaza pe dezvoltari orientate obiect, sisteme deschise si pe “data warehouse”(baze de date de marimi mari care prin interfete cu diferite platforme pot colecta date din diferite alte baze de date).
Adresa de Internet este http://www.intersolv.com
CS/8000 este unul din sistemele de dezvoltare care se bazeaza pe implementarea metodologiilor in programarea client/server, sisteme expert si arhitecturi speciale de aplicatii client/server.
Cu CS/8000 se poate realiza orice aplicatie client server de orice complexitate. Prin structura sa, CS/8000 prezinta proiectele de lucru sub o forma organizata, avand totodata marele avantaj de a genera in mod automat toata documentatia unui proiect.
Adresa de Internet este: http://www.cs8000.com
CI-Link este un puternic program de dezvoltare situat in clasa de mijloc al aplicatiilor de acest gen, care permite conectari intre baze de date SQL cu baze de date Macintosh. Modulul Ellipse Query este o modul foarte usor de folosit pe platforma Macintosh si Windows.
Adresa de Internet este : http://www.cornut.fr
MAGNA X este o aplicatie de dezvoltare care a revolutionat soft-urile de acest gen din 1990 pana in prezent. Este o aplicatie OLTP de o complexitate medie, care genereaza aplicatii client server concentradu-se mai mult pe dezvoltarea partii de aplicatie server. Partea de aplicatie client poate fi scrisa in orice limbaj incluzand: Power Builder, Visual Basic, Delphi, Java, C sau C++. Daca este folosit PB sau VB atunci se poate folosi “vrajitorul” integrat care automatizeaza construirea aplicatiei fara a scrie linii de cod. Sunt suportate platforme de baze de date ca Oracle, DB/2, Sybase sau Informix.
Dynasty este un adevarat mediu de dezvoltare aplicatii client/server pentru companii. Aduce o reala solutie deschisa, generand cod C adevarat, nativ functie de platforma destinatie. Dintre platformele suportate enumeram: Windows /9x/NT, OS/2, Motif, Macintosh.
Sysdeco este produs de firma Systemator , companie scandinava de software. Aplicatia aduce suport pentru toate etapele de dezvoltare, de la modelarea pana la implementare, testare si intretinere. De asemenea permite conectarea cu diferite servere de baze de date, pe diferite platforme. Printr-o interfata puternica si un dialog grafic foarte bine pus la punct, Systemator aduce un puternic motor de generare prototipuri GUI, facilitand implicarea foarte puternica inca din primele faze ale proiectului. In modulul model designer se pot construi modele abstracte . Modulul “data” este baza aplicatiei fiind folosit pentru generarea structurii bazei de date dar si pentru generarea interfetelor utilizator.
NATSTAR este un mediu de dezvoltare aplicatii client/server care ofera un mediu prietenos bazat orientat pe obiecte.
III.3 Tipuri de servere
Se intalnesc foarte multe tipuri de servere. Cele mai multe aplicatii client/server sunt aplicatii care se inscri in jurul unei baze de date. Cele mai importante tipuri de server sunt, serverele :
de baze de date
fisiere
de calcul
de interogare
O caracteristica majora a majoritatii serverelor este ca ele ruleaza pe sisteme de operare multitasking. In caz contrar partea de multitasking trebuie sa fie asigurata de aplicatia server pentru a permite mai multor utilizatori simultani.
Cateva din avantajele folosirii aplicatiilor client server:
Este un concept care permite statiilor sa fie atat server cat si clienti (in acelasi timp) si sa combine aceste avantaje,
Este foarte flexibil si deschis in special cand se foloseste cu baze de date ce folosesc stocarea unor proceduri de lucru,
Este foarte sigur permitand sa se foloseasca nivele de acces diferite intre statia client si locul de unde acesta citeste sau cere date. Nu se face un acces direct al datelor ci serverul este cel care are drepturi de citire scriere asupra bazei de date critice, urmand ca rezultatele aplicarii cererii trimise de client si aplicate bazei de date sa fie trimise catre client.
Modificarea partii de server nu necesita intotdeauna modificarea partii de client (mai ales atunci cand se folosesc comenzi lansate din consola – exemplu fiind si programul client/server atasat).
Se foloseste puterea de calcul sau interogare a serverului care se presupune ca este o masina puternica(de regula cu un SO multiprocesor), pentru client nefiind necesare decat niste terminale sau PC-uri modeste care primesc deja un raspuns de cantitate mica.
Permite lucrul “on-line” pe aceeasi structura de date a mai multor clienti simultan.
Permite scaderea importantei ca si risc a defectarii oricarui client, pentru ca aplicatia server poate functiona mai departe fara acesta(sau fara unul din ei)
La proiectarea unei aplicatii client/server trebuie sa se tina seama ca cele doua parti sa aiba unul sau mai multe din procesele urmatoare:
Clientul
asigura o interfata cu utilizatorul
interpretarea comenzilor
intrare de date
validare de date
corectare erori
Serverul:
raspunde cererilor clientului
poate deservi mai multi clienti simultan
asigura functionalitati diverse pt. Diferite operatii
permite “record-locking”
gestioneaza resursele
In figura se poate vedea cum serverul poate asigura raspunsuri catre mai multi clienti(aplicatii client) care au solicitat anumite task-uri.
Interfata cu utilizatorul
Aplicatia client gestioneaza interfata cu utilizatorul. Aceasta include afisare ferestre, mouse,, etc.
Interpretare comenzi
Aplicatiile client care permit un limbat bazat pe scripturi, trebuie sa includa si un interpretor de comenzi. Unii clienti trebuie sa aiba capabilitatea de a interpreta parametri si a executa proceduri cand butoanele sunt apasate sau hyperlink-uri selectate. Aceasta poate fi numita interpretare de comenzi.
Intrare de date
Virtual toti clientii trebuie sa aiba un anumit tip de intrare de date. Intrarea de date nu se refera doar la completarea unor forme, ci la orice fel de date intrate in sistem. Un timp de procesare este necesar de fiecare data cand este introdusa o data.
Validare de date
Dupa ce datele sunt introduse intr-o forma, acestea au nevoie de o validare primara. Validarea poate merge pana la a fi sigur daca niste campuri contin niste date de verificat. Validarea se refera si la orice alte verificari facute de client.
Online Help(ajutor imediat)
Majoritatea aplicatiilor inlud si posibilitatea de a obtine asistenta imediata pentru anumite functiuni ale programului
Tratarea erorilor
Sunt multe cazuri in care tratarea erorilor intr-o aplicatie client/server joaca un rol foarte important. Erorile pot aparea din diverse cause , cele mai frecvente sunt: erori de comunicatie, de date, de la echipamente sau alte erori care pot aparea si care trebuie tratate ca atare.
III.4 Configuratii “client-server”
La inceput nu a fost nici un fel de aplicatii client-server. Un terminal simplu(dumb) era legat direct de un computer gazda folosint o linie seriala RS232. Terminalul avea doar o tastatura si un ecran. Ecranul avea capabilitatea de a afisa caractere , cursorul se putea adresa, insa setul de caractere se afla in ROM. Toate aplicatiile rulau pe un singur host.
Tipul “Two-tier” Client Server
Prima generatie de aplicatii client server a fost implementata in doua parti logice. Acesta avea si doua parti logice de asemenea. Aplicatia ra formata din doua module diferite care ruleaza pe calculatoare diferite.
Cantitatea de informatii vehiculata intre client si server determina tipul server-ului “thin” sau “fat”. Modelul “thin” ( subtire) inseamna ca aplicatia client nu are o marime mare si nu ocupa foarte mult din resursele gazdei sale, interactiunea cu utilizatorul se face printr-un GUI. Aplicatiile client” thin” sunt foarte indicate pe calculatoare mai vechi (486, 386) care nu au o putere mare de calcul sau de alta natura(comparativ cu cerintele de astazi).
Nivelul mediu (middleware)
Aplicatia client la aceste tipuri de aplicatii are la baza folosirea unor interfete via API. Cele mai intalnite “middleware” sunt foarte generale si se pot folosi pentru aproape orice tip de aplicatie. Exemple de “middleware”:
TCP/IP
DCE
NetBIOS
Named pipes
LAN Manager
Dezvoltari specifice de “middleware” sunt un nivel deasupra celor de ordin general. Exemple sunt: ODBC pentru servere baze de date, SNMP pentru servere de email, SSL pentru WEB.
Tipul “Three-Tier” Client/Server
Este implementarea care se poate separa in mai mult de doua parti logice.
Schematic aceasta este reprezentata grafic in modelul urmator:
III.5 Protocoale, standarde si sisteme deschise
Comunicatie in retea
Ce este un sistem deschis
Cum un sistem deschis dirijeaza ( face sa functioneze ) reteaua
Ce standarde sunt cerute
Cum sunt dezvoltate standardele pentru protocoale ca TCP / IP
Ce este un protocol
Protocoalele OSI (Open Systems Interconnection)
Comunicatia in retea
Lucrul in retea presupune transmiterea datelor de la un calculator la altul. Acest proces complex poate fi impartit in etape:
Recunoasterea datelor;
Impartirea datelor in blocuri mai usor de manevrat
Adaugarea de informatii fiecarui bloc de date, pentru a
Localiza datele respective
Identifica destinatarul
Adaugarea unor informatii de sincronizare si de verificare a erorilor
Transmiterea datelor in retea
In cadrul fiecare etape, sistemul de operare in retea respecta un set de proceduri stricte, numite protocoale, sau reguli de comportare. Protocoalele contribuie la incheierea cu succes a fiecarei operatii.
Pentru comunicarea intre componentele software sau hardware ale diferitelor producatori, a fost necesara standardizarea protocoalelor. Exista doua seturi principale de standarde :” modelul OSI (Opens Systems Interchange) si o versiune a acestuia, numita Project 802.
O reprezentare clara a acestor modele constituie primul pas in functionarea unei retele.
Sisteme deschise
Nevoia unui standard si a unuia care sa fie disponibil tuturor a fost foarte importanta pentru succesul TCP / IP. Deci, putine cunostinte ajuta la conceperea TCP/IP in perspectiva. Mult mai imporant, sistemele deschise au devenit vitale pe piata competitiva actuala. Termenul de sistem deschis este perceput de multi oameni ca o solutie pentru toate problemele (sa fie inlocuit ocazional de termenul client/server ), dar nici un termen nu este folosit sau inteles cum trebuie. Intelegind ce este un sistem deschis si ceea ce implica acesta conduce la o mai buna constientizare a rolului TCP/IP intr-o retea si intre marile retele cum ar fi Internet. Folosirea standardelor arata ca un protocol ca TCP/IP este acelasi pentru fiecare sistem. Aceasta inseamna ca un PC poate comunica cu un minicomputer care ruleaza TCP / IP fara translatii speciale sau rutine de conversie. Asta inseamna ca o retea intreaga de hardware si sisteme de operare diferite poate lucra cu aceleasi protocoale de retea. Dezvoltarea unui standard nu este un proces fara importanta. Adesea, un singur standard implica mai mult decit un singur document descriind un sistem software. Un standard adesea implica inter-relatii intre diferite protocoale, asa cum face TCP / IP. Se stie ca interactiunile dintre TCP / IP si alte componente ale sistemului de comunicatii sunt importante pentru optimizarea si configurarea potrivita si pentru siguranta ca toate serviciile de care este nevoie sunt disponibile conlucreaza bine..
Ce este un sistem deschis?
Sunt multe definitii ale sistemului de acces. Pentru multi oameni, un sistem deschis este cel mai bine definit ca unul al carei arhitecturi nu este un secret. Descrierea arhitecturii este publicata sau este disponibila tuturor care vor sa construiasca produse pentru o platforma software sau hardware. Aceasta definitie a unui sistem deschis se aplica la fel si pentru hardware si pentru software. Lipsa optiunii in achizitionarea de software si hardware este motivul pentru care companiile au trebuit sa accepte principiile sistemului de acces. Un exemplu de companie care s-a adaptat este Digital Equipment Corporation (DEC). Ei si-au schimbat propriul sistem de operare de pe minicomputerele lor VMS cu un sistem de operare de acces UNIX –M standard. UNIX este un exemplu clasic al unei platforme software de acces. Codul sursa pentru sistemul de operare UNIX a fost inca de la inceput disponibil celor care l-au agreat. Codul sursa al UNIX este usor de inteles si usor de manevrat. UNIX-ul nu este preferat doar pentru trasaturile caracteristice sistemului sau de operare ci si pentru faptul ca un utilizator UNIX poate rula software din alte platforme UNIX, deoarece fisierele sunt compatibile de la un sistem UNIX la altul (exceptind formatul disk). Cresterea utilizarii UNIX-ului a obligat fabricantii de hardware sa produca o versiune de UNIX pentru propriul hardware. Acest pas permit utilizatorilor sa combine diferite sisteme hardware in retele mai mari, toate rulind UNIX-ul si lucrind impreuna.
Protocoalele TCP/IP
Suita protocoalelor TCP/IP asigura suportul pentru a conecta mai multe hosturi, si urmeaza un set de standarde despre cum computerele comunica si cum retelele sunt inter-conectate. Protocoalele TCP/IP respecta conceptul de “4 layer model” numit si modelul DOD respectiv nivelele :
Applicatie
Transport
Internet
Retea
Descrierea layer-elor ce stau la baza protocolului TCP/IP
Prin comunicatiile in sistemele deschise, grupurile sunt destul de evidente. Un grup se ocupa de transportul datelor, un altul cu comprimarea mesajelor , un altul cu aplicatiile utilizatorului final.
Fiecare grup este numit layer.
Layer-ele sunt entitati independente. Ei nu pot realiza de obicei o sarcina fara sa interactioneze cu alte layere. Sunt asteptate reductii ale functionalitatii si sunt propuse citeva cai de acces catre aceasi divizie de layers pentru un protocol de retea. Modelul de referinta de interconectare a sistemelor de acces ( OSI – RM ) foloseste sapte nivele(layere). Arhitectura TCP / IP este similara dar implica numai cinci straturi pentru ca aceasta combina citeva din functionalitatile OSI in doua straturi intr-unul.
Modelul de referinta OSI cu cele 7 layere.
Nivelul aplicatie, prezentare si sesiune sunt toate aplicatii orientate prin faptul ca sunt responsabile pentru presentarea interfetei de aplicare utlizatorului. Cele trei sunt dependente de nivelele(layerele) aflate sub ele si sunt total dedicate mijloacelor prin care datele ajung la aplicatie. Aceste trei nivele se numesc nivele superioare.
Cele patru nivele inferioare se ocupa cu transmiterea de date, acoperind comprimarea, traseul, verificarea si transmisia fiecarui grup de date. Nivelele inferioare nu se ocupa cu tipul de date pe care le primesc sau le trimit aplicatiei, ci are ca sarcina trimiterea acestora. Nivelele inferioare nu fac in nici un fel diferenta intre diverse aplicatii.
Nivelul aplicatie (application layer)
Nivelul aplicatie este interfata end – user la sistemul OSI. Este acolo unde aplicatiile cum ar fi posta electronica, USENET sau module de prezentare baze de date rezida. Sarcina nivelului aplicatie este sa prezinte informatiile primite si sa trimita date noi ale utilizatorului catre nivelele inferioare.
In aplicatiile distribuite, cum ar fi client / siteme server, nivelul aplicatie este acolo unde rezida aplicatia client. Aceasta comunica cu serverul prin layers inferioare. El serveste ca fereastra prin care aplicatiile au acces la serviciile de retea. Acest nivel reprezinta serviciile oferite direct apliicatiilor de utilizator, cum ar fi software pentru tranfer de fisiere, pentru accesul la bazele de date sau pentru posta electronica (e-mail). Nivele inferioare sprijina operatiile efectuate la nivelul aplicatie, acre raspunde de accesul general in retea, controlul fluxului si tratarea erorilor.
Nivelul prezentare (Presentation layer)
Sarcina nivelului prezentare este sa izoleze straturile inferioare de formatul data al aplicatiei. Aceasta converteste datele din aplicatie intr-un format obisnuit, numit adesea reprezentare canonica. Nivelul prezentare proceseaza datele dependente de dispozitiv din nivelul aplicatie intr-un format independent de dispozitiv pentru straturile inferioare.
Statul prezentare este acolo unde formatele fisiere si chiar formatele caracter ( ASCII si EBCDIC ) sunt pierdute. Conversia de la aplicatia format date se ace printr-un “ limbaj de programare in retea comun” (cum acesta este numit in documentele Modelului de Referinta OSI ) care are un format structurat.
Nivelul prezentare gestioneaza conversia de protocoale, conversia si criptarea datelor, modificarea sau conversia setului de caractere, precum si interpretarea comenzilor grafice.
Nivelul prezentare creeaza reversul pentru datele primite.Acestea sunt covertite dintr-un format obisnuit in formate specifice aplicarii, bazate pe tipul de aplicare pentru care dispozitivul are instructiuni. Daca datele intra fara instructiuni reformatate, informatia nu poate fi asamblata intr-o maniera corecta pentru aplicatia utilizatorului.
La acest nivel functioneaza un utilitar numit redirector. Asa cum arata si numele, rolul redirectorului este de a dirija(redirecta) opratiile de intrare /iesirre (I/O) catre resursele de pe un server.
Nivelul sesiune(session layer)
Nivelul sesiune organizeaza si sincronizeaza schimbul de date intre procesele aplicatiei. Aceasta lucreaza cu nivelul aplicatie furnizand seturi de date simple numite puncte de sincronizare care permit unei aplicatii sa stie cum progreseaza receptia si transmisia datelor. In termeni mai simpli, nivelul sesiune poate fi gindit ca un layer de coordonare si flow control. Nivelul sesiune este implicat in comunicatiile coordonatoare intre aplicatii diferite, permitind fiecareia sa stie starea celeilalte. O eroare intr-o aplicatie este corectata de nivelul sesiune permitind aplicatiilor de primire sa stie unde se afla eroarea. Nivelul sesiune poate resincroniza aplicatiile care sunt conectate unele la altele. Aceasta poate fi necesar cind comunicatiile sunt temporar intrerupte sau cind o eroare are loc cauzind pierderea datelor.
Nivelul Transport (transport layer)
Nivelul transport, cum si numele sugereaza este proiectat sa furnizeze “ transferul transparent al datelor de la o sursa cu sistem inchis – deschis la o destinatie cu sistem inchis deschis “ potrivit Modelului de Referinta OSI. Nivelul transport stabileste, mentine si finalizeaza comunicatiile dintre doua mecanisme.
Nivelul transport asigura procesul prin care datele trimise sa se potriveasca cu datele primite.Acest rol de verificator este important deoarece asigura trimiterea corecta a datelor, cu o retrimitere a acestora dac o eroare a fost detectata. El se ocupa cu trimiterea datelor, determinind ordinea si prioritatile acestora. Totodata asigura transportul datelor la destinatie fara erori, in succesiune si fara pierderi sau duplicate. Acest nivel reimpacheteaza mesajele, fragmentandu-le pe cele de mari dimensiuni in mai multe pachete sau concateneaza pachete mai mici intr-un singur pachet eficientizand transmirea lor in retea. La capatul receptor, nivelul transport despacheteaza mesajele, reasamblandu-le in forma originala, si transmite de obicei un semnal de confirmare a primirii.
Nivelul Retea (Network layer)
Nivelul retea furnizeaza ruta fizica a datelor, determinind calea dintre dispozitive. Nivelul retea se ocupa de toate aceste probleme de rute, asistind nivelele superioare din acest punct de vedere.
Nivelul retea examineaza topologia retelei pentru a determina cea mai buna ruta in vederea trimiterii unui mesaj, la fel ca si intelegerea sistemelor de transmisie. Numai el este cel care trimite un mesaj de la sursa la dispozitivul tinta, dirijind alte blocuri de date care trec prin sistem catre alt dispozitiv.
Nivelul legaturii datelor
Nivelul legaturii datelor, potrivit OSI asigura controlul stratului fizic si detecteaza si corecteaza posibilele erori care pot aparea. In practica, "data link layer" este responsabil pentru corectarea erorilor de transmisie induce in timpul transmiterii (ca opuse erorilor din insasi aplicatia de date care sunt rezolvate in nivelul transport).
Stratul legaturii datelor este de obicei legata la semnalul de interferenta de pe agentul de transmisie fizica chiar pe fir de cupru, cablu de fibra optica sau microunde. Interferenta este comuna, rezultind din multe surse, incluzind raze cosmice si interferenta magnetica izolata din alte surse.
Nivelul fizic
Nivelul fizic este cel mai mic strat al modelului OSI si trateaza “ mijloacele mecanice, electrice, functionale si procedurale “ necesare pentru transmiterea datelor, potrivit definitiei OSI. Cind modelul OSI a fost dezvoltat, au aparut multe probleme in legatura cu cele mai joase straturi, deoarece ele sunt, in cele mai multe cazuri, inseparabile. Stratul de legatura al datelor si stratul fizic sunt tratate ca un strat combinat, dar definitia OSI stipuleaza scopuri diferite pentru fiecare.(TCP/IP include stratul de legatura a datelor si stratul fizic ca un strat, recunoscind ca separarea este mai mult academica decit practica ). Fiind cel mai de jos in ierarhia OSI, el transmite un sir de biti “bruti” nestructurat, printr-un mediu fizic(cum ar fi cablul de retea). Nivelul fizic se refera la interfata electrica, optica si mecanica si functionala cu cablul. De asemenea, nivelul fizic transporta semnalele care reprezinta datele generate de nivelele superioare.
Acest nivel defineste modul in care cablul este legat la placa de retea . De exemplu, defineste numarul de pini ai conectorului, precum si functia fiecarui pin. Nivelul fizic este responsabil pentru transmiterea unor siruri de biti(zero si unu) de la un calculator la altul. La acest nivel bitii transmisi nu au o semnificatie. Nivelul defineste codificarea datelor si sincronizarea bitilor, oferind siguranta atunci cand calculatorul emite bitul 1, acesta va fi receptionat drept bit 1 si nu 0. In plus defineste durata unui bit, precum si modul in care fiecare bit este convertit in impulsul electric sau optic corespunzator cablului de retea.
Pachete
Pentru transferul datelor, multe experimente au demonstrat ca la crearea unui bloc uniform de date este de preferat in detrimentul trimiterii caractere in grupuri de marimi variabile si raspindite. De obicei, aceste blocuri de date au citeva informatii inaintea lor numite si antete (header) si uneori un indicator la sfirsitul acestora ("the trailer"). Aceste blocuri de date sunt numite pachete in multe sisteme de comunicatii simultane.
Cantitatea de date dintr-un pachet si compozitia header-ului se pot schimba in functie de protocolul de comunicatii cit si de niste restrictii de sistem, dar conceptul de pachet se refera intotdeauna la un set intreg (incluzind capatul si sfirsitul). Cuvintul pachet este adesea folosit ca o referire la orice grup de date comprimate pentru transmitere. Cum datele unei aplicatii trec prin straturile arhitecturii, fiecare adauga mai multe informatii. Termenul pachet este folosit frecvent la fiecare nivel. Termenul de pachet este folosit in general pentru orice date cu informatii aditionale, in loc de rezultat specific al adaugarii header-ului si trailer-ului unui singur strat.
Subsisteme
Un subsistem este un strat colectiv sau particular dintr-o retea. De exemplu, daca zece calculatoare sunt conectate intre ele, fiecare rulind modelul OSI cu sapte straturi, toate cele zece aplicatii layers sunt aplicatii subsistem, toate cele zece straturi de
legatura dintre date sunt subsisteme de legatura date. Cu Modelul de Referinta OSI sunt sapte subsisteme.
Este posibil ca toate componentele individuale dintr-un sistem sa nu fie active in acelasi timp. Folosind zece calculatoare, numai trei ar putea avea stratul de legatura dintre date activ in orice moment, dar toate zece formeaza subsistemul.
Entitati
Un strat poate avea mai mult decit o parte dintr-o entitate. De exemplu, cablul de transport poate avea rutine care sa verifice sume de control(checksum) la fel ca si rutine care dirijeaza pachete retrimise care n-au fost transferate corect. Aceste rutine nu sunt active imediat pentru ca ele nu ar putea fi solicitate in orice moment. Rutinele active sunt numite entitati. Cuvintul entitate a fost adoptat pentru a gasi un cuvint care n-ar putea fi confundat cu un alt termen cum ar fi modulul, procesul sau sarcina.
Componente TCP / IP
Programul Telnet furnizeaza capabilitatea de logare la distanta. Acesta permite unui user sa se logheze la un alt calculator si sa actioneze ca si cum s-ar afla in fata celui de-al doilea. Conexiunea poate fi facuta pe reteaua locala sau pe alta retea aflata oriunde in lume, atita timp cit utilizatorul are permisiunea sa se logheze la un sistem indepartat.
Se poate utiliza Telnet-ul cind este necesara realizarea unor actiuni pe un alt calculator din tara. Aceasta nu este acceptata decit in context LAN sau WAN , dar citeva sisteme cu accces la Internet permit sesiuni Telnet, in timp ce userii foloses o noua aplicatie sau sistem de operare.
Protocolul transferului de fisiere
Protocoul transferului de fisiere ( FTP ) permite unui fisier sau unui sistem sa fie copiat in alt sistem. Utilizatorul nu se logheaza la alt calculator ca un utilizator cu drepturi depline cum ar face cu programul Telnet dar foloseste in loc programul FTP care-i permite accesul.
Odata ce conectarea la un calculator indepartat a fost stabilit FTP permite copierea unuia sau a mai multor fisiere pe calculatorul personal.( Termenul transfer implica faptul ca fisierul este mutat de la un sistem la altul, cel orginal raminind intact. Fisierele sunt deci copiate). FTP este un serviciu folosit mult pe Internet, la fel ca si pe multe LAN-uri sau WAN-uri.
Protocolul de transfer posta simpla
Protocolul de transfer posta simpla ( SMTP) este folosit pentru transferul postei electronice. SMTP este complet transparent utilizatorului. SMTP se conecteaza la calculatorul indepartat si transfera mesaje postale ca multe fisiere de transfer FTP. SMTP este un protocol care nu creeaza probleme si este foarte folosit.
Kerberos
Kerberos este un protocol de securitate. Kerberos foloseste o aplicatie speciala numita server de autentificare pentru validarea parolei si criptarea sistemelor folosite in comunicatii si este destul de obisnuit in UNIX.
Sistemul nume de domeniu
Sistemul nume de domeniu ( DNS ) permite unui calculator cu nume comun sa fie convertit la o adresa de retea speciala. De exemplu, un PC numit Darkstar nu poate fi accesat de un altul din aceeasi retea ( sau oricare alta retea conectata ) decit daca sunt disponibile niste metode de cautare a numelui calculatorului local si de inlocuire a numelui cu adresa hardware a calculatorului. DNS asigura o conversie de la numele local comun la o adresa fizica unica a dispozitivului conexiunii la retea.
IV. Adresele IP si porturile unei masini:
Adresa IP este un numar pe 32 biti care identifica in mod unic un host (computer sau alt device) intr-o retea TCP/IP. Adresele IP sunt in general scrise sub forma ueni grupari de 4 numere zecimale separate de puncte(asa zisa “dotted separated decimals”), ca de exemplu 24.200.134.24.
Pentru a asigura comunicatia fiecare adresa IP este compusa din doua parti:
adresa de retea – network ID,
adresa de host – host ID.
Pentru a separa aceste adrese se foloseste o masca de biti ex. 255.255.255.0.
In combinatie cu adresa de IP 24.200.134.24 / 255.255.255.0 rezulta ca adresa retelei este 24.200.134.x unde x poate fi cuprins intre 0-254 (reprezentand adresa hostului), cu alte cuvinte exista 254 adrese care se pot aloca pentru subnetul ales.
In cadrul comunicatiei intre doua hosturi via TCP/IP intervin doua aspecte, adresa IP si porturile pe care se face stabileste o sesiune de comunicatie.
Astfel diferite servicii au porturi rezervate (vezi /etc/services sau \Windows\services):
21 – FTP ( file transfer protocol)
23 – Telnet port
25 SMTP (simple mail transfer protocol) – trimitere emailuri
80 – HTTP – hyper text transfer protocol
110 POP3 (Post Office Protocol) – primire emailuri
143 IMAP etc.
Se face o rezervare a acestor porturi pana la 1024, dupa aceea se folosesc porturile pentru initierea diferitelor sesiuni de comunicare(TCP sau UDP).
Inverse look-up sau rezolvarea numelui hostului pe baza adresei IP.
Structura unui packet IP este :
V. Controlul WINSOCK
In cele ce urmeaza este prezentat controlul winsock ca si control folosit in cadrul mediului de programare VisualBasic, mediu utilizat si pentru crearea aplicatiei practice. Acesta are asemanari foarte mari cu controale existente in alte medii do dezvoltare unele dintre acestea fiind chiar identice.
Controlul Winsock, invizibil la utilizator, furnizeazã usor conexiuni intre doua hosturi folosind doua tipuri de protocoale TCP si UDP.
Controlul Winsock se foloseste numai in retele bazate pe suita de protocoale TCP/IP.
Protocolul TCP/IP este un protocol universal compatibil pe computere de la diferiti fabricanti, cu diferite sisteme de operare, permitand acestora comunicarea sigura. Acesta depaseste estimarile initiale ca utilizare mondiala, fiind protocolul pe care se bazeaza comunicarea in reteaua Internet.
Protocolul in sine este privit ca un Open System pentru ca au fost publicate liber toate implementarile sale el cuprinde o suita de protocoale adiacete.
Ca orice protocol de retea acesta este format din layere:
aplicatie: telnet, ftp, email
transport: TCP, UDP
retea: IP, ICMP, IGMP
link: nivel fizic card retea
Responsabilitatile acestor layere sunt dupa cum urmeaza:
Link layer – este numit si layer de date sau layer de retea, si in mod normal include device driverul corespunzator cardului de retea din SO respectiv;
Network Layer – numit si Internet layer are ca rol controlul miscarii pachetelor in retea. Un exemplu este rutarea. IP, ICMP(Internet Control Message Protocol) si IGMP(Internet Group Management protocol) asigura nivelul de retea.
Transport Layer – asigura fluxul de date intre doua hosturi pentru nivelul de dedesupt. Exista doua tipuri de protocoale de transport TCP si UDP(User Datagram Protocol)
Controlul Winsock poate sã fie folosit cu Microsoft Access, Visual Basic, Visual C+ +, sau Visual Foxpro.
Pentru a scrie o aplicatie client sau o aplicatie de server nu este nevoie sa fie folosite detaliile de TCP sau a folosi nivelul de bazã Winsock API. Invocand metodele controlului, se poate cu usurintã sa ne conectam la o masinã de pe Internet, oriunde ar fi aceasta in spatiul public (daca accesul catre IP-ul sau si unul din porturile sale este liber) , prin aceasta putem realiza un schimb de informatii in ambele sensuri.
Aplicatia urmatoare realizeaza acest lucru prin simularea unui server Telnet ce permite o serie de comenzi ce se transmit in final masinii distante.
Protocolul TCP – generalitati
Principiul este foarte simplu utilizand Winsock trebuie doar sa folosim cateva proprietati astfel:
pentru aplicatia client trebuie ca:
sa folosim proprieatea RemoteHost cu IP-ul serverului distant
sa setam RemotePort cu portul folosit pe server;
sa invocam metoda Connect
pentru aplicatia server folosim:
se seteaza LocalPort
se invoca metoda Listen
Cand calculatorul client cere o conexiune, evenimentul ConnectionRequest va fi indeplinit si functie de conditiile de acceptare sau nu se invoca metoda Accept în evenimentul ConnectionRequest.
O datã pe conexiune stabilita orice calculator poate sã expedieze si sã primeascã informatiile. Pentru a expedia informatii, se invoca metoda SendData. Informatia va fi primita de perechea cu care a fost realizata sesiunea respectiva.
Ca o caracteristica protocolul TCP este un protocol bazat pe sesiune ce garanteaza ca pachetele ajung la destinatie intacte.
Protocolul UDP – generalitati.
User Datagram Protocol( UDP) este un protocol de conexiune. Spre deosebire de TCP transmiterea de informati cu protocolul UDP nu are nevoie de o sesiune sigura. De asemenea, o aplicatie UDP poate sã fie ori un client sau un server.
Pentru a transmite informatii, mai întâi aplicatia client trebuie sa aiba configurat portul prin care se va realiza sesiunea cu ajutorul proprietãtii Localport.
Calculatorul(aplicatia) server are nevoie de configurarea proprietatii Remotehost la adresa de Internet a calculatorului clientul, si proprietatea Remoteport la acelasi port ca proprietatea Localport a clientului. Oricare din cele doua aplicatii (server sau client) pot invoca metoda Senddata pentru a începe sã expedieze mesajele. Cealalata aplicatie va folosi metoda Getdata in evenimentul DataArrival pentru a recupera mesajele expediate.
Ca o caracteristica protocolul UDP este un protocol ce nu garanteaza ca pachetele ajung la destinatie intacte, fiind folosit in special acolo unde validarea informatiilor se face la nivelul aplicatiei de baza.
Proprietatile controlului Winsock:
Bytesreceived Property.
Se întoarce cantitatea de informatii primite (în mod curent în primiti tampon).
Se foloseste metoda Getdata pentru a recupera informatiile.
Este RO la momentul proiectarii.
Folosire Winsock.BytesReceived
Intoarce: Long
Proprietatea Index (control ActiveX)
Intoarce sau seteaza numãrul (indexul) care in mod unic identificã un obiect într-o colectie.
Folosire: winsock.Index
Proprietatea Index este setata implicit la creare in ordinea de creare a obiectelor într-o colectie.
Indexul pentru primul obiect într-o colectie va fi întotdeauna 1.
Proprietatea LocalHostName
Intoarce: numele masinii locale(NetBIOS). Este RO si nedisponibila la proiectare.
Sintaxa: winsock.LocalHostName
Intoarce: String
Proprietatea LocalIP
Intoarce IP-ul masinii locale în format ( de adresã IP punctat xxx.xxx.xxx.xxx).
Este RO si nu este disponibila la momentul proiectarii.
Folosire: Winsock.LocalIp.
Proprietatea LocalPort
Intoarce sau seteaza portul local pentru folosire.
Este RW si disponibila la momentul proiectarii.
Pentru client, acesta indicã portul local pentru a trimite informatiile de la sursa la destinatie.
Specificand port 0 aplicatia nu are nevoie de un port specific. În acest caz, controlul va selecta un port aleator. Dupã ce o conexiune este realizata, aceasta este portul local folosit pentru conexiunea TCP.
Pentru server, acesta este portul local pentru a asculta. Dacã este specificat port 0, este folosit un port aleator. Dupã ce invocarea metodei Listen, proprietatea contine portul real care a fost selectat.
Folosire: Winsock. Localport
Intoarce : Long
Proprietatea Name
Intoarce numele folosit in cod pentru a identifica o form, control sau accesa un alt obiect.
Este RO la rulare.
Folosire: Winsock.Name
Remarcã.
Numele implicit pentru obiectele noi este de obicei obiectul plus un întreg unic. De exemplu, primul obiect nou Form este Form1, un obiect nou Mdiform este Mdiform1, si al treilea control Textbox creat pe un formular este Text3.
Proprietatea obiectului Name trebuie sã inceapa cu o literã si sã fie maxim de 40 caractere. El poate sã includã numere si sã contina caracterul de legatura (underscore) dar sã nu includa semne de punctuatie sau spatii.
Formele nu pot avea acelasi nume cu un alt obiect public ca de exemplu Clipboard, Screen, sau App. sau numele unui alt obiect.
Se poate folosi proprietatea formularului Name cu comanda Dim la momentul executiei pentru a crea alte instante ale formularului. Nu pot exista doua formulare cu acelasi nume la design time.
Se poate crea o matrice de controale de acelasi fel setand acelasi nume. De exemplu, când se configureaza numele de toate butoane de optiune într-un grup la Myopt, Visual Basic desemneazã valorile unice la proprietatea Index de fiecare control pentru a îl deosebi de ceilalti în matrice.
Proprietatea Parent
Se întoarce formularul, obiect, sau colectie care contine un control sau un obiect.
Folosire: Winsock.Parent.
Remarcã
Se foloseste proprietatea Parent pentru a accesa accesoriile, metodele, unui pãrinte.
De exemplu:
Mybutton.Parent.Mousepointer =4
Protocol Property( Winsock Control).
Se întoarce sau configureazã protocolul, TCP sau UDP, folosit cu controlul Winsock.
Constanta Valoare Descriere.
scktcpprotocol Implicit. Protocolul TCP.
sckudpprotocol UDP.
Observatii.
Controlul trebuie sã fie închis( folosind metoda Close) înaintea aceasta proprietate sã poatã sã fie sã se initializeze.
Remotehost Property( Activex Controls).
Intoarce sau seteaza numele masinii distanta la care controlul Winsock expedieazã sau primeste o informatii. De exemplu, atunci cand vrem sa ne conectam la o masina distanta putem folosi atat numele “prietenos” al hostului(masinii) respective sau adresa sa unica de IP. De exemplu pentru a folosi serviciul ftp al domeniului microsoft.com , ne vom conecta la :
ftp.microsoft .com sau direct la IP-ul real
RemoteHostIp Property.
Se întoarce IP-ul in format “dotted” al masinii departate.
Pentru aplicatiile de client, dupã ce o conexiune a fost realizata ca urmare a unei metode Connect, aceastã proprietate contine sirul IP al masinii depãrtate.
Pentru aplicatiile de server, dupã ce conexiunea care vine ca si cerere (evenimentul ConnectionRequest), aceastã proprietate contine sirul IP masinii depãrtate care a initiat conexiunea (deci al clientului).
Când folosim protocolul UDP, dupã ce apare evenimentul DataArrival, aceastã proprietate contine IP-ul masinii.
Folosire: Winsock.RemoteHostIp.
Remoteport Property( Activex Controls).
Se întoarce sau configureazã portul depãrtat folosit in sesiunea respectiva.
Folosire : Winsock.RemotePort =.
Remarcã.
Când se foloseste proprietatea Protocol, proprietatea RemotePort este setata în mod automat la portul corespunzãtor implicit pentru fiecare protocol. Numerele de port implicite sunt arãtate în tabel de jos:
Port Descriere
80 HTTP, de obicei folosit pentru conexiunile World Wide Web.
21 FTP. Transfer de fisiere
22 SSH, Remote control sub un mecanism de criptare cu key
23 Telnet
SMTP
Etc.
SocketHandle Property
Returneaza o valoare ce corespunde cu socket-ul pe care controlul il foloseste pentru a comunica cu layer-ul Winsock. Este RO si nu este disponibila decat la run-time dupa realizarea sesiunii.
Sintaxa: Winsock.SocketHandle
Returneaza: Long
Remarca: Aceasta proprietate a fost destinata pentru a fi folosita cu Winsock API.
State Property( Winsock Control).
Se întoarce starea controlului. Este indisponibila la momentul proiectarii.
Folosire: Winsock.State.
Returneaza: Integer
Valorile pentru proprietatea State sunt:
Index Property( Activex Controls).
Intoarce sau seteaza un control array.
METODE controlului Winsock
Accept Method.
Pentru aplicatiile de server de TCP numai. Aceastã metodã are ca rol sa accepte conexiunea care este in curs si apare intr-un eveniment ConnectionRequest.
Folosire: Winsock.Accept Requestid.
Intrare: Long
Intoarce: Void
Observatii.
Metoda Accept este folositã în evenimentul ConnectionRequest. Evenimentul ConnectionRequest are ca argument corespondent, parametrul RequestId, care ar trebui sã fie preluat la metoda Accept.
Close Method( Winsock Control).
Inchide o conexiune TCP sau un Listen socket pentru ambii clienti
Folosire: Winsock.Close
Argumente: fara
Intoarce: Void
Getdata Method( Activex Controls).
Se întoarce informatia din memoria tampon de la obiectul Clipboard.
Nu are argumente.
GetData Method(Winsock Control)
Intoarce blocul curent de date si il pastreaza intr-o variabila
Folosire: Winsock.GetData data, [type,] [maxLen]
GetData are urmatoarele parti:
Alte setari
Valori pentru tipul typefor type are:
Listen Method.
Creeazã o sesiune in cadrul unei aplicatii server. Metoda Listen este valabila numai pentru conexiunile de tip TCP.
Folosire: Winsock.Listen
Argumente: nu
Intoarce: Void
VI. Parte practica
Structura aplicatiei
Aplicatia de Windows Telnet Server
Rolul programului
Aplicatia Extel este un program folosit pentru rularea unor comenzi pe calculatoare distante ce comunica prin protocolul TCP/IP.
Cele doua masini trebuie ca sa aiba portul folosit de telnet liber (nu trebuie sa existe pe masina distanta alt server de Telnet).
Conectarea la aplicatia server se poate face de pe orice platforma fie ea : Windows, Unix sau alta platforma ce are implementat un client de telnet si foloseste protocolul TCP/IP.
Serverul este realizat in Visual Basic versiunea 6.0, si foloseste controlul winsock ce este livrat cu aceasta versiune. Pentru instalare se va folosi kit-ul de instalare obtinut prin “deployment-ul” aplicatiei.
Iata o fereastra tipica pentru un client Telnet Windows oarecare, care incearca o conexiune cu aplicatia practica.
Aplicatia a fost numita ExTel (ExtendedTelnet Server). La conectarea cu un client pe portul telnet 23, serverul raspunde cu mesajul : “Enter login ID”.
Dupa introducerea numelui de utilizator, va fi ceruta parola care nu va aparea in clar la tastare. Daca procesul de autentificare este corect atunci serverul va returna un presudo prompter(initial calea in care se afla aplicatia).
Regula va fi simpla – toate comenzile trimise catre server vor fi cautate intr-o lista predefinita de comenzi, celelalte incercand a fi interpretate ca programe executabile, ducand la incercarea de lansare in executie a acestora. Daca lansarea in executie este facuta cu succes atunci se va returna PID-ul procesului respectiv.
In anexa 1 este prezentat listingul aplicatiei practice.
Caracteristici :
foloseste pentru comunicare protocolul TCP/IP
foloseste portul 23 (telnet) pentru server
aplicatia nu porneste daca pe acest port exista deja o alta aplicatie
este monosesiune (permite unei singure masini, la un moment dat sa se conecteze si sa execute comenzi),
log-on-ul se face cu autentificare de tip user/parola
autentificarea se face in clar
Avantajele folosirii RAS
Prin intermediul unei conexiuni RAS, se pot obtine avantaje cum ar fi:
controlul masinii de la distanta prin rularea unor diferite programe
controlul proceselor (cu posibilitatetea fortarii terminarii lor)
controlul statiei (logoff, shutdown, restart)
vizualizarea diferitelor log-uri
cautarea unor fisiere
lansarea unor utilitare de intretinere
controlul din orice zona a lumii in cazul unei conexiuni la Internet sau din orice zona a retelei locale sau a altei retele in cazul unor interconectari cu alte retele in cazul cand masinile pot fi vizibile (exista rutari ale pachetelor dispre o retea catre alta)
Pericolele unor programe in securitatea unei masini
De-a lungul timpului au fost create multe programe pentru controlul unei masini de la distanta, cu avantajele enumerate mai devreme, insa uneori exista pericolul ca aceste programe sa fie ascunse in aplicatii care fac de obicei cu tottul altceva.
De exemplu, o aplicatie gratuita permite vizualizarea tuturor tipurilor de fisiere grafice, insa pe langa acest lucru aceasta aplicatie la anumite momente poate declansa(folosind ca trigger existenta conexiunii la Internet) partea de aplicatie care permite fara ca utilizatorul sa stie conectarea de catre persoane straine(fie ele cei care au elaborat programul) si sustragerea de informatii sau chiar simpla scanare a discurilor utilizatorilor. Aceste programe sunt cunoscute ca si cai-troieni.
Utilizatorul trebuie sa cunoasca aceste posibilitati de patrundere in calculatoarele proprii prin audit-uri asupra starii tuturor porturilor deschise la un moment dat, fie prin instalarea unor filtre numite si firewall-uri.
Platforma Windows este cunoscuta prin extrem de slaba gestiune a programelor care pot deschide/folosi aceste porturi incat instalarea unor aplicatii third-party este absolut necesara.
Firewall necesar in comunicatii intre retele
VII. Concluzii
Folosirea tehnologiei client/server aduce scaderea costurilor globale in administrarea diferitelor servere sau servicii, permitand atat un control centralizat cat mai ales un control pe masura nevoilor din orice punct al retelei.
Anexa
Listing Aplicatie
FORMA
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Boolean
Dim UserID As String
Dim Password As String
Dim AcceptedId As Boolean
Dim SuccessLoging As Boolean
Dim UserCommand As String
Dim SaveMode As Boolean
Private Sub InitVariable()
Prompt = "C:\"
pwd = App.Path
Prompt = pwd + " "
End Sub
Private Sub cmdDespreAplicatie_Click()
MsgBox "Telnet Server, monouser", vbOKOnly, "Telnet server/monouser"
End Sub
Private Sub cmdDespreAutor_Click()
MsgBox "Cristian Nica – PUI", vbOKOnly, "Telnet server/monouser"
End Sub
Private Sub cmdInchide_Click()
End
End Sub
Private Function cor_str(s As String) As String
If Right$(s, 1) = "\" Then
cor_str = s
Else
cor_str = s + "\"
End If
End Function
Private Sub Form_Load()
Winsock1.LocalPort = 23
Winsock1.Listen
UserID = ""
Password = ""
UserCommand = ""
AcceptedId = False
SuccessLoging = False
InitVariable
End Sub
Private Sub List1_Click()
Dim buffer
buffer = List1.List(List1.ListIndex)
MsgBox Mid$(buffer, 1, Len(buffer) – 5)
MsgBox FindWindow(vbNullString, Mid$(buffer, 1, Len(buffer) – 5))
AppActivate Mid$(buffer, 1, Len(buffer) – 5)
End Sub
Private Sub Winsock1_Close()
Winsock1.Close
Winsock1.LocalPort = 23
Winsock1.Listen
UserID = ""
Password = ""
UserCommand = ""
AcceptedId = False
SuccessLoging = False
lblRemoteIP.Caption = "no connection…"
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
Winsock1.SendData "––/// WELCOME to ExtTel \\\––" & vbCrLf
Winsock1.SendData "ExtTel este un server TELNET monouser" & vbCrLf
Winsock1.SendData "conexiunea primita de la: " & Winsock1.RemoteHostIP & " este acceptata." & vbCrLf & vbCrLf
Winsock1.SendData "Enter LoginID: "
lblRemoteIP.Caption = Winsock1.RemoteHostIP
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim str1 As String
Dim MyName As String
Dim dirlist() As String
Dim DirPointer As Integer
Dim ii As Integer
Dim cmd As String, par1 As String, par2 As String
Dim poz1 As Integer, poz2 As Integer
Dim rezult As Double, vb_type As String
Dim spatii_albe As Integer
Dim cls As Class1, xxx As Integer, i As Integer
Dim buffer As String
Dim bucata As String * 4096
Dim temp As Double, dd As Integer
Dim total_bytes As Double, total_fisier As Double
Dim calefis As String
On Error GoTo eroare
Winsock1.GetData str1
If SuccessLoging Then
If Asc(str1) = 13 Then
'folosesc spatiu ca separator
poz1 = InStr(1, UserCommand, " ")
poz2 = InStr(poz1 + 1, UserCommand, " ")
If poz1 <> 0 Then
If poz2 <> 0 Then
cmd = Mid$(UserCommand, 1, poz1 – 1)
par1 = Trim(Mid$(UserCommand, poz1, poz2 – poz1))
par2 = Trim(Mid$(UserCommand, poz2, Len(UserCommand) – poz2 + 1))
Else
cmd = Mid$(UserCommand, 1, poz1 – 1)
par1 = Trim(Mid$(UserCommand, poz1 + 1, Len(UserCommand) – poz1 + 1))
End If
Else
cmd = UserCommand
End If
If cmd = "scandisk" Then
rezult = Shell(cmd, vbNormalFocus)
Sleep (2000)
SendKeys ("~")
Winsock1.SendData vbCrLf & "executat cu PID:" & rezult & vbCrLf & Prompt
ElseIf cmd = "ping" Then
PingHost (par1)
ElseIf cmd = "format" Then
rezult = Shell("format.com a:\", vbNormalFocus)
Winsock1.SendData vbCrLf & rezult
ElseIf cmd = "wordpad" Then
rezult = Shell("c:\program files\accessories\wordpad.exe", vbNormalFocus)
Winsock1.SendData vbCrLf & rezult
ElseIf cmd = "listtask" Then
FillTaskListBox Form1.List1, False
Winsock1.SendData vbCrLf
For i = 0 To List1.ListCount – 1
spatii_albe = 3 – Len(CStr(i))
Winsock1.SendData i & Space$(spatii_albe) & List1.List(i) & vbCrLf
Next i
ElseIf cmd = "killtask" Then
If IsNumeric(par1) Then
CloseWindow (par1)
Else
Winsock1.SendData vbCrLf & "numerical value expected…" & vbCrLf
End If
ElseIf cmd = "activate" Then
If IsNumeric(par1) Then
buffer = Form1.List1.List(par1)
AppActivate Mid$(buffer, 1, Len(buffer) – 5)
End If
ElseIf cmd = "fdisk" Then
rezult = Shell("fdisk", vbNormalFocus)
Winsock1.SendData vbCrLf & rezult
ElseIf cmd = "mkdir" Or cmd = "md" Then
MkDir cor_str(pwd) & par1
Winsock1.SendData vbCrLf & cor_str(pwd) & par1
ElseIf cmd = "cat" Or cmd = "type" Then
Winsock1.SendData vbCrLf
If Mid(par1, 2, 1) = ":" Then
calefis = par1
Else
calefis = pwd + "\" + par1
End If
If Dir(calefis, vbNormal) <> "" Then
'verifica cale root
Open calefis For Binary As #1
buffer = Input(4196, 1)
Winsock1.SendData buffer: Close #1
Else
Winsock1.SendData vbCrLf & "ma tem ca fisierul " & UCase$(calefis) & " nu exista…" & vbCrLf
End If
Winsock1.SendData vbCrLf
ElseIf cmd = "del" Or cmd = "rm" Or cmd = "remove" Then
If par1 <> "" Then
Kill par1
Winsock1.SendData vbCrLf & "fisier sters" & vbCrLf
Else
Winsock1.SendData vbCrLf & "folositi: del path+nume_fisier…" & vbCrLf
End If
ElseIf cmd = "trimite" Then
SendKeys par1, True
Winsock1.SendData "Am trimis " & par1 & vbCrLf
ElseIf cmd = "search" Then
Winsock1.SendData vbCrLf
Call FileSearch(par1, par2, False)
Winsock1.SendData vbCrLf
ElseIf cmd = "ftp" Then
rezult = Shell(cmd & " " & par1, vbNormalFocus)
Winsock1.SendData vbCrLf & "executat cu PID:" & rezult & vbCrLf & Prompt
ElseIf cmd = "cd" Then
If Mid$(par1, 2, 1) = ":" Then
If Dir(par1, vbDirectory) <> "" Then
pwd = cor_str(par1)
Prompt = pwd + " "
End If
Else
If Dir(cor_str(pwd) + par1, vbDirectory) <> "" Then
pwd = cor_str(pwd) + par1
Prompt = pwd + " "
End If
End If
Winsock1.SendData vbCrLf & "Director curent: " & pwd
ElseIf Trim(cmd) Like "exit" Then
Winsock1_Close
cmd = ""
ElseIf Trim(cmd) Like "pwd" Then
Winsock1.SendData vbCrLf & "Directory is: " & pwd & vbCrLf
cmd = ""
ElseIf Trim(cmd) Like "time" Then
Winsock1.SendData vbCrLf & Time & vbCrLf
Winsock1.SendData Prompt
cmd = ""
ElseIf Trim(cmd) Like "help" Then
Winsock1.SendData "Lista comenzi:" & vbCrLf
buffer = ""
buffer = buffer & vbCrLf & "scandisk format date"
buffer = buffer & vbCrLf & "wordpad fdisk mkdir"
buffer = buffer & vbCrLf & "cat type del"
buffer = buffer & vbCrLf & "rm remove cat type"
buffer = buffer & vbCrLf & "trimite search ftp"
buffer = buffer & vbCrLf & "cd exit pwd"
buffer = buffer & vbCrLf & "time help gethostname"
buffer = buffer & vbCrLf & "shutdown reboot logoff"
buffer = buffer & vbCrLf & "dir ls minimizeaza"
buffer = buffer & vbCrLf & "listtask killtask activate"
buffer = buffer & vbCrLf & "maximizeaza"
Winsock1.SendData buffer & vbCrLf
cmd = ""
ElseIf Trim(cmd) Like "gethostname" Then
Winsock1.SendData "Retrieved : " & Winsock1.LocalHostName
cmd = ""
ElseIf Trim(cmd) Like "shutdown" Then
Winsock1.SendData "Shutting down…"
Call ExitWindowsEx(1, 0)
ElseIf Trim(cmd) Like "reboot" Then
Winsock1.SendData "Rebooting…"
Call ExitWindowsEx(2, 0)
ElseIf Trim(cmd) Like "format" Then
Winsock1.SendData "Formatting…"
ElseIf Trim(cmd) Like "minimizeaza" Then
Winsock1.SendData "Minimizeaza…"
Me.WindowState = 1
ElseIf Trim(cmd) Like "maximizeaza" Then
Winsock1.SendData "Maximizeaza…"
Me.WindowState = 0
ElseIf Trim(cmd) Like "logoff" Then
If SaveMode = True Then
Winsock1.SendData "This command is currently unavailable"
Else
Winsock1.SendData "Log Off…"
Call ExitWindowsEx(0, 0)
End If
ElseIf cmd Like "dir*" Or cmd Like "ls*" Then
If Len(par1) >= 3 Then
If Right$(par1, 1) <> "\" Then par1 = par1 + "\"
par1 = Mid$(cmd, 4, Len(par1) – 3)
Else
par1 = pwd
If Right$(par1, 1) <> "\" Then par1 = par1 + "\"
End If
Winsock1.SendData vbCrLf & "Listare continut pt.: " & par1 & vbCrLf
DirPointer = 1
par1 = Trim(par1)
MyName = Dir(par1, vbDirectory)
Do While MyName <> ""
On Error Resume Next
If MyName <> "." And MyName <> ".." Then
If (GetAttr(par1 & MyName) And vbDirectory) = vbDirectory Then
vb_type = "dir"
Else
vb_type = "file – " & FileLen(cor_str(pwd) + MyName)
End If ' este director !
ReDim Preserve dirlist(1 To DirPointer)
spatii_albe = 25 – Len(MyName)
dirlist(DirPointer) = MyName & Space(spatii_albe) & vb_type
total_bytes = total_bytes + FileLen(cor_str(pwd) + MyName)
DirPointer = DirPointer + 1
End If
MyName = Dir
Loop
For ii = 1 To DirPointer – 1
Winsock1.SendData dirlist(ii) & vbCrLf
Next
Winsock1.SendData "total_bytes = " & total_bytes & " bytes" & vbCrLf & Prompt 'Display the prompt
cmd = ""
Else 'n-am gasit nici o commanda din acele specificate
On Error Resume Next
If Trim(cmd) <> "" Then
rezult = Shell(cmd, vbNormalFocus)
If rezult = 0 Then
Winsock1.SendData vbCrLf & "error starting program…." & vbCrLf & Prompt
Else
Winsock1.SendData vbCrLf & "executat cu PID:" & rezult & vbCrLf & Prompt
End If
cmd = ""
End If
Winsock1.SendData vbCrLf & Prompt
End If
cmd = "": UserCommand = ""
Else
Winsock1.SendData str1
UserCommand = UserCommand + str1
End If
Else '<> #13
If AcceptedId And Asc(str1) = 13 Then
Winsock1.SendData vbCrLf & "Verifying your login information…." & vbCrLf
If UserID = "cris" And Password = "cris" Then
Winsock1.SendData "Telnet server " & vbCrLf & vbCrLf & Prompt
SuccessLoging = True
Else
AcceptedId = False
UserID = ""
Password = ""
Winsock1.SendData "Enter LoginID : "
Exit Sub
End If
ElseIf Asc(str1) = 13 Then
Winsock1.SendData str1 & "Enter Password:"
AcceptedId = True
Exit Sub
ElseIf Not AcceptedId Then
Winsock1.SendData str1
End If
If AcceptedId Then
Password = Password & str1
Else
UserID = UserID & str1
End If
End If
Exit Sub
eroare: Winsock1.SendData vbCrLf & Err.Description & vbCrLf
cmd = "": par1 = "": par2 = ""
Winsock1.SendData vbCrLf & Prompt
Resume Next
End Sub
MODULE
Global Prompt As String
Global pwd As String
Dim s As Integer
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function SwapMouseButton& Lib "user32" (ByVal bSwap As Long)
Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Const WM_CLOSE = &H10
Private Const LB_ADDSTRING = &H180
Private Const LB_SETITEMDATA = &H19A
Public Function FillTaskListBox(lst As ListBox, How) As Long
On Error GoTo ERROR_FillTaskListBox
lst.Clear
Call EnumWindows(AddressOf EnumWindowsProc, lst.hWnd)
FillTaskListBox = lst.ListCount
GoTo END_FillTaskListBox
ERROR_FillTaskListBox:
Debug.Assert Err = 0
END_FillTaskListBox:
On Error Resume Next
End Function
Private Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
On Error GoTo ERROR_EnumWindowsProc
Static WindowText As String
Static nRet As Long
Static ICount As Integer
If IsWindowVisible(hWnd) Then
If GetParent(hWnd) = 0 Then
If GetWindowLong(hWnd, GWL_HWNDPARENT) = 0 Then
WindowText = Space$(256)
nRet = GetWindowText(hWnd, WindowText, Len(WindowText))
If nRet Then
ICount = ICount + 1
WindowText = Left$(WindowText, nRet) & " PID=" & hWnd
nRet = SendMessage(lParam, LB_ADDSTRING, 0, ByVal WindowText)
Call SendMessage(lParam, LB_SETITEMDATA, nRet, ByVal hWnd)
End If
End If
End If
End If
EnumWindowsProc = True
GoTo END_EnumWindowsProc
ERROR_EnumWindowsProc:
Debug.Assert Err = 0
END_EnumWindowsProc:
On Error Resume Next
End Function
Sub CloseWindow(index As Integer)
On Error GoTo ERROR_CloseWindow
If index < 0 Or index > Form1.List1.ListCount Then Exit Sub
strwin = Mid$(Form1.List1.List(index), 1, Len(Form1.List1.List(index)) – 5)
Dim winHwnd As Long
Dim RetVal As Long
winHwnd = FindWindow(vbNullString, strwin)
If winHwnd <> 0 Then
RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
If RetVal = 0 Then
Form1.Winsock1.SendData "Error_Closing," & "Error closing " & strwin & "."
Else
Form1.List1.RemoveItem (index)
End If
Else
Form1.Winsock1.SendData "Not_Open," & strwin & " is not open."
End If
GoTo END_CloseWindow
ERROR_CloseWindow:
Debug.Assert Err = 0
END_CloseWindow:
On Error Resume Next
End Sub
Public Function Fisier(str As String) As Boolean
On Error GoTo ERROR_Fisier
Fisier = Len(Dir(str)) <> 0
GoTo END_Fisier
ERROR_Fisier:
Debug.Assert Err = 0
END_Fisier:
On Error Resume Next
End Function
Sub PingHost(strAddress As String)
On Error GoTo ERROR_PingHost
Dim PINGit As Class1, Result As Boolean
Set PINGit = New Class1
Result = PINGit.DoPing(strAddress)
If Result Then
Form1.Winsock1.SendData "….Host " & PINGit.LastIP & " is online." & vbCrLf
Else
Form1.Winsock1.SendData vbCrLf & "…Unable to establish a connection with " & strAddress & vbCrLf & "The user is either offline or unavailable." & vbCrLf
End If
GoTo END_PingHost
ERROR_PingHost:
Debug.Assert Err = 0
END_PingHost:
On Error Resume Next
End Sub
Private Sub roteste()
If s = 0 Then
Form1.Winsock1.SendData "-" & Chr(8)
ElseIf s = 1 Then
Form1.Winsock1.SendData "\" & Chr(8)
ElseIf s = 2 Then
Form1.Winsock1.SendData "|" & Chr(8)
ElseIf s = 3 Then
Form1.Winsock1.SendData "/" & Chr(8)
ElseIf s = 4 Then
Form1.Winsock1.SendData "-" & Chr(8)
End If
s = s + 1
If s = 5 Then s = 0
End Sub
Public Sub FileSearch(DrivePath As String, Ext As String, Dirs As Boolean)
On Error GoTo eroare
Dim XDir() As String
Dim TmpDir As String
Dim NormalFiles As String, SysFiles As String, HidFiles As String
Dim DirCount As Integer
Dim X As Integer
Dim Data_FileName() As String
Dim Data_Num_Dirs
Dim Data_Num_Files
Dim lista As Double
DirCount = 0: lista = 0
ReDim XDir(0) As String
XDir(DirCount) = ""
If Right(DrivePath, 1) <> "\" Then
DrivePath = DrivePath & "\"
End If
DoEvents
TmpDir = Dir(DrivePath, vbDirectory)
If Dirs Then
Form1.Winsock1.SendData DrivePath & NormalFiles
lista = lista + 1
Data_Num_Dirs = lista
ReDim Preserve Data_FileName(Data_Num_Dirs + 1)
Data_FileName(Data_Num_Dirs) = DrivePath & NormalFiles
End If
Do While TmpDir <> ""
If TmpDir <> "." And TmpDir <> ".." Then
If (GetAttr(DrivePath & TmpDir) And vbDirectory) = vbDirectory Then
XDir(DirCount) = DrivePath & TmpDir & "\"
DirCount = DirCount + 1
ReDim Preserve XDir(DirCount) As String
End If
End If
TmpDir = Dir
Loop
If Not Dirs Then
NormalFiles = Dir(DrivePath & Ext, vbNormal)
Do Until NormalFiles = ""
ReDim Preserve Data_FileName(Data_Num_Files + 1)
Data_FileName(Data_Num_Files) = DrivePath & NormalFiles
lista = lista + 1
Form1.Winsock1.SendData Data_FileName(Data_Num_Files) & vbCrLf
NormalFiles = Dir
i = i + 1
Data_Num_Files = i
Loop
End If
For X = 0 To (UBound(XDir) – 1)
If Dirs Then
FileSearch XDir(X), Ext, True
Else
FileSearch XDir(X), Ext, False
End If
Next X
Call roteste
Exit Sub
eroare:
End Sub
CLASS
Option Explicit
Private Const IP_STATUS_BASE = 11000
Private Const IP_SUCCESS = 0
Private Const IP_BUF_TOO_SMALL = (IP_STATUS_BASE + 1)
Private Const IP_DEST_NET_UNREACHABLE = (IP_STATUS_BASE + 2)
Private Const IP_DEST_HOST_UNREACHABLE = (IP_STATUS_BASE + 3)
Private Const IP_DEST_PROT_UNREACHABLE = (IP_STATUS_BASE + 4)
Private Const IP_DEST_PORT_UNREACHABLE = (IP_STATUS_BASE + 5)
Private Const IP_NO_RESOURCES = (IP_STATUS_BASE + 6)
Private Const IP_BAD_OPTION = (IP_STATUS_BASE + 7)
Private Const IP_HW_ERROR = (IP_STATUS_BASE + 8)
Private Const IP_PACKET_TOO_BIG = (IP_STATUS_BASE + 9)
Private Const IP_REQ_TIMED_OUT = (IP_STATUS_BASE + 10)
Private Const IP_BAD_REQ = (IP_STATUS_BASE + 11)
Private Const IP_BAD_ROUTE = (IP_STATUS_BASE + 12)
Private Const IP_TTL_EXPIRED_TRANSIT = (IP_STATUS_BASE + 13)
Private Const IP_TTL_EXPIRED_REASSEM = (IP_STATUS_BASE + 14)
Private Const IP_PARAM_PROBLEM = (IP_STATUS_BASE + 15)
Private Const IP_SOURCE_QUENCH = (IP_STATUS_BASE + 16)
Private Const IP_OPTION_TOO_BIG = (IP_STATUS_BASE + 17)
Private Const IP_BAD_DESTINATION = (IP_STATUS_BASE + 18)
Private Const IP_ADDR_DELETED = (IP_STATUS_BASE + 19)
Private Const IP_SPEC_MTU_CHANGE = (IP_STATUS_BASE + 20)
Private Const IP_MTU_CHANGE = (IP_STATUS_BASE + 21)
Private Const IP_UNLOAD = (IP_STATUS_BASE + 22)
Private Const IP_ADDR_ADDED = (IP_STATUS_BASE + 23)
Private Const IP_GENERAL_FAILURE = (IP_STATUS_BASE + 50)
Private Const MAX_IP_STATUS = IP_STATUS_BASE + 50
Private Const IP_PENDING = (IP_STATUS_BASE + 255)
Private Const PING_TIMEOUT = 10000
Private Const WSADESCRIPTION_LEN = 256
Private Const WSASYSSTATUS_LEN = 256
Private Const WSADESCRIPTION_LEN_1 = WSADESCRIPTION_LEN + 1
Private Const WSASYSSTATUS_LEN_1 = WSASYSSTATUS_LEN + 1
Private Const SOCKET_ERROR = -1
Private Type IP_OPTION_INFORMATION
TTL As Byte
Tos As Byte
Flags As Byte
OptionsSize As Byte
OptionsData As Long
End Type
Private Type ICMP_ECHO_REPLY
Address As Long
Status As Long
RoundTripTime As Long
DataSize As Integer
Reserved As Integer
DataPointer As Long
Options As IP_OPTION_INFORMATION
Data As String * 128
End Type
Private Type Inet_Address
Byte4 As String * 1
Byte3 As String * 1
Byte2 As String * 1
Byte1 As String * 1
End Type
Private Type hostent
h_name As Long
h_aliases As Long
h_addrtype As Integer
h_length As Integer
h_addr_list As Long
End Type
Private Type tagWSAData
wVersion As Integer
wHighVersion As Integer
szDescription As String * WSADESCRIPTION_LEN_1
szSystemStatus As String * WSASYSSTATUS_LEN_1
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As String * 200
End Type
Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long
Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal IcmpHandle As Long) As Long
Private Declare Function IcmpSendEcho Lib "icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Integer, RequestOptions As IP_OPTION_INFORMATION, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal Timeout As Long) As Long
Private Declare Function WSAStartup Lib "wsock32" (ByVal wVersionRequested As Integer, lpWSAData As tagWSAData) As Integer
Private Declare Function WSACleanup Lib "wsock32" () As Integer
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal addr As String) As Long
Private Declare Function inet_ntoa Lib "wsock32.dll" (ByVal addr As Long) As Long
Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long
Private Declare Function GetHostName Lib "wsock32.dll" Alias "gethostname" (ByVal HostName As String, HostLen As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
Private IPLong As Inet_Address
Public Event PingError(peErrDescription As String)
Private m_lastIP As String
Public Event PingOK(poSpeed As Long)
Public Function DoPing(ByVal HostAddress As String) As Boolean
Dim hFile As Long
Dim lRet As Long
Dim lIPAddress As Long
Dim strMessage As String
Dim pOptions As IP_OPTION_INFORMATION
Dim pReturn As ICMP_ECHO_REPLY
Dim iVal As Integer
Dim pWsaData As tagWSAData
Dim buffsize As Long
Dim TTL As Byte
buffsize = 128
TTL = 255
strMessage = "ICMP ECHO DATA"
iVal = WSAStartup(&H101, pWsaData)
lIPAddress = inet_addr(ICMPGetHostByName(HostAddress))
hFile = IcmpCreateFile()
pOptions.TTL = TTL
lRet = IcmpSendEcho(hFile, lIPAddress, strMessage, Len(strMessage), pOptions, pReturn, Len(pReturn), PING_TIMEOUT)
If lRet = 0 Then
DoPing = False
RaiseEvent PingError("PING failure! Error = " & pReturn.Status)
Else
If pReturn.Status <> 0 Then
DoPing = False
RaiseEvent PingError("PING failure! Error = " & pReturn.Status)
Else
DoPing = True
RaiseEvent PingOK(pReturn.RoundTripTime)
End If
End If
lRet = IcmpCloseHandle(hFile)
iVal = WSACleanup()
End Function
Public Function ICMPGetHostByName(Host As String) As String
Dim szString As String
Dim PointerToPointer As Long
Dim hostent As hostent
Dim ListAddress As Long
Dim ListAddr As Long
Dim Address As Long
szString = String(64, &H0)
Host = Host + Right$(szString, 64 – Len(Host))
PointerToPointer = GetHostByName(Host)
If PointerToPointer = -1 Then
ICMPGetHostByName = "0"
Else
If PointerToPointer <> 0 Then
CopyMemory hostent.h_name, ByVal PointerToPointer, Len(hostent) ' Copy Winsock structure to the VisualBasic structure
ListAddress = hostent.h_addr_list ' Get the ListAddress of the Address List
CopyMemory ListAddr, ByVal ListAddress, 4 ' Copy Winsock structure to the VisualBasic structure
Dim barray(128) As Byte
CopyMemory barray(1), ByVal ListAddr, 32
Dim i As Integer
CopyMemory Address, ByVal ListAddr, 4 ' Get the first list entry from the Address List
m_lastIP = vbInet_Ntoa(Address)
Else
m_lastIP = "Not There"
End If
End If
ICMPGetHostByName = m_lastIP
End Function
Public Function vbInet_Ntoa(ByVal Address As Long) As String
On Error GoTo error
CopyMemory IPLong, Address, 4
vbInet_Ntoa = CStr(Asc(IPLong.Byte4)) + "." + CStr(Asc(IPLong.Byte3)) + "." + CStr(Asc(IPLong.Byte2)) + "." + CStr(Asc(IPLong.Byte1))
Exit Function
error:
End Function
Public Property Get LastIP() As String
LastIP = m_lastIP
End Property
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Realizarea Programelor de Retea Bazate pe Tehnologii Client Server (ID: 149164)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
