Per molti, è sinonimo di condivisione di file online e download gratis di contenuti di qualunque genere – dai film alle serie TV, passando per musica, immagini e libri – dalla Rete. Il peer-to-peer (abbreviato spesso e volentieri in p2p), invece, è molto di più. Si tratta di una delle architetture di rete più conosciute e utilizzate (probabilmente la seconda più comune, alle spalle della "classica" client-server, anche se l'architettura mesh sta scalando velocemente la classifica) sia in ambito locale (come reti LAN) sia in ambito "geografico" (vedi le reti di distribuzione solitamente utilizzate per il file sharing).
Pur trattandosi di un'architettura utilizzata sin dagli albori delle reti informatiche, il p2p è divenuto famoso grazie a Napster e gli altri software di file sharing, che consentivano di scaricare gratis file di ogni genere (nella gran parte dei casi, in maniera illegale) accedendo direttamente alla copia presente sul disco rigido di un altro utente (e condividendo, a propria volta, il materiale di cui si era in possesso o che si stava scaricando).
Che cos'è una rete peer-to-peer
Nella sua configurazione più semplice, un network peer-to-peer è costituita da due computer che scambiano file tra di loro sfruttando un cavo USB come mezzo di comunicazione (in questo caso si parla anche di "rete dedicata"). Questo, però, non è che l'esempio "basilare" di una rete p2p: rientrano all'interno di questa categoria anche delle LAN aziendali, composte da una decina di computer collegati tra loro con doppini di rame o cavi Ethernet, o reti più estese che utilizzano protocolli ad hoc per mettere in comunicazione i vari nodi che la compongono e consentire così lo scambio di dati. Un network di questo genere, dunque, si forma quando due o più calcolatori sono in grado di comunicare tra di loro e inviarsi reciprocamente delle informazioni senza che ci sia la necessità di passare attraverso un calcolatore centrale (o server).
Volendone dare una definizione, si può dire che una rete peer-to-peer è un'architettura di calcolo distribuito nella quale i vari nodi condividono tra di loro parte delle loro risorse informatiche (come la potenza di calcolo della CPU, lo spazio sull'hard disk e la memoria RAM, la larghezza di banda e così via) senza che ci sia bisogno di un nodo centrale – il già citato server – che coordini il tutto. I nodi, dunque, non sono gerarchizzati tramite il binomio client e server, ma si tratta di nodi paritari (peer in inglese, per l'appunto), in grado di svolgere sia il "ruolo" di cliente, sia quello di servente.
Come funziona una rete peer-to-peer
Una rete p2p integra, solitamente, una overlay network virtuale (in italiano "rete sovrapposta"), con i nodi che formano una sottorete rispetto alla rete fisica principale. L'overlay è utilizzata principalmente per l'indicizzazione dei nodi appartenenti alla rete paritaria e la loro "mappatura": in questo modo i nuovi nodi potranno conoscere la topologia del network e riuscire, così, a mettersi in comunicazione con gli altri senza la necessità di passare attraverso un server.
A seconda del modo in cui i nodi sono collegati tra di loro e della loro distribuzione, è possibile dividere le reti p2p in "strutturate" e "non strutturate".
- Reti peer-to-peer strutturate. Una rete strutturata è caratterizzata da una topologia specifica, che assicura che ogni nodo possa efficientemente cercare e trovare una risorsa o nodo anche se dovesse essere particolarmente rara. Per facilitare questo compito, ogni rete strutturata integra una tavola hash distribuita, all'interno della quale a ogni risorsa corrisponde un codice identificativo univoco. Comunque, per far sì che il flusso del traffico non incontri ostacoli di sorta, è necessario che ogni nodo conservi un elenco dei nodi "vicini" che rispetti criteri molto vincolanti. Questo può costituire un grosso limite in termini di efficienza, nel caso in cui il network sia caratterizzato da nodi che entrano o escono dalla rete molto frequentemente
- Reti peer-to-peer non strutturate. Come suggerisce anche il nome, una rete non strutturata è caratterizzata da un'apparente disorganizzazione ed è formata da nodi che creano collegamenti casuali con altri nodi della rete. Si tratta, dunque, di reti di facile "formazione", che non richiedono il rispetto di parametri particolarmente stringenti. Allo stesso tempo, però, la mancanza di una struttura e un'organizzazione interna, rende particolarmente complesso (e lungo) il compito di cercare file o risorse nel network: la richiesta, infatti, dovrà essere inviata a tutti i nodi che condividono il file. Ciò, ovviamente, genera un gran volume di traffico, senza la certezza di riuscire a individuare la risorse cercata
Vantaggi e svantaggi della rete p2p
Un'architettura di rete di questo genere è caratterizzata da un'elevata scalabilità e capacità di "autorigenerazione". Nel caso in cui un nodo smetta di funzionare – o, semplicemente, si disconnette dal network – la rete continuerà a funzionare senza grossi problemi: lo scambio di dati o la ricerca di risorse proseguirà lungo strade alternative rispetto a quella che transitava attraverso il nodo non più disponibile. Si aggira, in questo modo, il collo di bottiglia che, in alcuni casi, è rappresentato dall'affidarsi al funzionamento di un unico server (o un'unica struttura centralizzata). La distribuzione delle risorse, inoltre, permette di raggiungere velocità di download molto elevate: potendo scaricare la stessa risorsa da più fonti contemporaneamente, sarà possibile sommare la banda garantita da ogni singolo nodo.
Allo stesso tempo, però, una rete p2p può diventare di difficile gestione nel caso in cui il numero di partecipanti cresca in maniera esponenziale. Se si optasse per una topologia non strutturata, infatti, si potrebbero avere difficoltà nel reperire le risorse più "scarse"; se, invece, la topologia scelta è quella strutturata, la rete potrebbe accusare qualche problema nel caso di connessioni "volatili" e ripetute (ovvero nodi che si connettono e disconnettono di continuo).
Differenze tra peer-to-peer e client-server
La maggiore differenza tra una rete peer-to-peer e un'architettura client-server sta nella decentralizzazione/centralizzazione delle risorse e delle informazioni. Nel caso della rete p2p tutti i nodi parteciperanno in maniera uguale alla gestione e al mantenimento della rete stessa: il funzionamento, dunque, non dipenderà da un unico nodo centrale e la topologia del network potrà essere facilmente rivista per adattarsi a una situazione in continua evoluzione. Nell'architettura client-server, invece, il carico della gestione dell'infrastruttura e delle informazioni è spostato verso un unico nodo centrale (il server), cui i vari nodi fanno riferimento per cercare e consultare le risorse desiderate. Questo approccio rende questo tipo di network completamente dipendente dalla presenza del server centrale: se questo, per qualche ragione, finisce offline o smette di funzionare l'intera rete rimarrà bloccata.
Applicazioni delle reti p2p
L'elevata velocità media rende le reti p2p particolarmente adatte alla condivisione e al download dei file. Protocolli di comunicazione "paritari", dunque, sono utilizzati sia nell'ambito del content delivery sia nel file sharing (spesso sinonimo del termine "scaricare gratis"). Molti servizi di condivisione di contenuti "legali", come ad esempio Spotify, adottano una soluzione ibrida, affiancando una struttura client-server a una peer-to-peer: ciò consente al servizio di musica in streaming di bilanciare il carico di lavoro tra la propria infrastruttura (server e dorsali di comunicazione) e le risorse informatiche messe a disposizione dai singoli utenti.