Sistemi di elaborazione dell'informazione / Reti

Il modello client-server

Il termine server è applicabile a qualsiasi programma che offra un servizio accessibile su una rete. Un server accetta una richiesta sulla rete, esegue il suo servizio e restituisce il risultato al mittente. Un programma in esecuzione diventa un client quando invia una richiesta a un server e aspetta una risposta. Il server aspetta le richieste a una porta ben nota che è stata riservata per il servizio che offre. Il client invece usa una porta arbitraria, inutilizzata e non riservata alla sua comunicazione. I programmi server di solito sono molto più difficili da scrivere dei client, perché devono gestire più richieste simultaneamente, soprattutto se serve molto tempo per elaborare una singola richiesta Tipicamente questi server sono costituiti da due parti: il programma principale o primario, che ha il compito di accettare nuove richieste e un insieme di moduli ausiliari o secondari che si occupano della gestione di singole richieste. Il primario esegue le seguenti cinque fasi:

UNIX usa le chiamate di sistema fork ed exec per attivare nuovi processi. È una procedura in due fasi: nella prima si crea una copia del programma in esecuzione al momento, mentre nella seconda la nuova copia è sostituita dal programma applicativo desiderato. Un’ alternativa al modello client-server tutt’ oggi molto usata è il Peer-to-peer o servent: tutti i programmi agiscono sia da client sia da server. La comunicazione in rete tra client e server è resa possibile dai socket: l'interfaccia standard tra i programmi applicativi e i protocolli TCP/IP. Un client, per comunicare con un host remoto usando il protocollo TCP/IP, dovrà creare per prima cosa un oggetto Socket con tale host. Si dovrà specificare l’indirizzo IP dell’host, e il numero di porta. Sull’host remoto dovrà esserci un server che è in "ascolto" su tale porta. Il server rimane in attesa di connessioni su una certa porta, ed ogni volta che un client si connette a tale porta, il server ottiene una socket, tramite la quale può comunicare col client. Quando un programma chiama fork, la copia appena creata eredita l'accesso a tutti i socket aperti, così come l'accesso a tutti i file aperti. Quando un programma chiama exec la nuova applicazione mantiene l'accesso a tutti i socket aperti. I server principali usano l'ereditarietà dei socket quando creano server secondari per gestire una specifica connessione.























































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.