Server

Una coppia di server in un armadio rack

Un server (dall'inglese «serviente, servitore, cameriere»)[1][2] in informatica e telecomunicazioni è un dispositivo fisico o sistema informatico di elaborazione e gestione del traffico di informazioni. Un server fornisce, a livello logico e fisico, un qualunque tipo di servizio ad altre componenti (tipicamente chiamate client, cioè clienti) che ne fanno richiesta attraverso una rete di computer, all'interno di un sistema informatico o anche direttamente in locale su un computer.

Questa interazione tra server e client è chiamata architettura client-server. I server possono fornire varie funzionalità, spesso chiamate "servizi", come la condivisione di dati o risorse tra più client, o l'esecuzione di calcoli per un client. Un singolo server può servire più client, e un singolo client può utilizzare più server. Un processo client può essere eseguito sullo stesso dispositivo o può connettersi in rete a un server su un dispositivo diverso.[3] I server tipici sono server di database, file server, server di posta elettronica, server di stampa, server web, server di giochi e server di applicazioni.[4]

Descrizione[modifica | modifica wikitesto]

Architettura client-server

Il server rappresenta il nodo terminale della rete opposto allo host client. In altre parole si tratta di un computer o di un programma che fornisce i dati richiesti da altri elaboratori, facendo quindi da host per la trasmissione delle informazioni virtuali. Al termine server, così come per il termine client, possono dunque riferirsi sia la componente hardware che la componente software che forniscono le funzionalità o servizi di cui sopra. La macchina hardware server si dice anche capace di offrire risorse in termini di servizio al client che ne fa domanda/richiesta. Esso fa parte dunque dell'architettura logica di rete a livello applicativo detta client-server.[5][6]

In base al contesto, il termine "server" può indicare quindi:

  1. un computer "ordinario" utilizzato per fornire servizi ad altri computer, a prescindere dalle sue caratteristiche hardware.
  2. un computer specifico appartenente alla fascia di mercato dedicata all'uso come server, caratterizzato da alta affidabilità, maggiori prestazioni e funzioni aggiuntive.
  3. un processo (ovvero un programma in esecuzione) che fornisca servizi ad altri processi (es. Server Web).

In generale quindi si tende ad indicare come server il componente hardware che attraverso un software specifico eroga un servizio e client 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, alla virtualizzazione e non computer fisici.

Caratteristiche[modifica | modifica wikitesto]

Tipicamente una macchina hardware 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 a coda di attesa dei processi da gestire (caso di pochi client: situazione ai primordi della rete Internet);
  • concorrente, ovvero capace di soddisfare più richieste di servizio da parte di più client attraverso procedure tipiche del multithreading e gestione delle risorse hardware/software della macchina (situazione diventata ora comune nella rete Internet).

Architettura client-server o N-tier[modifica | modifica wikitesto]

Lo stesso argomento in dettaglio: Sistema client/server e Architettura multi-tier.
Schema architettura three-tier

Il complesso logico formato da uno o più server e, solitamente, svariati client è denominato Modello client-server tipico delle Rete Internet e dei sistemi informatici aziendali. Negli ultimi anni è stato esteso alla interazione tra più macchine o servizi eterogenei, e in tal caso si parla di Architettura 3-tier (o più in generale ad N-tier).

Il server riceve dai client delle richieste 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 principali risorse di elaborazione, il software, la manutenzione, le informazioni critiche o sensibili, gli accorgimenti atti a garantire affidabilità (come i backup); 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 di e-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 rete peer-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 normale PC oppure su macchine hardware dedicate con prestazioni, affidabilità e costi superiori. Nelle reti LAN aziendali spesso i server sono disposti su un segmento di rete noto come DMZ.

Funzionamento[modifica | modifica wikitesto]

Schema di funzionamento client-server
Lo stesso argomento in dettaglio: Traffico (telecomunicazioni) e Teoria delle code.

I server offrono servizi al client tipicamente in modalità richiesta/risposta lavorando a livello applicativo del modello ISO/OSI e del modello TCP/IP (come anche i client) secondo i dettami del particolare protocollo 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 di livello di trasporto quali TCP e UDP e sul livello di rete (IP) per l'instradamento.

Tipicamente l'espletamento del servizio per il client è preceduto da una fase di definizione di un socket (coppia indirizzo IP/porta) e successiva instaurazione della connessione con il server tramite TCP o UDP, con il server che possiede un indirizzo IP statico a causa dei legami intrinseci con il nome di dominio (che è inevitabilmente fisso) attraverso il DNS. Le porte dedicate ai server sono tipicamente porte note e statiche (well known ports), dipendenti dal particolare servizio espletato.

La creazione di applicazioni di rete, per quanto riguarda la connessione, ricade all'interno degli ambiti della cosiddetta programmazione socket. Tipicamente tale ambito di programmazione fa uso di opportune chiamate di sistema o API Socket al sistema operativo del server e del client per realizzare la connessione affidabile sia in modalità iterativa sia concorrente gestendo anche tutti i possibili errori o eccezioni.

Cluster[modifica | modifica wikitesto]

Lo stesso argomento in dettaglio: Computer cluster.
Esempio di computer cluster

Se il carico di richieste è eccessivo per un solo server, o se sono necessari alti livelli di affidabilità, 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 come server 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 un sistema operativo adeguato, e/o collegati attraverso specifiche configurazioni di rete.

Progettazione e gestione[modifica | modifica wikitesto]

Lo stesso argomento in dettaglio: Capacity planning.

Tipicamente i server in ambienti distribuiti come sistemi informatici e reti informatiche sono gestiti da amministratori di sistema da remoto (telegestione) attraverso connessioni remote realizzate attraverso varie possibili applicazioni dedicate (Virtual Network Computing).

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 comune consolidamento) 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.

