200 likes | 348 Views
Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni. Prof. Alfio Lombardo. Processo A. Processo A. Processo A. Processo B. Processo B. Processo B. Messaggio. Messaggio. IL PROBLEMA DEL RENDEZ-VOUS. Messaggio. Processo A. Processo B. Messaggio.
E N D
Il modello cliente/servente e l’interfaccia Socket per l’implementazione di applicazioni Prof. Alfio Lombardo
Processo A Processo A Processo A Processo B Processo B Processo B Messaggio Messaggio IL PROBLEMA DEL RENDEZ-VOUS
Messaggio Processo A Processo B Messaggio IL PROBLEMA DEL RENDEZ-VOUS Processo A Processo B
CLIENTE CLIENTE CLIENTE SERVENTE SERVENTE Richiesta Risposta MODELLO CLIENTE - SERVENTE
La gestione della concorrenza nel server Cliente Cliente Cliente Remote Login Server INTERNET
CLIENTE 1 SERVENTE MASTER Connessione 2 CLIENTE 2 CLIENTE 1 Connessione 1 SERVENTE SLAVE 1 Richiesta Risposta SERVENTE
SERVENTE CLIENTE Richiesta Risposta LA GESTIONE DEI CRASH NEL SERVER I Scenario: Ack Write
I Scenario: Ack Write SERVENTE CLIENTE Richiesta Risposta No Transaction
II Scenario Write Ack SERVENTE CLIENTE Richiesta Risposta
II Scenario Write Ack SERVENTE CLIENTE Richiesta Richiesta Risposta Duplicate Transaction ?
Ripristino dei guasti nel Server DUP NO OK OK OK OK DUP Ritrasmetti in S0 Ritrasmetti in S0 OK NO NO DUP OK Ritrasmetti in S1 Ritrasmetti OK DUP OK OK DUP DUP Non Ritrasmetti NO OK OK NO OK NO Strategia del Servente Strategia del Cliente Write Ack Write Ack AF(W) AWF F(AW) F(WA) WAF WF(A) S1 = stato di attesa della conferma
POLITICHE DI GESTIONE DEI GUASTI NEL SERVER At mostonce At least once
AP1 AP3 AP2 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 canale tra due Applicativi
Modalita’ c.o.: Servente Socket( ) socket = socket(family, type, protocol) Bind( ) bind (socket,localaddr,addrlen) family ::= {PF_INET, PF_APPLETALK, PF_PUP, ...} type::= {SOCK_STREAM, SOCK_DGRAM, …..} listen(socket,qlength) Listen( ) Accept( ) newsocket accept(socket,addr,addrlen) fork( ) Fork( ) close(socket) Close( ) recv(sock,*buf,length,flags) Recv( ) Send( ) send(sock,*buf, length,flags) slave master
Modalita’ c.o.: Cliente Connect( ) int connect(socket,destaddr,addrlength ) Recv( ) Socket( ) Send( )
Servente Cliente Socket( ) Bind( ) Socket( ) Listen( ) Connect( ) Accept( ) Send( ) Fork( ) Close( ) Recv( ) Recv( ) Send( ) slave master
Modalita’ c.l. Socket( ) Socket( ) Bind( ) Bind( ) int recvfrom(sock,*buf, length, flags,sourceaddr,addrlength ) RecvFrom( ) RecvFrom( ) SendTo( ) RecvFrom( ) int sendto(sock,*buf, length, flags,destaddr,addrlength ) SendTo( ) Servente Cliente
Esercizio consigliato: IPC Macrolezione 05 (ipermediale) Inter-Process Communication