Applicazioni a ruoli asimmetrici: master-slave o client-server
In questo modello il ruolo dei due processi che sono in
comunicazione tra loro e' asimmetrico, e questo significa che il
codice del programma e' differente per ciascuno dei ruoli.
I ruoli sono stati chiamati in passato master e
slave e successivamente client e server.
Qualche volta si tende ora a riutilizzare i termini vecchi
per non confondere l'accezione tecnica di questi vocaboli con
quella organizzativa e aziendale.
Operazioni del Server
Il server e' il processo che parte per primo e tipicamente esegue
i seguenti passi:
- apre un canale di comunicazione ed informa il sistema
operativo locale della sua disponibilita' ad accettare richieste
su quel canale, identificate con indirizzi noti
- attende richieste da parte di clients ascoltando o
monitorando tali indirizzi noti
- all'arrivo di una richiesta da parte di un client, le presta
servizio, ovvero interagisce con il client secondo un ben
definito protocollo
- ritorna ad attendere richieste
Vi sono due possibili metodi di gestione delle richieste del
client, che definiscono due tipi diversi di server:
- server iterativo - e' il processo stesso del server
che gestisce la richiesta del client, sospendendo temporaneamente
l'ascolto agli indirizzi del canale di comunicazione
- server concorrente - il processo genera un secondo
processo al quale da' l'incarico di gestire l'interazione con il
client, ed esso rimane in ascolto sul canale di comunicazione
I processi server sono in ciclo infinito e non terminano mai, a
meno che vengano terminati volontariamente da un altro processo o
dal sistema operativo.
Operazioni del Client
Il processo client esegue una serie diversa di operazioni:
- apre un canale di comunicazione collegato ad un indirizzo
noto di uno host remoto
- manda nel canale verso il server delle specifiche richieste e
riceve i corrispettivi responsi, secondo un protocollo stabilito
- al concludersi delle operazioni chiude il canale di
comunicazione e termina l'esecuzione
L'apertura del canale di comunicazione da parte del server viene
denominata una apertura passiva, da parte del client una
apertura attiva.