Definizione, caratteristiche e utilizzo di un socket in informatica

Definizione, caratteristiche e utilizzo di un socket in informatica

In informatica, con il termine socket si indica un’astrazione software progettata per la trasmissione e la ricezione di dati attraverso una rete (interfacciamento per la comunicazione in rete). È il punto in cui il codice applicativo di un processo accede al canale di comunicazione per mezzo di una porta, ottenendo una comunicazione tra processi che lavorano su due macchine fisicamente separate. Dal punto di vista di un programmatore, un socket è un particolare oggetto sul quale leggere e scrivere i dati da trasmettere o ricevere.

Mediante tale astrazione software è cioè possibile creare e rappresentare un terminale (interfaccia) di connessione con una semplice chiamata di funzione, al cui valore di ritorno viene associato un nome. In seguito, attraverso la manipolazione di tale entità, con altre funzioni correlate (primitive), si potrà stabilire una connessione vera e propria con entità dello stesso tipo, consentendo la comunicazione in rete.

In termini più tecnici, una socket è un dispositivo software che consente la comunicazione (trasferimento di dati) tra due processi su internet in una LAN con le seguenti caratteristiche:

  • Interfaccia indipendente dalla rete
  • Uso di un’astrazione unica per i nodi comunicanti
  • Schema di naming a due livelli

Nel gergo socket uno dei processi che comunicano è chiamato Server (il receiver) e l’altro Client (il sender). Tra i due processi il server è quello che ha controllo maggiore, poiché è il processo che inizialmente crea la socket. Più client possono comunicare attraverso la stessa socket, ma solo un server può essere associato ad una definita socket.
Il fatto che un programma agisca come client o come server determina un differente uso delle API Socket

  1. Il Client(il sender) ha bisogno di conoscere l’indirizzo del server (ma non il viceversa)
  2. Il Server (il receiver) può apprendere informazioni sull’indirizzo del client una volta stabilita la connessione

Definizione, caratteristiche e utilizzo di un socket in informatica

Le famiglie di Socket

Esistono varie famiglie di socket. Ogni famiglia :

  • riunisce le socket che utilizzano gli stessi protocolli (Protocol Family) sottostanti,
  • supporta un sottoinsieme di stili di comunicazione e
  • possiede un proprio formato di indirizzamento (Address Family)

Alcuni esempi di famiglie:

  • Unix Domain socket: file in una directory di un computer local host. Consentono il trasferimento di dati tra processi sulla stessa macchina Unix
  • Internet socket (AF_INET): consentono il trasferimento di dati tra processi posti su macchine remote connesse tramite una LAN

I tipi di Socket

Il tipo di una socket definisce una modalità di comunicazione che una socket usa per inviare dati:

  • Streaming Socket (SOCK_STREAM): Fornisce una connessione sequenziale, affidabile e full-duplex. Il protocollo TCP supporta questo tipo di socket.
  • Datagram socket (SOCK_DGRAM): Supporta i datagrammi (privo di connessione, messaggi inaffidabili di una lunghezza massima prefissata). Il protocollo UDP supporta questo tipo di socket

Quindi:

  • AF_INET + SOCK_STREAM determineranno una connessione TCP,
  • AF_INET + SOCK_DGRAM determineranno una trasmissione UDP

Programmazione socket

Una socket che usa la famiglia di protocolli TCP/IP è univocamente determinata da un indirizzo internet, un protocollo di comunicazione (TCP o UDP) e un numero di porta.

  1. Durante l’handshake a tre vie il TCP server crea un nuova socket (di connessione) dedicata a quel particolare client
  2. Il client deve contattare il server e il programma server deve essere in esecuzione come processo di background. Quindi, il programma server deve avere una porta (socket) che dia il benvenuto al contatto iniziale stabilito da un processo client in esecuzione.
  3. Il client contatta il server tramite: la creazione di una socket locale e la specifica di un indirizzo del processo server (IP, numero di porta relativi al processo). Dopo la creazione della socket nel client, TCP avvia un handshake a tre vie (tre messaggi di SYNC e ACK) e stabilisce una connessione TCP con il server.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *