# Peer-to-peer

Nell'ambito delle telecomunicazioni, peer-to-peer, abbreviato anche come P2P, (dall'inglese: rete paritaria/paritetica) indica un modello di architettura di una rete informatica a livello logico in cui i nodi non sono staticamente suddivisi tra client e server, ma sono anche disposti sotto forma di nodi equivalenti o paritari (in inglese:peer), vale a dire che possono fungere al contempo sia da client che da server nei confronti degli altri nodi terminali della rete (chiamati host). In alcuni contesti si parla anche di comunicazione incrociata.
In una rete peer-to-peer pura e strettamente intesa, tutti i computer hanno gli stessi diritti e possono essere quindi sia client che server di altri computer. Nelle moderne reti P2P, tuttavia, i computer che partecipano alla rete sono organizzati suddividendosi in gruppi diversi a seconda degli specifici compiti di cui si occupano. Mediante questa configurazione, qualsiasi nodo è in grado di avviare o completare una transazione. I nodi equivalenti possono differire nella configurazione locale, velocità di elaborazione, ampiezza di banda e quantità di dati memorizzati. Esempio tipico di P2P è la rete per la condivisione di file (file sharing).
Nella quasi totalità delle moderne architetture peer-to-peer, che di solito sono già implementate come rete overlay su Internet, esiste una sottorete centrale che in genere è costituita dai migliori computer della rete più grande, e che è responsabile dell'organizzazione degli altri computer e della funzionalità di ricerca.
Con la funzione di ricerca (lookup), i Peer della rete possono identificare gli altri peer che sono responsabili di uno specifico ID oggetto. In questo caso, la responsabilità di ogni singolo oggetto è assegnata in modo permanente ad almeno un peer, motivo per cui si parla di overlay strutturato. Con l'operazione di ricerca, i peer possono cercare nella rete gli oggetti che soddisfano determinati criteri (ad esempio, il nome di un file o di un amico). Qualora, invece, non vi sia una struttura di assegnazione degli oggetti ai nodi nel sistema P2P, si parla di “overlay non strutturato”. Non appena i peer che detengono gli oggetti ricercati sono stati identificati nel sistema P2P, il file viene trasferito direttamente da questi ultimi (nelle reti di file-sharing), cioè da peer a peer. Esistono diverse strategie di distribuzione che suddividono il file da scaricare in più parti che sono ricomposte nel nodo finale richiedente e che stabiliscono quali parti del file devono essere scaricate da quale peer, ad esempio BitTorrent.
L'opposto del modello peer-to-peer è il modello client-server. Esso prevede che un server offra un servizio a un client utilizzatore. Nelle reti peer-to-peer, questa distribuzione dei ruoli viene annullata. Ogni partecipante è un peer perché può sia utilizzare un servizio che offrirlo a sua volta.

## Descrizione
### Caratteristiche generali

Le caratteristiche tipiche, ma non necessariamente, dei sistemi peer-to-peer sono:
* i peer presentano un elevato grado di eterogeneità in termini di larghezza di banda, potenza di calcolo, tempo di connessione online, latenza, ecc.
* la disponibilità e la qualità della connessione dei peer non possono essere garantite;
* i peer offrono servizi e risorse e utilizzano i servizi di altri peer (modello client-server);
* i servizi e le risorse possono essere scambiati tra tutti i peer partecipanti;
* i peer formano una rete overlay e quindi forniscono ulteriori funzioni di ricerca;
* i peer hanno una notevole autonomia (sulla fornitura di risorse);
* il sistema P2P si auto-organizza;
Tutti gli altri sistemi rimangono costantemente intatti e non scalano.

### Funzionamento

