/[gzz]/gzz/Documentation/misc/hemppah-luk/luk-tutkielma_teksti
ViewVC logotype

Diff of /gzz/Documentation/misc/hemppah-luk/luk-tutkielma_teksti

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.4 by hemppah, Wed Oct 16 09:53:56 2002 UTC revision 1.5 by hemppah, Wed Oct 16 12:38:23 2002 UTC
# Line 21  JXTA-arkkitehtuuri Line 21  JXTA-arkkitehtuuri
21    
22  Tietotekniikan (ohjelmistotekniikka)  Tietotekniikan (ohjelmistotekniikka)
23  LuK-tutkielma  LuK-tutkielma
24  xx.10.2002  16.10.2002
25    
26  Jyväskylän yliopisto  Jyväskylän yliopisto
27  Tietotekniikan laitos  Tietotekniikan laitos
# Line 29  Tietotekniikan laitos Line 29  Tietotekniikan laitos
29    
30  Tiivistelmä  Tiivistelmä
31    
32  Tämä LuK-tutkielma käsittelee JXTA-arkkitehtuuria. JXTA on avoin teknologiaympäristö, jonka avulla voidaan kommunikoida, tehdä yhteistyötä, jakaa tietoa ja tehdä sovelluksia vertaisverkko-ympäristössä. Tutkielman tavoitteena on antaa lukijalle yleiskuva JXTA-arkkitehtuurista.  Tämä LuK-tutkielma käsittelee JXTA-arkkitehtuuria. JXTA on avoin teknologiaympäristö, jonka avulla voidaan kommunikoida,
33    tehdä yhteistyötä, jakaa tietoa vertaisverkkoympäristössä. Tutkielman tavoitteena on antaa lukijalle yleiskuva
34    JXTA-arkkitehtuurista.
35    
36    Title in English: JXTA architecture
37    Avainsanat: Vertaisverkot, P2P, tietoverkot, tietoturva, hajautetut järjestelmät
38    Keywords: Peer-to-Peer, P2P, networking, secure computing, distributed computing
39    
 Title in English: JXTA architecture Avainsanat: Vertaisverkot, P2P, tietoverkot, tietoturva, hajautetut järjestelmät Keywords: Peer-to-Peer, P2P, networking, secure computing, distributed computing  
40    
41  Tekijän yhteystiedot:  Tekijän yhteystiedot:
42  Hermanni Hyytiälä  Hermanni Hyytiälä
# Line 44  sähköposti: hemppah@cc.jyu.fi Line 49  sähköposti: hemppah@cc.jyu.fi
49    
50    
51    
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
52  1.Johdanto  1.Johdanto
53    
54  Tämä tutkielma käsittelee JXTA-vertaisverkkoarkkitehtuuria. Se on järjestelmäkokonaisuus, jonka avulla vertaisverkoissa voidaan siirtää tiedostoja, keskustella, jakaa työpöytiä ja hakea tietoa. JXTA poikkeaa useista muista vertaisverkkoarkkitehtuureista siten, että se on täysin avoin järjestelmä. Tämä tarkoittaa sitä, että JXTA kehittyy jatkuvasti useiden vapaaehtoisten sovelluskehittäjien toimesta. Lisäksi JXTA on tarkoitettu käytettävän yrityksissä, jonka seurauksena JXTA sisältää omaisuuksia, joita muista vertaisverkkoarkkitehtuureista ei löydy.  Tämä tutkielma käsittelee JXTA-vertaisverkkoarkkitehtuuria. Se on järjestelmäkokonaisuus, jonka avulla vertaisverkoissa
55    voidaan siirtää tiedostoja, keskustella, jakaa työpöytiä ja hakea tietoa. JXTA poikkeaa useista muista
56    vertaisverkkoarkkitehtuureista siten, että se on täysin avoin järjestelmä. Tämä tarkoittaa sitä, että JXTA kehittyy
57    jatkuvasti useiden vapaaehtoisten sovelluskehittäjien toimesta. Lisäksi JXTA on tarkoitettu käytettävän yrityksissä,
58    jonka seurauksena JXTA sisältää omaisuuksia, joita muista vertaisverkkoarkkitehtuureista ei löydy.
59    
60  Tutkielma jakaantuu kolmeen osaan. Luvuissa 2 ja 3 käsitellään vertaisverkkoja ja JXTAa yleisellä tasolla, luvuissa 4, 5, 6 ja 7 keskitytään JXTA-järjestelmän ominaisuuksiin. Luku 8 antaa esimerkin tiedonhausta JXTA-vertaisverkossa.  Tutkielma jakaantuu kolmeen osaan. Luvuissa 2 ja 3 käsitellään vertaisverkkoja ja JXTAa yleisellä tasolla, luvuissa 4,
61    5, 6 ja 7 keskitytään JXTA-järjestelmän ominaisuuksiin. Luku 8 käsittelee tiedonhakua vertaisverkossa.
62    
63  2.Vertaisverkot ja JXTA  2.Vertaisverkot ja JXTA
64    
65  Viimeisen kymmenen vuoden aikana tiedon määrä tietoverkoissa on kasvanut niin suureksi, että kukaan ei pysty enää hallitsemaan kaikkea tietoa. On arvioitu, että uusien langattomien laitteiden markkinoille tulo kasvattaa tietoverkoissa käytettävien laitteiden määrää miljardeilla uusilla laitteilla.  Viimeisen kymmenen vuoden aikana tiedon määrä tietoverkoissa on kasvanut niin suureksi, että kukaan ei pysty enää
66    hallitsemaan kaikkea tietoa. On arvioitu, että uusien langattomien laitteiden markkinoille tulo kasvattaa
67  Tiedon määrän kasvusta johtuen nykyisten tietoverkkojen rakenteiden heikkoudet ovat tulleet esille. Esimerkiksi suuren ja paljon tietoa sisältävän tietokonejärjestelmän kuormittaminen keskitetysti (eng. Denial of service attack) voi aiheuttaa järjestelmän jumiutumisen, so. Järjestelmän palvelut lakkaavat toimimasta.  tietoverkoissa käytettävien laitteiden määrää miljardeilla uusilla laitteilla.
68    
69    Tiedon määrän kasvusta johtuen nykyisten tietoverkkojen rakenteiden heikkoudet ovat tulleet esille. Esimerkiksi laaja-
70    alaisen ja paljon tietoa sisältävän tietokonejärjestelmän kuormittaminen keskitetysti (eng. Denial of service attack)
71    voi aiheuttaa järjestelmän jumiutumisen, jolloin kaikki tietojärjestelmän tarjoavat palvelut lakkaavat toimimasta.
72    
73    Keskitettyjen palveluiden haavoittuvuudesta johtuen on alettu kehittämään vaihtoehtoisia tapoja viestiä tietoverkoissa.
74    Vertaisverkot ovat tietoverkkoja, joissa kaikki verkkoon kuuluvat laitteet ovat tasavertaisia. Tiedon siirtoon ei
75    tarvita keskuskoneita, vaan verkon laitteet keskustelevat ainoastaan keskenään. IEEE 802.11b-standardi on esimerkki
76    vertaisverkkoarkkitehtuurista, jossa verkon laitteet eivät tarvitse keskustietokoneiden palveluita verkkoon
77    liityttäessä.
78    
79    Tiedotusvälineissä paljon julkisuutta saanut Napster-tiedostonjakoarkkitehtuuri ei perustu vertaisverkkoteknologiaan,
80    koska Napsterissa käytetään keskustietokoneita tiedon tallentamiseen (eng. Indexing). Itse tiedonsiirto tapahtuu
81    kuitenkin ilman keskustietokoneita. Napsterin syntymän jälkeen on tehty lukuisia muita tiedostonjako-ohjelmistoja, jotka
82    pohjautuvat enemmän vertaisverkkoideologiaan.
83    
 Keskitettyjen palveluiden haavoittuvuudesta johtuen on alettu kehittämään vaihtoehtoisia tapoja viestiä tietoverkoissa. Vertaisverkot ovat tietoverkkoja, joissa verkkoon kuuluvat laitteet ovat tasavertaisia. Tiedon siirtoon ei tarvita keskuskoneita, vaan verkon laitteet keskustelevat ainoastaan keskenään. IEEE 802.11b-standardi on esimerkki vertaisverkko-arkkitehtuurista, jossa verkon laitteet eivät tarvitse keskustietokoneiden palveluita verkkoon liityttäessä.  
   
 Tiedotusvälineissä paljon julkisuutta saanut Napster-tiedostonjako-arkkitehtuuri ei perustu vertaisverkko-teknologiaan, koska Napsterissa käytetään keskustietokoneita tiedon indeksointiin. Itse tiedon siirto tapahtuu kuitenkin ilman keskustietokoneita. Napsterin syntymän jälkeen on tehty lukuisia muita tiedostonjako-ohjelmistoja, jotka pohjautuvat enemmän vertaisverkko-ideologiaan.  
