Vienādranga tīkls

**Vienādranga tīkls** ( "**P2P**") ir datortīkla arhitektūras veids, kurā visiem tīkla dalībniekiem ir vienādas tiesības. Katrs dalībnieks (dators) var darboties gan kā klients, gan kā serveris vai arī veikt abas šīs funkcijas vienlaikus. Datori šāda veida tīklā spēj sazināties savā starpā tieši, neizmantojot centrālo serveri, kamdēļ šādu arhitektūru mēdz pretstatīt klienta-servera tīkla arhitektūrai.

Katrs šāda datortīkla tips pieprasa, lai visi datori izmantotu vienādu vai saderīgu programmu, kas savā starpā varētu izveidot savienojumu, kā arī nodrošinātu failapmaiņu un citu resursu izmantošanu savā starpā.

## Vienādranga tīklu vēsture

Par vienranga tīklu arhitektūras vienu no priekštečim uzskata 1979. gadā izstrādāto USENET tīklu (ziņojumdēļa sistēmu, ar kuras palīdzību dažādas intereškopas apmainās ar informāciju). Sistēma ieviesa decentralizētu kontroles modeli. Ziņu serveri savstarpēji izplatīja Usenet ziņas.

Pirmsākumi vienranga tīkliem ir 1986. gads, kad IBM izstrādāja tīkla arhitektūru dinamiskai maršrutēšanai, izmantojot datortīklus ar patvaļīgu topoloģiju APPN (Advanced Peer-to-Peer Networking).

Pirmā  pasaulē popularitāti guvusī (vairāk kā 50 miljoni lietotāju) vienādranga lietotne bija failu koplietošanas sistēma Napster, kas izdota 1999. gadā. Napster radīja 19 gadu vecais ASV students Šons Fenings. Lietotnē bija iespējams bez maksas apmainīties ar mūzikas ierakstiem. Lietotne darbojās izmantojot centralizētu indeksa serveri, kura lietotāji varēja meklēt pēc dziesmas nosaukuma vai izpildītāja vārda. Ja indekss atrada dziesmu uz jebkura tīklā esoša datora, lietotājs varēja to lejuplādēt, vienlaikus daloties ar dziesmām savā tīklā. Taču lielās ierakstu kompānijas - "AOL Time Warner", EMI, "Sony", "Universal", "Bertelsmann" iebilda, ka Napster krāpjot tās un atņemot māksliniekiem honorārus. 1999. gadā tās iesūdzēja Napster tiesā, prasot atlīdzināt zaudējumus. 2001. gadā "Napster" slēdza failu apmaiņas dienestu.

## Arhitektūra

Vienādranga tīkls ir veidots ap vienādības mezglu jēdzienu, kas vienlaikus darbojas gan kā “klienti”, gan kā “serveri” ar citiem tīkla mezgliem. Šis tīkla izkārtojuma modelis atšķiras no klienta-servera modeļa, kurā parasti notiek saziņa ar centrālo serveri un no tā. Tipisks faila pārsūtīšanas piemērs, kas izmanto klienta-servera modeli, ir File Transfer Protocol  (FTP) pakalpojums, kurā klients un servera programmas ir atšķirīgas: klienti uzsāk pārsūtīšanu, un serveri apmierina šos pieprasījumus.

### Maršrutēšana un resursu noteikšana

Vienādranga tīkli parasti ievieš daļu virtuālā pārklājuma tīkla virs fiziskā tīkla topoloģijas, kur mezgli pārklājumā veido mezglu apakškopu fiziskajā tīklā. Dati joprojām tiek apmainīti tieši pār pamatā esošo TCP/IP tīklu, bet lietojumprogrammu līmenī līdzinieki var sazināties viens ar otru tieši, izmantojot loģiskās pārklājuma saites (katra no tām atbilst ceļam caur pamatā esošo fizisko tīklu). Pārklājumi tiek izmantoti indeksēšanai un vienādranga noteikšanai un padara P2P sistēmu neatkarīgu no fiziskā tīkla topoloģijas. Pamatojoties uz to, kā mezgli ir savstarpēji saistīti pārklājuma tīklā un kā resursi tiek indeksēti un izvietoti, mēs varam klasificēt tīklus kā nestrukturētus vai strukturētus (vai kā hibrīdus starp tiem).

### Nestrukturēti tīkli

Nestrukturēti vienādranga tīkli neuzliek īpašu struktūru pārklājuma tīklam, bet veido mezglus, kas nejauši veido savienojumus cits ar citu.(Gnutella, Gossip, un Kazaa ir nestrukturētu P2P protokolu piemēri).

