P2P (angl. Peer-to-peer) – tinklo modelis, kuriame keitimasis resursais vyksta tiesiogiai tarp vartotojų. Tai yra priešingybė kliento-serverio modeliui. Gryname P2P tinkle nėra kliento ir serverio sąvokų – susijungę vartotojai yra lygiaverčiai, t. y. kiekvienas veikia ir kaip klientas, ir kaip serveris.
Enciklopedinis kompiuterijos žodynas siūlo lietuvišką „peer-to-peer“ atitikmenį lygiarangiai. Jame lygiarangių architektūra apibrėžiama kaip „tinklo architektūra, sudaryta iš dviejų arba daugiau kompiuterių, kurie keičiasi duomenimis naudodami tą pačią arba to paties tipo programinę įrangą“.[1]
Vienas iš P2P modelio taikymo pavyzdžių yra IRC pokalbis ar failo siuntimas tarp pastarosios programos vartotojų DCC protokolo pagrindu (angl. Direct Client Connection). Centriniai serveriai šiuo atveju reikalingi tik tam, kad padėtų surasti kitą pusę, o paskui bendravimas jau vyksta tiesiogiai. „Gnutella“ ir kitos panašios sistemos sugeba atlikti paiešką ir nenaudodamos centrinio serverio. Tokių sistemų neįmanoma išjungti iš vieno centro: kartą paleistos, jos veikia tol, kol yra pakankamai norinčių jomis naudotis klientų.
Vienas iš žinomiausių P2P pritaikymo pavyzdžių yra „BitTorrent“ rinkmenų dalinimosi programa.[2] „Bitcoin“ kriptovaliuta, „Ethereum“ platforma taip pat veikia P2P pagrindu.[3]
P2P tinkle resursų (atminties, tinklo, procesoriaus) naudojimas yra tolygiai paskirstytas tarp visų tinklo narių, kurie gali naudoti ir vienas kito resursus. Šių resursų naudojimą P2P tinkle kiekvienas narys kontroliuoja autonomiškai. Tinklo nariai sujungti internetu, kuriame nario IP adresas laikui bėgant gali keistis. Nuolat vyksta narių kaita: vieni pasitraukia, ateina kiti. Nariai susisiekia vienas su kitu tiesiogiai, be centralizuotos kontrolės ar koordinacijos. Centralizuoti serveriai kai kada naudojami tik darbo optimizavimui (hibridinės sistemos). Nariai nebeskirstomi į klientus ir serverius savokų, nes bet kuris narys atlieka abu vaidmenis. Visa sistema kuriama taip, kad veiktų savaime.[4]
Pranašumai:
Egzistuoja du pagrindiniai architektūrų modelių tipai:
Decentralizuoti:
Hibridiniai:
Galimos ir mišrios sistemos, tuo pat metu naudojančios abu modelius. Kai kada kartu naudojamas ir kliento – serverio modelis.
Grynomis P2P laikomos tik decentralizuota architektūra paremtos sistemos. Galima išskirti dvi pagrindines tokių architektūrų klases: bestruktūrės (angl. unstructured P2P systems), pvz., „Gnutella“ ir struktūrizuotos sistemas (angl. structured P2P systems), žymiausi iš kurių yra „Chord“, „P-Grid“, „Pastry“.
Tinklas | Klientai |
---|---|
Ares | Ares Galaxy, Warez P2P, Filecroc |
BitTorrent | Azureus, BitComet, BitTorrent, BitTornado, KTorrent, Morpheus, Opera, µTorrent |
Direct Connect | DC++, NeoModus Direct Connect, BCDC++, ApexDC++, StrongDC++ |
Gnutella | LimeWire, Morpheus |
Freenet | |
eD2K | eDonkey, eMule, xMule, aMule |
iMesh | iMesh, Morpheus |
Kademlia | eMule |
Napster | |
Kazaa | Kazaa, Morpheus |
Soulseek | Soulseek |
Grokster | Morpheus |
Programinė įranga/klientas | Tinklai arba protokolai | OS | Licencija |
---|---|---|---|
aMule | eD2K, Kad | Daugiaplatformė | GPL |
eMule | eD2K, Kad | Windows | GPL |
FileScope | eD2K, Gnutella, Gnutella2, OpenNAP | Daugiaplatformė | GPL |
giFT | eD2K, FastTrack, Gnutella | Daugiaplatformė | GPL |
Gnucleus | Gnutella, Gnutella2 | Windows | GPL |
iMesh | FastTrack, eD2K, Gnutella, Gnutella2 | Windows | |
KCeasy | Ares, FastTrack, Gnutella, OpenFT | Windows | GPL |
Kiwi Alpha | Gnutella, Gnutella2 | Windows | |
MLDonkey | BitTorrent, Direct Connect, eD2K, FastTrack, Gnutella, Gnutella2,<br\> Kad, OpenNap, SoulSeek, HTTP/FTP | Daugiaplatformė | GPL |
Morpheus | NEO tinklas, Gnutella, Gnutella2, BitTorrent | Windows | |
Napshare | Key network, MUTE tinklas | Linux, Windows | GPL |
Shareaza | BitTorrent, eD2K, Gnutella, Gnutella2 | Windows | GPL |
Zultrax | Gnutella, ZEPP | Windows |