Origini dimenticate: lo stack TCP/IP della BBN e la nascita dell'interfaccia socket
Un ex dipendente BBN racconta in prima persona il codice TCP/IP BSD antecedente al lavoro di Bill Joy, ricordandoci le fondamenta silenziose della moderna comunicazione di rete.
Ogni volta che un programma invia un messaggio attraverso internet, che si tratti di caricare una pagina web, guardare un video in streaming o inviare un'email, si affida a un'astrazione semplice ma potente nota come socket. In termini semplici, un socket è come una porta attraverso cui due programmi su computer diversi possono parlare tra loro. Nasconde i complessi strati di hardware e instradamento di rete, consentendo agli sviluppatori di leggere e scrivere dati quasi con la stessa facilità con cui leggerebbero o scriverebbero un file sul proprio computer. Questo concetto, reso popolare per la prima volta dalla distribuzione Berkeley Software Distribution (BSD) di Unix, è diventato la pietra angolare di praticamente tutto il software connesso a internet che usiamo oggi.
Ben prima che Bill Joy integrasse uno stack TCP/IP e l'interfaccia di programmazione delle applicazioni (API) socket in BSD all'inizio degli anni '80, esisteva già un'altra implementazione. La Bolt, Beranek and Newman (BBN), l'azienda che costruì i router originali di ARPANET, aveva sviluppato il proprio stack TCP/IP per BSD. Questo codice precedente faceva parte di un progetto della Defense Advanced Research Projects Agency (DARPA) statunitense e servì come base per il successivo lavoro di Joy. Un recente ricordo sul blog APNIC di un ex dipendente BBN, identificato solo come D. W., fa luce su questo capitolo poco ricordato. A metà degli anni '90, D. W. era responsabile di una copia master dei magtape del codice sorgente (un tipo di cartuccia a nastro utilizzata per l'archiviazione dei dati informatici) presso la BBN. Ogni volta che qualcuno richiedeva il codice, il suo compito era duplicare e spedire i nastri, un compito imposto da un obbligo contrattuale con la DARPA. Notevolmente, durante tutto il suo mandato, nessuno ne chiese mai una copia.
L'aneddoto è più di un semplice pezzo di nostalgia. Sottolinea come gli sforzi silenziosi e dietro le quinte spesso siano alla base delle tecnologie che poi diventano onnipresenti. L'interfaccia socket emersa da queste prime implementazioni unificò la comunicazione interprocesso esistente a Berkeley (un modo per i programmi sulla stessa macchina di scambiarsi informazioni) con i protocolli di rete TCP/IP allora nuovi. Invece di presentare un modello di programmazione completamente nuovo, riutilizzò chiamate di sistema familiari come `read()` e `write()`, ma ora attraverso una rete. Questa scelta progettuale abbassò drasticamente la barriera per gli sviluppatori, innescando un'esplosione di applicazioni di rete.
Oggi i socket rimangono la base di basso livello per praticamente tutta la comunicazione su internet. Dai server web e database ai videogiochi e alle app di messaggistica, l'API socket è il linguaggio comune con cui i programmi parlano alla rete. La durabilità di questa interfaccia è una prova della sua progettazione: astrae i dettagli complicati della perdita di pacchetti, dei cambi di instradamento e della congestione di rete, pur dando alle applicazioni abbastanza controllo per gestire connessioni sensibili alle prestazioni. I protocolli TCP/IP stessi si sono evoluti, ora includono cifratura, capacità multipath e un migliore controllo della congestione, ma la metafora del socket perdura, spesso avvolta in librerie di livello superiore per comodità.
Questo modello duraturo evidenzia anche perché sia così critico proteggere i livelli di rete sottostanti. Poiché ogni applicazione connessa, per quanto sofisticata, si affida ai socket per inviare e ricevere dati, un attaccante che riesce a intercettare o manipolare il traffico che scorre attraverso quei socket può compromettere privacy e sicurezza. Un anello spesso trascurato di questa catena è il Domain Name System (DNS), la rubrica di internet che traduce nomi facili da ricordare come "example.com" in indirizzi IP numerici che i socket utilizzano. Se le query DNS vengono inviate in chiaro, espongono i siti che visiti e possono essere manomesse per reindirizzarti verso server dannosi. Proteggere quella richiesta fondamentale con DNS cifrato, come DNS over HTTPS (DoH) o DNS over TLS (DoT), scherma il primo passo di ogni connessione socket. Un resolver DNS cifrato e attento alla privacy come AEU DNS può contribuire a garantire che le ricerche di indirizzi della tua rete siano private e non manomesse, rafforzando la sicurezza di ogni connessione basata su socket che i tuoi dispositivi effettuano.
Termini spiegati
- socket
- Un socket è una porta software che consente a due programmi su computer diversi di inviare e ricevere dati su una rete, in modo simile a come una telefonata collega due persone.
- TCP/IP
- TCP/IP è l'insieme di regole che governano come i dati vengono suddivisi in pacchetti, indirizzati, inviati e riassemblati in modo affidabile su internet.
- BSD
- BSD (Berkeley Software Distribution) è un tipo di sistema operativo Unix dell'Università della California, Berkeley, che ha introdotto molte funzionalità di rete che usiamo ancora oggi.
- magtape
- Una magtape (nastro magnetico) è una lunga striscia di plastica rivestita di materiale magnetico, un tempo usata comunemente per conservare dati informatici in grandi bobine o cartucce, prima che i dischi rigidi diventassero dominanti.
- API
- API (Application Programming Interface) è un insieme di regole che permette a un software di comunicare con un altro, come un menu che elenca cosa può fare un programma e come chiederglielo.
- DNS
- DNS (Domain Name System) è la rubrica di internet; traduce nomi di siti web facili da ricordare come google.com negli indirizzi IP numerici che i computer usano per trovarsi.
- DoH/DoT
- DoH (DNS over HTTPS) e DoT (DNS over TLS) sono metodi che cifrano le query DNS, nascondendo le ricerche dei tuoi indirizzi internet a chiunque potrebbe cercare di spiare o alterare.
Come proteggerti
- Configura i tuoi dispositivi per utilizzare un servizio DNS che cifra le richieste, come AEU DNS, che supporta DNS over HTTPS (DoH) e DNS over TLS (DoT); questo impedisce ad altri sulla tua rete o al tuo provider internet di vedere quali si
- Mantieni aggiornati il sistema operativo e tutti i software, perché gli stack di rete e le librerie socket ricevono patch di sicurezza che correggono vulnerabilità che gli aggressori potrebbero sfruttare.
- Quando usi una Wi‑Fi pubblica, abbina sempre il DNS cifrato a una VPN (Virtual Private Network) affidabile per proteggere tutto il tuo traffico internet da intercettazioni, non solo le richieste DNS.
- Controlla le impostazioni del browser o del dispositivo per un'opzione 'Secure DNS' o 'Private DNS' e attivala; questo garantisce che ogni ricerca di nome utilizzi la cifratura senza bisogno di software aggiuntivi.
Fonte: blog.apnic.net
