Sunteți pe pagina 1din 85

PROGRAMAREA

REELELOR DE

CALCULATOARE

CUPRINS
1. REELE DE CALCULATOARE. PROTOCOALE
1.1. Componentele reelelor de calculatoare
1.2. Modele de referin.
1.2.1. Modelul OSI
1.2.2. Modelul TCP/IP
1.2.3. Modelul client server
1.2.4. Probleme generale de proiectare
1.3. Familia de protocoale TCP/IP
1.3.1. Nivelul reea: IP
1.3.2. Nivelul transport: UDP i TCP
1.3.3. Nivelul aplicaie

1. REELE DE CALCULATOARE.
PROTOCOALE
1.1. Componentele reelelor de calculatoare
1.2. Modele de referin.
1.2.1. Modelul OSI
1.2.2. Modelul TCP/IP
1.2.3. Modelul client server
1.2.4. Probleme generale de proiectare
1.3. Familia de protocoale TCP/IP
1.3.1. Nivelul reea: IP
1.3.2. Nivelul transport: UDP i TCP
1.3.3. Nivelul aplicaie
3

1.1. Componentele reelelor de calculatoare


O reea de calculatoare este format dintr-un grup de
calculatoare (de orice tip) i periferice care partajeaz
resursele. Tendina actual a utilizatorilor o reprezint
folosirea calculatoarelor, nu izolat, ci cuplate ntr-o
reea.
Termenul reea de calculatoare are cel puin dou
utilizri distincte:
1. mai multe calculatoare, mpreun cu un sistem
(hard+soft) de comunicaii
2. un sistem de calcul, bazat pe o reea n sensul 1, dar
comportndu-se ca un sistem unitar (de exemplu,
prezint aceleai conturi de utilizatori pe toate
4
calculatoarele)

1.1. Componentele reelelor de calculatoare


Tipuri de reele:
Dup tehnologia de transmisie:

- reele cu difuzare (broadcast);

- reele punct - la - punct;


Dup scara la care opereaz reeaua (distana);

- reele locale LAN;

- reele metropolitane MAN;

- reele de arie intins WAN;

- Internet-ul; (GAN= Global Area Network)


Dup topologie:

- reele tip magistral (bus);

- reele tip stea (star);

- reele tip inel (ring);

- reele combinate.;
Dup tipul sistemului de operare utilizat:

- reele peer-to-peer;

- reele bazate pe server.


Dup tipul mediului de transmisie a semnalelor:

- reele prin medii ghidate (cablu coaxial, perechi de fire rsucite, fibra optic)

-reele prin medii neghidate (transmitere n infrarosu, unde radio, microunde)


Dup tipul utilizatorilor

-private (de uz industrial, militar, civil)

-publice
Dup tipul accesului la mediu

- Ethernet

-token ring

-token bus

-arcnet

1.2. Modele de referin

Pentru ca ntre calculatoarele dintr-o reea s se poat desfura cu succes


o comunicare, este necesar s se stabileasc anumite protocoale.

Un protocol poate fi definit ca un set de reguli i convenii stabilite ntre


participanii la o activitate comun.

Deoarece protocoalele utilizate n reelele de calculatoare s-au dovedit a fi


deosebit de complexe, s-a convenit ca ele s fie proiectate pe niveluri sau
straturi pentru a simplifica implementarea.

Fiecare nivel definete anumite servicii i eventual protocoale


corespunztoare acelor servicii. Astfel rezult modelele de referin.

1.2.1. Modelul OSI


Modelul de referin OSI (Open Systems Interconnection)

Este cel mai rspndit (n industrie) model de protocoale

Este un model abstract (reprezint un ghid) de reprezentare a procesului


de comunicaie n reelele de calculatoare

A fost dezvoltat de ctre ISO (International Standardization Organization)


la nceputul anilor 80 (1984)

Scopul: crearea posibilitii de acces la piaa reelelor (ocupat de IBM) a


tuturor productorilor printr-o standardizare n ansamblu

Cteva din avantajele folosirii OSI:

Descompune fenomenul de comunicare n reea n pri mai mici i


implicit mai simple.

Standardizeaz componentele unei reele permind dezvoltarea


independent de un anumit productor.

Permite comunicarea ntre diferite tipuri de hardware i software.

Permite o nelegere mai uoar a fenomenelor de comunicaie.

Modelul OSI

Modelul OSI
CARACTERISTICILE MODELULUI OSI

- Modelul OSI a fost construit avnd la baz principiul


