3. ARQUITECTURA CLIENT – SERVIDOR
Conceptes bàsics
• Aplicació: Es compon de les aplicacions
de xarxa (FTP, SMTP, ..) Aplicació
• Transport: Transferència de dades
host-host (TCP, UDP)
Transport
• Internet: Encaminament de
datagrames des de la font al destí (IP, Internet
protocols d’encaminament, ..).
Accés a la
• Accés a la xarxa: Transferència de xarxa
dades entre elements veïns en la xarxa.
4. ARQUITECTURA CLIENT – SERVIDOR
Què és un port?
Un port en la capa de
transport es troba Aplicació
representat per un numero
de 16 bits que s’utilitza per
Transport
identificar els punts finals de
la connexió en les Internet
capçaleres UDP o TCP.
Accés a la
xarxa
Port vs Socket: http://youtu.be/diasbxQYiSY
5. ARQUITECTURA CLIENT – SERVIDOR
Què és un port?
Els números de ports oscil·len entre 0 i
65.535.
La pila de protocols de xarxa afegeix els
ports com una abstracció per la xarxa.
Són canals que utilitza el subsistema de
xarxa per readreçar la informació al
programa adient.
6. ARQUITECTURA CLIENT – SERVIDOR
Classificació dels ports
Ports ben coneguts (well-known ports) [0, 1023]
S’utilitzen per serveis de xarxa ben coneguts
(FTP, HTTP, Telnet, DNS, …)
Ports registrats
Oscil·len entre el 1.024 i el 49.151 i tant poden
ser utilitzats temporalment pels clients com
poden representar serveis registrats per un tercer.
Ports dinàmics o privats
Oscil·len entre 49.152 i 65.535; si bé poden ser
utilitzats pel client, s’utilitzen amb menys
freqüència.
7. ARQUITECTURA CLIENT – SERVIDOR
Sòcols
Un número de port i una adreça de xarxa.
Un parell de sòcols, un en cada host, formen una
connexió única.
És el punt final d’un enllaç de comunicació de
dues vies entre dos programes que s’executen a
través de la xarxa.
El client i el servidor s’han de posar d’acord sobre
quin protocol utilitzaran.
8. ARQUITECTURA CLIENT - SERVIDOR
Què és un procés?
Es tracta d’un programa en execució en un
ordinador.
Dins de la màquina dos processos es
comuniquen utilitzant la comunicació entre
processos (definida pel sistema operatiu).
Els processos en diferents hosts es
comuniquen mitjançant el intercanvi de
missatges.
9. ARQUITECTURA CLIENT - SERVIDOR
Què és un procés?
Els processos envien/reben missatges a/des dels seus
sòcols
El procés transmissor treu els missatges pel seu port.
El procés transmissor confia en la infraestructura de
transport a l’altre costat del port encarregada de
portar els missatges al sòcol en el procés receptor.
10. ARQUITECTURA CLIENT - SERVIDOR
Relació procés/sòcol
= procés = sòcol (socket)
Aplicació P3 P1 Aplicació P3 P4 Aplicació
Transport Transport Transport
Internet Internet Internet
Accés a la xarxa Accés a la xarxa Accés a la xarxa
Host 1 Host 2 Host 3
11. ARQUITECTURA CLIENT - SERVIDOR
Classificació de sòcols
Orientat a connexió
Defineix un camí virtual entre el servidor i el client.
És fiable: No hi han pèrdues de informació ni duplicats.
La informació arriba en el mateix ordre que s’envia.
El client obre una sessió en el servidor i aquest guarda
un estat del client.
12. ARQUITECTURA CLIENT - SERVIDOR
Classificació de sòcols
No orientat a connexió
Enviament de datagrames de grandària fixe.
No és fiable: Poden haver-hi pèrdues de informació i
duplicats.
La informació pot arribar en un ordre al que s’envia.
No es guarda cap estat del client en el servidor; és per
això que és més tolerant a fallides del sistema.
13. ARQUITECTURA CLIENT - SERVIDOR
Concepte Client / Servidor
La comunicació de dos hosts es realitza, generalment,
mitjançant la filosofia Client/Servidor.
L’usuari client obté serveis de la màquina remota proveïdora
d’un servei (servidor).
El servidor proporciona un port de comunicació pel que s’han de
connectar tots els clients que desitgin obtenir aquest servei.
Es defineix un sòcol en la màquina local (client) i un altre en la
màquina remota (servidor) i es comuniquen entre ells pel port
proporcionat.
14. ARQUITECTURA CLIENT – SERVIDOR
Procés Client
1. Obrir el canal de comunicacions per connectar-se a
l’adreça de xarxa atesa pel servidor.
2. Enviar al servidor un missatge de petició de servei i
esperar fins a rebre resposta.
3. Tancar el canal de comunicació i acabar l’execució del
procés.
15. ARQUITECTURA CLIENT – SERVIDOR
Procés Servidor
1. Obrir el canal de comunicacions i informar a la xarxa tant
de l’adreça per la que respondrà com de la disposició per
acceptar peticions de servei.
2. Esperar a que el client realitzi una petició de servei en
l’adreça que té declarada.
3. Quan rep una petició de servei, atén al client.
4. La connexió es tanca.
16. ARQUITECTURA CLIENT – SERVIDOR
Processos que es comuniquen
Procés Client: Procés que inicia la
comunicació.
Procés servidor: Procés que
espera per ser contactat
17. ARQUITECTURA CLIENT – SERVIDOR
Processos que es comuniquen
Procés Client: Procés que inicia la
comunicació.
Procés servidor: Procés que
espera per ser contactat
18. Seqüència de crides per una
comunicació Client / Servidor
Orientada a connexió
Comunicació C/S orientada a connexió
ARQUITECTURA CLIENT – SERVIDOR
19. Seqüència de crides per una
comunicació Client / Servidor
No orientada a connexió
Comunicació C/S no orientada a connexió
ARQUITECTURA CLIENT – SERVIDOR
20. ARQUITECTURA CLIENT – SERVIDOR
Stream
• És una seqüència de dades habilitats en un
moment donat.
• Una abstracció utilitzada quan es llegeixen o
escriuen arxius, o quan es realitza una
comunicació mitjançant sòcols.
• Són canals preconnectats d’entrades i sortides
entre una computadora, generalment una
seqüència de bytes.
21. ARQUITECTURA CLIENT – SERVIDOR
Tipus d’stream
• Les connexions I/O són conegudes com entrada
estàndard, sortida estàndard i sortida d’error
estàndard.
Terminal de text #2 stderr
monitor #1 stdout
programa
teclat
#0 stdin
22. ARQUITECTURA CLIENT – SERVIDOR
Tipus d’stream
• Un stream (fluxe) és una seqüència de caràcters
que flueixen cap a o des de un procés.
• Un input stream (flux d’entrada) està lligat a
alguna font d’entrada pel procés, per exemple,
teclat o sòcol.
• Un output stream (flux de sortida) està lligat a una
sortida del procés, per exemple, monitor o sòcol.
23. ARQUITECTURA CLIENT – SERVIDOR
Exemple d’aplicació client - servidor
1) El client llegeix línies des de
l’entrada estàndard (flux
inFromUser), les envia al servidor
per via d’un sòcol (flux outToServer).
2) El servidor llegeix línies des del
sòcol.
3) El servidor les converteix a
majúscules i les envia de tornada al
client.
4) El client llegeix i mostra la línia
modificada des del sòcol (flux
inFromServer)