Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni
-
Upload
sara-landry -
Category
Documents
-
view
26 -
download
3
description
Transcript of Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni
Il modello cliente/servente
e
l’interfaccia Socket
per l’implementazione di applicazioni
Prof. Alfio Lombardo
Processo A Processo BProcesso BMessaggioProcesso A
Messaggio
IL PROBLEMA DEL RENDEZ-VOUS
Processo A Processo B
Processo A Processo BProcesso BMessaggioProcesso A
Messaggio
IL PROBLEMA DEL RENDEZ-VOUS
CLIENTE SERVENTESERVENTECLIENTERichiesta
Risposta
MODELLO CLIENTE - SERVENTE
CLIENTE
Remote
Login
ServerINTERNET
Cliente
Cliente
Cliente
La gestione della concorrenza nel server
CLIENTE 2
CLIENTE 1
SERVENTESERVENTEMASTER
CLIENTE 1
Connessione 2
SERVENTESLAVE 1
Richiesta
Risposta
Connessione 1
SERVENTERichiesta
Risposta
CLIENTE
I Scenario: Ack Write
LA GESTIONE DEI CRASH NEL SERVER
SERVENTERichiesta
Risposta
CLIENTE
I Scenario: Ack Write
No Transaction
SERVENTERichiesta
Risposta
CLIENTE
II Scenario Write Ack
SERVENTERichiestaCLIENTE
?Richiesta
Risposta
II Scenario Write Ack
Duplicate Transaction
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
POLITICHE DI GESTIONE DEI GUASTI NEL SERVER
At most once
At least once
AP1 AP2 AP3
Funzioni di sistema
Kernel del Sistema Operativo contenente il software TCP/UDP
L’interfaccia socket
Il concetto di Socket
Definizione:
Generalizzazione del meccanismo di
accesso ai file in Unix che fornisce un
punto di accesso per la comunicazione
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
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
Modalita’ c.o.: Cliente
Socket( )
Connect( )
Send( )
Recv( )
int connect(socket,destaddr,addrlength )
Cliente
Socket( )
Connect( )
Send( )
Recv( )
Servente
Socket( )
Bind( )
Listen( )
Accept( )
Fork( )
Close( ) Recv( )
Send( )
master slave
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.
Macrolezione 05
(ipermediale)
Inter-Process Communication
Esercizio consigliato:
IPC