84    
85  3.JXTA-projekti  3.JXTA-projekti
86    
87  3.1.Yleistä  3.1.Yleistä
88    
89  JXTA on alunperin Sun Microsystemsin aloittama projekti. Projektin tavoitteena on luoda avoin arkkitehtuuri, joka mahdollistaa tehokkaan viestinnän ja tiedonsiirron tietoverkoissa. JXTA-arkkitehtuuri perustuu vertaisverkko-ideologiaan. JXTAn avulla voidaan tietoverkoissa viestiä, tehdä yhteystyötä, jakaa resursseja ja hakea tietoa. JXTA on laitteisto- tai kieliriippuvainen, joten se mahdollistaa erilaisten digitaalisten laitteiden yhtäaikaisen käytön samassa tietoverkossa.  JXTA on alunperin Sun Microsystemsin aloittama projekti. Projektin tavoitteena on luoda avoin arkkitehtuuri, joka
90    mahdollistaa tehokkaan ja turvallisen tiedonsiirron vertaisverkoissa. JXTA-arkkitehtuuri perustuu vertaisverkko-
91    ideologiaan. JXTAn avulla voidaan tietoverkoissa viestiä, tehdä yhteystyötä, jakaa resursseja ja hakea tietoa. JXTA on
92    laitteisto- tai kieliriippumaton, joten se mahdollistaa erilaisten digitaalisten laitteiden- ja viestimien yhtäaikaisen
93    käytön samassa vertaisverkossaa.
94    
95  3.2 Tavoitteet  3.2 Tavoitteet
96    
97  JXTA-projektin päämääränä on luoda vertaisverkko-arkkitehtuuri, josta hyötyisivät sekä yksityishenkilöt että yritykset. Kun projekti alkoi, luotiin kolme tavoitetta, joihin pitäisi pyrkiä:  JXTA-projektin päämääränä on luoda vertaisverkkoarkkitehtuuri, josta hyötyisivät sekä yksityishenkilöt että yritykset.
98    Kun projekti alkoi, luotiin kolme tavoitetta:
 Yhteensopivuus Lähes kaikki saatavilla olevat vertaisverkko-arkkitehtuurit ovat keskenään yhteensopimattomia. Projektin tavoitteena on luoda universaalinen vertaisverkko-arkkitehtuuri, jolloin kaikki tätä arkkitehtuuria käyttävät sovellukset ja palvelut olisivat keskenään yhteensopivia ja voisivat käyttää hyväksi toistensa palveluita.  
99    
100  Alusta riippumattomuus Useat vertaisverkko-arkkitehtuurit ovat sidottuja tiettyyn alustaan, koska ne ovat suunniteltu ja toteutettu tietyillä kielityökaluilla. Esimerkiksi jos vertaisverkko-ohjelma on toteutettu C++-ohjelmointikielellä, voi ohjelman siirrettävyys eri järjestelmien välillä on vaikeaa tai jopa mahdotonta. JXTA on kielityökalu-, laitteisto- ja verkkoriippumaton vertaisverkko-arkkitehtuuri.  Yhteensopivuus
101    Lähes kaikki saatavilla olevat vertaisverkkoarkkitehtuurit ovat keskenään yhteensopimattomia. Projektin
102  Kaikkialla läsnäoleva JXTA-teknologia on suunniteltu toimivan erilaisissa digitaalisissa laitteissa. Esimerkiksi erilaiset taskutietokoneet, kulutuselektroniikka- ja verkkolaitteistot ja tavalliset tietokoneet voivat keskustella keskenään JXTA-teknologian ansiosta.  tavoitteena on luoda universaalinen vertaisverkkoarkkitehtuuri, jolloin kaikki tätä arkkitehtuuria käyttävät
103    sovellukset ja olisivat keskenään yhteensopivia ja voisivat käyttää hyväksi toistensa palveluita.
104    
105    Alusta riippumattomuus
106    Useat vertaisverkko-arkkitehtuurit ovat sidottuja tiettyyn alustaan, koska ne ovat suunniteltu
107    ja toteutettu tietyillä kielityökaluilla. Esimerkiksi jos vertaisverkko-ohjelma on toteutettu C++-ohjelmointikielellä,
108    voi ohjelman siirrettävyys eri järjestelmien välillä olla vaikeaa tai jopa mahdotonta. JXTA on kielityökalu-,
109    laitteisto- ja verkkoriippumaton vertaisverkkoarkkitehtuuri.
110    
111    Kaikkialla läsnäoleva
112    JXTA-teknologia on suunniteltu toimivan erilaisissa digitaalisissa laitteissa. Esimerkiksi
113    erilaiset taskutietokoneet, kulutuselektroniikka- ja verkkolaitteistot ja tavalliset tietokoneet voivat keskustella
114    keskenään JXTA-teknologian ansiosta.
115    
116  4 JXTA-verkkoarkkitehtuuri  4 JXTA-verkkoarkkitehtuuri
117    
118  JXTA-arkkitehtuurin protokollat luovat virtuaalisen verkon fyysisen verkon päälle. Virtuaaliverkon tarkoituksena on piilottaa alla olevan fyysisen verkon monimutkaisuus (palomuurit) ja luoda yhtenäinen verkko verkon käyttäjien kesken. Kuvassa 1 on esitetty virtuaalisen verkon rakenne.  JXTA-arkkitehtuurin protokollat luovat virtuaalisen verkon fyysisen verkon päälle. Virtuaaliverkon tarkoituksena on
119    piilottaa alla olevan fyysisen verkon monimutkaisuus, esimerkiksi palomuurit, ja luoda yhtenäinen kokonaisuus verkon
120    laitteiden kesken. Kuvassa 1 on esitetty JXTA-verkon virtuaalisen verkon rakenne.
 Kuva 1: JXTA-arkkitehtuurin virtuaaliverkko (© Sun Microsystems).  
121    
 4.1 Verkkolaitteiden tunnistus (Uniform Peer Addressing)  
122    
 Uniform Peer Addressing on tekniikka, jonka avulla verkon laitteet tunnistetaan JXTA-arkkitehtuurin mukaisessa vertaisverkossa. Jokaiselle verkon laitteelle luodaan verkkoon liittymisen yhteydessä 128-bittinen tunniste (Universal User Identification). Tunnisteen avulla voidaan yksikäsitteisesti tunnistaa verkon laite, oli kyseessä sitten DHCP-tekniikkaa käyttävä laite tai erilaisia verkkoliityntöjä käyttävä laite (Ethernet, Bluetooth). Lisäksi jokainen verkon laite omaa laiterajapinnan, so. minkälaisia tekniikoita laite osaa käyttää tietoverkossa (Peer Endpoint). Esimerkiksi kun tietoverkon laite (A) saa tietoonsa toisen laitteen (B) laiterajapinnan, laite (A) voi valita parhaan tiedonsiirtokäytännön laitteen (B) kanssa.  
123    
124  4.2 Viestit (Messages)  Kuva 1: JXTA-arkkitehtuurin virtuaaliverkko (© Sun Microsystems).
125    
 Kuten muissa ei-suunnitelluissa (eng. ad-hoc) ja mukautuvissa vertaisverkoissa, myös JXTA-verkossa yhteydet verkon laitteiden välillä voivat olla ohimeneviä. Tiedon välitysreitit voivat vaihtua jatkuvasti ja olla asynkronisia. JXTA-verkossa siirtyvät viestit on suunniteltu tällaisia tarpeita ajatellen.  
126    
 Jokainen viesti sisältää otsikon (eng. Header), ei-pakollisen tiivistelmän (eng. Digest), päällysen (eng. Envelope) ja pinon (eng. Stack) sisältäen protokollien otsikot ja tiedot (eng. Body). Päällynen sisältää otsikon, ei-pakollisen viestin lyhennelmän, lähettäjän sekä vastaanottajan. Vastaanottaja on looginen kohde, joka on annettu URI-muotoisena tietona.  
127    
128  Viestin tieto sisältää muuttuvan määrän tietoa sekä tunnisteita, joiden avulla voidaan tunnistaa viestin lähettäjä ja vastaanottaja. Tunniste voi olla esimerkiksi allekirjoitus, joka määrittää yksikäsitteisesti viestin lähteen.  Seuraavissa kappaleissa esitellään JXTAn verkkoarkkitehtuurin tärkeimmät ominaisuudet.
129    
 4.3 Mainokset (Advertisements)  