Tā kā tiem nav globāli uzspiestas struktūras, nestrukturēti tīkli ir viegli veidojami un ļauj lokalizēt optimizāciju dažādos pārklājuma reģionos. Tāpat arī tāpēc, ka visu līdzinieku loma tīklā ir vienāda, nestrukturēti tīkli ir ļoti spēcīgi, saskaroties ar augsto “Churn” līmeni, t.i., kad liels skaits lietotāju bieži pievienojas tīklam un pamet to

Tomēr nestrukturētu tīklu galvenie ierobežojumi ir saistīti arī ar šo struktūras trūkumu. Jo īpaši, ja vienranga lietotājs vēlas atrast vajadzīgo datu daļu tīklā, ir jāuzsāk tā meklēšana tīklā, lai atrastu pēc iespējas vairāk līdzinieku, kas koplieto datus. Informācijas pieprasījums izraisa ļoti lielu signālu trafiku tīklā, izmanto vairāk centrālā procesora/atmiņas (pieprasot katram vienranga dalībniekam apstrādāt visus meklēšanas vaicājumus) un nenodrošina, ka meklēšanas vaicājumi vienmēr tiks atrisināti. Turklāt, tā kā nepastāv korelācija starp vienranga un tā pārvaldīto saturu, nav garantijas, ka pieprasījums atradīs lietotāju, kam ir vajadzīgie dati. Populārs saturs, visticamāk, būs pieejams vairākos lietotājos, un jebkurš vienranga meklētājs, visticamāk, atradīs to pašu. Bet, ja vienranga lietotājs meklē retus datus, ar kuriem dalās tikai daži citi lietotāji, tad ir maz ticams, ka meklēšana būs veiksmīga.

### Strukturēti tīkli

Strukturētajos vienādranga tīklos pārklājums ir sakārtots noteiktā topoloģijā, un protokols nodrošina, ka jebkurš mezgls var efektīvi meklēt tīklā failu/resursu pat tad, ja resurss ir ārkārtīgi rets.

Visizplatītākais strukturēto P2P tīklu veids ievieš dalītu jaucējtabulu (DHT), kurā tiek izmantots nepārtrauktas jaukšanas variants, lai katram failam piešķirtu īpašumtiesības uz konkrētu līdzinieku Tas ļauj līdziniekiem meklēt resursus tīklā, izmantojot 
jaucējtabulu : tas ir, (atslēgas, vērtības) pāri tiek glabāti DHT, un jebkurš iesaistītais mezgls var efektīvi izgūt vērtību, kas saistīta ar norādīto atslēgu.

Tomēr, lai efektīvi maršrutētu satiksmi caur tīklu, strukturētā pārklājuma mezgliem ir jāuztur to kaimiņu saraksti, kuri atbilst konkrētiem kritērijiem. Tas padara tos mazāk noturīgus tīklos ar augstu Churn līmeni (t.i., ar lielu mezglu skaitu, kas bieži pievienojas tīklam un izstājas no tā). Jaunākajā P2P resursu noteikšanas risinājumu novērtējumā, izmantojot reālas darba slodzes, ir uzsvērti vairāki jautājumi, piemēram, augstas reklāmas izmaksas/resursu atrašana un statiska un dinamiska slodzes nelīdzsvarotība.

