het internet

Soorten P2P (Peer To Peer)-netwerken en hun verschillen

De huidige samenleving heeft behoefte aan overvloedige informatie-uitwisseling voor de ontwikkeling van de meeste activiteiten of banen. Bedrijven, vooral multinationals, verdelen bijvoorbeeld hun projecten over de vele hoofdkantoren die ze over de hele wereld hebben; Dit betekent dat er communicatie en informatie-uitwisseling tussen de verschillende plaatsen moet zijn voor een goede ontwikkeling van hun projecten. Een ander voorbeeld zijn universiteiten, die een systeem nodig hebben om informatie uit te wisselen met studenten, ze te voorzien van cijfers, examens, enz.

Daarom kwam rond 1996 de eerste P2P-applicatie uit de handen van Adam Hinkley, Hotline Connect, die bedoeld was als hulpmiddel voor universiteiten en bedrijven voor het verspreiden van bestanden. Deze applicatie gebruikte een gedecentraliseerde structuur en raakte al snel verouderd (omdat het afhankelijk was van een enkele server); en aangezien het is ontworpen voor Mac OS, heeft het niet veel interesse gewekt bij gebruikers.

Met Napster, in 1999, wekte het gebruik van P2P-netwerken de nieuwsgierigheid van gebruikers. Dit muziekuitwisselingssysteem maakte gebruik van een hybride P2P-netwerkmodel, omdat het naast peer-to-peer-communicatie een centrale server bevatte om deze paren te organiseren. Hun grootste probleem was dat de server breekpunten introduceerde en een grote kans op knelpunten.

Dit is de reden waarom er nieuwe topologieën verschijnen, zoals gedecentraliseerd, waarvan het belangrijkste kenmerk is dat ze geen centrale server nodig hebben om het netwerk te organiseren; een voorbeeld van deze topologie is Gnutella. Een ander type zijn gestructureerde P2P-netwerken, die zich richten op het organiseren van inhoud in plaats van het organiseren van gebruikers; als voorbeeld onderstrepen we JXTA. We hebben ook netwerken met Distributed Hash Table (DHT), zoals Chord.

Vervolgens zullen we de hierboven genoemde typen P2P-netwerken ontwikkelen.

Eerste P2P-systemen: een hybride aanpak

De eerste P2P-systemen, zoals Napster of SETI @ home, waren de eersten die de zwaarste taken van servers naar de computers van gebruikers verplaatsten. Met behulp van internet, dat het mogelijk maakt om alle bronnen van gebruikers te combineren, zijn ze erin geslaagd om deze systemen een grotere opslagcapaciteit en grotere rekenkracht te laten bereiken dan servers. Maar het probleem was dat zonder een infrastructuur om te bemiddelen tussen de peer-entiteiten, het systeem een ​​chaos zou worden, omdat elke peer uiteindelijk onafhankelijk zou handelen.

De oplossing voor het probleem van de wanorde is het introduceren van een centrale server, die verantwoordelijk is voor de coördinatie van de paren (coördinatie tussen paren kan sterk verschillen van systeem tot systeem). Dit soort systemen worden hybride systemen genoemd omdat ze het client-servermodel combineren met het model van P2P-netwerken. Veel mensen denken dat deze aanpak niet moet worden omschreven als een echt P2P-systeem, omdat het een gecentraliseerde component (server) introduceert, maar desondanks is en blijft deze aanpak zeer succesvol.

In dit soort systemen, wanneer een entiteit verbinding maakt met het netwerk (met behulp van een P2P-toepassing), wordt deze geregistreerd op de server, zodat de server te allen tijde het aantal geregistreerde paren op deze server controleert, waardoor ze diensten kunnen aanbieden. aan andere leeftijdsgenoten. Normaal gesproken wordt peer-to-peer-communicatie point-to-point uitgevoerd, omdat de peers geen groot netwerk vormen.

Het grootste probleem met dit ontwerp is dat het een systeemstoppunt introduceert en een grote kans op wat een "bottleneck" wordt genoemd (bij gegevensoverdracht, wanneer de verwerkingscapaciteit van een apparaat groter is dan de capaciteit waarop het apparaat is aangesloten) . Als het netwerk groeit, neemt ook de serverbelasting toe en als het systeem het netwerk niet kan schalen, stort het netwerk in. En als de server uitvalt, kan het netwerk zichzelf niet reorganiseren.