130    
131  Mainos on JXTA-verkossa siirtyvä XML-muotoinen viesti, joka kuvaa verkossa olevan tirkistelijän palveluita. Kaikki verkon resurssit ja palvelut kuvataan mainoksilla. JXTA-arkkitehtuurissa on seitsemän valmista mainospohjaa, joita voidaan käyttää mainosten luomisessa: Tirkistäjä-mainos (eng. Peer advertisement), tirkistäjäryhmä-mainos (eng. Peer Group advertisement), piippu-mainos (eng. Pipe advertisement), moduuli-mainos (eng. Module advertisement), tirkistäjätieto-mainos (eng. Peer Info advertisement), sisällys-mainos (eng. Content advertisement) ja laiterajapinta-mainos (eng. Peer Endpoint advertisement).  4.1 Verkkolaitteiden tunnistus (eng. Uniform Peer Addressing)
132    
133  Mainoksia analysoimalla verkon laitteet pystyvät löytämään halumansa palvelut JXTA-verkosta. Kaikki tirkistelijät tallentavat, julkaisevat ja vaihtavat mainoksia keskenään, jotta löytäisivät olemassa olevia resursseja JXTA-verkosta. Kaikkiin mainoksiin liittyy elämänpituus-arvo (eng. Lifetime), joka määrittelee mainoksessa määritellyn palvelun saatavuuden. Mainos voidaan uudelleen julkaista, jolloin elämänpituus-arvoa voidaan tarvittaessa kasvattaa. Kuvassa2 on esitetty eräs JXTA-arkkitehtuurin mukainen mainos.  Uniform Peer Addressing on tekniikka, jonka avulla verkon laitteet tunnistetaan JXTA-arkkitehtuurin mukaisessa
134    vertaisverkossa. Jokaiselle verkon laitteelle luodaan verkkoon liittymisen yhteydessä 128-bittinen tunniste
135    (eng. Universal User Identification). Tunnisteen avulla voidaan yksikäsitteisesti tunnistaa verkon laite, oli kyseessä
136    sitten DHCP-tekniikkaa käyttävä laite tai erilaisia verkkoliityntöjä käyttävä laite (esimerkiksi Ethernet, Bluetooth).
137    Jokainen JXTA-verkon laite omaa laiterajapinnan (eng. Peer Endpoint), joka kertoo muille verkon laitteille laitteen
138    osaamat verkkotekniikat. Esimerkiksi kun JXTA-verkon laite A saa tietoonsa toisen JXTA-verkon laitteen B
139    laiterajapinnan, laite A voi valita parhaan tiedonsiirtokäytännön laitteen B kanssa.
140    
141    4.2 Viestit (eng. Messages)
142    
143    Kuten muissa ei-suunnitelluissa (eng. Ad-Hoc) ja mukautuvissa (eng. Adaptive) vertaisverkoissa, myös JXTA-verkossa
144    yhteydet verkon laitteiden välillä voivat olla ohimeneviä. Tiedon välitysreitit voivat vaihtua ja olla lisäksi
145    asynkronisia. JXTA-verkossa siirtyvät viestit on suunniteltu tällaisia tarpeita ajatellen.
146    
147    Jokainen JXTA-verkon viesti sisältää otsikon (eng. Header), ei-pakollisen tiivistelmän (eng. Digest), päällysen
148    (eng. Envelope) ja pinon (eng. Stack) sisältäen eri protokollien otsikot ja tiedot (eng. Body). Päällynen sisältää
149    otsikon, ei-pakollisen viestin lyhennelmän, lähettäjän sekä vastaanottajan. Vastaanottaja on looginen kohde, joka on
150    annettu URI-muotoisena tietona.
151    
152    Viestin tieto sisältää muuttuvan määrän tietoa sekä tunnisteita, joiden avulla yksikäsitteisesti voidaan tunnistaa
153    viestin lähettäjä ja vastaanottaja. Tunniste voi olla esimerkiksi digitaalinen allekirjoitus, joka määrittää viestin
154    lähteen.
155    
156    4.3 Mainokset (eng. Advertisements)
157    
158    Mainos on JXTA-verkossa siirtyvä XML-muotoinen viesti, joka kuvaa verkossa olevan laitteen palveluita. Kaikki
159    JXTA-verkon resurssit ja palvelut kuvataan mainoksilla. JXTA-arkkitehtuurissa on seitsemän valmista mainospohjaa, joita
160    voidaan käyttää mainosten luomisessa: Vertaissolmu-mainos (eng. Peer advertisement), vertaissolmuryhmä-mainos (eng. Peer
161    Group advertisement), piippu-mainos (eng. Pipe advertisement), moduuli-mainos (eng. Module advertisement),
162    tirkistäjätieto-mainos (eng. Peer Info advertisement), sisällys-mainos (eng. Content advertisement) ja laiterajapinta-
163    mainos (eng. Peer Endpoint advertisement).
164    
165    Mainoksia analysoimalla verkon laitteet pystyvät löytämään halumansa palvelut JXTA-verkosta. Kaikki vertaissolmut
166    tallentavat, julkaisevat ja siirtävät mainoksia JXTA-verkossa. Kaikkiin mainoksiin liittyy elämänpituus-arvo
167    (eng. Lifetime), joka määrittelee mainoksessa eliniän JXTA-verkossa. Mainos voidaan uudelleen julkaista,
168    jolloin elämänpituus-arvoa voidaan tarvittaessa kasvattaa. Kuvassa 2 on esitetty eräs JXTA-arkkitehtuurin mukainen
169    mainos.
170    
171    
172    
173  Kuva 2: XML-muotoinen mainos (© Sun Microsystems).  Kuva 2: XML-muotoinen mainos (© Sun Microsystems).
174    
 4.4 Tirkistäjä (Peer)  
175    
 JXTA-verkko koostuu tirkistäjistä. Tirkistäjä voi olla tietokone, kämmentietokone tai langaton puhelin. Tirkistäjän pitää osata keskustella muiden tirkistäjien kanssa JXTA-arkkitehtuurin mukaisten protokollien avulla.  
176    
177  4.5 Tirkistäjäryhmät (Peer Groups)  4.4 Vertaissolmu (eng. Peer)
178    
179  JXTA-verkossa voi muodostua tirkistäjäryhmiä. Tirkistäjäryhmät ovat virtuaalisia konaisuuksia, jotka koostuvat yksittäisistä tirkistelijöistä, joilla on samat kiinnostuksen kohteet. Yleensä tirkistäjäryhmään kuuluvat tirkistäjät ovat sopineet erilaisista käytännöistä (eng. Policies), joita noudatetaan tirkistäjäryhmän keskuudessa. Jokainen tirkistäjäryhmä tunnistetaan yksillöllisen tunnisteen avulla. Uusi tirkistäjäryhmä voidaan luoda dynaamisesti käyttäjän, sovelluksen tai ylläpitäjän toimesta. Yksittäinen tirkistäjä voi kuulua samanaikaisesti useaan eri tirkistäjäryhmään. Tirkistäjäryhmien olemassa oloon JXTA-arkkitehtuurin kehittäjät ovat löytäneet kolme motiivia: luottamuksellisen tiedon siirto rajoitetussa ympäristössä, samanlaisten intressien jakaminen rajoitetussa ympärisössä sekä rajoitetun ympäristön monitorointi ja analsyointi.  JXTA-verkko koostuu vertaissolmuista. Vertaissolmu voi olla tietokone, kämmentietokone tai langaton puhelin.
180    Vertaissolmun pitää osata keskustella muiden tirkistäjien kanssa JXTA-arkkitehtuurin mukaisten protokollien avulla.
181    
182  JXTA-verkossa on implisiittinen, koko verkon laajuinen World Peer Group (WPG), joka kattaa kaikki verkon tirkistelijät. Tämä ei kuitenkaan tarkoita sitä, että WGP-ryhmän tirkistelijät voisivat löytää kaikki muut tirkistelijät.  4.5 Vertaissolmuryhmät (eng. Peer Groups)
183    
184    JXTA-verkossa voi muodostua vertaissolmuryhmiä. Vertaissolmuryhmät ovat virtuaalisia konaisuuksia, jotka koostuvat
185    yksittäisistä vertaissolmuista, joilla on samat kiinnostuksen kohteet. Yleensä samaan vertaissolmuryhmään kuuluvat
186    vertaissolmut ovat sopineet erilaisista käytännöistä (eng. Policies), joita noudatetaan vertaissolmuryhmän sisällä.
187    Jokainen vertaissolmuryhmä tunnistetaan yksillöllisen tunnisteen avulla. Uusi vertaissolmuryhmä voidaan luoda
188    dynaamisesti JXTA-verkon käyttäjän, sovelluksen tai ylläpitäjän toimesta. Yksittäinen vertaissolmu voi kuulua
189    samanaikaisesti useaan eri vertaissolmuryhmään.
190    
191  4.6 Piiput (Pipes)  Vertaissolmuryhmien olemassaoloon JXTA-arkkitehtuurin kehittäjät ovat löytäneet kolme motiivia: luottamuksellisen tiedon
192    siirto rajoitetussa ympäristössä, samanlaisten intressien jakaminen rajoitetussa ympärisössä sekä rajoitetun ympäristön
193    monitorointi ja analsyointi. JXTA-verkossa on implisiittinen, koko verkon laajuinen World Peer Group-vertaissolmuryhmä
194    (WPG), joka kattaa kaikki verkon vertaissolmut. Tämä ei kuitenkaan tarkoita sitä, että kaikki WGP-ryhmän vertaissolmut
195    voisivat löytää kaikki muut vertaissolmut.
196    
 Piiput ovat asynkronisia kanavia, joiden kautta viestejä lähetetään JXTA-verkossa. Piiput ovat myös virtuaalisia, so. piipun kohde voidaan yhdistää yhteen tai useaan tirkistelijään. Piippuja käyttävät JXTA-verkon palvelut sekä sovellukset.  