Affidabilità e sicurezza[modifica | modifica wikitesto]

Lo stesso argomento in dettaglio: Server farm e Disaster recovery.
Esempio di server farm al CERN

Il server è un elemento fondamentale dell'infrastruttura IT di cui fa parte, in quanto i suoi malfunzionamenti si ripercuotono su tutti i client che ne fanno uso. Pertanto, per i server si adottano accorgimenti volti a garantire alta affidabilità che garantisca continuità di servizio (disponibilità) e robustezza ai guasti, e alta sicurezza ovvero protezione da attacchi informatici:

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 un armadio 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 di DoS, tipico di molti dispositivi di rete.

Sistemi operativi per server[modifica | modifica wikitesto]

Sessione bash di un'interfaccia testuale su Linux

I sistemi operativi per server sono molti ma i più usati e più conosciuti sono generalmente:

I sistemi operativi per server possono essere sia installati direttamente sull'hardware della macchina, sia virtualizzati sopra un hypervisor (es. una distribuzione Linux su VMware 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 esempio Windows Server con Hyper-V che ospita altri sistemi Windows, oppure i Logical Domains (LDoms) di Solaris.

In applicazioni più specifiche, quali midrange e mainframe, è possibile trovare sistemi operativi più specifici e dedicati al processare alti volumi di record e transazioni: IBM AS/400, z/OS, z/TPF, oppure HP Integrity NonStop.

Servizi e tipi di server[modifica | modifica wikitesto]

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".

Primo server web della storia, il NeXT Cube di Tim Berners-Lee al CERN

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:

Simbolo di Database server

Altri server comunemente impiegati sono il servizio di inventario automatico delle risorse HD e SW oppure quello che presiede al backup.

Osservazioni[modifica | modifica wikitesto]

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 un host.

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 di elaborazione corrisponde propriamente ad un server, tipicamente virtualizzato come nel caso dei datacenter[7] 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".

Note[modifica | modifica wikitesto]

Annotazioni
  1. ^ Nel senso di sistemi operativi server diversi. Possono impattare sia a livello di bus che di middleware
  2. ^ Ad esempio IBM.
  3. ^ Infatti, per i non addetti ai lavori, se si utilizzasse il generico termine "sistema" non si sbaglierebbe quasi mai.
Fonti
  1. ^ Voce del Vocabolario Treccani Online
  2. ^ server - Oxford learner's dictionary, su oxfordlearnersdictionaries.com.
  3. ^ Library Genesis, Windows server administration fundamentals : exam 98-365, [Hoboken, N.J.] : John Wiley & Sons Inc, 2011, ISBN 978-0-470-90182-3. URL consultato il 4 aprile 2022.
  4. ^ Internet Archive, Internetworking with TCP/IP., Prentice Hall, 1993, ISBN 978-0-13-474222-9. URL consultato il 4 aprile 2022.
  5. ^ (EN) Server Definition, su linfo.org, 16 maggio 2005. URL consultato il 13 maggio 2012.
  6. ^ (EN) Bradley Mitchell, Network Servers - What Is a Server?, su compnetworking.about.com, about.com. URL consultato il 13 maggio 2012 (archiviato dall'url originale il 22 aprile 2016).
  7. ^ https://www.digitalworlditalia.it/data-center

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàLCCN (ENsh93000502 · GND (DE4209324-7 · J9U (ENHE987007544366605171