ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΛΗΡΩΜΩΝ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ ΣΕ ΙΚΤΥΑ ΟΜΟΤΙΜΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ

Σχετικά έγγραφα
Σχολή Προγραµµατιστών Ηλεκτρονικών Υπολογιστών (ΣΠΗΥ) Τµήµα Προγραµµατιστών Σειρά 112

ίκτυα υπολογιστών Στόχοι κεφαλαίου ίκτυα

Διαδίκτυο: δίκτυο διασυνδεμένων δικτύων Ξεκίνησε ως ένα μικρό κλειστό στρατιωτικό δίκτυο, απόρροια του Ψυχρού Πολέμου μεταξύ ΗΠΑ και ΕΣΣΔ.

Κάντε κλικ για έναρξη

Περίληψη Λαμπρόπουλος

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Γενικές Αρχές. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Εισαγωγή στην Πληροφορική

Όλες οι υπηρεσίες είναι διαθέσιμες μέσω διαδικτύου.

ίκτυα - Internet Υπηρεσίες Internet O Παγκόσµιος Ιστός (World Wide Web) Ηλεκτρονική Αλληλογραφία ( ) Υπηρεσία FTP (File Transfer Protocol)

Σκοπιµότητα των firewalls

Περιεχόμενα. Visio / White paper 1

Υπολογιστική Νέφους Cloud computing

ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ ΣΤΙΣ ΤΕΧΝΟΛΟΓΙΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΘΩΣ ΚΑΙ ΣΤΟ ΔΙΑΔΙΚΤΥΟ

ΓΕΩΠΟΝΙΚΗ ΣΧΟΛΗ ΑΠΘ Εργαστήριο Πληροφορικής στη Γεωργία

Ασφάλεια Υπολογιστικών Συστηµάτων

PROXY SERVER. Άριστη πύλη διαχωρισμού μεταξύ του εσωτερικού δικτύου και του Internet.

7.2 Τεχνολογία TCP/IP

ίκτυα ίκτυο υπολογιστών: Ένα σύνολο από υπολογιστικές συσκευές που συνδέονται µεταξύ τους για σκοπούς επικοινωνίας και χρήσης πόρων. Συνήθως, οι συσκε

J. Glenn Brookshear. Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

Τεχνολογία TCP/IP ΙΑ ΙΚΤΥΩΣΗ- INTERNET. Τεχνολογίες Τηλεκπαίδευσης & Εφαρµογές - Ιούλιος

Σχεδίαση και Ανάπτυξη Ιστότοπων

Α5.1 Εισαγωγή στα Δίκτυα. Α Λυκείου

Περίληψη ιπλωµατικής Εργασίας

7.9 ροµολόγηση. Ερωτήσεις

ΤΕΧΝΟΛΟΓΙΑ ΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Plugwise Business ιαχείριση και Εξοικονόµηση ενέργειας στο Εργασιακό περιβάλλον.

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Τη φυσική (MAC) διεύθυνση που δίνει ο κατασκευαστής του δικτυακού υλικού στις συσκευές του (π.χ. στις κάρτες δικτύου). Η περιοχή διευθύνσεων που

Εισαγωγή στην Τεχνολογία JXTA

Δίκτυα Υπολογιστών Firewalls. Χάρης Μανιφάβας

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΩΝ

7.11 Πρωτόκολλα Εφαρµογής Βασικές και Προηγµένες Υπηρεσίες ιαδικτύου. Ηλεκτρονικό Ταχυδροµείο. Τεχνολογία ικτύων Επικοινωνιών ΙΙ

Το ηλεκτρονικό ταχυδρομείο: Aφορά στην αποστολή και λήψη μηνυμάτων με συγκεκριμένη δομή και με συγκεκριμένα πρωτόκολλα. Ο αποστολέας και ο παραλήπτης

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Δίκτυα Υπολογιστών

ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ Ι. Σημειώσεις Θεωρίας

Στόχοι. Υπολογιστικά συστήματα: Στρώματα. Βασικές έννοιες [7]

Αριστοµένης Μακρής Εργαστήρια Η/Υ

Εισαγωγή στην επιστήμη των υπολογιστών. Υλικό Υπολογιστών Κεφάλαιο 6ο ίκτυα υπολογιστών

Σχεδιασµός βασισµένος σε συνιστώσες

1 Συστήματα Αυτοματισμού Βιβλιοθηκών

STORAGE AREA NETWORK. Σπουδαστές: Δόση Νικολέτα Καρακούση Πελαγία 30/5/2014 1

Είναι η διαδικασία εύρεσης της διαδρομής που πρέπει να ακολουθήσει ένα πακέτο για να φτάσει στον προορισμό του. Η διαδικασία αυτή δεν είναι πάντα

ΜΑΘΗΜΑ 4 - ΕΡΩΤΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ

ΜΑΘΗΜΑ 4 ΔΙΚΤΥΑ (NETWORKS)

Τεχνολογικά Επιτεύγµατα. Πλεονεκτήµατα. Ορισµός Κατανεµηµένου Συστήµατος. Μειονεκτήµατα. E-03: Λειτουργικά Συστήµατα ΙΙ 6. Εαρινό Εξάµηνο

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

Ιόνιο Πανεπιστήµιο Τµήµα Αρχειονοµίας - Βιβλιοθηκονοµίας. Υπηρεσίες Internet. ίκτυα Η/Υ. Επίπεδο Εφαρµογής. Ενότητα θ

Ενότητα 8. Εισαγωγή στην Πληροφορική. Internet: Τότε και Τώρα. Κεφάλαιο 8Α. Τρόπος Λειτουργίας Internet. Χειµερινό Εξάµηνο

Επαναληπτικές Ασκήσεις Μαθήματος

Τεχνολογία και Κοινωνία

ΤΕΧΝΟΛΟΓΙΑ ΔΙΚΤΥΩΝ ΕΠΙΚΟΙΝΩΝΙΩΝ

Αρχές Δικτύων Επικοινωνιών. Επικοινωνίες Δεδομένων Μάθημα 4 ο

Εργαστήριο Ασφάλεια Πληροφοριακών Συστημάτων. PGP (Pretty Good Privacy)

Ασφάλεια Στο Ηλεκτρονικό Εμπόριο. Λάζος Αλέξανδρος Α.Μ. 3530

ΚΕΦΑΛΑΙΟ 1: Τα είδη των Δικτύων Εισαγωγή

ΔΙΑΚΗΡΥΞΗ ΔΗΜΟΠΡΑΣΙΑΣ ΜΕ ΑΡΙΘΜΟ ΔΔ-...

ΚΑΤΑΝΕΜΗΜΕΝΑ ΣΥΣΤΗΜΑΤΑ. Παράδοση Ασκήσεων Κεφάλαιο 2 Ασκήσεις 3,6,8,9,15,22,24,26. Γεωργόπουλος Άλκης Α.Μ.: 39 Κοντογιώργης Αναστάσιος A.M.

Κεφάλαιο 8 Η τεχνολογία των διαδικασιών

EΠΙΣΗΜΑΝΣΗ ΑΠΟΡΡΗΤΟΥ (PRIVACY NOTICE)

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Κεφάλαιο 1 Ε Π Α Ν Α Λ Η Ψ Η

Δροµολόγηση (Routing)

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

Ενότητα 1. Εισαγωγή στις βασικές έννοιες των ικτύων ΗΥ

Ομότιμα συστήματα p2p systems ΠΡΙΝΕΑ ΜΑΡΙΑ 10 ΕΞΑΜΗΝΟ

2.5.1 Χρήση δεξιοτήτων αρχειοθέτησης για τη διατήρηση ενός καθιερωμένου συστήματος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ - Π.Μ.Σ. ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

WIRELESS SENSOR NETWORKS (WSN)

Πρωτόκολλα Διαδικτύου Μέρος 2ο. Επικοινωνίες Δεδομένων Μάθημα 3 ο

ΣΥΓΚΡΙΤΙΚΗ ΜΕΛΕΤΗ ΤΕΧΝΟΛΟΓΙΩΝ ΔΙΑΔΙΚΤΥΑΚΩΝ ΥΠΗΡΕΣΙΩΝ ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ ΤΗΣ ΤΕΧΝΟΛΟΓΙΑΣ REST ΠΛΑΣΤΑΡΑΣ ΕΥΡΙΠΙΔΗΣ

Αρχιτεκτονικές κατανεμημένων συστημάτων. I. Sommerville 2006 Βασικές αρχές Τεχνολογίας Λογισμικού, 8η αγγ. έκδοση Κεφ. 12

Συσκευές Τηλεπικοινωνιών και Δικτύωσης. Επικοινωνίες Δεδομένων Μάθημα 9 ο

Εισαγωγή στο διαδίκτυο

ΕΠΙΚΟΙΝΩΝΙΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ INTERNET

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΚΕΦΑΛΑΙΟ 1.7. Πρωτόκολλα και Αρχιτεκτονική Δικτύου

Εισαγωγή. Κατανεµηµένα Συστήµατα 01-1

Δικτύωση υπολογιστών

Χαρακτηρισµός Κατανεµηµένων Συστηµάτων

ΚΕΦΑΛΑΙΟ 10. Υπηρεσίες και εφαρμογές Διαδικτύου. ΚΕΦΑΛΑΙΟ 10 Υπηρεσίες και εφαρμογές Διαδικτύου. Α Γενικού Λυκείου

Ολοκληρωµένα ικτυακά ΣυστήµαταΚορµού (Backbone Networks)

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

ΠΜΣ 513 ΤΕΧΝΟΛΟΓΙΑ ΗΛΕΚΤΡΟΝ ΙΚΟΥ ΕΜΠΟΡΙΟΥ ΥΠΟΧΡΕΩΤΙΚΗ ΕΡΓΑΣΙΑ 2015

Πρότυπο Αναφοράς Open Systems Interconnection (OSI) Επικοινωνίες Δεδομένων Μάθημα 5 ο

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

ΤΙΤΛΟΣ ΑΝΑΦΟΡΑΣ: ΕΦΑΡΜΟΓΗ ΚΑΙ ΑΠΟΤΕΛΕΣΜΑΤΑ ΣΕ ΕΠΙΛΕΓΜΕΝΕΣ ΠΕΡΙΤΠΩΣΕΙΣ

Σύντομη παρουσίαση των εργαλείων/εντολών telnet, ping, traceroute nslookup και nmap, zenmap

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

ιεργασίες και Επεξεργαστές στα Κατανεµηµένων Συστηµάτων

Μάθημα 4: Πρότυπα, Πρωτόκολλα & Υπηρεσίες

ιαδίκτυα & Ενδοδίκτυα Η/Υ

Network Address Translation (NAT)

Search and Replication in Unstructured Peer-to-Peer Networks

Θέματα διπλωματικών εργασιών σε. Συστοιχίες παράλληλης εξυηρέτησης εφαρμογών Διαδικτύου

Κεφάλαιο 7.3. Πρωτόκολλο TCP

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΜΑΤΙΚΗΣ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΣΤΑ ΔΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ ΙΙ Γ Τάξη Ε.Π.Α.Λ.

Transcript:

ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ ΑΝΑΠΤΥΞΗ ΛΟΓΙΣΜΙΚΟΥ ΓΙΑ ΤΗ ΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΠΛΗΡΩΜΩΝ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ ΣΕ ΙΚΤΥΑ ΟΜΟΤΙΜΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ Καθηγητής: κ. Μιχαήλ Γ. Στρίντζης Φοιτητές: Λιόλιου Γεωργία Φαρίνης Χρήστος Θεσσαλονίκη 2004

Για την εκπόνηση της διπλωµατικής εργασίας θα θέλαµε να ευχαριστήσουµε θερµά τον καθηγητή κ. Μιχαήλ Γ. Στρίντζη για την εµπιστοσύνη που µας έδειξε, αναθέτοντάς µας αυτή την εργασία. Επίσης θα θέλαµε να ευχαριστήσουµε τον κ. Πέτρο άρα για τη συνεχή υποστήριξη και βοήθεια, καθώς επίσης και την κα. έσποινα Παλάκα, µε την βοήθειά της οποίας καταφέραµε να ξεπεράσουµε σηµαντικά προβλήµατα. i

ΠΕΡΙΕΧΟΜΕΝΑ ΕΙΣΑΓΩΓΗ... 1 ΜΕΡΟΣ ΠΡΩΤΟ ΚΕΦΑΛΑΙΟ 1 ΟΜΟΤΙΜΑ ΙΚΤΥΑ... 6 1.1. Γενικά... 9 1.2. Τα χαρακτηριστικά των συστηµάτων οµότιµων δικτύων... 13 ΚΕΦΑΛΑΙΟ 2 JXTA... 17 2.1. Γενικά... 17 2.2. Στόχοι της JXTA... 21 2.3. XML και JXTA... 23 2.4. Αρχές της JXTA... 24 2.4.1. Ταυτότητες της JXTA... 24 2.4.2. Peer... 25 2.4.3. Peer Group... 30 2.4.4. Endpoint... 33 2.4.5. Pipe... 34 2.4.6. Endpoints και Pipes... 36 2.4.7. Μηνύµατα... 39 2.4.8. ιαφηµίσεις... 40 2.5. Πρωτόκολλα της JXTA... 41 2.5.1. Πρωτόκολλο εύρεσης peer (Peer Discovery Protocol)... 42 2.5.2. Πρωτόκολλο ανάλυσης peer (Peer Resolver Protocol)... 42 2.5.3. Πρωτόκολλο πληροφοριών peer (Peer Information Protocol) 43 2.5.4. Πρωτόκολλο Συµµετοχή Peer (Peer Membership Protocol).. 43 2.5.5. Πρωτόκολλο Σύνδεσης των Pipes (Pipe Binding Protocol)... 43 2.5.6. Rendezvous Πρωτόκολλο (Rendezvous Protocol)... 44 2.5.7. Peer Endpoint Πρωτόκολλο (Peer Endpoint Protocol)... 44 ΚΕΦΑΛΑΙΟ 3 JXTA ΓΙΑ J2ME... 45 ii

3.1. Java 2 Micro Edition Τεχνολογία Java για Φορητές Συσκευές.. 46 3.2. Γενικά χαρακτηριστικά της JXTA για J2ME (JXME)... 50 3.3. JXTA Relays και JXME peers... 52 3.4. Αναζήτηση και αποστολή µηνυµάτων των JXME peers... 56 3.5. Ασφάλεια στις επικοινωνίες των J2ME συσκευών... 57 ΜΕΡΟΣ ΕΥΤΕΡΟ ΚΕΦΑΛΑΙΟ 1 ΣΤΟΧΟΙ ΤΗΣ ΕΡΓΑΣΙΑΣ... 61 ΚΕΦΑΛΑΙΟ 2 ΠΡΩΤΟΚΟΛΛΟ ΣΥΝΑΛΛΑΓΩΝ... 65 2.1. Ορισµοί... 65 2.2. Έκδοση ψηφιακού χρήµατος... 68 2.3. Περιγραφή των συναλλαγών... 69 2.3.1. Ενεργοποίηση λογαριασµού... 70 2.3.2. Αγορά Ηλεκτρονικού Χρήµατος... 71 2.3.3. Απόσυρση ηλεκτρονικού χρήµατος... 72 2.3.4. Αίτηση απόδοσης δηµόσιου κλειδιού πελάτη... 74 2.3.5. Αίτηση αγοράς και Εξυπηρέτηση πώλησης προϊόντος... 75 2.4. Ασφάλεια Πρωτοκόλλου... 77 2.4.1. Ασφάλεια ψηφιακού χρήµατος... 77 2.4.2. Ασφάλεια µηνυµάτων... 77 2.4.3. Ασφάλεια λογαριασµώνσφάλµα! εν έχει οριστεί σελιδοδείκτης. ΚΕΦΑΛΑΙΟ 3 ΛΕΙΤΟΥΡΓΙΕΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 79 3.1. Σύνδεση του mobile peer στο δίκτυο... 80 3.2. Αποστολή διαφηµίσεων Πώληση προϊόντων... 84 3.3. Εύρεση διαφηµίσεων Αγορά προϊόντων... 88 3.4. Έλεγχος και αγορά ψηφιακών χρηµάτων... 94 3.4.1. Αγορά ψηφιακών χρηµάτων (scrips)... 95 3.4.2. Έλεγχος ψηφιακών χρηµάτων... 97 ΚΕΦΑΛΑΙΟ 4 ΠΡΟΒΛΗΜΑΤΑ - ΠΕΡΙΟΡΙΣΜΟΙ... 99 4.1. Περιορισµένοι πόροι φορητών συσκευών... 99 iii

4.2. Έλλειψη βιβλιοθηκών, προγραµµατιστικά σφάλµατα σε βιβλιοθήκες και ανεπαρκής υλοποίηση της JXΜΕ... 100 4.3. Ασυµβατότητα µε την εφαρµογή P2People... 102 4.4. Ευαισθησία σε περίπτωση διακοπής της σύνδεσης ή απενεργοποίησης της συσκευής... 102 4.5. Προβλήµατα ασφάλειας... 103 4.6. Έλλειψη υποστήριξης πολλαπλών broker... 104 ΕΠΙΛΟΓΟΣ... 105 ΒΙΒΛΙΟΓΡΑΦΙΑ... 106 iv

ΕΙΣΑΓΩΓΗ Κανείς δεν µπορεί να αµφισβητήσει τη ραγδαία ανάπτυξη του διαδικτύου, καθώς και του ηλεκτρονικού εµπορίου, η οποία αναµένεται να αυξηθεί ακόµη περισσότερο τα επόµενα χρόνια. Σήµερα πάνω από 70 εκατοµµύρια υπολογιστές είναι συνδεδεµένοι στο διαδίκτυο. Μεγάλες εταιρίες, αναγνωρίζοντας την επιχειρηµατική δυνατότητα που προσφέρει αυτός ο τεράστιος αριθµός χρηστών, προσφέρουν υπηρεσίες σε καταναλωτές για την αγορά ή πώληση προϊόντων, σε παγκόσµιο επίπεδο, µέσω των ηλεκτρονικών τους εφαρµογών περιήγησης (Amazon, ebay). [14] [15] Οι προσωπικοί υπολογιστές (PC) σήµερα, χάρη στις τεχνολογικές καινοτοµίες σε µικροεπεξεργαστές και αποθηκευτικές συσκευές, είναι πολλές φορές πιο ισχυροί από διακοµιστές (servers) που υπήρχαν πριν από δυο ή τρία χρόνια. Η τεράστια υπολογιστική ισχύς και η αποθηκευτική χωρητικότητά τους είναι τις περισσότερες φορές µεγαλύτερη από αυτήν που χρησιµοποιεί ένας µέσος χρήστης. Αυτή η πλεονάζουσα υπολογιστική ισχύς αξιοποιείται από τις εφαρµογές δικτύων οµότιµης επικοινωνίας (peer-to-peer networks) για την δηµιουργία συστηµάτων αποκεντρωµένων, όπου οι χρήστες (peers) αποτελούν τους κόµβους του δικτύου. Αντίθετα από την αρχιτεκτονική πελάτη-διακοµιστή, τα δίκτυα οµότιµης επικοινωνίας δεν βασίζονται σε συγκεντρωµένους διακοµιστές για να παρέχουν πρόσβαση στις υπηρεσίες. Αποφεύγουν τη συγκεντρωµένη οργάνωση της αρχιτεκτονικής πελάτη-διακοµιστή και στη θέση του χρησιµοποιούν µια επίπεδη, υψηλά αλληλοσυνδεόµενη αρχιτεκτονική. Επιτρέποντας την περιοδική σύνδεση των υπολογιστών για να δουν ο ένας τον άλλο, το δίκτυο δίνει σ αυτά τα µηχανήµατα τη δυνατότητα να λειτουργούν ταυτόχρονα ως πελάτες και ως διακοµιστές, 1

που µπορούν να καθορίζουν τις διαθέσιµες υπηρεσίες στο δίκτυο και να χρησιµοποιούν αυτές τις υπηρεσίες µέσω εφαρµογών. Τα δίκτυα οµότιµης επικοινωνίας (peer-to-peer) χαίρουν ιδιαίτερης προσοχής τα τελευταία χρόνια, καθώς ο σχεδιασµός τους παρέχει τη δυνατότητα να συνεργάζονται άµεσα υπολογιστικά συστήµατα τα οποία βρίσκονται στην άκρη του δικτύου, όπως προσωπικοί υπολογιστές ή φορητές συσκευές, χρησιµοποιώντας την πλεονάζουσα υπολογιστική ισχύ των συστηµάτων, χωρίς την απαραίτητη υποστήριξη διακοµιστών. Οι περισσότερες υπάρχουσες οµότιµες πλατφόρµες έχουν σχεδιαστεί κυρίως για την ανταλλαγή αρχείων, τα οποία µπορεί να είναι αρχεία µουσικής, έγγραφα, εφαρµογές κ.α. Τα προβλήµατα ασφαλείας σε τέτοια συστήµατα δεν είναι τόσο σηµαντικά, σε αντίθεση µε συστήµατα τα οποία χρησιµοποιούν επιχειρήσεις, και ιδίως αυτές που σχετίζονται µε το ηλεκτρονικό εµπόριο. Σε τέτοια συστήµατα πρωταρχικό ρόλο παίζει η ασφάλεια, η οποία βασίζεται στη µυστικότητα και την πιστοποίηση αυθεντικότητας. Σήµερα, υπάρχει ένας αριθµός προτεινόµενων λύσεων για ηλεκτρονικά συστήµατα πληρωµών τα οποία χρησιµοποιούν κυρίως πιστωτικές κάρτες (CyberCoin, NetBill, SET). Κανένα όµως από αυτά δεν παρέχει πλήρη ανωνυµία και επίσης πολλά από αυτά δεν είναι κατάλληλα για µικροπληρωµές. Συνδυάζοντας τα χαρακτηριστικά των οµότιµων δικτύων µε το ηλεκτρονικό εµπόριο, µερικές εταιρίες προωθούν νέες υπηρεσίες µέσω αυτής της νέας υποδοµής (Trymedia Systems, Lightshare, PinPost, Center-Span, First peer). Όλες αυτές οι εταιρίες ισχυρίζονται ότι παρέχουν υπηρεσίες εµπορίου µέσω οµότιµων δικτύων, αλλά στην πραγµατικότητα χρησιµοποιούν ηλεκτρονικά µηνύµατα (e-mails) ή SSL (Secure Socket Layer) για τις χρηµατικές συναλλαγές. Το «οµότιµο εµπόριο» ανεβαίνει ένα ακόµα σκαλί µε τη δηµιουργία της εφαρµογής P2People. Το πρόγραµµα P2People είναι µια εφαρµογή που βασίζεται στην αρχιτεκτονική των δικτύων οµότιµης επικοινωνίας. Οι 2

χρήστες της εφαρµογής που συνδέονται µέσω αυτής στο δίκτυο έχουν τη δυνατότητα να συµµετέχουν σε έναν αριθµό από γκρουπ, ανάλογα µε τα ενδιαφέροντά τους και µέσω αυτών να έχουν πρόσβαση σε µια πληθώρα υπηρεσιών που παρέχει η εφαρµογή µε σκοπό την ψυχαγωγία, την επικοινωνία, το διαµοιρασµό δεδοµένων, αλλά ακόµη και το ηλεκτρονικό εµπόριο. Στην πραγµατικότητα είναι το πρώτο σύστηµα πληρωµών που χρησιµοποιεί δίκτυα οµότιµης επικοινωνίας. Παρέχει πλήρη ανωνυµία, ασφάλεια και ένα πρακτικό πλαίσιο εργασίας, στο οποίο κάθε χρήστης µπορεί να δρα είτε ως πωλητής είτε ως αγοραστής. Σήµερα όµως, εκτός από τους προσωπικούς υπολογιστές, µεγάλη εξέλιξη έχει και η τεχνολογία των φορητών συσκευών. Η τεχνολογία GPRS προσφέρει βελτιωµένες ταχύτητες και αξιοπιστία. Επιπλέον, χάρη της τεχνολογικής ανάπτυξης οι φορητές συσκευές αποκτούν συνεχώς µεγαλύτερη υπολογιστική ισχύ καθώς επίσης και µεγαλύτερη αποθηκευτική χωρητικότητα. Η νέα γενιά των ασύρµατων συσκευών, οι οποίες περιλαµβάνουν κινητά τηλέφωνα, PDA και άλλες συσκευές εισάγονται γρήγορα στην αγορά. και ταυτόχρονα αυξάνεται η ζήτηση για κατάλληλες εφαρµογές. Ειδικοί αναλυτές προβλέπουν ότι εκατοµµύρια χρηστών θα εγγραφούν σε ασύρµατες υπηρεσίες τα επόµενα χρόνια. Ιδιαίτερα κατάλληλο για τα χαρακτηριστικά των ασύρµατων συσκευών είναι το µοντέλο των δικτύων οµότιµης επικοινωνίας. Η φορητότητά τους απαιτεί αναµφιβόλως µια µέθοδο ανακάλυψης πόρων του δικτύου, κάτι που αποτελεί ένα καίριο χαρακτηριστικό των οµότιµων δικτύων. Επιπρόσθετα, οι περιορισµένοι πόροι τους έχουν ως αποτέλεσµα τη µεγαλύτερη εξάρτηση στις υπηρεσίες του δικτύου προκειµένου να δηµιουργήσουν χρήσιµες εφαρµογές. Στην εργασία αυτή, έγινε µια προσπάθεια υλοποίησης της υπηρεσίας ηλεκτρονικού εµπορίου της εφαρµογής P2People, για φορητές συσκευές. Η εφαρµογή αυτή χρησιµοποιεί ισχυρούς αλγόριθµους κρυπτογράφησης, καθώς και ειδικά σχεδιασµένο πρωτόκολλο για τις συναλλαγές, εξασφαλίζοντας έτσι τη µέγιστη δυνατή ασφάλεια. 3

Στο πρώτο µέρος της εργασίας αναλύεται η αρχιτεκτονική και η λειτουργία των συστηµάτων και των εφαρµογών, πάνω στα οποία βασίστηκε η υλοποίηση της εφαρµογής. Στο δεύτερος µέρος παρουσιάζεται το πρωτόκολλο που χρησιµοποιήθηκε για τις συναλλαγές, η πλήρης λειτουργία της εφαρµογής καθώς επίσης και τα διάφορα προβλήµατα που προέκυψαν κατά την υλοποίησή της. 4

ΜΕΡΟΣ ΠΡΩΤΟ ΙΚΤΥΑ ΟΜΟΤΙΜΗΣ ΕΠΙΚΟΙΝΩΝΙΑΣ 5

ΚΕΦΑΛΑΙΟ 1 ΟΜΟΤΙΜΑ ΙΚΤΥΑ Στις µέρες µας, οι περισσότερες υπηρεσίες που υπάρχουν στο διαδίκτυο είναι κατανεµηµένες, χρησιµοποιώντας την παραδοσιακή αρχιτεκτονική πελάτη-διακοµιστή (client-server). Το βασικό µοντέλο αυτής της αρχιτεκτονικής φαίνεται στην Εικόνα 1.1. Σ αυτή την αρχιτεκτονική, ο πελάτης συνδέεται στο διακοµιστή χρησιµοποιώντας ένα συγκεκριµένο πρωτόκολλο επικοινωνίας, όπως είναι το File Transfer Protocol (FTP), για να αποκτήσει πρόσβαση σε συγκεκριµένους πόρους. Το µεγαλύτερο µέρος της επεξεργασίας που χρειάζεται για την παροχή της υπηρεσίας συνήθως λαµβάνει χώρα στο διακοµιστή, αφαιρώντας µεγάλο φόρτο εργασίας από τον πελάτη. Οι πιο δηµοφιλείς εφαρµογές του διαδικτύου (συµπεριλαµβάνοντας το World Wide Web) FTP, telnet και e-mail χρησιµοποιούν αυτό το µοντέλο παροχής υπηρεσιών. υστυχώς, αυτή η αρχιτεκτονική έχει ένα βασικό µειονέκτηµα. Όσο ο αριθµός των πελατών αυξάνεται, αυξάνει το φορτίο και οι ανάγκες σε εύρος ζώνης στο διακοµιστή, παρεµποδίζοντας τελικά το διακοµιστή να χειριστεί επιπρόσθετους πελάτες. Από την άλλη πλευρά, το πλεονέκτηµα αυτής της αρχιτεκτονικής είναι ότι απαιτεί λιγότερη υπολογιστική ισχύ από την πλευρά του πελάτη. O πελάτης στην αρχιτεκτονική πελάτη-διακοµιστή έχει παθητικό ρόλο, ικανό να ζητάει υπηρεσίες από τους διακοµιστές αλλά ανίκανο να παρέχει υπηρεσίες σε άλλους πελάτες. Αυτό το µοντέλο παροχής υπηρεσιών είχε αναπτυχθεί όταν τα περισσότερα µηχανήµατα στο διαδίκτυο είχαν σταθερές ΙΡ διευθύνσεις, το οποίο σηµαίνει ότι όλα τα µηχανήµατα µπορούσαν να δουν τα υπόλοιπα εύκολα, χρησιµοποιώντας απλώς ένα όνοµα. Αν όλα τα µηχανήµατα στο δίκτυο λειτουργούσαν ως 6

διακοµιστές και ως πελάτες ταυτόχρονα θα σχηµάτιζαν ένα θεµελιώδες οµότιµο δίκτυο. Εικόνα 1.1. Αρχιτεκτονική πελάτη-διακοµιστή Καθώς το διαδίκτυο µεγάλωνε, ο πεπερασµένος αριθµός των διαθέσιµων ΙΡ διευθύνσεων παρακίνησε τους παροχείς υπηρεσιών να ξεκινήσουν τη δυναµική διανοµή ΙΡ διευθύνσεων σε µηχανήµατα, κάθε φορά που συνδεόταν στο δίκτυο µέσω dial-up συνδέσεων. Λόγω της δυναµικής φύσης των ΙΡ διευθύνσεων, τα µηχανήµατα δεν χρειάζεται να λειτουργούν και ως διακοµιστές. Παρ ότι κάποιος µπορεί ακόµη να τρέξει ένα διακοµιστή, αυτός ο χρήστης δεν µπορεί να έχει πρόσβαση σ αυτόν, εκτός και αν γνωρίζει από πριν την ΙΡ διεύθυνση του µηχανήµατος. Αυτοί οι υπολογιστές σχηµατίζουν την «άκρη» του διαδικτύου: µηχανήµατα που είναι συνδεδεµένα αλλά ανίκανα να συµµετάσχουν εύκολα στην ανταλλαγή υπηρεσιών. Γι αυτό το λόγο, οι περισσότερο χρήσιµες υπηρεσίες είναι συγκεντρωµένες στους διακοµιστές µε σταθερές ΙΡ διευθύνσεις, όπου µπορούν να είναι προσβάσιµες από οποιονδήποτε που ξέρει το εύκολο domain όνοµα του διακοµιστή. 7

Ένας άλλος λόγος, που τα περισσότερα µηχανήµατα των πελατών δεν µπορούν να λειτουργήσουν ως διακοµιστές, είναι ότι αποτελούν κοµµάτι ενός ιδιωτικού δικτύου. Αυτό το ιδιωτικό δίκτυο είναι συνήθως αποµονωµένο από το διαδίκτυο µέσω ενός firewall, µια συσκευή ή λογισµικό σχεδιασµένη να αποτρέπει αυθαίρετες συνδέσεις προς και από το ιδιωτικό δίκτυο. Οι εταιρείες συνήθως δηµιουργούν ένα ιδιωτικό δίκτυο για να διασφαλίσουν τις ευαίσθητες πληροφορίες της εταιρείας όπως επίσης και για να εµποδίσουν την κακή χρήση του δικτύου. Η παρενέργεια αυτής της τεχνολογίας είναι ότι ένας υπολογιστής έξω από το ιδιωτικό δίκτυο δεν µπορεί να συνδεθεί σε έναν υπολογιστή µέσα στο ιδιωτικό δίκτυο για να αποκτήσει πρόσβαση σε υπηρεσίες. Επιπλέον, το ποσό της υπολογιστικής και αποθηκευτικής ισχύς, που εκπροσωπούν τα σηµερινά µηχανήµατα πελατών, είναι τεράστιο. Οι σηµερινοί υπολογιστές είναι πολλές φορές πιο ισχυροί από µηχανήµατα διακοµιστών που χρησιµοποιούνταν µόλις πριν δυο χρόνια. Σχεδόν η µόνη διαφορά ανάµεσα σε ένα προσωπικό υπολογιστή και ένα διακοµιστή είναι το µεγαλύτερο εύρος ζώνης εισόδου-εξόδου, που µπορεί αποτελεσµατικά να επεξεργάζεται ένας διακοµιστής. Υπάρχουν και άλλες διαφορές ανάµεσα σε ένα προσωπικό υπολογιστή και ένα διακοµιστή, οι οποίες όµως αναφέρονται κυρίως στη διαχείριση και την αξιοπιστία. Όσον αφορά τους επεξεργαστές, τη γενική µνήµη και την ικανότητα αποθήκευσης είναι σχεδόν ταυτόσηµοι. Οι περισσότερες εφαρµογές δεν χρησιµοποιούν το 100% των πόρων των υπολογιστών, οπότε υπάρχει αρκετή πλεονάζουσα υπολογιστική ισχύς. Οι εφαρµογές δικτύων οµότιµης επικοινωνίας και τα πρωτόκολλά τους χρησιµοποιούν αυτή την πλεονάζουσα υπολογιστική ισχύ και τον αποθηκευτικό χώρο για να δηµιουργήσουν συστήµατα όπου όλοι οι υπολογισµοί γίνονται στα peers, τα οποία στην ουσία είναι κόµβοι του συστήµατος από προσωπικούς υπολογιστές, και όχι στους διακοµιστές. 8

1.1. Γενικά Ο όρος δίκτυα οµότιµης επικοινωνίας είναι σχετικά νέος. Ως τεχνολογία υπήρχε πάντα, αλλά δεν αναγνωριζόταν µε αυτό τον όρο. Μερικοί αποδίδουν τον όρο στον Gene Kan και σε άλλους πρωτοπόρους της Gnutella [18]. ιακοµιστές µε σταθερές ΙΡ διευθύνσεις είχαν πάντα τη δυνατότητα να επικοινωνούν µε άλλους διακοµιστές για να έχουν πρόσβαση σε υπηρεσίες. Πολλές εφαρµογές πριν τα δίκτυα οµότιµης επικοινωνίας, όπως το ηλεκτρονικό ταχυδροµείο και το σύστηµα των domain ονοµάτων, βασίστηκαν σ αυτές τις δυνατότητες για να παρέχουν κατανεµηµένα δίκτυα. Αντίθετα από την αρχιτεκτονική πελάτη-διακοµιστή, τα δίκτυα οµότιµης επικοινωνίας δεν βασίζονται σε συγκεντρωµένους διακοµιστές, για να παρέχουν πρόσβαση στις υπηρεσίες και συνήθως λειτουργούν έξω από το σύστηµα των domain ονοµάτων. Αποφεύγουν τη συγκεντρωµένη οργάνωση της αρχιτεκτονικής πελάτη-διακοµιστή και στη θέση του χρησιµοποιούν µια επίπεδη, υψηλά αλληλοσυνδεόµενη αρχιτεκτονική. Επιτρέποντας την περιοδική σύνδεση των υπολογιστών για να δουν ο ένας τον άλλο, το δίκτυο δίνει σ αυτά τα µηχανήµατα τη δυνατότητα να λειτουργούν ταυτόχρονα ως πελάτες και ως διακοµιστές, που µπορούν να καθορίζουν τις διαθέσιµες υπηρεσίες στο δίκτυο και να χρησιµοποιούν αυτές τις υπηρεσίες µέσω εφαρµογών. Η αρχιτεκτονική των δικτύων οµότιµης επικοινωνίας φαίνεται παρακάτω, στην Εικόνα 1.2. Το βασικό πλεονέκτηµα των δικτύων οµότιµης επικοινωνίας είναι ότι διανέµουν την υπευθυνότητα της παροχής υπηρεσιών ανάµεσα σε όλα τα peers του δικτύου. Αυτό εξαλείφει την πιθανότητα εµφάνισης προβληµάτων λόγω διακοπής λειτουργίας των υπηρεσιών, λόγω βλάβης σε ένα σηµείο του συστήµατος και παρέχει µια πιο κλιµακωτή λύση παροχής υπηρεσιών. Επιπρόσθετα, τα δίκτυα οµότιµης επικοινωνίας εκµεταλλεύονται το διαθέσιµο εύρος ζώνης διά µέσου όλου του δικτύου, χρησιµοποιώντας µια ποικιλία από κανάλια επικοινωνίας και 9

συµπληρώνοντας το εύρος ζώνης ως τα άκρα του διαδικτύου. Αντίθετα προς τις παραδοσιακές επικοινωνίες πελάτη-διακοµιστή, στις οποίες συγκεκριµένες διαδροµές προς δηµοφιλείς προορισµούς µπορεί να υπερφορτωθούν, τα συστήµατα οµότιµης επικοινωνίας παρέχουν επικοινωνίες µέσα από µια ποικιλία από διόδους, µειώνοντας έτσι το συνωστισµό του δικτύου. Εικόνα 1.2. Αρχιτεκτονική δικτύων οµότιµης επικοινωνίας Τα συστήµατα οµότιµης επικοινωνίας έχουν την ικανότητα να εξυπηρετούν πηγές πληροφοριών µε υψηλή διαθεσιµότητα σε πολύ χαµηλότερο κόστος, ενώ µεγιστοποιούν τη χρήση των πηγών από οποιοδήποτε peer συνδεδεµένο στο οµότιµο δίκτυο. Αν και οι λύσεις πελάτη-διακοµιστή βασίζονται στην αύξηση του εύρους ζώνης, εξοπλισµού και εγκαταστάσεων για να διατηρήσουν µια αξιόπιστη λύση, τα συστήµατα οµότιµης επικοινωνίας προσφέρουν ένα παρόµοιο επίπεδο αξιοπιστίας διαµοιράζοντας τις απαιτήσεις πόρων και υπηρεσιών σε όλο το δίκτυο. Εταιρίες όπως η Intel χρησιµοποιούν ήδη δίκτυα οµότιµης 10

επικοινωνίας για να µειώσουν το κόστος τις διανοµής εγγράφων και αρχείων σε όλη την εταιρεία. υστυχώς, τα δίκτυα οµότιµης επικοινωνίας υποφέρουν από µερικά µειονεκτήµατα λόγω της σπάταλης φύσης της κατασκευής τους. Η διανεµηµένη µορφή των καναλιών επικοινωνίας καταλήγει σε αιτήσεις για υπηρεσίες που είναι µη-ντετερµινιστικές από τη φύση τους. Για παράδειγµα, οι πελάτες που αιτούνται για την ίδια ακριβώς πηγή από το οµότιµο δίκτυο µπορεί να συνδεθούν σε εντελώς διαφορετικά µηχανήµατα µέσω διαφορετικών διαδροµών µε διαφορετικά αποτελέσµατα. Οι αιτήσεις που στέλνονται µέσω του δικτύου µπορεί να µην καταλήξουν σε µια άµεση απάντηση και, σε µερικές περιπτώσεις, µπορεί να µην καταλήξουν καθόλου σε απάντηση. Πηγές πληροφοριών σε ένα δίκτυο οµότιµης επικοινωνίας µπορεί να εξαφανιστούν καθώς οι πελάτες που φιλοξενούν τις πηγές µπορεί να αποσυνδεθούν από το δίκτυο. Αυτό είναι διαφορετικό από τις υπηρεσίες που παρέχονται από το παραδοσιακό διαδίκτυο, του οποίου οι περισσότερες πηγές είναι συνεχώς διαθέσιµες. Παρόλα αυτά, τα συστήµατα οµότιµης επικοινωνίας µπορούν να ξεπεράσουν αυτά τα προβλήµατα. Παρ ότι οι πηγές πληροφοριών µπορεί να εξαφανιστούν για κάποιες στιγµές, µια εφαρµογή µπορεί να παρέχει τη δυνατότητα να «καθρεφτίζει» τις πιο δηµοφιλείς πηγές σε πολλαπλά peers, και έτσι να παρέχει συνεχή και αξιόπιστη πρόσβαση σε κάποια πηγή. Μεγαλύτεροι αριθµοί από αλληλοσύνδετα peers µειώνουν την πιθανότητα µια αίτηση για κάποια υπηρεσία να µην απαντηθεί. Εν συντοµία, η ίδια η κατασκευή του δικτύου που δηµιουργεί τα προβλήµατα µπορεί να χρησιµοποιηθεί για να τα λύσει. Η τεχνολογία των δικτύων οµότιµης επικοινωνίας καθιστά ικανή οποιαδήποτε συσκευή που δικτύου να παρέχει υπηρεσίες σε άλλη. Μια συσκευή σε ένα τέτοιο δίκτυο µπορεί να παρέχει πρόσβαση σε οποιοδήποτε τύπο πόρων που έχει στη διάθεσή της, είτε είναι έγγραφα, χώρος αποθήκευσης, υπολογιστική ισχύ, ή ακόµη και τον ανθρώπινο χειριστή της. Η τεχνολογία δικτύων οµότιµης επικοινωνίας είναι µια 11

φυσική επέκταση της φιλοσοφίας του διαδικτύου µέσω αποκέντρωσης. Με τον ίδιο τρόπο που το διαδίκτυο παρέχει domain name lookup (DNS), World Wide Web, ηλεκτρονικό ταχυδροµείο, και άλλες υπηρεσίες διανέµοντας την υπευθυνότητα ανάµεσα στα εκατοµµύρια των διακοµιστών, το δίκτυο οµότιµης επικοινωνίας έχει την ικανότητα να δίνει ισχύ σε ένα νέο σύνολο σταθερών και αξιόπιστων εφαρµογών χρησιµοποιώντας πηγές κατανεµηµένες σε όλες τις γωνίες του διαδικτύου. Γενικά, ο όρος οµότιµη επικοινωνία αναφέρεται περισσότερο στον τρόπο λειτουργίας που κάνει την αλληλεπίδραση του δικτύου πιο συµµετρική. Αν και µπορούν να υπάρχουν συγκεντρωµένες υπηρεσίες, η εφαρµογή εστιάζεται κυρίως στον τελικό χρήστη. Αν οι συγκεντρωµένες υπηρεσίες είναι κατανεµηµένες, όπως το ηλεκτρονικό ταχυδροµείο, το σύστηµα είναι λιγότερο επιρρεπές σε δικτυακά προβλήµατα. Το Napster [19] είναι ένα χαρακτηριστικό παράδειγµα του συγκεντρωτισµού που προκαλεί προβλήµατα στη λειτουργία του συστήµατος οµότιµης επικοινωνίας, εάν ο κεντρικός διακοµιστής έχει κάποιο πρόβληµα ή αποσυνδεθεί. Η Gnutella [18] είναι το αντίθετο, επειδή οποιοδήποτε peer και να αφαιρεθεί, δεν πρόκειται να προκαλέσει σηµαντικό πρόβληµα στην ποιότητα του δικτύου. Το Napster βασίζεται σε ένα συγκεντρωµένο δίκτυο οµότιµης επικοινωνίας, το οποίο αποτελείται από ένα κεντρικό κατάλογο. To Napster συµπεριφερόταν σαν ένας παραδοσιακός σύστηµα πελάτηδιακοµιστή όταν οι χρήστες έψαχναν να βρουν αρχεία µουσικής, και συµπεριφερόταν σαν δίκτυο οµότιµης επικοινωνίας όταν οι χρήστες µετέφεραν αρχεία. Αυτό σηµαίνει ότι το σύστηµα επωφελήθηκε από το γεγονός ότι ήταν εύκολο να δηµιουργηθεί µια συγκεντρωµένη βάση δεδοµένων από µουσικά αρχεία και τις τοποθεσίες του, αλλά πολύ δύσκολο και δαπανηρό να φιλοξενεί τα αρχεία µουσικής. Η Gnutella είναι ένα εντελώς αποκεντρωµένο δίκτυο οµότιµης επικοινωνίας. Κανένα peer δεν είναι διαφορετικό από το άλλο, εκτός από 12

τα περιεχόµενα που µοιράζεται. Η υπηρεσία αρχειοκαταλόγων (directory service) του Napster διαµοιράζεται ανάµεσα στα peer της Gnutella. Ενώ τα δίκτυα οµότιµης επικοινωνίας είναι µια σχετικά νέα ιδέα, πολλοί παράγοντες το κάνουν πρακτικό για ένα µεγάλο αριθµό εφαρµογών. Αυτοί οι παράγοντες περιλαµβάνουν το µεγάλο αριθµό των συνδεδεµένων συσκευών στο δίκτυο, τον ταχύ ρυθµό αύξησης του φθηνού εύρους ζώνης, την επιτάχυνση της ισχύος των υπολογιστών, τις µεγαλύτερες αποθηκευτικές χωρητικότητες και την εξάπλωση των πληροφοριών στις άκρες του δικτύου. Το δίκτυο οµότιµης επικοινωνίας δίνει στους χρήστες τη δυνατότητα να διαχειρίζονται τα δεδοµένα κατά βούληση. Σε πολλές περιπτώσεις είναι πιο αποτελεσµατικό από το να αντιγράφουν δεδοµένα στους διακοµιστές ενώ παρέχουν τον ίδιο τύπο πρόσβασης. Οι εφαρµογές οµότιµης επικοινωνίας είναι εύκαµπτες και ανεκτικές στα λάθη. Μπορούν να αντιγράφουν δεδοµένα όταν χρειάζεται και να εκπέµπουν δεδοµένα σε πολλούς υπολογιστές, ενώ σε ένα σύστηµα διακοµιστή, υπάρχουν πολλά σηµεία στα οποία µπορεί να δηµιουργηθεί πρόβληµα. 1.2. Τα χαρακτηριστικά των συστηµάτων οµότιµων δικτύων Σε αυτή την ενότητα θα περιγράψουµε τα κοινά χαρακτηριστικά των συστηµάτων και των εφαρµογών που θεωρούνται τυπικά σε ένα σύστηµα οµότιµου δικτύου σήµερα. Παραδείγµατα εφαρµογών περιλαµβάνουν τα ακόλουθα: ιαµοιρασµός αρχείων Gnutella [18] και Napster [19] ιαµοιρασµός διανεµηµένων πόρων SETI@Home [20], Avaki [21] και Entropia [22] ιαµοιρασµός περιεχοµένων των δικτύων Blue Falcon Networks [28], Konitiki [23] 13

Οµότιµες επικοινωνίες AOL Instant Messenger [24], Yahoo!Messenger [25] και άλλα Εφαρµογές συνεργασίας Όπως Groove[27] και myjxta [26]. Ο διαµοιρασµός αρχείων και οι οµότιµες επικοινωνίες αποτελούν από κοινού τις θεµελιώδεις δυνατότητες που χρησιµοποιούνται για τη δηµιουργία ενός γκρουπ εργασίας. Ο αριθµός των χρηστών των οµότιµων επικοινωνιών και της διανοµής αρχείων σήµερα ανέρχεται σε εκατοντάδες εκατοµµύρια και αναµένεται να µεγαλώσει όσο νέοι χρήστες και νέες συσκευές συνδέονται στο δίκτυο. Τα κοινά χαρακτηριστικά των σηµερινών τυπικών συστηµάτων οµότιµων επικοινωνιών περιλαµβάνουν τα περισσότερα από τα ακόλουθα. Τα peer nodes είναι ενήµερα για τα άλλα peer nodes. Τα peers δηµιουργούν ένα εικονικό δίκτυο που ξεπερνά την πολυπλοκότητα της αλληλοσύνδεσης των peers, παρά των firewalls, subnets και την έλλειψη των συγκεκριµένων υπηρεσιών του δικτύου. Κάθε node µπορεί να δρα ως πελάτης και ως διακοµιστής ταυτόχρονα. Τα peers σχηµατίζουν κοινότητες εργασίας, δεδοµένων και εφαρµογών που µπορούν να περιγραφούν σαν peer groups. Η γενική επίδοση των εφαρµογών οµότιµης επικοινωνίας αυξάνεται όσο περισσότερα nodes συνδέονται στο δίκτυο, αντίθετα µε το τυπικό περιβάλλον πελάτη-διακοµιστή, όπου περισσότεροι πελάτες υποβαθµίζουν την επίδοσή τους. Η γενική επίδοση εξαρτάται επίσης και από την εφαρµογή, το πρωτόκολλο οµότιµης επικοινωνίας και την τοπολογία του δικτύου. Η τοπολογία του δικτύου αναφέρεται στη διευθέτηση των peers, το εύρος ζώνης τους, και την υπολογιστική τους ικανότητα. Τα πρωτόκολλα 14

περνάνε µηνύµατα και δεδοµένα στο δίκτυο, το οποίο διαβιβάζει τα µηνύµατα. Οι εφαρµογές, σε συνδυασµό µε τα πρωτόκολλα και τις υψηλές ταχύτητες από τµήµατα του δικτύου, συναρµολογούν ένα σύστηµα µε συγκεκριµένο προφίλ επίδοσης. Συγκρινόµενο µε ένα σύστηµα βασισµένο σε διακοµιστή, ακόµη και ένα µικρό σύστηµα οµότιµης επικοινωνίας µπορεί να είναι περίπλοκο. Παρόλα αυτά υπάρχει µεγάλο πλεονέκτηµα γιατί, παρά την πολυπλοκότητά του, το δίκτυο οµότιµης επικοινωνίας είναι ένα πραγµατικό δίκτυο από νησιά από προσωπικούς υπολογιστές σε διαφορετικούς συνεταιρισµούς, παροχείς υπηρεσιών διαδικτύου και τοπικά δίκτυα. Υπάρχουν περιπτώσεις όπου τα πρωτόκολλα ή οι εφαρµογές µπορούν να υπερφορτώσουν το δίκτυο µε µηνύµατα. Όχι όλο το δίκτυο οµότιµης επικοινωνίας, αλλά ένα µεγάλο µέρος του µπορεί να επηρεαστεί. Ένα απλό παράδειγµα για το πώς µπορεί κάτι τέτοιο να συµβεί είναι µια αίτηση αναζήτησης. Αν ένα µήνυµα αναζήτησης πολλαπλασιάζεται, το µήνυµα αναζήτησης µπορεί να σταθεί σε ένα peer πολλές φορές. Αν τα περισσότερα από τα peers προωθούν και συνεισφέρουν και τα ίδια µηνύµατα αναζήτησης, το διαθέσιµο εύρος ζώνης µπορεί γρήγορα να εξαντληθεί. Για να αποφευχθεί ο κορεσµός του εύρους ζώνης, τα πρωτόκολλα πρέπει να περιλαµβάνουν µηνύµατα ελέγχου και η τοπολογία πρέπει να αυξάνεται, µε τη δυνατότητα να ελαττώνονται τα διπλά µηνύµατα και ακόµη να αποθηκεύει πληροφορίες που συχνά απαιτούνται. Είναι πια καιρός να αναπτυχθούν ανταγωνιστικές εφαρµογές δικτύων οµότιµης επικοινωνίας, οι οποίες επωφελούνται από τις ήδη υπάρχουσες υπολογιστικές πηγές και τα δεδοµένα στους προσωπικούς υπολογιστές των χρηστών. Οι προσωπικοί υπολογιστές είναι επί του παρόντος στην άκρη του δικτύου, αλλά εκεί είναι που πρέπει το δίκτυο να ξεκινήσει. Είναι µερικώς ανεκµετάλλευτοι και είναι το µέρος όπου οι 15

χρήστες αλληλεπιδρούν µε τις εφαρµογές. Είναι ώρα για την επανάσταση στο πώς πιστεύουµε πως πρέπει να χρησιµοποιούνται οι πηγές µας. 16

ΚΕΦΑΛΑΙΟ 2 JXTA Μέχρι τώρα, ο ενθουσιασµός της εξερεύνησης των δυνατοτήτων της τεχνολογίας των δικτύων οµότιµης επικοινωνίας έχει επισκιάσει τη σπουδαιότητα της αλληλοχρησιµοποίησης και της επαναχρησιµοποίησης λογισµικού. Για να αναπτύξουν την τεχνολογία των δικτύων οµότιµης επικοινωνίας µέσα από µια ώριµη λύση πλατφόρµας, οι δηµιουργοί των εφαρµογών πρέπει να εστιάσουν τις προσπάθειές τους στη δηµιουργία σταθερών και καλά ορισµένων εφαρµογών, παρά στον προγραµµατισµό των θεµελίων αρχών του δικτύου. Για να γίνει αυτό, οι δηµιουργοί πρέπει να χρησιµοποιούν µια κοινή γλώσσα έτσι ώστε να επιτρέπουν στα peers να επικοινωνούν και να εκτελούν τις αρχές του οµότιµης δικτύωσης. H Sun Microsystems [16], αντιλαµβανόµενη αυτή την ανάγκη για µια κοινή «οµότιµη γλώσσα», δηµιούργησε το Project JXTA [1], για να σχεδιάσουν µια λύση που θα εξυπηρετούσε όλες τις εφαρµογές οµότιµης επικοινωνίας. 2.1. Γενικά Η Sun Microsystems ανακοίνωσε τον Απρίλιο του 2001 το project JXTA, ένα πρωτότυπο ερευνητικό πρόγραµµα µε αντικείµενο τη δικτυακή υπολογιστική επόµενης γενιάς. Το όνοµα JXTA προέρχεται από τη λέξη juxtapose, που σηµαίνει τοποθέτηση δυο οντοτήτων κοντά. Με αυτή την επιλογή του ονόµατος η οµάδα ανάπτυξης της Sun δείχνει ότι οι οµότιµες λύσεις δεν θα αντικαταστήσουν τις ήδη υπάρχουσες λύσεις πελάτηδιακοµιστή, αλλά θα υπάρχουν πάντα µαζί µε αυτές. 17

