programarea retelelor - curs
Post on 06-Jul-2018
247 Views
Preview:
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: gabi.mnerie@islavici.ro
38
Universitatea _IOAN SLAVICI” TimisoaraUniversitatea din Oradea
prog.retele@islavici.ro
-
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
top related