![Page 1: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/1.jpg)
Il modello cliente/servente
e
l’interfaccia Socket
per l’implementazione di applicazioni
Prof. Alfio Lombardo
![Page 2: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/2.jpg)
Processo A Processo BProcesso BMessaggioProcesso A
Messaggio
IL PROBLEMA DEL RENDEZ-VOUS
Processo A Processo B
![Page 3: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/3.jpg)
Processo A Processo BProcesso BMessaggioProcesso A
Messaggio
IL PROBLEMA DEL RENDEZ-VOUS
![Page 4: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/4.jpg)
CLIENTE SERVENTESERVENTECLIENTERichiesta
Risposta
MODELLO CLIENTE - SERVENTE
CLIENTE
![Page 5: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/5.jpg)
Remote
Login
ServerINTERNET
Cliente
Cliente
Cliente
La gestione della concorrenza nel server
![Page 6: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/6.jpg)
CLIENTE 2
CLIENTE 1
SERVENTESERVENTEMASTER
CLIENTE 1
Connessione 2
SERVENTESLAVE 1
Richiesta
Risposta
Connessione 1
![Page 7: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/7.jpg)
SERVENTERichiesta
Risposta
CLIENTE
I Scenario: Ack Write
LA GESTIONE DEI CRASH NEL SERVER
![Page 8: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/8.jpg)
SERVENTERichiesta
Risposta
CLIENTE
I Scenario: Ack Write
No Transaction
![Page 9: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/9.jpg)
SERVENTERichiesta
Risposta
CLIENTE
II Scenario Write Ack
![Page 10: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/10.jpg)
SERVENTERichiestaCLIENTE
?Richiesta
Risposta
II Scenario Write Ack
Duplicate Transaction
![Page 11: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/11.jpg)
Ritrasmetti in S0
AF(W) AWF F(AW)
Ripristino dei guasti nel Server
Strategia del Cliente
Ritrasmetti OKOKOK DUPDUPDUP
Non Ritrasmetti OK NONO NO OK OK
Ritrasmetti in S1 NO OK OK DUPOK OKWF(A)F(WA) WAF
Strategia del ServenteAck Write Write Ack
DUP OKNO DUPRitrasmetti in S0 OK NO
S1 = stato di attesa della conferma
![Page 12: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/12.jpg)
POLITICHE DI GESTIONE DEI GUASTI NEL SERVER
At most once
At least once
![Page 13: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/13.jpg)
AP1 AP2 AP3
Funzioni di sistema
Kernel del Sistema Operativo contenente il software TCP/UDP
L’interfaccia socket
![Page 14: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/14.jpg)
Il concetto di Socket
Definizione:
Generalizzazione del meccanismo di
accesso ai file in Unix che fornisce un
punto di accesso per la comunicazione
![Page 15: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/15.jpg)
Appl.process
Appl.process
Il “canale” di comunicazione tra due Applicativi è rappresentato da:Client port Addr, IP Client Addr, IP Server Addr, Server port Addr
Un socket identifica localmente il canaletra due Applicativi
![Page 16: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/16.jpg)
Modalita’ c.o.: Servente
Socket( )
Bind( )
Listen( )
Accept( )
Fork( )
Recv( )
listen(socket,qlength)
bind (socket,localaddr,addrlen)
Send( )
newsocket accept(socket,addr,addrlen)
fork( )
Close( )close(socket) recv(sock,*buf,length,flags)
send(sock,*buf, length,flags)
socket = socket(family, type, protocol)
family ::=
{PF_INET,
PF_APPLETALK,
PF_PUP, ...}
type::=
{SOCK_STREAM,
SOCK_DGRAM,
…..}
master slave
![Page 17: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/17.jpg)
Modalita’ c.o.: Cliente
Socket( )
Connect( )
Send( )
Recv( )
int connect(socket,destaddr,addrlength )
![Page 18: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/18.jpg)
Cliente
Socket( )
Connect( )
Send( )
Recv( )
Servente
Socket( )
Bind( )
Listen( )
Accept( )
Fork( )
Close( ) Recv( )
Send( )
master slave
![Page 19: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/19.jpg)
SendTo( )
Bind( )
Socket( )
Servente
SendTo( )
RecvFrom( )
Bind( )
Socket( )
Cliente
RecvFrom( )RecvFrom( )int recvfrom(sock,*buf, length,
flags,sourceaddr,addrlength )
int sendto(sock,*buf, length,flags,destaddr,addrlength )
Modalita’ c.l.
![Page 20: Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni](https://reader035.vdocuments.pub/reader035/viewer/2022080905/5681322c550346895d988f60/html5/thumbnails/20.jpg)
Macrolezione 05
(ipermediale)
Inter-Process Communication
Esercizio consigliato:
IPC