Η JXTA είναι ένα σύνολο ανοικτών, γενικευµένων πρωτοκόλλων οµότιµης επικοινωνίας υπολογιστών, η οποία παρέχει σε οποιαδήποτε ψηφιακή συσκευή ή ισότιµο υπολογιστή που συνδέεται σε δίκτυο, τη δυνατότητα ανεξάρτητης λειτουργίας και επικοινωνίας µε άλλους ισότιµους υπολογιστές, δηµιουργώντας µε αυτό τον τρόπο κοινότητες που συνδέονται µεταξύ τους. Όλες οι συσκευές, από τα κινητά τηλέφωνα µέχρι τους σταθµούς εργασίας και τους διακοµιστές, µπορούν να µιλούν µεταξύ τους και να µοιράζονται αρχεία και εικόνες µε ασφάλεια. Οι χρήστες έχουν τη δυνατότητα πρόσβασης σε περιεχόµενο διαµέσου πολυάριθµων συσκευών, ανεξάρτητα από το πού βρίσκονται ή από το δίκτυο που χρησιµοποιούν. Από την πρώτη στιγµή, το εγχείρηµα JXTA υιοθέτησε το µοντέλο άδειας ανοικτού πηγαίου κώδικα, όµοιο µε αυτό του Apache [17]. Αυτό παρέχει στους ερευνητές και στους προγραµµατιστές τη δυνατότητα να χρησιµοποιούν ελεύθερα τον πηγαίο κώδικα της JXTA και να συνεργάζονται µε σκοπό την ανάπτυξη της τεχνολογίας. Το αποτέλεσµα είναι ότι η κοινότητα έχει επεκτείνει τον αρχικό πηγαίο κώδικα που διαθέτει η Sun µέσω του jxta.org. Τα «γερά» τεχνικά θεµέλια της πλατφόρµας είναι αυτά που κατέστησαν δυνατή την ανάπτυξη µεγάλου αριθµού εφαρµογών JXTA. Τα πρωτόκολλα της JXTA δηµιουργούν µια «επικάλυψη» εικονικού δικτύου επάνω στα δίκτυα του διαδικτύου και σε αυτά που δεν βασίζονται σε ΙΡ, γεγονός που επιτρέπει σε κάθε ισότιµο υπολογιστή (ή σε οποιαδήποτε συσκευή) να αλληλεπιδρά απευθείας και να οργανώνεται ανεξάρτητα από τη θέση που έχει στο δίκτυο (firewall ή NAT). Η JXTA δεν είναι µια εφαρµογή και δεν διευκρινίζει τι τύπου εφαρµογές θα δηµιουργήσει κάποιος. Τα πρωτόκολλα που καθορίζονται στα πρότυπα δεν είναι αυστηρά καθορισµένα, οπότε η λειτουργικότητά τους µπορεί να επεκταθεί και να προσαρµοστεί στις ιδιαίτερες ανάγκες. Οποιοσδήποτε θέλει να δηµιουργήσει µια νέα εφαρµογή οµότιµης επικοινωνίας, χρησιµοποιώντας τη JXTA, αποφεύγει τη δυσκολία του 18

σωστού σχεδιασµού των πρωτοκόλλων για να χειριστεί τις βασικές λειτουργίες της οµότιµης επικοινωνίας. Σήµερα η JXTA χρησιµοποιείται για εµπορικές, εσωτερικές και ερευνητικές διανεµηµένες εφαρµογές από δηµιουργούς σε όλο τον κόσµο, σε µεγάλες εταιρίες, ακαδηµαϊκούς και αµυντικούς οργανισµούς. H JXTA ανακατεύει συγκέντρωση µε αποκέντρωση, ψάχνοντας να βρει τη χρυσή τοµή. Θεωρεί δεδοµένο ότι κάποιες υπηρεσίες στο δίκτυο οµότιµης επικοινωνίας επιτυγχάνονται καλύτερα από ένα περιορισµένο αριθµό από peers. Αν και όχι σε απόλυτη αναλογία, οι διακοµιστές ηλεκτρονικού ταχυδροµείου και οι πελάτες τους είναι µια παρόµοια ιδέα. Οι διακοµιστές χειρίζονται την προσωρινή αποθήκευση των µηνυµάτων ηλεκτρονικού ταχυδροµείου και κατευθύνουν τα µηνύµατα ανάµεσα σε άλλους διακοµιστές µέχρι να φτάσουν στον προορισµό τους. Η JXTA θα µπορούσε να εκτελέσει τις ίδιες λειτουργίες, εκτός από το ότι τα µηνύµατα θα µπορούσαν να δροµολογηθούν κατευθείαν από το ένα peer στο άλλο χρησιµοποιώντας ένα συνδυασµό από κατανεµηµένα peers. Τα ακόλουθα είναι µερικές από τις τεχνικές που χρησιµοποιεί η JXTA. Μερικοί τύποι µηνυµάτων προωθούνται µόνο συγκεκριµένες φορές. Αυτό αποτρέπει τα µηνύµατα να φτάνουν σε όλα τα Peers. Οι περισσότερες εφαρµογές δουλεύουν χωρίς να χρειάζονται όλα τα peers να συµµετέχουν. Τα δεδοµένα που ένα peer ανακαλύπτει κρατούνται και αποθηκεύονται τοπικά για να αποκλείσουν την ανάγκη για αναζήτηση των στοιχείων κάθε φορά που χρειάζεται. Τα δεδοµένα στο δίκτυο, ανάλογα µε τον τύπο τους, έχουν συγκεκριµένο χρόνο ζωής που εµποδίζει το δίκτυο να συσσωρεύει παλιά δεδοµένα. Όταν ο χρόνος ζωής του µηνύµατος λήγει, το µήνυµα σβήνεται. Η µεγάλη ικανότητα των peers χρησιµοποιείται για να ελαττώσει το φορτίο στα peers που έχουν µικρό εύρος ζώνης ή ανεπαρκή ισχύ 19

επεξεργασίας. Αυτό εµποδίζει τα peers µε µικρή ισχύ και ασήµαντο εύρος ζώνης να κορεστούν µε µηνύµατα. Η δροµολόγηση των µηνυµάτων είναι έξυπνα σχεδιασµένη από κάθε κόµβο για να εξασφαλιστεί η χρησιµοποίηση των βέλτιστων διόδων, προκειµένου να φτάσει το µήνυµα στον προορισµό του. Το βασικό πρωτόκολλο διαλέγεται βάσει της ικανότητας του δικτύου. Χρησιµοποιείται η κατανοµή ΙΡ διευθύνσεων στο τοπικό δίκτυο για να σταλούν τα µηνύµατα σε όλα τα peers µε το εύρος ζώνης ενός peer, ενώ TCP και HTTP ανάµεσα σε δίκτυα LAN και σε περιπτώσεις άµεσης επικοινωνίας ανάµεσα σε δυο peers. Η JXTA αποτελείται από τρία διαφορετικά στρώµατα. Το πρώτο είναι η πλατφόρµα, η οποία περιλαµβάνει τη βασική λειτουργία που χρησιµοποιείται από τις υπηρεσίες, που είναι το δεύτερο στρώµα. Οι υπηρεσίες παρέχουν πρόσβαση στα πρωτόκολλα της JXTA. Τέλος, υπάρχουν εφαρµογές οι οποίες χρησιµοποιούν υπηρεσίες για πρόσβαση στο δίκτυο της JXTA και σε εφαρµογές. Αυτή η διευθέτηση είναι ακριβώς η ίδια µε το τυπικό λειτουργικό σύστηµα, όπου υπάρχουν τρία στρώµατα, αποτελούµενα από το βασικό λειτουργικό σύστηµα, τις υπηρεσίες και τις εφαρµογές. Η JXTA προσθέτει αρκετές νέες αρχές, όπως το peer, το peer group, pipe και endpoints. Χρησιµοποιεί µια νέα αρχή στην οµότιµη επικοινωνία και την ανακάλυψη µε διαφηµίσεις, που είναι τα XML έγγραφα, που περιγράφουν τις υπηρεσίες και πληροφορίες διαθέσιµες στο JXTA δίκτυο. Τελικά, έχουµε διάφορους τύπους από ταυτότητες που χρησιµοποιούνται για να ξεχωρίσουν ένα αντικείµενο ή υπηρεσία από άλλο. 20

2.2. Στόχοι της JXTA Οι στόχοι της JXTA είναι πολύ απλοί: Ανεξαρτησία των λειτουργικών συστηµάτων Ανεξαρτησία γλώσσας Παροχή υπηρεσιών και υποδοµής για εφαρµογές οµότιµης επικοινωνίας Στην ουσία, οι στόχοι της JXTA είναι η υποστήριξη προγραµµατισµού οµότιµης επικοινωνίας σε οποιαδήποτε συσκευή, από προσωπικό υπολογιστή ως ένα PDA, ένα αυτοκίνητο ή ένα πλυντήριο αυτοκινήτων. Υπάρχουν επίσης και θεµελιώδεις στόχοι. Αυτοί οι στόχοι περιλαµβάνουν τα εξής: Η χρήση γκρουπ για την οργάνωση των peers και η παροχή περιβάλλοντος εργασίας για υπηρεσίες και εφαρµογές. Τα γκρουπ χρησιµοποιούν πιστοποίηση και διαπιστευτήρια για να ελέγχουν την πρόσβαση και/ή να παρέχουν ασφάλεια στο επίπεδο των γκρουπ. ιανέµουν πληροφορίες σχετικά µε τα peers και τις πηγές του δικτύου καθ όλο το δίκτυο. Αναζητήσεις διανέµονται σε όλο το σύστηµα. Παρέχουν υποδοµή για δροµολόγηση και επικοινωνία µεταξύ των peers. Η επικοινωνία µε peers που βρίσκονται πίσω από firewalls και άλλα εµπόδια είναι ένα βασικό µέληµα αυτού του στόχου. Παρέχει µηχανισµούς που επιτρέπουν στα peers να παρακολουθούνται µεταξύ τους και να ελέγχουν τους πόρους. Εκτός από αυτούς τους στόχους, υπάρχουν και άλλοι όπως η κρυπτογράφηση, η υποστήριξη διάφορων πρωτόκολλα επικοινωνίας, η ευκολία χρήσης, η σταθερότητα και εκτέλεση. Όλοι αυτοί οι στόχοι είχαν 21

ληφθεί υπόψιν κατά τη δηµιουργία των πρωτοκόλλων της JXTA και το αρχικό Java API. Επιπρόσθετα, υπάρχουν και άλλοι στόχοι που µελετούνται από τους δηµιουργούς και τους διευθυντές της Sun Microsystems: Η δηµιουργία ενός συστήµατος που καθιστά ικανές τις συσκευές να συνδέονται στο δίκτυο της JXTA. Η δηµιουργία ενός συστήµατος που καθιστά ικανή τη συγκεντρωµένη διαχείριση των peers µέσω των ISP s και των εταιρικών διαδικτύων. Η δηµιουργία ενός συστήµατος που να υποστηρίζει ψηφιακά δικαιώµατα διαχείρισης. Αυτό θα υιοθετούσε τη χρήση της JXTA στην αγορά ψηφιακών προϊόντων, όπως λογισµικό, µουσική, ταινίες και άλλα ψηφιακά µέσα. Οι εφαρµογές δικτύων οµότιµης επικοινωνίας για το διαµοιρασµό αρχείων που δεν λογοδοτούν για ψηφιακά δικαιώµατα θα βρεθούν αντιµέτωπες µε το νόµο και θα διακοπεί η λειτουργία τους από εταιρίες και ISP s. Σεβόµενοι την πνευµατική ιδιοκτησία και τα δικαιώµατα του δηµιουργού, οι υπεύθυνοι της JXTA ελπίζουν ότι θα επιτραπεί η πρόσβαση στη JXTA. Η συµπύκνωση και η αφηρηµένη λειτουργικότητα του πυρήνα, έτσι ώστε να µπορούν να δηµιουργηθούν εµπορικές εφαρµογές. Η προηγούµενη λίστα έχει δύο βασικές αρχές. Πρώτον οι εταιρίες πρέπει να είναι ικανές να νιώθουν ότι έχουν τον έλεγχο. Τα περισσότερα συστήµατα οµότιµης επικοινωνίας δεν έχουν συγκεντρωµένη διαχείριση και δεν είναι ευπρόσδεκτα στις περισσότερες εταιρείες. εύτερον, τα συστήµατα της JXTA πρέπει να είναι προσοδοφόρα σε σχέση µε την ανάπτυξη του λογισµικού. Αυτό σηµαίνει ότι πρέπει να υπάρχει υλικό, ή συνδυασµό υλικού-λογισµικού που να πωλούνται στο εµπόριο.. εδοµένων όλων των στόχων, η JXTA έχει σχεδιαστεί έτσι ώστε να γίνει αποδεκτή από τη βιοµηχανία, να είναι σταθερή, αξιόπιστη, και να 22

µπορεί να εκπληρεί σχεδόν οποιαδήποτε απαίτηση εφαρµογής οµότιµης επικοινωνιάς. Λόγω των πολλών στόχων, δηµιουργείται πολυπλοκότητα. Λόγω της πολυπλοκότητας του συστήµατος, και της ύπαρξης πολλών µεθόδων υλοποίησης µιας πλατφόρµας οµότιµης επικοινωνίας, οι προδιαγραφές ενδέχεται να αλλάξουν. Πρόσφατα η επιχείρηση JXTA ανακοίνωση τη νέα έκδοση JXTA 2.0. Η νέα αυτή έκδοση εισάγει έναν αριθµό νέων χαρακτηριστικών και βελτιώνει τα ήδη υπάρχοντα, παρέχοντας µεγαλύτερα επίπεδα ασφαλείας και αξιοπιστίας, έχοντας ως σκοπό τη βελτίωση της συνολικής απόδοσης και της κλιµάκωσης του δικτύου της JXTA. Στη νέα έκδοση γίνεται πιο σαφής διαχωρισµός στον τρόπο που τα super peers, όπως τα relay και τα rendezvous συµπεριφέρονται και αλληλεπιδρούν µε τα απλά peers, που βρίσκονται στα άκρα του δικτύου. 2.3. XML και JXTA Η XML είναι η βάση για τα περισσότερα πρωτόκολλα της JXTA. Οι βασικοί λόγοι που οδήγησαν τους προγραµµατιστές στη χρησιµοποίηση αρχείων XML είναι η ικανότητά τους να διαβάζονται από πολλές γλώσσες και η ικανότητά τους να επικυρώνονται. Είναι επίσης µια εύκολη επιλογή εξαιτίας της δηµοτικότητάς της. Γενικά, τα αρχεία XML είναι µια καλή επιλογή επειδή είναι εύκολο να χρησιµοποιηθούν ως πρωτόκολλα. Το να δηµιουργήσουµε ένα πρωτόκολλο που χρησιµοποιούσε µια δυαδική µορφή θα ήταν πολύ πιο δύσκολο να κατανοηθεί, και θα χρειαζόταν να φτιαχτούν καινούριοι parsers. Για τα αρχεία XML, υπάρχουν πολλοί parsers οι οποίοι µπορούν να χρησιµοποιηθούν, εµπορικά και δωρεάν. Επίσης αρχίζουν να γίνονται πρότυπα για πολλές διαφορετικές βιοµηχανίες για απεικόνιση δεδοµένων, έτσι ώστε η ανάµειξη δεδοµένων µε το πρωτόκολλο είναι τόσο απλή όσο η συγχώνευση δύο XML εγγράφων. 23

Ωστόσο, υπάρχει ένα µειονέκτηµα στη χρήση της XML. Τα αρχεία XML δεν είναι ένας απλός συµπαγής τρόπος να εκφράσουµε δεδοµένα. Τα µηνύµατα γραµµένα σε XML είναι πολύ µεγαλύτερα από ότι τα αντίστοιχα δυαδικά. Υπάρχουν τεχνικές που µπορούν να χρησιµοποιηθούν, όπως η αντικατάσταση των ταµπελών µε δυαδικά tokens ή η συµπίεση των δεδοµένων, αλλά καµιά από αυτές προς το παρόν δεν χρησιµοποιείται από την JXTA γιατί αυτές δεν είναι ευρέως διαδεδοµένες προς το παρόν. Συµπερασµατικά, οι βασικοί δηµιουργοί της JXTA έχουν δηµιουργήσει ένα απλό δυαδικό µήνυµα µεταφοράς και έχουν χρησιµοποιήσει λιτή γλώσσα και ακρωνύµια για τα ονόµατα των ταµπελών. υστυχώς, αυτό σηµαίνει ότι τα αρχεία XML που χρησιµοποιούνται στη JXTA είναι τροµερά δύσκολο να διαβαστούν και να κατανοηθούν. 2.4. Αρχές της JXTA H JXTA είναι χτισµένη πάνω σε θεµελιώδη στοιχεία και προσθέτει αρκετές νέες αρχές, όπως είναι το peer, το peer group, τα pipes και άλλα, παρέχοντας κατά αυτόν τον τρόπο λύσεις σε διάφορα ερωτήµατα, όπως για παράδειγµα το πώς µια συσκευή είναι ενήµερη για την παρουσία κάποιας άλλης, πώς µια συσκευή γνωστοποιεί τις δυνατότητές της, ποιες πληροφορίες είναι απαραίτητες για να προσδιοριστεί η µοναδική ταυτότητα κάθε peer, πώς οι χρήστες ανταλλάσσουν δεδοµένα και άλλα. 2.4.1. Ταυτότητες της JXTA (JXTA IDs) H JXTA εισάγει ένα µοντέλο βασισµένο σε ένα οµοιόµορφο και ανεξάρτητο τοποθεσίας µοντέλο. Κάθε πηγή του δικτύου (peer, pipe, δεδοµένα, peergroup, κτλ) προσδιορίζεται από µοναδική ταυτότητα (JXTA 24

ID). Η υλοποίηση αυτή χρησιµοποιεί µια τυχαία ταυτότητα αποτελούµενη από 128 bits, επιτρέποντας έτσι σε κάθε peer να παράγει από µόνο του τη δική του ταυτότητα. Ένα peer στο δίκτυο της JXTA προσδιορίζεται µοναδικά από αυτήν, η οποία χρησιµοποιείται για την εύρεση του peer στο δίκτυο, χωρίς να λαµβάνεται υπόψιν η τοποθεσία του. 2.4.2. Peer Ένα peer είναι ένας κόµβος σε ένα δίκτυο οµότιµης επικοινωνίας, το οποίο αποτελεί τη θεµελιώδη µονάδα επεξεργασίας. Πολλοί περιγράφουν το peer σαν µια εφαρµογή που τρέχει σε έναν υπολογιστή συνδεδεµένο σε κάποιο δίκτυο, όπως για παράδειγµα το διαδίκτυο, αλλά αυτή η περιορισµένη περιγραφή δεν θα µπορούσε να συλλάβει την πραγµατική λειτουργία ενός peer και όλες τις δυνατές ενσαρκώσεις του. Αυτή η περιορισµένη περιγραφή προεξοφλεί την πιθανότητα ότι ένα peer µπορεί να είναι µια εφαρµογή διανεµηµένη σε πολλά µηχανήµατα ή ότι ένα peer µπορεί να είναι µια µικρή συσκευή, όπως ένα PDA, το οποίο συνδέεται έµµεσα στο δίκτυο. Ακόµη, είναι δυνατόν σε ένα µηχάνηµα να συνυπάρχουν πολλά peers. Επειδή ένα peer δεν είναι το ίδιο µε ένα χρήστη, οι εφαρµογές πρέπει να ξεχωρίζουν την ιδέα του χρήστη από τα peers. Ένας γενικός ορισµός ενός peer µπορεί να είναι ο ακόλουθος: «Peer είναι µια οντότητα ικανή να εκτελέσει ορισµένες χρήσιµες λειτουργίες και να ανακοινώσει τα αποτελέσµατα σε κάποια άλλη οντότητα µέσω δικτύου, είτε άµεσα είτε έµµεσα». Ο ορισµός της χρήσιµης εργασίας εξαρτάται από τον τύπο του peer. Τα peers είναι συσχετισµένα µε ειδικές υπηρεσίες που παρέχει το δίκτυο. Οι βασικές υπηρεσίες του δικτύου αναφέρονται στην αναζήτηση και την επικοινωνία. Γενικά, δεν είναι απαραίτητο όλα τα peers να έχουν αυτές τις υπηρεσίες, αλλά κάποιο ποσοστό αυτών, έτσι ώστε να εξασφαλίζεται ότι τα υπόλοιπα peers έχουν πρόσβαση σ αυτές. 25

Υπάρχουν τρεις πιθανοί τύποι peer στο δίκτυο της JXTA: Simple Peers Rendezvous Super-Peers Relay Super-Peers Κάθε peer στο δίκτυο µπορεί να δρα σαν peer ενός τύπου ή ως συνδυασµός αυτών, όπου κάθε τύπος προσδίδει στο peer, σαν οντότητα, διαφορετικό σύνολο ευθυνών για το δίκτυο οµότιµης επικοινωνίας. α. Simple Peers Το simple peer είναι σχεδιασµένο για να εξυπηρετεί έναν απλό χρήστη, επιτρέποντάς του να παρέχει υπηρεσίες από τη συσκευή του και να χρησιµοποιεί υπηρεσίες που παρέχονται από άλλα peers στο δίκτυο. Πιθανότατα, ένα simple peer στο δίκτυο µπορεί να είναι τοποθετηµένο πίσω από κάποιο firewall, διαχωρισµένο γενικά από το δίκτυο. Τα peers έξω από το firewall είναι πιθανόν να µη µπορούν να επικοινωνήσουν άµεσα µε το simple peer που βρίσκεται µέσα από το firewall. Λόγω της περιορισµένης δικτυακής προσέγγισής τους, τα simple peers έχουν την ελάχιστη ποσότητα υπευθυνότητας στο δίκτυο οµότιµης επικοινωνίας. Αντίθετα προς τους άλλους τύπους peer, δεν είναι υπεύθυνα για το χειρισµό της επικοινωνίας εκ µέρους άλλων peer ή την εξυπηρέτηση third-party πληροφοριών προς άλλα peers. β. Rendezvous Super Peers Κυριολεκτικά, rendezvous σηµαίνει σύναξη ή µέρος συνάντησης. Σε ένα δίκτυο οµότιµης επικοινωνίας ένα rendezvous peer παρέχει στα peers µια τοποθεσία στο δίκτυο που µπορούν να χρησιµοποιούν για να ανακαλύψουν άλλα peers και άλλους πόρους. 26

Τα rendezvous είναι peers τα οποία αποθηκεύουν δείκτες διαφηµίσεων (advertisement indices), οι οποίοι οδηγούν στα αντίστοιχα peers, όπου υπάρχει αποθηκευµένη η συγκεκριµένη διαφήµιση και επεξεργάζονται αιτήσεις από άλλα peers. Το rendezvous µπορεί επίσης να αποστέλλει αιτήσεις σε άλλα peers, τα οποία πρέπει να είναι και αυτά rendezvous. Ένας βασικός ρόλος του rendezvous είναι να διευκολύνει την αναζήτηση διαφηµίσεων πέρα από το τοπικό δίκτυο ενός peer. Συνήθως έχει περισσότερους πόρους από άλλα peers και µπορεί να αποθηκεύει µεγάλες ποσότητες πληροφοριών σχετικά µε τα peers που βρίσκονται γύρω του. Σε ένα δίκτυο οµότιµης επικοινωνίας, πληροφορίες διασκορπίζονται ανάµεσα στα peers και δεν αποθηκεύονται εξ ολοκλήρου σε ένα µηχάνηµα, όπως σε ένα διακοµιστή. Αντί αυτού, υπάρχουν rendezvous τα οποία διατηρούν αποθηκευµένους όλους τους δείκτες διαφηµίσεων που έχουν ανακαλύψει µέσω των simple peers, τα οποία είτε είναι απευθείας συνδεδεµένα µαζί τους, είτε µέσω των άλλων rendezvous του δικτύου. Τα rendezvous peers µπορούν επίσης να λειτουργήσουν ως αναµεταδότες µηνυµάτων αναζητήσεις. Μπορούν να προωθήσουν αιτήσεις αναζήτησης σε άλλα rendezvous peers, τα οποία λαµβάνουν τις πληροφορίες τους από peers µε τα οποία έχουν ανταλλάξει διαφηµίσεις. Κάθε rendezvous προωθεί την αίτηση σε άλλα rendezvous peers µέχρις ότου να βρει τις απαιτούµενες πληροφορίες. Ένα rendezvous peer συνήθως βρίσκεται έξω από firewall ιδιωτικών εσωτερικών δικτύων. Θα µπορούσε να βρίσκεται πίσω από κάποιο firewall, αλλά θα χρειαζόταν να το διαπερνά χρησιµοποιώντας είτε ένα πρωτόκολλο επιτρεπτό από αυτό, είτε από ένα relay peer έξω από το firewall. Μόνο ένα rendezvous µπορεί να αναζητήσει πληροφορίες έξω από ένα τοπικό δίκτυο. Ένα peer έχει τη δυνατότητα να είναι rendezvous αλλά δεν είναι απαραίτητο. Ένα πλεονέκτηµα του να είναι ένα peer rendezvous είναι ότι διατηρεί ένα αντίγραφο των αποτελεσµάτων από αιτήσεις άλλων 27

