Le reti P2P o Peer-to-Peer sono un tipo di reti decentralizzate costituite da centinaia e persino milioni di computer dislocati in tutto il mondo. Tutti lavorano sotto lo stesso protocollo di comunicazione, con l'obiettivo di creare un'enorme rete per condividere informazioni di qualsiasi tipo. Se oggi possiamo acquistare bitcoin è grazie a questo tipo di rete.
Una rete P2Po peer-to-peer, è una rete in cui un gruppo di persone o macchine partecipa in modo completamente decentralizzato. Vale a dire, è una rete dove non c'è un punto centrale di connessione o controllo, e dove le parti agiscono in autonomia rispondendo ad un comune protocollo di consenso e di comunicazione. In questo modo, i membri della rete possono scambiare informazioni direttamente e senza intermediari.
Per ottenere ciò, le reti P2P sono costruite su protocolli che funzionano su protocolli Internet (noti anche come TCP / IP). Quindi, vengono chiamati i protocolli P2P protocolli applicativi o Layer 7, secondo il modello Open Systems Interconnection o OSI. Ciò significa che i protocolli P2P richiedono l'uso di altri protocolli più astratti per funzionare, ma che, allo stesso tempo, li rende più facili da costruire e da usare.
Grazie a ciò, i protocolli P2P sono stati ampiamente utilizzati sin dalla loro creazione per scopi diversi. Alcuni legali, altri un po' grigi, ma nonostante questo c'è una cosa molto chiara, I protocolli P2P sono molto potenti e consentono la creazione di strutture decentralizzate, difficilmente discutibili e di libero utilizzo. Per questo motivo, le criptovalute come Bitcoin sono stati costruiti sulla base di protocolli P2P.
Origine e storia del P2P
L'origine della prima rete P2P, possiamo risalire fino alla creazione del protocollo UUCP o Protocollo di copia da Unix a Unix, nel 1980. Questo semplice protocollo ha dato origine alla nota rete USENET e, a BBS, reti che sono ancora attive e funzionanti oggi. Un buon esempio di questo è, BBS effetto Linux, che è ancora attivo per i nostalgici di questo sistema di comunicazione.
Il principio di funzionamento di questi sistemi è semplice: la macchina effettuava una chiamata di connessione (connessione dial-up) utilizzando un modem, comunicava con la macchina di destinazione e potevano condividere informazioni punto-punto senza intermediari. Al termine della chiamata di connessione, l'utente potrebbe avviare un'altra connessione a un'altra macchina avviando nuovamente il processo. Vale la pena notare che tutto questo era possibile senza una struttura come Internet che conosciamo oggi, una rete e una tecnologia che a quel tempo erano ancora in fase di sviluppo.
A quel tempo, USENET e il protocollo UUCP erano l'apice delle comunicazioni. In effetti, il movimento Cypherpunk iniziato con l'uso di questo protocollo. Personaggi come St. Jude, Eric Hughes, Timothy C.May, David Chaum, si è avvalso di questi sistemi per condividere informazioni sui forum BBS della comunità Cypherpunks. Erano i primi anni dell'informatica e, a quel tempo, si intravedevano già molte delle possibilità future di questo tipo di protocolli e di computer molto più potenti e capaci.
Successivamente, nel 1983, il Protocollo TCP / IP. Fondamentalmente, questo nuovo protocollo ha cercato di rendere più flessibile la creazione di grandi reti globali, infatti, è la base per la costruzione di ciò che oggi conosciamo come Internet. Quest'ultimo in realtà è diventato possibile quando il Sistema o modello OSI (che definisce i sette livelli di astrazione che attualmente abbiamo su Internet) nel 1989 e, infine, con l'arrivo di Protocollo WWW (World Wide Web) in 1990.
Tipi di reti P2P
Tra i tipi di reti P2P esistenti possiamo specificare quanto segue:
- Rete decentralizzata e strutturata. Questi tipi di reti sono noti come reti P2P ibride. In questo tipo di rete non esiste una directory su un server centrale, ma esistono invece una serie di nodi o peer, che hanno la capacità di ricevere richieste di informazioni e rispondere ad esse per facilitare l'accesso alle risorse. Per evitare la centralizzazione di questa funzionalità, i nodi o peer speciali possono essere installati e configurati da chiunque, cercando così che la stessa comunità di utenti estenda le funzionalità della rete e ne permetta il corretto funzionamento. Un buon esempio di questo tipo di rete sono le reti federate come Diaspora o Mastodonte.
- Rete decentralizzata e non strutturata. In questo tipo di rete P2P non ci sono computer o nodi che fungano da controllori centrali delle richieste. Al contrario, ogni nodo all'interno della rete ha le stesse funzioni del resto dei nodi, quindi ogni nuovo nodo esercita la stessa autorità degli altri. A questo punto, reti come Bitcoin soddisfano queste caratteristiche, poiché ogni nodo connesso ha le stesse capacità del resto.
Come funziona una rete P2P?
Il funzionamento di una rete P2P è relativamente semplice. In sostanza, quello che si fa è costruire un protocollo di comunicazione (linguaggio) che permetta alle persone che utilizzano detto software di comunicare direttamente e senza intermediari con altri computer. Tuttavia, il problema più grande che deve affrontare la costruzione di questi sistemi è: Come progettare un sistema che non necessiti di una directory centralizzata per comunicare con altri computer che eseguono lo stesso software?
Un problema complesso, ma la situazione può essere risolta abbastanza efficacemente con due misure ben definite:
- Innanzitutto, rendi il software in grado di condividere le informazioni di connessione su coloro che lo eseguono. Pertanto, ogni computer che esegue il software è in grado di disporre di una directory di computer collegati e di utilizzarli per connettersi al nodo desiderato.
- Incoraggiare la maggiore decentralizzazione possibile della rete. Cioè, fare in modo che molte persone eseguano il software creando i propri nodi e quindi aumentando le dimensioni della rete. In questo modo, la sua portata e le sue possibilità sono migliorate.
Cioè, di più coppie o coetanei (computer che eseguono software P2P) la rete ha, maggiori sono le possibilità che la rete non possa essere censurata, il suo funzionamento sarà più resistente e le sue capacità saranno migliori. Nei primi sistemi P2P, come USENET o IRC, i sistemi e le loro connessioni venivano resi noti tramite mezzi scritti, chiamate o lo stesso sistema che aveva una scheda di peer a cui connettersi. Pertanto, ogni nuovo membro della rete aveva accesso all'elenco dei peer e si aggiungeva in modo che altri potessero stabilire una comunicazione con loro, se necessario. Non solo, quel nuovo peer potrebbe essere il gateway per le informazioni provenienti da peer che potrebbero essere bloccate.
Ma creando reti più grandi come IRC, DCC, DC ++, Napster, Gnutella, BitTorrent e anche Bitcoin cambiato drasticamente questo. Ora ogni nodo è stato collegato a un punto, ottengono un elenco di file peer iniziali (o nodi seed). E da lì, ogni nodo è in grado di ricreare il proprio elenco di nodi che appartengono alla rete. Il risultato è una migliore resistenza alla censura e la rete può crescere più velocemente.
Ovviamente, il funzionamento di ciascun protocollo è diverso. IRC, ad esempio, è un sistema distribuito (quasi centralizzato) di server che può darti la possibilità di connetterti punto a punto con una persona. Ma DC + e Gnutella sono completamente decentralizzati, le loro reti sono progettate in modo che la rete si adatti automaticamente all'ingresso e all'uscita di nuovi nodi dalla rete.
Lo stesso vale per Bitcoin, dove la rete è iniziata con un singolo seme, quello iniziato da Satoshi Nakamotoe da allora la rete è cresciuta gradualmente fino a diventare una rete con una dimensione maggiore di 10mila nodi attivi. Certo, l'obiettivo di Bitcoin è diverso da quello di una rete come Gnutella, ma i principi del protocollo rimangono: comunicare a due soggetti senza intermediari.
Vantaggi e svantaggi di questa tecnologia
Vantaggi
- Una rete P2P è resistente alla censura. Una rete P2P altamente decentralizzata è praticamente impossibile da censurare.
- Offrono una resilienza senza pari. Se un nodo cade, un altro nodo può prendere il suo posto. Ecco perché dicono che le reti P2P possono sopravvivere a una catastrofe nucleare, perché possono distruggere molti nodi, ma se solo uno sopravvive, la rete può essere completamente ricostruita.
- Le reti P2P possono portare a potenti soluzioni di scalabilità per presentare servizi unici con portata globale.
- Non dipendendo dalle entità centrali, il P2P genera più fiducia nei suoi utenti.
- Offrono un alto livello di larghezza di banda. Questo grazie al fatto che sfruttano la larghezza di banda di ogni partecipante, per trasformarla nella propria rete.
- Servono per trasmettere informazioni digitali di qualsiasi tipo. Dalla tua canzone preferita a centinaia di milioni di dollari, in pochi secondi.
Svantaggi
- Una rete P2P è resistente alla censura, ma non ti rende anonimo a meno che non sia progettata per questo, anche se quella rete utilizza la crittografia. L'esempio migliore è BitTorrent, in cui gli ISP possono rilevare l'uso del protocollo e quindi avvisare le autorità del download illegale da parte di un utente.
- Il design delle reti P2P significa che maggiore è la dimensione, la latenza aumenta. In altre parole, affinché le informazioni raggiungano tutte le parti della rete, ci vorrà più tempo in una grande rete P2P che in una più piccola. Pertanto, si cercano nuovi algoritmi e protocolli per aiutare a superare questo problema.
- I protocolli P2P presentano una serie di problemi strutturali noti. Casi come gli attacchi MITM per prendere il controllo dei nodi, perché questi devono essere sempre connessi pubblicamente, sono uno di questi fallimenti. Anche i protocolli sono suscettibili di attacchi di routing o cose furtive come un file attacco di eclissi o un Attacco Erebus.
Bitcoin, una rete P2P per gestire il valore
Bitcoin è una delle più grandi reti P2P esistenti oggi, con più di 10mila nodi attivi, Bitcoin è una rete globale che consente ai suoi utenti di gestire il valore senza intermediari. Tutto quello che devi fare è scaricare un software che ti permetta di interagire con questa rete e sarai in grado di usarlo.
La costruzione di Bitcoin come rete P2P risponde alla necessità di decentralizzare le sue capacità. È inutile creare una valuta con la crittografia, se poi è gestita da un'entità centrale. Sarebbe semplicemente creare una nuova banca centrale. Satoshi Nakamoto voleva invece una rete globale, non censurata, sicura e privata in grado di gestire il valore. Quindi, per questo, Nakamoto ha progettato Bitcoin sulla base di una rete P2P utilizzando il proprio protocollo progettato secondo i principi di Protocollo Kademlia y Protocollo di pettegolezzi.
Il risultato è che Bitcoin è una rete P2P che, praticamente, non può essere fermata. Nonostante i suoi difetti strutturali, il protocollo P2P è stata la decisione migliore che Nakamoto potesse prendere nella progettazione di Bitcoin. In questo modo, si è assicurato di creare denaro digitale che servisse gli interessi del mondo e dei suoi utenti.
P2P per risolvere i problemi di denaro digitale
Soprattutto, Bitcoin con il suo sistema P2P è riuscito a creare un sistema di registro distribuito in cui problemi come la doppia spesa appartengono al passato. La doppia spesa è stato uno dei principali problemi con il denaro digitale. La possibilità di duplicare denaro e contraffarlo era qualcosa che non era stato risolto fino a quando Satoshi Nakamoto non ha progettato la blockchain e il suo protocollo P2P per Bitcoin.
Da allora siamo stati in grado di utilizzare le criptovalute in totale sicurezza sapendo che il nostro denaro non è solo in un protocollo aperto, trasparente e gratuito, ma anche che non può mai essere contraffatto. E tutto questo perché ogni nodo ha una cronologia delle transazioni di rete, che ne testimonia ogni operazione. Questa enorme rete di testimoni rimane una registrazione immutabile di tutto ciò che accade e ci dà la certezza che il sistema non è manipolabile.
Qualcosa di veramente utile e che permetta di trasformare Bitcoin in una moneta digitale sicura, la più sicura e trasparente di tutte.
Altri eventi importanti all'origine del P2P
La nascita di IRC
Nel 1988, un giovane di nome Jarkko Oikarinen ha progettato il protocollo IRC, al fine di sostituire un programma chiamato MUT (MultiUser Talk) su una BBS chiamata OuluBox presso l'Università di Oulu in Finlandia, dove ha lavorato presso il Dipartimento di Information Processing Science .
La sua intenzione era quella di estendere il software BBS che è riuscito a consentire notizie in stile USENET, discussioni in tempo reale e funzionalità simili a BBS. La prima parte che ha implementato è stata la parte della chat, che ha realizzato con parti prese in prestito scritte dai suoi amici Jyrki Kuoppala e Jukka Pihl. La prima rete IRC girava su un singolo server chiamato tolsun.oulu.fi.
Il fatto che il protocollo fosse progettato per utilizzare TCP / IP gli ha dato un'enorme flessibilità in futuro. Infatti, nel 1990 fu fondata la prima grande rete IRC, l'EFNet. Il ruolo di EFNet è stato fondamentale per le comunicazioni globali durante il conflitto nel Golfo Persico. In effetti, era la rete preferita per sapere in tempo reale cosa stava succedendo sul campo di battaglia. Pertanto, ha dimostrato che il potenziale di IRC sulla posta era superiore, almeno in termini di immediatezza e interattività delle comunicazioni. Lo stesso è accaduto con la caduta dell'Unione Sovietica, dove l'IRC è stato fondamentale anche nel ruolo di comunicare ciò che stava accadendo al mondo in tempo reale.
Da allora, il protocollo IRC ha subito un'enorme espansione e accettazione, con reti come Sotto rete, DALnet, nodo libero (ampiamente utilizzato per progetti di software libero), Rizon e Immortal-Anime (ora Xertion). L'espansione nella sua accettazione portò più sviluppo al protocollo e da lì nacque uno dei primi sistemi P2P su Internet, l'IRC-DCC o IRC Direct Client-to-Client. Il sistema consentiva la comunicazione diretta tra le parti senza intermediari, la condivisione di file, la comunicazione punto-punto (OTR) crittografata e altro ancora.
Nascita di HotLine Connect
Nel 1996, un'altra creazione sarebbe arrivata nel mondo del P2P, creato Adam Hinkley. Connessione direttaLine era una rete di condivisione file P2P che utilizza un sistema di tracciamento per consentire a due utenti di scambiarsi informazioni. Ampiamente utilizzato fino alla fine del 2000, è caduto in disuso grazie alla comparsa di altri protocolli più flessibili e all'importante ascesa dell'IRC-DCC.
Gnutella
Gnutella è una rete di condivisione file P2P sviluppata nel 2000 da Justin Frankel e Tom Pepper. Frankel e Pepper erano lavoratori di Nullsoft, il creatore del lettore Winamp e del servizio di streaming audio. Shoutcast.
Da allora e fino ad ora, Gnutella è la più grande rete P2P esistente al mondo. In effetti, questa rete ha più di 12 milioni di nodi operativi in tutto il mondo.
La nascita di Napster
Napster era un software sviluppato da Shawn Fanning nel 1998 e permetteva il download di musica gratuitamente. Sebbene Napster non fosse una pura rete P2P (come era anche il caso di IRC), consentiva a due persone di scambiarsi musica senza intermediari esterni a quelli esistenti sulla rete e sui suoi server. Ma Napster ha toccato le tasche dell'industria musicale e dopo un lungo processo è stato chiuso nel luglio 2001.
Tuttavia, ciò che Napster aveva fatto ha chiamato il mondo a sviluppare sistemi più decentralizzati.