Introduzione
Nel Computer Networking, P2P è una tecnologia di condivisione di file, che permette agli utenti di accedere principalmente ai file multimediali come video, musica, e-book, giochi ecc. I singoli utenti in questa rete sono chiamati peer. I peer richiedono i file da altri peer stabilendo connessioni TCP o UDP.
Come funziona il P2P (Panoramica)
Una rete peer-to-peer permette all’hardware e al software del computer di comunicare senza la necessità di un server. A differenza dell’architettura client-server, in un’architettura P2P non c’è un server centrale per elaborare le richieste. I peer interagiscono direttamente tra loro senza la necessità di un server centrale.
Ora, quando un peer fa una richiesta, è possibile che più peer abbiano la copia di quell’oggetto richiesto. Ora il problema è come ottenere gli indirizzi IP di tutti questi peer. Questo è deciso dall’architettura sottostante supportata dai sistemi P2P. Per mezzo di uno di questi metodi, il peer client può conoscere tutti i peer che hanno l’oggetto/file richiesto e il trasferimento del file avviene direttamente tra questi due peer.
Esistono tre architetture di questo tipo:
- Centralized Directory
- Query Flooding
- Exploiting Heterogeneity
1. Directory centralizzata
- È in qualche modo simile all’architettura client server nel senso che mantiene un enorme server centrale per fornire il servizio di directory.
- Tutti i peer informano questo server centrale del loro indirizzo IP e dei file che stanno rendendo disponibili per la condivisione.
- Il server interroga i peer a intervalli regolari per assicurarsi se i peer sono ancora connessi o meno.
- Quindi fondamentalmente questo server mantiene un enorme database riguardante quale file è presente a quali indirizzi IP.
Funzionamento
- Ora ogni volta che un peer richiedente arriva, invia la sua richiesta al server.
- Siccome il server ha tutte le informazioni dei suoi peer, così restituisce al peer gli indirizzi IP di tutti i peer che hanno il file richiesto.
- Ora il trasferimento del file avviene tra questi due peer.
Il primo sistema che fece uso di questo metodo fu Napster, allo scopo di distribuire Mp3.
Il problema principale con una tale architettura è che c’è un singolo punto di fallimento. Se il server si blocca, l’intera rete P2P si blocca. Inoltre, dato che tutta l’elaborazione deve essere fatta da un singolo server, un’enorme quantità di database deve essere mantenuta e aggiornata regolarmente.
2. Query Flooding
- A differenza dell’approccio centralizzato, questo metodo fa uso di sistemi distribuiti.
- In questo, si suppone che i peer siano connessi in una rete overlay. Significa che se esiste una connessione/percorso da un peer all’altro, fa parte di questa rete overlay.
- In questa rete overlay, i peer sono chiamati nodi e la connessione tra i peer è chiamata bordo tra i nodi, risultando così in una struttura a grafo.
Funzionamento
- Ora, quando un peer richiede un file, questa richiesta viene inviata a tutti i suoi nodi vicini, cioè a tutti i nodi che sono connessi a questo nodo. Se questi nodi non hanno il file richiesto, passano la richiesta ai loro vicini e così via. Questo è chiamato query flooding.
- Quando viene trovato il peer con il file richiesto (indicato come query hit), la query flooding si ferma e rimanda il nome e la dimensione del file al client, seguendo così il percorso inverso.
- Se ci sono più query hit, il client seleziona da uno di questi peer.
Gnutella è stata la prima rete peer to peer decentralizzata.
Questo metodo ha anche alcuni svantaggi come, la query deve essere inviata a tutti i peer vicini a meno che non venga trovata una corrispondenza. Questo aumenta il traffico nella rete.
3. Sfruttare l’eterogeneità
- Questa architettura P2P fa uso di entrambi i sistemi discussi sopra.
- Sembra un sistema distribuito come Gnutella perché non c’è un server centrale per l’elaborazione delle query.
- Ma a differenza di Gnutella, non tratta tutti i suoi peer allo stesso modo. I peer con maggiore larghezza di banda e connettività di rete hanno una priorità più alta e sono chiamati capigruppo/super nodi. Il resto dei peer sono assegnati a questi super nodi.
- Questi super nodi sono interconnessi e i peer sotto questi super nodi informano i loro rispettivi leader sulla loro connettività, l’indirizzo IP e i file disponibili per la condivisione.
La tecnologia KaZaA è un esempio che fa uso sia di Napster che di Gnutella.
Quindi, i singoli leader di gruppo insieme ai loro peer figli formano una struttura simile a Napster. Questi capigruppo poi si interconnettono tra loro per assomigliare ad una struttura simile a Gnutella.
Funzionamento
- Questa struttura può elaborare le richieste in due modi.
- Il primo è che i super nodi potrebbero contattare altri super nodi e fondere i loro database con il proprio database. Così, questo super nodo ora ha le informazioni di un gran numero di pari.
- Un altro approccio è che quando arriva una query, viene inoltrata ai super nodi vicini fino a quando viene trovata una corrispondenza, proprio come in Gnutella. Quindi il flooding delle richieste esiste, ma con una portata limitata, poiché ogni super nodo ha molti peer figli. Quindi, un tale sistema sfrutta l’eterogeneità dei peer designando alcuni di loro come capigruppo/super nodi e altri come loro peer figli.
Riferimenti- Computer Networking:A Top down Approach Di James F. Kurose
Questo articolo è contribuito da Arushi Dhamija. Se ti piace GeeksforGeeks e vuoi contribuire, puoi anche scrivere un articolo usando contribute.geeksforgeeks.org o inviare il tuo articolo a [email protected]. Vedi il tuo articolo apparire sulla pagina principale di GeeksforGeeks e aiuta altri Geek.