rendezvous. Από την άλλη πλευρά, το µειονέκτηµα είναι ότι πρέπει να χρησιµοποιεί περισσότερη µνήµη και µεγαλύτερο εύρος ζώνης. Είναι σηµαντικό να αναφέρουµε ότι τα δίκτυα οµότιµης επικοινωνίας γίνονται περισσότερο αποτελεσµατικά όσο οι υπηρεσίες διαµοιράζονται ανάµεσα σε ένα µεγάλο αριθµό peers. Ωστόσο, µπορεί να υπάρχει ένα σηµείο όπου επιπρόσθετα rendezvous δεν θα συνεισφέρουν στην καλύτερη επίδοση του συστήµατος. Τα rendezvous χρησιµοποιούνται όταν ένα peer ψάχνει για µια διαφήµιση ή όταν άλλες υπηρεσίες χρησιµοποιούν το µηχανισµό των rendezvous για να δροµολογήσουν µηνύµατα. Ένα rendezvous συνδεδεµένο στο διαδίκτυο θα είναι εκτεθειµένο πιθανότατα σε χιλιάδες peers. Μέσα στα όρια ενός δικτύου αποµονωµένου µέσω ενός firewall, έχοντας όλα τα peer δηλωµένα ως rendezvous πιθανότατα δεν θα έχει µεγάλο αντίκτυπο λόγω των λειτουργιών των rendezvous. Η βασική διαφορά που υπάρχει στην νέα έκδοση της JXTA, είναι το γεγονός ότι τα rendezvous δεν αποθηκεύουν τις διαφηµίσεις, παρά µόνο τους δείκτες που οδηγούν στις συγκεκριµένες διαφηµίσεις, όπως προαναφέρθηκε. Το Resource Distributed Index (SRDI) είναι µια καινούρια υπηρεσία που χρησιµοποιείται από τα απλά peers για να καταχωρήσουν τις διαφηµίσεις τους στα rendezvous. Μια άλλη, επίσης σηµαντική βελτίωση στη νέα έκδοση της JXTA, είναι ότι οι αιτήσεις αναζήτησης διαφήµισης δεν διαδίδονται στα απλά peers, παρά µόνο στα rendezvous. Η αίτηση φτάνει σε ένα απλό peer µόνο όταν κατέχει τη ζητούµενη διαφήµιση. Αυτή η βελτίωση έχει ως αποτέλεσµα τη σηµαντική µείωση της κίνησης στο δίκτυο. Αυτός ο τρόπος εύρεσης διαφήµισης απεικονίζεται στην Εικόνα 2.1. 28

Εικόνα 2.1. Rendezvous Super-Peers γ. Relay Super-Peers Ένα relay peer παρέχει ένα µηχανισµό στα peers για να επικοινωνούν µε άλλα peers που είναι διαχωρισµένα από το δίκτυο µέσω ενός firewall ή µιας Network Address Translation (NAT) συσκευής. Ένα relay peer παρέχει ένα µέσο το οποίο µπορούν να χρησιµοποιήσουν τα peers έξω από ένα firewall για να επικοινωνήσουν µε peers που βρίσκονται πίσω από το firewall, και αντίστροφα. Για να σταλεί ένα µήνυµα σε ένα peer µέσω ενός relay, το peer που στέλνει το µήνυµα πρέπει πρώτα να καθορίσει ποιο relay peer που θα χρησιµοποιήσει για να επικοινωνήσει µε το άλλο peer. Αυτές οι πληροφορίες δροµολόγησης παρέχουν στο δίκτυο ένα µηχανισµό για να αντικαταστήσει το παραδοσιακό DNS σύστηµα, καθιστώντας δυνατή την εύρεση στο δίκτυο µιας περιοδικά συνδεδεµένης συσκευής µε δυναµική ΙΡ διεύθυνση. Με έναν παρόµοιο τρόπο που το DNS σύστηµα µεταφράζει ένα απλό όνοµα σε µια ΙΡ διεύθυνση, οι πληροφορίες δροµολόγησης παρέχουν µια χαρτογράφηση ανάµεσα σε µια µοναδική ταυτότητα που καθορίζει ένα αποµακρυσµένο peer στο δίκτυο και µια αναπαράσταση 29

που µπορεί να χρησιµοποιηθεί για να επιτευχθεί η επικοινωνία µε το αποµακρυσµένο peer µέσω ενός relay peer. Τα απλά peers «περιπλανώνται» από relay σε relay για τη βελτιστοποίηση της «ορατότητάς» τους ή της ποιότητας σύνδεσης µε το δίκτυο. Είναι σηµαντικό να επισηµάνουµε ότι η σχέση ανάµεσα στο relay και στο απλό peer είναι προσωρινή. Τα relays διατηρούν στοιχεία για τα απλά peer µόνο κατά τη διάρκεια της σύνδεσής τους, η οποία είναι προκαθορισµένη από την εφαρµογή (lease period). Τα απλά peers µπορούν να συνδεθούν ξανά οποιαδήποτε στιγµή µε το ίδιο ή και µε διαφορετικό relay. Στην Εικόνα 2.2 φαίνεται η παραπάνω αρχιτεκτονική. Εικόνα 2.2. Relay Super-Peers 2.4.3. Peer Group Πριν από τη JXTA, η ιδιόκτητη και εξειδικευµένη φύση των λύσεων οµότιµης επικοινωνίας και τα αντίστοιχα πρωτόκολλα διαιρούσαν τη χρήση του χώρου του δικτύου ανάλογα µε την εφαρµογή. Εάν κάποιος ήθελε να έχει πρόσβαση σε κοινόχρηστα αρχεία, θα έπρεπε πιθανότατα να χρησιµοποιήσει τα πρωτόκολλα της Gnutella [18] και να επικοινωνήσει 30

µόνο µε τα peers που χρησιµοποιούν τα πρωτόκολλά της. Παρόµοια, αν ήθελε να αποστείλει άµεσα µηνύµατα, θα χρησιµοποιούσε το ICQ [24] και θα µπορούσε να επικοινωνήσει µόνο µε peers που επίσης χρησιµοποιούν ICQ. Η ασυµβατότητα των πρωτοκόλλων διαιρούσε αποτελεσµατικά το χώρο του δικτύου βάσει των εφαρµογών που χρησιµοποιούσαν τα peer. Αν σκεφτείτε ένα σύστηµα οµότιµης επικοινωνίας στο οποίο όλοι οι πελάτες επικοινωνούν µε το ίδιο σύνολο πρωτοκόλλων, όπως στη JXTA, τότε η ύπαρξη του peer group είναι απαραίτητη για να υποδιαιρέσει το χώρο του δικτύου. Όπως πιθανόν θα περιµένατε, ένα peer group ορίζεται ως εξής: Ένα σύνολο από peers σχηµατίζεται για να εξυπηρετεί ένα κοινό ενδιαφέρον ή σκοπό αποκλειστικά από τα peer του συνόλου. Τα peer groups µπορούν να παράγουν υπηρεσίες στα µέλη τους οι οποίες δεν είναι προσβάσιµες από άλλα peer στο δίκτυο. Ένας άλλος τρόπος να δούµε τα γκρουπ είναι σαν ένα εικονικό ιδιωτικό δίκτυο (Virtual Private Network). Ένα VPN επιτρέπει πολλούς υπολογιστές να επικοινωνούν µεταξύ τους χωρίς να επιτρέπει στο υπόλοιπο του διαδικτύου να συµµετέχει. Τα VPN περιλαµβάνουν απόκρυψη έτσι ώστε η συζήτηση στο γκρουπ να µην µπορεί να γίνει κατανοητή από οποιονδήποτε θα ήθελε να κρυφακούσει. Τα peer group επίσης περιορίζουν την πρόσβαση στα peers και µπορούν να αποκρυπτογραφήσουν τα µηνύµατα. Ένα peer group είναι ένας τρόπος να οργανώσουµε τα peers σε γκρουπ και να διαφηµίσουµε συγκεκριµένες υπηρεσίες που είναι διαθέσιµες στα µέλη του. Είναι δυνατή η δηµιουργία ενός γκρουπ, η συµµετοχή σε αυτό και φυσικά η εγκατάλειψή του. Επίσης, υπάρχει η δυνατότητα ανανέωσης της συµµετοχής. Ένα γκρουπ µπορεί να χρειάζεται να περιορίσει τη συµµετοχή για διάφορους λόγους, όπως για ασφαλή επικοινωνία µεταξύ των µελών, µυστικότητα, ή µπορεί να υπάρχουν συγκεκριµένες πληροφορίες που ο 31

χρήστης πρέπει να παρέχει πριν εισέλθει στο γκρουπ. Υπάρχει ένα πρωτόκολλο πιστοποίησης ειδικά σχεδιασµένο για να συλλέγει πληροφορίες και να επιτρέπει στο γκρουπ να καθορίζει αν οι πληροφορίες συµφωνούν µε τις απαιτήσεις για συµµετοχή. Εικόνα 2.3. Peer Group Η συµµετοχή σε ένα peer group µπορεί να έχει διάφορες µορφές. Τα δυο βασικά µοντέλα είναι η τοπική και αποµακρυσµένη υπηρεσία συµµετοχής. Η τοπική υπηρεσία συµµετοχής τρέχει αποκλειστικά στο peer που υποβάλει αίτηση για συµµετοχή. Όλες οι πηγές και η ικανότητα να ελεγχθεί η αξιοπιστία ενός χρήστη ανήκουν επίσης στο ίδιο peer. Οπότε, η τοπική υπηρεσία συµµετοχής επιτρέπει σε κάποιον να ενταχθεί στο γκρουπ χωρίς να συνδέεται σε οποιοδήποτε άλλο peer. Η αποµακρυσµένη υπηρεσία συµµετοχής ενός peer απαιτεί πρόσβαση ενός ή περισσοτέρων peer σε ένα γκρουπ. Η ιδέα είναι ότι τα peers που ήδη ανήκουν στο γκρουπ έχουν πρόσβαση στις πηγές για να ελέγξουν την αξιοπιστία ενός καινούριου µέλους. Όµοια, τα peers στο γκρουπ µπορούν να ρωτήσουν τους χρήστες, βάσει της αίτηση του νέου µέλους, για να δουν αν τα µέλη επιθυµούν να δεχθούν το νέο µέλος. 32

2.4.4. Endpoint Το endpoint είναι η βασική µέθοδος χρησιµοποίησης διευθύνσεων που χρησιµοποιούν οι εφαρµογές της JXTA για να επικοινωνούν µεταξύ τους. Το endpoint είναι η διεύθυνση ενός peer που υλοποιεί ένα συγκεκριµένο πρωτόκολλο επικοινωνίας. Ένα peer µπορεί να έχει πολλά endpoints και έτσι να είναι προσβάσιµο µέσω διάφορων πρωτοκόλλων. Ένα απλό παράδειγµα του endpoint είναι µια ΙΡ διεύθυνση και ένα port. Χρησιµοποιώντας αυτές τις παραµέτρους ένα stream θα µπορούσε να ανοιχτεί για να επικοινωνήσει µε ένα άλλο peer. Ωστόσο, η JXTA τοποθετεί ένα στρώµα πάνω από τα streams που καλείται pipes. Αντί να συνδέεται το stream σε µια διεύθυνση, συνδέεται ένα pipe στο endpoint. Η οµορφιά των endpoints και των pipes είναι ότι δεν χρειάζεται κάποιος να ασχοληθεί µε το ποια είναι η πραγµατική διεύθυνση ή ποιο είναι το καλύτερο πρωτόκολλο για ένα συγκεκριµένο peer. Επιπρόσθετα, υπάρχουν και άλλες υπηρεσίες που χρησιµοποιούνται για την δροµολόγηση και ακόµη για την προώθηση των µηνυµάτων. Η χρησιµοποίηση των pipes και των endpoints παρέχει µεγάλη ισχύ και µειώνει την πολυπλοκότητα της δηµιουργίας µιας εφαρµογής οµότιµης επικοινωνίας. Τα pipes συνδέονται µέσω ενός πρωτοκόλλου επικοινωνίας. Το endpoint είναι αυτό που περιγράφει το πρωτόκολλο και τις συγκεκριµένες πληροφορίες που χρησιµοποιούνται για τη σύνδεση αυτή. Έτσι, το endpoint µπορεί να περιγράφει ένα HTTP, TCP, BEEP ή κάποιο άλλο πρωτόκολλο επικοινωνίας που υποστηρίζεται. Ένα peer µπορεί να υποστηρίζει ένα ή περισσότερα endpoints. Υποστηρίζοντας περισσότερα από ένα πρωτόκολλα, το peer µπορεί να χρησιµοποιεί την περισσότερο αποτελεσµατική µέθοδο. Με άλλα λόγια, αν δυο peers είναι πίσω από κάποιο firewall, µπορούν να επικοινωνούν µέσω των TCP endpoints. Όταν αυτά τα peers επικοινωνούν µε peers διά 33

µέσου του firewall, το οποίο φιλτράρει οτιδήποτε εκτός από HTTP, µπορούν να χρησιµοποιήσουν το HTTP πρωτόκολλο. 2.4.5. Pipe Ένα pipe είναι µια εικονική σύνδεση ανάµεσα σε peers. Φυσιολογικά, σκεφτόµαστε την οµότιµη επικοινωνία ως µια απλή σύνδεση, αλλά αυτό δεν είναι πάντοτε πιθανό. Το πρόβληµα είναι ότι πολλά peers δεν µπορούν να συνδεθούν απευθείας λόγω των firewalls και άλλων εµποδίων. Ο σκοπός των pipes είναι να λειτουργούν σαν ένα στρώµα πάνω από διάφορα πρωτόκολλα επικοινωνίας και να παρέχουν αναµετάδοση των επικοινωνιών µέσω των relay peers. Τα pipes είναι ένα βασικό και σηµαντικό χαρακτηριστικό της JXTA. Αποτελούν ένα πολύ χρήσιµο µέσο, το οποίο επιτρέπει στα peers να επικοινωνούν στις περισσότερες περιπτώσεις δικτύου, έστω και αν υπάρχουν firewalls ή άλλου είδους εµπόδια. Ακόµη και αν δεν είναι γνωστά τα στοιχεία κάποιου peer, όπως για παράδειγµα το πού βρίσκεται, υπάρχει τρόπος επικοινωνίας µε αυτό µέσω ενός pipe. Τα pipes µπορούν επίσης να αυτο-θεραπεύονται και να αναδροµολογούνται γύρω από ένα πηγαίο peer. Η αυτο-θεραπεία είναι σηµαντική διότι ένα peer, αντίθετα προς ένα διακοµιστή, δεν είναι διαθέσιµο 24 ώρες τη µέρα και µπορεί να βγει από το δίκτυο οποιαδήποτε ώρα. H JXTA χρησιµοποιεί διάφορους τύπους pipes. Παρακάτω αναφέρονται µερικοί από αυτούς. Uni-directional asynchronous Αυτός ο τύπος που χρησιµοποιείται για µονόδροµη επικοινωνία. Το pipe είναι ασύγχρονο και τα µηνύµατα µπορεί να φτάσουν µε µπερδεµένη σειρά. Είναι ο πιο βασικός τύπος pipe και πρέπει να εφαρµόζεται στις περισσότερες JXTA πλατφόρµες. 34

Synchronous request/response Για όλα τα µηνύµατα που στέλνονται λαµβάνεται ένα µήνυµα επιβεβαίωσης. Τα µηνύµατα λαµβάνονται µε τη σειρά που στάλθηκαν. Bulk transfer Χρησιµοποιείται για να µεταφέρει µεγάλες ποσότητες δεδοµένων. Streaming Χρησιµοποιείται για αποτελεσµατική µεταφορά ροής δεδοµένων όπως ακουστικά σήµατα κ.α. Bidirectional Ένας συνδυασµός από δύο ασύγχρονα pipes. Uni-directional synchronous Όλα τα µηνύµατα που στέλνονται λαµβάνουν ένα µήνυµα επιβεβαίωσης. Τα µηνύµατα φθάνουν µε τη σειρά που στάλθηκαν. Unicast reliable secure pipe Όλα τα µηνύµατα που στέλνονται λαµβάνουν ένα µήνυµα επιβεβαίωσης και τα δεδοµένα είναι κρυπτογραφηµένα. Υπάρχουν δυο τύποι επικοινωνίας για pipes: Point-to-point Αυτού του τύπου τα pipes συνδέουν ακριβώς δυο pipe endpoints, ένα δέκτη δεδοµένων (input pipe), ο οποίος λαµβάνει µηνύµατα που στάλθηκαν από µια πηγή δεδοµένων (output pipe), ενώνοντας έτσι δυο διαφορετικά peers. Πολλαπλά άλλα relay peers µπορούν να χρησιµοποιηθούν για να δηµιουργηθεί η σύνδεση. εν υποστηρίζεται απάντηση ή µήνυµα επιβεβαίωσης. Είναι απαραίτητες επιπρόσθετες πληροφορίες στα δεδοµένα που φέρει το µήνυµα, όπως µια µοναδική ταυτότητα, για να προσδιοριστεί η αλληλουχία των µηνυµάτων που στάλθηκαν µέσω του pipe. Οι πληροφορίες που µεταφέρει το µήνυµα µπορεί επίσης να περιλαµβάνουν µια διαφήµιση ενός pipe η οποία µπορεί να χρησιµοποιηθεί για να ανοιχτεί ένα pipe για την αποστολή ενός απαντητικού µηνύµατος προς τον αποστολέα. 35

Propagate Τα propagate pipes καλούνται επίσης wire pipes λόγω του project που αρχικά τα δηµιούργησε. Ένα propagate pipe συνδέει ένα output pipe σε πολλαπλά input pipes. Μπορούν επίσης να εµπλέκουν πολλά peers στη σύνδεση, συµπεριλαµβάνοντας αυτά τα οποία είναι endpoints στην επικοινωνία. Τα µηνύµατα κατευθύνονται από το output pipe, το οποίο είναι και η πηγή της διάδοσης, προς τα input pipes. Ένα µήνυµα το οποίο στέλνεται µέσω ενός propagate pipe στέλνεται σε όλα τα input pipes που ακούνε σ αυτό το propagate pipe. Αυτή η διαδικασία πιθανότατα δηµιουργεί πολλαπλά αντίγραφα του µηνύµατος. Σε ένα TCP/IP δίκτυο, η διανοµή IP διευθύνσεων χρησιµοποιείται ως µια υλοποίηση για τα propagate pipes όταν το πεδίο δράσης της διάδοσης χαρτογραφείται σε ένα υποκείµενο φυσικό υποδίκτυο βασισµένο σε επικοινωνία ένας προς ένα. Τα propagate pipes µπορούν επίσης να υλοποιηθούν χρησιµοποιώντας την point-to-point επικοινωνία για µεταφορές οι οποίες δεν υποστηρίζουν διανοµή διευθύνσεων. Στην Eικόνα 2.4 απεικονίζονται σχηµατικά οι δυο τύποι επικοινωνίας των pipes. Εικόνα 2.4. Point-to-point και propagate pipe. 2.4.6. Endpoints και Pipes Η JXTA διαφέρει κατά πολύ από ένα παραδοσιακό δίκτυο. Τα περισσότερα πρωτόκολλα των δικτύων είτε δεν έχουν διεύθυνση (HTTP 36

πελάτες) ή έχουν µια σταθερή διεύθυνση όπου µια URL ή ΙΡ διεύθυνση χρησιµοποιείται για να χαρακτηρίσει και να ξεχωρίσει τους πελάτες. Η JXTA αποσύρει την ιδέα της διεύθυνσης του πελάτη και την καλεί endpoint. Ένα peer µπορεί να έχει περισσότερα από ένα endpoint. Τα peers µπορούν να επικοινωνούν µέσω ενός ή περισσότερων πρωτοκόλλων, όπως TCP και HTTP, µε αποτέλεσµα να υπάρχουν συνήθως πολλαπλά endpoint. Αυτό εκ πρώτης µπορεί να ακούγεται παράξενο, γιατί συνήθως, στις περισσότερες εφαρµογές χρησιµοποιούµε µόνο ένα πρωτόκολλο. Ο λόγος που η JXTA χρησιµοποιεί πολλαπλά πρωτόκολλα µεταφοράς είναι για να επιτρέψει σε µια υπηρεσία να επικοινωνεί µε peers µε την καλύτερη δυνατή µέθοδο. Για παράδειγµα, εάν ένα peer βρίσκεται πίσω από ένα εταιρικό firewall πρέπει να χρησιµοποιήσει HTTP για να επικοινωνήσει µε peers έξω από το firewall και TCP για να επικοινωνήσει µε peers στο τοπικό δίκτυο µέσα από το firewall. Με την ευελιξία που προσφέρει η δυνατότητα υποστήριξης πολλών πρωτοκόλλων, µπορεί να χρησιµοποιηθεί ένα συγκεκριµένο πρωτόκολλο για ένα συγκεκριµένο peer και έτσι να επιτύχει τη καλύτερη ταχύτητα και απόκριση. Πίσω από το firewall, η ταχύτητα και η απόκριση είναι πολύ καλή. ια µέσου του firewall η απόκριση είναι φτωχή. Συνολικά, είναι καλύτερο από το αν θα υπήρχε µόνο ΗΤΤΡ, το οποίο θα είχε ικανοποιητική αποδοτικότητα πίσω από το firewall. Για να επικοινωνήσει ένα peer, χρησιµοποιώντας ένα pipe, χρειάζεται πρώτα να βρει τα endpoints, ένα για την πηγή του µηνύµατος και ένα για τον προορισµό του και να τα συνδέσει προσαρτώντας ένα pipe σε αυτά. Όταν δηµιουργείται µια σύνδεση µε αυτό τον τρόπο, το endpoint που λειτουργεί ως πηγή δεδοµένων καλείται output pipe και το endpoint που λειτουργεί ως δέκτης δεδοµένων καλείται input pipe. Το pipe καθεαυτό δεν είναι υπεύθυνο για τη µεταφορά των δεδοµένων ανάµεσα στα endpoints. Είναι βασικά µια αφηρηµένη έννοια που χρησιµοποιείται για να αναπαραστήσει το γεγονός ότι δυο endpoints είναι 37

συνδεδεµένα. Τα endpoints παρέχουν την πρόσβαση στην υποβόσκων δικτυακή διασύνδεση που χρησιµοποιείται για τη µετάδοση και τη λήψη δεδοµένων. Για την αποστολή δεδοµένων από το ένα peer στο άλλο, τα peers δηµιουργούν πακέτα δεδοµένων για να αποσταλούν µέσα ένα µήνυµα, το οποίο στέλνεται χρησιµοποιώντας ένα output pipe. Από την άλλη πλευρά, ένα peer λαµβάνει ένα µήνυµα από ένα input pipe και εξάγει τα µεταδιδόµενα δεδοµένα. Στην Εικόνα 2.5 απεικονίζεται ένα παράδειγµα σύνδεσης διαφόρων peer µέσω pipes. Για παράδειγµα, το Peer B έχει δυο HTTP endpoint συνδέσεις ενώ το Peer D έχει δυο ΗΤΤΡ και µια TCP/IP endpoint συνδέσεις. Εικόνα 2.5. Σύνδεση πολλών peers µέσω pipes Πρέπει να σηµειωθεί ότι µερικά peers βρίσκονται πίσω από firewall. Προκειµένου να συνδεθεί ένα από αυτά τα peer µε κάποιο το οποίο βρίσκεται έξω από το firewall χρησιµοποιούνται ΗΤΤΡ proxy συνδέσεις. Τα Peer C και Peer A µπορούν να λειτουργούν ως router peers για αυτά που βρίσκονται πίσω από τα firewalls. Μια σύνδεση µέσω pipes µπορεί να εµπλέκει πολλαπλές peer endpoint συνδέσεις µεταφοράς (multi-hops). Η σύνδεση µεταξύ των Peer B και Peer E εµπλέκει µια ΗΤΤΡ σύνδεση ανάµεσα στα Peer B και Peer C, µια ΗΤΤΡ σύνδεση ανάµεσα στα Peer C και Peer D και µια TCP/IP 38

σύνδεση ανάµεσα στα Peer D και Peer E. Απ την άλλη πλευρά, εάν δηµιουργηθεί µια pipe σύνδεση ανάµεσα στα Peer A και Peer C, µια peer endpoint σύνδεση υλοποιεί από µόνη της το pipe, καθώς τα Peer A και Peer C έχουν µια απευθείας TCP/IP σύνδεση. 2.4.7. Μηνύµατα Στη JXTA υπάρχουν διαφορετικοί τύποι µηνυµάτων. Ο πρώτος τύπος, ο πιο συνηθισµένος και αναµενόµενος, είναι µε XML. Τα µηνύµατα είναι πακέτα που περιέχουν ένα φορτίο δεδοµένων διαµορφωµένο έτσι ώστε να συµφωνεί µε τους κανόνες της XML. Ο δεύτερος τύπος µηνύµατος είναι ένα πολύ οικονοµικό δυαδικό µήνυµα. Παρά την επιθυµία να χρησιµοποιηθεί η XML για όλα τα µηνύµατα της JXTA, η πραγµατικότητα είναι ότι λόγω της ύπαρξης πολλών µηνυµάτων που στέλνονται και λαµβάνονται, το µέγεθος των µηνυµάτων σε XML είναι πολύ αναποτελεσµατικό. Επίσης, λόγω του ότι τα µηνύµατα συνήθως στέλνονται από εφαρµογή σε εφαρµογή, είναι απλό να τυποποιηθούν τα περιεχόµενα του µηνύµατος. Τα υπόλοιπα πρωτόκολλα παραµένουν XML. Η χρήση δυαδικών µηνυµάτων σε ένα XML πρωτόκολλο µπορεί να µοιάζει µε αντικατασκοπία. Η αλήθεια είναι ότι υπάρχουν και άλλα πλεονεκτήµατα πέρα από τη συµπύκνωση. Το πρώτο είναι ότι τα δεδοµένα µπορούν να συµπιεστούν χρησιµοποιώντας συγκεκριµένες τεχνικές. Η συµπίεση των δεδοµένων, όπως ένα απλό κείµενο, µπορεί να δηµιουργήσει τεράστια αποταµίευση χρόνου εκποµπής. Ένα άλλο πλεονέκτηµα των δυαδικών µηνυµάτων είναι ότι πολλά µηνύµατα είναι ήδη δυαδικά. Ένας άλλος λόγος της χρήσης δυαδικών µηνυµάτων είναι η κρυπτογράφηση. Επειδή τα δεδοµένα χρειάζεται να µετατραπούν σε δυαδικά για κρυπτογράφηση, η κατευθείαν µετατροπή από και προς δυαδικά αντί για XML είναι πιο λογική. 39