197    
198  Piippu yhdistetään yleensä ajonaikaisesti tirkistelijään käyttäen piipun yhdistys protokollaa (eng. Pipe Binding Protocol). Yksittäinen piippu voidaan yhdistää eri aikoina eri tirkistelijöihin. Tämä on hyöydyllinen omainaisuus silloin kun halutaan varmistaa järjestelmän toimivuus kriittisissä tilanteissa. Esimerkiksi viottunut tirkistelijä verkossa voidaan korvata toisella toimivalla tirkistelijällä.  4.6 Piiput (eng. Pipes)
199    
200  Pisteestä-pisteeseen piipulla (eng. Point-to-point pipe) voidaan yhdistää tasan kaksi tirkistelijää. Tällöin piippu on ulosmeno piippu lähettäjälle ja sisäänmeno piippu vastaanottajalle. Liikenne on yksisuuntaista, lähettäjältä vastaanottajalle. Levittäytyvät piiput (eng. Propagate pipe) pystyvät yhdistämään usean tirkistelijän laiterajapinnat keskenään.  Piiput ovat asynkronisia kanavia, joiden kautta viestejä lähetetään JXTA-verkossa. Piiput ovat myös virtuaalisia, piipun
201    kohde voidaan yhdistää yhteen tai useaan vertaissolmuun. Piippuja käyttävät JXTA-verkon palvelut sekä sovellukset.
202    
203    Piippu yhdistetään yleensä ajonaikaisesti vertaissolmuun käyttäen piipun yhdistys protokollaa (eng. Pipe Binding
204    Protocol). Yksittäinen piippu voidaan yhdistää eri aikoina eri vertaissolmuihin. Tämä on hyöydyllinen omainaisuus
205    silloin kun halutaan varmistaa järjestelmän toimivuus kriittisissä tilanteissa. Vioittunut vertaissolmu esimerkiksi
206    verkossa voidaan korvata toisella toimivalla vertaissolmulla.
207    
208  4.7 Resurssien kartoitus (Universal Resource Binding and Rendezvous)  Pisteestä-pisteeseen-piipulla (eng. Point-to-point pipe) voidaan yhdistää tasan kaksi vertaissolmua keskenään. Tällöin
209    piippu on ulosmeno-piippu lähettäjälle ja sisäänmeno-piippu vastaanottajalle. Liikenne on yksisuuntaista, lähettäjältä
210    vastaanottajalle. Levittäytyvät-piiput (eng. Propagate pipe) pystyvät yhdistämään usean vertaissolmun laiterajapinnat
211    keskenään.
212    
 JXTA-verkossa käytetään universaalia päättäjä-palvelua (eng. Resolver), joka hoitaa verkon palveluihin liittyviä perustehtäviä. Näitä ovat esimerkiksi tirkistelijän nimen liittäminen IP-osoitteeseen, IP-pistorasian (eng. Socket) liittäminen porttiin, palvelun löytäminen LDAP-teknologian avulla ja tiedon etsintä hajautetussa tiedostojärjestelmässä (eng. Network Filesystem, NFS). Kaikki edellä mainitut operaatiot käyttävät mainoksia (eng. Advertisement) hyväkseen.  