Al giorno d'oggi esistono tre principali tipi di architetture P2P:
* Il P2P Puro = non ha server centrale e tutti i Peer hanno lo stesso ruolo. Ogni nodo si occupa di individuare i Peer, le risorse e la condivisione di queste.
* Il P2P con Discovery Server = possiede un server centrale chiamato, appunto, Discovery, il quale utente (ovvero il Peer che in questo caso funge da client) comunica la propria esistenza al momento dell'avvio e riceve in risposta una lista con gli altri nomi della rete. Con essa l'utente può interrogare qualunque partecipante per conoscerne i contenuti. Quindi, quando l'utente necessita di un contenuto, prima contatta il server individualmente, poi inoltra la richiesta.
* Il P2P con Discovery e Lookup Server = in questa architettura l'utente non solo si registra presso il Discovery Server, ma spedisce anche una lista dei propri contenuti ad intervalli regolari. Così, quando la richiesta successiva viene mandata, il server fornisce una lista dei partecipanti alla rete insieme ai relativi contenuti, tagliando richieste infruttuose e ottimizzando i tempi.

#### Come fanno i nodi a vedersi?

Per quanto riguarda un'architettura di tipo P2P Puro, non essendoci un server centrale in grado di far connettere tra di loro i diversi nodi, viene solitamente integrata una Overlay network virtuale (ovvero una "rete sovrapposta" virtuale), con la quale i nodi formano una sottorete rispetto alla rete fisica principale. L'Overlay è utilizzata principalmente per indicizzare e mappare i nodi, in modo da conoscere la topologia della rete.
A seconda di come i nodi sono collegati tra loro e dalla loro distribuzione, è possibile dividere le reti P2P in "strutturate" e "non 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. Vengono sfruttate varie tecniche per raggiungere questo scopo: DHT (Tabella di hash distribuita); DOLR (Decentralized object location and routing), che consente di pubblicare generiche risorse; Multicast, che mette a disposizione canali per scambiarsi le informazioni. Comunque, per far sì che il flusso del traffico non incontri ostacoli di sorta, è necessario che ogni nodo conservi un elenco dei nodi "vicini", rispettando criteri molto precisi. 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.
Invece, 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.

### JXTA

JXTA (abbreviazione di "juxstapose") fu una iniziativa di Sun Microsystems. Essa si pone come obiettivo quello di fornire una piattaforma di supporto allo sviluppo di applicazioni Peer-to-Peer, progettata per essere assolutamente indipendente dalla piattaforma. JXTA è un insieme di protocolli, indipendenti da ogni linguaggio di programmazione, che permettono ad ogni dispositivo su una rete (PC, PDA, Server) di comunicare e di collaborare alla pari. Esistono implementazioni di JXTA disponibili per quasi tutti gli ambienti di sviluppo (Java, C, C++, Perl, ecc.).

#### Caratteristiche di JXTA

* Interoperabilità: La tecnologia JXTA è stata progettata per permettere ai peer di scoprire dei servizi, di scoprire altri peer e di comunicare con loro.
* Indipendenza dalla Piattaforma: La tecnologia JXTA è stata progettata per essere indipendente da ogni linguaggio di programmazione o protocollo di trasporto.
I protocolli JXTA standardizzano il modo in cui i Peers:
* Scoprono altri Peers.
* Si organizzano in peer groups.
* Annunciano e scoprono servizi di rete.
* Comunicano tra di loro.
* Controllano ogni altro.
Architettura JXTA:
* Platform Layer: questo livello incapsula le primitive minime che sono necessarie ad una rete P2P.
* Services Layer: servizi di rete come motori di ricerca, file sharing ecc.
* Application Layer: applicazioni vere e proprie come instant messaging, sistemi di e-mail P2P ecc.
* Peer: un peer è ogni dispositivo di rete che implementa uno o più protocolli JXTA. Ogni peer opera in maniera indipendente dagli altri ed è univocamente identificato da un peerID.
* PeerGroups: un peergroup è un insieme di peer che hanno degli interessi comuni. I peers si auto-organizzano in peer-groups. Ogni peer-groups è univocamente identificato da un peer-groupsID.
* Uso di XML per descrivere le risorse di rete tramite gli Advertisements.
* Uso delle Pipe per la comunicazione fra peer scavalcando così il DNS.
* Uno schema uniforme di indirizzamento tramite i peer IDs.
JXTA definisce inoltre una serie di Peer group service:
* Discovery Service: è usato per la scoperta di risorse (peer, peergroup, pipe, ecc.).
* Membership Service: è usato per accettare o respingere una nuova applicazione per un peer group.
* Access Service: è utilizzato per convalidare le richieste fatte da un peer ad un altro peer.