2.4.8. ιαφηµίσεις Μια διαφήµιση είναι ένα XML έγγραφο, που περιγράφει ένα JXTA µήνυµα, ένα peer, ένα peer group ή µια υπηρεσία. Οι διαφηµίσεις ακολουθούν τα πρότυπα για κωδικοποίηση, ταµπέλες και περιεχόµενο. Οι διαφηµίσεις χρησιµοποιούνται για την ανταλλαγή πληροφοριών σχετικά µε το τι είναι διαθέσιµο στο δίκτυο της JXTA. Τα peers χρησιµοποιούν τα rendezvous peers για να ανακαλύψουν διαφηµίσεις από το συνολικό δίκτυο. Ένα peer µπορεί για παράδειγµα να αναζητήσει τη διαφήµιση του peer group µέσω του ονόµατός του ή κάποιας άλλης ιδιότητάς του. Έχοντας τη διαφήµιση του peer group τα peers µπορούν να συµµετέχουν στο group χρησιµοποιώντας τις πληροφορίες που περιέχονται στο XML αρχείο. Όταν είναι µέλη του γκρουπ, µπορούν να χρησιµοποιήσουν τις υπηρεσίες του γκρουπ ή να εντοπίζουν peers που ανήκουν στο γκρουπ. Κάποιος που αναπτύσσει µια εφαρµογή βασισµένη στα πρωτόκολλα της JXTA, έχει τη δυνατότητα να δηµιουργήσει καινούριους τύπους διαφήµισης, βασισµένους στο ίδιο πρότυπο, προσθέτοντας καινούρια στοιχεία. Τα peers µπορούν να αποθηκεύσουν έναν κατάλογο µε αναφορές σε διάφορες διαφηµίσεις, να δηµοσιεύσουν καθώς και να ανταλλάξουν διαφηµίσεις προκειµένου να ανακαλύψουν και να βρουν διαθέσιµους πόρους του δικτύου. Όλες οι διαφηµίσεις δηµοσιεύονται µε ένα συγκεκριµένο χρόνο ζωής (life time), ο οποίος καθορίζει τη χρονική διάρκεια που θα παραµείνει η διαφήµιση στο δίκτυο. Μια διαφήµιση µπορεί να δηµοσιευθεί ξανά οποιαδήποτε στιγµή, προκειµένου να επεκταθεί ο χρόνος ζωής της πριν λήξει. 40

2.5. Πρωτόκολλα της JXTA Κάθε ανταλλαγή δεδοµένων βασίζεται σε ένα πρωτόκολλο, το οποίο υπαγορεύει τα δεδοµένα που στέλνονται και τη σειρά τους. Ακόµη και η πιο απλή ανθρώπινη χειρονοµία, η χειραψία, βασίζεται σε ένα πρωτόκολλο το οποίο καθορίζει την κατάλληλη στιγµή, ποιο χέρι να χρησιµοποιήσουµε και πόσο θα διαρκέσει. Ένα πρωτόκολλο είναι µε απλά λόγια το εξής: Ένας τρόπος σχεδιασµού της ανταλλαγής πληροφοριών ανάµεσα σε δυο συµµέτοχους που χρησιµοποιούν κανόνες που έχουν συµφωνηθεί εκ των προτέρων από όλους τους συµµετέχοντες. Στη JXTA, χρειάζονται πρωτόκολλα για να καθορίσουν κάθε είδους αλληλεπίδρασης, που ένα peer µπορεί να εκτελέσει σαν µέρος του δικτύου: Εύρεση peers στο δίκτυο Εύρεση των υπηρεσιών που ένα peer παρέχει Λήψη πληροφοριών κατάστασης από ένα peer Έναρξη λειτουργίας µιας υπηρεσίας σε ένα peer ηµιουργία ενός peer group, η συµµετοχή και η αποχώρηση από αυτό. ηµιουργία σύνδεσης δεδοµένων σε peers ροµολόγηση µηνυµάτων για άλλα peers Η οργάνωση των πληροφοριών σε διαφηµίσεις απλοποιεί τα πρωτόκολλα που απαιτούνται για τη λειτουργία του δικτύου. Οι διαφηµίσεις υπαγορεύουν τη δοµή και την αναπαράσταση των δεδοµένων, απλοποιώντας των ορισµό των πρωτοκόλλων. Αντί να διακινούνται µπροστά και πίσω ακατέργαστα δεδοµένα, τα πρωτόκολλα απλά οργανώνουν την ανταλλαγή των διαφηµίσεων που περιέχουν τις απαιτούµενες πληροφορίες για να εκτελεστεί κάποια λειτουργία. Παρακάτω αναφέρονται τα βασικά πρωτόκολλα της JXTA. 41

2.5.1. Πρωτόκολλο εύρεσης peer (Peer Discovery Protocol) Το πρωτόκολλο εύρεσης peer επιτρέπει σε ένα peer να ανακαλύψει διαφηµίσεις άλλων peers. Το πρωτόκολλο εύρεσης είναι ο µηχανισµός αναζήτησης που χρησιµοποιείται για τον εντοπισµό πληροφοριών. Το πρωτόκολλο µπορεί να ανακαλύψει peers, peer groups, και όλες τις υπόλοιπες δηµοσιευµένες διαφηµίσεις. Οι αιτήσεις αναζήτησης γίνονται καθορίζοντας ένα τύπο διαφήµισης (peer, group ή διαφήµιση), ένα όνοµα XML ταµπέλας µέσα σε µια διαφήµιση και µια λέξη για να συγκριθεί µε τα δεδοµένα που αναπαριστούνται µέσα στις XML ταµπέλες. 2.5.2. Πρωτόκολλο ανάλυσης peer (Peer Resolver Protocol) Επιτρέπει σε ένα peer να στείλει µια αίτηση αναζήτησης σε κάποιο άλλο peer. Το πρωτόκολλο ανάλυσης είναι ένα βασικό πρωτόκολλο επικοινωνίας που ακολουθεί τη µορφή ερώτηση/απάντηση. Για τη χρήση του πρωτοκόλλου, παρέχεται ένα peer για να κάνει την αναζήτηση και ένα µήνυµα αναζήτησης που περιέχει XML, το οποίο θα γίνει κατανοητό από το peer στο οποίο αναφέρεται. Το αποτέλεσµα είναι ένα µήνυµα απάντησης. Το πρωτόκολλο ανάλυσης χρησιµοποιείται για να στηρίξει τις επικοινωνίες στα πρωτόκολλα της JXTA όπως τη δροµολόγηση και την ανεύρεση πρωτοκόλλων. Για παράδειγµα, το πρωτόκολλο χρησιµοποιείται από το πρωτόκολλο εύρεσης για να στείλει αιτήσεις που αναπαριστούν αναζητήσεις για διαφηµίσεις. Το πρωτόκολλο ανάλυσης επίσης επιτρέπει τον πολλαπλασιασµό των αιτήσεων. Για παράδειγµα, αν ένα peer λάβει µια αίτηση και δεν ξέρει την απάντηση, το πρωτόκολλο ανάλυσης στέλνει µια αίτηση σε άλλα peers. Αυτό είναι ένα ενδιαφέρον χαρακτηριστικό, ειδικά γιατί το αρχικό 42

peer δεν χρειάζεται να γνωρίζει ποιο peer έχει πραγµατικά το αποτέλεσµα της αίτησης. 2.5.3. Πρωτόκολλο πληροφοριών peer (Peer Information Protocol) Επιτρέπει σε ένα peer να γνωρίζει την κατάσταση κάποιο άλλου peer. Το πρωτόκολλο χρησιµοποιείται µερικώς όπως η εντολή ping και µερικώς για την απόκτηση βασικών πληροφοριών σχετικά µε την κατάσταση ενός peer. Το σώµα ενός µηνύµατος του πρωτοκόλλου έχει ελεύθερη µορφή, επιτρέποντας την αναζήτηση ειδικών πληροφοριών σχετικά µε τα peers. Επιπρόσθετα, αυτή η δυνατότητα µπορεί να επεκταθεί για να παρέχει δυνατότητα ελέγχου. 2.5.4. Πρωτόκολλο Συµµετοχή Peer (Peer Membership Protocol) Επιτρέπει σε ένα peer να ενταχθεί ή να εγκαταλείψει ένα peer group. Το πρωτόκολλο επίσης µπορεί να ελέγχει την αυθεντικότητα και την εξουσιοδότηση των peers µέσα σε peer groups. Το πρωτόκολλο έχει τρεις διαφηµίσεις κλειδιά για εξουσιοδότηση, και το πιστοποιητικό. Το πιστοποιητικό που δηµιουργήθηκε µέσα σ αυτό το πρωτόκολλο χρησιµοποιείται ως αποδεικτικό στοιχείο ότι ένα peer είναι ένα έγκυρο µέλος του γκρουπ. 2.5.5. Πρωτόκολλο Σύνδεσης των Pipes (Pipe Binding Protocol) Χρησιµοποιείται για να δηµιουργήσει ένα φυσικό pipe endpoint σε ένα φυσικό peer. ηµιουργεί ένα δρόµο επικοινωνίας ανάµεσα σε ένα ή περισσότερα peers. Το πρωτόκολλο αφορά κυρίως τη σύνδεση των peers µέσω των οδών που παρέχει το peer endpoint πρωτόκολλο. 43

2.5.6. Rendezvous Πρωτόκολλο (Rendezvous Protocol) Το συγκεκριµένο πρωτόκολλο είναι υπεύθυνο για την διάδοση των µηνυµάτων µέσα στα γκρουπ. Ορίζει ένα βασικό πρωτόκολλο για την αποστολή και λήψη µηνυµάτων από τα peers µέσα στο γκρουπ και τον έλεγχο της διάδοσης των µηνυµάτων. 2.5.7. Peer Endpoint Πρωτόκολλο (Peer Endpoint Protocol) Αυτό το πρωτόκολλο χρησιµοποιείται για να δηµιουργήσει διόδους για τη δροµολόγηση των µηνυµάτων σε κάποιο peer. Χρησιµοποιεί relays ανάµεσα στα peers για να δηµιουργήσει ένα µονοπάτι, το οποίο αποτελείται από ένα ή περισσότερα από pipe πρωτόκολλα, κατάλληλα για τη δηµιουργία ενός pipe. Το pipe binding protocol χρησιµοποιεί µια λίστα από peers για να δηµιουργήσει µια διαδροµή ανάµεσα στα peers. Ένα από τα πιο σηµαντικά προβλήµατα είναι η αποτυχία των router και των DNS διακοµιστών λόγω των firewalls, των proxy διακοµιστών και των συσκευών NAT. Αυτό το πρωτόκολλο ψάχνει για relays που κάνουν δυνατή την παράκαµψη των εµποδίων. Τέλος, το πρωτόκολλο βοηθάει όταν τα επικοινωνούντα peers δεν υποστηρίζουν τα ίδια πρωτόκολλα. 44

ΚΕΦΑΛΑΙΟ 3 JXTA ΓΙΑ J2ME Η νέα γενιά των ασύρµατων συσκευών, οι οποίες περιλαµβάνουν κινητά τηλέφωνα, βοµβητές, PDA και άλλα, εισέρχονται στην αγορά µε µεγάλη ταχύτητα και οι ειδικοί εκτιµούν ότι πρόκειται να αυξηθεί κατακόρυφα η ζήτηση εφαρµογών φορητών συσκευών. Εκατοµµύρια χρήστες εγγράφονται σε ασύρµατες υπηρεσίες τα τελευταία χρόνια. Καθώς οι δηµιουργοί εφαρµογών µελετούν τις νέες ευκαιρίες που δηµιουργεί αυτή η κατακόρυφη άνοδος, ψάχνουν να βρουν διαθέσιµα εργαλεία και περιβάλλοντα προγραµµατισµού που θα χρειαστούν. Η αρχιτεκτονική των δικτύων οµότιµης επικοινωνίας προσαρµόζεται γρήγορα στο δυναµικό περιβάλλον των ασύρµατων συσκευών. Οι εφαρµογές οµότιµης επικοινωνίας, χαρακτηρισµένες για την ικανότητά τους να δηµιουργούν, να συµµετέχουν και να αλληλεπιδρούν µε peer groups και να δηµοσιεύουν διαφηµίσεις, να προσφέρουν και να αναζητούν πόρους, µπορούν δυναµικά να βρουν ότι χρειάζονται µια προσέγγιση που ταιριάζει καλύτερα στο ασύρµατο «lifestyle». Το project JXTA για J2ME (γνωστό ως JXME) είναι η απάντηση της κοινότητας δηµιουργών της JXTA σ αυτή την ανάγκη. Σχεδιασµένη για να παρέχει ένα πλούσιο περιβάλλον προγραµµατισµού για τη δηµιουργία εφαρµογών, χρησιµοποιώντας το µοντέλο της οµότιµης επικοινωνίας, η JXME τεχνολογία υπόσχεται να επισπεύσει την ανάπτυξη εφαρµογών για αυτούς που επιθυµούν να λάβουν µέρος στην αγορά των ασύρµατων εφαρµογών. 45

