Client e server

()

Spesso, quando la rete si ingrandisce e aumenta il numero di utilizzatori connessi, si introduce un computer su cui non lavorerà nessuno: sarà infatti un computer dedicato ad offrire servizi agli altri PC della rete. Questo computer viene chiamato server, un punto centralizzato per archiviare (e condividere) informazioni (file) o programmi. I server si occupano anche di gestire e mettere a disposizione di tutti alcune periferiche come le stampanti.

Se esiste un server in rete, gli altri computer prendono il nome di client. In piccole reti dove si decide di non installare un server alcune funzioni di condivisione possono essere espletate dai singoli computer connessi. Gli utenti possono comunque scambiare file ed e-mail, copiare i file sui dischi fissi di qualcun altro e utilizzare persino le stampanti collegate a un altro computer.

Tuttavia, se alla rete si aggiungono più utenti, un server dedicato è sicuramente più efficiente e sicuro.

In informatica il termine sistema client-server (letteralmente cliente-serviente) indica un’architettura di rete nella quale genericamente un computer client o terminale si connette ad un server per la fruizione di un certo servizio, quale ad esempio la condivisione di una certa risorsa hardware/software con altri client, appoggiandosi alla sottostante architettura protocollare.

Più semplicemente, i sistemi client/server sono un’evoluzione dei sistemi basati sulla condivisione semplice delle risorse: la presenza di un server permette ad un certo numero di client di condividerne le risorse, lasciando che sia il server a gestire gli accessi alle risorse per evitare conflitti di utilizzazione tipici dei primi sistemi informatici.[1][2]

Le reti locali aziendali (LAN), la rete Internet, i sistemi informatici e i sistemi operativi sono organizzati sotto forma di una tipica architettura client-server per la fruizione dei rispettivi servizi.

CLIENT

Il software client in genere è di limitata complessità, limitandosi normalmente ad operare come interfaccia verso il server. In generale nel campo informatico il termine client indica una componente che accede ai servizi o alle risorse di un’altra componente, detta server. In questo contesto si può quindi parlare di client riferendosi all’hardware o al software.

Un computer collegato ad un server tramite rete locale o geografica, ed al quale richiede uno o più servizi, utilizzando uno o più protocolli di rete è un esempio di client hardware. Un programma di posta elettronica è un esempio di client software. Sono sempre di più i software, come il web, l’e-mail, i database, che sono divisi in una parte client (residente ed in esecuzione sul pc client) ed una parte server (residente ed in esecuzione sul server).

Il termine client indica anche il software usato sul computer client per accedere alle funzionalità offerte dal server. Ad esempio, nel web il software client è il web browser, e parla con un server web attraverso il protocollo HTTP; per l’e-mail il client è detto in gergo mail user agent o MUA (ad esempio, Outlook, Mozilla Thunderbird, Eudora, …), e parla con il server (Mail Transfer Agent o MTA) attraverso i protocollo SMTP e POP o IMAP; il client per la consultazione o la modifica del database (spesso costituito da librerie software utilizzate da un’applicazione) parla con il DBMS, che gestisce il database e risponde alle interrogazioni del client.

SERVER

Il software server, oltre alla gestione logica del sistema, deve implementare tutte le tecniche di gestione degli accessi, allocazione e rilascio delle risorse, condivisione e sicurezza dei dati o delle risorse.

Ad esempio un server di posta elettronica è paragonabile ad un qualunque ufficio postale. Gli utilizzatori per accedere via client alla loro cassetta di posta elettronica devono essere stati autorizzati. In modo analogo un utente deve possedere la chiave della cassetta situata presso un ufficio postale dalla quale vuole prelevare la corrispondenza.

Interazioni client/server

Schematizzazione della comunicazione tra client e server
Quando un computer client si connette direttamente ad un sistema di database o a una server application standard, questa viene chiamata 2-tier architecture (architettura a 2 livelli).

Recentemente, è più usuale per computer client, chiamati thin client che non incorporano business logic, ma solo elementi di interfaccia, connettersi ad una server application che implementa una business logic nella quale transitivamente (ossia successivamente) comunica con il database del server, il quale memorizza i dati utilizzati dall’applicazione. Tale architettura è chiamata 3-tier architecture (architettura a 3 livelli).

In generale architetture ad n livelli possono impiegare un certo numero di servizi distinti, comprese relazioni transitive tra application server che implementano differenti funzioni di business logic, ognuna delle quali può impiegare o meno un sistema di database condiviso o distinto.

Collegamento
I client ed il server sono in collegamento tramite un protocollo di comunicazione attraverso una rete di comunicazione. Il protocollo può essere in chiaro o in certi casi crittografato.

Nell’ambito delle telecomunicazioni, due o più macchine o host (computer, telefono, stampante, ecc.) possono comunicare tra loro rispettando norme che sono dette protocolli di rete. L’aderenza ai protocolli garantisce che due macchine possano comunicare correttamente, anche se sono state realizzate indipendentemente.

Servizio con e senza connessione
Quando un client e un server iniziano a comunicare si possono scambiare pacchetti di controllo prima di spedire i dati effettivi/reali (comunicazione orientata alla connessione).

Queste procedure, dette di handshaking, preparano le due componenti alla comunicazione. Tali procedure sono alla base, ad esempio, del TCP. Tuttavia possono anche esserci servizi che inviano direttamente i dati senza connessione e riscontri come nel caso dell’UDP.

La maggior parte delle applicazioni, tuttavia, ha bisogno di inviare i dati in maniera sicura e affidabile per cui l’handshake serve proprio a questo compito. Si comprende dunque come la connessione attraverso TCP, ad esempio, sia più sicura, ma anche più lenta perché scambia non solo dati reali, ma anche dati di servizio.

Livello di servizio: code
Quando troppi client accedono ad un servizio, può succedere che la coda di attesa diventi inaccettabile. In questo caso si parla di sovraffollamento. Il gestore deve prendere delle misure per cadenzare le richieste o per aumentare le risorse disponibili.

Il calcolo dei tempi di attesa e dei livelli di servizio è oggetto di studi matematici e modellizzazioni informatiche, come la teoria delle code.

La coda di richieste generati dai clienti può essere gonfiata artificialmente allo scopo di negare il servizio ai clienti che autenticamente lo richiedono. Questo succede nel caso di un attacco informatico di tipo Denial of Service (DOS) o Distributed Denial of Service (DDOS). In questi attacchi, il nemico crea, assolda o manipola in maniera irregolare un alto numero di client, a cui comanda una cadenza di richieste molto superiore a quello previsto dal servizio sotto attacco.

/ 5
Grazie per aver votato!

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?