Maar ondanks alles zijn er nog steeds veel systemen die dit model gebruiken. Deze aanpak is handig voor systemen die geen inconsistenties kunnen verdragen en die geen grote hoeveelheden resources nodig hebben voor coördinatietaken. Als voorbeeld, hier is hoe Napster werkt. Napster werd eind 1999 geboren uit de hand van Shawn Fanning en Sean Parke, met het idee om muziekbestanden te delen tussen gebruikers.

De manier waarop Napster werkt, is dat gebruikers verbinding moeten maken met een centrale server, die verantwoordelijk is voor het bijhouden van een lijst met ingelogde gebruikers en de bestanden die beschikbaar zijn voor die gebruikers. Wanneer een gebruiker een bestand wil krijgen, zoekt hij op de server en de server geeft hem een ​​lijst van alle paren die het bestand hebben waarnaar hij op zoek is. Zo zoekt de belanghebbende naar de gebruiker die het beste kan bieden wat hij nodig heeft (bijvoorbeeld door degene met de beste overdrachtssnelheid te selecteren) en verkrijgt hij zijn bestand rechtstreeks van hem, zonder tussenpersoon. Napster werd al snel een zeer populair systeem onder gebruikers en bereikte 26 miljoen gebruikers in 2001, wat onrust veroorzaakte onder platenmaatschappijen en muzikanten.

Daarom hebben de RIAA (Recording Industry Association of America) en verschillende platenmaatschappijen, in een poging hier een einde aan te maken, een klacht ingediend tegen het bedrijf, waardoor de servers werden uitgeschakeld. Dit zorgde ervoor dat het netwerk instortte omdat gebruikers hun muziekbestanden niet konden downloaden. Als gevolg hiervan migreerde een groot deel van de gebruikers naar andere uitwisselingssystemen zoals Gnutella, Kazaa, enz. In plaats van het "hacken" af te schaffen.

Later, rond 2008, werd Napster een MP3-muziekbedrijf, met een groot aantal nummers die beschikbaar waren om te downloaden: free.napster.com.

Ongestructureerde P2P-netwerken

Een andere manier om bestanden te delen is om een ​​niet-gecentraliseerd netwerk te gebruiken, dat wil zeggen een netwerk waar elk type tussenpersoon tussen de gebruikers wordt geëlimineerd, zodat het netwerk zelf zorgt voor het organiseren van de communicatie tussen peers.

In deze benadering wordt, als een gebruiker bekend is, een "vereniging" tussen hen tot stand gebracht, zodat ze een "netwerk" vormen, waarbij meerdere gebruikers zich kunnen aansluiten. Om een ​​bestand te vinden, start een gebruiker een zoekopdracht, die het hele netwerk overspoelt, om het maximale aantal gebruikers te vinden dat over deze informatie beschikt.

Om bijvoorbeeld een zoekopdracht uit te voeren in Gnutella, stuurt de geïnteresseerde gebruiker een zoekopdracht naar zijn buren en zij naar die van hen. Maar om te voorkomen dat het netwerk met een klein verzoek instort, is de uitzendhorizon beperkt tot een bepaalde afstand van de oorspronkelijke host en ook tot de levensduur van het verzoek, omdat elke keer dat het bericht naar een andere gebruiker wordt verzonden, de levensduur ervan afneemt.

Het grootste probleem met dit model is dat als het netwerk groeit, het verzoekbericht slechts enkele gebruikers zal bereiken. Als wat we zoeken iets bekends is, zal elke host in onze uitzendhorizon het zeker hebben, maar aan de andere kant, als wat we zoeken iets heel speciaals is, zullen we het niet vinden misschien niet omdat de uitzendhorizon beperkt is , hebben we de hosts weggelaten die mogelijk de informatie bevatten waarnaar we op zoek zijn.

Tot op heden zijn pure niet-gecentraliseerde P2P-netwerken vervangen door nieuwe technologieën, zoals: Supernods .

SUPERNODOS, een hiërarchie van ongestructureerde netwerken

De belangrijkste problemen met ongestructureerde netwerken waren de uitzendhorizon en de grootte van het netwerk. We hebben twee mogelijke oplossingen: ofwel vergroten we de diffusiehorizon, ofwel verkleinen we de omvang van het netwerk. Als we ervoor kiezen om de uitzendhorizon te vergroten, vergroten we het aantal hosts waarnaar we het verzoekbericht moeten verzenden exponentieel. Dit zou, zoals we al zagen, leiden tot problemen in het netwerk, zoals het instorten ervan. Integendeel, als we ervoor kiezen om de omvang van het netwerk te verkleinen, kunnen de systemen zich veel beter aanpassen aan het netwerk, met behulp van de supernodes.