213    
214  Kohtauspaikka-tirkistelijä (eng. Rendezvous Peer) on erityinen tirkistelijä, jotka ovat tunnettuja muiden tirkistelijöiden keskuudessa ryhmän sisällä. Kohtauspaikka tirkistelijä tallentaa muistiinsa suuren määrän mainoksia, tarjoten palveluita muille ryhmän jäsenille. Ryhmä voi sisältää mielivaltaisen monta Kohtauspaikka- tirkistelijää.  4.7 Resurssien kartoitus (Universal Resource Binding and Rendezvous)
215    
216  Yleisesti vertaisverkoissa ylemmän tason (eng. High level) hakupalvelut tarjoavat paremmat tehokkaammat hakumenetelmät, koska palveluilla on parempi tietous tiedon levinneisyydestä tirkistelijöiden keskuudessa (Chord, CAN). Kohtauspaikka-arkkitehtuuri tarjoaa sekä alemman tason hakupalvelut mainosten löytämiseen sekä koukkuja (eng. Hooks), joita voidaan käyttää hyväksi ylemmän tason mainosten (tiedon) etsintään.  JXTA-verkossa käytetään universaalia päättäjä-palvelua (eng. Resolver), joka hoitaa verkon palveluihin liittyviä
217    perustehtäviä. Näitä ovat esimerkiksi vertaissolmun nimen liittäminen IP-osoitteeseen, IP-pistorasian (eng. Socket)
218    liittäminen porttiin, palvelun löytäminen LDAP-hakemistopalvelun avulla ja tiedon etsintä hajautetussa
219    tiedostojärjestelmässä (eng. Network Filesystem, NFS). Kaikki edellä mainitut operaatiot käyttävät JXTA-verkon mainoksia
220    hyväkseen.
221    
222    Kohtauspaikka-vertaisolmu (eng. Rendezvous Peer) on erityinen vertaissolmu, jotka ovat tunnettuja muiden
223    vertaissolmujen keskuudessa ryhmän sisällä. Kohtauspaikka-vertaissolmu tallentaa muistiinsa suuren määrän mainoksia,
224    tarjoten palveluita muille ryhmän jäsenille. Ryhmä voi sisältää mielivaltaisen monta kohtauspaikka- vertaissolmua.
225    
226    Yleisesti vertaisverkoissa ylemmän tason (eng. High level) hakupalvelut tarjoavat tehokkaammat hakumenetelmät,
227    koska palveluilla on parempi tietous tiedon levinneisyydestä tirkistelijöiden keskuudessa (esimerkkeinä Chord [],
228    CAN []). Kohtauspaikka-arkkitehtuuri tarjoaa sekä alemman tason hakupalvelut mainosten löytämiseen sekä koukkuja
229    (eng. Hooks), joita voidaan käyttää hyväksi ylemmän tason mainosten etsintään.
230    
231    
232  5. Protokollat  5. Protokollat
233    
234    Tässä kappaleessa on esitelty JXTA-verkon pääprotokollat.
235    
236  5.1 Peer Discovery Protocol  5.1 Peer Discovery Protocol
237    
238  Auttaa yksittäisen tirkistelijän löytämään mainoksia, toisia tirkistelijöitä, tirkistelijä-ryhmiä JXTA-verkossa. Jos tirkistelijän tai tirkistelijä-ryhmän nimeä ei ole määritelty, protokolla palauttaa kaikkia saatavilla olevat mainokset haun tuloksena.  Auttaa yksittäistä vertaissolmua löytämään mainoksia, toisia vertaissolmuja ja vertaissolmuryhmiä JXTA-verkossa. Jos
239    vertaissolmun tai vertaissolmuryhmän nimeä ei ole määritelty, protokolla palauttaa kaikkia saatavilla olevat mainokset
240    haun tuloksena.
241    
242  5.2 Peer Resolver Protocol  5.2 Peer Resolver Protocol
243    
244  Mahdollistaa tirkistelijän lähettää ja vastaanottaa yleisiä kyselyitä tirkistelijään, tirkistelijä-ryhmään, piippuihin tai tietoon liittyen. Yleensä tämä protokolla on ainoastaan käytössä niissä tirkistelijöissä, jotka mahdollistavat monipuoliset hakupalvelut (eng. Rendezvous Peer).  Mahdollistaa vertaissolmun lähettää ja vastaanottaa yleisiä kyselyitä vertaissolmuun, vertaissolmuryhmään, piippuihin
245    tai tietoon liittyen. Yleensä tämä protokolla on ainoastaan käytössä kohtauspaikka-vertaissolmuissa.
246    
247  5.3 Peer Information Protocol  5.3 Peer Information Protocol
248    
249  Auttaa tirkistelijää oppimaan muiden tirkistelijöiden palveluita sekä tiloja. Esimerkiksi tirkistelijä voi lähettää testiviestin (eng. Ping message) toiselle tirkistelijälle tarkastaakseen, onko tämä saatavilla.  Auttaa vertaissolmua ymmärtämään muiden vertaissolmujen palveluita sekä tiloja. Esimerkiksi vertaissolmu voi lähettää
250    testi-viestin (eng. Ping message) toiselle vertaissolmulle varmistaakseen, että onko kohteena ollut vertaissolmu
251    saatavilla.
252    
253  5.4 Peer Membership Protocol  5.4 Peer Membership Protocol
254    
255  Mahdollistaa yksittäisen tirkistelijän tulla tirkistelijä-ryhmän jäseneksi, luoda hakemukus tirkistelijä-ryhmään liittymiseksi tai ryhmästä poistumiseksi, ottaa ryhmän mainoksia vastaan ja päivittää ryhmän jäsenyyteen liittyviä tietoja.  Mahdollistaa yksittäisen vertaissolmun tulla vertaissolmuryhmän jäseneksi, luoda hakemus vertaissolmuryhmään
256    liittymiseksi tai ryhmästä poistumiseksi, ottaa ryhmän mainoksia vastaan ja päivittää ryhmän jäsenyyteen liittyviä
257    tietoja.
258    
259  5.5 Pipe Binding Protocol  5.5 Pipe Binding Protocol
260    
261  Mahdollistaa tirkistelijän liittää piipun mainos piipun kohteeseen.  Mahdollistaa vertaissolmun liittää piipun mainos piipun kohteeseen.
262    
263  5.6 Peer Endpoint Protocol  5.6 Peer Endpoint Protocol
264    
265  Auttaa tirkistelijää kysymään tirkistäjä-reitittimeltä reittejä kohde tirkistelijään. Tämä on hyödyllistä silloin, kun tirkistelijät ovat fyysisesti eri verkoissa tai kun palomuuri on tirkisteliöiden välissä. Tirkistelijä voi luoda itsestään tirkistelijä reitittimen ottamalla käyttöönsä Peer Endpoint-aliprotokollan.  Auttaa vertaissolmua kysymään reititin-vertaissolmulta (eng. Peer Router) polkuja kohde vertaissolmuun. Tämä on
266    hyödyllistä silloin, kun vertaissolmut ovat fyysisesti eri verkoissa tai kun palomuuri on vertaissolmujen välissä.
267    Vertaissolmu voi luoda itsestään reititin-vertaissolmun hyödyntämällä Peer Endpoint-tekniikkaa.
268    
269  6. Ohjelmistoarkkitehtuuri  6. Ohjelmistoarkkitehtuuri
270    
271  JXTA-teknologian ohjelmistoarkkitehtuuri jakaantuu kolmeen päällekkäiseen kerrokseen. Kuvassa 3 on esitetty JXTAn ohjelmistoarkkitehtuuri.  JXTA-teknologian ohjelmistoarkkitehtuuri jakaantuu kolmeen päällekkäiseen kerrokseen, ytimeen, palveluihin ja
272    sovelluksiin. Kuvassa 3 on esitetty JXTAn ohjelmistoarkkitehtuuri.
273    
274    
275    
276  Kuva 3: JXTAn ohjelmistoarkkitehtuuri (© Sun Microsystems).  Kuva 3: JXTAn ohjelmistoarkkitehtuuri (© Sun Microsystems).
277    
 6.1 Ydin (Core)  
278    
 JXTAn ydin tarjoaa peruspavelut tirkistelijä-palveluille sekä sovelluksille. Turvallinen suoritusympäristö, tirkistelijäryhmät, piiput sekä verkon monitorointi on sisään rakennettu ytimeen.  
279    
280  Ytimessä on tuki myös anonyymeille tai rekisteröityneille käyttäjille sekä salatulle tai ei-salatulle tiedolle. Edellä mainitut ominaisuudet määritellään tarvittaessa vasta palvelutai sovellus-tasolla.  Seuraavissa kappaleissa käsitellään JXTAn ohjelmistoarkkitehtuurin eri kerroksia.
281    
282  6.2 Palvelut (Services)  6.1 Ydin (eng. Core)
283    
284  Palvelut-kerros laajentaa ydin-kerroksen palveluita. Palvelu-kerros tarjoaa palvelut tiedon hakemiseen, tiedon jakamiseen, tiedon indeksointiin ja tiedon tallentamiseen.  JXTAn ydin tarjoaa peruspavelut vertaissolmu-palveluille sekä -sovelluksille. Turvallinen suoritusympäristö,
285    vertaissolmuryhmät, piiput sekä JXTA-verkon monitorointi on sisään rakennettu ytimeen.
286    
287  Palvelu-kerros sisältää lisäksi tietoturvapalveluita, joiden avulla voidaan rakentaa turvallisia vertaisverkko-sovelluksia.  Ytimessä on tuki myös anonyymeille tai rekisteröityneille käyttäjille sekä salatulle tai ei-salatulle tiedolle.
288    
289  6.3 Sovellukset (Applications)  6.2 Palvelut (eng. Services)
290    
291  JXTA-sovellukset on rakenettu käyttäen ydin- ja palvelu-kerroksen palveluita hyväksi. JXTA-sovelluksia voivat olla esimerkiksi pikaviestimet, sähköposti- ja kalenteri-pavelut sekä resurssien hakuun tai siirtoon erikoistuneet sovellukset.  Palvelut-kerros laajentaa ydin-kerroksen palveluita. Palvelu-kerros tarjoaa palvelut tiedon hakemiseen, tiedon
292    jakamiseen, tiedon indeksointiin ja tiedon tallentamiseen.
293    
294  6.4 Esimerkki sovellus: Kuori (JXTA Shell)  Palvelu-kerros sisältää lisäksi tietoturvapalveluita, joiden avulla voidaan rakentaa turvallisia vertaisverkko-
295    sovelluksia.
296    
297  Kuori on hyvä esimerkki JXTA-arkkitehtuurin päälle rakennetusta sovelluksesta. Kuori on interaktiivinen komentorivipohjainen sovellus, samanlainen mitä yleimmät kuoret ovat Unix-järjestelmissä. Suurin ero Unix-kuoren ja JXTA-kuoren välillä on se, että Unix-kuoren komennot on tarkoitettu suoritettavaksi paikallisessa ympäristössä, kun taas JXTA-kuoren komennot suoritetaan verkotetussa ympäristössä.  6.3 Sovellukset (eng. Applications)
298    
299  Kuori JXTA-ympäristössä on yksinkertainen tulkki, joka hyväksyy komennon, tulkitsee komennon, suorittaa komennon ja odottaa komentoon vastausta. Komentoja ovat esimerkiksi "ls", "cat" ja "grep", aivan kuten perinteisissä Unix-järjestelmissä. Kuoren omainaisuuksiin kuuluu "piiputus", (vertaa edelleen perinteiset Unix-järjestelmät), jonka avulla tietyn komennon vaste voidaan antaa toisen komennon syötteeksi.  JXTA-sovellukset on rakenettu käyttäen ydin- ja palvelu-kerroksen palveluita hyväksi. JXTA-sovelluksia voivat olla
300    esimerkiksi pikaviestimet, sähköposti- ja kalenteri-pavelut sekä resurssien hakuun tai siirtoon erikoistuneet
301    sovellukset.
302    
303    6.4 Esimerkki sovellus: Kuori (eng. JXTA Shell)
304    
305  7. Tietoturva  Kuori on hyvä esimerkki JXTA-arkkitehtuurin päälle rakennetusta sovelluksesta. Kuori on interaktiivinen
306    komentorivipohjainen sovellus, samanlainen mitä yleimmät kuoret ovat Unix-järjestelmissä. Suurin ero Unix-kuoren ja
307    JXTA-kuoren välillä on se, että Unix-kuoren komennot on tarkoitettu suoritettavaksi paikallisessa ympäristössä, kun taas
308    JXTA-kuoren komennot suoritetaan hajautetussa verkkoympäristössä.
309    
310  Kuten muissakin tietojärjestelmissä, myös vertaisverkoissa tarvitaan tiedon turvaamista. Luottamus, koskemattomuus ja saatavuus ovat avainsanoja puhuttaessa tietoturvasta. Käytännössä edellä esitetyt vaatimukset tarkoittavat käyttäjän tunnistusta, valvontaa, tiedon salausta sekä liikenteen salausta.  Kuori JXTA-ympäristössä on yksinkertainen komentotulkki, joka hyväksyy komennon, tulkitsee komennon, suorittaa komennon
311    ja odottaa komentoon vastausta. Komentoja ovat esimerkiksi "ls", "cat" ja "grep", aivan kuten perinteisissä Unix-
312    järjestelmissä. Kuoren omainaisuuksiin kuuluu "piiputus", (vertaa edelleen perinteiset Unix-järjestelmät), jonka avulla
313    tietyn komennon vaste voidaan antaa toisen komennon syötteeksi.
314    
 TSL-protokollaa käytettäessä JXTA-verkko rakentuu kahdesta eri kerroksesta. Alempi kerros on JXTA-verkon virtuaaliverkko, joka mahdollistaa tiedon siirron kahden vertaissolmun välillä, vaikka fyysisessä verkossa tämä olisi estetty (palomuuri). Ylempi kerros koostuu TLS 1.0-protokollaa käyttävästä, edelleen virtuaalisesti verkosta. Ero alemman kerroksen virtuaaliseen verkkoon on se, että TLS-protokolla luo turvallisen siirtoyhteyden niiden vertaissolmujen välille, joiden keskuudessa tiedosiirto tapahtuu. Kuvassa 4 on esitetty arkkitehtuurin perusrakenne.  
