Inleiding
In Computer Networking, P2P is een file sharing technologie, die de gebruikers toegang geeft tot voornamelijk multimedia bestanden zoals video’s, muziek, e-boeken, spelletjes enz. De individuele gebruikers in dit netwerk worden peers genoemd. De peers vragen om bestanden van andere peers door TCP of UDP verbindingen tot stand te brengen.
Hoe P2P werkt(Overzicht)
Een peer-to-peer netwerk stelt computer hardware en software in staat om te communiceren zonder dat er een server nodig is. In tegenstelling tot een client-server architectuur, is er in een P2P architectuur geen centrale server voor het verwerken van verzoeken. De peers communiceren direct met elkaar zonder de noodzaak van een centrale server.
Nu, wanneer één peer een verzoek doet, is het mogelijk dat meerdere peers een kopie hebben van dat gevraagde object. Het probleem is nu hoe je de IP-adressen van al die peers krijgt. Dit wordt bepaald door de onderliggende architectuur die door de P2P systemen wordt ondersteund. Door middel van een van deze methoden kan de client peers te weten komen welke peers het gevraagde object/bestand hebben en de bestandsoverdracht vindt direct tussen deze peers plaats.
Er bestaan drie van dergelijke architecturen:
- Centralized Directory
- Query Flooding
- Exploiting Heterogeneity
1. Gecentraliseerde directory
- Het is enigszins vergelijkbaar met de client-server architectuur in de zin dat het een enorme centrale server onderhoudt om directory service te bieden.
- Alle peers informeren deze centrale server over hun IP adres en de bestanden die ze beschikbaar stellen om te delen.
- De server ondervraagt de peers met regelmatige tussenpozen om er zeker van te zijn dat de peers nog steeds verbonden zijn of niet.
- Dus eigenlijk onderhoudt deze server een enorme database met betrekking tot welk bestand aanwezig is op welk IP adres.
Werking
- Nu stuurt een aanvragende peer zijn vraag naar de server.
- Omdat de server alle informatie van zijn peers heeft, stuurt hij de IP-adressen van alle peers die het gevraagde bestand hebben, terug naar de peer.
- Nu vindt de bestandsoverdracht plaats tussen deze twee peers.
Het eerste systeem dat van deze methode gebruik maakte was Napster, voor de distributie van Mp3.
Het grote probleem met een dergelijke architectuur is dat er één enkel punt van falen is. Als de server crasht, crasht het hele P2P-netwerk. En omdat alle bewerkingen door één server moeten worden gedaan, moet een enorme hoeveelheid databases worden onderhouden en regelmatig worden bijgewerkt.
2. Query Flooding
- In tegenstelling tot de gecentraliseerde aanpak, maakt deze methode gebruik van gedistribueerde systemen.
- In deze methode worden de peers verondersteld verbonden te zijn in een overlay netwerk. Dit betekent dat als er een verbinding/pad van de ene naar de andere peer bestaat, deze deel uitmaakt van dit overlay-netwerk.
- In dit overlay-netwerk worden peers nodes genoemd en de verbinding tussen peers wordt een edge tussen de nodes genoemd, waardoor een grafiekachtige structuur ontstaat.
Werking
- Als een peer om een bestand vraagt, wordt dit verzoek naar alle naburige nodes gestuurd, d.w.z. naar alle nodes die met deze node zijn verbonden. Als deze nodes het benodigde bestand niet hebben, geven ze de aanvraag door aan hun buren, enzovoort. Dit wordt query flooding genoemd.
- Wanneer de peer met het gevraagde bestand is gevonden (aangeduid als query hit), stopt de query flooding en stuurt het de bestandsnaam en bestandsgrootte terug naar de client, en volgt zo het omgekeerde pad.
- Als er meerdere query hits zijn, selecteert de client uit een van deze peers.
Gnutella was het eerste gedecentraliseerde peer-to-peer-netwerk.
Deze methode heeft ook enkele nadelen, zoals dat de query naar alle naburige peers moet worden verzonden tenzij er een match wordt gevonden. Dit verhoogt het verkeer in het netwerk.
3. Heterogeniteit benutten
- Deze P2P-architectuur maakt gebruik van beide hierboven besproken systemen.
- Het lijkt op een gedistribueerd systeem als Gnutella, omdat er geen centrale server is voor het verwerken van zoekopdrachten.
- Maar in tegenstelling tot Gnutella, worden niet alle peers gelijk behandeld. De peers met een hogere bandbreedte en netwerkconnectiviteit hebben een hogere prioriteit en worden de groepsleiders/super nodes genoemd. De rest van de peers wordt toegewezen aan deze super nodes.
- Deze super nodes zijn onderling verbonden en de peers onder deze super nodes informeren hun respectievelijke leiders over hun connectiviteit, IP adres en de bestanden die beschikbaar zijn om te delen.
KaZaA technologie is zo’n voorbeeld dat gebruik maakt van zowel Napster als Gnutella.
Dus vormen de individuele groepsleiders samen met hun kind peers een Napster-achtige structuur. Deze groepsleiders verbinden zich vervolgens onderling om op een Gnutella-achtige structuur te lijken.
Werking
- Deze structuur kan de zoekopdrachten op twee manieren verwerken.
- De eerste is dat de superknooppunten contact kunnen opnemen met andere superknooppunten en hun databases kunnen samenvoegen met hun eigen database. Zo heeft dit superknooppunt nu informatie over een groot aantal peers.
- Een andere benadering is dat wanneer een query binnenkomt, deze wordt doorgestuurd naar de naburige superknooppunten totdat een match is gevonden, net als in Gnutella. Dus query flooding bestaat, maar met beperkte reikwijdte omdat elk superknooppunt veel kind-peers heeft. Daarom maakt een dergelijk systeem gebruik van de heterogeniteit van de peers door sommigen aan te wijzen als groepsleiders/super nodes en anderen als hun kind peers.
Referenties- Computer Networking:A Top down Approach By James F. Kurose
Dit artikel is geschreven door Arushi Dhamija. Als je GeeksforGeeks leuk vindt en een bijdrage wilt leveren, kun je ook een artikel schrijven via contribute.geeksforgeeks.org of mail je artikel naar [email protected]. Zie je artikel verschijnen op de GeeksforGeeks hoofdpagina en help andere Geeks.