9) Socket e programmazione di rete
Introduzione alla programmazione di rete
Scrivere codice in grado di comunicare attraverso una rete di elaboratori richiede l'utilizzo di interfacce standard definite Socket.
Cos'è un Socket
Un socket rappresenta un endpoint di comunicazione logica bidirezionale, identificato in modo univoco dall'unione di un indirizzo IP e di una porta TCP/UDP.
Esistono due macro-famiglie di socket basate sui protocolli del livello di trasporto sottostante.
I Socket Stream si appoggiano al protocollo TCP per assicurare una trasmissione affidabile, ordinata e priva di errori.
I Socket Datagram sfruttano l'UDP per trasmettere singoli blocchi di dati alla massima velocità possibile, senza garanzie di consegna.
Ciclo di vita di un Server TCP
Per instaurare una comunicazione corretta, il server deve seguire una precisa sequenza di chiamate di sistema (system call).
La chiamata socket() inizializza l'interfaccia e ne stabilisce la famiglia d'indirizzi e la tipologia di protocollo.
La chiamata bind() associa il socket creato a un indirizzo IP locale e a un numero di porta specifico della macchina.
La chiamata listen() pone il server in modalità di ascolto passivo, pronto a ricevere tentativi di connessione da parte dei client.
La chiamata accept() è bloccante: estrae la prima richiesta di connessione in coda e crea un nuovo socket dedicato al canale.
Attraverso read() e write() (o recv() e send()), il server scambia messaggi con il client prima di chiudere la connessione con close().
Il ciclo di vita del Client TCP
Il client segue un percorso molto più semplice, evitando le fasi di bind e listen.
Dopo aver chiamato socket(), invoca connect() per richiedere attivamente l'apertura del Three-Way Handshake TCP con il server.
Una volta accettata la connessione, può iniziare a trasmettere ed elaborare i dati fino al rilascio delle risorse.
Conclusioni
Padroneggiare la programmazione dei socket è indispensabile per comprendere come vengano implementati i web server e i microservizi moderni.
Studio Assistito con l'Intelligenza Artificiale
Vuoi padroneggiare al meglio i concetti di questo articolo? Avvia lo studio assistito per generare riassunti automatici, mappe concettuali o farti interrogare con il metodo socratico.