comunicaiei pe nivele:
mparte complexitatea interreelelor n pai discrei
Permite dezvoltarea de software bazate pe standarde (IPSec)
Permite dezvoltarea specializat a software-ului modular (IP
mai multe protocoale ale nivelului Legturilor de date)
Permite comunicaia pereche, pe baza nivelelor pereche
(comenzile TELNET sunt executate la nivelul de aplicaie al
calculatorului destinaie

Modelul OSI
Funciile nivelurilor
Nivelul Aplicaie - realizeaz interfaa cu utilizatorul i interfaa cu aplicaiile,
specific interfaa de lucru cu utilizatorul i gestioneaz comunicaia ntre aplicaii.
Acest strat nu reprezint o aplicaie de sine stttoare, ci doar interfaa ntre aplicaii
i componentele sistemelui de calcul.
Unitatea de date: mesajul

Nivelul Prezentare - transform datele n formate nelese de fiecare aplicaie i de


calculatoarele respective, asigur compresia datelor i criptarea.

Nivelul Sesiune - furnizeaz controlul comunicaiei ntre aplicaii. Stabilete,


menine, gestioneaz i nchide conexiuni (sesiuni) ntre aplicaii.

Nivelul Transport - transferul fiabil al informaiei ntre dou sisteme terminale (end
points) ale unei comunicaii. Furnizeaz controlul erorilor i controlul fluxului de date
ntre dou puncte terminale, asigurnd ordinea corect a pachetelor de date.
Unitatea de date: segmentul, datagrama

10

Modelul OSI
Funciile nivelurilor
Nivelul Reea - determinarea cii optime pentru realizarea transferului de informaie
ntr-o reea constituit din mai multe segmente, prin fragmentarea i reasamblarea
informaiei
Unitatea de date: pachetul

Nivelul Legturi de Date - furnizeaz un transport sigur, fiabil, al datelor de-a lungul
unei legturi fizice, realiznd: Controlul erorilor de comunicaie; Controlul fluxului de
date; Controlul legturii; Sincronizarea la nivel de cadru
Unitatea de date: cadrul

Nivelul Fizic - transmiterea unui ir de bii pe un canal de comunicaie. Se


precizeaz modulaii, codri, sincronizri la nivel de bit. Un standard de nivel fizic
definete 4 tipuri de caracteristici:
Mecanice (forma i dimensiunile conectorilor, numrul de pini)
Electrice (modulaia, debite binare, codri, lungimi maxime ale canalelor de
comunicaie)
Funcionale (funcia fiecrui pin)
Procedurale (succesiunea procedurilor pentru activarea unui serviciu)
Unitatea de date: bitul

11

Modelul OSI
Exemple de protocoale din stiva 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 Switching)

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


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

12

1.2.2. Modelul TCP / IP


Desi modelul OSI este universal recunoscut, din punct de vedere
istoric i tehnic vorbind, n ceea ce privete Internetul, standardul
aplicat este TCP/IP, (Transmission Control Protocol/Internet
Protocol).
Modelul de referin TCP/IP i stiva sa de protocoale fac posibil
comunicarea ntre dou calculatoare care se afl n orice col al
lumii la viteze care cresc pe zi ce trece.
TCP/IP a luat natere n laboratoarele armatei americane n
sperana de a crea un mod de comunicare posibil n orice condiii
de lupt.
Datorit fiabilitii sale a fost mai trziu preluat de dezvoltatatorii
de UNIX i adus la un nivel care s permit comunicarea; n
Internet, astzi, fiind cea mai rspandit limb n care vorbesc
computerele oriunde n lume.
TCP/IP este un model n patru straturi:
aplicaie, transport, internet i nod de reea.
13

Modelul TCP / IP
1. Nu are niveluri distincte pentru prezentare i
sesiune, iar nivelurile fizic i legtur de date sunt
comasate n nod-reea.
2. Nivelul Internet a fost conceput pentru comutarea
de pachete. Este posibil ca pachetele s ajung la
destinaie n alt ordine dect cea de la emisie, sunt
rearanjate de nivelurile superioare.
3. Nivelul transport corespunde n bun msur cu
cel de la OSI. Are 2 protocoale principale: TCP (cu
conexiune) i UDP (fr conexiune)
4. Nivelul aplicaie apare imediat deasupra nivelului
transport. Protocoale mai cunoscute: TELNET
(terminal virtual), FTP (transfer de fiiere), SMTP
(pot electronic), DNS (nume de domenii), HTTP
(hypertext pagini Web)
14

1.2.3. Nivelul Client - Server


La nivel aplicaie exist de regul asimetrie ntre programele de la cele 2
capete: unul ofer servicii, cellalt solicit serviciile. Acest mod de lucru se
numete modelul client-server

Modelul client-server este dominant n proiectarea aplicaiilor de reea, dei au


aprut i alte modele: multistrat (multitier) sau peer-topeer
Este posibil ca acelai program s joace n contexte diferite att rol de server,
ct i rol de client
n modelul client-server clasic programul cu rol de server trebuie pornit primul
i lucreaz astfel:
1. se deschide un canal de comunicare i se informeaz calculatorul local c
programul poate accepta cereri de la clieni
2. programul rmne n ateptare pn la sosirea primei cereri de la un client;
3. programul accept cererea i o trateaz, elabornd un mesaj de rspuns
care se trimite clientului. Severul poate lucra concurent sau iterativ;
4. se revine la pasul 2.
15

Nivelul Client - Server


Programele server sunt scrise ca programe ciclice i rmn n funciune un timp
nedeterminat dup activare. Trebuie s existe posibilitatea de nregistrare i inere n
ateptare a cererilor de la clieni.

Pentru programele client aciunile tipice sunt:


1. deschiderea unui canal de comunicare i conectarea la o locaie determinat a unui
anumit calculator
2. emiterea unei cereri de servicii ctre server i recepionarea rezultatelor, ori de cte
ori este necesar
3. nchiderea canalului de comunicare i terminarea programului
Programele client sunt elementele active n aplicaiile client-server (serverele deschid
canalele de comunicare n mod pasiv).
Avantajele lucrului ntr-un mediu client-server sunt:
- Ofera faciliti de prelucrare mai ieftine dect cele cu calculatoare centrale
(mainframe), deoarece se obine o reducere a traficului prin reea.
- Se realizeaz o economie de memorie RAM a calculatorului client, deoarece serverele
sunt capabile s stocheze o cantitate mare de informaie.
- Datele care sunt obiectul prelucrrii sunt stocate pe server deci pot fi mult mai bine
16
protejate.

Nivelul Client - Server


Pentru a exemplifica procesul client
server, se consider o aplicaie de
administrare a bazelor de date.
Software-ul client foloseste limbajul
SQL pentru a traduce cererea
formulat de utilizator. Procesul de
solicitare i de primire a informaiilor
const din :
Clientul formuleaz solicitarea
Solicitarea este tradus n SQL
Solicitarea SQL este transmis
servereului de reea
Serverul de baze de date ncepe
cutarea datelor pe calculatorul pe
care acestea sunt stocate
Inregistrrile sunt returnate clientului
Datele sunt prezentate utilizatorului.

