Alunno: Ciolini Andrea Num.mat.: 4186187 Corso: Ing. Informatica La condivisione Peer To Peer (detta anche P2P) è un particolare metodo di distribuzione contenuti: le informazioni vengono trasferite direttamente tra peer (cioè pari) ordinari senza passare attraverso server di terze parti: non troviamo un server sempre attivo al centro dell applicazione, ma coppie arbitrarie di host che comunicano fra di loro. Il termine P2P può essere usato per qualsiasi applicazione e di tecnologia che adotta questo modello di struttura inerente il passaggio di dati. Nell architettura P2P nessuno che vi prende parte deve essere necessariamente sempre attivo. Inoltre un partecipante può cambiare Indirizzo IP quando entra a farne parte. Ci sono 3 principali tipi di P2P: * P2P puro (che ricalca la definizione appena scritta): -I peer si comportano come client e server. -Non c'è un server centrale. -Non c'è un router centrale. * P2P Ibrido: Ha un server centrale che conserva informazioni sui peer e risponde a richieste su quelle informazioni. I Peer sono responsabili di conservare i dati e le informazioni perché il server centrale non memorizza file, devono informare il server dei file che vogliono condividere e lasciare scaricare le risorse condivise ai peer che le richiedono. * P2P Misto: Ha caratteristiche sia del P2P puro che di quello ibrido. Sebbene non venga coinvolto nel trasferimento file alcun server centralizzato di una terza parte, è importante ricordare che la condivisione di file P2P si affida comunque a un paradosso client-server: il
peer che richiede il file è il client, mentre il peer a cui è richiesto il file prende le veci del server; siccome ogni peer può fare richiesta o venire scelto, ognuno di essi deve essere in grado di mandare in esecuzione tanto il lato client quanto il lato server del protocollo di trasferimento file. LOCALIZZAZIONE FILE Un grosso problema del P2P, che ha portato alla nascita di diverse correnti di pensiero (es. Napster e Gnuttella descritti in seguito), è il metodo con il qualche un peer client riesca a determinare e rintracciare quale sono i peer server che hanno il file da esso richiesto. Innanzitutto il peer deve disporre dell IP (e la porta seriale), il che non sarebbe un grossissimo problema se non fosse per il fatto che questi si connetto e disconnettono. Come già detto sono state trovate alcune soluzioni, tutte con punti di forza e punti di debolezza: DIRECTORY CENTRALLIZATA E stato uno degli approcci più diretti alla localizzazione dei file (esempio lampante il mitico Napster). Con questa tecnica i client si avvalgono di un potente server: le applicazioni dei sigoli peer inviano a questo main-server di localizzazione il loro IP e il nome degli oggetti che hanno sul loro disco locale (che naturalmente vogliono rendere disponibili alla condivisione); il server raccoglie tutte queste informazioni in un date-base così da essere a conoscenza di tutto ciò che c è nei peer che utilizzano le applicazioni a cui il server è associato. Il server si deve preoccupare di controllare che i peer siano disconnessi (con vari metodi di controllo): nel caso in cui questi peer (chiudendo l applicazione o spegnendo il computer)si siano disconnessi, il server provvederà a cancellare il loro IP dal data-base. Ogni peer-client attraverso l applicazione potrà interrogare il data-base del server per poter avere la lista degli IP dei peer che condividono il file cercato, così potrà creare un collegamento diretto con il peer (che sarà chiamato a svolgere la funzione di server). Questo sistema anche se molto pratico ha dei difetti che non possono passare inosservati:
C è un unico punto di guasto: cioè se si guasta il server, allora si blocca tutta la rete P2P, poiché i vari peer-client non possono venire in possesso degli IP dei peer-server. Un sistema molto ampio come era Napster deve provvedere contemporaneamente a molte richieste contemporanee, quindi può sussistere un problema di traffico. QUERY FLOOTING Questo sistema è caratterizzato (usato da Gnuttella) dall assenza di un server centrale (e quindi un date-base). Anche in questi casi il numero di peer è molto alto, un singolo peer è collegato solo a un numero relativamente basso di peer, che però a loro volta sono collegati ad altre peer e così via, fino a formare una rete di copertura. Un peer-client invia la richiesta di un determinato file (con allegato il proprio IP) agli indirizzi IP che conosce (peer collegati a lui) ; questi a loro volto controllano se sono in possesso di tale file: -nel caso in qui non abbiano a disposizione l oggetto della richiesta inviano la richiesta ai peer a cui sono collegati. -nel caso in cui abbiano a disposizione il file richiesto mandano un messaggio di ritorno di disponibilità al peer chiamante con il proprio IP; così il peer-client potrà creare un collegamento diretto con il peer-server per scaricare il file desiderato. Questo metodo ha portato però ad un grosso carico di traffico, così è stato creato query flooding a raggio limitato, uguale al query flooding ma con un numero limitato di passaggi di richieste. In questo modo il volume di traffico diminuisce fortemente, ma peggiora di molto la possibilità di trovare il file cercato da parte del peer-client, poiché con questa tecnica non si interpellano tutti i peer ma solo una parte (piccola o grande a discrezione del progettista dell applicazione). SFRUTTAMENTO DI ETEROGENEITA Metodo attraverso cui i peer con banda più larga e maggiore connettività fungono da leader locali per gruppi di peer meno potenti: il suo compito è quello di notificare tutti i file messi in condivisione dai suoi terminali sottoposti. In questo modo si creano tanti piccoli sistemi a directory
centralizzate collegati tra loro solo attraverso i leader(attraverso una copertura di rete con connessioni TCP). CLASSIFICAZIONE PER GENERAZIONI E BREVE STORIA DEL P2P Alcuni descrivono le reti peer-to-peer per il file sharing per generazione. In questa breve sintesi mi riferirò solo alle famose reti p2p per lo scambio file basate su Internet, non a ricerche precedenti ne a sistemi p2p commerciali. Prima generazione Le reti peer-to-peer per il file sharing di prima generazione avevano un elenco di file centralizzato, come Napster. I tribunali negli Stati Uniti stabilirono che chiunque controllava questo elenco di file centralizzato che conteneva opere protette da copyright era responsabile per ogni violazione dei diritti d'autore. Alla fine Napster fu ritenuto responsabile e dovette chiudere. In un modello peer-to-peer centralizzato, un utente invierebbe una richiesta di ricerca al server centralizzato di quello che sta cercando ad esempio una canzone, un video, un film. Il server invia indietro un elenco di quali peer hanno i dati e permette la connessione ed il download. Seconda generazione Dopo che Napster incontrò problemi legali, Justin Frankel della Nullsoft cercò di creare una rete senza un server indice centrale e il risultato fu Gnutella. Sfortunatamente, il modello di Gnutella in cui tutti i nodi sono uguali soffrì gravemente di colli di bottiglia non appena la rete crebbe con i contributi dei rifugiati del defunto Napster. FastTrack risolse il problema rendendo 'alcuni nodi più uguali di altri'. Rendendo alcuni nodi, quelli con maggiori capacità, nodi indice e facendo in
modo che i nodi con minori capacità dipendessero dai primi, si creò una rete che aveva grandi capacità di scalabilità. Gnutella adottò velocemente questo modello, e la maggior parte delle attuali reti p2p lo seguono poiché permette di realizzare grandi reti decentralizzate. Nella seconda generazioni di programmi sono comprese le Tabelle Hash distribuite (DHT), che risolvono il problema della scalabilità eleggendo vari nodi ad indicizzare alcuni hash (che vengono usati per identificare i file), permettendo una ricerca veloce ed efficiente di ogni instanza di un file sulla rete. Terza generazione Reti peer-to-peer di terza generazione sono quelle che hanno integrato caratteristiche di anonimato. Esempio di reti anonime sono Freenet, I2P, GNUnet, Entropy, MUTE, ANTs P2P etc... Le reti di terza generazione tuttavia non hanno raggiunto una diffusione di massa per lo scambio file a causa dell'alto overhead che le caratteristiche di anonimato richiedono, presentando prestazioni notevolmente più scarse rispetto ai programmi p2p tradizionali ( di seconda generazione). PERICOLI PER LE RETI PEER TO PEER Molte reti P2P sono sotto costante attacco da varie persone per diversi motivi: Attacchi di avvelenamento: distribuzione di file contenuto diverso dalla descrizione. * Attacchi di diserzione: utenti che usano la rete in modo eccessivo senza contribuire ad essa con alcuna risorsa. * Malware nel software P2P: il software P2P può contenere spyware. * Filtri : operatori che possono impedire il traffico fra due peer con l uso di filtri. * Attacchi di identità : identificare gli utenti di rete e minacciarli. * Spam: invio di informazioni indesiderate o inutili sulla rete.