DCN - Modello server client
Due processi di applicazione remota possono comunicare principalmente in due modi diversi:
Peer-to-peer: Entrambi i processi remoti vengono eseguiti allo stesso livello e scambiano dati utilizzando alcune risorse condivise.
Client-Server: Un processo remoto funge da client e richiede alcune risorse da un altro processo dell'applicazione che funge da server.
Nel modello client-server, qualsiasi processo può agire come server o client. Non è il tipo di macchina, le dimensioni della macchina o la sua potenza di calcolo a renderla server; è la capacità di servire la richiesta che fa di una macchina un server.
Un sistema può agire contemporaneamente come server e client. Cioè, un processo agisce come server e un altro funge da client. Ciò può anche accadere che entrambi i processi client e server risiedano sulla stessa macchina.
Comunicazione
Due processi nel modello client-server possono interagire in vari modi:
Sockets
Chiamate di procedura remota (RPC)
Prese
In questo paradigma, il processo che funge da Server apre un socket utilizzando una porta nota (o conosciuta dal client) e attende fino all'arrivo di una richiesta del client. Anche il secondo processo che funge da client apre un socket, ma invece di attendere una richiesta in arrivo, il client elabora le "richieste per prime".
Quando la richiesta viene raggiunta al server, viene servita. Può essere una condivisione di informazioni o una richiesta di risorse.
Chiamata di procedura remota
Questo è un meccanismo in cui un processo interagisce con un altro per mezzo di chiamate di procedura. Un processo (client) chiama la procedura che si trova sull'host remoto. Si dice che il processo sull'host remoto sia Server. Entrambi i processi sono stub allocati. Questa comunicazione avviene nel modo seguente:
Il processo client chiama lo stub del client. Gli passa tutti i parametri relativi al programma locale.
Tutti i parametri vengono quindi impacchettati (sottoposti a marshalling) e viene effettuata una chiamata di sistema per inviarli all'altro lato della rete.
Il kernel invia i dati sulla rete e l'altra estremità li riceve.
L'host remoto passa i dati allo stub del server dove viene annullato il marshalling.
I parametri vengono passati alla procedura e la procedura viene quindi eseguita.
Il risultato viene rispedito al client nello stesso modo.