315    
316    7. Tietoturva
317    
318    Kuten muissakin tietojärjestelmissä, myös vertaisverkoissa tarvitaan tiedon salaamista. Luottamus, koskemattomuus ja
319    saatavuus ovat avainsanoja puhuttaessa tietoturvasta. Käytännössä edellä esitetyt vaatimukset tarkoittavat käyttäjän
320    tunnistusta, valvontaa, tiedon sekä liikenteen salausta.
321    
322    Jos JXTA-verkossa halutaan käyttää tiedonsiirron yhteydessä salausta, on käytettävä Transport Secutiry Layer 1.0-
323    protokollaa (TSL 1.0). TSL-protokollan käyttö jakaa JXTA-verkon kahteen päällekkäiseen kerrokseen. Alempi kerros koostuu
324    JXTA-verkon pohjalla olevasta virtuaaliverkosta,  joka mahdollistaa tiedon siirron kahden vertaissolmun välillä, vaikka
325    fyysisessä verkossa tämä olisi huomattavan vaikeaa. Ylempi kerros koostuu TLS 1.0-protokollaa käyttävästä, edelleen
326    virtuaalisesta verkosta. Ero alemman kerroksen virtuaaliseen verkkoon on se, että TLS-protokolla luo turvallisen
327    siirtoyhteyden niiden vertaissolmujen välille, joiden keskuudessa tiedosiirto tapahtuu. Kuvassa 4 on esitetty
328    arkkitehtuurin perusrakenne.
329    
 Kuva 4. TSL-protokolla JXTA-arkkitehtuurissa (© Sun Microsystems).  
330    
331    
332  JXTA-verkossa käytetään Poblano-tietoturva-arkkitehtuuria [ ]. Tiedon kuljettamiseen käytetään Transport Secutiry Layer 1.0-protokollaa (TSL 1.0) [ ] ja tiedon salaamiseen RSA 1024-, 3DES- ja SHA-1-algoritmeja. TLS-protokollan on kehittänyt Internet Engineering Task Forde (IETF) ja se on jatkokehitysversio aiemmin luodulle Secure Sockey Layer 3.0-protokolalle. TSL 1.0-protokolla on kaksisuuntainen ja tieto siirtyy JXTA-verkossa 16 kilon osissa. Koska tiedonsiirtoväylä on kaksi suuntainen, pitää tiedonsiirron molemmat osapuolet pystyä tunnistamaan. Vertaissolmun pitää hankkia itselleen toisen vertaissolmun X509.V3-juuriserfifikaatti (eng. Root Certificate), jotta tiedonsiirto tapahtuisi turvallisesti. Sertifikaatti sisältää RSA 1024-algoritmin mukaiset julkiset avaimet, joiden avulla voidaan tunnistaa X509.V3-palvelusertifikaatin yksityisavaimet. TLS 1.0-protokolla käyttää palvelusertifikaatteja vertaissolmujen tunnistamiseen.  Kuva 4. TSL-protokolla JXTA-arkkitehtuurissa (© Sun Microsystems).
333    
 Vertaissolmut voivat hankkia toisen vertaissolmun juurisertifikaatin itselleen kahdella eri tavalla. Ensimmäinen tapa on levittää vertaissolmun juurisertifikaattia mainoksissa. Tämä ei kuitenkaan suositeltavaa, koska silloin "Mies viestin keskellä"-hyökkäys (eng. Man In The Middle Attack, MITM) saattaa tapahtua. MITM-hyökkäys on käytännössä vaikea suorittaa, koska sertifikaatit on vahvasti salattuja. Toinen, turvallisempi tapa levittää juurisertifikaatteja on liitää juurisertifikaatti binäärisen tiedon sekaan, jolloin MITM-hyökkäukset eivät olet mahdollisia.  