Het hoofdidee van dit systeem is dat het netwerk is verdeeld tussen veel terminalknooppunten en een kleine groep superknooppunten die goed met elkaar zijn verbonden, waarmee de terminalknooppunten zijn verbonden. Om een ​​supernode te zijn, moet je andere gebruikers voldoende bronnen kunnen bieden, inclusief bandbreedte. Dit netwerk van supernodes, waarvan er maar een paar deel kunnen uitmaken, is verantwoordelijk voor het klein genoeg houden van het netwerk om de zoekefficiëntie niet te verliezen.

De werking is vergelijkbaar met die van het hybride model, omdat de terminalknooppunten zijn verbonden met de superknooppunten, die als servers fungeren, zodat gebruikers alleen verbinding maken met andere gebruikers om exclusief downloads uit te voeren. Supernodes slaan informatie op over wat elke gebruiker heeft, zodat ze de zoektijd kunnen verkorten door de informatie naar terminalknooppunten te sturen die hebben wat we zoeken.

Dit type structuur wordt tegenwoordig nog steeds veel gebruikt, vooral omdat het erg handig is voor het uitwisselen van informatie over populaire inhoud of voor het onderzoeken van trefwoorden. Omdat het supernode-netwerk klein is, schalen deze systemen zeer goed over het netwerk en bieden ze geen breekpunten zoals het hybride model. Aan de andere kant verminderen ze de robuustheid tegen aanvallen en netwerkdrops en verliezen ze precisie bij het zoeken naar resultaten, als gevolg van replicatie via supernodes. Als een klein aantal supernodes uitvalt, wordt het netwerk opgedeeld in kleine partities.

Gestructureerde P2P-netwerken

Deze benadering is parallel ontwikkeld met de hierboven beschreven supernodebenadering. Het belangrijkste kenmerk is dat het zich niet bezighoudt met het organiseren van de knooppunten, maar zich richt op het organiseren van de inhoud, het groeperen van vergelijkbare inhoud op het netwerk en het creëren van een infrastructuur die onder andere efficiënt zoeken mogelijk maakt.

De peers organiseren onderling een nieuwe virtuele netwerklaag, "een gesuperponeerd netwerk", die zich boven het basis-P2P-netwerk bevindt. In dit gesuperponeerde netwerk wordt de nabijheid tussen de hosts gegeven op basis van de inhoud die ze delen: ze zullen des te dichter bij elkaar staan ​​omdat ze gemeenschappelijke bronnen bieden. Op deze manier zorgen we ervoor dat de zoektocht efficiënt wordt uitgevoerd in een niet al te verre horizon en zonder de omvang van het netwerk te verkleinen. Bijvoorbeeld JXTA, waar peers handelen in een virtueel netwerk en vrij zijn om peer-groepen te vormen en te verlaten. De pagingberichten blijven dus normaal gesproken in het virtuele netwerk en de groep fungeert als een hergroeperingsmechanisme, waarbij paren met dezelfde of vergelijkbare interesses worden gecombineerd.

 

Deze aanpak biedt hoge prestaties en nauwkeurige zoekopdrachten, als het virtuele netwerk de overeenkomst tussen knooppunten met betrekking tot zoekopdrachten nauwkeurig weerspiegelt. Maar het heeft ook een aantal nadelen: het heeft hoge kosten voor het opzetten en onderhouden van het virtuele netwerk in systemen waar hosts heel snel binnenkomen en vertrekken; ze zijn niet erg geschikt voor zoekopdrachten die Booleaanse operatoren bevatten, omdat er knooppunten nodig zijn die met meer dan één term kunnen zoeken.

Een subklasse van dit type P2P-netwerken zijn gedistribueerde hashtabellen.

Gedistribueerde hashtabellen (DHT)

Het belangrijkste kenmerk van DHT's is dat ze het overlay-netwerk niet organiseren op basis van inhoud of services. Deze systemen verdelen hun volledige werkruimte door middel van identifiers, die worden toegewezen aan peers die dat netwerk gebruiken, waardoor zij verantwoordelijk zijn voor een klein deel van de totale werkruimte. Deze identifiers kunnen bijvoorbeeld gehele getallen zijn die zijn opgenomen in het interval [0, 2n-1], waarbij n een vast getal is.

