Arhitektura Partnerskih P2P Mreža

58
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.

description

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

Transcript of Arhitektura Partnerskih P2P Mreža

Page 1: 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.

Page 2: Arhitektura Partnerskih P2P Mreža

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.

Page 3: Arhitektura Partnerskih P2P Mreža

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

Page 4: Arhitektura Partnerskih P2P Mreža

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

Page 5: Arhitektura Partnerskih P2P Mreža

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.

Page 6: Arhitektura Partnerskih P2P Mreža

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.

Page 7: Arhitektura Partnerskih P2P Mreža

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

Page 8: Arhitektura Partnerskih P2P Mreža

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.

Page 9: Arhitektura Partnerskih P2P Mreža

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.

Page 10: Arhitektura Partnerskih P2P Mreža

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.

Page 11: Arhitektura Partnerskih P2P Mreža

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.

Page 12: Arhitektura Partnerskih P2P Mreža

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.

Page 13: Arhitektura Partnerskih P2P Mreža

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č.

Page 14: Arhitektura Partnerskih P2P Mreža

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.

Page 15: Arhitektura Partnerskih P2P Mreža

15

Slika 3.4. Nestrukturirana P2P mreža

Page 16: Arhitektura Partnerskih 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 :

Page 17: Arhitektura Partnerskih P2P Mreža

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.

Page 18: Arhitektura Partnerskih P2P Mreža

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

Page 19: Arhitektura Partnerskih P2P Mreža

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.

Page 20: Arhitektura Partnerskih P2P Mreža

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.

Page 21: Arhitektura Partnerskih P2P Mreža

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

Page 22: Arhitektura Partnerskih P2P Mreža

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.

Page 23: Arhitektura Partnerskih P2P Mreža

23

Slika 4.5. Izgled aplikacije Microsoft Office Groove

Page 24: Arhitektura Partnerskih P2P Mreža

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.

Page 25: Arhitektura Partnerskih P2P Mreža

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.

Page 26: Arhitektura Partnerskih P2P Mreža

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.

Page 27: Arhitektura Partnerskih P2P Mreža

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.

Page 28: Arhitektura Partnerskih P2P Mreža

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

Page 29: Arhitektura Partnerskih P2P Mreža

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.

Page 30: Arhitektura Partnerskih P2P Mreža

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)

Page 31: Arhitektura Partnerskih P2P Mreža

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.

Page 32: Arhitektura Partnerskih P2P Mreža

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.

Page 33: Arhitektura Partnerskih P2P Mreža

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

Page 34: Arhitektura Partnerskih P2P Mreža

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.

Page 35: Arhitektura Partnerskih P2P Mreža

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

Page 36: Arhitektura Partnerskih P2P Mrež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.

Page 37: Arhitektura Partnerskih P2P Mreža

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“.

Page 38: Arhitektura Partnerskih P2P Mreža

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.

Page 39: Arhitektura Partnerskih P2P Mreža

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"/>

Page 40: Arhitektura Partnerskih P2P Mreža

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

Page 41: Arhitektura Partnerskih P2P Mreža

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.

Page 42: Arhitektura Partnerskih P2P Mreža

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

Page 43: Arhitektura Partnerskih P2P Mreža

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()

{

Page 44: Arhitektura Partnerskih P2P Mreža

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

Page 45: Arhitektura Partnerskih P2P Mreža

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;

Page 46: Arhitektura Partnerskih P2P Mreža

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)

Page 47: Arhitektura Partnerskih P2P Mreža

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;

Page 48: Arhitektura Partnerskih P2P Mreža

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)

Page 49: Arhitektura Partnerskih P2P Mreža

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.

Page 50: Arhitektura Partnerskih P2P Mreža

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.

Page 51: Arhitektura Partnerskih P2P Mreža

51

Slika 8.7.Osnovni konfiguracijski parametri

Page 52: Arhitektura Partnerskih P2P Mreža

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“.

Page 53: Arhitektura Partnerskih P2P Mreža

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:

Page 54: Arhitektura Partnerskih P2P Mreža

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 "/>

Page 55: Arhitektura Partnerskih P2P Mreža

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.

Page 56: Arhitektura Partnerskih P2P Mreža

56

Slika 8.11. Prva P2P aplikacija

Slika 8.12. Druga P2P aplikacija

Page 57: Arhitektura Partnerskih P2P Mreža

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.

Page 58: Arhitektura Partnerskih P2P Mreža

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.