334    
335  Tällä hetkellä JXTA-projektissa kehitetään menetelmää, joka mahdollistaa vertaissolmuryhmien tunnistamisen. Menetelmä pohjautuu X509.V3 sertifikaatteihin. Kun vertaissolmu liittyy vertaissolmuryhmään, saa uusi jäsen ryhmän perustajan julkisen juurisertifikaatin itselleen tiedonsiirtokanavaa pitkin, jossa käytetään TLS 1.0-protokollaa. Tämän jälkeen uusi jäsen käyttää Certificate Service Request-palvelua (CSR) ja juuri saatua julkista avainta hankkiessaan ryhmänjäsenyys sertifikaatin itselleen. Sertifikaatti on X509.V3-muotoinen ja se on allekirjoitettu ryhmän perustajan yksityisellä juurisertifikaatilla.  JXTA-verkossa käytetään Poblano-tietoturva-arkkitehtuuria [ ]. Tiedon kuljettamiseen käytetään TSL 1.0-protokollaa ja
336    tiedon salaamiseen RSA 1024-, 3DES- ja SHA-1-algoritmeja. TLS 1.0-protokollan on kehittänyt
337    Internet Engineering Task Forde (IETF) ja se on jatkokehitysversio aiemmin luodulle Secure Sockey Layer 3.0-
338    protokolalle. TSL 1.0-protokolla on kaksisuuntainen ja tieto siirtyy JXTA-verkossa 16 kilotavun osissa. Koska
339    tiedonsiirtoväylä on kaksi suuntainen, pitää tiedonsiirron molemmat osapuolet pystyä tunnistamaan. Vertaissolmun pitää
340    hankkia itselleen toisen vertaissolmun X509.V3-juuriserfifikaatti (eng. Root Certificate), jotta tiedonsiirto tapahtuisi
341    turvallisesti. Sertifikaatti sisältää RSA 1024-algoritmin mukaisen julkisen avaimen, jonka avulla vertaissolmu voi
342    tunnistaa X509.V3-palvelusertifikaatin yksityisen avaimen. TLS 1.0-protokolla käyttää palvelusertifikaatteja
343    vertaissolmujen tunnistamiseen.
344    
345    Vertaissolmut voivat hankkia toisen vertaissolmun juurisertifikaatin itselleen kahdella eri tavalla. Ensimmäinen tapa on
346    levittää vertaissolmun juurisertifikaattia JXTA-verkon mainoksissa. Tämä ei kuitenkaan suositeltavaa, koska silloin
347    "Mies keskellä"-hyökkäys (eng. Man In The Middle Attack, MITM) saattaa tapahtua. MITM-hyökkäys on käytännössä vaikea
348    suorittaa, koska sertifikaatit on vahvasti salattuja. Toinen, turvallisempi tapa levittää juurisertifikaatteja on liitää
349    juurisertifikaatti binäärisen tiedon sekaan, jolloin MITM-hyökkäykset eivät olet mahdollisia.
350    
351    Tällä hetkellä JXTA-projektissa kehitetään menetelmää, joka mahdollistaa vertaissolmuryhmien tunnistamisen. Menetelmä
352    pohjautuu X509.V3-sertifikaatteihin. Kun vertaissolmu liittyy vertaissolmuryhmään, saa uusi vertaissolmu ryhmän
353    perustajan julkisen juurisertifikaatin itselleen tiedonsiirtokanavaa pitkin, jossa käytetään TLS 1.0-protokollaa. Tämän
354    jälkeen uusi vertaissolmu käyttää Certificate Service Request-palvelua (CSR) ja juuri saatua julkista avainta hyväksi
355    hankkiessaan ryhmänjäsenyys-sertifikaatin itselleen. Sertifikaatti on X509.V3-muotoinen ja se on allekirjoitettu ryhmän
356    perustajan yksityisellä juurisertifikaatti-avaimella.
357    
358    
359  8. Tiedon haku vertais- ja JXTA-verkoissa  8. Tiedon haku vertais- ja JXTA-verkoissa
360    
361  Tiedon hakeminen hajautetussa verkossa voidaan jakaa kahteen eri osaan [ ]. Ensimmäinen, ei-sisältöpohjainen haku (eng. Content-agnostic Search), pohjautuu menetelmään, jossa tarkoituksena on löytää verkosta muita solmuja, jotka sisältävät tarvittavat tiedot haun suorittamiseen. Yleensä nämä solmut ovat palvelimia, jotka pitävät yllä erilaisia hakemistoja verkossa liikkuvasta tiedosta ja tietoon liittyvistä solmuista. Ei-sisältöpohjaista hakutekniikkaa käyttää esimerkiksi Napster- ja Gnutella-tiedostonjako-ohjelmat. Ei-sisältöpohjaisen haun etuina ovat haun nopeus sekä pieni verkon kuormitus. Heikkouksina voidaan pitää virheensietokykyä, laajennettavuutta sekä keskitettyä ylläpitoa.  8.1 Tiedonhaku vertaisverkoissa
362    Tiedon hakeminen hajautetussa vertaisverkossa voidaan jakaa kahteen eri osaan [ ]. Ensimmäinen, ei-sisältöpohjainen haku
363    (eng. Content-agnostic Search), pohjautuu menetelmään, jossa tarkoituksena on löytää verkosta muita solmuja, jotka
364    sisältävät tarvittavat tiedot haun suorittamiseen. Yleensä nämä solmut ovat palvelimia, jotka pitävät yllä erilaisia
365    hakemistoja verkossa liikkuvasta tiedosta ja tietoon liittyvistä solmuista. Ei-sisältöpohjaista hakutekniikkaa käyttävät
366    esimerkiksi Napster- ja Gnutella-tiedostonjako-ohjelmat. Ei-sisältöpohjaisen haun etuina ovat haun nopeus sekä pieni
367    verkon kuormitus. Heikkouksina voidaan pitää virheensietokykyä, laajennettavuutta sekä keskitettyä ylläpitoa.
368    
369    Toinen tekniikka on nimeltään sisältöpohjainen haku (eng. Content-based Search). Sisältöpohjaisessa haussa haun kyselyä
370    (eng. Search Query) ohjataan haun sisällön perusteella verkon solmujen välillä. Jossain vaiheessa kysely ohjautuu
371    verkossa oikealle solmulle, joka pystyy vastaamaan kyselyyn ja palauttamaan haun tulokseen. Esimerkkejä tietopohjaisesta
372    hausta ovat CAN (eng. Content Addressable Network, CAN[ ] sekä Chord [ ]). Kun uusi solmu liittyy tietoverkkoon, jossa
373    käytetään tietopohjaista hakua, tulee solmun ensimmäiseksi luoda hakemisto (eng. Index) oman alueen (eng. Zone)
374    mainoksista. Yksittäisten alueiden hakemisto-unioni muodostaa olemassa olevan verkon koko tietovaraston. Alue, joka
375    uudellee solmulle varataan, on dynaaminen ja se rippuu verkon solmujen lukumäärästä sekä yksittäisten solmujen
376    poistumisesta verkosta tai liittymisestä verkkoon. Kun verkon solmu haluaa julkaista uuden mainoksen resurssiin tai
377    tietoon liittyen, se tutkii mainoksen sisällön. Sisällön perusteella solmu osaa lähettää mainoksen verkossa oikeaan
378    paikkaan. Hajautus on yleisin tapa laskea mainoksen paikka tietoverkossa.
379    
380    8.2 Tiedonhaku JXTA-verkossa
381    
382    Haku JXTA-verkoissa pohjautuu keskitin-solmuihin (eng. Hub Peer) sekä XML-pohjaisiin viesteihin. Kuvassa 5 on esitetty
383    JXTA-verkon verkkotopologia tiedonhaun yhteydessä.
384    
 Toinen tekniikka on nimeltään sisältöpohjainen haku (eng. Content-based Search). Sisältöpohjaisessa haussa haun kyselyä (eng. Search Query) ohjataan haun sisällön perusteella verkon solmujen välillä. Jossain vaiheessa kysely ohjautuu verkossa oikealle solmulle, joka pystyy vastaamaan kyselyyn ja palauttamaan haun tulokseen. Esimerkkejä tietopohjaisesta hausta ovat CAN (eng. Content Addressable Network) [ ] sekä Chord [ ]. Kun uusi solmu liittyy tietoverkkoon, jossa käytetään tietopohjaista hakua, tulee solmun ensimmäiseksi luoda hakemisto (eng. Index) oman alueen (eng. Zone) mainoksista (eng. Advertisement). Yksittäisten alueiden hakemisto-unioni muodostaa olemassa olevan verkon koko tietovaraston. Alue, joka uudellee solmulle varataan, on dynaaminen ja se rippuu verkon solmujen lukumäärästä sekä yksittäisten solmujen poistumisesta verkosta tai liittymisestä verkkoon. Kun verkon solmu haluaa julkaista uuden mainoksen resurssiin tai tietoon liittyen, se tutkii mainoksen sisällön. Sisällön perusteella solmu osaa lähettää mainoksen verkossa oikeaan paikkaan. Yleisin tapa laskea mainoksen paikan määräämiseen on käyttää hajautusta.  
385    
 Haku JXTA-verkoissa pohjautuu keskitin-solmuihin (eng. Hub Peer) sekä XML-pohjaisiin viesteihin. Kuvassa 5 on esitetty JXTA-verkon verkkotopologia tiedonhaun yhteydessä.  
386    
387  Kuva 5. Tiedon haku JXTA-verkossa (© Sun Microsystems).  Kuva 5. Tiedon haku JXTA-verkossa (© Sun Microsystems).
388    
 Tietoa voidaan hakea JXTA-verkossa joko syvyys- tai leveyssuunnassa. Tämä mahdollistaa tehokkaat hakualgorimit sekä vähentää verkon kuormitusta. Kun solmut julkaisevat mainoksia, ne tallennetaan keskitin-solmuihin. Yksittäiset keskitin-solmut voivat ohjata kyselyjä toisiin keskitin-solmuihin. Lisäksi keskitin-solmut voivat keskittyä maantieteellisesti sekä sisällön tai sovelluksen perusteella.  