### Vantaggi e svantaggi

Vantaggi e svantaggi sono relativi al tipo di ambiente in cui si decide di installare questo tipo di rete, ma sicuramente si deve tenere presente che:
* Non si deve acquistare un server con potenzialità elevate e quindi non se ne deve sostenere il costo, ma ogni computer deve avere i requisiti per sostenere l'utente in locale e in rete, ma anche gli altri utenti che desiderano accedere alle risorse di questo in remoto;
* Ogni utente condivide localmente le proprie risorse ed è amministratore del proprio client-server. Questo da un lato può essere positivo per una questione di "indipendenza", ma dall'altro richiede delle competenze ad ogni utente, soprattutto per quel che concerne la protezione;
* La velocità media di trasmissione dei dati è molto più elevata di una classica rete con sistema Server / Client, dal momento che l'informazione richiesta da un Client può essere reperita da numerosi Client connessi in modo paritario (ossia "peer"), anziché da un unico server (questo tipo di condivisione diventa tanto più efficace tanti più sono i Client connessi, in antitesi con la rete tradizionale Server/Client, dove un elevato numero di Client connessi riduce la velocità di trasmissione dati per utente);
* La sicurezza degli accessi ai client viene gestita localmente su ogni macchina e non centralizzata, questo significa che una rete basata su utenti deve avere lo stesso archivio reimpostato in ogni client.
* 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.

### Applicazioni

Il termine può essere tecnicamente applicato a qualsiasi tipo di tecnologia di rete e di applicazioni che utilizzano questo modello, come per esempio il protocollo Nntp utilizzato per il trasferimento delle notizie Usenet, ARPANET, applets java, live chat decentralizzate o le BBS di Fido Net. Il termine frequentemente viene riferito alle reti di file sharing (condivisione file, per questo definita Peer to peer filesharing o P2P-Filesharing) come Gnutella, FastTrack, e l'ormai defunto Napster che forniscono, o per quanto riguarda Napster forniva, il libero scambio (e qualche volta anonimo) di file tra i computer connessi a Internet.
Alcune reti e canali, come per esempio Napster, OpenNap o IRC usano il modello client-server per alcuni compiti (per esempio la ricerca) e il modello peer-to-peer per tutti gli altri. Proprio questa doppia presenza di modelli, fa sì che tali reti siano definite "ibride". Reti come Gnutella, Freenet o quella di eMule, vengono definite come il vero modello di rete peer-to-peer in quanto utilizzano una struttura peer-to-peer per tutti i tipi di transazione, e per questo motivo vengono definite "pure".
Quando il termine peer-to-peer venne utilizzato per descrivere la rete Napster, implicava che la natura a file condivisi del protocollo fosse la cosa più importante, ma in realtà la grande conquista di Napster fu quella di mettere tutti i computer collegati sullo stesso piano. Il protocollo "peer" era il modo giusto per realizzarlo. Napster è basato su un server centrale (P2P con Discovery Server) che tiene conto di tutti i file a disposizione e permette ai client di effettuare ricerche all'interno di esso.

### Possibilità future

In futuro, le reti peer-to-peer potranno essere usate per diffondere elevati flussi di dati generati in tempo reale, come programmi televisivi o film. Questi programmi, chiamati P2P TV, si basano sull'utilizzo della banda di trasmissione di cui dispongono i singoli utenti e la banda viene utilizzata per trasmettere agli altri fruitori il flusso dati. Questa tipologia di programmi in linea di principio non richiede server dotati di elevate prestazioni, dato che il server fornisce i flussi video a un numero molto limitato di utenti, che a loro volta li ridistribuiscono ad altri utenti.
Questo metodo di diffusione permette in teoria la trasmissione in tempo reale di contenuti video, ma richiede che i singoli utenti siano dotati di connessioni ad elevata banda sia in ricezione che in trasmissione, altrimenti si arriverebbe rapidamente a una saturazione della banda fornita dal server. Questo limita la diffusione di questa tecnologia in Italia, dove sono molto diffuse linee asimmetriche (ADSL) che forniscono una banda elevata in ricezione, ma scarsa in trasmissione. Programmi che diffondono in tempo reale contenuti video sono diventati discretamente popolari nel 2006 durante i campionati mondiali di calcio svoltisi in Germania. Avendo la RAI acquistato solo alcune partite del campionato, molte persone utilizzavano programmi che, appoggiandosi a server in paesi esteri (spesso cinesi), permettevano di visionare le partite con una qualità video accettabile.
È da notare che sebbene in questi contesti spesso si parli di server, la tecnologia rimane comunque una tecnologia peer-to-peer, dato che il server serve da indice, sincronizza i vari utilizzatori che condividono la banda e fornisce il flusso di dati iniziale che poi gli utenti condividono. Quindi sebbene tecnicamente sia un server in pratica, dopo aver fornito il flusso dati iniziale ed aver messo in comunicazione i vari utenti, il server si disinteressa della comunicazione che diventa totalmente peer-to-peer.
Utilizzando questa tecnologia grandi società stanno sperimentando la possibilità di fornire contenuti a pagamento tramite tecnologie peer-to-peer. Questo scelta è motivata dal fatto che la tecnologia peer-to-peer non richiede server di grandi dimensioni per gestire molti utenti, dato che se la rete è ben bilanciata si autosostiene e quindi è indipendente dal numero di utenti. Vanno ancora risolti però problemi legati alla diffusione di materiali protetti dai diritti d'autore, e vi sono quindi, oltre agli inevitabili problemi di carattere tecnico, problemi di carattere legale e di affidabilità. Prima di lanciare servizi a livello nazionale vanno anche effettuate delle fasi di test per individuare eventuali anomalie o difetti; la diffusione su vasta scala di questa tipologia sembra quindi non essere imminente.
Osiris, così come il suo predecessore KeyForum, utilizza una rete peer-to-peer per dar vita a portali web anonimi e distribuiti. I contenuti vengono scambiati tra i vari utenti tramite una rete P2P basata su kademlia e poi salvati su ogni nodo che partecipa al portale, i dati sono scambiati tramite canali cifrati (AES) e i contenuti sono mantenuti anonimi in quanto non contengono alcun legame tra l'IP dell'autore e il suo account.
Sfruttando queste tecnologie anche se l'autore originario di un contenuto dovesse disconnettersi dalla rete i suoi contenuti sarebbero comunque accessibili senza alcun problema. Un altro vantaggio è dato dall'assenza di un server centrale che consente di abbattere i costi di hosting e di non dover sottostare a policy restrittive dei provider.

### Prospettive dal punto di vista della computer science

Tecnicamente, le applicazioni peer-to-peer (dette P2P) dovrebbero implementare solo protocolli di peering che non riconoscono il concetto di "server e di "client". Tali applicazioni o reti "pure" sono in realtà molto rare. Molte reti e applicazioni che si descrivono come peer-to-peer fanno però affidamento anche ad alcuni elementi "non-peer", come per esempio il DNS. Inoltre, applicazioni globali utilizzano spesso protocolli multipli che fungono simultaneamente da client, da server, e da peer. Reti "peers" completamente decentralizzate sono state utilizzate per molti anni, per esempio USENET (1979) e FidoNet 1984.
La Sun Microsystems aggiunse degli oggetti in linguaggio Java per velocizzare lo sviluppo delle applicazioni P2P a partire dal 1990. In questo modo i programmatori poterono realizzare delle piccole applicazioni chat in real time, prima che divenisse popolare la rete di Instant Messaging. Questi sforzi culminarono con l'attuale progetto JXTA.
I sistemi e le applicazioni Peer-to-peer suscitarono grande attenzione da parte dei ricercatori di computer science. Alcuni importanti progetti di ricerca comprendono il Chord lookup service, ARPANET, IL PAST storage utility, il CoopNet content distribution system e OceanStore (vedi sotto i Collegamenti esterni).
Alcuni sviluppi del Peer-to-peer prevedono la realizzazione di reti telematiche che si affianchino alle reti tradizionali o le sostituiscano. Un esempio di questi progetti è la rete Netsukuku.

