The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by nic3ts, 2017-07-28 08:56:39

Katanemhmena

Katanemhmena

University of the Aegean, Samos, 2015-2016
Information & Communication Systems Engineering - ICSD

Κατανεμημένα Συστήματα

1η ομαδική εργασία

Νίκος Στεργιόπουλος Νίκος Τρίτσης Γιώργος Φιωτάκης
(icsd13220)
(icsd11154) (icsd11162) - lead



Εισαγωγή :

Το περιεχόμενο της 1η ομαδικής εργασίας ήταν η δημιουργία ενός announcements system.
Με τον όρο announcement system εννοούμε μια ολοκληρωμένη εφαρμογή που χωρίζεται
σε 2 κομμάτια.

Στο κομμάτι του server, που ρόλος του είναι να υποστηρίζει τις εφαρμογές των πελατών, να
κρατάει και να αποθηκεύει χρήσιμες ή/και απαραίτητες πληροφορίες της εφαρμογής.

Και στο κομμάτι του client, που υλοποιείται ένα γραφικό περιβάλλον για την διευκόλυνση
του τελικού χρήστη.

Συνολικά δημιουργήθηκαν 6 αρχεία πηγαίου κώδικα (java), και στη συνέχεια
διαμοιράστηκαν στα 2 παραπάνω κομμάτια. Πέρα απ’τον πηγαίο κώδικα, παραδοτέα είναι
και η παρούσα αναφορά που περιγράφει συνοπτικά σχεδιαστικές επιλογές, προβλήματα
και θεωρητικά στοιχεία της εργασίας.

Σημείωση:
Για την καλύτερη δυνατή ανάγνωση της εργασίας, προτείνουμε Adobe Acrobat με τις
ρυθμίσεις View -> Page Display -> Two-Page View & Show Cover Page in Two-Page View
σε Read Mode (Ctrl + H)

1. Σχεδιαστικές αποφάσεις

• Το connection των sockets μεταξύ του server και του client ανοίγει και κλείνει συνεχώς
όταν χρειάζεται (στις περιπτώσεις που έχουμε αίτηση επικοινωνίας δηλαδή, απ’το
πρόγραμμα του πελάτη), αντί να είναι μόνιμα ανοιχτό.

• Χρησιμοποιούμε 2 κλάσεις (request-response) για την επικοινωνία server client (μιας και
πρέπει να ανταλλάσουν μόνο αντικείμενα), των οποίων τα instances (objects) μεταφέρουν
πληροφορίες.

• Για να είναι εφικτή η χρήση της εφαρμογής απο πολλαπλούς client έχει γίνει χρήση
threads στην κλάση του server

2. Πρωτόκολλο

Το πρωτόκολλο που χρησιμοποιήθηκε κάνει χρήση των κλάσεων Request & Response που
δημιουργήσαμε προκειμένου να ανταλλάσουμε πληροφορίες.
Και το request και το response έχουν overloaded constructors προκειμένου να μπορούν να
στέλνουν μηνύματα για την “αίτηση” ή την “απάντηση” αλλά και κάποιο άλλο αντικείμενο την
ίδια στιγμή.

Συνοπτικά, όποια ενέργεια και αν θέλουμε να κάνουμε, έχουμε:

REQUEST: START
RESPONSE: WAITING
REQUEST: WHILE RUNNING (USER CHOICE)
RESPONSE: OK
REQUEST: END

Όπου με το START σηματοδοτείται η έναρξη της επικοινωνίας, με το WAITING ο server μας
στέλνει μήνυμα οτι περιμένει να στείλουμε την “αίτηση” μας. Μόλις στείλουμε την αίτηση μας
(CREATE, EDIT, DELETE, DISPLAY) ο server μας απαντάει OK και όταν ο πελάτης λάβει το OK,
στέλνει στον server ένα request με μήνυμα END προκειμένου να σηματοδοτήσει το τέλος της
επικοινωνίας.

3. Συνθήκες ανταγωνισμού

Συνθήκες ανταγωνισμού προκύπτουν όταν παραπάνω απο ένας client συνδέονται στον server
προσπαθοντας να εκτελέσουν μια διεργασία η οποία έχει ως προαπαιτούμενο προηγούμενη
εκτέλεση διαφορετικής διεργασίας . πχ: Όταν ένας Client συνδέεται στον Server μας και κάνει
edit ένα announcement ενώ ταυτόχρονα ένας άλλος client εχει κάνει connect με request dis-
play , πρέπει ο client με το request display να περιμένει τον έταιρο client να κάνει το edit.

4. Οδηγίες Εκτέλεσης

Η εκτέλεση της εφαρμογής είναι αρκετά απλή. Στην περίπτωση που θέλουμε να τεστάρουμε
και την υλοποίηση του server και του client στον ίδιο υπολογιστή, πρέπει να τρέξουμε το
πρόγραμμα του server και έπειτα τόσες φορές το πρόγραμμα του πελάτη, όσοι και οι πελάτες
που θέλουμε να έχουμε ενεργούς.

Η εφαρμογή του πελάτη έχει 3 κουμπιά, ένα για την προσθήκη ανακοίνωσης, ένα για την
επεξεργασία (και διαγραφή), και ένα για να μπορούμε να δούμε τις ανακοινώσεις που
υπάρχουν στο σύστημα.

Τα πρώτα 2 κουμπιά, μόλις πατηθούν, ανοίγει ένα interface στο οποίο πρέπει να κάνουμε
login (τα 2 πρώτα textfields είναι username & pass) ενώ ακριβώς απο κάτω υπάρχει ένα
κουμπάκι login.

Μόλις πραγματοποιηθεί το login κάποιου χρήστη, ενεργοποιούνται τα πεδία κάτω απ’το login,
επιτρέποντας στον χρήστη να προσθέσει ή/και να επεξεργαστεί announcement.

5. Θέματα Ασφάλειας

• Το πρώτο ‘προβλημα’ ασφάλειας που εντοπίσαμε ειναι στο log-in. Οπου δεν υπάρχει
κάποια ασφάλεια ως αναφωρά τον τρόπο με τον οποίο κρατούντε τα αρχεία δηλαδή σε
ένα απλο τχτ αρχειο χωρις encryption.

• Ένα ακομά θεμα ασφάλειας θα μπορούσε να ειναι log-in της εφαρμογής ένας πιο
εξοικειωμένος χρήστης θα μπορούσε να εκμεταλευτεί το τον τροπο που εχει δημιουργηθεί
το log-in και να μπορει να ‘πειράξει’ όλα τα announcement .

• Ακόμα το πρωτόκολλο εποικοινωνίας θα μπορούσε να ειναι ένα θεμα ασφάλειας λόγω του
οτι είναι αρκετά απλο χωρις κωδικοποίηση, να γίνει ανταλλαγή απλών αντικειμένων αν
μπορέσει κάποιος να βρει το line που γινετε η ανταλαγή αυτών των πακέτων θα μπορουσε
ευκολα να επιρεάσει την συνομιλία.

6. Screenshots




Click to View FlipBook Version