17

1.2.4. Probleme generale de proiectare

18

Probleme generale de proiectare

19

Probleme generale de proiectare

20

1.3. Familia de protocolale TCP / IP


TCP Transmission Control Protocol: orientat pe conexiune, flux de
octei fiabil, full-duplex. Protocol de baz pentru multe aplicaii.
UDP User Datagram Protocol: fr conexiune, nu garanteaz c
datagramele ajung la destinaie (pentru aplicaii mai simple).
IP Internet Protocol: pune la dispoziie serviciul de transfer de
pachete. Procesele utilizator nu lucreaz n mod normal cu acest
protocol.
ICMP Internet Control Message Protocol: utilizat pentru transmiterea
informaiilor de comand i eroare ntre componentele reelei.
Informaiile sunt generate n modulele care implementeaz familia de
protocolae, nu n procesele utilizator.

ARP Address Resolution Protocol: realizeaz corespondena ntre o


adres Internet i o adres hardware.
RARP Reverse Address Resolution Protocol: cunoscnd adresa
21
hardware determin adresa Internet

1.3. Familia de protocolale TCP / IP

22

1.3.1. Nivelul reea: IP


Protocolul IP transmite datagrame de la o adres surs la o adres
destinaie n mod nefiabil.
Fiecare datagram conine adresa sursei i adresa destinaiei, face
posibil rutarea ei independent.
IP poate realiza i fragmentarea datagramei, cu duplicarea dreselor
sursei i destinaiei n fiecare fragment.
Are i un anumit grad de contol al fluxului: dac apar pierderi de
pachete la destinaie se emite un mesaj ICMP ctre surs.
Adresele de noduri IP (v4) sunt reprezentate pe 32 bii, alocate n
mod unic la nivel global. (IPv6 are adrese pe 128 bii).
Exist 5 clase de adrese, separate prin valoarea din biii cei mai
semnificativi.
Convenie de scriere: fiecare din cei 4 octei ai adresei este notat
distinct, prin numrul zecimal corespunztor.
Ex. : 145.0.245.17
Alt convenie de scriere: 10.0.0.0/12 marcheaz aplicarea unei
mti de 12 bii pe adresa 10.0.0.0, adic ia toate valorile posibile din
23
ultimii 20 bii.

Nivelul reea: IP

24

Nivelul reea: IP

Adresele de clas A se folosesc la reele cu numr foarte mare de noduri


pot exista numai 126 astfel de reele. Primul octet are valoare mai mic
dect 127.

Adresele de clas B folosesc 16 bii pentru a identifica o reea i 16 pentru


nod n reea. Primul octet are valori ntre 128 i 191. Pot exista peste 16.000
de astfel de reele, fiecare cu peste 65.000 noduri.

Adresele de clas C utilizeaz 24 bii pentru a desemna reeaua i 8 bii


pentru nod n reea. Primul octet are valori ntre 192 i 223, sunt posibile
peste 2 milioane astfel de reele, fiecare cu max. 256 noduri.

Pe lng comunicarea punct la punct exist i aplicaii la care un mesaj


ajunge la mai muli receptori (teleconferin, cotaii la burs), care folosesc
adrese multicast (clas D), cu primul octet ntre 224 i 239.

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

Exist i cteva adrese speciale: 127.0.0.1 este bucla local (loopback)


care nu corespunde unei interfee, se folosete pentru testarea software-ului
25
de reea

Nivelul reea: IP

Adresa 255.255.255.255 este adresa de broadcast local: orice calculator dintr-o


reea local recunoate pe lng adresa sa i aceast adres.

O adres de forma 173.56.255.255 denot broadcast la toate nodurile din clasa


173.256.0.0, indiferent dac sursa e n aceeai reea local sau nu.

Se face distincie ntre adrese publice i adrese private: cele publice au caracter de
unicitate i sunt rutate n Internet; cele private pot fi utilizate intern ntr-o organizaie,
fr a fi vizibile n afar (nu sunt rutate)

Adresele private sunt: 10.0.0.0 10.255.255.255 (reea de clas A), 172.16.0.0


172.31.255.255 (bloc de reele de clas B), 192.168.0.0 192.168.255.255 (bloc de
reele de clas C).

Protocolul ARP: un nod trimte n mod broadcast un mesaj care conine o adres IP.
Nodul care i recunoate adresa IP rspunde cu un mesaj care conine adresa sa
fizic, destinat sursei iniiale

Protocolul RARP: nodul trimite n broadcast adresa sa fizic; un nod server i


rspunde cu adresa IP
26

1.3.2. Nivelul transport: UDP i TCP

Mijlocul de identificare a proceselor utilizator n TCP i UDP trebuie s fie


independent de sistemul de operare din nod.

Se folosete portul, reprezentat fizic ca numr pe 16 bii. Exist spaii separate


pentru TCP i UDP, fiecare cu
65.536 porturi n fiecare nod.

Numerele de porturi <1024 se atribuie unor servicii binecunoscute (well-known) i


funcioneaz n regim
privilegiat. Programatorii obinuii vor utiliza numai porturi >1024. Numai serverele i
nregistreaz numere de porturi, pentru a putea fi gsite de clieni. Programele client
pot lsa atribuirea portului la dispoziia SO, avnd deci porturi efemere.
TCP, protocol fiabil, poate folosi tehnica de achitare pozitiv cu retransmitere, dar
pentru eficien folosete
fereastra alunectoare (sliding window): se transmit n mod controlat octei n avans
fa de cei deja achitai.
n antetul TCP este un numr de secven, completat de emitor, care arat
deplasamentul n flux al nceputului pachetului curent. Alt cmp, numrul de achitare,
e completat de receptor n pachetul de achitare i arat ce pachet se achit. Un al
treilea cmp, folosit tot n pachetele de achitare, arat ci octei mai poate primi
receptorul nainte de a trimite o nou achitare
27

Nivelul transport: UDP i TCP

28

1.3.3. Nivelul aplicaie


SERVICIUL DE NUME DE DOMENII (DNS)
Serviciul de nume de domenii realizeaz corespondena ntre adrese IP i
nume simbolice ale nodurilor. A fost definit o schem ierarhic de
construire a numelor de noduri, iar corespondena nume-adres se face
cu ajutorul unei baze de date distribuite.

Pentru a stabili corespondena nume adres un program de aplicaie


oarecare (partea de client pentru DNS) apeleaz o procedur de
bibliotec (numit resolver) care trimite un pachet UDP la serverul DNS
local (a crui identitate e stabilit de administratorul de reea i indicat
ntr-un fiier de configurare al SO. Serverul returneaz adresa, iar
resolver-ul o returneaz clientului. Dac nu e gsit pe serverul local,
acesta apeleaz la alte servere de nume, pn adresa e gsit sau se
returneaz eroare.

29

SERVICIUL DE NUME DE DOMENII (DNS)

30

SERVICIUL DE NUME DE DOMENII (DNS)

Conceptual n Internet exist cteva sute de nume de domenii de nivel superior,


fiecare se mparte n subdomenii (domenii de nivel 1) care la rndul lor se mpart
n subdomenii, etc.

La nivel superior exist dou categorii de domenii: generice i nume de ri. Cele
generice 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 forele armate ale SUA), int (organisme internaionale),
net (organizaii de administrare a reelelor).

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

Domeniile superioare nume de ri constau din 2 litere, conform standardului ISO


3166 (ex. ro Romnia, uk Marea Britanie, fr Frana, de Germania , dar i
eu European Union)

Organizarea numelor din nivelurile inferioare variaz de la o ar la alta: Austria,


Japonia, Marea Britanie impun structurarea dup tipuri de activiti: co
comercial, ac - academic
31

SERVICIUL DE NUME DE DOMENII (DNS)


Pentru indicarea unui nume de domeniu se scriu toate
componentele din ierarhie, de la cea mai specific pn la un
nume de domeniu superior.

Nu se face distincie ntre litere mari i mici ntr-o component.


Lungimea unei componente nu poate depi 64 caractere,
lungimea total e limitat la 255 caractere. Uneori trebuie fcut
deosebirea ntre nume relative i nume absolute (ultimele se
termin cu punct dup numele de domeniu de nivel superior).
Atribuirea de nume nu e legat de adresele IP, ci de limite
organizaionale. Fiecare domeniu este responsabil pentru
gestionarea domeniilor incluse
Protocolul DNS folosete pentru server portul 53 i definete i
formatul informaiilor din baza de date.
32

1.3.3. Nivelul aplicaie


POTA ELECTRONIC (E-MAIL)

Este, alturi de transferul de fiiere, cea mai veche aplicaie (nainte de 1980)

Se prezint forma standardizat n 1982, prin protocolul SMTP (Simple Mail


Transfer Protocol), pentru transmiterea de coninut ASCII

Forma de adresare: numelogin@numedomeniu

n centrul sistemului de pot electronic se afl agentul pentru transferul potei


(MTA) preia mesajele care vin din afara sistemului (SMTP, rmail), ct i din
sistem (UA User Agent); livreaz mesaje ctre uux, SMTP sai intern, prin mail

Agentul utilizator realizeaz interfaa cu clienii, cu servicii de compunere, editare,


transmitere a mesajelor, acces la mesaje recepionate n cutia potal (mailbox)

irul de mesaje queue pstraz temporar mesajele pn la livrare (spre mailbox


sau spre exterior)

Portul rezervat pentru SMTP este 25 din spaiul pentru TCP

Funcionarea protocolului poate fi ilustrat folosind clientul TELNET

33

POTA ELECTRONIC (E-MAIL)

34

POTA ELECTRONIC (E-MAIL)

35

1.3.3. Nivelul aplicaie


WORLD WIDE WEB. PROTOCOLUL HTTP

WWW a fost propus n 1989 la CERN-Geneva de fizicianul Tim BernersLee i a fost demonstrat public n decembrie 1991

Motivare: s permit cercettorilor rspndii n toat lumea s


colaboreze folosind colecii de documente compuse din rapoarte, planuri,
desene, fotografii etc. i aflate n permanent schimbare

Distincie clar ntre client i server

Un server WWW gestioneaz un numr de documente i le trimite la


cerere clienilor

Un client WW (browser Web) permite utilizatorului s solicite documente


de la un server WWW i dup recepionare le red pe ecran ntr-un
format corespunztor(de regul grafic)
Principalele probleme legate de WWW:
A) modul de identificare a documentelor n Internet
B) formatul pentru coninutul documentelor
36
C) protocolul de comunicare ntre client i server

WORLD WIDE WEB. PROTOCOLUL HTTP


A. Pentru identificarea documentelor s-a propus conceptul de locator
universal de resurse (Universal Resource Locator URL) care indic
identitatea astfel:

unde:
- protocol indic ce protocol se folosete pentru comunicare: http pentru
documente hypertext, ftp pentru transfer de fiiere, file pentru acces la un
fiier local
- calculator este numele nodului pe care se afl documentul dorit (server
WWW sau FTP)
- port arat la ce port ruleaz serverul pentru documentul dorit. Este opional
dac se folosete portul standard al protocolului (80 pentru WWW)
- nume_de_cale indic de regul un fiier, dar poate fi utilizat i alt
convenie. Serverele WWW stabilesc o anumit origine (rdcin) a unui
sistem de fiiere, numele de cale fiind n raport cu aceast origine
- etichet este element opional, indic o anumit locaie ntr-un document
37