## Funzionalità

La maggioranza dei programmi peer-to-peer garantisce un insieme di funzionalità minime, che comprende:
* supporto multipiattaforma, multiserver, multicanale: il programma è compatibile con tutti i sistemi operativi, server e dispositivi hardware (PC, laptop portatili, palmari, cellulari);
* supporto protocollo IPv6;
* download dello stesso file da più reti contemporaneamente;
* offuscamento dell'ID di rete;
* offuscamento del protocollo P2P;
* supporto proxy e Tor;
* supporto crittografia SSL;
* gestione da remoto, sia da PC/notebook che da cellulari e palmari.
Una funzionalità di recente sviluppo è l'assegnazione di una priorità delle fonti, privilegiando quelle con connessione a banda larga (ad esempio, BitTyrant per i file torrent).
Altri usi del P2P si vedono nel campo dei videogiochi, specialmente MMORPG quali World Of Warcraft e similari; al momento il P2P viene utilizzato per distribuire client di gioco o anche espansioni e patch in modo che i file vengano distribuiti più rapidamente e con meno carico sui server principali di distribuzione.

### Protocolli peer-to-peer filesharing e applicazioni

Ecco di seguito le principali reti peer-to-peer con la lista delle applicazioni dedicate, divise per sistema operativo (la colonna Java indica le applicazioni eseguibili su ogni sistema operativo avente una macchina virtuale Java).
| Rete | Windows | Linux | Mac | Java |
| BitTorrent | ABC Anatomic P2P BearShare BitAnarch BitBuddy BitComet BitLord BitSpirit BitTornado BitTorrent.Net BitTorrentExperimental BitTorrent++ BitTorrent Ufficiale BT Queue Burst! Deluge Exeem Filepipe Flash! Torrent FrostWire G3 Torrent Lphant Nova Torrent MLDonkey PTC qBittorrent Shareaza SimpleBT Torrentflux TorrentStorm TorrentTopia TrustyFiles TurboBT Turbo Torrent μTorrent XBT Client | ABC Anatomic P2P BitTorrent++ BitTornado BitTorrent Ufficiale BT Queue CTorrent Deluge Flash! Torrent KTorrent MLDonkey qBittorrent Torrentflux Transmission | Acquisition Anatomic P2P BitTorrent++ BT Queue BitTorrent Ufficiale Deluge FrostWire MLDonkey qBittorrent iSwipe Tomato Torrent Transmission μTorrent | Vuze BT Queue Effusion JTorrent Snark (programma) |
| Direct Connect | NeoModus Direct Connect DC++ BCDC++ CZDC++ DC Pro Koala DC++ IDC++ Jubster MP3 Finder ODC++ PeerWeb DC++ RevConnect StrongDC++ Valknut ZDC++ Zpoc | LDCC Valknut linuxdcpp dc＃ | NeoModus Direct Connect ShakesPeer Valknut | |
| eDonkey | aMule eDonkey2000 eMule Epicea Hydranode Jubster MP3 Finder Lphant MLDonkey Morpheus Shareaza XoloX | aMule eDonkey2000 xMule Hydranode Lmule MLDonkey | aMule eDonkey2000 Hydranode iSwipe MLDonkey MLmac | |
| FastTrack | Diet Kazaa Kazaa Kazaa Ghost Kazaa Lite Tools K++ Kazaa Lite Resurrection giFT Grokster iMesh iMesh Light Jubster MP3 Finder Mammoth MLDonkey TrustyFiles XoloX | Apollon MLDonkey | iSwipe MLDonkey Poisoned XFactor | |
| GNUnet (protocollo) | GNUnet | GNUnet | GNUnet | GNUnet |
| Gnutella | AlienIdol BearShare BearShare Lite Cabos Deepnet Explorer FreeWire FrostWire Gluz Gnucleus Jubster MP3 Finder KCeasy LimeWire MLDonkey MoodAmp Morpheus MyNapster NeoNapster Nova P2P P2PStorm Client Phex Shareaza TrustyFiles XNap XoloX Zultrax | Apollon FrostWire Gnewtellium LimeWire MLDonkey XNap gtk-gnutella | Acquisition Cabos FrostWire iSwipe LimeWire MLDonkey Poisoned XFactor XNap | LimeWire |
| Gnutella2 | Adagio Gnucleus MLDonkey Morpheus Shareaza | MLDonkey | MLDonkey | LimeWire |
| Kademlia | aMule Azureus eMule MLDonkey | aMule Azureus MLDonkey | aMule Azureus MLDonkey | |
| MANOLITO | Blubster Piolet RockItNet | | | |
| Napster | FileNavigator Napigator Networksunshine OpenNap Win-Lopster WinMX XNap | Lopster | | |
| WPNP | WinMX | | | |
| RShare | StealthNet | StealthNet | StealthNet | |
Altre reti e/o applicazioni peer-to-peer:
* XdccMule
* Freenet
* Akamai
* Alpine
* Anomos
* ANts P2P
* Ares Galaxy
* Audiogalaxy
* The Bridge
* Carracho
* Chord
* The Circle
* EarthStation 5
* Evernet
* Filenger
* Filetopia
* GNUnet
* Grapevine
* Groove
* Hotwire
* IRC @find e XDCC.
* JXTA
* MojoNation Mnet
* MUTE
* OpenFT
* Osiris
* Overnet
* Peer2Mail
* Scribe
* SongSpy
* Soulseek
* SquidCam
* Swarmcast
* Waste
* Winny
Una generazione più recente di sistemi peer-to-peer è stata definita "metacomputing" e viene classificata come "middleware" e sono:
* Legion
* Globus
* Condor
Vedi anche: Servent, Compulsory licensing

