Arhitektura Partnerskih P2P Mreža
-
Upload
malamashala -
Category
Documents
-
view
109 -
download
0
description
Transcript of Arhitektura Partnerskih P2P Mreža
SVEUČILIŠTE U SPLITU
SVEUČILIŠNI ODJEL ZA STRUČNE STUDIJE
ODSJEK ZA INFORMACIJSKU TEHNOLOGIJU
DAVORKA LETE
ZAVRŠNI RAD
ARHITEKTURA PARTNERSKIH P2P
MREŽA
Split, listopad 2013.
SVEUČILIŠTE U SPLITU
SVEUČILIŠNI ODJEL ZA STRUČNE STUDIJE
ODSJEK ZA INFORMACIJSKU TEHNOLOGIJU
PREDMET: PROJEKTIRANJE I UPRAVLJANJE
RAČUNALNIM MREŽAMA
ZAVRŠNI RAD
KANDIDAT: Davorka Lete
TEMA ZAVRŠNOG RADA: Arhitektura partnerskih P2P mreža
MENTOR: mr. sc. Tatjana Listeš, viši pred.
Split, listopad 2013.
SADRŽAJ
1. UVOD ..................................................................................................................................................... 6
2. P2P MREŽA .......................................................................................................................................... 7
2.1. Uvod u P2P mreže .......................................................................................................................................... 7
2.2. Povijesni razvoj P2P mreža ............................................................................................................................. 8
2.3. Razlika P2P i klijent - poslužitelj arhitekture ................................................................................................... 9
3. ARHITEKTURA P2P MREŽA ........................................................................................................ 11
3.1. Centralizirane P2P mreže ...............................................................................................................................11
3.2. Decentralizirane P2P mreže ...........................................................................................................................12
3.2.1. Strukturirane P2P mreže .............................................................................................................................. 13
3.2.2. Nestrukturirane P2P mreže .......................................................................................................................... 14
4. P2P APLIKACIJE .............................................................................................................................. 16
4.1. P2P mreže za dijeljenje podataka ..................................................................................................................16
4.2. P2P aplikacije za IM i online chat ..................................................................................................................19
4.3. P2P aplikacije za glasovnu i pisanu komunikaciju (VoIP) ...............................................................................21
4.4. P2P aplikacije za multimediju ........................................................................................................................22
4.5. P2P aplikacije za suradnju i grupe za raspravu ...............................................................................................22
5. PRINCIPI RADA P2P MREŽA ....................................................................................................... 24
5.1. Formiranje nadmreže ....................................................................................................................................24
5.2. Pretraživanje nad-mreže ...............................................................................................................................25
5.2.1. Hash tablice .................................................................................................................................................. 26
5.3. Prijenos podataka između čvorova ................................................................................................................26
5.3.1. TCP protokol ................................................................................................................................................. 27
5.3.2. UDP protokol ................................................................................................................................................ 27
6. POHRANA PODATAKA NA P2P MREŽAMA............................................................................. 28
6.1. Redundantnost podataka ..............................................................................................................................29
6.2. Brisanje oznaka (engl. erasure codes) ............................................................................................................29
6.3. Asimetrično čitanje i pisanje podataka ..........................................................................................................31
6.4. Kvota i pravedna razmjena podataka ............................................................................................................31
6.5. Klasifikacija proizvoda za pohranu podataka .................................................................................................32
7. SIGURNOST P2P MREŽA ............................................................................................................... 33
7.1. Vanjske sigurnosne prijetnje .........................................................................................................................33
7.1.1. Računalni virusi i crvi .................................................................................................................................... 34
7.1.2. Backdoor pristup .......................................................................................................................................... 34
7.1.3. Nezaštićene poruke ...................................................................................................................................... 34
7.1.4. Povjerljivost .................................................................................................................................................. 35
7.2. Sigurnosni mehanizmi ...................................................................................................................................35
7.2.1. Tehnike tajnog ključa .................................................................................................................................... 35
7.2.2. Tehnika javnog ključa ................................................................................................................................... 35
7.2.3. Asimetrični parovi ključeva.......................................................................................................................... 35
7.3. Budućnost sigurnosti P2P mrežna..................................................................................................................36
7.3.1. Biometrika .................................................................................................................................................... 36
8. PRAKTIČNI RAD .............................................................................................................................. 37
8.1. Uvod ..............................................................................................................................................................37
8.2. Grafičko sučelje .............................................................................................................................................37
8.3. Pozadinska komunikacija ..............................................................................................................................41
8.4. WCF konfiguracijska datoteka .......................................................................................................................49
9. ZAKLJUČAK ....................................................................................................................................... 57
10. LITERATURA ................................................................................................................................. 58
SAŽETAK
Tema ovog završnog rada je Arhitektura partnerskih P2P mreža. Peer-to-peer mreže, poznate
pod nazivom P2P, popularan su način razmjene podataka među korisnicima. Svi korisnici u P2P
mreži su ravnopravni i dijele podatke izravno između sebe, bez posredovanja središnjeg
poslužitelja. Postoje i posebni programi za dijeljenje podataka u P2P mreži i ti se programi
obično koriste za dijeljenje audio i video sadržaja. Glavne karakteristike P2P mreža opisane su
kroz sedam poglavlja. Od kratke povijesti razvoja P2P mreža, podjele P2P mreža, uvida u
popularne P2P aplikacije, načina rada i pohrane podataka, pa sve do sigurnosti P2P mreža i
prednosti i mana. U praktičnom dijelu prikazan je jedan od načina upotrebe P2P mreža, kroz
jednostavnu aplikaciju za komunikaciju između korisnika. P2P mreže su korisne za društveni
napredak u pogledu dijeljenja informacija i za očekivati je da će P2P mreže u budućnosti olakšati
traženje podataka na Internetu.
SUMMARY
Architecture of the affiliate P2P networks.
The subject of this final thesis is the Architecture of the affiliate P2P networks. Peer-to-peer
networks, well-known as P2P, represent a popular way of information exchange between users.
All users in P2P networks are equal and share information directly, without help of a central
server. There are specialized application for data exchange in P2P network, with sharing audio
and video content as their most common use. The main properties of P2P networks are described
in seven chapters, starting with brief history of P2P network development, classification of P2P
networks, insight of popular P2P applications, principles of work and data storage, and finally
security and advantages/disadvantages of P2P networks. Example of P2P network utilization is
shown in the practical part of this paper, with a simple chat application. P2P networks can be
socially beneficial through information sharing and are expected to facilitate information
searching on the Internet.
6
1. UVOD
Cilj ovog završnog rada je pokazati princip rada P2P (engl. Peer to Peer) mreža i aplikacija za
dijeljenje datoteka. “Peer-to-peer mreže vrlo su popularan način razmjene podataka i informacija
među korisnicima. Razmjena podataka u P2P mrežama temelji se na međusobnom povjerenju
sudionika. Promet ostvaren P2P mrežama u posljednjih 5 godina premašio je promet ostvaren
pregledavanjem web stranica i drugim aktivnostima. Broj sudionika na P2P mrežama
svakodnevno raste“. (URL1)
U drugom poglavlju je opisana kratka povijest razvoja P2P mreža od mreže ARPANET-a (engl.
The Advanced Research Projects Agency Network) do P2P programa druge generacije, te razlika
P2P mreže u odnosu na klijent-poslužitelj arhitekturu.
P2P arhitektura koja je opisana u trećem poglavlju predstavljena je kroz podjelu prema načinu
ispisivanja podataka koji se razmjenjuju.
Četvrto poglavlje daje uvid u popularne P2P aplikacije i njihovu originalnu namjenu.
Peto poglavlje opisuje način rada P2P mreže. Način rada opisan je kroz korake kao što su
formiranje nad-mreže, pretraživanje nad-mreže i prijenos korisničkih podataka između čvorova.
Šesto poglavlje opisuje način pohrane podataka opisujući ključne pojmove kao što su
redundantnost podataka, brisanje oznaka, asimetrično čitanje i pisanje podataka, odabir čvorova,
kvota i pravedna razmjena podataka te klasifikacija proizvoda za pohranu podataka.
Jedan od najvažnijih koncepata P2P arhitekture – sigurnost, opisana je u sedmom poglavlju
dajući uvid u nužnost zaštite podataka. Opisane su vanjske i interne sigurnosne prijetnje kao i
sigurnosni mehanizmi.
U praktičnom radu prikazan je osnovni koncept rada P2P aplikacija preko aplikacija za izmjenu
poruka kao što je Google Talk. Aplikacija je kodirana u programskom jeziku C# koristeći
razvojni alat Microsoft Visual Studio 2010. Pokreću se dvije aplikacije te korisnik jedne
aplikacije razmjenjuje poruke s korisnikom druge aplikacije. Poruke koje prvi korisnik upisuje
vidljive su drugom korisniku i obrnuto.
U završnom poglavlju navedene su prednosti i mane P2P arhitekture.
7
2. P2P MREŽA
P2P mreža je ostvarila ogroman interes u cijelom svijetu kako među korisnicima Interneta tako i
kod stručnjaka za računalne mreže. Brojne tvrtke i web stranice su promovirali P2P tehnologiju
kao budućnost internetskog povezivanja.
P2P dijeljenje datoteka također je stvorilo mnoge kontroverze u vezi zakona i pravednog
korištenja datoteka. Općenito, stručnjaci se ne slažu u raznim detaljima vezano za P2P
tehnologiju i njen daljnji razvoj u budućnosti.
2.1. Uvod u P2P mreže
P2P je računalna mreža u kojoj nema poslužitelja ni klijent-poslužitelj modela koji je dominirao
mrežama u početcima Interneta, a koji dominira strukturom Interneta i danas.
U P2P mreži svi su čvorovi (engl. peer) jednaki i istovremeno imaju funkciju klijenta i
poslužitelja. Kako ne postoji netko tko će kontrolirati razmjenu podataka, jer ne postoji glavno
računalo (engl. host) ni poslužitelj (engl. server) koji nadgleda sve ostale, svi čvorovi posjeduju
jednaka prava uzimanja i davanja resursa.
Iz toga se da zaključiti da P2P mreža ima sljedeće karakteristike:
svaki čvor je ravnopravan,
komunikacija između čvorova je izravna (nema poslužitelja),
mreža je pouzdana jer nema jednu točku kvara (glavno računalo ili poslužitelj).
Slika 2.1. Shema P2P mreže
8
2.2. Povijesni razvoj P2P mreža
P2P način umrežavanja nije novi koncept. Tragovi P2P mreža datiraju još iz samih početaka
Interneta, točnije iz šezdesetih godina prošlog stoljeća kada je Internet zamišljen kao P2P mreža.
Preteču Interneta ARPANET, razvilo je američko Ministarstvo obrane u cilju dijeljenja
računalnih resursa unutar sveučilišta SAD-a. Svoje članove, ARPANET je spajao na principu
jednakih sudionika jer ideja klijent-poslužitelj tada još nije postojala.
Prva komercijalno korištena P2P mreža je mreža raspravnih grupa (engl. Usenet news, skraćeno
USENET), gdje su poslužitelji međusobno komunicirali i razmjenjivali nove poruke unutar tih
grupa. Ipak, i takav poslužitelj je bio klijentsko-poslužiteljske arhitekture jer su mu korisnici
izravno pristupali kako bi pročitali ili napisali poruku.
Do prije dvadesetak godina Internet su sačinjavala velika računala koja su imala stalne IP adrese
i koja su bila konstantno povezana. Nakon pojave svjetske mreže (engl.World Wide Web,
skraćeno WWW), zbog brzog rasta broja korisnika javila se potreba za dinamičnim
dodjeljivanjem IP (engl. Internet Protocol) adrese pri svakom spajanju, jer su osobna računala
počela ostvarivati povremeni pristup Internetu. Iz ovih razloga na scenu dolaze P2P mreže.
Centralizirani P2P sustav Napster pojavio se u svibnju 1999. godine. Napster je omogućio
korisnicima da se spoje i dijele svoju omiljenu glazbu izravno s drugim krajnjim korisnicima,
bez brige oko pronalaženja poslužitelja koji bi im to omogućio i bez raznih ograničenja i pravila.
Vrlo brzo nakon pojave, Napster se počeo suočavati sa pravnim izazovima. Nakon brojnih tužbi,
u svibnju 2002. godine objavljena je prodaja Napster-a, a vrlo brzo nakon toga i bankrot.
Nakon Napstera pojavila se fleksibilna mreža Gnutella koja je organizirana u hijerarhijske klaste
(engl.cluster, skupina „istovrsnih stvari“) i bez centralnog računala kod koje postoji nekoliko
razina sudjelovanja klijenata obzirom na brzinu veze i snagu računala. Korisnici Gnutella mreže,
da bi se spojili na mrežu, sve što moraju znati je adresa bilo kojeg računala u mreži od kojeg
onda dobivaju početne parametre za pristupanje mreži.
U ožujku 2001. godine predstavljeni su protokol FastTrack i klijent KaZaA koji su sa sobom
donijeli dodatna poboljšanja kao što su super čvorovi (engl.supernodes) i mrijestlišta (engl.
spawning). FastTrack je sličan Gnutelli po tome što nema centralnog servera i svi klijenti su
spojeni ravnopravno.
Negdje u isto vrijeme dok su se razvijale FastTrack mreže, započinje i rad na BitTorrent
protokolu koji je danas najrašireniji protokol razmjene podataka preko Interneta u P2P mreži.
9
2.3. Razlika P2P i klijent - poslužitelj arhitekture
Klijent-poslužitelj je arhitektura gdje korisnik (klijent) i poslužitelj “igraju” različite uloge u
mrežnom okruženju. Najočitiji je primjer kod pregledavanja Internet stranica. Korisničko
računalo i Internet preglednik su klijent, dok su računalo i baza podataka koji čine Internet
stranicu poslužitelj. Klijent je obično aktivan korisnik koji šalje zahtjeve i čeka dok se isti ne
ispune, dok je poslužitelj pasivan, čeka na zahtjeve, ispunjava ih i šalje korisniku.
Poslužitelji su obično veoma jaka računala s dobrim konfiguracijama i karakteristikama zbog
toga što istovremeno moraju obraditi mnogo zahtjeva koji rastu iz dana u dan. Obično su na
poslužiteljima instalirani posebni operacijski sustavi koji sadrže naprednije opcije u odnosu na
obične klijent operacijske sustave.
Slika 2.2. Klijent-poslužitelj model Slika 2.3. P2P model
U P2P arhitekturi, resursi se dijele između čvorova bez koordinacije središnjeg poslužitelja.
Čvorovi se ponašaju kao dobavljači i potrošači resursa. Nema centralizirano-sigurnosnog
sustava, a krajnji korisnici imaju neograničen pristup resursima što smanjuje sigurnost u P2P
mreži.
10
P2P arhitektura Klijent-poslužitelj arhitektura
Decentralizirani oblik mrežne arhitekture. Centralizirani oblik mrežne arhitekture.
Pristup mreži i zadatci podijeljeni su
ravnopravno među članovima. To je vrsta
odnosa ''svatko nosi svoj teret''.
Kako bi pristupili resursima, klijenti prvo
moraju poslati zahtjev poslužitelju. To je vrsta
usluge ''pošalji zahtjev i isti će ti se ispuniti''.
Članovi imaju iste povlastice i prava i na isti
način pristupaju različitim izvorima podataka.
Nema razlike ni na koji način među članovima.
Čvorovi izravno komuniciraju jedan s drugim,
bez potrebe za središnjim posrednikom.
Klijenti su radne stanice ili korisnička računala
koji ne dijele svoje resurse, već šalju zahtjeve i
čekaju dok se isti ne ispune.
P2P mreža se obično koristi u P2P programima
za razmjenu datoteka, kao što su Napster i
Bitorrent.
Elektronička pošta, bankarske usluge, čak i
HTTP (engl. Hypertext Transfer) protokol su
primjeri klijent-poslužitelj modela.
Glavna razlika između klijent-poslužitelj i P2P arhitekture je ta da u klijent-poslužitelj arhitekturi
određeni klijenti šalju zahtjeve za uslugama, a poslužitelji su ti koji ispunjavaju te zahtjeve, dok
se u P2P arhitekturi čvorovi ponašaju i kao poslužitelji i korisnici usluga. Nadalje, klijent-
poslužitelj sustavi zahtijevaju glavnog poslužitelja tako da su u provedbi dosta skuplji od P2P
sustava. S druge strane, glavni poslužitelj osigurava razinu pristupa klijentima što pruža bolju
sigurnost od P2P sustava u kojima sigurnost ovisi o krajnjim korisnicima. P2P sustavi
povećanjem broja čvorova gube na značajkama, dok su klijent-poslužitelj sustavi stabilniji i
mogu se povećavati koliko god je potrebno. Stoga izbor jednog od ova dva sustava ovisi o
okruženju koje se stvara.
11
3. ARHITEKTURA P2P MREŽA
Kao što postoje različiti tipovi arhitekture računalnih mreža općenito, tako postoje i različiti
tipovi i arhitekture P2P mreže.
P2P mreže je moguće podijeliti prema načinu ispisivanja podataka koji se razmjenjuju (engl.
File listing) i to na:
Centralizirane P2P mreže i
Decentralizirane P2P mreže.
Dalje se decentralizirane P2P mreže dijele na:
Strukturirane P2P mreže i
Nestrukturirane P2P mreže.
3.1. Centralizirane P2P mreže
Kod P2P mreža središnji poslužitelj održava direktorije dijeljenih datoteka pohranjenih na
pojedinačnom čvoru. Svaki put kad se klijent spoji ili od odspoji od mreže, direktorij se obnovi.
U ovom modelu, kompletna kontrola i poruke se šalju na središnji poslužitelj. Poslužitelj tada
uspoređuje zahtjev s bazom podataka i prikazuje rezultate upita. Jednom kad klijent dobije
pozitivnu informaciju o pronađenom rezultatu, kontaktira čvor direktno i preuzima traženu
datoteku. Datoteka niti u jednom trenutku nije pohranjena na centralnom poslužitelju.
Centralizirana P2P mreža pruža najveće performanse kada se govori o traženju i lociranju
datoteka. Jedna od glavnih prednosti centraliziranih mreža je postojanje tablice pomoću koje se
sve datoteke mogu brzo i jednostavno locirati. Kako se tablica redovito obnavlja, rezultati
pretrage su odmah dostupni za preuzimanje.
Druga prednost leži u činjenici da svaki korisnik mora biti registriran na mreži te se pretraživanje
ostvaruje tako da se pretražuju trenutno ulogirani korisnici pa su dobiveni rezultati maksimalno
sveobuhvatni.
Mana arhitekture centraliziranih P2P mreža je ta što ima jednu ulaznu točku koja je ustvari slaba
karika mreže jer ukoliko se taj poslužiteljski sustav odsječe, čitavi centralizirani sustav pada.
Predstavnik centralizirane P2P mreže je Napster. Napster je bio on line usluga za dijeljenje
glazbenih datoteka. Nakon raznih tužbi, originalna usluga je ugašena, ali je otvorila put
decentraliziranim P2P mrežama.
12
Slika 3.1. Arhitektura centraliziranih P2P mreža
3.2. Decentralizirane P2P mreže
Decentralizirane P2P mreže su novija generacija P2P mreža, a glavna karakteristika im je ta što
ne postoji središnji poslužitelj koji bi koordinirao svim ostalim sudionicima mreže i upravljao
operacijama među njima. Svaki sudionik decentralizirane P2P mreže ima jednaka prava i obveze
i na taj način nijedan čvor nije superioran drugome. Osim toga, svaki sudionik može uzimati tuđe
i davati vlastite resurse drugim sudionicima s kojima komunicira u mreži.
Prednost decentraliziranih mreža je ta što ne postoji slaba točka koja bi mogla odjednom srušiti
cijeli sustav.
Nedostatak ove arhitekture je u vremenu koje je potrebno da bi upit koji se postavi došao do svih
čvorova koji tvore mrežu.
Decentralizirane P2P mreže dalje se dijele na strukturirane i nestrukturirane P2P mreže.
13
Slika 3.2. Arhitektura decentraliziranih P2P mreža
3.2.1. Strukturirane P2P mreže
U strukturiranim P2P mrežama, čvorišta su organizirana prema specifičnim kriterijima ili
algoritmima, što dovodi do stvaranja topologija sa specifičnim svojstvima. Algoritmi u
strukturiranim P2P mrežama uvelike utječu na učinkovitost i brzinu mreže.
Indeksiranje u ovakvim mrežama obično se temelji na distribuiranim raspršenim tablicama
(engl. Distributed Hash Table, skraćeno DHT), gdje je svaki podatak obilježen pripadajućom
raspršnom funkcijom (engl. Hash Function). Ovo omogućuje čvorovima da traže podatke na
mreži koristeći DHT tablice. Svaki podatak na mreži ima dva svojstva, a to su ključ (engl.
value) i raspršena vrijednost (engl. hash value) koja su pohranjena u DHT tablicama. Čvor koji
želi dohvatiti traženi podatak od drugog čvora mora tom čvoru poslati odgovarajući ključ. Prvi
primjeri strukturirane P2P mreže su Chan i Chord.
Chord je jedan od prvih protokola koji je počeo koristiti DHT tablice. On definira način na koji
su ključevi dodijeljeni čvorovima, kako čvor može otkriti vrijednost zadanog ključa te kako
otkriti koji čvor je odgovoran za zadani ključ.
14
Slika 3.3. Strukturirana P2P mreža
3.2.2. Nestrukturirane P2P mreže
Nestrukturirane P2P mreže ne nameću oblik strukture mreže. Svi članovi ove mreže spojeni su
međusobno i to na proizvoljan način. Kada čvor želi pronaći neki podatak, upit se šalje svim
dostupnim čvorovima u cilju pronalaženja što većeg broja čvorova koji imaju traženi podatak.
Nekada traženi upit ne daje nikakav rezultat, što je i nedostatak nestrukturiranih P2P mreža.
Nestrukturirane P2P mreže ne bi trebale imati nikakav centralizirani sustav, ali postoji nekoliko
vrsta nestrukturiranih mreža s različitim stupnjevima centralizacije, a to su čiste i hibridne P2P
mreže.
Čiste P2P mreže se sastoje od ravnopravnih čvorova koji koriste samo jedan sloj za usmjeravanje
prometa. Primjeri ovakve mreže su Gnutella i Freenet kod kojih ne postoji neki centralni
poslužitelj koji upravlja mrežom niti neki preferirani čvor s posebnom ulogom.
Hibridne P2P mreže su kao mješavina klijent-poslužitelj i čiste P2P arhitekture gdje se klijent-
poslužitelj arhitektura odnosi na pretraživanje datoteka, a čista P2P mreža na njihov prijenos.
Primjeri ovakve mreže su Gnutella2, koja je moderna implementacija Gnutelle, i Kazaa.
15
Slika 3.4. Nestrukturirana P2P mreža
16
4. P2P APLIKACIJE
P2P aplikacije su vrlo popularan način razmjene podataka i informacija među korisnicima jer je
tradicionalno preuzimanje programa i aplikacija sa web stranica zastarilo.
Jedan od razloga velike popularnosti P2P aplikacija je taj što korisnik komunicira samo s jednim
poslužiteljem i preuzima željenu datoteku samo s jednog poslužitelja. Naravno, na samom
početku, korisnik mora poslužitelju poslati zahtjev za preuzimanje datoteke.
Kako se razmjena podataka temelji na međusobnom povjerenju korisnika, na P2P mreži je sve
učestalije širenje virusa i mnogih drugih napasti koje mogu izazvati i isto tako iskoristiti
zlonamjerni korisnici.
P2P aplikacije se dijele na:
aplikacije za dijeljenje podataka,
aplikacije za IM i online chat,
aplikacije za glasovnu i pisanu komunikaciju (VoIP),
aplikacije za multimediju i
aplikacije za suradnju i grupe za rasprave.
4.1. P2P mreže za dijeljenje podataka
Razmjena podataka među korisnicima vjerojatno je najuspješnija primjena P2P mreža. U većini
slučajeva, preuzimanje sa P2P mreža je brže od izravnog preuzimanja s poslužitelja.
Danas, prijenos podataka ljudi rade svakodnevno što je jedan od razloga razvijanja niza
računalnih programa koji korisnicima omogućavaju preuzimanje besplatnih sadržaja od drugih
korisnika.
Najpoznatiji P2P protokoli za dijeljenje podataka su BitTorrent, Gnutella, Napster i eDonkey.
BitTorrent
BitTorrent je najpoznatiji protokol za dijeljenje podataka među korisnicima koji je razvio Bram
Cohen. On omogućava brzo preuzimanje velikih datoteka pritom koristeći minimum
Internetskog opsega. Besplatan je i ne sadrži špijunske programe niti bilo kakve reklame.
BitTorrent ima svoj žargon, a neke od najčešćih riječi koje se koriste su :
17
Lechees - korisnici koje preuzimaju određenu datoteku, ali je ne dijele sa svog računala.
Seed ili Seeder - korisnici kod kojih se nalazi BitTorrent datoteka koju drugi korisnici
preuzimaju. Kako bi BitTorrent radio, potreban je najmanje jedan seed.
Swarm - grupa računala koja stimulativno šalje ili prima istu datoteku.
.torrent - ekstenzija same datoteke koja se preuzima koristeći BitTorrent.
Tracker - poslužitelj procesa BitTorrent prijenosa.
Slika 4.1.Prikaz rada BitTorrent-a
BitTorrent protokol prebacuje dio posla koji se bavi pretragom za datotekama na centralni
server koji se zove tracker. Korisnici da bi preuzeli datoteku moraju je i dijeliti, što dovodi do
zaključka da BitTorrent radi na principu “ Ja tebi, ti meni.“
Poznate aplikacije čiji se rad temelji na BitTorrent protokolu su:
µ Torrent,
Vuze(Azureus),
Bitcomet,
rTorrent.
18
Gnutella
Gnutella je protokol za dijeljenje većinom glazbenih datoteka. U ožujku 2000. godine razvili su
je Justin Frankel i John Pepper, a danas je razvijaju članovi GDF-a (engl. Gnutella Developer
Forum-a). Gnutellu podržavaju aplikacije kao što su BearShare, Limewire, Frostwire, Shareaza.
Limewire je P2P aplikacija koja koristi Gnutellin protokol i koja se koristi za razmjenu datoteka.
Izgrađena je na platformi mediaplayer-a sa optimiziranim rezultatima pretrage. Postoji besplatna
verzija, ali i komercijalna.
Shareaza ili Gnutella 2 odvaja se od ostalih P2P aplikacija po tome što može pretraživati više
P2P mreža. Ona je započela kao Gnutellin klijent, ali njezin autor Michael Stokes je potpuno
preradio originalnu Gnutellinu specifikaciju i nazvao je Gnutella 2. Gnutella 2 je besplatna, brza,
ima elegantno sučelje i jednostavno se koristi.
Slika 4.2. Izgled aplikacije Shareaza
19
Napster
Napster je bio poznata aplikacija koju je razvio 1999. godine student Shawn Fanning kako bi
korisnici mogli besplatno razmjenjivati MP3 datoteke. Napster je svoju najveću popularnost
postigao u veljači 2001. godine. Međutim, glazbenoj industriji se takav koncept dijeljenja
njihovih proizvoda nije svidio, pa su uslijedile tužbe zbog kojih je Napster morao prestati s
radom 2001.godine.
eDonkey
eDonkey protokol koriste aplikacije kao što su aMule, eMule, Morpheus i Shareaza.
eMule je aplikacija za dijeljenje podataka između korisnika. Jedna od glavnih prednosti ove
aplikacije je ta što ima otvoreni kod koji omogućuje programerima pridonijeti aplikaciji, čineći
je efikasnijom. eMule je besplatna aplikacija koja ne koristi nikakve zlonamjerne ni reklamne
softvere.
4.2. P2P aplikacije za IM i online chat
Prema popularnosti među korisnicima, najpopularnije aplikacije za slanje trenutačnih poruka
(engl. Instant Messaging, skraćeno IM) i online chat su:
Windows Live Messenger
Yahoo! Messengler
Tencent QQ.
Windows Live Messenger
Windows Live Messenger je bio najpopularniji medij za online dopisivanje. On je pružao usluge
dijeljenja podataka i razmjene poruka s vremenskom oznakom. Prvi put je ušao u korištenje pod
imenom MSN Messenger i to 1999. godine, a u sadašnje ime preimenovan je tek 2005. godine.
U prvoj četvrtini 2013. godine Windows Live Messenger postao je prošlost za sve korisnike
(osim Kine) jer se integrirao u Skype. Sve što je bilo moguće i dostupno u Windows Live
Messengeru sada je dostupno i u Skype-u.
20
Slika 4.3. Izgled aplikacije Windows Live Messengler
ICQ
ICQ je IM klijent za slanje trenutačnih poruka. Ime potječe od englleskog izraza “I seek you“,
što u hrvatskom prijevodu znači “Tražim te“. Program je prvi put izašao 1996. godine, a izradio
ga je Mirabilis, izraelska tvrtka iz Tel Aviva. ICQ se neprestano nadograđuje, stoga postoji
mnogo verzija programa, a uz IM funkcije, korisnicima nudi i multiplayer igre, prijenose
datoteka, audio i video komunikaciju itd.
Tencent QQ
Tencet QQ popularno poznat i kao QQ je klijent za slanje trenutačnih poruka. On je
najpopularniji kineski IM klijent, a treći najpopularniji klijent u svijetu. Svojim korisnicima nudi
razne usluge uključujući multiplayer igre, skupni i glasovni chat, servis za preuzimanje melodija
itd.
21
4.3. P2P aplikacije za glasovnu i pisanu komunikaciju (VoIP)
VoIP (engl. Voice over Interner Protokol) je opći pojam za glasovnu i pisanu komunikaciju
preko Interneta. VoIP u užem smislu riječi predstavlja IP telefoniju jer se glas prenosi putem
Interneta od pozivatelja do odredišta. IP telefonija ne koristi se nužno samo za prijenos glasa
putem Interneta, već se koristi i za prijenos glasa i slike preko IP komunikacijskog kanala.
P2P aplikacije koje podržavaju VoIP su Skype, ICQ i Windows Live Messengler.
Skype
Skype je najpopularnija aplikacija za glasovnu i pisanu komunikaciju. Danas ima preko 310
milijuna korisnika kojima dopušta telefoniranje preko Interneta. Skype svojim korisnicima nudi
i mogućnost prijenosa podataka, video telefoniju i video konferencije, slanje kontakata i slanje
novca na račun. Kreatori ove aplikacije su Niklas Zennstrom i Janus Friis.
Slika 4.4. Izgled korisničkog sučelja aplikacije Skype
22
4.4. P2P aplikacije za multimediju
P2P aplikacije za multimediju koriste se za legalnu distribuciju softvera i multimedije. Ovaj
način pregledavanje multimedijskog sadržaja najčešće uključuje preslušavanje glazbenih zapisa,
gledanje video zapisa, te gledanje televizijskih programa.
Vrsta pregledavanja multimedijskih sadržaja kod P2P mreža naziva se peercasting i razlikuje se
od standardnog načina emitiranje sadržaja (engl. Broadcasting) u načinu dijeljenja sadržaja. U
peercastingu svaki sudionik mreže koji pregledava multimedijske sadržaje, šalje te iste sadržaje
drugim sudionicima mreže. Jedne od P2P aplikacija za multimediju su Blizzard Downloader i
P2PTV.
4.5. P2P aplikacije za suradnju i grupe za raspravu
Glavni predstavnik aplikacija za suradnju i grupa za raspravu je aplikacija Microsoft Groove.
Aplikacije koje pripadaju ovoj kategoriju namijenjene su korisnicima koji rade na istom projektu
tako što im omogućava komunikaciju, lakšu suradnju i pregled rada drugih članova tima, a sve u
cilju postizanja zajedničkog cilja.
Microsoft Groove
Microsoft Groove je inicijalno dizajnirao Ray Ozzie,a da nas je u vlasništvu Microsofta.
Aplikacija je bazirana na konceptu radnih okruženja (engl. workspaces) koje korisnici mogu
sami kreirati i pozivati nove korisnike. Microsoft Groove je aplikacija namijenjena korisnicima
koji rade zajedno na projektima, a često su nedostupni (engl. offline). Osim radnih okruženja,
aplikacija se sastoji od prostora za datoteke, prostora za diskusiju te IM usluga.
23
Slika 4.5. Izgled aplikacije Microsoft Office Groove
24
5. PRINCIPI RADA P2P MREŽA
Funkcioniranje P2P mreža, kao i redoslijed operacija koje obavlja novi čvor koji se priključuje u
mrežu, odvija se u tri koraka:
formiranje nad-mreže, odnosno otkrivanje virtualne topologije nad mreže,
pretraživanje nad-mreže u potrati za čvorovima koji sadrže željene podatke,
prijenos korisničkih podataka između čvorova.
5.1. Formiranje nadmreže
Pojam nad-mreža (engl. Overlay network) kod P2P mreža predstavlja virtualnu mrežu čvorova
čija povezanost ne ovisi o topologiji fizičke računalne mreže koja ih povezuje, niti o protokolu
kojim pojedini čvorovi komuniciraju. Upravljanje nad-mrežama je ključno za održavanje P2P
sustava. One često moraju obrađivati velik broj priključivanja i odspajanja čvorova, istovremeno
osiguravajući približno jednako ponašanje za sve čvorove. Dakle, moraju biti visoko dinamične i
simetrične.
Prvi korak u stvaranju nad-mreže je međusobno otkrivanje čvorova koji sudjeluju u mreži.
U danas korištenim P2P mrežama koristi se nekoliko načina na koji čvorovi koji se priključuju
otkrivaju druge čvorove prisutne u nad-mreži:
pomoću pred-definirane liste adresa "uvijek prisutnih" čvorova,
pomoću pred-definirane adrese poslužitelja koji sadrži adrese aktivnih čvorova,
dohvaćanjem liste čvorova ili poslužitelja putem eksternih protokola (HTTP, FTP),
korisničkim unosom čvora za čije postojanje korisnik doznaje na neki drugi način,
korištenjem funkcionalnosti mrežnih slojeva (TCP/IP).
Prva dva načina otvaraju mogućnost onemogućavanja mreže utjecanjem na ključne čvorove ili
poslužitelje, ali se često koriste zbog jednostavnosti. Primjeri sustava koji koriste ovakav način
rada su Napster i Kazaa. Kod ovakvih sustava svi čvorovi su u stalnom kontaktu sa "uvijek
prisutnim" čvorovima ili poslužiteljima koji sadrže liste aktivnih čvorova.
25
Kod trećeg i četvrtog načina lista dostupnih čvorova i poslužitelja se čuva odvojeno od
klijentskih aplikacija. Na ovaj način rade sustavi kao BitTorrent i DC++.
Samostalno otkrivanje drugih čvorova korištenjem mrežnih slojeva se koristi rijetko, uglavnom u
specijaliziranim rješenjima namijenjenim korištenju u malim zatvorenim mrežama.
Također se ponekad koristi kao pomoćni način u slučaju kad drugi korišteni načini ne uspiju
pronaći pogodne čvorove. Primjer ovakvog sustava je Gnutella.
5.2. Pretraživanje nad-mreže
Da bi čvorovi u P2P mreži uspješno razmjenjivali informacije, one moraju biti strukturirane te
mora biti moguće uspostaviti kriterije po kojima su one pohranjene i po kojima ih se može
pronaći. Mogućnosti pretraživanja uvelike ovise o načinu na koji je izvedeno formiranje nad-
mreže, odnosno njenoj topologiji. Kod sustava gdje postoji središnji poslužitelj moguće je
konstantno održavati popis svih čvorova koji sudjeluju u nad-mreži, što osigurava da korisnički
upit bude proslijeđen do svih čvorova, te da je vrijeme potrebno da svi čvorovi odgovore donekle
predvidljivo. S druge strane, kod potpuno decentraliziranih P2P mreža upit se mora propagirati
nad-mrežom od jednog čvora preko njegovih susjednih čvorova itd., te nije moguće garantirati
da će upit stići do svih čvorova (npr. u slučaju ispadanja dijela čvorova ili nedovoljne mrežne
propusnosti), niti se može predvidjeti vrijeme potrebno da upit obiđe sve čvorove. Zbog toga se u
praktičnim primjenama ovog tipa mreža često uvode "posebni" čvorovi koji imaju više resursa
na raspolaganju, te su povezani sa daleko većim brojem drugih čvorova. Tada "obični" čvorovi
preferiraju slati upite ovim "posebnim" čvorovima. Način proglašavanja čvora "posebnim" može
biti statičan (unaprijed predviđen od autora sustava ili od korisnika) ili dinamičan (testiranjem
pogodnosti čvorova tijekom rada sustava).
Kod velikih P2P mreža, od velike je važnosti osigurati što brže pretraživanje nad-mreže.
Ako su podaci jednostavnog oblika, kao što su imena datoteka i/ili ključne riječi koje ih opisuju,
moguće je koristiti vrlo efikasne tehnike zasnovane na raspodijeljenim raspršenim tablicama.
26
5.2.1. Hash tablice
Pretraživanje datoteka u P2P mreži se temelji na principu “poplave upita“ (engl. query flooding)
ili generiranje popisa datoteka unaprijed. Distribuirane hash tablice (engl. Distributed hash table
skraćeno, DHT) su predstavljene 2001. godine preko projekata Chord, Kademlia, Pastry i
Tapestry. Glavna ideja DHT tablica je smanjenje broja upita i nepotrebnog zagušenja mreže koju
koristi tehnika "poplave upita" što može rezultirati i DOS (engl. Denial of service) napadima. Za
vrijeme uspostavljanja mreže generiraju se tablice usmjeravanja (engl. routing tables) te se
obnavljaju prilikom ulaska ili izlaska čvora sa mreže izostavljajući potrebu za protokolom
usmjeravanja (engl. routing protocol).
Dijelovi tablica u DHT mreži su raspoređeni odvojeno preko različitih mreža. Prilikom dijeljenja
datoteke na mreži, datoteka se zapisuje u DHT tablicu te se izračunava hash vrijednost i vraća
vrijednost koja postaje identitet datoteke (ID). Datoteka je potom objavljena na čvoru koji
posjeduje popis hash vrijednosti i ID datoteke. Za pretraživanje specifične datoteke ili lociranja
čvora se radi na principu da se dobije hash vrijednost datoteke ili čvora te se pošalje upit s hash
vrijednosti kao odredišna adresa.
Baza podataka sadrži par podataka (ključ,vrijednosti):
- ključ: ime filma; vrijednost: IP adresa,
- ključ: ime na skype mreži; vrijednost: IP adresa.
Čvorovi vrše pretragu baze s imenom ključa te baza vraća vrijednosti koja se slaže s traženim
ključem. Čvorovi mogu unijeti i par (ključ,vrijednost) za čvorove. Svaki ključ je mapiran na
cijelobrojni broj te je svakom pojedinačnom čvoru dodijeljen broj u istom dometu. Prostor
vrijednosti ključeva mora biti dovoljno velik tako da se ključevi ne „sudaraju“. Za primjer, sha
(engl. secure hash algorithm ) je hash funkcija koja uzima niz znakova i generira ključ od 128
bita (2128
) što je veliki raspon vrijednosti.
5.3. Prijenos podataka između čvorova
Čvorovi u P2P mrežama uspostavljaju izravnu vezu među sobom te razmjenjuju podatke
koristeći TCP (engl. Transmission Control Protocol, protokol kontrole prijenosa) i UDP (User
Datagram Protocol, protokol kratkih korisničkih poruka) protokol.
27
5.3.1. TCP protokol
TCP protokol je protokol prijenosne razine TCP/IP komunikacijskog modela. To je pouzdan
protokol koji podatke tretira kao kontinuirani slijed, a ne kao skup međusobno neovisnih poruka,
te jamči isporuku podataka na odredište. TCP je spojevni protokol, što znači da uspostavlja
logičku vezu ili virtualni kanal između dva krajnja uređaja. Osim toga, TCP pruža i mogućnost
višestrukih istovremenih konekcija prema jednoj aplikaciji na jednom domaćinu od strane više
klijenata. Pouzdanost protokola je osigurana tako da se za svaki poslani segment očekuje potvrda
prijema. Ako nakon isteka određenog vremenskog intervala potvrda ne stigne, ili stigne
informacija o greški u primljenim podacima, prijenos se ponavlja sve dok ne stigne pozitivna
potvrda prijema.
5.3.2. UDP protokol
UDP protokol je također protokol prijenosne razine, ali je jednostavniji od TCP protokola jer ne
vodi računa o izgubljenim paketima, te hoće li paketi stići istim redoslijedom kojim su poslani.
Zbog toga UDP paketi imaju znatno manje zaglavlje.
Postoji nekoliko slučajeva kada se za prijenos koristi UDP umjesto TCP protokola:
kada je potrebno poslati manji blok podataka, veličine jednog paketa, pa je
jednostavnije i brže prenositi samo podatke (uz UDP zaglavlje), bez dodatnih kontrola,
a u slučaju pogrešnog prijema poslati ponovno,
za slanje upita jednog čvora drugom, uz ponavljanje upita ako odgovor ne stigne nakon
isteka određenog vremenskog intervala; na upit se također može odgovoriti primjenom
UDP protokola,
za prijenos podataka aplikacija koje imaju vlastite tehnike osiguravanja pouzdanog
prijenosa, ili su manji gubici dozvoljeni.
28
6. POHRANA PODATAKA NA P2P MREŽAMA
Čvorovi na Internetu surađuju na principu tako da je svaki čvor je potrošač i proizvođač
podataka. Čvorovi žele pohraniti podatke na P2P mreži iz više razloga:
pohrana lokalnih podataka,
sinkronizacija podataka između više računala ili
dijeljenje datoteka s drugim čvorovima.
Iz perspektive jednog čvora u P2P mreži, P2P proces pohrane replicira lokalne podatke na
čvorovima, a zauzvrat prima podatke od čvorova za daljnju upotrebu od strane tih čvorova (Slika
6.1.). Lokalni podaci mogu biti spremljeni u drugim čvorovima te kad jedan ili više čvorova
napusti mrežu, podatci će još biti dostupni na jednom od preostalih čvorova. Jednom kad se
podaci distribuiraju preko čvorova, potrebno je izvršiti održavanje redovitom provjerom koliko
je čvorova dostupno i koliko od njih posjeduje podatke koji su zatraženi za pohranu. Ovisno o
stopi napuštanja razina redundantnosti se smanjuje te se mora popraviti redistribucijom dijelova
originalnih podataka na nove čvorove.
Slika 6.1. Metoda pohrane podataka
p2p storage process
local data
storage
peer data
storage
29
6.1. Redundantnost podataka
P2P mreža može rasti ili se smanjivati različitom dinamikom. U nekim slučajevima, čvorovi
napuštaju mrežu velikom brzinom dok u drugom slučaju vrlo sporo. Isto tako u nekim mrežama
čvorovi rade u izvan mrežnom radu neko vrijeme bez da kompletno napuste mrežu. Stopa po
kojoj čvorovi napuštaju i pristupaju mreži se zove stopa napuštanja (engl. churn rate). Česta
nuspojava redundantne pohrane podataka na čvorove je disperzija podataka na geografski
dislocirane čvorove. Efekt smanjuje rizik gubitka podatka u slučaju požara ili prirodnih
katastrofa.
Razina redundancije određuje minimalni dio (čvorova koji pohranjuju podatke) koji je potreban
da bi se podaci uspješno vratili u izvornom obliku. Visoka redundantnost rezultira minimalnim
dijelom za vraćanje izvorne datoteke, ali vrši veću potrošnju mrežne propusnosti – isti podatak
mora bit spremljen na više čvorova i prilikom uploada svaki čvor mora primiti svoj dio.
Razina redundantnosti zahtijeva puno prostora na disku (na lokalnom čvoru) te korisnici P2P
mreže moraju uvijek balansirati razinu redundancije s količinom mrežnog prometa potrebnog za
pohranu podataka. Mreže s visokom dinamikom zahtijevaju više mrežnih resursa za održavanje
određene razine redundantnosti.
6.2. Brisanje oznaka (engl. erasure codes)
Redundantnost se može postići replikacijom podataka na više čvorova. U kasnijoj fazi,
mogućnost da je čvor dio mreže nije velika pa replikacija zahtijeva distribuciju podataka na
određeni broj čvorova da bi se garantirao pronalazak traženog podatka.
Druga metoda za postizanje redundancije je brisanje oznaka na podacima. U teoriji informacija
brisane oznake se koriste kao ispravak grešaka koje se akumuliraju prilikom prijenosa podataka.
Originalni podaci su kodirani u duže poruke tako da je na odredištu samo dio podataka potreban
za kompletnu rekonstrukciju.
30
Slika 6.2. Faze stanja podataka prilikom pohrane i vraćanja podataka u P2P mreži
Kada se primjenjuje tehnika brisanja, oznaka na skladište podataka datoteka je podijeljena u k
dijelova i kodirana u n fragmenata, gdje je k<n i veličina fragmenta konstantna. Omjer n/k
pokazuje koliko je još dodatnog prostora potrebno uspoređujući s originalnom veličinom
datoteke. Glavna značajka tehnike brisanja oznaka je da je bilo koji k dio potreban da bi se
vratila izvorna datoteka. Odmah se može primijetiti prednost u odnosu na standardnu
redundanciju podataka te je spomenuta tehnika raširena među P2P mrežama.
Da bi se pokazala razlika između korištenja replikacije i tehnike brisanja oznaka prikazana je
P2P mreža od 10000 čvorova od kojih je 10% u izvan mrežnom radu, te razina replikacije 2
(datoteka zauzima svoju duplu veličinu na skladištima podataka u P2P čvorovima). U tom
slučaju, mogućnost da je barem jedna od dvije kopije dostupna je 0.99. Kada se fragmentira
originalna datoteka u 8 dijelova (pohranjena od 16 dijelova u n čvorova) mogućnost pronalazaka
najmanje 8 dijelova je 0.99994.
Original file
Redundant fragments (n = 6)
Fragments stored at peers
Loss of fragments due to peer
churn or temporal unavailability
Remaining fragments
stored at peers
Retrieved fragments ( ≥ k)
Original file
Encode
Upload to peers
Download from peers
Decode and join
Split
Fragments (k = 3)
31
6.3. Asimetrično čitanje i pisanje podataka
Novi podaci na jednom od čvorova se moraju redundantno pohraniti na ostalim, što zahtijeva
upload dijelova ili kopiju podataka na više čvorova. Prilikom vraćanja podataka čitajući s
čvorova, samo se mali dio podataka treba preuzeti s čvorova koji su dio mreže što čini čitanje i
pisanje asimetričnim zbog toga što količina podataka za pisanje je veća od onih za čitanje.
Ovakav princip nije nikako u skladu s ADSL (engl. Asymmetric Digital Subscriber Line)
mrežama koju posjeduje većina korisnika gdje je download puno veći od upload-a. Drugim
riječima, čitanje podataka je vrlo brzo što olakšava vraćanje izvornih podataka u slučaju gubitka
originala. Međutim, limitirani upload kapacitet uzrokuje poteškoće kada se na čvorove koji su
dio mreže želi spremiti velika količina podataka u malom vremenu. Za upload kapacitet od 2
Mbit/s i datoteku veličine 500Gb potrebno je 23 dana da bi se podaci u potpunosti prebacili na
čvorove koji su dio mreže bez redundancije.
6.4. Kvota i pravedna razmjena podataka
U velikim P2P mrežama, čvorovi doprinose različitim količinama resursa (diskovni prostor i
mrežna propusnost) te zauzvrat očekuju primanje iste količine podataka. To znači da se mora
implementirati mehanizam koji osigurava pravednu razmjenu podataka. Ako P2P omogućava da
pojedini korisnici primaju veliku količinu podataka, a za uzvrat ne daju ništa, mreža brzo gubi
na vrijednosti.
Velike P2P mreže koriste razne mehanizme za primjenu pravedne razmjene podataka za
pojedinačne čvorove. Jedno od rješenja je da čvorovi nadziru jedni druge te kazne čvor koji ne
poštuje pravila brisanjem podataka. Uz diskovni prostor i mrežnu propusnost, također je važno
vrijeme trajanja pripadnosti mreži - ako je čvor dio mreže mali dio vremena njegovi resursi su
neiskoristivi zbog toga što im drugi čvorovi ne mogu pristupiti.
32
6.5. Klasifikacija proizvoda za pohranu podataka
P2P tehnologije koje se koriste za razne tipove potreba za pohranom podatka su:
Pohrana. Korištenjem ovog servisa podaci s lokalnog računala se pohranjuju na drugo
mjesto u lokalnoj mreži što uključuje konstantno praćenje verzija datoteka i promjene
tijekom vremena.
Sinkronizacija podataka. Održavajući istu listu datoteka na različitim računalima
podrazumijeva sinkronizaciju. Kada se jedna datoteka na računalu izmjeni, kopija te
datoteke se automatski obnavlja na drugim računalima. Ovaj tip funkcionalnosti se
mora suočiti s problemom u slučaju da se ista datoteka promjeni u isto vrijeme na
različitim računalima.
Distribuirani datotečni sustav. Skladišni online kapaciteti u P2P mrežama se koriste za
implementaciju distribuiranog datotečnog sustava. Jedan ili više računala pristupaju
pohrani na način koji je vrlo sličan lokalnom datotečnom sustavu. Aplikacija na
računalu može pristupiti podacima na udaljenom računalu kao da se nalaze na
lokalnom.
Dijeljenje sadržaja. Dijelovi liste datoteka koji su pohranjeni online se koriste za
dijeljenje datoteka s drugim osobama. Pružajući akreditaciju drugim osobama, oni
mogu koristiti P2P mrežu za čitanje dijela liste podataka za koji imaju pristup.
33
7. SIGURNOST P2P MREŽA
Sigurnost je ključna komponenta svakog računalnog sustava, a posebno P2P mreža.
U današnjem vremenu nitko ne razmišlja puno o potrebi sigurnosne zaštite pri upotrebi P2P
aplikacija. Međutim, razni primjeri u prošlosti pokazali su da su razne financijske prevare dovele
P2P sustav pod povećalo kad je u pitanju sigurnost podataka. Slika 7.1. ilustrira sigurnosne rupe
prilikom korištenja P2P aplikacija. Može se lako uvidjeti kako P2P aplikacija ugrožava sigurnost
„sigurne mreže“ opremljene vatrozidom (engl. firewall).
Slika 7.1. Mreža opremljena vatrozidom
Glavni aspekti sigurnosti su kontrola konekcije (engl. connection control), kontrola pristupa
(engl. Access control), kontrola prometa (engl. operation control), anti-virusna zaštita i zaštita
podataka na osobnim računalima.
7.1. Vanjske sigurnosne prijetnje
P2P mrežni promet omogućava da mreža bude otvorena za razne oblike napada, špijunažu i
zlonamjerno korištenja osobnih podataka. Aplikacije kao što su Napster i Kazaa omogućavaju
zaposlenicima skidanje raznih datoteka što predstavlja višestruki problem korporacijskim
34
mrežama kao što su korištenje skupe mrežne propusnosti i podložnosti napadima virusa putem
inficiranih preuzetih datoteka.
Nažalost, P2P mreža zaobilazi sigurnost korporativne mreže pružajući decentraliziranu
administraciju, zajedničku pohranu podataka, kao i način da zaobiđe kritične stupove obrane kao
što je vatrozid i NAT (engl. Network Address Translation) uređaj.
7.1.1. Računalni virusi i crvi
U P2P mreži virusi i crvi se najčešće predstavljaju korisnicima kao korisni programi. Korisnici
tako prevareni preuzimaju te programe i dovode u opasnost svoje računalo. Virusi su
zlonamjerni programi koji se zapisuju na tvrdi disk računala i koji mogu zaraziti druge programe,
modificirajući ih tako da uključe novu kopiju. Crvi su također zlonamjerni programi koji šire
svoje funkcionalne kopije na druga računala. Služe se računalnim mrežama, ali se se ne spajaju
parazitski sa drugim programima.
Posebni tipovi virusa i crva koji se javljaju samo u P2P mrežama, najčešće na eDonkey mreži su
Swen, Fizzer, Lirva, Benjamin, KwBot, itd.
7.1.2. Backdoor pristup
Ako korisnik pokrene P2P aplikaciju, a zatim provjeri elektroničku poštu, napadač može to
iskoristi kao “stražnja vrata“ napad (engl. backdoor, dopušta neautorizirani pristup sustavu) kako
bi pristupio korporativnoj lokalnoj mreži.
7.1.3. Nezaštićene poruke
Aplikacije za slanje poruka poput AOL, Microsoft i Yahoo, također predstavljaju prijetnju
informacijskog društva. Ako su te aplikacije koriste za razmjenu osjetljivih informacija, napadač
može pročitati sve poruke pomoću programa za nadzor mreže. Takvi programi su razvijeni i
pojačani s novim mogućnostima poput glasovnih poruka i dijeljenja datoteka čime se može
ugroziti sigurnost.
35
7.1.4. Povjerljivost
Kazaa i Gnutella dopuštaju svim klijentima izravan pristup datotekama koje su pohranjene na
korisnikovom disku. Postoji mogućnost da napadač dozna koji tip operacijskog sustava čvor
posjeduje te pristupiti tajno dijeljenim datotekama.
7.2. Sigurnosni mehanizmi
Jedan od najvećih problema P2P mreža je neograničen i nekontrolirani pristup korisnicima
mreže. Iz ovog razloga mnogi P2P programi koriste sigurnosne mehanizme kao što su
tehnike tajnog ključa,
tehnika javnog ključa,
tehnika parova asimetričnih ključeva.
7.2.1. Tehnike tajnog ključa
Tehnika tajnog ključa je zasnovana na činjenici da pošiljatelj i primatelj dijele zajednički tajni
ključ koji se koristi za razne kriptografske tehnike kao što je šifriranje i dešifriranje poruka te
stvaranje i verifikacija podataka. Tajni ključ se mora izmijeniti posebnom procedurom prije
razmjene podataka.
7.2.2. Tehnika javnog ključa
Tehnika javnog ključa je zasnovana na korištenju parova asimetričnih ključeva. Obično jedan
korisnik posjeduje jedan par ključeva. Jedan dio je dostupan javno, dok je drugi dio privatan.
Zbog toga što je javni dio ključa dostupan nije potrebna razmjena ključeva, ali je potrebna
infrastruktura za distribuciju ključa. Pošto nema potrebe za dijeljenje tajnog ključa prije
komunikacije ova tehnika je idealna za uspostavljanje sigurne komunikacije između osoba koji
se ne poznaju.
7.2.3. Asimetrični parovi ključeva
Za razliku od glavnog ključa koji otključava vrata te omogućava osobi da zaključa i otključa
36
vrata po želji, javni ključ koji se koristi u kriptografiji je asimetričan. To znači da javni ključ
može samo zaključati vrata te ih nije u mogućnosti otključati.
7.3. Budućnost sigurnosti P2P mrežna
Konstantno goruća tema za P2P sigurnost je povjerenje. Povjerenje u korisnike s kojima se
komunicira i povjerenje u proizvođače programske podrške koji nas opskrbljuju s potrebnim
aplikacijama.
Jedna od zanimljivih ideja je da korisnici dobivaju povjerenje u P2P zajednici preko
jedinstvenog digitalnog potpisa kao što je IP adresa, ali ne po računalu već korisniku. Za
pojedinačni digitalni potpis bi se vezala razina povjerenja koja bi varirala od 0 do 20. Ovisno o
ponašanju korisnika u prošlosti, njihova razina sigurnosti se povećava ili smanjuje.
Predloženi plan je da se razina povjerenja u početku postavi na nisku razinu čime bi se spriječili
nepoželjni korisnici koji bi kreirali nove profile i dobili veliku razinu povjerenja odmah u
početku. Korisnici bi trebali biti aktivni na mreži neko vrijeme prije nego bi se povećala razina
povjerenja. Isto tako korisnik bi mogao pohraniti podatke ostalih poznatih korisnika s kojima bi
htjeli dijeliti lokalnu razinu povjerenja.
Ovaj prijedlog ima mnogo prepreka te je samo ideja koja se treba razvijati. Glavna prednost je u
tome što nema centralnog autoriteta već su to sami korisnici. Ako javna mreža želi sniziti razinu
povjerenja korisnika on/ona će izgubiti kredibilitet i biti odbačena od strane drugih korisnika.
Ideja isto tako nagrađuje prave korisnike za njihove doprinose i primjereno ponašanje na javnoj
mreži.
7.3.1. Biometrika
Biometrika uključuje korisnikove jedinstvene osobine u cilju autentifikacije. Osobine koje se
najčešće koriste kod osobe je slika lica, potpis, otisak prsta ili uzorak mrežnice. Jedna ključna
značajka biometrije je da korisnik više ne treba pamtiti zaporke ili pohraniti sve ključne podatke,
što je glavna slabost u konvencionalnim sustavima autentifikacije. Tehnologija može imati jaku
implementaciju u integraciji s drugim sigurnosnim tehnikama kao što su prethodno opisani
kriptografski certifikati. Mnogi stručnjaci vide budućnost biometrike koja bi igrala ključnu ulogu
u omogućavanju implementacije infrastrukture javnog ključa štiteći javne i privatne ključeve u
tehnologiji pametnih kartica.
37
8. PRAKTIČNI RAD
8.1. Uvod
U ovom praktičnom radu je jednostavnom aplikacijom za komunikaciju između korisnika
prikazan jedan od načina upotrebe P2P mreža.
Aplikacija je izrađena Microsoft-ovim alatom Visual Studio 2010, a izvorni kod je napisan u
programskom jeziku C#. Sastoji se od jedinstvenog Visual Studio rješenja koje sadrži dva
projekta. Prvi projekt definira grafičko sučelje, a drugi logiku aplikacije te mrežnu
funkcionalnost.
8.2. Grafičko sučelje
Za izradu grafičkog sučelja korišten je WPF (Windows Presentation Foundation), skup datoteka
koji osigurava sve grafičke elemente aplikacije (prozore, tekstualna polja,...) te upravlja
interakcijom korisnika s aplikacijom (tipkanje na tastaturi, upravljanje mišem).
Prilikom pokretanja Visual Studio 2010 izabere se „File->New->Project“, pa „WPF Application“
predložak. Za ime projekta izabrano je ime „SimpleChatUI“ unutar novog rješenja imena
„SimpleChat“.
38
Slika 8.1. Kreiranje novog projekta SimpleChatUI
WPF aplikacijski predložak će otvoriti alat za razvoj grafičkog sučelja (engl. Graphical User
Interface, skraćeno GUI). Glavni prozor aplikacije će biti automatski generiran, kao i
MainWindow.xaml, datoteka XML formata koja definira raspored i svojstva GUI elemenata.
GUI se sastoji od glavnog prozora unutar kojeg su dva tekstualna okvira: u jednom će se
prikazivati poruke koje korisnici šalju, a drugo će služiti za pisanje samih poruka.
Da bi se dodali tekstualni okvir, pritisne se „Toolbox“ tab na lijevoj strani ekrana, čime se proširi
pregled GUI elemenata, te se dovuku dva tekstualna okvira na glavni prozor.
39
Slika 8.2. Dodavanje tekstualnih okvira
U XAML uređivačkom sučelju, u donjem dijelu ekranu prilagodi se veličina, smještaj i imena
GUI elemenata mijenjajući XAML kod:
MainWindow.xaml:
<Window x:Class="SimpleChatUI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Simple Chat" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="35*"/>
<RowDefinition Height="35"/>
</Grid.RowDefinitions>
<TextBox HorizontalAlignment="Stretch" Margin="6,6,6,6" Name="chatDisplayTextBox"
VerticalAlignment="Stretch" Width="Auto" Height="Auto" Grid.Row="0"/>
<TextBox Height="23" HorizontalAlignment="Stretch" Margin="6,6,6,6"
Name="entryFieldTextBox" VerticalAlignment="Stretch" Width="Auto" Grid.Row="1"
KeyDown="entryFieldKeyDown"/>
40
</Grid>
</Window>
Kod 1. MainWindow.xaml
Kod upisivanja koda može se primijetiti da sučelje Visual Studio pomaže u odabiru ključnih
riječi. Primjerice, polja kao što su HorizontalAlignment imaju konačan broj vrijednosti koje se
mogu izabrati. Isto tako postoji pred-određeni niz događaja na koje tekstualni okvir odgovara.
Izabran je događaj „KeyDown“ na „entryFieldTextBox“ okviru. Tu se navodi metoda koja se
izvršava kad se pritisne neka tipka na tipkovnici dok je fokus na tom polju. U samoj metodi se
provjerava je li korisnik pritisnuo tipku "Enter", kojom se šalje poruka.
Nakon uređivanja MainWindow.xanl izabere se MainWindow.xaml.cs tabulator čime se dolazi
do izvornog koda iza grafičkog sučelja.
Slika 8.3. Prva verzija P2P aplikacije
Nakon što se aplikacija uspješno pokrenula, zaustavi se pritiskom na shift-F5.
Do sada klasa MainWindow sadrži tri metode: Glavni konstruktor (MainWindow),
textBoxEntryField_KeyDown - rukovoditelj događajima te DisplayMessage - metodu za prikaz
teksta. Isto tako definirana je jedna varijabla mChatService kojom će se instancirati objekt koji
41
upravlja funkcionalnošću pozadine.
8.3. Pozadinska komunikacija
U Solution Exploreru , desnim klikom na „Solution SimpleChat“ odabere se „Add-New
Project…->Class Library“ naziva ChatService.
Slika 8.4. Dodavanje novog projekta
Projekt će sadržavati cijeli komunikacijski kod koristeći jedan od postojećih WCF predložaka
umjesto generičkih C# klasa. Kod se sastoji od dvije C# datoteke: ChatServiceInterface sučelja
koji definira skup metoda pozadinske komunikacije, te ChatService klasa koja sadrži kod za te
metode. Prvi korak je kreiranje sučelja desnim klikom miša na „ChatService“ i odabira „Add-
>New Item->Interface“ naziva ChatServiceInterface.cs.
42
Slika 8.5. Dodavanje sučelja ChatServiceInterface
Prije pisanja koda za ChatServiceInterface.cs potrebno je dodati reference. Koristeći WCF
datoteke doda se referenca na System.ServiceModel i Sytem.RunTime.Serilization. U Solution
sučelju, desnim klikom na References čvor kod ChatService projekta otvori se izbornik u kojem
se odabere „Add Reference“ te se dodaju gore spomenute dvije reference.
U kodu je definirano da bilo koja klasa koja koristi ChatServiceInterface sučelje mora definirati
dvije metode: DisplayMessage i SendMessage. DisplayMessage metoda se poziva preko
udaljenog računala od strane korisnika s kojim se komunicira. Koristi se Send Message metoda
za pozivanje DisplayMessage metode.
DisplayMessage metoda neće vraćati vrijednosti te je u biti jednosmjerni komunikacijski
mehanizam (poruka se može poslati, ali to ne znači da će na istu uvijek biti odgovoreno).
U ovoj datoteci definirana je klasa CompositeType koja je u mogućnosti pohraniti dvije
vrijednosti (korisničko ime i poruku), te će definirati da DisplayMessage metodi pri pozivanju
mora biti proslijeđen parametar tipa CompositeType.
Na kraju se definira delegat DisplayMessageDelegate koji pomaže da se odvoji kod grafičkog
43
sučelja od aplikacijske logike i komunikacijskog koda. Ideja je da će grafičko sučelje posjedovati
mehanizam za prikaz poruka na ekranu, ali pozadina neće imati uvid u detalje izvedbe. Kada se
aplikacija pokrene, grafički kod će koristiti delegat da bi poslao upravljačku funkciju pozadini,
koja se može pozvati samo kad pozadina želi da grafičko sučelje prikaže poruku korisniku:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace ChatService
{
[ServiceContract]
public interface ChatServiceInterface
{
[OperationContract(IsOneWay = true)]
void DisplayMessage(CompositeType messageParams);
void SendMessage(string messageText);
}
[DataContract]
public class CompositeType
{
private string mUserName;
private string mMessage;
//konstruktor bez parametara, inicijalizira mUserName i mMesage
public CompositeType()
{
44
mUserName = "(bez imena)";
mMessage = "";
}
//konstruktor s parametrima, postavlja mUserName i mMesage na zadane vrijednosti
public CompositeType(string user, string message)
{
mUserName = user;
mMessage = message;
}
[DataMember]
public string userName
{
get { return mUserName; }
set { mUserName = value; }
}
[DataMember]
public string message
{
get { return mMessage; }
set { mMessage = value; }
}
}
public delegate void DisplayMessgeDelegate(CompositeType data);
}
Kod 2. ChatSericeInterface.cs
45
Slijedeći korak je kreiranje implementacijskog koda za ChatService. Kada je kreiran ChatService
projekt, generirala se prazna Class1.cs datoteka koju se preimenuje u ChatService.cs.
ChatService klasa posjeduje slijedeće metode:
1) DisplayMessage() metoda koju poziva DisplayMessageDelegate.
2) SendMessage() metoda koristi komunikacijski kanal za pozivanje DisplayMessage()
Metode.
3) StartService() metoda za uspostavljanje komunikacijskog kanala.
4) StopService() metoda koja zatvara komunikacijski kanal.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace ChatService
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class ChatService : ChatServiceInterface
{
DisplayMessgeDelegate mDisplayMessageDeledate = null;
private string mUserName = "(bez imena)";
private ServiceHost mHost = null;
private ChannelFactory<ChatServiceInterface> mChannelFactory = null;
private ChatServiceInterface mChannel;
private ChatService() { }
public ChatService(DisplayMessgeDelegate dmd)
{
mDisplayMessageDeledate = dmd;
46
StartService();
}
~ChatService(){
StopService()
}
private void StartService()
{
mHost = new ServiceHost(this);
mHost.Open();
mChannelFactory = new
ChannelFactory<ChatServiceInterface>("SimpleChatEndpoint");
mChannel = mChannelFactory.CreateChannel();
mChannel.DisplayMessage(new CompositeType("Događaj", mUserName + " se
pridružio razgovoru."));
mDisplayMessageDeledate(new CompositeType("Info", "Da bi promijenili ime, upišite
\"ime: NOVO_IME\""));
}
private void StopService()
{
if (mHost != null)
{
mChannel.DisplayMessage(new CompositeType("Događaj", mUserName + " je
napustio razgovor."));
if (mHost.State != CommunicationState.Closed)
{
mChannelFactory.Close();
mHost.Close();
}
}
}
public void DisplayMessage(CompositeType messageParams)
47
{
if (messageParams == null) throw new ArgumentNullException("messageParams");
if (mDisplayMessageDeledate != null) mDisplayMessageDeledate(messageParams);
}
public void SendMessage(string messageText)
{
if (messageText.StartsWith("ime:", StringComparison.OrdinalIgnoreCase))
{
mUserName = messageText.Substring(4).Trim();
mDisplayMessageDeledate(new CompositeType("Događaj", "Promijenili ste ime u \""
+ mUserName + "\""));
}
else
{
mChannel.DisplayMessage(new CompositeType(mUserName, messageText));
}
}
}
}
Kod 3. ChatService.cs
Grafičko sučelje sadrži kod koji će instancirati ChatService objekt i pozivati njegove metode. Da
bi to bilo moguće, SimpleChatUI projekt mora imati referencu na ChatService projekt.
Referenca se doda desnim klikom na References tab pod ChatGUI projektom, te se odabere
„Add Reference..“ te u Projekt prozoru odabere se ChatService.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
48
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SimpleChatUI
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private ChatService.ChatService mChatService;
public MainWindow()
{
InitializeComponent();
mChatService = new ChatService.ChatService(this.DisplayMessage);
}
public void DisplayMessage(ChatService.CompositeType messageParams)
{
string userName = messageParams.userName == null ? "" : messageParams.userName;
string messageText = messageParams.message == null ? "" : messageParams.message;
chatDisplayTextBox.Text += (userName + ": " + messageText + Environment.NewLine);
}
public void entryFieldKeyDown(object sender, KeyEventArgs e)
49
{
if (e.Key == Key.Return || e.Key == Key.Enter)
{
mChatService.SendMessage(entryFieldTextBox.Text);
entryFieldTextBox.Clear();
}
}
}
}
Kod 4. MainWindow.xaml.cs
8.4. WCF konfiguracijska datoteka
Zadnji dio koda obuhvaća WCF konfiguracijsku datoteku koja se kreira odabirom na“ Tools –>
WCF Service Configuration Editor”. Opcija će pokrenuti konfiguracijski editor u novom
prozoru. Izabere se „File-> New Config“ da bi se kreirala prazna konfiguracija koja bi trebala
izgledati kako je prikazano na slici 8.6.
50
Slika 8.6. WCF konfiguracijski izbornik
S desne strane izbornika izabere se „Create a New Service“. „Service Type“ treba biti
ChatService.ChatService. “Service contract” treba biti ChatService.ChatServiceInterface.
Izabere se “Peer to Peer” kao komunikacijski mod. Adresa pozadine treba biti
net.p2p://SimpleChat.
51
Slika 8.7.Osnovni konfiguracijski parametri
52
Slika 8.8. Konfiguracijski parametri servisa
Odabere se „Endpoint: (Empty Name)” i postavi ime „SimpleChatEndpoint“. U nastavku se
pohrani aplikacija i kreira klijent. S obzirom da je ovo P2P aplikacija, ona djeluje istovremeno
kao klijent i poslužitelj. U lijevom dijelu se odabere „Client“, te u desnom dijelu „Create a New
Client“. S obzirom da je potrebno kreirati klijenta koji ovisi o konfiguraciji servisa koji je kreiran
u polju “Generate a client config from the config of the service”, potrebno je pronaći istu
konfiguracijsku datoteku u koju je pohranjen servis te pritisnuti „Next“.
53
Slika 8.9. Konfiguracija klijentskih parametara
Izabere se opcija „Bindings“ na lijevoj strani te „Create New Binding“ i netPeerTcpBinding,
Promijeni se ime konfiguracije u „unsecure“ zbog toga što će se pokrenuti nesigurna
komunikacija. Na „Security“ tabu izabrati mod: None. Potom se u lijevom dijelu izabere
unsecured->resolver. Odabere se resolver i promjeni Mode u Pnrp. Odabere se „Services-
>ChatService.ChatService->EndPoints->SimpleChatEndpoint“ u lijevom dijelu te podesi
BindingConfiguration u „unsecure“.
Isto se napravi za “Client –> Endpoints –> SimpleChatEndpoint –> BindingConfiguration”.
Pohrani se i zatvori konfiguracijski prozor. U Solution Exploreru, desni klik na SimpleChatUI
projekt i Add Existing Item te se doda App.config. Odabere se App.config datoteka te provjeri je
li ispravno kreirana:
54
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<netPeerTcpBinding>
<binding name="unsecure">
<resolver mode="Pnrp" />
<security mode="None">
<transport credentialType="Password" />
</security>
</binding>
</netPeerTcpBinding>
</bindings>
<client>
<endpoint address="net.p2p://SimpleChat" binding="netPeerTcpBinding"
bindingConfiguration="unsecure" contract="ChatService.ChatServiceInterface"
name="ChatEndpoint" kind="" endpointConfiguration="">
<identity>
<dns value=“TempCert“/>
<certificateReference storeName="My" storeLocation="LocalMachine"
x509FindType="FindBySubjectDistinguishedName" />
</identity>
</endpoint>
</client>
<services>
<service name="ChatService.ChatService">
<endpoint address="net.p2p://SimpleChat" binding="netPeerTcpBinding"
bindingConfiguration="unsecure" name="Chat"
contract="ChatService.ChatServiceInterface" />
<identity>
<dns value=“localhost“/>
<certificateReference storeLocation="CurrentUser "/>
55
</identity>
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
Kod 5.App.config
Pokrene se program te dozvoli servisu korištenje definiranog porta:
Slika 8.10. Otvaranje mrežnog porta za rad servisa
Odabere se „Allow Access“ te se pokrenu dvije instance aplikacije.
56
Slika 8.11. Prva P2P aplikacija
Slika 8.12. Druga P2P aplikacija
57
9. ZAKLJUČAK
U P2P mrežama, svi klijenti opskrbljuju mrežu raznim resursima što može uključivati
propusnost, diskovni prostor i računalnu snagu. Kako se broj čvorova povećava raste
kompleksnost sustava te kapacitet. To se ne odnosi na klasičnu klijent-poslužitelj arhitekturu
koja ima fiksni broj poslužitelja čime bi veći broj klijenata znatno usporio prijenos podataka za
sve korisnike.
Distribuirana priroda P2P mreža isto tako povećava robusnost dopuštajući čvorovima pronalazak
traženih podataka bez uplitanja centralnog poslužitelja te ne postoji jedna točka kvara u sustavu.
Lako je instalirati i izvršiti konfiguraciju na računalu pa nije potreban sistem administrator za
održavanje mreže te korisnik može sam upravljati svojim dijeljenim resursima.
Kao i u mnogim drugim mrežnim sustavima, nesigurni i nepotpisani računalni kod može
dopustiti pristup korisnikovim podacima s udaljenog računala te ugroziti sigurnost kompletne
lokalne mreže. Međutim, P2P mreže danas su implementirale mnoge sigurnosne zaštitne
mehanizme. Jedan od glavnih nedostataka je nepostojanje centralne pohrane podataka.
Korištenje modernih hash funkcija i različite metode šifriranja učinile su mnoge mreže otpornim
na bilo kakve vrste napada, tako da su i glavni dijelovi mreže zamijenjeni s lažnim i
nefunkcionalnim računalima. Obično, Internet provideri nisu skloni P2P korisnicima zbog toga
što povećavaju promet u mreži. Uspoređujući promet s pregledavanjem Internet stranica,
elektroničke pošte i drugim običnim radnjama gdje se podaci prenose u kratkim intervalima i
količinama, P2P koristi puno resursa u puno vremena opterećujući propusnost mreže. Moguće
rješenje se nalazi u P2P međuspremniku, gdje Internet provider pohranjuje dijelove datoteka
koje se najviše koriste.
P2P mreže su ponekad kvalitetno i jeftino rješenje za spajanje računala, ali imaju dosta
nedostatka te svaka organizacija treba s oprezom razmotriti sigurnosne probleme,
nekompatibilnosti sklopovlja i pohranu podataka prije uvođenja P2P mreže.
58
10. LITERATURA
1. Kaufmann, V. “ P2P Networking and Applications “, Morgan Kaufmann, USA 2008.
2. Lupu. M. “ Peer-to-Peer Computing Principles and Applications“,Springer, USA 2010.
3. Muthusamy, V. “ An Introduction to Peer-to-Peer Networks “, Vinod Muthusamy, USA
2003.
4. Mitchell, B. “ Introduction to Peer to Peer (P2P) Networks and Software Systems “,
http://compnetworking.about.com/od/p2ppeertopeer/a/p2pintroduction.htm 15.8.2013.
5. Carnet,“Peer to peer mreže“, UR1:http://www.cert.hr/sites/default/files/NCERT-
PUBDOC-2009-11-282.pdf, 21.9.2013.
6. Gong.Y:“Identifying P2P users using traffic analysis”, URL2:
http://www.symantec.com/connect/articles/identifying-p2p-users-using-traffic-analysis,
20.8.2013.
7. Pedemors, V. “ Peer-to-Peer Storage “, ACM, USA 2009.
8. Wallach,D: ”A Survey of Peer-to-Peer Security Issues, In Proceedings of the
International Symposium on Software Security”, Springer-Verlag, Berlin 2002.
9. Oram,A: ” Peer-to-Peer: Harnessing the Power of Disruptive Technologies”, O'Reilly
Media, USA 2001.
10. URL3: http://blogs.msdn.com/b/theothersteve/archive/2010/04/19/how-to-create-a-peer-
to-peer-chat-application-using-wpf-and-wcf-in-visual-studio-2010.aspx.