Elk paar dat deelneemt aan dit netwerk fungeert als een kleine database (de verzameling van alle paren zou een gedistribueerde database vormen). Deze database organiseert uw informatie in paren (sleutel, waarde). Maar om te weten welk paar verantwoordelijk is voor het opslaan van dit paar (sleutel, waarde), moeten we de sleutel een geheel getal in hetzelfde bereik hebben als waarmee de deelnemende paren in het netwerk zijn genummerd. Aangezien de sleutel mogelijk niet wordt weergegeven in gehele getallen, hebben we een functie nodig die de sleutels converteert naar gehele getallen in hetzelfde bereik als waarmee de paren zijn genummerd. Deze functie is de hash-functie. Deze functie heeft de bijzonderheid dat, geconfronteerd met verschillende invoer, dezelfde uitvoerwaarde kan geven, maar met een zeer lage waarschijnlijkheid. Dus in plaats van te praten over een "gedistribueerde database",

We hebben al uitgelegd dat elk paar verantwoordelijk is voor een deel van de werkruimte van het netwerk. Maar hoe koppel je het paar (sleutel, waarde) aan het juiste paar? Hiervoor wordt een regel gevolgd: zodra de sleutelhash is berekend, wordt het paar (sleutel, waarde) toegewezen aan het paar waarvan de identifier het dichtst bij de berekende hash ligt (de directe opvolger). Als de berekende hash groter is dan de identifiers van de paren, wordt de modulo 2n-conventie gebruikt.

Als we eenmaal wat hebben gesproken over de basiswerking van DHT, zullen we een voorbeeld zien van de implementatie ervan, via het CHORD-protocol.

Zoekprotocol gedistribueerd in P2P-netwerken: CHORD

Chord is een van de meest populaire gedistribueerde zoekprotocollen op P2P-netwerken. Dit protocol gebruikt de SHA-1-hashfunctie om zowel paren als opgeslagen informatie aan hun identifier toe te wijzen. Deze identifiers zijn gerangschikt in een cirkel (waarbij alle modulo 2m-waarden worden genomen), zodat elk knooppunt weet wie zijn meest directe voorganger en opvolger is.

Om de schaalbaarheid van het netwerk te behouden, wanneer een node het netwerk verlaat, worden alle sleutels doorgegeven aan zijn directe opvolger, zodat het netwerk altijd up-to-date wordt gehouden, waardoor zoekopdrachten niet foutief zijn.

Om de persoon te vinden die een sleutel opslaat, sturen knooppunten berichten naar elkaar totdat ze deze vinden. Maar door de cirkelvormige lay-out van het netwerk kan een request in het ergste geval door de helft van de nodes gaan, wat het onderhoud erg duur maakt. Om dit te vermijden en dus de kosten te verlagen, heeft elk knooppunt een opgeslagen routeringstabel, waarin het adres van de knooppunten die zich op een bepaalde afstand ervan bevinden, is opgeslagen. Dus, als we willen weten wie de sleutel k heeft, doorzoekt het knooppunt zijn routeringstabel om te zien of het het adres heeft van de persoon die verantwoordelijk is voor k; zo ja, dan stuurt hij het verzoek rechtstreeks naar jou; als het het niet heeft, stuurt het de vraag naar het knooppunt dat het dichtst bij k ligt, waarvan de identifier kleiner is dan k.

Met deze verbetering zijn we erin geslaagd om de zoekkosten te verlagen van N/2 naar log N, waarbij N het knooppuntnummer van het netwerk is.

Conclusie

Zoals we hebben gezien, zijn er veel soorten P2P-netwerken, elk met hun sterke en zwakke punten. Geen enkele onderscheidt zich van de andere, wat het mogelijk maakt om bij het programmeren van bijvoorbeeld een P2P-toepassing meerdere opties te hebben, elk met zijn eigen kenmerken.

Een ding om in gedachten te houden is de veranderende manier van informatie delen. Aan het einde van het laatste millennium was het gebruik van P2P-netwerken overvloedig en voor de meeste mensen was het de enige bekende manier om informatie te delen. Vandaag is de trend veranderd. Mensen wisselen nu liever bestanden uit via grote servers, waar ze in sommige gevallen gebruikers betalen om ze te hosten.

Enkele vragen die bij u opkomen zijn: Wat is de toekomst van P2P-netwerken? Naar welke vormen van informatieorganisatie gaan we?

Een van de mogelijke ontwikkelingen is de overstap van P2P naar p4p. Wat is P4P? Samenvattend zullen we zeggen dat P4P, ook wel hybride P2P genoemd, een kleine evolutie is van P2P waarvan het belangrijkste kenmerk is dat de serviceproviders, de ISP's, een essentiële rol spelen binnen het netwerk, want als het erop aankomt, zal een zoekopdracht eerst zoeken tussen deelnemende nodes die tot dezelfde ISP behoren.

Vergelijkbare items

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

Terug naar boven knop