Inhaltsverzeichnis
1 Einleitung
1.1 Allgemein
1.2 Client-Server vs. Peer-to-Peer
1.3 P2P Einsatzmöglichkeiten
2 JXTA
2.1 Einleitung
2.2 JXTA-Überblick
2.3 Konzepte von JXTA
2.3.1 Peers
2.3.2 Groups
2.3.3 Messages
2.3.4 Advertisements
2.3.5 Services
2.3.6 Pipes
2.4 JXTA-Protokolle
2.4.1 Peer Endpoint Protokoll
2.4.2 Peer Resolver Protokoll
2.4.3 Peer Discovery Protokoll
2.4.4 Pipe Binding Protokoll
2.4.5 Rendezvous Protokoll
2.4.6 Peer Information Protokoll
3 PdfShare
3.1 Übersicht über PdfShare
3.2 PdfShare Details
3.3 Ausgewählte Auszüge aus dem Quellcode
3.3.1 Verbindung zur NetPeerGroup
3.3.2 Erstellung einer eigenen PeerGroup
3.3.3 Initialisierung des CMS
3.3.4 Dateien veröffentlichen
3.3.5 Dateien in der PeerGroup suchen
3.3.6 Ausgewählte Dateien herunterladen
3.3.7 XML-Darstellung eines ContentAdvertisement
4 Ausblick
A Anhang
A.1 Hinweise zur Verwendung des Programms
A.2 Klassendiagramm
A.3 Quellcode PdfShare
A.3.1 Datei SharedPdf.java
A.3.2 Datei AdvertisementViewer.java
A.3.3 PnFiles.java
A.3.4 PdfList.java
A.3.5 PdfShare.java
A.3.6 PdfShareException.java
A.3.7 IController.java
A.3.8 PdfShareController.java
A.3.9 PdfShareSearchListener.java
A.3.10 GschwindListRequest.java
A.3.11 CmsConnection.java
A.4 Literaturverzeichnis
Verzeichnis der Algorithmen
1 Beispiel einer Peer id
2 Group Advertisement
3 ContentAdvertisement
4 Verbindung zur NetPeerGroup
5 Erstellung einer eigenen PeerGroup
6 Initialisierung des CMS
7 Dateien veröffentlichen
8 Dateien in der PeerGroup suchen
9 Ausgewählte Dateien herunterladen
10 XML-Darstellung eines ContentAdvertisement
1 Einleitung
Dieses Dokument behandelt das Thema P2P Networking. Anhand einer JXTA Java Anwendung soll gezeigt werden, wie PDF-Dokumente ausgetauscht werden können. Nach einem Überblick über die Peer-to-Peer Technologie wird das JXTA- Framework vorgestellt. Anschließend wird die Anwendung PdfShare vorgestellt.
1.1 Allgemein
Peer-to-Peer (P2P) ist in den letzten Jahren ein oft genutztes Schlagwort im Soft- warebereich geworden. In der breiten Öffentlichkeit ist das Thema durch Pro- gramme wie Napster1, Gnutella2 oder Kazaa3 bekannt geworden. Die P2P-Technologie wurde dazu verwendet, Musik und Filme im Internet auszutauschen. Wegen der Problematik des Tauschens urheberrechtlich geschützer Dateien, bewegen sich viele Nutzer von P2P Tauschbörsen im Bereich der Illegalität. Leider hat dadurch der Begriff P2P-Technologie immer einen negativen Beigeschmack.
Ein weiterer Bereich, in dem dei P2P-Technologie nicht mehr wegzudenken ist, ist InstantMessaging. Der Geoinformatik-Service schreibt dazu: „Das Instant Mes- saging ist eine Kommunikationsform, die es den Internet-Nutzern erlaubt, fest- zustellen, ob ein anderer Teilnehmer gerade online ist. Sollte dies der Fall sein, können Nachrichten direkt verschickt werden, so dass eine online-Unterhaltung in Echtzeit möglich wird.“4
1.2 Client-Server vs. Peer-to-Peer
P2P-Systeme haben eine komplett andere Funktionsweise als traditionelle Client- Server Architekturen. Klaus Epple definiert die Client Server Architektur wie folgt: „Die Client-/Server-Architektur ist definiert als eine Rollenverteilung im Rechnernetz, bei der der Client eine Dienstleistung anfordert, die von einem Ser- ver erbracht wird.“5 Das Client/Server Prinzip wird gut auf der folgenden Abbil- dung dargestellt.6
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1: Darstellung des Client/Server Prinzips
Im LexIcon wird der Begriff P2P sehr gut beschrieben: „Alle an das Netz ange- schlossenen Rechner sind gleichberechtigt, sie können gleichermaßen als Client und als Server agieren. Anders als in einem Client-Server-Modell können dadurch Ressourcen, also Programme, Dateien oder auch Rechenleistung und Festplatten- platz, direkt unter den Peers ausgetauscht bzw. verteilt werden.“7 Das Peer-to-Peer Prinzip wird sehr gut auf der folgenden Abbildung dargestellt.8
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2: Darstellung des Peer-to-Peer Prinzips
Alle Clients bilden zusammen eine Comunity. Alle Teilnehemer haben einerseits das Bedürfnis z.B Pdf Dokumente zu finden und herunterzuladen, andererseits können sie ohne großen Aufwand selbst Ihre Dokumente zur Verfügung stellen. In diesem Zusammenhang erscheint der besondere Umstand, das jeder Teilnehn- mer an der Comunity gleichberechtigt ist, erwähnenswert.
Desweiteren ist die zentrale Dienstleistung eines Servers nicht mehr erreichbar, wenn bei einem klassischen Client-Server-System der Server abgeschaltet wird. Die Kommunikation zwischen den Clients muss somit über den Server laufen.
Wenn bei einem Peer-to-Peer-System hingegen ein Peer ausfällt, so ist die von diesem Peer erbrachte Dienstleistung nicht mehr erreichbar. Der große Vorteil an der P2P Technologie ist nun, das alle anderen Dienste und Peers weiterhin erreich- bar sind.
1.3 P2P Einsatzmöglichkeiten
Beispiele für in der Praxis eingesetzte P2P-Systeme sind z.B.:
- Jabber
Dies ist ein OpenSource InstantMessenger.
- Groove9
Groove ist eine Groupware Anwendung, bei der sich die Teilnehmer zu Gruppen zusammenschließen können. Innerhalb dieser Gruppen können Da- teien ausgetauscht, gechatted oder miteinander gesprochen werden.
- Gnutella
Gnutella ist ein Projekt, bei dem wie Napster Musikdateien getauscht wer- den können. Der große Unterschied besteht darin, dass hier keinen zentralen Server zum finden der Peers verwendet werden.
- seti@home10
Ist ein Beispiel für Grid-Computing. Die unbenutzte Rechenleistung der Teilnehmer an diesem Projekt wird genutzt, um nach außerirdischer Intelli- genz zu suchen.
E. Chtcherbina und T. Wieland fassen die Gemeinsamkeiten sehr gut zusammen:
„Ziel beim P2P-Computing ist es meist, in einem Net auf mehrere Peers verteil- te Ressourcen (...) aufzufinden und gemeinsam zu Nutzen. Der Zugriff auf diese Ressourcen erfolgt dabei nicht unberechtigt, sondern wird vom Nutzer des jewei- ligen Peers autorisiert (...)“.11
2 JXTA
2.1 Einleitung
JXTA ist ein OpenSource Java Framework um Peer-to-Peer Anwendungen zu ent- wickeln und stammt ursprünglich von der Firma Sun. JXTA stammt von dem Wort juxtapose ab und bedeutet soviel wie nebeneinander stellen. Bei den bisheri- gen Peer-to-Peer System existiert das Problem, dass jedes System seine eigenen Protokolle entwickelt. Dies führt zwangsläufig dazu, dass der Enwickler die Pro- tokolle im einzelnen kennen muss. Ziel bei der Entwicklung war es, dem späterem Entwickler die Entwicklung zu vereinfachen. JXTA hat den Vorteil, dass es sich um eine offene Plattform handelt, bei der der Entwickler sich keine Gedanken über die Protokolle machen muss. JXTA ist in erster Linie eine Spezifikation. Für diese Spezifikation gibt es verschiedene Implementierungen für unterschiedliche Programmiersprachen:
Java12, C13, Perl14, Python 15, Ruby 16 und Smalltalk 17.
Das Nachrichtenformat von JXTA basiert auf dem flexiblen Datenformat XML. Bei XML ist es nicht nur möglich Inhalte zu formatieren, sondern auch den Inhalt hierarchisch zu strukturieren. Die XML-Technologie bietet desweiteren die Mög- lichkeit, die Richtigkeit der Struktur des XML-Dokuments zu prüfen. Dazu wird entweder eine Document Type Definition (DTD) oder XML Schema notwendig. Mit diesen beiden Technologien ist es nun möglich, die XML-Datei auf die rich- tige Struktur zu prüfen.
Die Kommunikation der Peers ist bei JXTA über diverse Protokolle wie z.B. HTTP, TCP, SMS oder Bluetooth realisierbar. Durch die Unabhängigkeit von der Programmiersprache und des Protokolls ergibt sich die Geräteunabhängigkeit. JX- TA ist z.B. für die Java2 MicroEditon18 verfügbar. Dadurch ist es möglich, dass selbst Handys oder PDA’s19 Peer-to-Peer Anwendungen nutzen können. So ist es denkbar, dass z.B zwei Handys ihre Fotos über das Protokoll Bluetooth über eine P2P-Anwendung austauschen können.
2.2 JXTA-Überblick
Die JXTA Plattform gliedert sich in drei Schichten20:
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 3: Archtiekturübersicht über JXTA
- Anwendungsschicht (JXTA Applications)
- Diensteschicht (JXTA Services)
- Plattformschicht (JXTA Core)
Dies soll nun etwas näher beschreiben werden.
- Auf der untersten Schicht befindet sich der Kern von JXTA. Hier sind die Protokolle und Konzepte realisiert, auf denen JXTA aufbaut. Elemente die- ser Schicht sind Peers, Peergruppen, Pipes; die im nachfolgendem Abschnitt erläutert werden. Um die Flexibilität so groß wie möglich zu halten, sind auf dieser Ebene ausschließlich die grundlegenden Mechanismen imple- mentiert.
- Die nächste Schicht stellt die Diensteschicht dar. Hier werden, aufbauend auf den Konzepten und Protokollen von JXTA, komplexere Dienste zur Ver- fügung gestellt, z.B. eine Suchfunktion, ein komplexer Authentifizierungs- mechanismus oder der ContentManagement Service21. Implementierungen für diese Schicht sind einerseits von Sun, aber auch von der Comuinity ver- fügbar.
- Die oberste Schicht ist schließlich die Anwendung, die JXTA verwendet. Diese kann sowohl auf Dienste- als auch auf die Kernschicht zurückgreifen, um ihre Funktion zu realisieren.
2.3 Konzepte von JXTA
Beim Umgang mit JXTA kommt der Entwickler immer wieder mit speziellen Be- griffen in Berührung. Von daher sollen diese Begriffe hier nun kurz vorgetsellt werden.
2.3.1 Peers
Jedes Programm, dass an dem JXTA Netzwerk teilnimmt, wird als Peer bezeich- net. Meist ist der Peer identisch mit dem Gerät im Netzwerk, auf dem es sich befidnet. Es besteht aber auch die Möglichkeit, dass das gleiche Programm auf einem Rechner aus zwei unterschiedlichen Verzeichnissen gestartet wird, somit befidnen sich dann auf dem Rechner zwei Peers. Dies ermöglicht es auch, die Peer-to-Peer Anwendung auf einem Rechner zu testen. 22
Jedes Peer wird durch eine spezielle ID respräsentiert.
Algorithmus 1: Beispiel einer Peer id
urn:jxta:uuid-59616261646162614A7874615032503 3198B2E58DE3A4357B84FCF1E2DF4CBF503
2.3.2 Groups
Peers, mit ähnlichem Interesse, können zu PeerGroups zusammengeschaltet wer- den. Alle Peers sind Mitglied in der PeerNetGroup, in der dann die entsprechen- den Untergruppen angelegt werden. Peers können in mehreren Gruppen enthalten sein. Das Programm PdfShare nutzt die Gruppe gschwindPdfShare . Dies hat den Vorteil, dass die Suche nach Pdf-Dokumenten nur in dieser speziellen Grup- pe erfolgt. Dies hat Geschwindigkeitsvorteile. 23 Alle speziellen Informationen zu der Gruppe sind in dem GroupAdvertisement zusammengefasst.
Algorithmus 2: Group Advertisement
Abbildung in dieser Leseprobe nicht enthalten
2.3.3 Messages
Die Komminikation zwischen den einzelnen Peers wird über Messages realisiert. Dies sind in der Regel strukturierte Dokumente (XML), es können auch binäre Dokumente versendet werden. Bei der Anwendung PdfShare sind dies die Pdf- Dokumente.24
2.3.4 Advertisements
Advertisements kommen in vielfältiger Weise im JXTA Umfeld vor. Advertise- ments sind spezielle Messages, die dazu genutzt werden die Anwesenheit im P2P Netz oder die Dienste bekannt zu geben. Solche Advertisements sind z.B. Peer(Group) Advertisements, Pipe Advertisements oder Service Advertisement. 25
Bei der PdfShare Anwendung werden ContentAdvertisements verwendet. Diese repräsentieren z.B. eine PDf-Datei, die von anderen Peers heruntergeladen werden kann.
Algorithmus 3: ContentAdvertisement
Abbildung in dieser Leseprobe nicht enthalten
2.3.5 Services
Jeder Peer kann im JXTA Umfeld sogenannte Dienste anbieten, wie auch nutzen. So ein Service ist z.B. der ContentManagementService. Dieser Service unterstützt den Entwickler bei der Entwicklung von FileSharing Anwendungen. 26 Dies ist der grundlegende Service der PdfShare Anwendung. Weitere Services sind z.B.:
- Pipe Service
- Membership Service
- Access Service
- Discovery Service
- Resolver Service
2.3.6 Pipes
Pipes dienen der Verbindung zwischen Peers und zum Versand von Messages. Dabei wird zwischen unidirektional und asynchronen Pipes unterschieden. 27
2.4 JXTA-Protokolle
JXTA besteht aus einer Anzahl an Protokollen. Die folgende Grafik gibt einen Überblick über die Hierarchie der Protokolle.28
[...]
1 http://www.napster.com/
2 http://www.gnutella.com
3 http://www.kazaa.com/us/index.htm
4 [GS04]
5 Vgl. [Epp04] 6Quelle: [Kri04]
6 Quelle: [Kri04]
7 Vgl. [vL04]
8 Quelle: [Kri04]
9 http://www.groove.net
10 http://setiathome.berkeley.edu/
11 [CW04]
12 Download unter: http://download.jxta.org/stablebuilds/index.html
13 Homepage: http://jxta-c.jxta.org/ servlets/ProjectHome
14 Homepage: http://jxtaperl.jxta.org/ servlets/ProjectHome
15 Homepage: http://jxtapy.jxta.org/servlets/ProjectHome
16 Homepage: http://jxtaruby.jxta.org/servlets/ProjectHome
17 Homepage: http://smalltalkjxta.jxta.org/servlets/ProjectHome
18 Homepage: http://jxme.jxta.org/
19 PersonalDigitalAssistant
20 [SM04b]
21 Dieser Service wird in der Beispeilanwendung PdfShare verwendet
22 Vgl. [SM04a], Seite 7
23 Vgl. [SM04a], Seite 7
24 Vgl. [OTG02], Seite 35
25 Vgl. [Gra02], Seite 26
26 Vgl. [Gra02], Seite 30
27 Vgl. [BGK02], Seite 45
Häufig gestellte Fragen
Was ist das Thema dieses Dokuments?
Dieses Dokument behandelt das Thema P2P Networking und zeigt anhand einer JXTA Java Anwendung, wie PDF-Dokumente ausgetauscht werden können. Es gibt einen Überblick über die Peer-to-Peer Technologie und stellt das JXTA- Framework vor. Abschließend wird die Anwendung PdfShare vorgestellt.
Was ist Peer-to-Peer (P2P)?
Peer-to-Peer (P2P) ist eine Technologie, bei der alle an das Netz angeschlossenen Rechner gleichberechtigt sind und gleichermaßen als Client und als Server agieren können. Ressourcen wie Programme, Dateien oder Rechenleistung können direkt unter den Peers ausgetauscht werden.
Wie unterscheidet sich P2P von Client-Server-Architekturen?
In Client-Server-Architekturen fordert der Client eine Dienstleistung an, die von einem Server erbracht wird. Im Gegensatz dazu sind in P2P-Systemen alle Teilnehmer gleichberechtigt und können Ressourcen direkt austauschen. Außerdem ist bei einem Client-Server-System die zentrale Dienstleistung eines Servers nicht mehr erreichbar, wenn der Server ausfällt, während bei einem P2P-System der Ausfall eines Peers die Erreichbarkeit der anderen Peers und Dienste nicht beeinträchtigt.
Welche Einsatzmöglichkeiten gibt es für P2P-Systeme?
Beispiele für P2P-Systeme sind Jabber (Instant Messenger), Groove (Groupware), Gnutella (Dateitausch) und seti@home (Grid-Computing).
Was ist JXTA?
JXTA ist ein OpenSource Java Framework zur Entwicklung von Peer-to-Peer Anwendungen. Es bietet eine offene Plattform, die es Entwicklern ermöglicht, sich auf die Anwendungslogik zu konzentrieren, ohne sich um die zugrunde liegenden Protokolle kümmern zu müssen.
Welche Schichten gibt es in der JXTA-Plattform?
Die JXTA-Plattform gliedert sich in drei Schichten: Anwendungsschicht (JXTA Applications), Diensteschicht (JXTA Services) und Plattformschicht (JXTA Core).
Welche grundlegenden Konzepte gibt es in JXTA?
Zu den grundlegenden Konzepten von JXTA gehören Peers, Groups, Messages, Advertisements, Services und Pipes.
Was sind Advertisements in JXTA?
Advertisements sind spezielle Messages, die dazu genutzt werden, die Anwesenheit im P2P Netz oder die Dienste bekannt zu geben. Beispiele sind Peer(Group) Advertisements, Pipe Advertisements oder Service Advertisements.
Was ist PdfShare?
PdfShare ist eine JXTA Java Anwendung, die demonstriert, wie PDF-Dokumente über ein Peer-to-Peer Netzwerk ausgetauscht werden können. Sie nutzt den ContentManagementService von JXTA.
- Quote paper
- Dominik Dary (Author), 2004, Peer-to-Peer Networking und JXTA, Munich, GRIN Verlag, https://www.grin.com/document/108826