3.1. Java 2 Micro Edition Τεχνολογία Java για Φορητές Συσκευές Μια συζήτηση σχετική µε ασύρµατες εφαρµογές πρέπει να ξεκινήσει από την τεχνολογία της Java, η οποία ήδη πραγµατοποιεί την υπόσχεσή της για µια ανεξάρτητη πλατφόρµα εφαρµογών για Web περιβάλλοντα, µικρές και µεγάλες επιχειρήσεις. Έως σήµερα, έχουν αναπτυχθεί χιλιάδες εφαρµογές Java. Η Java παίζει ένα σηµαντικό ρόλο στον «ασύρµατο κόσµο». Ο µεγάλος αριθµός επενδυτών των κινητών συσκευών και οι ασυµβατότητες, οι οποίες αναµφισβήτητα θα προκύψουν, µπορούν να µετριαστούν από τη δύναµη της γλώσσας προγραµµατισµού της Java, κάτι το οποίο είχε διαπιστωθεί πολύ νωρίτερα από τη βιοµηχανία και την κοινότητα των δηµιουργών. Αναγνωρίζοντας την απαίτηση της καλής και προσεκτικής σύνδεσης του περιβάλλοντος της Java και των πλατφόρµων στις οποίες στόχευαν, η Sun Microsystems ξεκίνησε να δουλεύει µε την κοινότητα των δηµιουργών για να αναδιοργανώσει τις τεχνολογίες της Java σε τρεις εκδόσεις: τη Standard (J2SE τεχνολογία), την Enterprise (J2EE τεχνολογία και την Micro (J2ME τεχνολογία). Κάθε έκδοση ενσωµατώνει εργαλεία τα οποία έχουν σχεδιαστεί προσεκτικά. Η J2ME τεχνολογία ειδικά, απευθύνεται στον τεράστιο καταναλωτικό χώρο, ο οποίος καλύπτει ένα πεδίο από µικρότερες πλατφόρµες οι οποίες περιλαµβάνουν έξυπνες κάρτες, βοµβητές και ασύρµατες συσκευές. Όπως όλες οι εκδόσεις της Java, η J2ME πλατφόρµα διατηρεί τις κρίσιµες ιδιότητες της Java, συµπεριλαµβάνοντας τη ευελιξία του κώδικα, την ασφαλή παροχή δικτύου και την συµβατότητα µε τις J2SE και J2EE πλατφόρµες. Η J2ME περιλαµβάνει ειδικά προφίλ, σχεδιασµένα να υποστηρίζουν τους περιορισµένους πόρους µιας µικρής συσκευής. Το 46

Connection Limited Device Configuration (CDLC) και το Mobile Information Device Profiles (MIDP) είναι ουσιώδης βιβλιοθήκες και ειδικεύονται στις εφαρµογές οι οποίες είναι σχεδιασµένες για να λειτουργούν σε περιορισµένα περιβάλλοντα ασύρµατων συσκευών. Παρά το µικρό τους µέγεθος, τα CLDC και ΜΙDP προσφέρουν στους δηµιουργούς τα εργαλεία που χρειάζονται για να δηµιουργήσουν µια ισχυρή ασύρµατη εφαρµογή, η οποία µπορεί να αλληλολειτουργεί µε λύσεις Java, οι οποίες τρέχουν σε σταθµούς εργασίας, διακοµιστές και υπολογιστές µεγάλης ισχύος. To CLDC στοχεύει σε µικρές, περιορισµένων πόρων συσκευές, όπως τα κινητά τηλέφωνα, οι προσωπικοί ψηφιακοί βοηθοί και µικρά τερµατικά λιανικής πληρωµής. Το CLDC είναι κατάλληλο για συσκευές µε 16/32-bit RISC/CISC µικροεπεξεργαστές και ελεγκτές µε µικρή µνήµη, όπως 160ΚΒ. Το MIDP-2.0 είναι ένα σύνολο από Java APIs που στοχεύουν σε κινητές συσκευές πληροφοριών, όπως τα κινητά τηλέφωνα και οι διπλής κατεύθυνσης βοµβητές. Οι προδιαγραφές του MIDP-2.0 απευθύνονται σε ζητήµατα όπως το περιβάλλον εργασίας του χρήστη, η αποθήκευση, η δικτύωση και τα µοντέλα εφαρµογών. Τα πιο σαφή χαρακτηριστικά ωστόσο των ασύρµατων συσκευών είναι το περιορισµένο σύνολο πόρων που έχουν στη διάθεσή τους. Ενώ ο χρόνος και η τεχνολογία, µε µεγάλη βεβαιότητα, θα βοηθήσουν στη λύση αυτού του προβλήµατος, ο περιορισµός των πηγών για τις σηµερινές ασύρµατες συσκευές είναι αποκαρδιωτικός. Οι κυριότεροι από αυτούς τους περιορισµούς είναι οι εξής: Η µόνιµη αποθήκευση είναι περιορισµένη και χρησιµοποιείται από όλες τις εφαρµογές Ο σωρός της µνήµης στις φορητές συσκευές είναι κατά κανόνα µικρός 47

Το εύρος ζώνης του δικτύου είναι πολύ περιορισµένο και η καθυστέρηση υψηλή Η απόδοση του επεξεργαστή είναι µέτρια Η ηλεκτρική ισχύς είναι περιορισµένη σε επίπεδα που διατίθενται από µικρές µπαταρίες στις περισσότερες περιπτώσεις Οι περιορισµένες βιβλιοθήκες του MIDP: o Η J2ME δεν έχει καµία κλάση επεξεργασίας XML. Γι αυτό το λόγο, είναι δύσκολο να διαχειριστούν οι απαιτήσεις επεξεργασίας των XML της JXTA. Third-party µηχανές επεξεργασίας XML όπως η kxml είναι διαθέσιµες και µπορούν να χρησιµοποιηθούν για την επεξεργασία των XML αρχείων στις εφαρµογές της JXTA. Ωστόσο, θα είναι ένα επιπρόσθετο φορτίο στην εφαρµογή, που πιθανόν θα δεσµεύει µεγάλο µέρος της µνήµης της συσκευής και χρόνο επεξεργασίας, µην αφήνοντας αρκετή µνήµη για τις άλλες απαιτήσεις επεξεργασίας. Είναι λογικό να υποθέσουµε ότι η J2ME πρέπει να λειτουργεί ως ένα JXTA peer χωρίς βοήθεια για τα XML αρχεία. o Η J2ME έχει µόνο έναν ΗΤΤΡ πελάτη και δεν έχει ΗΤΤΡ διακοµιστή. Αυτό σηµαίνει ότι µια J2ME συσκευή µπορεί να στέλνει ΗΤΤΡ αιτήσεις αλλά δεν µπορεί να ανοίγει ports για να ακούσει και να λάβει εισερχόµενες HTTP αιτήσεις. o εν υποστηρίζει SSL Σαφώς, αυτά τα εµπόδια περιορίζουν τα είδη των εφαρµογών τα οποία µπορούν να φιλοξενήσουν οι ασύρµατες συσκευές. Ωστόσο, λόγω του ότι έχουν τη δυνατότητα να επικοινωνούν µε άλλα συστήµατα, η µεγαλύτερη δυνατότητά τους βρίσκεται στην ικανότητα να λειτουργούν ως πύλη, σε ένα δίκτυο όπου µπορούν να βρεθούν πιο ισχυρά υπολογιστικά συστήµατα και πόροι αποθήκευσης. Με πιο απλά λόγια, οι ασύρµατες συσκευές πρέπει να βασίζονται στο δίκτυο για να διεκπεραιώσει το µεγαλύτερο φόρτο εργασίας. 48

Ένα επίσης πολύ σηµαντικό θέµα στη δικτύωση των συσκευών είναι η ασφάλεια. Όσο αυξάνει η ανάγκη των εταιρειών αλλά και των ιδιωτών να αποθηκεύουν πληροφορίες σε υπολογιστικά συστήµατα και δίκτυα, τόσο το θέµα της ασφάλειας γίνεται όλο και πιο σηµαντικό, και ακόµη περισσότερο σε περιβάλλοντα ασύρµατης δικτύωσης και φορητών συσκευών. Λόγω της ενυπάρχουσας αρχιτεκτονικής ασφάλειας, οι πλατφόρµες ανάπτυξης της Java είναι πρακτικά και καλοσχεδιασµένα περιβάλλοντα, µε υψηλά επίπεδα ασφάλειας. Το µοντέλο ασφαλείας που παρέχει η Java 2 Standard Edition παρέχει στους δηµιουργούς ένα ισχυρό και εύκαµπτο πλαίσιο εργασίας ασφαλείας. υστυχώς όµως, η συνολική ποσότητα κώδικα που έχει αφιερωθεί στην ασφάλεια στην Java 2 Standard Edition υπερβαίνει τη διαθέσιµη µνήµη για CLDC και MIDP. Κατά συνέπεια, είναι αναγκαίες κάποιες απλοποιήσεις στον καθορισµό του µοντέλου ασφαλείας για CLDC και MIDP. Αυτό το µοντέλο ασφαλείας καθορίζεται σε τρία διαφορετικά επίπεδα: 1. Ασφάλεια επιπέδου συσκευής. Η ασφάλεια χαµηλού επιπέδου, γνωστή επίσης ως ασφάλεια εικονικού µηχανήµατος (virtual machine security), εξασφαλίζει ότι µια κακοσχεδιασµένη κλάση δεν θα προκαλέσει βλάβη στη φορητή συσκευή. 2. Ασφάλεια επιπέδου εφαρµογής. Η ασφάλεια σε επίπεδο εφαρµογής σηµαίνει ότι µια Java εφαρµογή η οποία τρέχει σε µια φορητή συσκευή µπορεί να έχει πρόσβαση µόνο σε αυτές τις βιβλιοθήκες, στους πόρους του συστήµατος και σε άλλα στοιχεία στα οποία της επιτρέπει η συσκευή και το περιβάλλον της Java εφαρµογής. 3. Ασφάλεια από άκρη σε άκρη. Η ασφάλεια από άκρη σε άκρη αναφέρεται σε ένα µοντέλο το οποίο εγγυάται ότι οποιαδήποτε συναλλαγή που ξεκινάει σε µια φορητή συσκευή προστατεύεται καθόλη τη διαδροµή από τη συσκευή προς την οντότητα που παρέχει τις υπηρεσίες για τη συναλλαγή. Προκειµένου να επιτευχθεί 49

αυτό είναι πιθανό να χρειαστεί κρυπτογράφηση ή κάποιο άλλο µέσο. Το µοντέλο των δικτύων οµότιµης επικοινωνίας είναι ιδιαίτερα κατάλληλο για τα χαρακτηριστικά των ασύρµατων συσκευών. Η φορητότητά τους απαιτεί αναµφιβόλως µια µέθοδο ανακάλυψης πόρων του δικτύου ένα καίριο χαρακτηριστικό των δικτύων οµότιµης επικοινωνίας. Επιπρόσθετα, οι περιορισµένοι πόροι τους έχουν ως αποτέλεσµα τη µεγαλύτερη εξάρτηση από τις υπηρεσίες του δικτύου, προκειµένου να δηµιουργηθούν χρήσιµες εφαρµογές. Ως αποτέλεσµα των προσπαθειών του Project JXME, ασύρµατες εφαρµογές µπορούν να σχεδιαστούν χρησιµοποιώντας την τεχνολογία των δικτύων οµότιµης επικοινωνίας. Οι ευκαιρίες για αυτή την τεχνολογία φαίνονται ιδιαίτερα δυνατές στο χώρο των παιχνιδιών, των οικονοµικών υπηρεσιών και των άµεσων µηνυµάτων, αν και τελικά, οι πιθανότητες θα περιοριστούν µόνο από τη φαντασία των δηµιουργών. 3.2. Γενικά χαρακτηριστικά της JXTA για J2ME (JXME) Οι κοινότητες δηµιουργών της Java και της JXTA, κατανοώντας ότι η τεχνολογία οµότιµης επικοινωνίας θα µπορούσε να έχει σηµαντικές συνέπειες στο ασύρµατο computing, άρχισε να ορίζει ένα σύνολο απαιτήσεων για τη δηµιουργία ασύρµατων JXTA peers κατασκευασµένα στα θεµέλια που δηµιουργήθηκαν από την J2ME και το MIDP. Ξεκίνησαν µε ένα σύνολο από απλούς στόχους: Να έχει τη δυνατότητα διασύνδεσης µε τη JXTA σε desktops και σταθµούς εργασίας. Να παρέχει µια οµότιµη υποδοµή για µικρές συσκευές. Να είναι απλό και εύκολο στη χρήση από τους developers. 50

Να είναι αρκετά µικρό για να χρησιµοποιηθεί µε κινητά τηλέφωνα και PDA. Να επιτρέπει τη δηµιουργία εφαρµογών η οποία παρέχει µια καλή πείρα στο χρήστη. Να είναι συµβατό µε το MIDP 1.0 και στη συνέχεια µε την καινούρια έκδοση MIDP-2.0 Το αποτέλεσµα αυτής της προσπάθειας, που επώαζε στη Sun Microsystems και στη συνέχεια γρήγορα µεταφέρθηκε στην κοινότητα ανάπτυξης της JXTA, είναι το Project JXTA για J2ME, ή αλλιώς JXME. H JXME επιτρέπει κάθε συσκευή συµβατή µε το MIDP, να συµµετέχει στις δραστηριότητες ενός δικτύου οµότιµης επικοινωνίας µε άλλα JXTA peers, που λειτουργούν σε µεγαλύτερες πλατφόρµες. Το MIDP-2.0 παρέχει τα απαραίτητα APIs που έχουν ήδη αναγνωριστεί από την κοινότητα δηµιουργών της Java, και έτσι συµπεριφέρεται ως ένα σταθερό θεµέλιο για τη δηµιουργία των ασύρµατων JXTA peers. Παρόλα αυτά, το MIDP-2.0 έχει ορισµένους περιορισµούς, όπως αναφέρεται παραπάνω, όπως οι περιορισµένες βιβλιοθήκες, η έλλειψη XML parser, η υποστήριξη µόνο εξερχόµενων HTTP και η έλλειψη ασφάλειας και περιορίζοντας έτσι τις δυνατότητες της JXME. Το ΑΡΙ που προσφέρει στις εφαρµογές η JXME έχει σχεδιαστεί έτσι ώστε να κρύβει την πολυπλοκότητα από τον απλό προγραµµατιστή, ενώ παράλληλα δίνει πρόσβαση στα χαµηλά επίπεδα του κώδικα σε έναν έµπειρο προγραµµατιστή. Το ΑΡΙ αποτελείται µόνο από τρεις κλάσεις: Μήνυµα. Περιέχει µεθόδους για τη δηµιουργία και τη διαχείριση των µηνυµάτων της JXTA. Στοιχείο. Περιέχει µεθόδους για τη δόµηση και τη διαχείριση των βασικών στοιχείων των µηνυµάτων της JXTA. PeerNetwork. Χειρίζεται τη σύνδεση µε το relay και περιέχει τις βασικές λειτουργίες του JXME peer στο δίκτυο της JXTA. 51

Το ΑΡΙ αποφεύγει τη χρήση των Interfaces, Factories, Listeners, Threads και Inner Classes για να µειώσει το µέγεθός του. Έχοντας ένα ΑΡΙ που αντιπροσωπεύεται µόνο από τρεις κλάσεις, επιτρέπει στους νέους προγραµµατιστές να ξεκινήσουν τη δηµιουργία JXME εφαρµογών πολύ γρήγορα. Παρακάτω αναφέρονται τα χαρακτηριστικά της JXME. Ανακάλυψη Χρηστών (pipes). Κάθε JXME εφαρµογή είναι ικανή να διατηρήσει και να αναζητήσει ένα περιορισµένο αριθµό χρηστών για την εφαρµογή. Ανακάλυψη Γκρουπ. Κάθε εφαρµογή που τρέχει σε JXME είναι ικανή να ανακαλύψει ένα JXTA group και να συµµετέχει σ αυτό. Ανακάλυψη Peer. Τα JXME peers είναι ικανά να ανακαλύψουν άλλα peers. ηµιουργία Pipes. Η δηµιουργία point-to-point και propagate pipes. ηµιουργία Γκρουπ. Η δηµιουργία γκρουπ για τον περιορισµό του πεδίου της ανακάλυψης. Συµµετοχή σε Γκρουπ. Η συµµετοχή σε κάποιο συγκεκριµένο γκρουπ σύµφωνα µε το JXTA specification. Επικοινωνία. Η επικοινωνία και η ανταλλαγή µηνυµάτων µε άλλα peers µέσω JXTA pipes. 3.3. JXTA Relays και JXME peers Εξαιτίας των περιορισµένων πόρων της πλατφόρµας και των αντίστοιχων περιορισµών του MIDP-2.0, τα JXME peers µπορούν να λειτουργούν µόνο ως ακραία peers. Αυτό συµβαίνει επειδή δε µπορούν να αναλάβουν το ρόλο ενός πιο πολύπλοκου peer, το οποίο προσφέρει υπηρεσίες σε άλλα µέλη του peer group. Βλέποντας τα πράγµατα από µια καθαρά πρακτική όψη, τα ασύρµατα peer πρέπει κυρίως να 52

λειτουργούν ως παράθυρα στο δίκτυο για τους χρήστες τους. Αποτέλεσµα αυτού είναι ότι το βαρύτερο φορτίο πρέπει να εκτελεστεί από άλλα µέλη του peer group. Μάλιστα, ακόµη και µερικές βασικές λειτουργίες, οι οποίες έχουν να κάνουν µε τη συµµετοχή σε peer group, πρέπει να τις αναλάβουν άλλα peers, τα οποία ονοµάζονται JXTA relays. Ένα JXME peer µιλάει µόνο σε ένα JXTA relay, το οποίο µε τη σειρά του εκτελεί την επεξεργασία των µηνυµάτων, όπως είναι η σύνταξη διαφηµίσεων, η αποστολή µηνυµάτων αναζήτησης στο δίκτυο της JXTA κτλ. Ένα JXME peer, µαζί µε ένα JXTA relay, είναι λειτουργικά ισοδύναµα µε ένα κανονικό JXTA peer. Παρακάτω, στην Εικόνα 3.1 φαίνεται η βασική αρχιτεκτονική του συστήµατος. Εικόνα 3.1. Αρχιτεκτονική της JXTA για J2ME Τα JXTA relays είναι proxies για µικρές συσκευές, τα οποία πραγµατοποιούν τις περισσότερες από τις λειτουργίες που απαιτούνται, για να διατηρήσουν την ιδιότητά τους ως κανονικό και ισοδύναµο µέλος µε τα άλλα του peer group. Παρέχουν αλληλολειτουργία µε τα πρωτόκολλα της JXTA. 53

Λειτουργούν εκ µέρους των JXME peers ως proxy για την εκπλήρωση ανακάλυψης χρηστών, γκρουπ και peers, για τη δηµιουργία pipes και γκρουπς, για τη συµµετοχή σε γκρουπς και την επικοινωνία. Φιλτράρουν την κίνηση. Βελτιστοποιούν τις διαφηµίσεις και αφαιρούν τα περιττά στοιχεία. Ο ρόλος των ασύρµατων peer και των JXTA relay γίνεται πιο εµφανής µε ένα απλό παράδειγµα, που περιγράφει πώς λειτουργεί µια θεµελιώδης λειτουργία της JXTA όπως η ανακάλυψη. Ένα J2ME peer στέλνει ένα µήνυµα αίτησης ΗΤΤΡ σε ένα JXTA relay. Το µήνυµα θα περιέχει ένα ή περισσότερα στοιχεία. Με την παραλαβή της ΗΤΤΡ αίτησης από ένα J2ME peer, το JXTA relay θα εξάγει κάθε στοιχείο µέσα την αίτηση, θα συντάξει ένα XML µήνυµα σύµφωνα µε τη µορφή της JXTA, και θα προωθήσει το µήνυµα στο δίκτυο της JXTA. Όλες οι απαντήσεις που προορίζονται για το J2ME peer συλλέγονται από το relay, το οποίο αφαιρεί τα περιττά στοιχεία από αυτές, έτσι ώστε να βελτιστοποιήσει την αποδοτικότητα της µεταφοράς στην ασύρµατη συσκευή λόγω µικρού εύρους ζώνης και συντάσσει µια αντίστοιχη ΗΤΤΡ απάντηση. Ωστόσο, ένα JXTA relay δεν έχει τα µέσα για να στείλει την ΗΤΤΡ απάντηση πίσω στο J2ME peer, λόγω του ότι όπως αναφέρθηκε οι J2ME συσκευές δεν υποστηρίζουν λειτουργία της πλευράς του διακοµιστή για ΗΤΤΡ, οπότε δεν µπορούν να ανοίξουν ports για να ακούσουν το εισερχόµενο µήνυµα. Γι αυτό, το JXTA relay θα περιµένει για το J2ME peer να στείλει µια ΗΤΤΡ poll αίτηση και να ρωτήσει για κάποιο µήνυµα απάντησης στην προηγούµενη αίτηση που έστειλε. Όταν συµβεί αυτό, το JXTA relay θα στείλει την ΗΤΤΡ απάντηση πίσω στο J2ME peer. Αυτή ακριβώς η διαδικασία απεικονίζεται σχηµατικά στην Εικόνα 3.2. Φυσικά, χρειαζόµαστε ένα µηχανισµό µέσα στο J2ME peer ο οποίος θα κάνει polling στο JXTA relay για εισερχόµενα µηνύµατα. Η υλοποίηση της JXME κρύβει όλη τη λειτουργικότητα από τον προγραµµατιστή της εφαρµογής, ο οποίος χρειάζεται να καταλάβει µόνο 54

την αρχιτεκτονική αυτής της επικοινωνίας και δεν απαιτείται να γνωρίζει τις περαιτέρω λεπτοµέρειες. Εικόνα 3.2. Επικοινωνία του JXME peer µε το δίκτυο της JXTA Τα relays χρησιµοποιούνται επίσης και για την πρόσβαση των JXTA peers πίσω από firewalls και είναι το µέσον που χρησιµοποιείται για να επιτραπεί σε peers που βρίσκονται πίσω από ΝΑΤ να επικοινωνήσουν µε τον έξω κόσµο. Αντίθετα προς το µοντέλο του πελάτη-διακοµιστή, τα ασύρµατα JXTA peers δεν χρειάζεται να εγκαταστήσουν και να διατηρήσουν µια στάσιµη σχέση µε καθορισµένα JXTA relays. ύο ανεξάρτητα JXME peers µπορούν να συνδεθούν σε διαφορετικά relays και εν τούτοις να ανακαλύψουν το ένα το άλλο και να επικοινωνήσουν. Επιπρόσθετα, ένα ασύρµατο peer µπορεί δυναµικά να αλλάξει το relay του ή να έχει πολλά relays. Το ασύρµατο peer µπορεί να ψάξει για JXTA relays και να ορίσει ένα ως προεπιλεγµένο. Το JXTA relay φιλτράρει όλες τις εισερχόµενες αιτήσεις από το δίκτυο και απαντά σε αυτές εκ µέρους του ασύρµατου peer. Επιπρόσθετα, για κάθε πρωτόκολλο του πυρήνα της JXTA, όπως η ανακάλυψη, το JXTA relay αφαιρεί τα περιττά από τις εισερχόµενες απαντήσεις έτσι ώστε να κρατάει τα ελάχιστα δυνατά στοιχεία. Για 55

παράδειγµα, αν ένα ασύρµατο peer εκκινήσει µια αναζήτηση για ένα peer, µια εισερχόµενη απάντηση θα είναι µια διαφήµιση peer. Αντί να σταλεί ολόκληρη η διαφήµιση στο ασύρµατο peer, το relay στέλνει µόνο την ταυτότητα του peer, µειώνοντας έτσι τον αριθµό των στοιχείων στη διαφήµιση σε ένα. 3.4. Αναζήτηση και αποστολή µηνυµάτων των JXME peers στο δίκτυο της JXTA Την αναζήτηση στο δίκτυο για ένα JXME peer την αναλαµβάνει η κλάση PeerNetwork, παρέχοντας ως στοιχεία τον τύπος της αναζήτησης, δηλαδή αν η αναζήτηση αναφέρεται σε κάποιο peer, group ή pipe, και µια σύντοµη περιγραφή του. Εσωτερικά η µέθοδος αναζήτησης εκτελεί δυο βήµατα: 1. Συντάσσει ένα µήνυµα αίτησης αναζήτησης 2. Στέλνει το µήνυµα αναζήτησης στο JXTA relay Η µέθοδος της αναζήτησης επιστρέφει έναν αριθµό, διαφορετικό για κάθε αίτηση, ο οποίος θα χρειαστεί στη συνέχεια για να συγκριθεί µε τις απαντήσεις. Αυτό είναι απαραίτητο λόγω της ασύγχρονης φύσης του συστήµατος των µηνυµάτων. εν είναι σίγουρο πότε θα ληφθεί κάποια απάντηση σε ένα συγκεκριµένο µήνυµα. Στην πραγµατικότητα, τα υπόλοιπα peers στο δίκτυο θα απαντήσουν κατά βούληση. Έτσι, είναι πιθανό να ληφθούν περισσότερες από µια απαντήσεις από το δίκτυο για κάθε αναζήτηση. Μπορούµε να στείλουµε πολλές διαφορετικές αιτήσεις αναζήτησης και να περιµένουµε τις απαντήσεις σε µπερδεµένη σειρά. Θα υπάρχει ένας αριθµός συσχετισµένος µε κάθε απάντηση, ο οποίος θα χρησιµοποιηθεί για να ταιριάξει µια συγκεκριµένη αίτηση µε την αντίστοιχη απάντηση. Το µήνυµα αναζήτησης πρέπει να προστεθεί στην ουρά των εξερχόµενων µηνυµάτων και µια ιδιωτική µέθοδος της κλάσης 56

αναλαµβάνει την αποστολή τους. Η αποστολή των µηνυµάτων γίνεται µέσω της κλάσης PeerNetwork, η οποία χρησιµοποιεί µεθόδους για να στείλει τα µηνύµατα σε συγκεκριµένα pipes στο δίκτυο της JXTA. Ωστόσο, το JXME peer δε µπορεί να στείλει απευθείας κάποιο µήνυµα σε ένα pipe. Αντιθέτως, το µήνυµα συντάσσεται εσωτερικά και έπειτα στέλνεται στο relay περιέχοντας κατάλληλα στοιχεία µέσα στο µήνυµα τα οποία πληροφορούν το relay σχετικά µε το pipe που πρέπει να χρησιµοποιηθεί ως µέσο µεταφοράς για το µήνυµα προς το peer προορισµού. 3.5. Ασφάλεια στις επικοινωνίες των J2ME συσκευών Bouncy Castle Lightweight API Καθώς το «κινητό» εµπόριο γίνεται όλο και πιο γνωστό στο ευρύ κοινό και οι εταιρείες αναπτύσσουν όλο και περισσότερες εφαρµογές, το θέµα της ασφάλειας των συναλλαγών απασχολεί όλο και περισσότερο τους χρήστες των κινητών συσκευών και τους κατασκευαστές των ασύρµατων εφαρµογών. Η γενική ασφάλεια ενός δικτύου είναι τόσο δυνατή όσο ο πιο αδύναµός της κρίκος και σε ένα δίκτυο «κινητού» εµπορίου ο πιο αδύναµος κρίκος είναι η συσκευή από την πλευρά του πελάτη. Η διακοπτόµενη φύση των σηµάτων των ασύρµατων συσκευών καθώς και η περιορισµένη µνήµη και ισχύς επεξεργασίας των περισσότερων συσκευών χειρός αφήνει τα ασύρµατα συστήµατα εκτεθειµένα στην υποκλοπή δεδοµένων. Προκειµένου να προστατευθούν ευαίσθητα ή εµπιστευτικά δεδοµένα, τα οποία µπορεί να είναι αποθηκευµένα ή να µεταδίδονται µέσω µιας J2ME εφαρµογής, είναι απαραίτητη η χρησιµοποίηση της κρυπτογράφησης των δεδοµένων. Συσκευές οι οποίες υποστηρίζουν το Mobile Information Device Profile (MIDP), για παράδειγµα, υποστηρίζουν µόνο το HTTP και όχι το ασφαλές HTTP πρωτόκολλο (HTTPS). Συνεπώς, η ασφάλειά τους βασίζεται στην ασφάλεια του δικτύου. Ακόµη 57

και εφαρµογές οι οποίες δεν εκπέµπουν εµπιστευτικά δεδοµένα µπορούν να ωφεληθούν από την κρυπτογράφηση των δεδοµένων. Σε µια Palm OS συσκευή, για παράδειγµα, οι αποθήκες αρχείων (record store) που χρησιµοποιεί µια MIDP εφαρµογή είναι στην πραγµατικότητα Palm OS αρχεία βάσεων δεδοµένων. Το MIDP runtime σύστηµα ελέγχει την πρόσβαση στα υποκείµενα αρχεία βάσεων δεδοµένων έτσι ώστε µόνο οι εφαρµογές που τρέχουν στο ίδιο MIDlet Suite να µπορούν να δουν η µια τα αρχεία της άλλης. Ωστόσο, είναι ένα συνηθισµένο φαινόµενο για έναν πεπειραµένο χρήστη µιας Palm OS συσκευής να δει και να αντιγράψει τα περιεχόµενα αυτών των βάσεων δεδοµένων ανεξάρτητα από το MIDP runtime σύστηµα. Η κρυπτογράφηση των περιεχοµένων µιας αποθήκης αρχείων µπορεί να νικήσει όλους εκτός από τους πιο αποφασισµένους εισβολείς. υστυχώς, η κρυπτογράφηση δεν είναι ένα στάνταρ κοµµάτι του Connected Device Configuration (CDC) ή του Connected Limited Device Configuration (CLDC). Ένας προγραµµατιστής θα πρέπει είτε να γράψει τον δικό του κώδικα κρυπτογράφησης/αποκρυπτογράφησης είτε να χρησιµοποιήσει κάποια βιβλιοθήκη. Μεγάλη πρόοδος έχει σηµειωθεί από αρκετές εταιρίες για τη δηµιουργία βασικής κρυπτογράφησης για το J2ME MIDP. Developers στη Sun έχουν δηµιουργήσει το KSSL, µια υλοποίηση που καταλαµβάνει µικρό χώρο και χρησιµοποιείται µόνο από την πλευρά του πελάτη του SSL v3.0 για ασύρµατες συσκευές και συσκευές χειρός. Το KSSL περιλαµβάνει έναν αριθµό βελτιστοποιήσεων οι οποίες αντανακλούν την πραγµατικότητα της ανάπτυξης σε συσκευές µε περιορισµένη µνήµη και ισχύ επεξεργασίας οι οποίες τρέχουν σε δίκτυα µικρού εύρους ζώνης. Το Phaos Micro Foundation toolkit δηµιουργήθηκε για περιβάλλοντα CDC και CLDC και είναι µια καθαρή Java λύση. Τέλος, το ελεύθερο Bouncy Castle crypto API τρέχει σε οτιδήποτε από JDK 1.4 µέχρι J2ME, αν και παρουσιάζει προβλήµατα απόδοσης στο επίπεδο του J2ME. 58

Η Λεγεώνα του Bouncy Castle είναι ένα ανοιχτό πρόγραµµα πηγαίου κώδικα κρυπτογράφησης για Java. Αν και αρχικά είχαν ως σκοπό την παροχή εναλλακτικών αλγορίθµων κρυπτογράφησης για J2SE, η Λεγεώνα έχει προσαρµόσει κάποιο από τον κώδικά της για να δουλεύει σε J2ME. Πιο συγκεκριµένα, µέρη του Bouncy Castle ελαφριάς κρυπτογραφίας ΑΡΙ λειτουργούν υποστηρίζουν το CLDC και το CDC. Το API ελαφριάς κρυπτογράφησης υποστηρίζει όλη την κοινή κρυπτογράφηση µε block και streams, όπως το DES, Blowfish, IDEA, Rijndael και RC4 όπως επίσης και κρυπτογραφία δηµόσιου-ιδιωτικού κλειδιού (RSA). 59

ΜΕΡΟΣ ΕΥΤΕΡΟ P2PEOPLE ΕΦΑΡΜΟΓΗ ΓΙΑ ΦΟΡΗΤΕΣ ΣΥΣΚΕΥΕΣ 60

ΚΕΦΑΛΑΙΟ 1 ΣΤΟΧΟΣ ΤΗΣ ΕΡΓΑΣΙΑΣ Ο βασικός στόχος της εργασίας ήταν να υλοποιηθεί σε φορητή συσκευή ένα πρωτόκολλο για ασφαλή αγορά και πώληση προïόντων χρησιµοποιώντας ψηφιακά χρήµατα. Για την ακρίβεια, έπρεπε να δηµιουργηθεί µια έκδοση της εφαρµογής P2People για φορητές συσκευές, όπως ένα κινητό τηλέφωνο ή ένα PDA. Το πρόγραµµα P2People είναι µια εφαρµογή που βασίζεται στην αρχιτεκτονική των οµότιµων δικτύων και πιο συγκεκριµένα είναι βασισµένη πάνω στα πρωτόκολλα της JXTA. Τα peers που συνδέονται µέσω αυτής στο δίκτυο της JXTA έχουν τη δυνατότητα να συµµετέχουν σε έναν αριθµό από γκρουπ, ανάλογα µε τα ενδιαφέροντά τους, ή ακόµη και να δηµιουργήσουν τα δικά τους υπό-γκρουπ και µέσω αυτών να έχουν πρόσβαση σε µια πληθώρα υπηρεσιών που παρέχει η εφαρµογή µε σκοπό την ψυχαγώγηση, την επικοινωνία, το διαµοιρασµό δεδοµένων, αλλά ακόµη και το ηλεκτρονικό εµπόριο. Ο χρήστης µπορεί να βρει άλλους χρήστες µέσα στο γκρουπ, να συνοµιλήσει µαζί τους, να βρει και να κατεβάσει αρχεία δεδοµένων από κάποιον άλλο χρήστη. Μπορεί επίσης να έχει οπτική επαφή µέσω κάµερας ή και να ζωγραφίζει πάνω στο ίδιο παράθυρο µε κάποιον αποµακρυσµένο χρήστη. Τέλος, µπορεί να χρησιµοποιήσει την υπηρεσία ηλεκτρονικού εµπορίου που παρέχει η εφαρµογή. Ένας χρήστης µπορεί να διαφηµίσει προϊόντα του και να τα πουλήσει, όπως επίσης και να ψάξει στο δίκτυο για να βρει διαφηµίσεις για ένα συγκεκριµένο προϊόν που ενδιαφέρεται και να ολοκληρώσει µέσω δικτύου την αγορά του µέσω ψηφιακών χρηµάτων. 61

Το πρόγραµµα χρησιµοποιεί µια ηλεκτρονική τράπεζα στην οποία όλοι οι χρήστες που χρησιµοποιούν την υπηρεσία του ηλεκτρονικού εµπορίου πρέπει να διατηρούν ένα λογαριασµό. Όλες οι χρηµατικές συναλλαγές γίνονται µε τη βοήθεια ψηφιακών χρηµάτων, η διαχείριση των οποίων γίνεται από την τράπεζα. Η τράπεζα είναι υπεύθυνη για τον έλεγχο της ταυτότητας και της αυθεντικότητας των χρηστών. Στόχος της συγκεκριµένης εργασίας ήταν η δηµιουργία µιας απλοποιηµένης έκδοσης του προγράµµατος, η οποία θα περιελάµβανε το κοµµάτι του ηλεκτρονικού εµπορίου, για την εφαρµογή σε φορητές συσκευές, έχοντας ως σκοπό να µπορεί ένας χρήστης µιας φορητής συσκευής να συνδεθεί στο δίκτυο και να ολοκληρώσει επιτυχώς µια αγοραπωλησία µε µέγιστη ασφάλεια. Για την υλοποίηση του προγράµµατος χρησιµοποιήθηκαν τα πρωτόκολλα της JXTA Mobile Edition καθώς και οι βιβλιοθήκες του MIDP 2.0 της Java 2 Mobile Edition, τα οποία είναι απλοποιηµένες εκδόσεις της JXTA και της Java για φορητές συσκευές, παρέχοντας έτσι στον προγραµµατιστή τη δυνατότητα ανάπτυξης εφαρµογών για φορητές συσκευές, αλλά ταυτόχρονα δηµιουργώντας περιορισµούς και προβλήµατα σε σχέση µε την εφαρµογή που δηµιουργήθηκε για προσωπικούς υπολογιστές. Η φορητή συσκευή πρέπει πρωταρχικά να συνδέεται µέσω ενός relay στο δίκτυο της JXTA και να διατηρεί την ίδια ταυτότητα, η οποία είναι βασική και χρησιµοποιείται σε όλες τις συναλλαγές. Στη συνέχεια πρέπει να συνδεθεί σε ένα από τα γκρουπ του προγράµµατος P2People έτσι ώστε να έχει πρόσβαση στις ιδιαίτερες υπηρεσίες του προγράµµατος. Για να µπορέσει ο χρήστης µιας φορητής συσκευής να θέσει κάποιο προϊόν προς πώληση πρέπει πρώτα από όλα να στείλει στο δίκτυο της JXTA µια διαφήµιση µε τα πλήρη στοιχεία του, έτσι ώστε να µπορούν οι υπόλοιποι χρήστες του δικτύου να την εντοπίσουν. Από εκεί 62

και πέρα, εάν κάποιος χρήστης ενδιαφερθεί για το συγκεκριµένο προϊόν µπορεί να ξεκινήσει τη διαδικασία της αγοράς του. Αντίστοιχα, ο χρήστης της φορητής συσκευής έχει τη δυνατότητα να ψάξει στο δίκτυο για να βρει διαφηµίσεις για ένα προϊόν που τον ενδιαφέρει και να εκκινήσει από τη φορητή συσκευή τη διαδικασία της αγοράς του προϊόντος. Όλο το περιβάλλον λειτουργίας της εφαρµογής της φορητής συσκευής, όπως για παράδειγµα τα µενού, οι εντολές και οι φόρµες του προγράµµατος, κατασκευάσθηκαν έτσι ώστε να είναι όσο το δυνατόν πιο απλά, κατανοητά και εύχρηστα προς το χρήστη. Οι λειτουργίες έχουν χωριστεί σε κατάλληλες οθόνες και ενεργοποιούνται µε το πάτηµα ενός κουµπιού. Επίσης, παρέχονται ειδικά alert που εµφανίζονται στην οθόνη της συσκευής µε σκοπό να ενηµερώνουν το χρήστη για το αποτέλεσµα κάποιας αίτησης που έχει στείλει, όπως για παράδειγµα για τη σύνδεσή του στο δίκτυο ή για την αποστολή κάποιας διαφήµισης, είτε αυτή είναι επιτυχής είτε ανεπιτυχής. Τέλος, πολλές από τις λειτουργίες που εκτελεί η φορητή συσκευή ενεργοποιούνται αυτόµατα, όπως για παράδειγµα η διαδικασία του polling, όπου το φορητό peer ελέγχει εάν υπάρχουν µηνύµατα που προορίζονται για αυτό στο relay, και λειτουργούν ασύγχρονα έτσι ώστε να µην «παγώνει» το περιβάλλον και ο χρήστης να µπορεί να εκτελεί ταυτόχρονα άλλες λειτουργίες. Όσον αφορά το θέµα των συναλλαγών, το οποίο είναι και το βασικότερο κοµµάτι της εργασίας, χρησιµοποιήθηκε ένα πρωτόκολλο, βασισµένο στο πρωτόκολλο που σχεδιάστηκε για την P2People εφαρµογή, έτσι ώστε να υπάρχει η µέγιστη δυνατή ασφάλεια. Βάσει του πρωτοκόλλου αυτού, το οποίο θα αναλυθεί εκτενώς σε επόµενο κεφάλαιο, οι χρηστές στέλνουν µεταξύ τους και µε την ηλεκτρονική τράπεζα κρυπτογραφηµένα µηνύµατα. Λόγω των προβληµάτων που εισάγουν οι περιορισµένοι πόροι της φορητής συσκευής, για την κρυπτογράφηση των µηνυµάτων χρησιµοποιήθηκε το Light API της 63

Bouncy Castle, το οποίο είναι σχεδιασµένο ειδικά για συσκευές µε περιορισµένους πόρους. 64

ΚΕΦΑΛΑΙΟ 2 ΠΡΩΤΟΚΟΛΛΟ ΣΥΝΑΛΛΑΓΩΝ Για την πραγµατοποίηση ηλεκτρονικών συναλλαγών, η εφαρµογή χρησιµοποιεί ένα πρωτόκολλο που στηρίζεται: στην αποστολή µηνυµάτων JXTA, σε µορφή ΧΜL στην ασύµµετρη κρυπτογράφηση δηµόσιου-ιδιωτικού κλειδιού RSA µε µέγεθος κλειδιού 1024 bits, στη συµµετρική κρυπτογράφηση σύµφωνα µε τον αλγόριθµο Rijndael µε µέγεθος κλειδιού 128 bits, στον αλγόριθµο κερµατισµού (hashing) SHA1. Το πρωτόκολλο αυτό είναι µια απλοποιηµένη έκδοση του πρωτοκόλλου που χρησιµοποιεί η εφαρµογή P2People. 2.1. Ορισµοί Οι παρακάτω όροι χρησιµοποιούνται για την περιγραφή του πρωτοκόλλου: Broker: είναι το peer το οποίο είναι υπεύθυνο για την εξυπηρέτηση τεσσάρων διαφορετικών συναλλαγών. Αγορά ηλεκτρονικού χρήµατος (Buy Brokerscrip Transaction) Απόσυρση ηλεκτρονικού χρήµατος (Scrip Withdraw Transaction) Ενεργοποίηση λογαριασµού (Handshake Transaction) 65

Αίτηση απόδοσης δηµόσιου κλειδιού πελάτη (Public Key Request Transaction) Ο broker στο δίκτυο είναι µοναδικός, θεωρείται αξιόπιστος και ελέγχεται από εξουσιοδοτηµένο φορέα. ιαθέτει µια βάση δεδοµένων στην οποία περιέχονται οι τραπεζικοί λογαριασµό µαζί µε τα πλήρη στοιχεία των πελατών όπως π.χ. οι ταυτότητές τους, τα δηµόσια κλειδιά τους, προσωπικά στοιχεία κτλ. Η βάση δεδοµένων είναι απόρρητη και µόνο ο broker έχει πρόσβαση σ αυτήν. Επίσης διατηρεί αρχεία όλων των συναλλαγών (logfiles). Πελάτης Πωλητής (Vendor-Client): είναι το peer το οποίο διατηρεί ενεργό λογαριασµό στο broker. Έχει τη δυνατότητα να εκκινήσει και να λάβει µέρος σε όλες τις συναλλαγές τις οποίες εξυπηρετεί ο broker καθώς επίσης και άλλες δυο συναλλαγές οι οποίες πραγµατοποιούνται κατά τη διάρκεια µιας αγοραπωλησίας: Αίτηση αγοράς προϊόντος (Buy Item Transaction) Εξυπηρέτηση πώλησης προϊόντος (Sell Item Transaction) PAN Secret: είναι ένας συνδυασµός δυο συνθηµατικών (secrets): Το συνθηµατικό του broker και το συνθηµατικό του Πελάτη/Πωλητή. Ο broker και ο πελάτης έχουν και οι δυο από έναν τέτοιο συνδυασµό. Αυτά τα συνθηµατικά δίνονται στην τράπεζα όταν ο πελάτης κάνει για πρώτη φορά αίτηση χρησιµοποίησης του λογαριασµού του (Handshake Transaction). PAN: είναι ο αριθµός του τραπεζικού λογαριασµού του πελάτη. ID: προσδιορίζει µοναδικά τον πελάτη-πωλητή πιστοποιώντας την ταυτότητά του. Το ID υπολογίζονται από τον παρακάτω τύπο: Hash(PANSecret Hash(PANSecret) PAN) 66

όπου Hash( ) είναι ο αλγόριθµος SHA1 UserID: µια µοναδική λέξη για κάθε πελάτη. PeerID: είναι το peerid όπως ορίζεται στα πλαίσια της JXTA. Χρησιµοποιείται για να αναγνωριστεί η φορητή συσκευή του πελάτη. Scrip: είναι το ψηφιακό χρήµα, το οποίο εκδίδει ο broker. ScripBody: αποτελείται από τα εξής πεδία (Εικόνα 2.1): ProducerUserID: Μια µοναδική λέξη για τον broker Value: Η χρηµατική αξία του ηλεκτρονικού χρήµατος ScripID: Προσδιορίζει το scrip. Μέρος του χρησιµοποιείται για τον προσδιορισµό του MasterScripSecret Expires: Ηµεροµηνία λήξης του ηλεκτρονικού χρήµατος. Εικόνα 2.1. οµή του scrip MasterScripSecret: είναι µια µυστική λέξη, η οποία χρησιµοποιείται για τη δηµιουργία του πιστοποιητικού (certificate) του scrip και είναι γνωστή µόνο στο broker. Αποτελείται από 18 τυχαία byte. 67

Certificate: είναι η ψηφιακή υπογραφή του scrip. Χρησιµοποιείται για να πιστοποιήσει την εγκυρότητα του scrip. ηµιουργείται µε βάση τον παρακάτω τύπο (Εικόνα 2.2): Hash(ScripBody MasterScripSecret) Εικόνα 2.2. ηµιουργία του Certificate 2.2. Έκδοση ψηφιακού χρήµατος (scrip) Η διεκπεραίωση των ηλεκτρονικών πληρωµών βασίζεται στην ιδέα των ψηφιακών χρηµάτων (scrips). Ο broker είναι υπεύθυνος για την ανταλλαγή scrip µε πραγµατικά χρήµατα και αντίστροφα. Τα ψηφιακά χρήµατα είναι στην ουσία µια προσοµοίωση των πραγµατικών χρηµάτων, µε την έννοια ότι τα bytes που απαρτίζουν το scrip µεταφέρουν ένα συγκεκριµένο χρηµατικό ποσό. Το scrip δε µεταφέρει πληροφορία για το ποιος το έχει αγοράσει, όπως συµβαίνει και στα πραγµατικά χρήµατα.οποιοσδήποτε χρήστης µπορεί να εξαργυρώσει ένα έγκυρο 68

scrip. Σε περίπτωση που ένα scrip εξαργυρωθεί, ακυρώνεται από τον broker και δεν µπορεί να ξαναχρησιµοποιηθεί. Για την έκδοση του scrip ο broker δηµιουργεί το ScripBody, όπως περιγράφηκε παραπάνω. Στη συνέχεια παράγει ένα τυχαίο MasterScripSecret, το αντιστοιχεί στο ScripID και το αποθηκεύει. Με τη βοήθεια του MasterScripSecret, δηµιουργεί το Certificate, το οποίο µαζί µε το ScripBody αποτελεί το scrip. Για την απόσυρση του scrip, ο broker ελέγχει απλά την εγκυρότητά του και προβαίνει σε αύξηση του λογαριασµού του πελάτη που έχει στείλει πρώτος το Scrip κατά το αντίστοιχο ποσό. Ο έλεγχος εγκυρότητας γίνεται ως εξής: O broker εξάγει το ScripID και το χρησιµοποιεί για να βρει το αντίστοιχο MasterScripSecret το οποίο έχει αποθηκευµένο σε βάση δεδοµένων. Στη συνέχεια αναπαράγει το Certificate για το συγκεκριµένο Scrip και MasterScripSecret και ελέγχει εάν αυτό ταυτίζεται µε το Certificate του scrip που στάλθηκε. 2.3. Περιγραφή των συναλλαγών Το πρωτόκολλο στηρίζεται σε 6 συναλλαγές (transactions) µεταξύ του broker και των πελατών. Η κάθε συναλλαγή αποτελείται από ένα συγκεκριµένο αριθµό µηνυµάτων που στέλνονται ανάµεσα στους πελάτες και τον broker. Τα µηνύµατα είναι έγγραφα µορφής XML µε αυστηρά καθορισµένη µορφή. Για την εξασφάλιση της αυθεντικότητας στοιχείων των µηνυµάτων χρησιµοποιούνται ψηφιακές υπογραφές. Η ψηφιακή υπογραφή ενός στοιχείου προκύπτει από τον κατακερµατισµό του στοιχείου (hash) σύµφωνα µε τον αλγόριθµο SHA1 και στη συνέχεια την κρυπτογράφηση του κατακερµατισµού µε το ιδιωτικό κλειδί του πελάτη. 69

2.3.1. Ενεργοποίηση λογαριασµού (Handshake Transaction) Η συναλλαγή αυτή πραγµατοποιείται µεταξύ του πελάτη και του broker µια µόνο φορά και έχει ως στόχο την ενηµέρωση του broker για το PeerID και το δηµόσιο κλειδί του πελάτη. Με την ολοκλήρωση αυτής της συναλλαγής ο πελάτης είναι σε θέση να αγοράσει και να αποσύρει ηλεκτρονικά χρήµατα. Βήµα 1ο: Ο πελάτης στέλνει ένα µήνυµα στον broker, το οποίο περιλαµβάνει τα εξής στοιχεία: α) EncryptedPAN: Είναι το κρυπτογραφηµένο ΡΑΝ σύµφωνα µε τον συµµετρικό αλγόριθµο. β) EncryptedSignedPAN: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του PAN. γ) EncryptedSignID: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του ID. δ) EncryptedPublicKey: Είναι το συµµετρικά κρυπτογραφηµένο δηµόσιο κλειδί του πελάτη. ε) EncryptedKey: Είναι το κλειδί που χρησιµοποιήθηκε για τη συµµετρική κρυπτογράφηση των παραπάνω, κρυπτογραφηµένο ασύµµετρα µε το δηµόσιο κλειδί του broker. στ) Iv: Είναι ο πίνακας εκκίνησης (initialization vector) του αλγόριθµου της συµµετρικής κρυπτογράφησης. Βήµα 2ο: Ο broker λαµβάνει το παραπάνω µήνυµα και το αποκρυπτογραφεί. Χρησιµοποιεί το ιδιωτικό του κλειδί για να αποκρυπτογραφήσει το κλειδί που χρησιµοποιήθηκε για τη συµµετρική κρυπτογράφηση και µε τη βοήθεια αυτού αποκρυπτογραφεί τα υπόλοιπα στοιχεία. Στη συνέχεια ελέγχει την ψηφιακή υπογραφή του ΡΑΝ και του ID. Εάν αυτά είναι 70

