Sistemi di elaborazione dell'informazione / Reti

Socket

La socket è l'interfaccia standard tra i programmi applicativi e i protocolli TCP/IP. Una socket è come una porta di comunicazione e non è molto diversa da una presa elettrica, infatti letteralmente Socket significa “presa”. Tutto ciò che è in grado di comunicare tramite il protocollo standard TCP/IP, può collegarsi ad una socket e comunicare tramite questa porta di comunicazione, allo stesso modo in cui un qualsiasi apparecchio che funziona a corrente può collegarsi ad una presa elettrica e sfruttare la tensione messa a disposizione. Nel caso delle socket, invece dell’elettricità, nella rete viaggiano pacchetti TCP/IP. Tale protocollo e le socket forniscono quindi un’astrazione, che permette di far comunicare dispositivi diversi che utilizzano lo stesso protocollo. Quindi 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. Un 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. L’ origine dei socket risale al 1983, quando furono introdotti nel BSD 4.2 (BSD-Berkeley Software Distribution) nella Università di Berkeley in California. I protocolli utilizzabili per l’implementazione delle Socket sono:

Entrambi questi protocolli si appoggiano sul protocollo IP (Internet Protocol). Le socket possono essere implementate con svariati linguaggi di programmazione, come c, c# e java. Analizziamo per esempio l’ implementazione in C, sicuramente una delle più complicate:

I processi di nuova creazione ereditano l'insieme di socket aperti dal processo che li ha creati. Talvolta, però, un processo ha bisogno di determinare l'indirizzo del socket di destinazione a cui si connette oppure di stabilire l'indirizzo di un socket locale. Queste informazioni vengono fornite dalle funzioni getpeername e getsockname. Oltre a collegare un socket a un indirizzo locale o connetterlo a un indirizzo di destinazione, sorge la necessità di un meccanismo che permetta ai programmi applicativi di controllare i socket. Ad esempio, quando si usano protocolli che utilizzano il timeout e la ritrasmissione, il programma applicativo può voler ottenere o impostare i parametri di timeout, l'assegnazione dello spazio del buffer, l'elaborazione di dati fuori banda o determinare se il socket consente trasmissioni di tipo broadcast. Invece di aggiungere nuove funzioni per ogni nuova operazione di controllo, i progettisti hanno deciso di creare un singolo meccanismo che ha due funzioni: gestsockopt e setsockopt. Per saperne di più consulta i seguenti approfondimenti:





















































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.