Ievērojami izplatītie tīkli, kas izmanto DHTs, ir Tixati Tixati, kas ir alternatīva BitTorrent, KAD tīklam, Storm botnet,YaCy un Coral Content Distribution Network . Daži ievērojami pētniecības projekti ietver [Chord](https://en.wikipedia.org/wiki/Chord_(peer-to-peer)) projektu, Kademlia, Past storage utility, P-Grid, pašorganizētu un topošu pārklājuma tīklu un CoopNet satura izplatīšanas sistēmu. DHT tīkli ir arī plaši izmantoti, lai panāktu efektīvu resursu atklāšanu attiecībā uz režģveida skaitļošanas sistēmām, jo tie palīdz resursu pārvaldībā un lietojumprogrammu plānošanā.

### Hibrīdmodeļi

Hibrīdmodeļi ir vienādranga un klienta-servera modeļu kombinācija.  Parastais hibrīdmodelis ir centrālais serveris, kas palīdz lietotājiem atrast viens otru. "Spotify" bija hibrīda modeļa piemērs [līdz 2014. gadam]. Ir dažādi hibrīdmodeļi, kas visi veido kompromisu starp centralizētu funkcionalitāti, ko nodrošina strukturēts servera/klienta tīkls, un mezgla vienlīdzību, ko nodrošina tīri vienādranga nestrukturēti tīkli. Pašlaik hibrīdmodeļiem ir labāka veiktspēja nekā tīriem nestrukturētiem tīkliem vai tīri strukturētiem tīkliem, jo noteiktām funkcijām, piemēram, meklēšanai, ir nepieciešama centralizēta funkcionalitāte, bet tie gūst labumu no decentralizētu mezglu apkopošanas, ko nodrošina nestrukturēti tīkli.

## Vienādranga tīklu darbība

### Vienādranga tīklu uzdevumi
* Jānodrošina satura meklēšanas iespējas (pēc vārda vai šablona);
* Jābūt kartei, kurā norādīts, kur šis resurss atrodas;
* Jābūt iespējai lejuplādēt saturu.

### Vienādranga tīklu tipi
* Tīrais vienādranga tīkls:
** Mezgls (dators) darbojas gan kā klients, gan kā serveris
** Nav centrālā servera
** Nav maršrutētāja
* Hibrīda vienādranga tīkls:
** Ir centrālais serveris, kas glabā informaciju par katru mezglu un atbild uz pieprasījumiem par šo informāciju.
* Jauktais vienādranga tīkls:
** satur gan tīrā, gan hibrīda vienādranga tīkla iezīmes.

### Priekšrocības
Svarīgākā vienādranga tīkla priekšrocība ir, ka visi klienti piedāvā resursus, ieskaitot datu pārraidi, vietu glabāšanai un datu apstrādi. Tie, kā posmi pievienojas un sistēmas prasības palielinās, kopējā sistēmas kapacitāte arī palielinās. Taču klients-serveris tīklu arhitektūrai tā nav. Šādām tīkla arhitektūrām fiksētais serveru skaits neļauj pievienot vairāk klientu, jo tas varētu nozīmēt lēnāku datu pārraides ātrumu visiem lietotājiem.

Tāpat vienādranga tīklus uzskata par lētāku risinājumu salīdzinājumā ar klients-serveris tīklu arhitektūru, jo tas var izmantot par serveriem darba stacijas (nav jāpērk speciāls serveris), ir vieglāk uzstādīt, nav nepieciešams administrators.

Pastāv resursu devēju aizvietojamība. Viena mezgla kļūda vai atteikums neietekmē daļas vai visa tīkla darbību (kā tas būtu raksturīgi klienta-servera tīkla arhitektūrai).

### Trūkumi
Pamatā trūkumi izriet no centralizācijas neesamības. Šādās sistēmās ir grūtāk nodrošināt drošību (piekļuves tiesību ierobežošanu) un kontroli. Klients-serveris tipa sistēmā pietiek ierīkot drošibas sistēmu (piem. FTP pieteikšanās) serverī vai ierobežotā skaitā serveru. Ar vienādranga tīkliem, kur katra sistēma ir serveris, tas ir ļoti sarežģīti. Parastajiem vienādranga tīklu lietojumiem tas gan nav svarīgi.

Tāpat katra lietotāja resursa darbība var tikt ietekmēta, pastāvot lielam tā resursu vienlaicīgam lietotāju skaitam.

Nepastāv centralizētas datu dublēšanas iespējas.

## Vienādranga tīklu protokoli un programmatūra
* BitTorrent: Azureus, BitComet, BitTorrent, Opera

Šobrīd viens no populārākajiem vienādranga tīklu protokoliem pasaulē. 2001. gadā to izstrādāja Brems Koens. Pastāv daudz aplikāciju, kas šo protokolu izmanto.
Katrs satura sniedzējs izveido satura aprakstu, ko sauc par torentu. To lieto, lai pārbaudītu datu integritāti. Līdzinieks () to var atrast tīmekļā vietnēs. Torents satur informāciju par serveri-trekeru () un faila gabaliem (parasti 64 -512 KB).
Serveris -trekers uzskaita visus līdziniekus, kas lejup/augšuplādē saturu jeb baru (). Attiecīgi veicot lejupielādi lietotājs sazinās ar trekeru. Arī bara locekļi regulāri sazinās ar trekeru.
Līdzinieki, kam ir faila gabali ir devēji (). Tālāk līdzinieki viens ar otru tieši apmainās ar failu gabaliem. Īpaši tiek meklēti retāk pieejamie.
Esot barā līdzinieki vienlaikus var lejuplādēt trūkstošos failu gabalus un dalīties ar esošajiem. Kad faila gabals lejuplādēts, tiek pārbaudīta torrent failā norādītā kontrolsumma. Atbilstības gadījumā tiek informēti klienti par attiecīgā fragmenta pieejamību.

* Direct Connect: DC++, NeoModus Direct Connect, RevConnect
* DNS
* eDonkey 2000: eDonkey2000, eMule
* Gnutella: LimeWire
* Napster
* Usenet

## Atsauces

## Ārējās saites