Nell'ambito dell'informatica e delletelecomunicazioni, unserver (dall'inglese «servente, servitore»)[1][2] è un dispositivo fisico o sistema informatico dielaborazione e gestione del traffico di informazioni. Un server fornisce, alivello logico e fisico, un qualunque tipo di servizio ad altre componenti (tipicamentechiamateclient, cioèclienti) che ne fanno richiesta attraverso unarete di computer, all'interno di unsistema informatico o anche direttamente in locale.
Questa interazione tra server e client è chiamataarchitettura client-server. I server contengono programmi che rispondono alle richieste di altri programmi che sono detti clienti (client) di questi server. Pertanto, il server svolge altri compiti a beneficio dei client; offre la possibilità di condividere fra molteplici client dati, informazioni, risorse hardware e risorse software, tra cui l'esecuzione di calcoli. Un singolo server può servire più client, e un singolo client può utilizzare più server: il legame tra client e server è di tipomolti-a-molti. In genere, i client sicollegano al server attraverso la rete informatica, ma è anche possibile che client e server siano fisicamente eseguiti sullo stesso dispositivo, quindi senza la necessità di una connessione di rete.[3]
Nel contesto delle reti operanti coll'Internet Protocol (IP), un server è un programma che opera come ascoltatore di unsocket.[4] I server forniscono comunemente servizi essenziali all'interno di una rete, sia agli utenti privati di un'organizzazione o di un'azienda, sia agli utenti pubblici connessi su Internet. I server tipici sono: server didatabase,file server,server di posta elettronica, server di stampa,server web, server di giochi e server di applicazioni.[5][6]
Un gran numero di sistemi utilizza il modello di reteclient-server, compresi isiti web e i servizi di posta elettronica. Un modello alternativo è quellopeer-to-peer, che consente a tutti i computer collegati di agire sia come client che come server, a seconda delle necessità.
Il server rappresenta ilnodo terminale della rete opposto allohost client. In altre parole si tratta di un computer o di unprogramma che fornisce i dati richiesti da altri elaboratori, facendo quindi da host per latrasmissione delle informazioni virtuali. Al termineserver, così come per il termineclient, possono dunque riferirsi sia la componentehardware che la componentesoftware che forniscono le funzionalità o servizi di cui sopra. La macchina hardware server si dice anche capace di offrirerisorse in termini di servizio al client che ne fa domanda/richiesta. Esso fa parte dunque dell'architettura logica di rete alivello applicativo dettaclient-server.[7][8]
In base al contesto, il termine "server" può indicare quindi:
uncomputer "ordinario" utilizzato per fornire servizi ad altri computer, a prescindere dalle sue caratteristiche hardware.
un computer specifico appartenente alla fascia di mercato dedicata all'uso come server, caratterizzato da altaaffidabilità, maggiori prestazioni e funzioni aggiuntive.
In generale quindi si tende ad indicare comeserver il componentehardware che attraverso unsoftware specifico eroga un servizio eclient il componente hardware con relativo software che ne fa uso su richiesta dell'utente. D'altro canto sarebbe meglio ragionare maggiormente in termini astratti (un "servizio server") dato che sempre di più i server, intesi nel senso computazionale del termine, sono macchine virtuali grazie, appunto, allavirtualizzazione e non computer fisici.
Tipicamente una macchinahardware server può ospitare uno o più servizi ovvero implementare logicamente uno o più server. Ciascun server può essere di tipo:
iterativo, cioè in grado di accogliere e soddisfare sequenzialmente una sola richiesta di servizio alla volta da parte dei client con una tipica procedura acoda di attesa deiprocessi da gestire (caso di pochi client: situazione ai primordi della reteInternet);
concorrente, ovvero capace di soddisfare più richieste di servizio da parte di più client attraverso procedure tipiche delmultithreading e gestione dellerisorse hardware/software della macchina (situazione diventata ora comune nella rete Internet).
Il complesso logico formato da uno o più server e, solitamente, svariati client è denominatoModello client-server tipico delle ReteInternet e deisistemi informatici aziendali. Negli ultimi anni è stato esteso alla interazione tra più macchine o servizi eterogenei, e in tal caso si parla diArchitettura 3-tier (o più in generale adN-tier).
Il server riceve dai client dellerichieste di servizio, e restituisce loro la risposta con i risultati dopo averne effettuato l'elaborazione relativa. Questo ha l'indubbio vantaggio di concentrare su una sola macchina centrale tutte le principalirisorse di elaborazione, il software, lamanutenzione, leinformazioni critiche osensibili, gli accorgimenti atti a garantireaffidabilità (come ibackup);I client, al contrario, possono in generale essere anche macchine con risorse e affidabilità inferiori, che hanno l'unico compito di interagire con l'utente, e che non contengono informazioni critiche o sensibili.
Si noti che dal punto di vista software un computer non è mai puramente un server, in quanto oltre ad erogare servizi ad altri si appoggia solitamente a servizi forniti da terzi, e quindi è contemporaneamente server e client. Ad esempio, un server di posta elettronica si appoggia ad altri server (es.Server DNS) per ottenere informazioni sulla rete, e quindi è simultaneamente sia un server die-mail sia un client per quanto riguarda altri servizi relativi alla gestione della rete.
Quando invece non si è in questa situazione ovvero ciascun terminale di rete è in una gerarchia paritaria con gli altri si parla di modello o architettura di retepeer-to-peer.
Tipicamente più server diversi possono risiedere anche sulla stessa macchina hardware con risparmio sui costi totali, previo opportuno dimensionamento per soddisfare le maggiori richieste dei client, a prezzo di una maggiore vulnerabilità dovuta alla centralizzazione delle risorse. Dal punto di vista hardware i server possono risiedere su un normalePC oppure su macchine hardware dedicate con prestazioni, affidabilità e costi superiori. Nelle retiLAN aziendali spesso i server sono disposti su un segmento di rete noto comeDMZ.
I server offrono servizi al client tipicamente in modalitàrichiesta/risposta lavorando alivello applicativo delmodello ISO/OSI e del modelloTCP/IP (come anche i client) secondo i dettami del particolareprotocollo di rete che regola il suo funzionamento per l'espletamento del servizio al client. Si appoggiano dunque agli strati protocollari inferiori dello stack di rete, in particolare sui protocolli dilivello di trasporto qualiTCP eUDP e sullivello di rete (IP) per l'instradamento.
Tipicamente l'espletamento del servizio per il client è preceduto da una fase di definizione di unsocket (coppiaindirizzo IP/porta) e successiva instaurazione dellaconnessione con il server tramite TCP o UDP, con il server che possiede unindirizzo IP statico a causa dei legami intrinseci con il nome di dominio (che è inevitabilmente fisso) attraverso ilDNS. Le porte dedicate ai server sono tipicamente porte note e statiche (well known ports), dipendenti dal particolare servizio espletato.
La creazione diapplicazioni di rete, per quanto riguarda laconnessione, ricade all'interno degli ambiti della cosiddettaprogrammazione socket. Tipicamente tale ambito di programmazione fa uso di opportunechiamate di sistema oAPI Socket alsistema operativo del server e del client per realizzare la connessione affidabile sia in modalità iterativa sia concorrente gestendo anche tutti i possibili errori oeccezioni.
Se ilcarico di richieste è eccessivo per un solo server, o se sono necessari alti livelli diaffidabilità, più server possono suddividersi il compito di erogare un servizio o un gruppo di servizi. In questo caso si dice che i server formano un'unica risorsa computazionale definita comeserver cluster, che può continuare a funzionare anche se un certo numero delle macchine componenti viene messa fuori linea, anche se ovviamente la risorsa subisce un degrado delle prestazioni generali. Questo richiede che siano dotati di unsistema operativo adeguato, e/o collegati attraverso specifiche configurazioni di rete.
In architetture (di rete) complesse formate da diversi sistemi e applicazioni, basati su tecnologie e piattaforme distinte, sono spesso utilizzati prodotti software specifici (estremamente complessi) che si occupano di realizzare l'integrazione tra i vari componenti (dislocazione fisica delle macchine e dei database, complessità applicativa, articolazione dei servizi di base, istanze software negli ambienti di produzione, connessione-verso gli utenti-di vari programmi gestionali e di produttività, flussi di processo, risorse e informazioni, ecc.). L'integrazione non è solo "banalmente" di tipo hardware (per questo esiste già il comuneconsolidamento) quanto di tipo sistemistico/tecnologico[N 1]/applicativo. Questi prodotti di integrazione architetturale sono appannaggio dei grandi player[N 2], sebbene anche il mondo open source cominci a mettere a disposizione qualche soluzione, magari adatta a complessità minori.
Il server è un elemento fondamentale dell'infrastruttura IT di cui fa parte, in quanto i suoimalfunzionamenti si ripercuotono su tutti i client che ne fanno uso. Pertanto, per i server si adottano accorgimenti volti a garantire altaaffidabilità che garantisca continuità di servizio (disponibilità) e robustezza ai guasti, e altasicurezza ovvero protezione da attacchi informatici:
utilizzo dihardware di classe superiore, con prestazioni elevate ed elementiridondanti (dischiRAID, alimentatori ridondanti);
I computer progettati per essere usati come server in una sala server di dimensioni medio-grandi vengono realizzati in modo da poter essere montati in unarmadio rack. I maggiori investimenti richiesti da questi accorgimenti sono motivati dall'importanza che il buon funzionamento del server ha per i suoi utenti. Uno degli attacchi informatici più tipici e semplici da attuare nei confronti di un server è il cosiddetto attacco diDoS, tipico di moltidispositivi di rete.
I sistemi operativi per server possono essere sia installati direttamente sull'hardware della macchina, siavirtualizzati sopra unhypervisor (es. una distribuzione Linux suVMware ESXi) il quale permette di sfruttare lo stesso server fisico per più server virtuali, ottimizzando la gestione delle risorse.
In diversi casi un sistema operativo può fungere da hypervisor e server allo stesso tempo, ad esempioWindows Server conHyper-V che ospita altri sistemiWindows, oppure i Logical Domains (LDoms) diSolaris.
In applicazioni più specifiche, quali midrange e mainframe, è possibile trovare sistemi operativi più specifici e dedicati al processare alti volumi di record e transazioni: IBMAS/400,z/OS,z/TPF, oppureHP IntegrityNonStop.
Uno dei più comuni errori è quello di pensare al server solo come ad una macchina specializzata (fisica o virtuale) dotata di sistema operativo adatto allo scopo (cioè le edizioni server di Windows, Linux, Mac oppure OS/400). In realtà, la stragrande maggioranza dei server utilizzati non sono né macchine né sistemi operativi ma servizi ovvero programmi che svolgono funzioni specifiche di sistema. In questo contesto, il sistemista installa e/o configura un "server" (ad esempio il servizio DHCP che assegna gli indirizzi IP automatici alle risorse della rete) su una macchina/sistema "server".
Tra i servizi che vengono tipicamente erogati da un server o più server e che ne identificano a sua volta i vari tipi, si possono citare:
File server, permette agli utenti di accedere aifile situati su un dispositivo di memorizzazione come se fossero sul proprio calcolatore, agevolando lacondivisione di informazioni;
WSUS server, il servizio Microsoft per l'aggiornamento centralizzato dei relativi prodotti e dei driver utilizzati dalle risorse deldominio;
KMS (Key Management Service), server che gestisce le chiavi di attivazione dei prodotti multilicenza di un determinato produttore, per le macchine appartenenti al dominio;
NTP server, servizio di riferimento orario autorevole, impiegato per sincronizzare tutti gli orologi di una rete rispetto all'ora esatta della località;
Cloud Server, un server virtuale che, attraverso un software di virtualizzazione (Hypervisor), utilizza una porzione o un sottoinsieme del server fisico che lo ospita.
Altri server comunemente impiegati sono il servizio di inventario automatico delle risorse HD e SW oppure quello che presiede albackup.
Oltre al significato proprio cioè quello descritto nella presente voce, il termine server è a volte usato diffusamente ma impropriamente, specie in ambito lavorativo dai non esperti IT; in questi casi "server" è sbrigativamente tutto ciò che sta dentro un armadio di rete o situazioni analoghe oppure s'intende approssimativamente unhost.
In un qualsiasi sistema di risorse informatiche si deve infatti distinguere tra i 4 tipici sottosistemi (spesso spazialmente disgiunti)[N 3]:
elaborazione (computing);
archiviazione (storage);
connettività (networking);
sensoristica (monitoring).
Solo la parte dielaborazione corrisponde propriamente ad un server, tipicamente virtualizzato come nel caso dei datacenter[9] e quindi neppure fisicamente presente nel luogo di utilizzo del relativo servizio. Quindi, in molti casi (ad esempio quando ci si riferisce a informazioni archiviate e condivise "in rete" cioè non "in locale" sul dispositivo di un utente) bisognerebbe dire più correttamente "sullo storage" e non "sul server". Quando si tratta di applicazioni web (erogate o meno in cloud, comunque da remoto), per cui non occorre neppure connettersi via VPN, occorrerebbe semplicemente chiamarle con il loro nome, evitando imprecisioni tipo "mi collego al server".
↑ Douglas E. Comer e David L. Stevens,Vol III: Client-Server Programming and Applications, Internetworking with TCP/IP, Department of Computer Sciences, Purdue University, West Lafayette, IN 479,Prentice Hall, 1993, pp.11d,ISBN0-13-474222-2.
↑(EN)Server Definition, sulinfo.org, 16 maggio 2005.URL consultato il 13 maggio 2012.