Citazione Originariamente Scritto da zorro28 Visualizza Messaggio
ciao,
da ignorante in materia,ho letto che un client e' un software che invia una richiesta di servizio ad un server il quale elabora i dati in ingresso restituendoli al client (mittente). Detto questo,mi pongo una domanda: si stabilisce una connessione tra i software? E i terminali non si connettono???? Non ho capito molto su questa cosa. Me la potete spiegare in modo elementare?
grazie
Qui bisogna fare un distinguo tra "canale di comunicazione" ed "architettura di comunicazione".

Il canale di comunicazione è quel mezzo fisico o virtuale mediante il quale è possibile far transitare l'informazione. Esempi tipici sono non solo i sistemi di fonia o internet, ma anche le poste, i piccioni viaggiatori ecc ecc

Un'architettura di comunicazione invece è un insieme di regole che stabilisce come far interagire due "attori" (che possono tanto dispositivi, quanto persone reali), nell'ambito della comunicazione.

Essenzialmente questo significa che il processo di controllo definito dall'architettura di comunicazione esula il controllo del canale di comunicazione. In parole semplici il canale di comunicazione deve esistere (e funzionare) indipendentemente dall'architettura, anche se questa non lo sta sfruttando. Ovviamente è possibile ricorrere a meccanismi di comunicazione su richiesta (in gergo "dial-up"), che provvedano ad attivare nel momento in cui un'applicazione ne faccia richiesta, ed a disattivarlo a comunicazione ultimata. Ma sono meccanismi esterni all'architettura di comunicazione (anche se possono essere, per comodità) integrati, almeno parzialmente, nell'applicazione.

Andando nello specifico l'architettura di comunicazione stabilisce le regole di interazione tra due agenti. Si distinguono, tra le altre, due filosofie di base principali: Comunicazione Master/Slave e Comunicazione Client(Server. La differenza sostanziale tra le due filosofie è il "sincronismo". Nelle architetture Master/Slave un dispositivo alla volta impegna il canale, prendendo il ruolo di Master, trasmette un messaggio che viene ricevuto da uno o più slave che rispondono secondo una gerarchia prestabilita. La Comunicazione si conclude quando l'ultimo messaggio di risposta da uno slave giunge al Master o scade un timeout. Va sottolineato che in questo tipo di architettura il ruolo di Master o Slave è dinamico, in quanto in ogni "sessione" il Master è il dispositivo che inizia la comunicazione.
Nelle architetture Client/Server invece il ruolo di Client e di Server è definito a priori, ed è legato al concetto di servizio. Il Server è l'agente o dispositivo che espone un determinato servizio su un canale di comunicazione ed i client sono gli agenti o dispositivi che ne usufruiscono, anche in maniera simultanea. La differenza sostanziale risiede appunto nel sincronismo della trasmissione: la comunicazione si considera conclusa ogni volta che uno dei due attori invia correttamente un messaggio oppure riceve un timeout di connessione. L'elaborazione dell'eventuale risposta (che non è obbligatoria) ed il successivo invio, dilazionato nel tempo, costituisce una nuova comunicazione.

Quali sono i vantaggi dell'una o dell'altra?
Tipicamente l'architettura Master/Slave si usa quando si devono stabilire comunicazioni, per così dire "vitali", in cui bisogna assicurarsi che le richieste vengano sempre evase dal dispositivo destinatario. Tutte le comunicazioni seriali a basso livello (Spi, I2c ecc ecc) sono di tipo Master/Slave.
L'architettura Client/Server si usa tipicamente quando occorre servire più dispositivi simultaneamente, ovvero quando l'elaborazione da parte del server di una richiesta proveniente da un client, richiede un certo tempo, e non si vuole "bloccare" il canale di comunicazione rendendolo disponibile anche ad altre richieste. Tipicamente la maggior parte delle comunicazioni di rete si basano su architettura client/server.

In tutto questo il canale di comunicazione è qualcosa di esterno, di cui bisogna però conoscere i parametri, per poterlo sfruttare.

Viste le lacune dimostrate, per una migliore comprensione suggerisco uno sguardo al modello ISO/OSI, che, appunto, dà uno schema di base sul funzionamento delle comunicazioni in ambito informatico.

Open Systems Interconnection - Wikipedia