Sistema client/server: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Livello di servizio: code: esempio di coda durante il click day
 
(41 versioni intermedie di 30 utenti non mostrate)
Riga 1:
{{F|sistemi di rete|maggio 2012}}
[[File:Client-server-model.svg|thumb|Schematizzazione della comunicazione tra client e server attraverso [[Internet]]]]
In [[informatica]] il termine '''sistema client-server''' (letteralmente ''cliente-serviente'') indica un'[[architettura di rete]] nella quale genericamente un [[computer]] ''[[client]]'' o [[terminale (informatica)|terminale]] si [[connessione (informatica)|connette]] ad un ''[[server]]'' per la fruizione di un certo servizio, quale ad esempio la condivisione di una certa [[risorsa informatica|risorsa]] [[hardware]]/[[software]] con altri client, appoggiandosi alla sottostante architettura [[protocollo di rete|protocollare]].
 
In [[informatica]] il termine '''sistema client-server''' (letteralmente ''{{Lett|cliente-serviente''servente}}) indica un'[[architettura di rete]] nella quale genericamente un [[computer]] ''[[client]]'' o [[terminale (informatica)|terminale]] si [[connessione (informatica)|connette]] ad un ''[[server]]'' per la fruizione di un certo servizio, quale ad esempio la condivisione di una certa [[risorsa informatica|risorsa]] [[hardware]]/[[software]] con altri client, appoggiandosi alla sottostante architettura [[protocollo di rete|protocollare]].
Più semplicemente, i sistemi ''client/server'' sono un'evoluzione dei sistemi basati sulla condivisione semplice delle [[Risorsa informatica|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 [[sistema informatico|sistemi informatici]].<ref>{{cita web|lingua=en|url=http://www.linfo.org/client_server.html|titolo=Client/Server Definition|editore=linfo.org|data=26 novembre 2005|accesso=13 maggio 2012}}</ref><ref>{{cita web|lingua=en|url=http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm|titolo=Introduction to Client Server Networks|editore=about.com|autore=Bradley Mitchell|accesso=13 maggio 2012}}</ref> Le [[rete locale|reti locali]] aziendali (LAN), la rete [[Internet]], i sistemi informatici e i [[sistema operativo|sistemi operativi]] sono organizzati sotto forma di una tipica architettura client-server per la fruizione dei rispettivi servizi.
 
Più semplicemente, i sistemi ''client/server'' sono un'evoluzione dei sistemi basati sulla condivisione semplice delle [[Risorsa informatica|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 [[sistema informatico|sistemi informatici]].<ref>{{cita web|lingua=en|url=http://www.linfo.org/client_server.html|titolo=Client/Server Definition|editore=linfo.org|data=26 novembre 2005|accesso=13 maggio 2012}}</ref><ref>{{cita web|lingua=en|url=http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm|titolo=Introduction to Client Server Networks|editore=about.com|autore=Bradley Mitchell|accesso=13 maggio 2012|dataarchivio=25 aprile 2012|urlarchivio=https://web.archive.org/web/20120425072256/http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm|urlmorto=sì}}</ref> Le [[rete locale|reti locali]] aziendali (LAN), la rete [[Internet]], i sistemi informatici e i [[sistema operativo|sistemi operativi]] sono organizzati sotto forma di una tipica architettura client-server per la fruizione dei rispettivi servizi.
==Descrizione==
 