WORLD WIDE WEB. PROTOCOLUL HTTP

B. Coninutul documentelor Web este construit ca hypertext, adic n document


pot apare legturi spre alte documente. Se folosete un limbaj 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

Exemplu de document HTML:


<HTML>
<title>Exemplu de pagina Web</title>
<BODY>
<h1>Exemplu de pagina Web cu hypertext</H1>
Servere Web ale unor universitati din Romania:
<UL>
<li><a
href=http://www.islavici.ro>UniversitateaIOAN
SLAVICI Timisoara</A>
<LI> <A href=http://www.uoradea.ro>Universitatea
din Oradea</A></UL>
<HR>Pentru detalii scrieti la: <a
href=mailto:prog.retele@islavici.ro
>gabi.mnerie@islavici.ro</a>
</body></HTML>

Universitatea _IOAN SLAVICI Timisoara


Universitatea din Oradea

prog.retele@islavici.ro

38

WORLD WIDE WEB. PROTOCOLUL HTTP

C. Protocolul de comunicare ntre client i server este HTTP(HyperText Transfer


Protocol). Fiecare aciune const dintr-o cerere emis de client n format ASCII i
un rspuns elaborat de server n format MIME. Protocolul de nivel transport este
de regul TCP

Cererile pot fi simple (nu indic versiunea de protocol HTTP) sau complete (cu
indicarea versiunii i cu o linie goal la sfrit)

Tipuri de cereri:
GET citirea (ncrcarea) unei pagini Web
HEAD citirea antetului unei pagini Web
PUT scrie o pagin Web n colecia de pagini a uneui server Web
POST similar cu PUT, dar nu poate nlocui pagini existente
DELETE terge pagina adresat
LINK i UNLINK stabilesc, respectiv termin legturi ntre pagina

Web i alte resurse


Exemplu de utilizare: utilizarea clientului TELNET
pentru citirea antetului paginii Web pentru pagina
simpl dezvoltat mai nainte (presupune c pe
calculatorul local este activat un server WWW)

39

WORLD WIDE WEB. PROTOCOLUL HTTP


Exemplu de utilizare: utilizarea clientului TELNET pentru citirea antetului
paginii Web pentru pagina simpl dezvoltat mai nainte (presupune c
pe calculatorul local este activat un server WWW)
prog.retele@islavici:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to local host.
Escape character is ^].
HEAD http://localhost/~prog.retele/test.htrml
HTTP/1.0
HTTP/1.1 200 OK
Date: Tue, 12 Mar 2013 14:59:49 GMT
Server: Apache/1.3.6 (Unix) (Red Hat/Linux)
Last-Modified: Tue, 12 Mar 2013 14:52:35 GMT
Etag:c68e5-387ae143
Accept-Ranges: bytes
Content-Length: 539
Connection: close
Content-Type: text/html
Connection closed by foreign host

40

2. Programarea cu sockets n UNIX

2.1. Prezentare general


2.2. Apeluri sistem fundamentale

2.3. Funcii de bibliotec utile

41

2.1. Prezentare general


Programarea cu sockets a fost introdus iniial n UNIX, se
folosete acum i pe alte sisteme
API (Application Programming Interface) pentru sockets asigur
comunicarea nivelului aplicaie cu nivelul transport
Formal API apare ca o bibliotec de funcii puse la dispoziia
programatorilor
Exist o analogie ntre operaiile cu perifericele i comunicaiile
n reea
Pentru a ine cont de particularitile reelelor a fost propus
conceptul de soclu (socket)
Soclurile sunt reprezentate n sistem prin descriptori, la fel ca
fiierele, dar un soclu exist numai n memorie
42

2.1. Prezentare general


Particulariti ale lucrului n reea:
Relaia client-server este asimetric, deci un program din reea
trebuie s cunoasc ce rol joac
Comunicarea n reea poate fi cu conexiune sau fr conexiune.
n primul caz asemnarea cu fiierele este mai evident, dar
pentru comunicarea fr conexiune nu exist analogie cu open,
fiecare operaie poate implica alt proces
Numrul de parametri care trebuie specificai pentru o conectare
n reea este mai mare dect cel necesar la operaiile cu fiiere:
trebuie indicate protocolul, adresa local, adresa la distan,
portul local, portul la distan
Cel puin la unele protocoale sunt importante limitele ntre
nregistrri (la fiiere e vorba ntotdeauna de flux de octei)
43

2.1. Prezentare general


Au fost create apeluri sistem noi, unele utilizate att la
comunicarea cu conexiune, ct i la cea fr conexiune, altele
specifice pentru fiecare mod de comunicare
n scenarille tipice pentru ambele tipuri de transferuri se
observ c trebuie pornit mai nti serverul, pentru a exista
sigurana c serviciile solicitate de client exist deja cnd
este emis o cerere
La aplicaiile fr conexiune clientul trimite direct datagrame, iar
serverul nu accept cereri de conexiune, ci emite direct un apel
sistem recvfrom() la care ateapt sosirea unei datagrame

44

2.1. Prezentare general


Aplicaie cu
conexiune

45

2.1. Prezentare general


Aplicaie fr
conexiune

46

2.2. Apeluri sistem fundamentale


2.2.1. Apelul socket
Crearea unui socket se realizeaz cu apelul sistem socket().
Pentru comunicarea n reea, orice program trebuie s dispun
de cel puin un socket.
Prototipul apelului:
#include <sys/types.h>
#include <sys/socket.h>
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)
47

2.2. Apeluri sistem fundamentale


2.2.1. Apelul socket

Tipul socketului poate fi:


SOCK_STREAM orientat pe conexiune
SOCK_DGRAM socket datagram (fr conexiune)
SOCK_RAW socket direct (comunicare la
Pentru protocol se folosete de regul valoarea 0, dar ar putea
apare i:
IPPROTO_TCP, IPPROTO_UDP, IPPROTO_RAW - pentru a
asculta trafic TCP, UDP sau ICMP, trebuie create separat 3 raw
socket (numerele de protocol sunt 0 sau 6 pentru tcp, 17
pentru udp si 1 pentru icmp)
Valoarea returnat este un descriptor de socket, folosit ca i
descriptorii de fiier
48

2.2. Apeluri sistem fundamentale


2.2.2. Apelul bind
Apelul sistem bind() realizeaz legtura ntre un socket anterior
creat i un punct final de comunicare
Prototipul apelului:
#include <sys/types.h>

#include <sys/socket.h>
int bind (int sockfd, struct sockaddr *myaddr, int
addrlen);

sockfd este descriptor de socket obinut de la un apel socket()


Structura de adres este definit n <sys/socket.h> astfel:
struct sockaddr {
u_short sa_family; /*address family */
char sa_data[14]; /* up to 14 bytes of protocol specific address */
49
};

2.2. Apeluri sistem fundamentale


2.2.2. Apelul bind
Pentru familia de protocoale TCP/IP, cei 14 octei se folosesc
astfel:
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 */
50
};

2.2. Apeluri sistem fundamentale


2.2.2. Apelul bind
Principalele utilizri ale lui bind():
Serverele (cu sau fr conexiune) i nregistreaz n sistem o
adres binecunoscut
Un client i poate nregistra o adres specific
Un client fr conexiune se asigur c sistemul i atribuie o
adres unic, la care serverul trimite
Dup un apel bind() se completeaz 2 elemente dintr-o
asociaie: local_addr i local_port

51

2.2. Apeluri sistem fundamentale


2.2.3. Apelul sistem connect
Apelul sistem connect() permite clientului s solicite stabilirea
legturii cu un server.
Prototipul:
#include <sys/types.h>
#include <sys/socket.h>
int connect ( int sockfd, struct sockaddr
*myaddr, in addrlen);

Apelul returneaz 0 la succes i -1 la eroare


52

2.2. Apeluri sistem fundamentale


2.2.3. Apelul sistem connect
Rezultatul apelului connect() la protocol cu conexiune este
stabilirea unei conexiuni ntre sistemul local i un alt sistem. Se
schimb mesaje ntre cele 2 sisteme pentru stabilirea
parametrilor conexiunii. Apelul la connect() se poate face i
fr a utiliza n prealabil bind()
Dac se folosete la protocol fr conexiune apelul revine
imediat, fixeaz doar adresa serverului. Datagramele nu mai
trebuie s specifice adresa destinaiei i se pot folosi apelurile
read(), write(), recv(), send()

53

2.2. Apeluri sistem fundamentale


2.2.4. Apelul sistem listen
Apelul sistem listen() este utilizat la serverele cu conexiune i
arat cte cereri poate ine n ateptare serverul.
Are prototipul:
int listen ( int sockfd, int backlog);
De regul apelul la listen() este plasat dup socket() i bind(),
imediat nainte de accept().

54

2.2. Apeluri sistem fundamentale


2.2.4. Apelul sistem listen
Al doilea argument precizeaz cte apeluri pot fi acceptate n
timp ce serverul ateapt terminarea unei cereri anterior
acceptate.
Apare o perioad de ateptare n server chiar dac e vorba de
un server concurent. n acest interval pot sosi noi cereri de la
clieni.
Tradiional valoarea utilizat pentru backlog este 5.

55

2.2. Apeluri sistem fundamentale


2.2.5. Apelul sistem accept
Este folosit n servere pentru a accepta cereri de la clieni.
Are prototipul:
#include <sys/types.h>
#include <sys/socket.h>
int accept (int sockfd, struct sockaddr *peer,
int *addrlen);
Dac nu exist cereri n ateptare, serverul ateapt pn la
sosirea unei cereri; altfel extrage prima cerere din cele n
ateptare
Argumentele peer i addrlen se folosesc pentru a returna
adresa procesului client (i addrlen este de tip referin)
56

2.2. Apeluri sistem fundamentale


2.2.5. Apelul sistem accept
Valoarea returnat este fie indicaie de eroare (-1), fie
descriptorul unui nou socket creat pentru comunicarea cu
clientul
Pentru noul socket sunt completate toate elementele unei
asociaii: (protocol, local-addr, local-process, foreign-addr,
foreign-process),
dar pentru socketul serverului (cel indicat de primul argument
din accept) ultimele 2 elemente din asociaie rmn
nespecificate. Astfel se pot accepta noi cereri de conexiune.
Serverul poate fi iterativ sau concurent

57

2.2. Apeluri sistem fundamentale


2.2.5. Apelul sistem accept
Un server iterativ are urmtorul 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 <0)
err_sys(accept error);
doit (newsockfd);
close(newsockfd);
}

58

2.2. Apeluri sistem fundamentale


2.2.5. Apelul sistem accept
Pentru un server concurent linia doit(...) se nlocuiete cu:
if ( fork() == 0) {
close (sockfd);
doit(newsockfd); /*process the
request */
exit(0);
}

59

2.2. Apeluri sistem fundamentale


2.2.6. Apeluri pentru transferuri fr conexiune
Pentru transferurile efective de date la protocoalele cu
conexiune se folosesc read() i write().
Pentru protocoalele fr conexiune sunt prevzute apeluri noi:
#include <sys/types.h>
#include <sys/socket.h>

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);
60

2.2. Apeluri sistem fundamentale