### Controllo da remoto

Diversi programmi peer-to-peer permettono il controllo da remoto. L'utente può quindi regolare da un altro computer le opzioni di connessione, la banda, il download e la condivisione di file. In eMule questa opzione si chiama WebServer e si può configurare nel menù "opzioni".
Per poter gestire da remoto un computer connesso ad internet, però, bisogna conoscerne l'Indirizzo IP pubblico. Se esso è di tipo statico, allora non cambia nel tempo, mentre se è di tipo dinamico (come la maggior parte delle connessioni ADSL per privati), allora è necessario conoscerne ogni variazione e a tale scopo si può usufruire di un servizio DNS dinamico.
Per conoscere il proprio indirizzo IP pubblico si può semplicemente cercare un sito web che lo mostri, ad esempio IndirizzoIP.com, oppure è possibile fare una richiesta UPnP al proprio router. Ad esempio su Debian e derivate, è sufficiente installare il pacchetto miniupnpc e lanciare il comando:

## Problematiche di sicurezza e privacy

Oltre agli attacchi che una rete aperta può subire, anche i computer che ad essa accedono possono essere soggetti a problematiche di security e privacy. Per la stessa filosofia del P2P quasi tutti i programmi di file-sharing richiedono per la sopravvivenza del sistema di avere sul proprio computer dei file condivisi e che quindi possano essere a disposizione degli utenti che ne fanno richiesta. Questo implica da un lato la condivisione di un'area del disco sulla quale mettere i file a disposizione, dall'altro consentire il libero accesso ad alcune porte del computer. Già di per sé questo porta ad avere un aumento dei problemi di security, in quanto chiunque ha la possibilità di entrare su quelle porte. Se poi si considera l'enorme incremento degli utenti e l'utilizzo di linee a banda larga, ormai alla portata di tutti, questi problemi, che una volta potevano essere trascurabili, diventano prioritari. Ciò rende fondamentale l'utilizzo di sistemi di difesa come antivirus, firewall, programmi di pulizia dei file di registro e di rimozione degli agenti infettivi: virus, spyware, trojan o malware.
* Infatti i cracker, sfruttano queste tipo di reti per condividere file infettati da malware e spyware.
* Più recenti sono i casi di musiche MP3 infettate, una volta aperte costringono il programma per ascoltare musiche audio (es Media Player, ma anche Real Player) a scaricare un "aggiornamento" che contiene invece dei virus.
Il migliore aiuto che si può dare a questi sistemi di difesa è costituito dalla propria cultura informatica che consente di riconoscere ed evitare l'introduzione nel proprio computer di questi agenti, invece di scaricarli incautamente da altri utenti del P2P. A volte il diritto alla riservatezza può nascondere l'azione di chi, non avendo interesse allo sviluppo del P2P o ritenendosi addirittura danneggiato da esso, oppure per semplice vandalismo, mette intenzionalmente in condivisione file infetti, corrotti o non corrispondenti a quanto dichiarato.