== Descrizione ==
=== Client ===
{{vedi anche|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 localegeografica]] o [[WideRete area networklocale|geograficalocale]], ed al quale richiede uno o più servizi, utilizzando uno o più [[protocollo di rete|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 [[personal computer|pc]] ''client'') ede una parte ''server'' (residente ed in esecuzione sul ''server'').<ref>{{Cita web|url=http://java.sun.com/developer/Books/jdbc/ch07.pdf|titolo=Wayback Machine|sito=web.archive.org|accesso=2022-04-04|dataarchivio=6 aprile 2011|urlarchivio=https://web.archive.org/web/20110406121920/http://java.sun.com/developer/Books/jdbc/ch07.pdf|urlmorto=sì}}</ref>
 
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 [[Hypertext Transfer Protocol|HTTP]]; per l'e-mail il ''client'' è detto in gergo ''mail user agent'' o [[Client di posta elettronica|MUA]] (ad esempio, [[Outlook]], [[Mozilla Thunderbird]], [[Eudora]], ...), e parla con il ''server'' (''Mail Transfer Agent'' o [[Mail server|MTA]]) attraverso iil protocollo [[Simple Mail Transfer Protocol|SMTP]] e [[Post Office Protocol|POP]] o [[Internet Message Access Protocol|IMAP]]; il ''client'' per la consultazione o la modifica del database (spesso costituito da [[Libreria (software)|librerie]] software utilizzate da un'[[applicazione (informatica)|applicazione]]) parla con il [[DBMS]], che gestisce il database e risponde alle interrogazioni del ''client''.
 
=== Server ===
{{vedi anche|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 informatica|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.
 
=== InterazioniArchitettura client/servermultitier ===
{{vedi anche|Architettura multitier}}
[[File:Client-server model.svg|thumb|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 ada 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 ===
{{vedi anche|Commutazione di pacchetto}}
 
I ''client'' ed il ''server'' sono in collegamento tramite un [[Protocollo di rete|protocollo]] di comunicazione attraverso una [[rete di telecomunicazioni|rete di comunicazione]]. Il protocollo può essere in chiaro o in certi casi [[crittografia|crittografato]].
 
Line 42 ⟶ 48:
 
=== Livello di servizio: code ===
{{vedi anche|Teoria delle code}}
 
Quando troppi client accedono ad un servizio, può succedere che la [[Coda (informatica)|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.
 
Line 47 ⟶ 55:
 
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.
 
Il problema della gestione di una lunga coda di client si verifica anche in assenza di un attacco informatico vero e proprio, ad esempio, quando troppi utenti si collegano contemporaneamente con diversi browser alla stessa pagina web (cioè allo stesso server web). Questo si verifica quasi sempre, ad esempio, nei cosiddetti ''click day'', cioè quando una Pubblica Amministrazione offre un servizio ad un numero limitati di utenti a partire da un giorno e un orario prestabilito.
 
=== Esempi ===
Esempi di sistemi ''client/server'':
 
* [[Web server]]: per la gestione dell'interazione via web tra ''server'' e ''client''.
* [[File server]]: per la condivisione dei [[file]];
Line 58 ⟶ 67:
* [[Print server]]: per la condivisione delle stampanti;
 
== Implementazioni ==
=== Architettura di rete a livelli ===
{{vedi anche|Architettura di rete}}
 
Ciascun protocollo regola normalmente solo una parte degli aspetti di una comunicazione. I diversi protocolli sono organizzati con un sistema o [[architettura di rete]] detto "a livelli" dove in ciascun livello viene usato uno specifico protocollo.
 
Line 67 ⟶ 77:
I vari livelli sono organizzati in pile di protocolli (''stack protocollare''). Le pile di protocolli sono un modo flessibile per combinare componenti per realizzare un servizio.
 
Un esempio reale di una un'organizzazione a livelli protocollari, classico nelle trattazioni inerenti alle reti di calcolatori, è quello del percorso di una valigia in un viaggio aereo partendo dalla casa di origine all'hotel di destinazione. Il primo livello che notiamo è quello della preparazione della valigia: il turista prende i vestiti e ve li ripone per poi chiuderla, come ciò viene fatto è definito dal protocollo del primo livello 1º. Il livello 2º è quello dell'addetta alla valigie all'aeroporto di partenza, il turista gli consegna la valigia (passaggio dal primo al secondo livello) e l'addetta attacca alla valigia le informazioni relative al volo e alla destinazione. Qui notiamo l'aspetto fondamentale dell'organizzazione a livelli protocollari, cioè che per l'addetta non è necessario conoscere come i vestiti sono stati riposti nella valigia, altresì non è necessario per il turista conoscere le operazioni che deve effettuare l'addetta, infatti il turista otterrà quello che vuole (avere i vestiti all'hotel d'arrivo) senza che ciò influisca affatto come gli altri protocolli debbano lavorare, a patto che lo facciano correttamente.
 
La struttura serve ad adempiere ad alcuni compiti:
Line 86 ⟶ 96:
Non è detto che due macchine che comunicano usino la stessa pila di protocolli. Ad esempio, se vi connettete ad [[Internet]] attraverso un [[modem]] voi appoggiate il livello di rete IP su una connessione PPP, mentre il ''server'' a cui vi collegate probabilmente appoggia la rete IP su una connessione [[Ethernet]].
 
In una rete a pacchetto ciascun livello della "pila protocollare" aggiunge ai pacchetti una un'intestazione, attraverso una un'operazione detta imbustamento. Il termine si applica anche ad alcune reti a commutazione di circuito, come SDH, dove l'imbustamento è un circuito dedicato a trasmettere informazioni di controllo.
 
==== Modello OSI e Modello TCP/IP====
{{vedi anche|Open Systems Interconnection|Modello OSI|Suite di protocolli Internet}}
 
L{{'}}''International Organisation for Standardisation'' ([[Organizzazione internazionale per la normazione|ISO]]) nel [[1979]] ha rettificato lo [[standard (informatica)|standard]] ''[[Open Systems Interconnection]]'' (OSI), con l'intenzione di creare un [[Modello di riferimento OSI|modello di riferimento]] per le telecomunicazioni da usare nelle reti di tutto il mondo. All'atto pratico però, lo [[standard de facto]] che viene comunemente usato nella maggior parte delle reti, è il [[TCP/IP]], definito nella [[RFC 1155]] da parte dell'[[IETF]]. Le differenze fondamentali tra i due standard sono semplici: il primo è stato definito a tavolino da un'organizzazione super partes, mentre il secondo è opera di chi costruì materialmente le prime reti, sviluppandolo sul campo. Inoltre, lo standard ISO/OSI assegna un determinato compito ad ogni livello, mentre il [[TCP/IP]] è più "elastico" e permette di sviluppare protocolli che svolgono più di un compito-base.
 
=== Client-Sistema client/server in un sistema locale ===
Quasi tutti i [[sistemi operativi]] utilizzano, per il funzionamento dei vari [[processo (informatica)|processi]], dei meccanismi basati sul modello client-server. Lo stesso [[kernel]] si comporta come server quando gestisce le chiamate alle [[chiamata di sistema|primitive di sistema]] da parte dei processi in esecuzione.
 
Più in generale in un sistema operativo, per alcuni tipi di servizi, sono espressamente previsti dei '''processi server''', gli unici in grado di eseguire una certa operazione. Spesso questi processi hanno accesso esclusivo ada una risorsa e devono, appunto, ''servire'' le richieste dei processi client.
 
Ad esempio, nei sistemi [[Windows]] è presente uno [[spooler]], unico processo in tutto il sistema a poter utilizzare la [[stampante]]. Per poter stampare, un processo non deve interfacciarsi con il driver della stampante (ed eseguire la sequenza del [[driver]] virtualizzato ''acquisizione-uso-rilascio'') ma deve inviare i propri dati, attraverso i servizi offerti dal sistema, al processo spooler, il quale, tra l'altro, effettua lo [[scheduling]] dei documenti da stampare. Una volta inviati i dati allo spooler, il processo saprà non che la stampa è stata eseguita, ma che lo sarà certamente (a meno di intoppi). Avendo accesso esclusivo a tutte le stampanti di sistema, il driver della stampante non prevede procedure di acquisizione e rilascio.
Line 102 ⟶ 113:
<references />
 
== Voci correlate ==
* [[Dominio (informatica)]]
* [[Rete di computer]]
Line 108 ⟶ 119:
* [[Server]]
* [[Peer-to-peer]]
* [[Coda (informatica)|Sistema a coda]]
 
== Altri progetti ==
{{interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC|client-server|client-server}}
 
{{Controllo di autorità}}