modello client-server (architettura client-server)
Client-server è una relazione in cui un programma (il client) richiede un servizio o una risorsa da un altro programma (il server). All’inizio del secolo scorso, l’etichetta client-server era usata per distinguere l’informatica distribuita dai personal computer (PC) dal modello monolitico e centralizzato usato dai mainframe.
Oggi, le transazioni informatiche in cui il server soddisfa una richiesta fatta da un client sono molto comuni e il modello client-server è diventato una delle idee centrali del network computing. In questo contesto, il client stabilisce una connessione con il server attraverso una rete locale (LAN) o una rete ad ampio raggio (WAN), come Internet. Una volta che il server ha soddisfatto la richiesta del client, la connessione viene terminata. Poiché più programmi client condividono i servizi dello stesso programma server, un server speciale chiamato demone può essere attivato solo per attendere le richieste dei client.
Nei primi giorni di internet, la maggior parte del traffico di rete era tra i client remoti che richiedevano contenuti web e i server dei centri dati che fornivano i contenuti. Questo schema di traffico viene chiamato traffico nord-sud. Oggi, con la maturità della virtualizzazione e del cloud computing, il traffico di rete è più probabile che sia da server a server, un modello noto come traffico est-ovest. Questo, a sua volta, ha cambiato l’attenzione degli amministratori da un modello di sicurezza centralizzato progettato per proteggere il perimetro della rete a un modello di sicurezza decentralizzato che si concentra maggiormente sul controllo dell’accesso dei singoli utenti ai servizi e ai dati, e sulla verifica del loro comportamento per garantire la conformità alle politiche e ai regolamenti.
Svantaggi e svantaggi del modello client-server
Un importante vantaggio del modello client-server è che la sua architettura centralizzata aiuta a rendere più facile la protezione dei dati con controlli di accesso che sono applicati dalle politiche di sicurezza. Inoltre, non importa se i client e il server sono costruiti sullo stesso sistema operativo perché i dati sono trasferiti attraverso protocolli client-server che sono indipendenti dalla piattaforma.
Un importante svantaggio del modello client-server è che se troppi client richiedono simultaneamente dati al server, questo può essere sovraccaricato. Oltre a causare la congestione della rete, troppe richieste possono causare una negazione del servizio.
Protocolli client-server
I client tipicamente comunicano con i server usando la suite di protocolli TCP/IP. TCP è un protocollo orientato alla connessione, il che significa che una connessione viene stabilita e mantenuta fino a quando i programmi applicativi ad ogni estremità hanno finito di scambiarsi messaggi. Determina come suddividere i dati dell’applicazione in pacchetti che le reti possono consegnare, invia pacchetti a e accetta pacchetti dal livello di rete, gestisce il controllo del flusso e gestisce la ritrasmissione dei pacchetti caduti o disturbati così come il riconoscimento di tutti i pacchetti che arrivano. Nel modello di comunicazione OSI (Open Systems Interconnection), TCP copre parti del livello 4, il livello di trasporto, e parti del livello 5, il livello di sessione.
Al contrario, IP è un protocollo senza connessione, il che significa che non esiste una connessione continua tra gli endpoint che stanno comunicando. Ogni pacchetto che viaggia attraverso Internet è trattato come un’unità indipendente di dati senza alcuna relazione con altre unità di dati. Nel modello di comunicazione OSI (Open Systems Interconnection), IP si trova nel livello 3, il Networking Layer.
Altri modelli di relazione tra programmi
Altri modelli di relazione tra programmi includono master/slave e peer-to-peer (P2P). Nel modello P2P, ogni nodo della rete può funzionare sia come server che come client. Nel modello master/slave, un dispositivo o processo (noto come master) controlla uno o più altri dispositivi o processi (noti come slave). Una volta che la relazione master/slave è stabilita, la direzione del controllo è sempre a senso unico, dal master allo slave.