έγκυρα και δεδοµένου ότι ο πελάτης δεν είναι ήδη καταχωρηµένος στην τράπεζα, o broker αποθηκεύει το PeerID, το δηµόσιο κλειδί του πελάτη και στέλνει ένα µήνυµα επιβεβαίωσης. Σε αντίθετη περίπτωση ο πελάτης λαµβάνει ένα µήνυµα, το οποίο τον ενηµερώνει ότι δεν ήταν δυνατή η διεκπεραίωση της αίτησης καθώς επίσης και το λόγο αποτυχίας της. 1. Αποστολή στοιχείων 3. Μήνυµα επιβεβαίωσης 2. Έλεγχος αυθεντικότητας στοιχείων και αποθήκευσή τους Βάση εδοµένων 2.3.2. Αγορά Ηλεκτρονικού Χρήµατος (Buy Brokerscrip Transaction) Η συναλλαγή αυτή πραγµατοποιείται µεταξύ του πελάτη και του broker και έχει ως στόχο την αγορά ηλεκτρονικού χρήµατος. Βήµα 1ο: Ο πελάτης στέλνει ένα µήνυµα αίτησης αγοράς στον broker. Το µήνυµα αυτό περιλαµβάνει τα εξής στοιχεία: α) ΕncryptedAmt: Είναι το συµµετρικά κρυπτογραφηµένο χρηµατικό ποσό που επιθυµεί να αγοράσει ο πελάτης. β) ΕncryptedSignAmt: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του παραπάνω χρηµατικού ποσό. γ) EncryptedSignID: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του ID. δ) EncryptedKey: Είναι το κλειδί που χρησιµοποιήθηκε για τη συµµετρική κρυπτογράφηση των παραπάνω, κρυπτογραφηµένο ασύµµετρα µε το δηµόσιο κλειδί του broker. ε) Iv: Είναι ο πίνακας εκκίνησης (initialization vector) του αλγόριθµου της συµµετρικής κρυπτογράφησης. 71

Βήµα 2ο: Ο broker λαµβάνει το παραπάνω µήνυµα και αποκρυπτογραφεί τα στοιχεία του κατά τον ίδιο τρόπο όπως και στην ενεργοποίηση του λογαριασµού. Ελέγχει τις ψηφιακές υπογραφές και σε περίπτωση που είναι έγκυρες εκδίδει το κατάλληλο scrip, αφαιρώντας το αντίστοιχο ποσό από τον τραπεζικό λογαριασµό του πελάτη. Στη συνέχεια στέλνει το scrip στον πελάτη, κρυπτογραφηµένο και ψηφιακά υπογεγραµµένο, όπως και παραπάνω. Σε περίπτωση οποιουδήποτε σφάλµατος ο πελάτης ενηµερώνεται µε κατάλληλο µήνυµα. Βήµα 3ο: Ο πελάτης λαµβάνει το κρυπτογραφηµένο scrip, το αποκρυπτογραφεί, ελέγχει την ψηφιακή υπογραφή και το αποθηκεύει στη συσκευή. 5. Έλεγχος αυθεντικότητας και αποθήκευση ψηφιακών χρηµάτων 1. Αποστολή µηνύµατος αίτησης αγοράς 4. Αποστολή ψηφιακών χρηµάτων 2. Έλεγχος αυθεντικότητας στοιχείων 3. Αφαίρεση αντίστοιχου χρηµατικού ποσού από το λογαριασµό του πελάτη Βάση εδοµένων 2.3.3. Απόσυρση ηλεκτρονικού χρήµατος (Scrip Withdraw Transaction) Η συναλλαγή αυτή πραγµατοποιείται µεταξύ του πελάτη-πωλητή και του broker και έχει ως στόχο την εξαργύρωση ηλεκτρονικού χρήµατος. Αυτή η συναλλαγή µπορεί να πραγµατοποιηθεί είτε αυτόνοµα, µεταξύ πελάτη και broker, είτε στα πλαίσια της αγοραπωλησίας κάποιου προϊόντος, µεταξύ πωλητή και broker. 72

Βήµα 1ο: Ο πελάτης στέλνει ένα µήνυµα αίτησης απόσυρσης ηλεκτρονικού χρήµατος στον broker. Το µήνυµα αυτό περιλαµβάνει τα εξής στοιχεία: α) ΕncryptedBrokerScrip: Είναι το συµµετρικά κρυπτογραφηµένο scrip που θέλει να εξαργυρώσει ο πελάτης. β) ΕncryptedSignBrokerScrip: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του παραπάνω scrip. γ) EncryptedSignID: Είναι η συµµετρικά κρυπτογραφηµένη ψηφιακή υπογραφή του ID. δ) EncryptedKey: Είναι το κλειδί που χρησιµοποιήθηκε για τη συµµετρική κρυπτογράφηση των παραπάνω, κρυπτογραφηµένο ασύµµετρα µε το δηµόσιο κλειδί του broker. ε) Iv: Είναι ο πίνακας εκκίνησης (initialization vector) του αλγόριθµου της συµµετρικής κρυπτογράφησης. Βήµα 2ο: Ο broker λαµβάνει το παραπάνω µήνυµα και αποκρυπτογραφεί τα στοιχεία του κατά το γνωστό τρόπο. Ελέγχει τις ψηφιακές υπογραφές και την εγκυρότητα του scrip. εδοµένου ότι τα παραπάνω είναι σωστά ακυρώνει το scrip, διαγράφοντας το MasterScripSecret και αυξάνει τον τραπεζικό λογαριασµό του πελάτη, κατά το αντίστοιχο ποσό. Στη συνέχεια στέλνει ένα µήνυµα επιβεβαίωσης. Σε περίπτωση οποιουδήποτε σφάλµατος ο πελάτης ενηµερώνεται µε κατάλληλο µήνυµα. 1. Αποστολή µηνύµατος απόσυρσης ψηφιακών χρηµάτων 2. Έλεγχος αυθεντικότητας στοιχείων Βάση εδοµένων 4. Μήνυµα επιβεβαίωσης 3. Ακύρωση ψηφιακών χρηµάτων και ανάλογη αύξηση τραπεζικού λογαριασµού 73

2.3.4. Αίτηση απόδοσης δηµόσιου κλειδιού πελάτη (Public Key Request Transaction) Η συναλλαγή αυτή πραγµατοποιείται µεταξύ του πελάτη-πωλητή και του broker και έχει ως στόχο τη γνωστοποίηση του δηµόσιου κλειδιού ενός συγκεκριµένου peer, βάσει του UserID του. Η συναλλαγή πραγµατοποιείται οποτεδήποτε ένα peer θέλει να επικοινωνήσει µε ένα άλλο µε ασφάλεια, και δεν διαθέτει το δηµόσιο κλειδί του. Βήµα 1ο: Ο πελάτης-πωλητής στέλνει ένα µήνυµα αίτησης απόδοσης δηµόσιου κλειδιού στον broker. Το µήνυµα αυτό περιλαµβάνει τα εξής: α) UserID: Είναι το ΙD του χρήστη του οποίου ζητείται το δηµόσιο κλειδί. β) SignedUserID: Είναι η ψηφιακή υπογραφή του παραπάνω UserID. Βήµα 2ο: Ο broker λαµβάνει το παραπάνω µήνυµα, εξάγει από τη βάση δεδοµένων το ζητούµενο δηµόσιο κλειδί και αφού ελέγξει την ψηφιακή υπογραφή, συντάσσει ένα µήνυµα το οποίο περιλαµβάνει τα εξής στοιχεία: α) PublicKey: Είναι το ζητούµενο δηµόσιο κλειδί. β) SignedPublicKey: Είναι η ψηφιακή υπογραφή του ζητούµενου κλειδιού. 1. Αποστολή µηνύµατος αίτησης απόδοσης δηµόσιου κλειδιού 2. Έλεγχος αυθεντικότητας στοιχείων 4. Αποστολή κλειδιού Βάση εδοµένων 74

3. Εξαγωγή ζητούµενου κλειδιού από τη βάση δεδοµένων 2.3.5. Αίτηση αγοράς προϊόντος (Buy Item Transaction) και Εξυπηρέτηση πώλησης προϊόντος (Sell Item Transaction) Στην ουσία πρόκειται για µια συναλλαγή µεταβίβασης ηλεκτρονικού χρηµατικού ποσού ανάµεσα σε δυο peer, τον πελάτη και τον πωλητή. Από την πλευρά του πελάτη γίνεται αίτηση αγοράς προϊόντος και από την πλευρά του πωλητή γίνεται εξυπηρέτηση πώλησης προϊόντος. Σ αυτή τη συναλλαγή χρησιµοποιείται µόνο ένα συµµετρικό κλειδί για την κρυπτογράφηση των µηνυµάτων, λόγω περιορισµένων πόρων των συσκευών. Βήµα 1ο: Ο πελάτης δηµιουργεί ένα τυχαίο συµµετρικό κλειδί και έναν αντίστοιχα πίνακα εκκίνησης (ΙV). Αυτό το κλειδί θα χρησιµοποιηθεί για όλες τις περαιτέρω συµµετρικές κρυπτογραφήσεις της συναλλαγής. Στη συνέχεια στέλνει ένα µήνυµα αίτησης αγοράς προϊόντος στον πωλητή. Το µήνυµα αυτό περιλαµβάνει τα εξής στοιχεία: α) ΕncryptedAmt: Είναι το συµµετρικά κρυπτογραφηµένο χρηµατικό ποσό το οποίο επιθυµεί να µεταβιβάσει ο πελάτης. β) Quantity: Είναι η ποσότητα του προϊόντος που επιθυµεί να αγοράσει. γ) ΕncryptedProductName: Είναι το συµµετρικά κρυπτογραφηµένο όνοµα του προϊόντος. δ) SignedEncryptedKey: Είναι η ψηφιακή υπογραφή του κρυπτογραφηµένου κλειδιού. ε) EncryptedKey: Είναι το κλειδί που χρησιµοποιήθηκε για τη συµµετρική κρυπτογράφηση των παραπάνω, κρυπτογραφηµένο ασύµµετρα µε το δηµόσιο κλειδί του πωλητή. στ) Iv: Είναι ο πίνακας εκκίνησης (initialization vector) του αλγόριθµου της συµµετρικής κρυπτογράφησης. 75

Βήµα 2ο: Ο πωλητής λαµβάνει το παραπάνω µήνυµα και αποκρυπτογραφεί τα στοιχεία του κατά το γνωστό τρόπο, χρησιµοποιώντας το δικό του ιδιωτικό κλειδί. Ελέγχει την ψηφιακή υπογραφή και στέλνει ένα συµµετρικά κρυπτογραφηµένο µήνυµα επιβεβαίωσης στον πελάτη, σχετικά µε το αν επιθυµεί τη συναλλαγή, χρησιµοποιώντας το κλειδί και το iv που στάλθηκε από τον πελάτη. Βήµα 3ο: Ο πελάτης λαµβάνει την κρυπτογραφηµένη απάντηση του πωλητή και την αποκρυπτογραφεί µε το ίδιο κλειδί που δηµιούργησε στο Βήµα 1 ο. Εφόσον είναι θετική αποστέλλει κρυπτογραφηµένο scrip, µε αντίστοιχη χρηµατική αξία, χρησιµοποιώντας το ίδιο συµµετρικό κλειδί. Βήµα 4ο: Ο πωλητής λαµβάνει το κρυπτογραφηµένο scrip, το αποκρυπτογραφεί και εκκινεί µια νέα συναλλαγή Απόσυρσης ηλεκτρονικού χρήµατος (Scrip Withdraw Transaction) προκειµένου να ελέγξει την εγκυρότητα του scrip και να το εξαργυρώσει. Σε περίπτωση που η παραπάνω συναλλαγή έχει θετική έκβαση στέλνει στον πελάτη µήνυµα επιβεβαίωσης. ιαφορετικά τον ενηµερώνει ότι η συναλλαγή δεν είναι εφικτή. 1. Αποστολή µηνύµατος αίτησης αγοράς 2. Έλεγχος ψηφιακής υπογραφής 3. Μήνυµα επιβεβαίωσης 5. Έλεγχος ψηφιακού χρήµατος µέσω απόσυρσης 4. Αποστολή ψηφιακών χρηµάτων 6. Μήνυµα επιβεβαίωσης 76

2.4. Ασφάλεια Πρωτοκόλλου Η γενική ασφάλεια του πρωτοκόλλου εξασφαλίστηκε λαµβάνοντας υπόψη κατά τη σχεδίασή του τα παρακάτω τρία επίπεδα ασφαλών µηχανισµών: 2.4.1. Ασφάλεια ψηφιακού χρήµατος Αυτό το είδος της ασφάλειας αποτρέπει το χρήστη από το να χρησιµοποιήσει το ίδιο scrip δεύτερη φορά. Κάθε φορά που εκδίδεται ένα scrip από το broker, το αντίστοιχο MasterScripSecret δηµιουργείται και αποθηκεύεται τοπικά. Κάθε scrip έχει ένα µοναδικό ScripID. Ο broker µπορεί να ελέγξει την αυθεντικότητα του scrip χρησιµοποιώντας έναν πίνακα αναφοράς που ήδη υπάρχει, ο οποίος συνδέει το µοναδικό ScripID µε ένα MasterScripSecret. Το MasterScripSecret χρησιµοποιείται για τη δηµιουργία του µοναδικού Certifiate για κάθε scrip. Το Certificate είναι ένα µέρος του scrip, το οποίο δεν µπορεί να διαχωριστεί και χρησιµοποιείται για τον έλεγχο της αξιοπιστίας του scrip. Επιπλέον το ScripBody περιέχει το ProducerID, το οποίο είναι µοναδικό και χαρακτηρίζει αυτόν που εκδίδει το scrip, ο οποίος στη συγκεκριµένη εφαρµογή είναι µόνο ο broker. 2.4.2. Ασφάλεια µηνυµάτων Αυτό το είδος της ασφάλειας εξασφαλίζει την εµπιστευτικότητα, την ακεραιότητα των δεδοµένων και την αυθεντικότητα. Κάθε φορά που στέλνεται ένα µήνυµα, αρχικά κρυπτογραφείται συµµετρικά χρησιµοποιώντας ένα τυχαίο κλειδί, το οποίο δηµιουργείται σύµφωνα µε 77

τον αλγόριθµο AES (Rijndael), µεγέθους κλειδιού 128 bits, ενισχυµένος µε τον αλγόριθµο Chipher Block Chaining (CBC). Επιπλέον, το τυχαίο κλειδί κρυπτογραφείται ασύµµετρα, χρησιµοποιώντας τον αλγόριθµο RSA, µε κλειδί µήκους 1024 bits. Αυτή η διαδικασία µειώνει το χρόνο που απαιτείται για την κρυπτογράφηση, καθώς η ασύµµετρη κρυπτογράφηση είναι πολύ πιο αργή από τη συµµετρική και εξασφαλίζει την ασφάλεια των δηµόσιων και ιδιωτικών κλειδιών. Η αυθεντικότητα και ακεραιότητα των δεδοµένων εξασφαλίζεται µε τη χρήση των ψηφιακών υπογραφών, χρησιµοποιώντας τον αλγόριθµο SHA1 για τον κατακερµατισµό και τον αλγόριθµο RSA για κρυπτογράφηση. Η ακεραιότητα των υπογεγραµµένων δεδοµένων επιτυγχάνεται ελέγχοντας την ψηφιακή τους υπογραφή, κάτι που εξασφαλίζει ότι τα δεδοµένα δεν έχουν αλλαχθεί από τη στιγµή που υπογράφηκαν. Οι ψηφιακές υπογραφές, επίσης, αποδεικνύουν την ταυτότητα αυτού που υπέγραψε. Καθώς µόνο ο κάτοχος του ιδιωτικού κλειδιού µπορεί να υπογράψει ένα κοµµάτι δεδοµένων, µπορεί να εξασφαλιστεί ότι εφόσον το κλειδί δεν έχει αλλοιωθεί ή κλαπεί, τα δεδοµένα έχουν υπογραφεί από το συγκεκριµένο χρήστη. 78

ΚΕΦΑΛΑΙΟ 3 ΛΕΙΤΟΥΡΓΙΕΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ Οι λειτουργίες του προγράµµατος, όπως προαναφέρθηκε, περιορίζονται στο κοµµάτι του ηλεκτρονικού εµπορίου. Με την εκκίνηση της εφαρµογής εµφανίζεται στη συσκευή το λογότυπο της εφαρµογής, το οποίο φαίνεται στην Εικόνα 3.1 και η εφαρµογή αυτόµατα µεταφέρει το χρήστη στο βασικό µενού του προγράµµατος, όπως φαίνεται στην Εικόνα 3.2. Εικόνα 2.1. Αρχική οθόνη Εικόνα 2.2. Βασικό µενού 79

3.1. Σύνδεση του mobile peer στο δίκτυο Η πρώτη ενέργεια του χρήστη προκειµένου να χρησιµοποιήσει την εφαρµογή είναι να συνδεθεί στο δίκτυο της JXTA. Επιλέγοντας την πρώτη εντολή από το βασικό µενού, η οποία εµφανίζεται µε τη λέξη Connect, εµφανίζεται στην οθόνη της φορητής συσκευής µια φόρµα, όπως φαίνεται στην Εικόνα 3.3. Σ αυτή τη φόρµα ο χρήστης έχει τη δυνατότητα να καθορίσει τα απαραίτητα στοιχεία που χρησιµοποιούνται προκειµένου να επιτευχθεί η σύνδεση. Εικόνα 3.3. Φόρµα σύνδεσης Όπως έχει προαναφερθεί, προκειµένου µια φορητή συσκευή να συνδεθεί στο δίκτυο της JXTA, πρέπει να συνδεθεί σε κάποιο relay το οποίο αναλαµβάνει και τις βασικές λειτουργίες εκ µέρους του φορητού peer. Έτσι λοιπόν, σ αυτή την οθόνη ο χρήστης έχει τη δυνατότητα να καθορίσει τη διεύθυνση του relay στο οποίο επιθυµεί να συνδεθεί, το port που θα χρησιµοποιεί προκειµένου να επικοινωνήσει µαζί του, καθώς επίσης και το όνοµα µε το οποίο θέλει να εµφανίζεται στο δίκτυο. Τα 80