### Difesa della privacy

È fondamentale poi, a salvaguardia della privacy, la propria attenzione nell'evitare di condividere porzioni di disco nelle quali incautamente sono stati depositati dati personali o aziendali (nel caso di chi utilizza il computer dell'ufficio), riferimenti a conti correnti o a password. Una frase diventata famosa riassume bene il concetto: “inutile criminalizzare sistemi di file-sharing, nati proprio come strumento collaborativo, laddove è assente una politica aziendale improntata alla sicurezza e alla conoscenza” (pubblicato sul Punto Informatico del 29 ottobre 2004).
Fra i modi per tutelare la privacy, si possono ricordare l'adozione di:
* un proxy per la connessione del client che mascheri il vero IP dell'utente,
* una rete di anonimato, come quella offerta dal programma Tor (in cui il proxy è comunque incluso),
* servizi che creano una Virtual Private Network,
* installare software come I2Phex o PeerBlock,
* crittografia e offuscamento di protocollo,
* una block-list degli indirizzi IP ritenuti malevoli da inserire nel client stesso (qualora esso supporti tale funzionalità),
* caricare liste di server (file di testo con estensione.met) da siti che certificano i server e i contenuti.

## Controversie legali

I tipi di file maggiormente condivisi in questa rete sono gli MP3, o file musicali, e i DivX i file contenenti i film. Questo ha portato molti, soprattutto le compagnie discografiche e i media, ad affermare che queste reti sarebbero potute diventare una minaccia contro i loro interessi e il loro modello industriale. Di conseguenza il peer-to-peer divenne il bersaglio legale delle organizzazioni che riuniscono queste aziende, come la RIAA e la MPAA. Per esempio il servizio di Napster venne chiuso da una causa intentata dalla RIAA. Sia la RIAA che la MPAA spesero ingenti quantità di denaro al fine di convincere i legislatori ad approvare restrizioni legali. La manifestazione più estrema di questi sforzi risale al gennaio 2003, quando venne introdotto, negli U.S.A., un disegno di legge dal senatore della California Berman nel quale si garantivano, al detentore del copyright, i diritti legali per fermare i computer che distribuivano materiale tutelato dai diritti d'autore. Il disegno di legge venne respinto da una commissione governativa Statunitense nel 2002, ma Berman lo ripropose nella sessione del 2003. Risale, invece, al 2004 la "Legge Urbani" nella quale viene sancita la possibilità di incorrere in sanzioni penali anche per chi fa esclusivamente uso personale di file protetti.
Però nel 2007 la III sezione penale della Cassazione con la sentenza numero 149/2007, ha accolto il ricorso presentato da due studenti torinesi, condannati in appello ad una pena detentiva, sostituita da un'ammenda, per avere «duplicato abusivamente e distribuito» programmi illecitamente duplicati, giochi per PlayStation, video CD e film, «immagazzinandoli» su un server FTP.
I reati contestati ai due ricorrenti erano quelli previsti dagli articoli 171 bis e 171 ter della legge sul diritto d'autore, la numero 633/41, sottoposta a tutta una serie di modifiche in anni recenti: nell'ultima formulazione, il primo prevede «la punibilità da sei mesi a tre anni, di chiunque abusivamente duplica, per trarne profitto, programmi per elaboratore o ai medesimi fini importa, distribuisce, vende, detiene a scopo commerciale o imprenditoriale o concede in locazione programmi contenuti in supporti non contrassegnati dalla Siae»; il secondo punisce con la reclusione da uno a quattro anni chi «riproduce, duplica, trasmette o diffonde abusivamente, vende o pone altrimenti in commercio, cede a qualsiasi titolo o importa abusivamente oltre cinquanta copie o esemplari di opere tutelate dal diritto d'autore e da diritti connessi».
Ebbene, per la Cassazione in primo luogo è da escludere per i due studenti la configurabilità del reato di duplicazione abusiva, attribuibile non a chi in origine aveva effettuato il download, ma a chi semmai si era salvato il programma dal server per poi farne delle copie. Ma soprattutto «deve essere escluso, nel caso in esame, che la condotta degli autori della violazione sia stata determinata da fini di lucro, emergendo dall'accertamento di merito che gli imputati non avevano tratto alcun vantaggio economico dalla predisposizione del server Ftp». Per «fine di lucro», infatti, «deve intendersi un fine di guadagno economicamente apprezzabile o di incremento patrimoniale da parte dell'autore del fatto, che non può identificarsi con un qualsiasi vantaggio di genere; né l'incremento patrimoniale può identificarsi con il mero risparmio di spesa derivante dall'uso di copie non autorizzate di programmi o altre opere dell'ingegno, al di fuori dello svolgimento di un'attività economica da parte dell'autore del fatto, anche se di diversa natura, che connoti l'abuso».
Da quel momento in poi le reti peer-to-peer si espansero sempre di più, si adattarono velocemente alla situazione e divennero tecnologicamente più difficili da smantellare, spostando l'obiettivo delle major sugli utenti. Qualcuno ha cominciato ad affermare che queste reti potevano diventare un modo per consentire a malintenzionati di nascondere la propria identità. Altri dicevano che per essere completamente immuni dalle major fosse necessario creare una rete wireless ad hoc in cui ogni unità o computer fosse connessa in modo equivalente (peer-to-peer sense) a quella vicina.
È bene precisare che in Italia chiunque effettua il download di un'opera protetta dal diritto d'autore e la mette in condivisione commette un illecito penale (è l'art. 171, lett. a-bis, lda). La norma è chiarissima: è punito chiunque lo fa "senza averne diritto, a qualsiasi scopo e in qualsiasi forma". La pena è una multa da 51 a 2.065 euro, ma è possibile evitare il processo penale pagando la metà del massimo previsto (quindi circa mille euro) e le spese del procedimento. I programmi di P2P più diffusi mettono automaticamente in condivisione un file mentre questo viene scaricato, per cui se viene effettuato il download di materiale protetto da diritto d'autore mediante uno di essi si concretizza la fattispecie penale.
Inoltre, la violazione del suddetto articolo comporta altresì l'irrogazione di una sanzione amministrativa pari al doppio del prezzo di mercato dell'opera o del supporto oggetto della violazione (art. 174-bis lda), ma detta cifra non può essere mai inferiore a 103 euro.

### Provider italiani e P2P

Nel 2007, in un'intervista ad un giornale online, Filippo Galbiati, all'epoca business manager voce e ADSL di Tele2 Italia, affermò chiaramente che il provider applicava metodi per la limitazione delle connessioni tramite protocolli di rete peer-to-peer con lo scopo dichiarato di ottimizzare la gestione della banda a disposizione della clientela.
Nel corso dei mesi successivi, si evinse da altri interventi che anche altri provider impiegavano o avevano intenzione di impiegare nel futuro limitazioni di traffico dati tramite tali protocolli a garanzia della qualità dei servizi (QoS) offerti alla clientela.