+ All Categories
Home > Documents > Programarea Retelelor - CURS

Programarea Retelelor - CURS

Date post: 06-Jul-2018
Category:
Upload: marius-tranca
View: 246 times
Download: 4 times
Share this document with a friend

of 85

Transcript
  • 8/18/2019 Programarea Retelelor - CURS

    1/85

    PROGRAMAREA

    RE

    ŢELELOR DE

    CALCULATOARE

  • 8/18/2019 Programarea Retelelor - CURS

    2/85

    CUPRINS1. REŢELE DE CALCULATOARE. PROTOCOALE

    1.1. Componentele reţelelor de calculatoare

    1.2. Modele de referinţă.1.2.1. Modelul OSI1.2.2. Modelul TCP/IP1.2.3. Modelul client – server 1.2.4. Probleme generale de proiectare

    1.3. Familia de protocoale TCP/IP1.3.1. Nivelul reţea: IP1.3.2. Nivelul transport: UDP şi TCP1.3.3. Nivelul aplicaţie 2

  • 8/18/2019 Programarea Retelelor - CURS

    3/85

    1. REŢELE

    DE CALCULATOARE.

    PROTOCOALE

    1.1. Componentele reţelelor de calculatoare1.2. Modele de referinţă.1.2.1. Modelul OSI1.2.2. Modelul TCP/IP1.2.3. Modelul client – server 1.2.4. Probleme generale de proiectare

    1.3. Familia de protocoale TCP/IP1.3.1. Nivelul reţea: IP1.3.2. Nivelul transport: UDP şi TCP1.3.3. Nivelul aplicaţie

    3

  • 8/18/2019 Programarea Retelelor - CURS

    4/85

    • O reţea de calculatoare este formatădintr-un grup decalculatoare (de orice tip) şi periferice care partajeazăresursele. Tendinţa actualăa utilizatorilor o reprezintăfolosirea calculatoarelor, nu izolat, ci cuplate într -oreţea.

    • Termenul re ţ ea de calculatoare are cel pu ţ in dou ăutilizări distincte:

    1. mai multe calculatoare, î mpreun ă cu un sistem(hard+soft) de comunica ţ ii

    2. un sistem de calcul , bazat pe o re ţ ea î n sensul 1, dar comport ându-se ca un sistem unitar (de exemplu,prezint ă acelea şi conturi de utilizatori pe toatecalculatoarele)

    1.1. Componentele reţelelor de calculatoare

    4

  • 8/18/2019 Programarea Retelelor - CURS

    5/85

    Tipuri

    de

    reţele

    :Du p ă t ehnologia de t ransmis ie : • - re ţ ele cu difuzare (broadcast);• - re ţ ele punct - la - punct;Du p ă scara la care op ereaz ă re ţ eaua (dis tan ţ a); • - re ţ ele locale LAN;• - re ţ ele metropolitane MAN;• - re ţ ele de arie intins ă WAN;• - Internet-ul; (GAN= Global Area Network)Du p ă topologie : • - re ţ ele tip magistral ă (bus);

    • - re ţ ele tip stea (star);• - re ţ ele tip inel (ring);• - re ţ ele combinate.;Du p ă t ipu l s is temu lui de op erare ut i l i zat : • - re ţ ele peer-to-peer;• - re ţ ele bazate pe server.Du p ă t ipu l mediulu i de t ransm is ie a semn alelor :• - re ţ ele prin medii ghidate (cablu coaxial, perechi de fire r ăsucite, fibra optic ă)• -re ţ ele prin medii neghidate (transmitere î n infrarosu, unde radio, microunde)Du p ă t ipu l u t i l izator i lor • -private (de uz industrial, militar, civil)• -publiceDu p ă t ipu l accesulu i la mediu • - Ethernet• -token ring

    •-token bus

    • -arcnet

    1.1. Componentele reţelelor de calculatoare

    5

  • 8/18/2019 Programarea Retelelor - CURS

    6/85

    • Pentru ca între calculatoarele dintr-o reţea să se poată desfăşura cu succeso comunicare, este necesar să se stabilească anumite protocoale.

    • Un protocol poate fi definit ca un set de reguli şi convenţiistabilite întreparticipanţiila o activitate comună.

    • Deoarece protocoalele utilizate în reţelelede calculatoare s-au dovedit a fideosebit de complexe, s-a convenit ca ele să fie proiectate pe niveluri saustraturi pentru a simplifica implementarea.

    • Fiecare nivel defineşte anumite servicii şi eventual protocoalecorespunzătoareacelor servicii. Astfel rezultămodelele de referinţă.

    1.2. Modele de referinţă

    6

  • 8/18/2019 Programarea Retelelor - CURS

    7/85

  • 8/18/2019 Programarea Retelelor - CURS

    8/85

    Modelul OSI

    8

  • 8/18/2019 Programarea Retelelor - CURS

    9/85

    Modelul OSI

    CARACTERISTICILE MODELULUI OSI

    - Modelul OSI a fost construit av ând la bază principiulcomunicaţieipe nivele:

    • Împartecomplexitatea interreţelelor în paşi discreţi• Permite dezvoltarea de software bazate pe standarde (IPSec)• Permite dezvoltarea specializată a software-ului modular (IP

    mai multe protocoale ale nivelului Legăturilor de date)• Permite comunicaţia pereche, pe baza nivelelor pereche

    (comenzile TELNET sunt executate la nivelul de aplicaţie alcalculatorului destinaţie

    9

  • 8/18/2019 Programarea Retelelor - CURS

    10/85

    Funcţiile nivelurilor • Nivelul Aplicaţie- realizează interfaţa cu utilizatorul şi interfaţa cu aplicaţiile,specifică interfaţa de lucru cu utilizatorul şi gestionează comunicaţia între aplicaţi

    Acest strat nu reprezintă o aplicaţie de sine stătătoare, ci doar interfaţa între aplicaşi componentele sistemelui de calcul.Unitatea de date: mesajul

    • Nivelul Prezentare - transformă datele în formate înţelese de fiecare aplicaţie şi decalculatoarele respective, asigurăcompresia datelor şicriptarea .

    • Nivelul Sesiune - furnizează controlul comunicaţiei între aplicaţii. Stabileşte,menţine, gestionează şi închide conexiuni (sesiuni) între aplicaţii.

    • Nivelul Transport - transferul fiabil al informaţiei între două sisteme terminale (end points ) ale unei comunicaţii. Furnizează controlul erorilor şi controlul fluxului de d între două puncte terminale, asigurând ordinea corectă a pachetelor de date.Unitatea de date: segmentul, datagrama

    Modelul OSI

    10

    http://ro.wikipedia.org/w/index.php?title=Interfa%C5%A3a&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Compresia&action=edit&redlink=1http://ro.wikipedia.org/wiki/Criptarehttp://ro.wikipedia.org/wiki/Fiabilitatehttp://ro.wikipedia.org/wiki/Fiabilitatehttp://ro.wikipedia.org/wiki/Criptarehttp://ro.wikipedia.org/w/index.php?title=Compresia&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Interfa%C5%A3a&action=edit&redlink=1

  • 8/18/2019 Programarea Retelelor - CURS

    11/85

    Funcţiile nivelurilor • Nivelul Reţea- determinarea căii optime pentru realizarea transferului de informaţ

    într -o reţea constituită din mai multe segmente, prin fragmentarea şi reasamblareainformaţieiUnitatea de date: pachetul

    • Nivelul Legături de Date- furnizează un transport sigur, fiabil, al datelor de-a lungulunei legături fizice, realizând: Controlul erorilor de comunicaţie; Controlul fluxuludate; Controlul legăturii; Sincronizarea la nivel de cadruUnitatea de date: cadrul

    • Nivelul Fizic - transmiterea unui şir de biţi pe un canal de comunicaţie. Seprecizează modulaţii, codări , sincronizări la nivel de bit. Un standard de nivel fizicdefineşte 4 tipuri de caracteristici:

    • Mecanice (forma şi dimensiunileconectorilor , numărul depini )• Electrice (modulaţia, debite binare, codări, lungimi maxime ale canalelor de

    comunicaţie)• Funcţionale (funcţia fiecărui pin)• Procedurale (succesiunea procedurilor pentru activarea unui serviciu)

    Unitatea de date: bitul

    Modelul OSI

    11

    http://ro.wikipedia.org/wiki/Informa%C5%A3iehttp://ro.wikipedia.org/wiki/IPhttp://ro.wikipedia.org/w/index.php?title=Cadru&action=edit&redlink=1http://ro.wikipedia.org/wiki/Modula%C5%A3iehttp://ro.wikipedia.org/w/index.php?title=Codare&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Sincronizare&action=edit&redlink=1http://ro.wikipedia.org/wiki/Bithttp://ro.wikipedia.org/w/index.php?title=Conector&action=edit&redlink=1http://ro.wikipedia.org/wiki/Pinhttp://ro.wikipedia.org/wiki/Pinhttp://ro.wikipedia.org/w/index.php?title=Conector&action=edit&redlink=1http://ro.wikipedia.org/wiki/Bithttp://ro.wikipedia.org/w/index.php?title=Sincronizare&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Codare&action=edit&redlink=1http://ro.wikipedia.org/wiki/Modula%C5%A3iehttp://ro.wikipedia.org/w/index.php?title=Cadru&action=edit&redlink=1http://ro.wikipedia.org/wiki/IPhttp://ro.wikipedia.org/wiki/Informa%C5%A3ie

  • 8/18/2019 Programarea Retelelor - CURS

    12/85

    Exemple de protocoale din stiva OSI

    Modelul OSI

    ex.: HTTP , FTP , Telnet , etc.

    ex.: AFP , NCP , etc.

    Ex.: RPC , NetBIOS , BSD sockets , NCP (Network Core Protocol), NFS(Network File System), etc.

    ex.: TCP , UDP, ATP , etc.

    ex.: IP, IPX, BGP , OSPF , RIP, IGRP , EIGRP , ARP , (Packet Switchin g )

    ex.: Token ring , ISDN , ATM, 802.11 Wi-Fi , FDDI , etc.

    ex.: cablu coaxial , radio , fibră optică, cablu bifilar torsadat , fire cupru , Ethernet

    12

    http://ro.wikipedia.org/wiki/HTTPhttp://ro.wikipedia.org/wiki/HTTPhttp://ro.wikipedia.org/wiki/File_transfer_protocolhttp://ro.wikipedia.org/wiki/Telnethttp://ro.wikipedia.org/w/index.php?title=Apple_Filing_Protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Apple_Filing_Protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NetWare_Core_Protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Remote_procedure_call&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NetBIOS&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Berkeley_sockets&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NCP&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NFS&action=edit&redlink=1http://ro.wikipedia.org/wiki/Transmission_Control_Protocolhttp://ro.wikipedia.org/wiki/User_Datagram_Protocolhttp://ro.wikipedia.org/w/index.php?title=AppleTalk&action=edit&redlink=1http://ro.wikipedia.org/wiki/Internet_Protocolhttp://ro.wikipedia.org/wiki/IPXhttp://ro.wikipedia.org/wiki/Border_Gateway_Protocolhttp://ro.wikipedia.org/wiki/OSPFhttp://ro.wikipedia.org/w/index.php?title=Routing_information_protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=IGRP&action=edit&redlink=1http://ro.wikipedia.org/wiki/EIGRPhttp://ro.wikipedia.org/w/index.php?title=Address_resolution_protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Address_resolution_protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=X.25&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=X.25&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=X.25&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=X.25&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Token_ring&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Integrated_Services_Digital_Network&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Asynchronous_Transfer_Mode&action=edit&redlink=1http://ro.wikipedia.org/wiki/IEEE_802.11http://ro.wikipedia.org/w/index.php?title=Fiber_distributed_data_interface&action=edit&redlink=1http://ro.wikipedia.org/wiki/Cablu_coaxialhttp://ro.wikipedia.org/wiki/Radiohttp://ro.wikipedia.org/wiki/Fibr%C4%83_optic%C4%83http://ro.wikipedia.org/w/index.php?title=Cablu_bifilar_torsadat&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Fire_cupru&action=edit&redlink=1http://ro.wikipedia.org/wiki/Ethernethttp://ro.wikipedia.org/wiki/Ethernethttp://ro.wikipedia.org/w/index.php?title=Fire_cupru&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Cablu_bifilar_torsadat&action=edit&redlink=1http://ro.wikipedia.org/wiki/Fibr%C4%83_optic%C4%83http://ro.wikipedia.org/wiki/Radiohttp://ro.wikipedia.org/wiki/Cablu_coaxialhttp://ro.wikipedia.org/w/index.php?title=Fiber_distributed_data_interface&action=edit&redlink=1http://ro.wikipedia.org/wiki/IEEE_802.11http://ro.wikipedia.org/w/index.php?title=Asynchronous_Transfer_Mode&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Integrated_Services_Digital_Network&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Token_ring&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=X.25&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Address_resolution_protocol&action=edit&redlink=1http://ro.wikipedia.org/wiki/EIGRPhttp://ro.wikipedia.org/w/index.php?title=IGRP&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Routing_information_protocol&action=edit&redlink=1http://ro.wikipedia.org/wiki/OSPFhttp://ro.wikipedia.org/wiki/Border_Gateway_Protocolhttp://ro.wikipedia.org/wiki/IPXhttp://ro.wikipedia.org/wiki/Internet_Protocolhttp://ro.wikipedia.org/w/index.php?title=AppleTalk&action=edit&redlink=1http://ro.wikipedia.org/wiki/User_Datagram_Protocolhttp://ro.wikipedia.org/wiki/Transmission_Control_Protocolhttp://ro.wikipedia.org/w/index.php?title=NFS&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NCP&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Berkeley_sockets&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NetBIOS&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Remote_procedure_call&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=NetWare_Core_Protocol&action=edit&redlink=1http://ro.wikipedia.org/w/index.php?title=Apple_Filing_Protocol&action=edit&redlink=1http://ro.wikipedia.org/wiki/Telnethttp://ro.wikipedia.org/wiki/File_transfer_protocolhttp://ro.wikipedia.org/wiki/HTTP

  • 8/18/2019 Programarea Retelelor - CURS

    13/85

    Desi modelul OSI este universal recunoscut, din punct de vedereistoric şi tehnic vorbind, î n ceea ce prive şte Internetul, standardulaplicat este TCP/IP, (Transmission Control Protocol/InternetProtocol).Modelul de referin ţă TCP/IP şi stiva sa de protocoale fac posibil ăcomunicarea î ntre dou ă calculatoare care se afl ă î n orice col ţ allumii la viteze care cresc pe zi ce trece.TCP/IP a luat na ştere î n laboratoarele armatei americane î nsperan ţ a de a crea un mod de comunicare posibil î n orice condi ţ iide lupt ă.Datorit ă fiabilităţ ii sale a fost mai t ârziu preluat de dezvoltatatoriide UNIX şi adus la un nivel care s ă permit ă comunicarea; î nInternet, ast ăzi, fiind cea mai r ăspandit ă “limbă” î n care “vorbesccomputerele ”oriunde î n lume.TCP/IP este un model î n patru straturi:aplica ţ ie, transport, internet şi nod de reţea.

    1.2.2. Modelul TCP / IP

    13

  • 8/18/2019 Programarea Retelelor - CURS

    14/85

    Modelul TCP / IP

    1. Nu are niveluri distincte pentru prezentare şisesiune, iar nivelurile fizic şi legătură de date suntcomasate în nod-reţea.

    14

    2. Nivelul Internet a fost conceput pentru comutareade pachete. Este posibil ca pachetele să ajungă ladestinaţie în altă ordine decât cea de la emisie, suntrearanjate de nivelurile superioare.

    3. Nivelul transport corespunde în bună măsură cucel de la OSI. Are 2 protocoale principale: TCP (cuconexiune) şi UDP (fără conexiune)

    4. Nivelul aplicaţie apare imediat deasupra niveluluitransport. Protocoale mai cunoscute: TELNET(terminal virtual), FTP (transfer de fişiere), SMTP(poştă electronică), DNS (nume de domenii), HTTP(hypertext – pagini Web)

  • 8/18/2019 Programarea Retelelor - CURS

    15/85

    1.2.3. Nivelul Client - Server

    La nivel aplicaţie există de regulăasimetrie între programele de la cele 2capete: unul oferă servicii, celălalt solicită serviciile. Acest mod de lucru senumeşte modelul client-server

    Modelul client- server este dominant în proiectarea aplicaţiilor de reţea, deşi auapărut şi alte modele:multistrat (multitier) sau peer-topeer Este posibil ca acelaşi program să joace în contexte diferite atât rol de servercât şi rol de client

    În modelul client-server “clasic” programul cu rol de server trebuie pornit primşi lucrează astfel:1. se deschide un canal de comunicare şi se informează calculatorul local că

    programul poate accepta cereri de la clienţi2. programul rămâne în aşteptare până la sosirea primei cereri de la un client3. programul acceptă cererea şi o tratează, elaborând un mesaj de răspunscare se trimite clientului. Severul poate lucra concurent sau iterativ;4. se revine la pasul 2.

    15

  • 8/18/2019 Programarea Retelelor - CURS

    16/85

    Nivelul Client - Server Programele server sunt scrise ca programe ciclice şi rămân în funcţiune un timpnedeterminat după activare. Trebuie să existe posibilitatea de înregistrare şi ţinere în

    aşteptare a cererilor de la clienţi.Pentru programele client acţiunile tipicesunt:1. deschiderea unui canal de comunicare şi conectarea la o locaţie determinată a unuianumit calculator 2. emiterea unei cereri de servicii către server şi recepţionarea rezultatelor, ori de câte

    ori este necesar 3. închiderea canalului de comunicare şi terminareaprogramului

    Programele client sunt elementele active în aplicaţiile client-server (serverele deschidcanalele de comunicare în mod pasiv).

    Avantajele lucrului într -un mediu client-server sunt:- Ofera facilit ăţ i de prelucrare mai ieftine dec ât cele cu calculatoare centrale(mainframe), deoarece se ob ţ ine o reducere a traficului prin re ţ ea.- Se realizeaz ă o economie de memorie RAM a calculatorului client, deoarece serverelesunt capabile s ă stocheze o cantitate mare de informa ţ ie.- Datele care sunt obiectul prelucr ării sunt stocate pe server deci pot fi mult mai bineprotejate. 16

  • 8/18/2019 Programarea Retelelor - CURS

    17/85

    Pentru a exemplifica procesul clientserver, se consider ă o aplica ţ ie deadministrare a bazelor de date.Software-ul client foloseste limbajulSQL pentru a traduce cerereaformulat ă de utilizator. Procesul desolicitare şi de primire a informa ţ iilorconst ă din :

    • Clientul formuleaz ă solicitarea• Solicitarea este tradus ă î n SQL• Solicitarea SQL este transmis ăservereului de re ţ ea• Serverul de baze de date î ncepecăutarea datelor pe calculatorul pecare acestea sunt stocate• Inregistr ările sunt returnate clientului• Datele sunt prezentate utilizatorului.

    Nivelul Client - Server

    17

  • 8/18/2019 Programarea Retelelor - CURS

    18/85

    1.2.4. Probleme generale de proiectare

    18

  • 8/18/2019 Programarea Retelelor - CURS

    19/85

    Probleme generale de proiectare

    19

  • 8/18/2019 Programarea Retelelor - CURS

    20/85

    Probleme generale de proiectare

    20

  • 8/18/2019 Programarea Retelelor - CURS

    21/85

    • TCP – Transmission Control Protocol : orientat pe conexiune, flux deocteţi fiabil, full-duplex. Protocol de bază pentru multe aplicaţii.

    • UDP – User Datagram Protocol: fără conexiune, nu garantează cădatagramele ajung la destinaţie (pentru aplicaţii mai simple).

    • IP – Internet Protocol : pune la dispoziţie serviciulde transfer depachete. Procesele utilizator nu lucrează în mod normal cu acestprotocol.

    • ICMP – Internet Control Message Protocol : utilizat pentru transmitereainformaţiilor de comandă şi eroare între componentele reţelei.Informaţiile sunt generate în modulele care implementează familia de

    protocolae, nu înprocesele utilizator.

    • ARP – Address Resolution Protocol : realizează corespondenţa între oadresă Internet şi o adresăhardware.

    • RARP – Reverse Address Resolution Protoco l: cunoscând adresahardware determină adresaInternet

    1.3. Familia de protocolale TCP / IP

    21

  • 8/18/2019 Programarea Retelelor - CURS

    22/85

    1.3. Familia de protocolale TCP / IP

    22

    l l

  • 8/18/2019 Programarea Retelelor - CURS

    23/85

    • Protocolul IP transmite datagrame de la o adresă sursă la o adresădestinaţie în mod nefiabil.• Fiecare datagramă conţine adresa sursei şi adresa destinaţiei, faceposibilă rutarea ei independentă.

    • IP poate realiza şi fragmentarea datagramei, cuduplicarea dreselorsursei şi destinaţiei în fiecarefragment.

    • Are şi un anumit grad de contol al fluxului: dacă apar pierderi depachete la destinaţie se emite un mesaj ICMP către sursă.• Adresele de noduri IP (v4) sunt reprezentate pe 32 biţi, alocate în

    mod unic la nivel global. (IPv6 are adrese pe 128 biţi).• Există 5 clase de adrese, separate prin valoarea din biţii cei mai

    semnificativi.

    • Convenţie de scriere: fiecare din cei 4 octeţi ai adreseieste notatdistinct, prin numărul zecimal corespunzător.• Ex. : 145.0.245.17• Altă convenţie de scriere: 10.0.0.0/12 marcheazăaplicarea unei

    măşti de 12 biţi pe adresa 10.0.0.0, adică ia toate valorile posibile dultimii 20 biţi.

    1.3.1. Nivelul reţea: IP

    23

    Ni l l IP

  • 8/18/2019 Programarea Retelelor - CURS

    24/85

    Nivelul reţea: IP

    24

    Ni l l IP

  • 8/18/2019 Programarea Retelelor - CURS

    25/85

    • Adresele de clasă A se folosesc la reţele cu număr foarte mare de noduri –pot exista numai 126 astfel de reţele. Primul octet are valoare mai micădecât 127.

    • Adresele de clasă B folosesc 16 biţi pentru a identifica o reţea şi 16 pentrunod în reţea. Primul octet are valori între 128 şi 191. Pot exista peste 16.0de astfel de reţele, fiecare cu peste 65.000 noduri.

    • Adresele de clasă C utilizează 24 biţi pentru a desemna reţeaua şi 8 biţipentru nod în reţea. Primul octet are valori între 192 şi 223, sunt posibilepeste 2 milioane astfel de reţele, fiecare cu max. 256 noduri.

    • Pe lângă comunicarea “punct la punct” există şi aplicaţii la care un mesajajunge la mai mulţi receptori (teleconferinţă, cotaţii la bursă), care folosesadrese multicast (clasă D), cu primul octet între 224 şi 239.

    • Adresele peste 224.0.0.0 ( clasă E) sunt considerate adrese rezervate.

    • Există şi câtevaadrese speciale : 127.0.0.1 este bucla locală (loopback)care nu corespunde unei interfeţe, se foloseşte pentru testarea software-uluide reţea

    Nivelul reţea: IP

    25

    Ni l l IP

  • 8/18/2019 Programarea Retelelor - CURS

    26/85

    • Adresa 255.255.255.255 este adresa de broadcast locală : orice calculator dintr-oreţea locală recunoaşte pe lângă adresa sa şi această adresă.

    • O adresă de forma 173.56.255.255 denotă broadcast latoate nodurile din clasa173.256.0.0, indiferent dacă sursa e în aceeaşi reţea locală sau nu.

    • Se face distincţie întreadrese publice şi adrese private: cele publice au caracter deunicitate şi sunt rutate în Internet; cele private pot fi utilizate intern într -o organizaţie,fără a fi vizibile în afară (nu sunt rutate)

    • Adresele private sunt: 10.0.0.0 – 10.255.255.255 (reţea de clasă A), 172.16.0.0 –172.31.255.255 (bloc de reţele de clasă B), 192.168.0.0 – 192.168.255.255 (bloc dereţele de clasă C).

    • Protocolul ARP : un nod trimte în mod broadcast un mesaj care conţine o adresă IPNodul care îşi recunoaşte adresa IP răspunde cu un mesaj care conţine adresa safizică, destinat sursei iniţiale

    • Protocolul RARP : nodul trimite în broadcast adresa sa fizică; un nod “server” îirăspunde cu adresa IP

    Nivelul reţea: IP

    26

    1 3 2 Ni l l UDP i TCP

  • 8/18/2019 Programarea Retelelor - CURS

    27/85

    • Mijlocul de identificare a proceselor utilizator în TCP şi UDP trebuie să fieindependent de sistemul de operare din nod.

    • Se foloseşte portul, reprezentat fizic ca număr pe 16 biţi. Există spaţii separatepentru TCP şi UDP, fiecare cu• 65.536 porturi în fiecare nod.

    • Numerele de porturi 1024. Numai server înregistrează numere de porturi, pentru a putea fi găsite de clienţi. Programeleclientpot lăsa atribuirea portului la dispoziţia SO, avânddeci porturi efemere.

    • TCP, protocol fiabil, poate folosi tehnica de achitare pozitivă cu retransmitere , darpentru eficienţă foloseşte

    • fereastra alunecătoare (sliding window): se transmit în mod controlat octeţi în avansfaţă de cei deja achitaţi.

    • În antetul TCP este unnumăr de secvenţă , completat de emiţător, care aratădeplasamentul în flux al începutului pachetului curent. Alt câmp,numărul de achitare ,e completat de receptor în pachetul de achitare şi arată ce pachet se achită. Un altreilea câmp, folosit tot în pachetele de achitare, arată câţi octeţi mai poateprimireceptorul înainte de a trimite o nouă achitare

    1.3.2. Nivelul transport: UDP şi TCP

    27

    Ni l l UDP i TCP

  • 8/18/2019 Programarea Retelelor - CURS

    28/85

    Nivelul transport: UDP şi TCP

    28

    1 3 3 Ni l l li ţi

  • 8/18/2019 Programarea Retelelor - CURS

    29/85

    • Serviciul de nume de domenii realizează corespondenţa între adrese IP şnume simbolice ale nodurilor. A fost definită o schemă ierarhică deconstruire a numelor de noduri, iar corespondenţa nume-adresă se facecu ajutorul unei baze de date distribuite.

    • Pentru a stabili corespondenţa nume – adresă un program de aplicaţieoarecare (partea de client pentru DNS) apelează o procedură debibliotecă (numităresolver ) care trimite un pachet UDP la serverul DNSlocal (a cărui identitate e stabilită de administratorul de reţea şi indicată într -un fişier de configurare al SO. Serverul returnează adresa, iarresolver- ul o returnează clientului. Dacă nu e găsită pe serverul local,acesta apelează la alte servere de nume, până adresa e găsită sau sereturnează eroare.

    1.3.3. Nivelul aplicaţieSERVICIUL DE NUME DE DOMENII (DNS)

    29

  • 8/18/2019 Programarea Retelelor - CURS

    30/85

    SERVICIUL DE NUME DE DOMENII (DNS)

    30

  • 8/18/2019 Programarea Retelelor - CURS

    31/85

    • Conceptual în Internet există câteva sute de nume dedomenii de nivel superior ,fiecare se împarte însubdomenii ( domenii de nivel 1 ) care la rândul lor se împart în subdomenii, etc.

    • La nivel superior există două categorii de domenii:generice şi nume de ţări . Celegenerice au fost introduse în SUA, dar acum pot desemna şi noduri din alte ţări.

    • Nume generice: com (commercial), edu (educational), gov (government), org(organization ), mil (pentru forţele armate ale SUA),int (organisme internaţionale),net (organizaţii de administrare a reţelelor).

    • Recent au fost introduse şi alte nume generice:info, name, coop, jobs, mobi,museum, tel, travel.

    • Domeniile superioare nume de ţări constau din 2litere, conform standardului ISO3166 (ex. ro – România,uk – Marea Britanie , fr – Franţa,de – Germania , dar şieu – European Union)

    • Organizarea numelor din nivelurile inferioare variază de la o ţară la alta: AustriaJaponia, Marea Britanie impun structurarea după tipuri de activităţi: co –comercial, ac - academic

    SERVICIUL DE NUME DE DOMENII (DNS)

    31

  • 8/18/2019 Programarea Retelelor - CURS

    32/85

    • Pentru indicarea unui nume de domeniu se scriu toatecomponentele din ierarhie, de la cea mai specifică pânăla unnume de domeniu superior.

    • Nu se face distincţie între litere mari şi mici într -o componentă.Lungimea unei componente nu poate depăşi 64 caractere,lungimea totală e limitată la 255 caractere. Uneori trebuie făcutădeosebirea întrenume relative şi nume absolute (ultimele setermină cu punct după numele de domeniu de nivel superior).

    • Atribuirea de nume nu e legată de adresele IP, ci delimite

    organizaţionale. Fiecare domeniu este responsabilpentrugestionarea domeniilor incluse

    • Protocolul DNS foloseşte pentru server portul 53 şi defineşte şiformatul informaţiilor din baza de date.

    SERVICIUL DE NUME DE DOMENII (DNS)

    32

    1 3 3 Nivelul aplicaţie

  • 8/18/2019 Programarea Retelelor - CURS

    33/85

    • Este, alături de transferul de fişiere, cea mai veche aplicaţie (înainte de 1980)

    • Se prezintă forma standardizată în 1982, prinprotocolul SMTP (Simple MailTransfer Protocol), pentru transmiterea de conţinut ASCII

    • Forma de adresare: numelogin@numedomeniu

    • În centrul sistemului de poştă electronică se aflăagentul pentru transferul poştei(MTA) – preia mesajele care vin din afara sistemului (SMTP, rmail), cât şi din• sistem (UA – User Agent); livrează mesaje către uux,SMTP sai intern, prin mail

    • Agentul utilizator realizează interfaţa cu clienţii, cuservicii de compunere, editare,transmitere a mesajelor, acces la mesaje recepţionate încutia poştală (mailbox)

    • Şirul de mesajequeue păstrază temporar mesajele până la livrare (spre mailboxsau spre exterior)

    • Portul rezervat pentru SMTP este 25 din spaţiul pentruTCP

    • Funcţionarea protocolului poate fi ilustrată folosindclientul TELNET

    1.3.3. Nivelul aplicaţiePOŞTA ELECTRONICĂ (E-MAIL)

    33

  • 8/18/2019 Programarea Retelelor - CURS

    34/85

    POŞTA ELECTRONICĂ (E-MAIL)

    34

    Ă

  • 8/18/2019 Programarea Retelelor - CURS

    35/85

    POŞTA ELECTRONICĂ (E-MAIL)

    35

    1 3 3 Nivelul aplicaţie

  • 8/18/2019 Programarea Retelelor - CURS

    36/85

    • WWW a fost propus în 1989 la CERN-Geneva de fizicianul Tim Berners-Lee şi a fost demonstrat public îndecembrie 1991

    • Motivare: să permită cercetătorilor răspândiţi în toată lumea săcolaboreze folosind colecţii de documentecompuse din rapoarte, planuri,desene, fotografii etc. şi aflate în permanentă schimbare

    • Distincţie clară între client şi server

    • Un server WWW gestionează un număr de documente şi le trimite lacerere clienţilor

    • Un client WW (browser Web) permite utilizatorului săsolicite documentede la un server WWW şi după recepţionare le redă pe ecran într -unformat corespunzător(de regulă grafic)

    • Principalele probleme legate de WWW: A) modul de identificare a documentelor în InternetB) formatul pentru conţinutul documentelor C) p rotocolul de comunicare între client şi server

    1.3.3. Nivelul aplicaţieWORLD WIDE WEB. PROTOCOLUL HTTP

    36

  • 8/18/2019 Programarea Retelelor - CURS

    37/85

    • A. Pentru identificarea documentelor s-a propus conceptul de locatoruniversal de resurse (Universal Resource Locator – URL) care indicăidentitatea astfel:

    ă

    unde:

    - protocol indică ce protocol se foloseşte pentrucomunicare: http pentrudocumente hypertext, ftp pentru transfer de fişiere, file pentru acces la unfişier local

    - calculator este numele nodului pe care se aflădocumentul dorit (serverWWW sau FTP)

    - port arată la ce port rulează serverul pentru documentul dorit. Este opţionadacă se foloseşte portulstandard al protocolului (80 pentru WWW)- nume_de_cale indică de regulă un fişier, dar poate fi utilizată şi altăconvenţie. Serverele WWW stabilesc o anumită origine (rădăcină) a unusistem de fişiere, numele de cale fiind în raport cu această origine

    - etichetă este element opţional, indică o anumită locaţie într -un document

    WORLD WIDE WEB. PROTOCOLUL HTTP

    37

  • 8/18/2019 Programarea Retelelor - CURS

    38/85

    • B. Conţinutul documentelor Web este construit ca hypertext, adică în documentpot apare legături spre alte documente. Se foloseşte unlimbaj de marcare , HTML(HyperText Markup Language)

    • HTML a fost derivat prin simplificare dintr-un limbaj de marcare mai general,SGML (Standard Generalized Markup Language), este la versiunea 4.01

    WORLD WIDE WEB. PROTOCOLUL HTTP

    Exemplu de document HTML:

    Exemplu de pagina Web

    Exemplu de pagina Web cu hypertextServere Web ale unor universitati din Romania:

    Universitatea” IOANSLAVICI ” Timisoara Universitateadin OradeaPentru detalii scrieti la: [email protected]

    38

    Universitatea _IOAN SLAVICI” TimisoaraUniversitatea din Oradea

    [email protected]

  • 8/18/2019 Programarea Retelelor - CURS

    39/85

  • 8/18/2019 Programarea Retelelor - CURS

    40/85

  • 8/18/2019 Programarea Retelelor - CURS

    41/85

    P lă

  • 8/18/2019 Programarea Retelelor - CURS

    42/85

    • Programarea cu sockets a fost introdusă iniţial în UNIX, se

    foloseşte acum şi pe alte sisteme• API (Application Programming Interface) pentru sockets asigurăcomunicarea nivelului aplicaţie cu nivelul transport

    • Formal API apare ca o bibliotecă de funcţii puse la dispoziţiaprogramatorilor

    • Există o analogie între operaţiile cu perifericele şi comunicaţi în reţea

    • Pentru a ţine cont de particularităţile reţelelor a fost propusconceptul de soclu (socket)

    • Soclurile sunt reprezentate în sistem prin descriptori, la fel cafişierele, dar un soclu există numai în memorie

    2.1. Prezentare generală

    42

    P lă

  • 8/18/2019 Programarea Retelelor - CURS

    43/85

    • Particularităţi ale lucrului în reţea :

    – Relaţia client-server este asimetrică, deci unprogram din reţeatrebuie să cunoască ce rol joacă – Comunicarea în reţea poate ficu conexiune sau fără conexiune. În primul caz asemănarea cu fişiereleeste mai evidentă, dar

    pentru comunicarea fărăconexiune nu există analogie cu “open”,fiecare operaţiepoate implica alt proces – Numărul de parametri care trebuie specificaţi pentruo conectare în reţea este mai mare decât cel necesar la operaţiilecu fişiere:

    trebuie indicate protocolul, adresa locală, adresa la distanţă,portul local, portul la distanţă – Cel puţin la unele protocoale sunt importantelimitele între înregistrări (la fişiere e vorba întotdeauna de fluxde octeţi)

    2.1. Prezentare generală

    43

    P lă

  • 8/18/2019 Programarea Retelelor - CURS

    44/85

    • Au fost create apeluri sistem noi, unele utilizate atât lacomunicarea cu conexiune, cât şi la cea fără conexiune, altelespecifice pentru fiecare mod de comunicare

    • În scenarille tipice pentru ambele tipuri detransferuri seobservă că trebuie pornit mai întâi serverul, pentru a existasiguranţa că serviciile solicitate de client există deja când

    • este emisă o cerere• La aplicaţiile fără conexiune clientul trimitedirect datagrame, iar

    serverul nu acceptăcereri de conexiune, ci emite direct un apel• sistem recvfrom() la care aşteaptă sosirea unei datagrame

    2.1. Prezentare generală

    44

    P lă

  • 8/18/2019 Programarea Retelelor - CURS

    45/85

    2.1. Prezentare generală

    45

    • Aplica ție cuconexiune

    P lă

  • 8/18/2019 Programarea Retelelor - CURS

    46/85

    2.1. Prezentare generală

    46

    • Aplica ție fărăconexiune

    2 2 A l i i f d l

  • 8/18/2019 Programarea Retelelor - CURS

    47/85

    • Crearea unui socket se realizează cu apelulsistem socket() .Pentru comunicarea în reţea, orice program trebuie să dispunăde cel puţin un socket.

    • Prototipul apelului:#include #include int socket (int family , int type , int protocol );

    • Pentru primul parametru se folosesc constantele simbolice:AF_INET (Internet protocols - cel mai frecvent ), AF_UNIX(Unix internal protocols ), AF_NS (Xerox NS protocols )

    2.2. Apeluri sistem fundamentale2.2.1. Apelul socket

    47

    2 2 A l i i f d l

  • 8/18/2019 Programarea Retelelor - CURS

    48/85

    • Tipul socketului poate fi:• SOCK_STREAM – orientat pe conexiune• SOCK_DGRAM – socket datagramă (fărăconexiune)

    • SOCK_RAW – socket direct (comunicare la• Pentru protocol se foloseşte de regulăvaloarea 0, dar ar puteaapare şi:

    • IPPROTO_TCP , IPPROTO_UDP , IPPROTO_RAW - pentru a

    asculta trafic TCP, UDP sau ICMP, trebuie create separat 3 rawsocket (numerele de protocol sunt 0 sau 6 pentru tcp , 17pentru udp si 1 pentru icmp )

    • Valoarea returnată este undescriptor de socket, folosit ca şidescriptorii de fişier

    2.2. Apeluri sistem fundamentale2.2.1. Apelul socket

    48

    2 2 A l i i f d l

  • 8/18/2019 Programarea Retelelor - CURS

    49/85

    • Apelul sistem bind() realizează legătura între un socket anteriocreat şi un punct final de comunicare

    • Prototipul apelului:#include

    #include int bind (int sockfd , struct sockaddr *myaddr , int

    addrlen );

    • sockfd este descriptor de socket obţinut dela un apel socket()• Structura de adresă este definită în astfel:struct sockaddr {

    u_short sa_family; /*address family */char sa_data[14]; /* up to 14 bytes of protocol specific address */

    };

    2.2. Apeluri sistem fundamentale2.2.2. Apelul ind

    49

    2 2 A l i i t f d t l

  • 8/18/2019 Programarea Retelelor - CURS

    50/85

    • Pentru familia de protocoale TCP/IP, cei 14 octe ți se folosescastfel:

    struct in_addr {u_long s_addr; /* 32-bit netid/hostid */

    };struct sockaddr_in {

    short sin_family; /* AF_INET */

    u_short sin_port; /* 16-bit port number */struct in_addr sin_addr; /* 32-bit

    netid/hostid */char sin_zero[8]; /* unused */

    };

    2.2. Apeluri sistem fundamentale2.2.2. Apelul ind

    50

    2 2 A l i i t f d t l

  • 8/18/2019 Programarea Retelelor - CURS

    51/85

    • Principalele utilizări ale luibind() : – Serverele (cu sau fără conexiune) îşi înregistrează însistem o

    adresă binecunoscută – Un client îşi poate înregistra o adresă specifică – Un client fără conexiune se asigură că sistemul îiatribuie o

    adresă unică, la care serverul trimite• După un apelbind() se completează 2 elemente dintr-o

    asociaţie : local_addr şi local_port

    2.2. Apeluri sistem fundamentale2.2.2. Apelul ind

    51

    2 2 A l i i t f d t l

  • 8/18/2019 Programarea Retelelor - CURS

    52/85

    • Apelul sistem connect() permite clientului să solicite stabilirealegăturii cu un server.

    • Prototipul:#include #include int connect ( int sockfd , struct sockaddr

    *myaddr , in addrlen );

    • Apelul returnează 0 la succes și-1 la eroare

    2.2. Apeluri sistem fundamentale2.2.3. Apelul sistem connect

    52

    2 2 A l i i t f d t l

  • 8/18/2019 Programarea Retelelor - CURS

    53/85

    • Rezultatul apelului connect() la protocol cu conexiune estestabilirea unei conexiuni între sistemul local și un alt sistem. schimbă mesaje între cele 2 sisteme pentru stabilireaparametrilor conexiunii. Apelul la connect() se poate face șifără a utiliza în prealabilbind()

    • Dacă se folosește la protocol fără conexiuneapelul revineimediat, fixează doar adresaserverului. Datagramele nu maitrebuie să specifice adresa destinației și se pot folosiapelurileread(), write(), recv(), send()

    2.2. Apeluri sistem fundamentale2.2.3. Apelul sistem connect

    53

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    54/85

    • Apelul sistem listen() este utilizat la serverele cu conexiune șiarată câte cereri poate ține în așteptare serverul.

    • Are prototipul:int listen ( int sockfd , int backlog );

    • De regulă apelul lalisten() este plasat după socket() șibind(),

    imediat înainte deaccept()

    .

    2.2. Apeluri sistem fundamentale2.2.4. Apelul sistem listen

    54

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    55/85

    • Al doilea argument precizează câte apeluri pot fi acceptate întimp ce serverul așteaptăterminarea unei cereri anterioracceptate.

    • Apare o perioadă de așteptare în server chiar dacă e vorba deun server concurent. În acestinterval pot sosi noi cereri de laclienți.

    • Tradițional valoarea utilizată pentrubacklog este 5.

    2.2. Apeluri sistem fundamentale2.2.4. Apelul sistem listen

    55

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    56/85

    • Este folosit în servere pentru a accepta cereri de la clienți.• Are prototipul:

    #include #include int accept (int sockfd , struct sockaddr *peer ,

    int *addrlen );• Dacă nu există cereri în așteptare, serverul așteaptă până la

    sosirea unei cereri; altfel extrage prima cerere din cele înașteptare• Argumentele peer și addrlen se folosesc pentru a returna

    adresa procesului client (șiaddrlen este de tip referință)

    2.2. Apeluri sistem fundamentale2.2.5. Apelul sistem ccept

    56

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    57/85

    • Valoarea returnată este fie indicație de eroare(-1), fiedescriptorul unui nou socket creat pentru comunicarea cuclientul

    • Pentru noul socket sunt completate toate elementele uneiasociații:(protocol, local-addr, local-process, foreign-addr,foreign-process),

    • dar pentru socketul serverului (cel indicat de primul argumentdin accept) ultimele 2 elemente din asociație rămânnespecificate. Astfel se pot accepta noi cereri de conexiune.

    • Serverul poate fi iterativ sau concurent

    2.2. Apeluri sistem fundamentale2.2.5. Apelul sistem ccept

    57

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    58/85

    • Un server iterativ are următorul scenariu:int sockfd, newsockfd;if (( sockfd = socket(...)) < 0)

    err_sys(”socket error”);if ( bind(sockfd, ...) < 0)

    err_sys(”bind error”);if ( listen(sockfd, 5) < 0)

    err_sys(”listen error”);for ( ; ; ) {newsockfd = accept(sockfd, ...);

    /*blocks waiting*/if (newsockfd

  • 8/18/2019 Programarea Retelelor - CURS

    59/85

    • Pentru un server concurent linia doit(...) se înlocuieștecu:

    if ( fork() == 0) {close (sockfd);doit(newsockfd); /*process the

    request */exit(0);

    }

    2.2. Apeluri sistem fundamentale2.2.5. Apelul sistem ccept

    59

    2 2 Apeluri sistem fundamentale

  • 8/18/2019 Programarea Retelelor - CURS

    60/85

    • Pentru transferurile efective de date la protocoalele cuconexiune se folosesc read() și write() .

    • Pentru protocoalele fără conexiune sunt prevăzute apeluri noi:#include

    #include

    int send ( int sockfd , char *buff , int nbytes , int flags );int sendto ( int sockfd , char *buff , int nbytes , int flags , struct

    sockaddr *to , int addrlen );int recv (int sockfd , char *buff , int nbytes , int flags) ;int recvfrom (int sockfd , char *buff , int nbytes , int flags , struct

    sockaddr *from , int *addrlen );

    2.2. Apeluri sistem fundamentale2.2.6. Apeluri pentru transferuri fără conexiune

    60

  • 8/18/2019 Programarea Retelelor - CURS

    61/85

  • 8/18/2019 Programarea Retelelor - CURS

    62/85

    • Funcții pentru ordinea octeților. Sunt necesare datoritădiferențelor arhitecturale întrecalculatoare:#include < sys/types.h>#include

    u_long htonl (u_long hostlong );u_short htons (u_short hostshort );u_long ntohl (u_long netlong );u_short ntohs (u_short netshort );

    • htonl înseamnă ”host to network long”• Valorile convertite se consideră întregi, cu convenția că un

    întreg scurt se reprezintă pe 16 biți, iar unul lung pe 32 biți.

    2.3. Funcții de bibliotecă utile

    62

  • 8/18/2019 Programarea Retelelor - CURS

    63/85

    • Funcții pentru operații cu octeți . Realizează operațiiasupraunor câmpuri din structurile de adresă:bcopy (char *src , char *dest , int nbytes );bzero ( char *dest , int nbytes );

    bcmp (char *ptr1 , char *ptr2 , int nbytes );

    • La bcopy() ordinea primelor 2 argumente este inversă de ceade la funcțiastrcpy() din biblioteca standard C.

    • bcmp() returnează 0 dacă șirurile de octeți sunt identice șivaloare nenulă în caz contrar (diferit destrcmp() din bibliotecastandard C.)

    2.3. Funcții de bibliotecă utile

    63

  • 8/18/2019 Programarea Retelelor - CURS

    64/85

    • Funcții pentru conversia adreselor. Conversia întrereprezentarea externă a adreselor Internet șireprezentareainternă binară pe 32 biți se realizează cu funcțiile:

    #include #include #include #include /* pentru gethostbyname */

    unsigned long inet_addr ( char *ptr);char *inet_ntoa ( struct in_addr inaddr);struct hostent *gethostbyname ( const char *name);

    2.3. Funcții de bibliotecă utile

    64

    d b bl l

  • 8/18/2019 Programarea Retelelor - CURS

    65/85

    • Prima funcție converteșteun șir de caractere ( adresă în notațiacu punct) în valoare binară• A doua funcție face conversia inversă față de prima• A treia funcție obțineadresa IP plecând de la numele simbolic

    al calculatorului. Structura returnată:struct hostent {char *h_name; /* official name of host */char **h_aliases; /* alias list */

    int h_addrtype; /* host address type */int h_length; /* length of address */char **h_addr_list; /* list of addresses from

    NS */

    }

    2.3. Funcții de bibliotecă utile

    65

  • 8/18/2019 Programarea Retelelor - CURS

    66/85

    3. APELAREA PROCEDURILOR LA

    DISTANTĂ

    • 3.1 . Reprezentarea externă a datelor

    • 3.2. Identificarea unui serviciu RPC

    • 3.3. Realizarea aplicațiilor cu

    • 3.4. Autorizarea accesului la server 66

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    67/85

    • Dificultăți la programarea cu sockets:a) necesitatea codului specific pentru conectare, atât în client cât

    și în server;b) necesitatea de a ține cont de arhitecturile diferite ale

    calculatoarelor • Posibilă soluție: apeluri de proceduri la distanță(RPC – remote

    procedure calls)• Procedură la distanță: există pe server, dar poate fi apelată din

    client ca și procedură locală• Presupune suport de execuție suplimentar pentru realizarea

    comunicării (stub în client,schelet în server)

    3.1. Reprezentarea externă a datelor

    67

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    68/85

    • O implementare a conceptului RPC presupune: – O notație pentru specificarea formatului datelor schimbate între client și

    server, ca și a procedurilor apelabile de la distanță puse la dispoziție deserver

    – Un instrument pentru generarea automată a codului pentrustub- ul client șipentru scheletul server

    – Un serviciu de legătură ( portmapper ) care să permită clienților o găsire maiușoară a serverului

    – O bibliotecă de funcții auxiliare

    • Caracteristici generale pentru reprezentarea externă a datelor (XDR):

    – Folosește convenția big-endian pentru reprezentarea datelor multi-octet – Nu permite negocierea protocolului, adică nu se pot evita conversiile dacă ambele capete există aceeași arhitecturăde procesor

    – Folosește tipizarea implicită, adică modulele de la cele douăcapete cunoscstructura mesajelor transferate, în mesaj nu există informații despre tipulcâmpurilor

    3.1. Reprezentarea externă a datelor

    68

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    69/85

    • void – indică absența argumentelor la o procedură sau a câmpurilor la oalternativă dintr -o uniune cu discriminant

    • int – similar cu C, dar cu reprezentare pe 4 octeți• hyper - număr întreg pe 8 octeți• float - număr real pe 4 octeți, cf. standardului IEEE

    • double – număr real pe 8 octeți, cf. standardului IEEE• enum - desemnează submulțimi de întregi. Ex.: enum{FALSE=0, TRUE=1

    }identificator • boolean - tipul boolean redat prin enumerarea de mai sus• opaque – reprezintă date fără inyerpretare, se văd ca secvență de octeți. Po

    fi de lungime fixă sau variabilă, trebuie să se reprezinte pe lungime multipde 4

    • string - șiruri de caractere, reprezentate printr -u n întregurmat de codurile ASCII ale caracterelor. Lungimea se ajustează la multiplu de 4

    3.1. Reprezentarea externă a datelor 3.1.1. Tipuri de date

    69

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    70/85

    • Mecanisme de compunere a datelor în XDR:

    – Tablou – poate fi de lungime fixă sau variabilă. Exemplu cu lungime fixă:; Exemple cu lungime variabilă: ; sau ;

    – – structurile se declară în XDR astfel:

    3.1. Reprezentarea externă a datelor 3.1.2. Filtre XDR

    70

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    71/85

    • Componentele se reprezintă în ordinea declarării și fiecare are lungimemultiplu de 4 . Componentele pot fi tipuri elementare sau tablouri saustructuri

    – – o uniune cu discriminant este o structură care constădin mai multeobiecte, primul declarat având rolul de discriminant(poate fi int sau enum).Valoarea discriminantului selecteazăcomponenta uniunii. Exemplu:

    – – declară constante, similar cu #define din C.Exemplu:;

    – – introduce definiții de tip, similar cu C. Exemplu:;

    3.1. Reprezentarea externă a datelor 3.1.2. Filtre XDR

    71

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    72/85

    • Pentru efectuarea conversiilor de reprezentare, biblioteca de funcții auxiliara RPC oferă o colecțiede filtre XDR , câte unul pentru fiecare tip elementar.Un singur filtru realizează atât codificarea, cât șidecodificarea datelor.Denumiri: , etc.

    • Există și filtre pentru structuri de date și se generează automat filtre pentrtipuri definite de utilizator

    • Un filtru are 2 parametri: primul este handle sau descriptor pentru un fluxXDR, al doilea este pointer la elementul de date tratat. Sensul în carelucrează filtrul este memorat în descriptor

    • Fluxurile XDR se pot asocia cu tampoane în memoriesau cu fluxuri de I/Edescrise prin

    • Filtrele XDR generează întotdeauna reprezentări binare ale informațiilor

    3.1. Reprezentarea externă a datelor 3.1.2. Filtre XDR

    72

    3 1

    Reprezentarea externă a datelor

  • 8/18/2019 Programarea Retelelor - CURS

    73/85

    • Pașii parcurși la transmiterea unei structuri: – Clientul asamblează datele într -o structură – Clientul apelează stub-ul corespunzător, furnizând adresastructurii, iar stub-ul trmite

    adresa la filtrul XDR – Filtrul XDR din client serializează în modul ENCODE și le transmite prin rețea la s – Filtrul XDR din server, lucrând în mod DECODE, de-serializează datele și le

    tgransmite la scheletul funcției din server – Scheletul trimite datele la funcția corespunzătoare – La revenirea din funcția server rezultatele trec prin transformăriledescrise mai sus

    3.1. Reprezentarea externă a datelor 3.1.2. Filtre XDR

    73

    3.2.

    Identificarea

    unui

    serviciu

    RPC

  • 8/18/2019 Programarea Retelelor - CURS

    74/85

    • O procedură la distanță este identificată prin 3numere:

    {număr program, număr versiune, număr procedură }• Programatorii vor utiliza aceste numere întregi

    doar în specificarea părții de server a aplicației• Fiecare calculator pe care pot rula aplicații RPC

    trebuie să ruleze un portmapper (el însuși unserviciu RPC) la care se înregistrează toateserverele RPC de pe acel calculator

    • La pornirea serverului se creează un port la carese acceptă conexiuni și se transmite la portmapperun mesaj prin care serverul anunțănumerele salede identificare și portul

    • Când un client dorește să apeleze o procedură ladistanță, trebuie să solicite la portmapper informațiidespre serverul care conține procedura (furnizeazănumerele de identificare și obține portul)

    • În continuare clientul poate trimite mesajedirect laportul obținut

    3.2. Identificarea unui serviciu RPC

    74

    3.3. Realizarea aplicațiilor cu

  • 8/18/2019 Programarea Retelelor - CURS

    75/85

    • Majoritatea operațiilor auxiliare pentru realizarea unei aplicațiidistribuiteRPC sunt efectuate de utilitarul , care primeștela intrare un fișier înnotație XDR și producela ieșire 4 fișiere în format sursăC

    • Fișierulde intrare ( fișier de specificare a protocolului ) conține 2 părți:1. declarațiiletipurilor definite de utilizator 2. lista procedurilor oferite de server, cu precizarea numelui acestora, aparametrilor de intrare și a valorilorreturnate

    • Cele 4 fișiereproduse la ieșirede sunt:1. – conține cod sursă C pentrustub-uri client ale aplicației2. – codul sursă pentru partea deschelete server ale aplicației3. – codul sursă pentru filtreleXDR corespunzătoare tipurilor definitede utilizator ale aplicației

    – fișierulantet care conține declarațiilede structuri și definițiile de tip în C, corespunzătoaretipurilor de date XDR definite în demio.x

    p ț

    75

    3.3. Realizarea aplicațiilor cu

  • 8/18/2019 Programarea Retelelor - CURS

    76/85

    • Pe lângă fișierul .x, proiectantul trebuie să maifurnizeze:1. Codul sursă al procedurilor server (fișierul ). Acesta nu

    conține un program complet, ci doar codul funcțiilor, inclusiv funcțiiauxiliare, neapelabile din client, dacă este cazul

    2. Codul sursă al programului client ( ). Acesta este unprogram complet, iar la scrierea sa trebuie respectate anumiteconvenții

    • Pentru a construi partea de server a aplicației trebuie compilate și link-editate fișierele și

    • Pentru a construi partea de client a aplicației se compilează și link-editează

    , și• Fișierul este inclus implicit în codulgenerat de pentru fișierelestub și schelet

    p ț

    76

    3.3. Realizarea aplicațiilor cu

  • 8/18/2019 Programarea Retelelor - CURS

    77/85

    p ț

    77

    3.4.

    Autorizarea

    accesului

    la server

  • 8/18/2019 Programarea Retelelor - CURS

    78/85

    • Dezvoltarea aplicațiilor distribuite a condus la introducerea unor metode deautorizare a cererilor de la clienți, bazate, de regulă, pe uncredențial și un verificator ,transmise de client către server

    • Credențialul precizează identitatea clientului, iarverificatorul este o informație pecare se presupune că numai un utilizator ”adevărat” o cunoaște• Poate fi la fel de important ca un utilizator să poată verifica identitatea serverului

    (dacă, de exemplu, clientul urmează să transmită date confidențiale spre server)• Protocolul RPC nu definește un mecanism de autentificare, dar are un câmp în

    pachetele decereri RPC în care se pot introduce date de autentificare (verificabile nivelul aplicației)

    • Majoritatea implementărilor RPC oferă un anumit suport pentru 3 forme deautentificare. Există fișiere antet care definesc formatul datelor de autentificare șirutine în biblioteca RPC care operează asupra acestor date

    • Cele 3 forme de autentificare sunt:1. : nu se verifică nici credențial, nici autentificator (verificator)2. : credenșialul constă din numele calculatorului, UID-ul și GID-ul

    utilizatorului și o listă de grupuri cărora le aparține utilizatorul. Nu există verificat3. : credențialul constă din ”numele de rețea” al utilizatorului (de forma

    user@machine), iar verificatorul este un marcaj de timp, criptat conform standardului

    DES 78

    4

    PROGRAMAREA CU SOCKETS ÎN

  • 8/18/2019 Programarea Retelelor - CURS

    79/85

    4. PROGRAMAREA CU SOCKETS ÎNJAVA

    • 4.1. Elemente de bază: adrese Internet şi URL-uri

    • 4.2. Comunicarea orientată pe conexiune:ClasaSocket , Clasa ServerSocket

    • 4.3. Comunicarea fără conexiune.ClasaDatagramPacket , Clasa DatagramSocket

    • 4.4. Comunicarea de grup. ClasaMult icas tSocket

    79

    4

    .1.

    Elemente de bază: adrese Internet şi URL

    -

    uri

  • 8/18/2019 Programarea Retelelor - CURS

    80/85

    80

    Elemente de bază: adrese Internet şi URL

    -

    uri

  • 8/18/2019 Programarea Retelelor - CURS

    81/85

    81

    Elemente de bază: adrese Internet şi URL

    -

    uri

  • 8/18/2019 Programarea Retelelor - CURS

    82/85

    82

    4.2.

    Comunicarea orientată pe conexiune:

    Cl S k t Cl S S k t

  • 8/18/2019 Programarea Retelelor - CURS

    83/85

    Clasa So ck et , Clasa ServerSoc k et

    83

    4.3

    . Comunicarea fără conexiune.

    Clasa

  • 8/18/2019 Programarea Retelelor - CURS

    84/85

    Datagram Pack et , Clasa Datagram Soc ket

    84

    4.4.

    Comunicarea de grup.

    Clasa Mu lt icastSoc ket

  • 8/18/2019 Programarea Retelelor - CURS

    85/85


Recommended