389    
390  JXTA-verkossa käytetään hakujen suorittamiseen Query Routing-protokollaa (QRP). Koska protokolla on XML-muotoinen viesti, on se kevyt ja yhteensopiva eri järjestelmien välillä. QRP koostuu kolmesta viestimuodosta, rekisteröinnistä (eng. Registration), pyynnöstä (eng. Request) sekä vastauksesta (eng. Response). Rekisteröinti-viestimuotoa käytetään uusien resurssien julkituomiseen, pyyntö-viestimuotoa tiedon ja resurssien hakemiseen sekä vastaus-viestimuotoa haun tuottamien vastausten palauttamiseen. Kaikki komponentit sijaitsevat kyselyavaruudessa (eng. Query Space), joka vastaa XML-standardin nimiavaruuksia (eng. Namespace).  
391    Tietoa voidaan hakea JXTA-verkossa joko syvyys- tai leveyssuunnassa. Tämä mahdollistaa tehokkaat hakualgorimit sekä
392    vähentää verkon kuormitusta. Kun vertaissolmut julkaisevat mainoksia, ne tallennetaan keskitin-vertaissolmuihin.
393    Yksittäiset keskitin-vertaissolmut voivat ohjata kyselyjä toisiin keskitin-vertaissolmuihin. Lisäksi keskitin-
394    vertaissolmut voivat keskittyä maantieteellisesti sekä sisällön tai sovelluksen perusteella.
395    
396    JXTA-verkossa käytetään hakujen suorittamiseen Query Routing-protokollaa (QRP). Koska protokolla on XML-muotoinen
397    viesti, on se kevyt ja yhteensopiva eri järjestelmien välillä. QRP koostuu kolmesta viestimuodosta, rekisteröinnistä
398    (eng. Registration), pyynnöstä (eng. Request) sekä vastauksesta (eng. Response). Rekisteröinti-viestimuotoa käytetään
399    uusien resurssien julkituomiseen, pyyntö-viestimuotoa tiedon ja resurssien hakemiseen sekä vastaus-viestimuotoa haun
400    tuottamien vastausten palauttamiseen. Kaikki komponentit sijaitsevat kyselyavaruudessa (eng. Query Space), joka vastaa
401    XML-standardin nimiavaruuksia (eng. Namespace).
402    
403    
404    
405  Kuva 6. Eräs XML-muotoinen pyyntö-viesti (© Sun Microsystems).  Kuva 6. Eräs XML-muotoinen pyyntö-viesti (© Sun Microsystems).
406    
407  Pyyntöjen palauttamiin hakutuloksiin voidaan vaikuttaa Query Node Pattern-tekniikan (QNP) avulla. Se on tekniikka, jossa loogisia predikaatteja käytetään kuvamaan tietoa tai resurssia. Predikaatit voivat olla yksittäisiä sanoja tai loogisia operaattoreita, kuten "Tai" (eng. Or) ja "Ja" (eng. And). Kuvassa 7 on esitetty rekisteröinti-viesti. Viestissä rivi "http://big-bookseller.com/jxtasearch" määrää käytettävän kyselyavaruuden. Tämä viesti rekisteröi kyselyavaruuteen uudet avainsanat "Joy", "Stephenson", "Java", "JXTA", "XML" ja "Cryptography". Kaikki pyyntö-viestit, jotka hakevat edellä mainittuja sanoja (kuvan 6 viesti), suoritetaan "http://big-bookseller.com/jxtasearch"-palvelimella.  
408    
409    Pyyntöjen palauttamiin hakutuloksiin voidaan vaikuttaa Query Node Pattern-tekniikan (QNP) avulla. Se on tekniikka, jossa
410    loogisia predikaatteja käytetään kuvamaan tietoa tai resurssia. Predikaatit voivat olla yksittäisiä sanoja tai loogisia
411    operaattoreita, kuten "Tai" (eng. Or) ja "Ja" (eng. And). Kuvassa 7 on esitetty rekisteröinti-viesti. Viestissä rivi
412    "http://big-bookseller.com/jxtasearch" määrää käytettävän kyselyavaruuden. Tämä viesti rekisteröi kyselyavaruuteen uudet
413    avainsanat "Joy", "Stephenson", "Java", "JXTA", "XML" ja "Cryptography". Kaikki pyyntö-viestit, jotka hakevat edellä
414    mainittuja sanoja (esimerkiksi kuvan 6 viesti), suoritetaan "http://big-bookseller.com/jxtasearch"-palvelimella.
415    
416    
417    
418  Kuva 7. Eräs XML-muotoinen rekisteröinti-viesti (© Sun Microsystems).  Kuva 7. Eräs XML-muotoinen rekisteröinti-viesti (© Sun Microsystems).
# Line 272  Kuva 7. Eräs XML-muotoinen rekisteröinti Line 420  Kuva 7. Eräs XML-muotoinen rekisteröinti
420    
421    
422  9. Yhteenveto  9. Yhteenveto
423  JXTA-projektin tuotoksena on syntynyt monipuolinen vertaisverkkojärjestelmä. Avoimuus, tietoturva, Sovellusten yhteensopivuus sekä laitteistoriippumattomuus ovat asioita, jotka erottavat JXTA-arkkitehtuurin muista vertaisverkkojärjestelmistä. Erityisesti JXTAn kehittynyt tietoturva-arkkitehtuuri mahdollistaa vertaisverkkosovellusten käytön tilanteissa, joihin aiemmat vertaisverkkotekniikat eivät ole soveltuneet.  JXTA-projektin tuotoksena on syntynyt monipuolinen vertaisverkkojärjestelmä. Avoimuus, tietoturva, sovellusten
424  JXTA-arkkitehtuuri auttaa sovelluskehittäjiä keskittymään olennaiseen. Ohjelmoijan ei tarvitse syventyä erilaisiin yksityikohtiin, vaan voi heti alkaa kehittämään turvallisia ja tehokkaita ja ennen kaikkea hajautettuja sovelluksia vertaisverkkoympäristöön  yhteensopivuus sekä laitteistoriippumattomuus ovat asioita, jotka erottavat JXTA-arkkitehtuurin muista
425    vertaisverkkojärjestelmistä. Erityisesti JXTAn kehittynyt tietoturva-arkkitehtuuri mahdollistaa vertaisverkkosovellusten
426    käytön tilanteissa, joihin aiemmat vertaisverkkotekniikat eivät ole soveltuneet.
427    JXTA-arkkitehtuuri auttaa sovelluskehittäjiä keskittymään olennaiseen. Ohjelmoijan ei tarvitse syventyä erilaisiin
428    yksityikohtiin, vaan voi heti alkaa kehittämään turvallisia ja tehokkaita ja ennen kaikkea hajautettuja sovelluksia
429    vertaisverkkoympäristöön
430    
431  Viitteet  Viitteet
432  [1]  JXTA-projekti, www.jxta.org  [1] JXTA-projekti, www.jxta.org
433  [2] Traversat Bernard  ym., Project JXTA Virtual Netowk,  saatavilla WWW-muodossa <URL: http://www.jxta.org/project/www/docs/JXTAprotocols.pdf>, viitattu 11.10.2002  
434  [3] Yeager William, William Joseph, Secure Peer-to-Peer Networking, The JXTA Example, 1520-9202/02 IEEE / IT Professional Volume: 4; Issue: 2, March-April 2002  [2] Traversat Bernard  ym., Project JXTA Virtual Netowk, saatavilla WWW-muodossa <URL: http://www.jxta.org/project/www/docs/JXTAprotocols.pdf>, viitattu 11.10.2002
435  [4] Project JXTA: An Open, Innovative Colloboration,  saatavilla WWW-muodossa <URL:  http://www.jxta.org/project/www/docs/OpenInnovative.pdf>, viitattu 11.10.2002  
436  [5] Botros Sherif, Waterhouse Steve,  Search in JXTA and Other Distributed Networks, 0-7695-1503-07/02 IEEE, 2002  [3] Yeager William, William Joseph, Secure Peer-to-Peer Networking, The JXTA Example, 1520-9202/02 IEEE / IT Professional  Volume: 4; Issue: 2, March-April 2002
437  [6]  Waterhouse Steve ym., Distributed Serach in P2P Networks, 1089-7801/02 IEEE / IEEE Internet Computing, January-February 2002  
438  [7]  Gong Li, Project JXTA: A Technology Overview, saatavilla WWW-muodossa <URL:  http://www.jxta.org/project/www/docs/TechOverview.pdf>, viitattu 11.10.2002  [4] Project JXTA: An Open, Innovative Colloboration, saatavilla WWW-muodossa <URL:  http://www.jxta.org/project/www/docs/OpenInnovative.pdf>, viitattu 11.10.2002
439    
440    [5] Botros Sherif, Waterhouse Steve, Search in JXTA and Other Distributed Networks, 0-7695-1503-07/02 IEEE, 2002
441    
442    [6] Waterhouse Steve ym., Distributed Serach in P2P Networks, 1089-7801/02 IEEE / IEEE Internet Computing, January-February 2002
443    
444    [7] Gong Li, Project JXTA: A Technology Overview, saatavilla WWW-muodossa <URL:  http://www.jxta.org/project/www/docs/TechOverview.pdf>, viitattu 11.10.2002
445    
446  [8] Gong Li, JXTA: A Network Programming Environment, 1089-7801/01 IEEE / IEEE Internet Computing May-June 2001  [8] Gong Li, JXTA: A Network Programming Environment, 1089-7801/01 IEEE / IEEE Internet Computing May-June 2001
447  [9]  
448    [11] Gnutella, saatavilla WWW-muodossa <URL:  http://www.gnutella.wego.com>, viitattu 11.10.2002
449    
450    [12] Dierks T., Allen C., The TLS Protocol, IETF RFC2246, January 1999
451    
452    [13] Ratnasamy S. ym., A Scalable Content Addressable Network, ACM SIGCOM, 2001
453    
454    [14] Dabek F. ym., Building Peer-to-Peer Systems with Chord, a Distributed Lookup Service, 2001
455    
456    [15] SE P2P kirja vielä viimeiseksi    tänne !!!
457    
458    
459    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26