2.2.6. Apeluri pentru transferuri fr conexiune
Primele 3 argumente sunt similare cu cele de la read() i
write()
Argumentul al 4-lea este de regul 0, dar poate fi format i prin
SAU logic ntre constante care precizeaz condiii de efectuare
a apelului
Apelurile send() i receive() presupun c sunt cunoscute toate
elementele unei asocieri, adic a fost efectuat n prealabil un
apel connect().
La sendto() i recvfrom() elementele pentru identificarea
calculatorului la distan se specific n apel, prin ultimele 2
argumente
Toate cele 4 apeluri returneaz la execuie normal lungimea
61
transferului n octei

2.3. Funcii de bibliotec utile


Funcii pentru ordinea octeilor. Sunt necesare datorit
diferenelor arhitecturale ntre calculatoare:
#include < sys/types.h>
#include <netinet/in.h>
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 convenia c un
ntreg scurt se reprezint pe 16 bii, iar unul lung pe 32 bii. 62

2.3. Funcii de bibliotec utile


Funcii pentru operaii cu octei. Realizeaz operaii asupra
unor cmpuri 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 cea
de la funcia strcpy() din biblioteca standard C.
bcmp() returneaz 0 dac irurile de octei sunt identice i
valoare nenul n caz contrar (diferit de strcmp() din biblioteca
standard C.)
63

2.3. Funcii de bibliotec utile


Funcii pentru conversia adreselor. Conversia ntre
reprezentarea extern a adreselor Internet i reprezentarea
intern binar pe 32 bii se realizeaz cu funciile:
#include <sys/socket.h>
#include <netinet.h>
#include <arpa/inet.h>
#include <netdb.h> /* pentru gethostbyname */
unsigned long inet_addr ( char *ptr);
char *inet_ntoa ( struct in_addr inaddr);
struct hostent *gethostbyname ( const char *name);
64

2.3. Funcii de bibliotec utile


Prima funcie convertete un ir de caractere (adres n notaia
cu punct) n valoare binar
A doua funcie face conversia invers fa de prima
A treia funcie obine adresa IP plecnd 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 */
65
}

3. APELAREA PROCEDURILOR LA
DISTANT

3.1. Reprezentarea extern a datelor


3.2. Identificarea unui serviciu RPC
3.3. Realizarea aplicaiilor cu
3.4. Autorizarea accesului la server
66

3.1. Reprezentarea extern a datelor


Dificulti la programarea cu sockets:
a) necesitatea codului specific pentru conectare, att n client ct
i n server;
b) necesitatea de a ine cont de arhitecturile diferite ale
calculatoarelor
Posibil soluie: 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 execuie suplimentar pentru realizarea
comunicrii (stub n client, schelet n server)
67

3.1. Reprezentarea extern a datelor


O implementare a conceptului RPC presupune:
O notaie pentru specificarea formatului datelor schimbate ntre client i
server, ca i a procedurilor apelabile de la distan puse la dispoziie de
server
Un instrument pentru generarea automat a codului pentru stub-ul client i
pentru scheletul server
Un serviciu de legtur (portmapper) care s permit clienilor o gsire mai
uoar a serverului
O bibliotec de funcii auxiliare
Caracteristici generale pentru reprezentarea extern a datelor (XDR):
Folosete convenia big-endian pentru reprezentarea datelor multi-octet
Nu permite negocierea protocolului, adic nu se pot evita conversiile dac la
ambele capete exist aceeai arhitectur de procesor
Folosete tipizarea implicit, adic modulele de la cele dou capete cunosc
structura mesajelor transferate, n mesaj nu exist informaii despre tipul
68
cmpurilor

3.1. Reprezentarea extern a datelor


3.1.1. Tipuri de date

void indic absena argumentelor la o procedur sau a cmpurilor la o


alternativ dintr-o uniune cu discriminant
int similar cu C, dar cu reprezentare pe 4 octei
hyper - numr ntreg pe 8 octei
float - numr real pe 4 octei, cf. standardului IEEE
double numr real pe 8 octei, cf. standardului IEEE
enum - desemneaz submulimi de ntregi. Ex.: enum {FALSE=0, TRUE=1
}identificator
boolean - tipul boolean redat prin enumerarea de mai sus
opaque reprezint date fr inyerpretare, se vd ca secven de octei. Pot
fi de lungime fix sau variabil, trebuie s se reprezinte pe lungime multiplu
de 4
string - iruri de caractere, reprezentate printr-u n ntreg urmat de codurile
ASCII ale caracterelor. Lungimea se ajusteaz la multiplu de 4
69

3.1. Reprezentarea extern a datelor


3.1.2. Filtre XDR

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:

70

3.1. Reprezentarea extern a datelor


3.1.2. Filtre XDR

Componentele se reprezint n ordinea declarrii i fiecare are lungime


multiplu de 4 . Componentele pot fi tipuri elementare sau tablouri sau
structuri

o uniune cu discriminant este o structur care const din mai multe


obiecte, primul declarat avnd rolul de discriminant (poate fi int sau enum).
Valoarea discriminantului selecteaz componenta uniunii. Exemplu:

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


;
introduce definiii de tip, similar cu C. Exemplu:
;

71

3.1. Reprezentarea extern a datelor


3.1.2. Filtre XDR

Pentru efectuarea conversiilor de reprezentare, biblioteca de funcii auxiliare


a RPC ofer o colecie de filtre XDR, cte unul pentru fiecare tip elementar.
Un singur filtru realizeaz att codificarea, ct i decodificarea datelor.
Denumiri:
, etc.

Exist i filtre pentru structuri de date i se genereaz automat filtre pentru


tipuri definite de utilizator

Un filtru are 2 parametri: primul este handle sau descriptor pentru un flux
XDR, al doilea este pointer la elementul de date tratat. Sensul n care
lucreaz filtrul este memorat n descriptor