στοιχεία που ορίζει ο χρήστης για τη σύνδεση αποθηκεύονται στη µνήµη της συσκευής και θα εµφανιστούν αυτόµατα στη φόρµα την επόµενη φορά που θα επιχειρήσει να συνδεθεί. Επιπλέον έχει τη δυνατότητα να αλλάζει τα στοιχεία της σύνδεσης κατά βούληση. Στη συνέχεια, και εφ όσον τα στοιχεία έχουν καθοριστεί, πατώντας το δεξί πλήκτρο, όπου αναγράφεται η λέξη connect στην οθόνη, εκκινεί τη διαδικασία της σύνδεσης. Η φορητή συσκευή στέλνει στο συγκεκριµένο relay µια αίτηση σύνδεσης. Στην αίτηση αυτή περιλαµβάνονται και διάφορα στοιχεία του peer, όπως είναι ο τύπος του, το όνοµά του και η ταυτότητά του. Την πρώτη φορά που θα συνδεθεί η συσκευή στο δίκτυο, λόγω του ότι δεν έχει ακόµη δική της ταυτότητα, θα στείλει στο relay κενή ταυτότητα. Το relay από τη στιγµή που θα λάβει την αίτηση σύνδεσης του φορητού peer θα επιχειρήσει να συνδέσει το φορητό peer στο δίκτυο της JXTA. Εφόσον η σύνδεση είναι επιτυχής το relay θα συνδέσει αυτόµατα το peer σε ένα συγκεκριµένο και προκαθορισµένο γκρουπ. Η οθόνη επιστρέφει στο αρχικό µενού και µέσα σε λίγα δευτερόλεπτα, εµφανίζεται στην οθόνη µια ειδοποίηση (alert) ενηµερώνοντας το χρήστη για την κατάσταση της σύνδεσης. Αυτή µπορεί να είναι είτε επιτυχής είτε αποτυχής σύνδεση όπως φαίνεται στις Εικόνες 3.4 και 3.5. Εάν η συσκευή είναι συνδεδεµένη στο δίκτυο και ο χρήστης πατήσει το πλήκτρο connect θα εµφανιστεί στην οθόνη της συσκευής µια ειδοποίηση ενηµερώνοντάς τον ότι η συσκευή είναι ήδη συνδεδεµένη, όπως φαίνεται στην Εικόνα 3.6. Αυτό είναι και ένας έµµεσος τρόπος για να µπορεί ο χρήστης ανά πάσα στιγµή να ελέγχει εάν είναι συνδεδεµένος µε το relay. 81

Εικόνα 3.4. Επιτυχής σύνδεση Εικόνα 3.5. Αποτυχής σύνδεση Εικόνα 3.6. Ειδοποίηση ότι η συσκευή είναι συνδεδεµένη 82

Την πρώτη φορά που ένα φορητό peer συνδέεται στο δίκτυο, το relay, µαζί µε το µήνυµα επιβεβαίωσης, στέλνει στο peer και την ταυτότητά του, η οποία αποθηκεύεται στη µνήµη της συσκευής και µένει πάντα σταθερή. Την επόµενη φορά που το peer θα στείλει αίτηση σύνδεσης στο δίκτυο της JXTA µέσω κάποιου relay, όχι απαραίτητα του ίδιου, µέσα στην αίτηση θα στείλει τη συγκεκριµένη ταυτότητά του. Η χρήση συγκεκριµένης ταυτότητας είναι βασικής σηµασίας για την εφαρµογή. Προκειµένου ένας χρήστης να εκτελέσει χρηµατική συναλλαγή µέσω της εφαρµογής θα πρέπει να έχει συγκεκριµένη ταυτότητα µέσω της οποίας θα ελέγχεται η αυθεντικότητα και η µοναδικότητά του ως χρήστη στο δίκτυο. Εδώ θα πρέπει να σηµειωθεί, ότι παρά το γεγονός ότι η εφαρµογή δηµιουργήθηκε µ αυτές τις προδιαγραφές, στην πραγµατικότητα λόγω κάποιων σφαλµάτων του κώδικα της JXME, ήταν αναγκαστική η χρησιµοποίηση δυο διαφορετικών ταυτοτήτων: µια για τη σύνδεσή του µε το relay, η οποία είναι διαφορετική σε κάθε σύνδεση, και µια για τις συναλλαγές,η οποία είναι σταθερή και προκαθορισµένη. Τέλος, µε το που λαµβάνει η φορητή συσκευή το µήνυµα επιβεβαίωσης για επιτυχή σύνδεση στο δίκτυο, ξεκινάει τη διαδικασία του poll στο relay. Όπως έχει ήδη αναφερθεί οι φορητές συσκευές δεν µπορούν να ανοίξουν ports για να ακούσουν ένα εισερχόµενο µήνυµα. Προκειµένου να λάβουν τα µηνύµατα που προορίζονται για αυτά, οι φορητές συσκευές ανακρίνουν το relay ανά τακτά χρονικά διαστήµατα για να ελέγξουν αν υπάρχει κάποιο µήνυµα σε αναµονή µέσω της διαδικασίας του polling. Η διαδικασία αυτή γίνεται σε ένα ανεξάρτητο νήµα εκτέλεσης(thread),ανά συγκεκριµένα χρονικά διαστήµατα και καθ όλη τη διάρκεια που η φορητή συσκευή είναι συνδεδεµένη στο δίκτυο. Έτσι η φορητή συσκευή µπορεί να λάβει οποιαδήποτε στιγµή µηνύµατα, είτε πρόκειται για µια απάντηση σε κάποια αίτηση του peer προς το relay, είτε πρόκειται για µια αίτηση αγοράς κάποιου προϊόντος που το φορητό peer έχει διαφηµίσει, που έχει σταλεί από κάποιο άλλο peer από το δίκτυο. Η 83

συσκευή µπορεί να λάβει µηνύµατα οποιαδήποτε στιγµή και τα χειρίζεται ανάλογα, εξετάζοντας τον τύπο του κάθε µηνύµατος. 3.2. Αποστολή διαφηµίσεων Πώληση προϊόντων Προκειµένου ένα peer να θέσει προς πώληση κάποιο προϊόν πρέπει πρώτα απ όλα να στείλει στο γκρουπ στο οποίο είναι συνδεδεµένο µια διαφήµιση του προϊόντος, η οποία θα περιέχει συγκεκριµένα στοιχεία. Για να στείλει ο χρήστης της φορητής συσκευής µια διαφήµιση στο δίκτυο πρέπει να επιλέξει από το βασικό µενού της εφαρµογής την εντολή Advertise, η οποία τον µεταφέρει αυτόµατα στη φόρµα µέσω της οποίας καθορίζει τα στοιχεία της διαφήµισης, όπως φαίνεται στην Εικόνα 3.7. Εικόνα 3.7. Φόρµα αποστολής διαφήµισης Μέσω αυτής της φόρµας ο χρήστης µπορεί να συντάξει µια διαφήµιση για κάποιο συγκεκριµένο προϊόν. Όπως φαίνεται και στην 84

παραπάνω εικόνα, έχει την επιλογή να καθορίσει το όνοµα του προϊόντος, µια σύντοµη περιγραφή του, την τιµή του, την ποσότητα του προϊόντος που είναι διαθέσιµη καθώς επίσης και το όνοµά του. Αυτά θα είναι και τα στοιχεία βάσει των οποίων θα γίνει η αναζήτηση από τα υπόλοιπα peer στο δίκτυο. Γι αυτό το λόγο είναι καλό ο χρήστης να επιλέγει σαν όνοµα κάτι απλό και µικρό το οποίο θα είναι το πιο αντιπροσωπευτικό για το συγκεκριµένο προϊόν, όπως επίσης και η περιγραφή του προϊόντος να είναι σύντοµη και περιεκτική. Στη συνέχεια, εφόσον ο χρήστης καθορίσει τα στοιχεία της διαφήµισης, πατώντας το δεξί πλήκτρο, όπου εµφανίζεται η λέξη Advertise στην οθόνη της συσκευής, αρχίζει η διαδικασία αποστολής της διαφήµισης. Πατώντας το πλήκτρο το πρόγραµµα συντάσσει ένα µήνυµα το οποίο περιέχει ως στοιχεία όλα αυτά τα οποία έχει καθορίσει ο χρήστης και επιπλέον την ηµεροµηνία τη στιγµή της αποστολής της διαφήµισης καθώς επίσης και την ταυτότητα του χρήστη, η οποία είναι µοναδική και δεν µπορεί να αλλαχτεί. Όλα αυτά τα στοιχεία µπαίνουν σε ένα µήνυµα µε κατάλληλη σειρά και κατάλληλες επικεφαλίδες (tags) προκειµένου να αναγνωριστούν από το relay τα δεδοµένα του κάθε στοιχείου. Εφόσον η συσκευή συντάξει το µήνυµα στη συνέχεια το στέλνει στο relay στο οποίο είναι συνδεδεµένη. Το relay αναλαµβάνει να κάνει το µεγαλύτερο µέρος της δουλειάς. Με το που παραλαµβάνει το µήνυµα µε αίτηση για αποστολή διαφήµισης ως πρώτη δουλειά εξάγει τα στοιχεία της διαφήµισης, τα οποία βρίσκονται µέσα στο µήνυµα. Το relay διακρίνει το κάθε στοιχείο του µηνύµατος µε τη βοήθεια των tags. Στη συνέχεια συντάσσει την πραγµατική διαφήµιση και την αποστέλλει στο δίκτυο. Η πραγµατική διαφήµιση βασίζεται στον τύπο των διαφηµίσεων που χρησιµοποιεί η εφαρµογή P2People, έτσι ώστε η διαφήµιση να µπορεί να ευρεθεί από οποιοδήποτε peer,στο σηµείο αυτό, η οθόνη της φορητής συσκευής κολλάει για µερικά δευτερόλεπτα µέχρι να λάβει από το relay το µήνυµα επιβεβαίωσης. Το µήνυµα αυτό µπορεί να είναι είτε επιτυχής 85

αποστολή της διαφήµισης είτε ανεπιτυχής, όπως φαίνεται παρακάτω στις εικόνες 3.8 και 3.9. Εάν η αποστολή της διαφήµισης ήταν ανεπιτυχής ο χρήστης θα πρέπει πρώτα απ όλα να βεβαιωθεί ότι είναι συνδεδεµένος στο δίκτυο και κατά δεύτερον να προσπαθήσει ξανά να αποστείλει τη διαφήµιση. Ο έλεγχος για το αν η συσκευή είναι συνδεδεµένη µπορεί να γίνει έµµεσα, όπως αναφέρθηκε και νωρίτερα, πηγαίνοντας στη φόρµα σύνδεσης και προσπαθώντας να συνδέσουµε τη συσκευή στο δίκτυο. Εάν η συσκευή είναι συνδεδεµένη θα εµφανιστεί ένα alarm στην οθόνη ενηµερώνοντας το χρήστη για την κατάσταση της σύνδεσης. Εικόνα 3.8. Επιτυχής αποστολή διαφήµισης Εικόνα 3.9. Αποτυχής αποστολή διαφήµισης Εάν η αποστολή της διαφήµισης είναι επιτυχής η συσκευή αποθηκεύει στη µνήµη της τη διαφήµιση µε τα πλήρη στοιχεία της. Ο χρήστης προκειµένου να δει τις διαφηµίσεις που έχει στείλει στο δίκτυο πρέπει να επιλέξει από το βασικό µενού της εφαρµογής την εντολή Advertised Items, η οποία αυτόµατα τον µεταφέρει σε µια οθόνη όπου εµφανίζονται οι διαφηµίσεις που έχει αποστείλει, οι οποίες εµφανίζονται 86

µε το όνοµά τους, όπως φαίνεται στην Εικόνα 3.10. Σ αυτή την οθόνη, στην κάτω δεξιά γωνία αναγράφεται η λέξη Options η οποία αντιστοιχεί στο δεξί πλήκτρο της συσκευής. Επιλέγοντας ο χρήστης µια διαφήµιση και πατώντας το πλήκτρο αυτό µεταφέρεται σε ένα µενού στο οποίο έχει τις επιλογές είτε να σβήσει τη συγκεκριµένη διαφήµιση από τη συσκευή είτε να δει τις λεπτοµέρειές της. Επιλέγοντας να σβήσει τη διαφήµιση από τη µνήµη του τηλεφώνου εµφανίζεται ένα µήνυµα επιβεβαίωσης της ενέργειας, στο οποίο ο χρήστης θα πρέπει να επιλέξει και πάλι τη διαγραφή της, αποφεύγοντας έτσι την κατά λάθος διαγραφή κάποιας διαφήµισης. Επιλέγοντας ο χρήστης να δει τις λεπτοµέρειες της διαφήµισης µεταφέρεται σε µια καινούρια οθόνη, όπως φαίνεται στην Εικόνα 3.11, όπου αναγράφονται όλα τα στοιχεία της διαφήµισης όπως τα είχε καθορίσει κατά την αποστολή της. Κάποιο peer το οποίο είναι συνδεδεµένο στο ίδιο γκρουπ µε το φορητό peer µπορεί να βρει τη διαφήµιση και να εκκινήσει τη διαδικασία αγοράς του προϊόντος, σύµφωνα µε το πρωτόκολλο που αναλύθηκε στο προηγούµενο κεφάλαιο. Σ αυτή την περίπτωση, και εφόσον έχει ελεγχθεί η αυθεντικότητα του αγοραστή, εµφανίζεται στην οθόνη της φορητής συσκευής ένα µήνυµα ειδοποίησης ότι κάποιος χρήστης επιθυµεί να αγοράσει συγκεκριµένο προϊόν από αυτόν, καθώς και το χρηµατικό ποσό που διαθέτει. Ο χρήστης της φορητής συσκευής, ο οποίος σ αυτήν την περίπτωση δρα ως πωλητής, έχει τη δυνατότητα είτε να απορρίψει την αίτηση, είτε να την αποδεχθεί. Εάν η αίτηση γίνει αποδεκτή, αποστέλλεται ένα µήνυµα επιβεβαίωσης στον αγοραστή, ο οποίος µε τη σειρά του στέλνει στον πωλητή ένα µήνυµα το οποίο περιέχει τα ψηφιακά χρήµατα. Η φορητή συσκευή, λαµβάνει αυτό το µήνυµα, ελέγχει την αυθεντικότητα του µηνύµατος, καθώς και την εγκυρότητα των ψηφιακών χρηµάτων και µέσω ενός alert, ο πωλητής ενηµερώνεται για την επιτυχή ή αποτυχή έκβαση της συναλλαγής. Κατά τη διάρκεια της συναλλαγής, ο χρήστης µπορεί να ελέγξει την εξέλιξή επιλέγοντας από το µενού την εντολή Digital 87

Money και από το υποµενού την εντολή Transactions. Η οθόνη που εµφανίζεται φαίνεται στην Εικόνα 3.17. Εικόνα 3.10. Λίστα διαφηµίσεων που έχουν αποσταλεί Εικόνα 3.11. Λεπτοµέρειες διαφήµισης 3.3. Εύρεση διαφηµίσεων Αγορά προϊόντων Προκειµένου ένα peer να αγοράσει κάποιο προϊόν το οποίο βρίσκεται στο δίκτυο πρέπει πρώτα απ όλα να ψάξει να βρει διαφηµίσεις για το προϊόν που τον ενδιαφέρει. Για να ψάξει να βρει διαφηµίσεις πρέπει να επιλέξει από το βασικό µενού της εφαρµογής την εντολή Search. Με την επιλογή της συγκεκριµένης εντολής, ο χρήστης µεταφέρεται σε µια φόρµα στην οποία µπορεί να καθορίσει τα στοιχεία της αναζήτησης, όπως φαίνεται στην Εικόνα 3.12. 88

Εικόνα 3.12. Φόρµα αναζήτησης διαφήµισης Ο χρήστης µέσα από αυτή τη φόρµα έχει την επιλογή να αναζητήσει προϊόντα είτε βάσει του ονόµατός του είτε βάσει της περιγραφής του. Όπως και στην αποστολή των διαφηµίσεων το όνοµα θα πρέπει να είναι πολύ χαρακτηριστικό του προϊόντος και η περιγραφή να είναι σύντοµη και περιεκτική. Επιπλέον, ο χρήστης έχει τη δυνατότητα να ορίσει τον αριθµό των απαντήσεων που επιθυµεί να λάβει. Για παράδειγµα, εάν ψάχνει για κάποιο προϊόν το οποίο είναι πολύ συνηθισµένο ενδέχεται οι απαντήσεις που θα λάβει να ανέλθουν και σε εκατοντάδες. Ορίζοντας τον αριθµό των απαντήσεων περιορίζει τον αριθµό των µηνυµάτων που θα λάβει, αποφεύγοντας έτσι το ενδεχόµενο να µπλοκάρει η εφαρµογή και διευκολύνοντας τη λειτουργία της συσκευής και της σύνδεσής του µε το relay. Εφόσον έχουν καθοριστεί τα στοιχεία της αναζήτησης, πατώντας το δεξί πλήκτρο, όπου στην οθόνη εµφανίζεται η λέξη Search εκκινεί τη διαδικασία της αναζήτησης. Η εφαρµογή της φορητής συσκευής παίρνει τα στοιχεία από τη φόρµα αναζήτησης και συντάσσει ένα µήνυµα αίτησης αναζήτησης διαφήµισης το οποίο περιέχει τα στοιχεία της αναζήτησης σε 89

συγκεκριµένη σειρά και µε κατάλληλα tags. Εφόσον συνταχθεί το µήνυµα αποστέλλεται στο relay, το οποίο αναλαµβάνει να κάνει την αναζήτηση εκ µέρους του φορητού peer. Το relay λαµβάνοντας την αίτηση αναζήτησης διαφήµισης πρώτα απ όλα εξάγει τα στοιχεία του µηνύµατος τα οποία αναγνωρίζει µε βοήθεια από τα tags που έχει το κάθε ένα. Παίρνοντας αυτά τα στοιχεία συντάσσει το πραγµατικό µήνυµα αναζήτησης διαφήµισης, το οποίο βασίζεται στον τύπο της αναζήτησης διαφηµίσεων που χρησιµοποιεί η εφαρµογή P2People και την αποστέλλει στο δίκτυο. Μ αυτό τον τρόπο το φορητό peer µπορεί να έχει πρόσβαση σε διαφηµίσεις που έχουν αποσταλεί από οποιοδήποτε peer είναι συνδεδεµένο στο ίδιο γκρουπ, είτε αυτό χρησιµοποιεί την εφαρµογή του P2People, είτε είναι peer που συνδέεται µέσω φορητής συσκευής και χρησιµοποιεί την εφαρµογή P2People για φορητές συσκευές. Εφόσον η αίτηση αναζήτησης διαφηµίσεων έχει αποσταλεί το relay µετά από λίγη ώρα αρχίζει να λαµβάνει απαντήσεις από το δίκτυο, εφόσον βέβαια υπάρχει το προς αναζήτηση προϊόν. Το relay όπως έχει προαναφερθεί δεν έχει τη δυνατότητα να στείλει τις απαντήσεις πίσω στο φορητό peer, για το οποίο προορίζονται οι απαντήσεις. Γι αυτό το λόγο αποθηκεύει τις απαντήσεις που του έρχονται και περιµένει µέχρι το φορητό peer να κάνει poll στο relay, το οποίο γίνεται ασύγχρονα ανά τακτά διαστήµατα, αναζητώντας τις διαφηµίσεις που προορίζονται για αυτό. Με το που κάνει το φορητό peer poll στο relay, εφόσον αυτό έχει λάβει απαντήσεις, αρχίζει να λαµβάνει τις διαφηµίσεις που προορίζονται για αυτό, οι οποίες θα περιορίζονται στον αριθµό απαντήσεων που έχει καθορίσει στη φόρµα αναζήτησης. Οι απαντήσεις αυτές έρχονται στη φορητή συσκευή ασύγχρονα, χωρίς να παγώνουν την εφαρµογή και επιτρέποντας έτσι στον χρήστη να εκτελεί ταυτόχρονα άλλες λειτουργίες. Η εφαρµογή σχεδιάστηκε κατ αυτόν τον τρόπο λόγω του ότι οι απαντήσεις συνήθως δεν έρχονται όλες µαζί και ενδέχεται η συσκευή να 90

λάβει απαντήσεις αρκετή ώρα µετά την αποστολή της αίτησης αναζήτησης. Οι απαντήσεις που λαµβάνει το φορητό peer στην αίτηση αναζήτησης διαφηµίσεων προστίθενται ασύγχρονα σε µια οθόνη της εφαρµογής της φορητής συσκευής. Για να µπορέσει ο χρήστης να δει τις απαντήσεις που έλαβε θα πρέπει από το κεντρικό µενού να επιλέξει την εντολή Replies. Αυτή η εντολή τον µεταφέρει στην οθόνη όπου εµφανίζονται οι απαντήσεις επιγραµµατικά βάσει του ονόµατος του προϊόντος και του ονόµατος του χρήστη που τις έχει δηµοσιεύσει, όπως φαίνεται παρακάτω στην Εικόνα 3.13. Εικόνα 3.13. Οθόνη εµφάνισης διαφηµίσεων που έχουν βρεθεί Επιλέγοντας ο χρήστης µια διαφήµιση και πατώντας το δεξί πλήκτρο, όπου στην οθόνη αναγράφεται η λέξη Details έχει τη δυνατότητα να δει τις λεπτοµέρειες για τη συγκεκριµένη διαφήµιση. Οι λεπτοµέρειες αυτές περιλαµβάνουν όλα τα στοιχεία που περιέχει µια διαφήµιση προϊόντος, δηλαδή το όνοµά του, την περιγραφή του, την ποσότητα που είναι διαθέσιµη, την τιµή του προϊόντος, το όνοµα του 91

χρήστη που τη δηµοσίευσε καθώς και την ηµεροµηνία δηµοσίευσής της, όπως φαίνεται στην Εικόνα 3.14. Εικόνα 3.14. Λεπτοµέρειες διαφήµισης Οι διαφηµίσεις που βρίσκει το φορητό peer στο δίκτυο δεν αποθηκεύονται στη συσκευή. Κάθε φορά που κλείνει η εφαρµογή οι διαφηµίσεις χάνονται και ο χρήστης θα πρέπει να ξαναστείλει την αίτηση αναζήτησης διαφηµίσεων. Η εφαρµογή για τις φορητές συσκευές σχεδιάστηκε κατ αυτόν τον τρόπο λόγω του ότι η διαθέσιµη µνήµη της είναι µικρή όπως επίσης και η ισχύς επεξεργασίας της. Εάν οι διαφηµίσεις αποθηκευόταν στη συσκευή πολύ γρήγορα θα εµφανιζόταν πρόβληµα έλλειψης χώρου αποθήκευσης και δυσκολία στην επεξεργασία των δεδοµένων της συσκευής. Ο χρήστης της φορητής συσκευής εφόσον βρει διαφηµίσεις για κάποιο προϊόν που ενδιαφέρεται και αποφασίσει ποιο από αυτά θέλει µπορεί να ξεκινήσει τη διαδικασία της αγοράς του. ιαλέγοντας από τη λίστα των διαφηµίσεων αυτό που επιθυµεί και πατώντας το πλήκτρο Details µεταφέρεται στην οθόνη όπου αναγράφονται οι λεπτοµέρειες της 92

διαφήµισης του συγκεκριµένου προϊόντος. Από εκεί πατώντας το δεξί πλήκτρο της συσκευής όπου αναγράφεται η λέξη Buy µεταφέρεται στην οθόνη όπου εµφανίζονται τα ψηφιακά χρήµατα (scrips), όπως φαίνεται στην Εικόνα 3.18, που είναι αποθηκευµένα στη συσκευή. Εκεί διαλέγοντας το κατάλληλο scrip, το οποίο αντιστοιχεί στο χρηµατικό ποσό του προϊόντος που επιθυµεί να αγοράσει, εκκινεί τη διαδικασία αγοράς, η οποία βασίζεται στο πρωτόκολλο συναλλαγών που αναλύθηκε στο προηγούµενο κεφάλαιο. Με την εκκίνηση της διαδικασίας αγοράς, συντάσσεται το κατάλληλο µήνυµα, βάσει του πρωτοκόλλου, το οποίο στέλνεται στον πωλητή. Εάν αυτός αποδεχθεί την αγορά, στέλνει ένα µήνυµα επιβεβαίωσης, το οποίο εµφανίζεται στην οθόνη της φορητής συσκευής του αγοραστή µέσω ενός alert, που τον προτρέπει είτε να αποδεχθεί τη συναλλαγή είτε να την ακυρώσει. Εάν την αποδεχθεί, τότε στέλνεται πίσω στον πωλητή το κατάλληλο µήνυµα, το οποίο περιέχει τα ψηφιακά χρήµατα και η συναλλαγή ολοκληρώνεται. Εάν ο αγοραστής επιθυµεί να ελέγξει την κατάσταση της συναλλαγής, αυτό µπορεί να το κάνει επιλέγοντας από το µενού την εντολή Digital Money και από το υποµενού την εντολή Transaction. Εκεί εµφανίζεται η εξέλιξη της συναλλαγής, όπως φαίνεται στην Εικόνα 3.17. 93

3.4. Έλεγχος και αγορά ψηφιακών χρηµάτων Επιλέγοντας ο χρήστης από το βασικό µενού την εντολή Digital Money µεταφέρεται σε ένα υποµενού µε τέσσερις διαφορετικές εντολές, όπως φαίνεται στην Εικόνα 3.15. Από εδώ µπορεί να εκτελέσει οποιαδήποτε λειτουργία σχετίζεται µε τη διαχείριση των ψηφιακών χρηµάτων. Είναι βασικό να αναφερθεί ότι προκειµένου να έχει ο χρήστης τη δυνατότητα να διαχειρίζεται ψηφιακά χρήµατα θα πρέπει να έχει ήδη χρηµατικό λογαριασµό στην ηλεκτρονική τράπεζα που χρησιµοποιεί η εφαρµογή P2People. Μ αυτό τον τρόπο εξασφαλίζεται η ασφάλεια στο δίκτυο, καθώς στην τράπεζα υπάρχουν τα πλήρη στοιχεία για κάθε peer και το κάθε ένα έχει µοναδική ταυτότητα η οποία είναι δηλωµένη στην τράπεζα, και δεν µπορεί να την αλλάξει ο χρήστης. Εικόνα 3.15. Υποµενού επιλογής ψηφιακών χρηµάτων 94