Fluxurile XDR se pot asocia cu tampoane n memorie sau cu fluxuri de I/E


descrise prin

Filtrele XDR genereaz ntotdeauna reprezentri binare ale informaiilor


72

3.1. Reprezentarea extern a datelor


3.1.2. Filtre XDR
Paii parcuri la transmiterea unei structuri:
Clientul asambleaz datele ntr-o structur
Clientul apeleaz stub-ul corespunztor, furniznd adresa structurii, iar stub-ul trmite
adresa la filtrul XDR
Filtrul XDR din client serializeaz n modul ENCODE i le transmite prin reea la server
Filtrul XDR din server, lucrnd n mod DECODE, de-serializeaz datele i le
tgransmite la scheletul funciei din server
Scheletul trimite datele la funcia corespunztoare
La revenirea din funcia server rezultatele trec prin transformrile descrise mai sus

73

3.2. Identificarea unui serviciu RPC

O procedur la distan este identificat prin 3


numere:
{numr program, numr versiune, numr procedur}
Programatorii vor utiliza aceste numere ntregi
doar n specificarea prii de server a aplicaiei
Fiecare calculator pe care pot rula aplicaii RPC
trebuie s ruleze un portmapper (el nsui un
serviciu RPC) la care se nregistreaz toate
serverele RPC de pe acel calculator
La pornirea serverului se creeaz un port la care
se accept conexiuni i se transmite la portmapper
un mesaj prin care serverul anun numerele sale
de identificare i portul
Cnd un client dorete s apeleze o procedur la
distan, trebuie s solicite la portmapper informaii
despre serverul care conine procedura (furnizeaz
numerele de identificare i obine portul)
n continuare clientul poate trimite mesaje direct la
portul obinut

74

3.3. Realizarea aplicaiilor cu

Majoritatea operaiilor auxiliare pentru realizarea unei aplicaii distribuite


RPC sunt efectuate de utilitarul
, care primete la intrare un fiier n
notaie XDR i produce la ieire 4 fiiere n format surs C

Fiierul de intrare (fiier de specificare a protocolului) conine 2 pri:


1. declaraiile tipurilor definite de utilizator
2. lista procedurilor oferite de server, cu precizarea numelui acestora, a
parametrilor de intrare i a valorilor returnate

Cele 4 fiiere produse la ieire de


sunt:
1.
conine cod surs C pentru stub-uri client ale aplicaiei
2.
codul surs pentru partea de schelete server ale aplicaiei
3.
codul surs pentru filtrele XDR corespunztoare tipurilor definite
de utilizator ale aplicaiei
fiierul antet care conine declaraiile de structuri i definiiile de tip
n C, corespunztoare tipurilor de date XDR definite n demio.x
75

3.3. Realizarea aplicaiilor cu

Pe lng fiierul .x, proiectantul trebuie s mai furnizeze:


1.
Codul surs al procedurilor server (fiierul
). Acesta nu
conine un program complet, ci doar codul funciilor, inclusiv funcii
auxiliare, neapelabile din client, dac este cazul
2.
Codul surs al programului client (
). Acesta este un
program complet, iar la scrierea sa trebuie respectate anumite
convenii

Pentru a construi partea de server a aplicaiei trebuie compilate i linkeditate fiierele


i

Pentru a construi partea de client a aplicaiei se compileaz i link-editeaz


,
i
Fiierul
este inclus implicit n codul generat de
pentru fiierele
stub i schelet

76

3.3. Realizarea aplicaiilor cu

77

3.4. Autorizarea accesului la server

Dezvoltarea aplicaiilor distribuite a condus la introducerea unor metode de


autorizare a cererilor de la clieni, bazate, de regul, pe un credenial i un verificator,
transmise de client ctre server
Credenialul precizeaz identitatea clientului, iar verificatorul este o informaie pe
care se presupune c numai un utilizator adevrat o cunoate
Poate fi la fel de important ca un utilizator s poat verifica identitatea serverului
(dac, de exemplu, clientul urmeaz s transmit date confideniale spre server)
Protocolul RPC nu definete un mecanism de autentificare, dar are un cmp n
pachetele de cereri RPC n care se pot introduce date de autentificare (verificabile la
nivelul aplicaiei)
Majoritatea implementrilor RPC ofer un anumit suport pentru 3 forme de
autentificare. Exist fiiere antet care definesc formatul datelor de autentificare i
rutine n biblioteca RPC care opereaz asupra acestor date
Cele 3 forme de autentificare sunt:
1.
: nu se verific nici credenial, nici autentificator (verificator)
2.
: credenialul const din numele calculatorului, UID-ul i GID-ul
utilizatorului i o list de grupuri crora le aparine utilizatorul. Nu exist verificator
3.
: credenialul const din numele de reea al utilizatorului (de forma
user@machine), iar verificatorul este un marcaj de timp, criptat conform standardului
78
DES

4. PROGRAMAREA CU SOCKETS N
JAVA
4.1. Elemente de baz: adrese Internet i URL-uri
4.2. Comunicarea orientat pe conexiune: Clasa
Socket, Clasa ServerSocket

4.3. Comunicarea fr conexiune. Clasa


DatagramPacket, Clasa DatagramSocket
4.4. Comunicarea de grup. Clasa
MulticastSocket

79

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

80

Elemente de baz: adrese Internet i URL-uri

81

Elemente de baz: adrese Internet i URL-uri

82

4.2. Comunicarea orientat pe conexiune:


Clasa Socket, Clasa ServerSocket

83

4.3. Comunicarea fr conexiune. Clasa


DatagramPacket, Clasa DatagramSocket

84

4.4. Comunicarea de grup. Clasa MulticastSocket

85