sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

209
DISTRIBUTED SYSTEMS CONCEPTS AND DESIGN Α Book by George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair ΟΔΗΓΟΣ ΜΕΛΕΤΗΣ ΓΙΑ ΤΙΣ ΑΝΑΓΚΕΣ ΤΗΣ ΣΔΥ50 Χρήστος Γκουμόπουλος – Δαμιανός Γαβαλάς 2 η Έκδοση Πάτρα 2011

description

summary

Transcript of sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

Page 1: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

DISTRIBUTED SYSTEMS CONCEPTS AND DESIGN

Α Book by

George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair

ΟΔΗΓΟΣ ΜΕΛΕΤΗΣ ΓΙΑ ΤΙΣ ΑΝΑΓΚΕΣ ΤΗΣ ΣΔΥ50

Χρήστος Γκουμόπουλος – Δαμιανός Γαβαλάς

2η Έκδοση

Πάτρα 2011

Page 2: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

2

Page 3: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

3

Πρόλογος

Ο παρών Οδηγός Μελέτης δημιουργήθηκε για τις ανάγκες της Θεματικής Ενότητας ΣΔΥ50 «Βασικές

τεχνολογίες δικτύων και λογισμικού» του Προγράμματος Μεταπτυχιακών Σπουδών (ΠΜΣ)

«Τεχνολογία Υλικού και Λογισμικού: Σχεδίαση και Ανάπτυξη Διάχυτων Συστημάτων Υπολογισμού»

(ΣΔΥ) της Σχολής Θετικών Επιστημών και Τεχνολογίας (ΣΘΕΤ) του Ελληνικού Ανοικτού Πανεπιστημίου

(ΕΑΠ).

Ο Οδηγός Μελέτης αποσκοπεί στο να βοηθήσει τους φοιτητές του ΕΑΠ στη μελέτη του βιβλίου

“Distributed Systems: Concepts and Design”, 5η Έκδοση (των G. Coulouris, J. Dollimore, T. Kindberg, G.

Blair), το οποίο αποτελεί μέρος του εκπαιδευτικού υλικού της ΣΔΥ50. Δεν αποσκοπεί στο να

υποκαταστήσει το εν λόγω βιβλίο, ούτε αποτελεί διεξοδική μετάφραση αυτού. Παραθέτει τα

κυριότερα σημεία των κεφαλαίων του βιβλίου, τα οποία έχουν συμπληρωθεί με Σκοπό,

Προσδοκώμενα αποτελέσματα, Λέξεις-κλειδιά, Δραστηριότητες και Ασκήσεις αυτοαξιολόγησης,

σύμφωνα με τα πρότυπα ανάπτυξης εκπαιδευτικού υλικού που εφαρμόζει το ΕΑΠ.

Η τρέχουσα έκδοση του Οδηγού Μελέτης ακολουθεί το χρονοδιάγραμμα μελέτης της ΣΔΥ50 του

ακαδημαϊκού έτους 2010-11. Τα κεφάλαια του βιβλίου παρατίθενται σύμφωνα με τη σειρά που

πρέπει να μελετηθούν, διατηρώντας όμως την αρίθμηση του βιβλίου.

Συστήνεται η μελέτη του Οδηγού παράλληλα με το βιβλίο, η συστηματική μελέτη του βιβλίου και της

βιβλιογραφίας και η επίλυση των δραστηριοτήτων και ασκήσεων του Οδηγού.

Τυχόν υποδείξεις ή διορθώσεις που αποσκοπούν στη βελτίωση του παρόντος Οδηγού είναι

ευπρόσδεκτες από τους συγγραφείς αυτού.

Χ. Γκουμόπουλος *, Δ. Γαβαλάς

*Λέκτορας, Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων, Παν/μιο Αιγαίου

ΣΕΠ ΣΔΥ50

† Επίκουρος Καθηγητής, Τμήμα Πολιτισμικής Τεχνολογίας & Επικοινωνίας, Παν/μιο Αιγαίου

Συντονιστής & ΣΕΠ ΣΔΥ50

Page 4: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

4

Page 5: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

5

Περιεχόμενα

ΚΕΦΑΛΑΙΟ 1 : Χαρακτηριστικά Κατανεμημένων Συστημάτων........................................................... 13

Σκοπός .................................................................................................................................................. 13

Προσδοκώμενα αποτελέσματα ............................................................................................................. 13

Έννοιες κλειδιά ..................................................................................................................................... 13

1. Εισαγωγικές παρατηρήσεις ........................................................................................................... 13

2. Παραδείγματα κατανεμημένων συστημάτων ................................................................................ 14

3. Τάσεις στα κατανεμημένα συστήματα .......................................................................................... 15

4. Έμφαση στον διαμοιρασμό πόρων ................................................................................................ 16

5. Προκλήσεις .................................................................................................................................... 17

5.1 Ετερογένεια ........................................................................................................................... 17

5.2 Ανοικτότητα ........................................................................................................................... 18

5.3 Ασφάλεια ............................................................................................................................... 18

5.4 Επεκτασιμότητα ..................................................................................................................... 18

5.5 Αντιμετώπιση σφαλμάτων ..................................................................................................... 19

5.6 Ταυτοχρονισμός ..................................................................................................................... 19

5.7 Διαφάνεια.............................................................................................................................. 19

5.8 Ποιότητα υπηρεσιών ............................................................................................................. 20

6. Μελέτη περίπτωσης: Παγκόσμιος Ιστός ......................................................................................... 21

7. Επανάληψη ................................................................................................................................... 23

ΚΕΦΑΛΑΙΟ 2 : Μοντέλα Συστημάτων ............................................................................................... 24

Σκοπός .................................................................................................................................................. 24

Προσδοκώμενα αποτελέσματα ............................................................................................................. 24

Έννοιες κλειδιά ..................................................................................................................................... 24

1. Εισαγωγικές παρατηρήσεις ........................................................................................................... 24

2. Φυσικά μοντέλα ............................................................................................................................ 25

3. Αρχιτεκτονικά μοντέλα .................................................................................................................. 26

3.1 Στρώματα λογισμικού ............................................................................................................ 26

3.2 Αρχιτεκτονικές συστημάτων................................................................................................... 28

3.3 Παραλλαγές ........................................................................................................................... 30

Page 6: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

6

3.4 Διεπαφές και αντικείμενα ...................................................................................................... 33

3.5 Σχεδιαστικές απαιτήσεις για κατανεμημένες αρχιτεκτονικές ................................................. 34

4. Βασικά μοντέλα ............................................................................................................................. 36

4.1 Μοντέλο αλληλεπίδρασης ..................................................................................................... 37

4.2 Μοντέλο αστοχιών ................................................................................................................. 38

4.3 Μοντέλο ασφάλειας .............................................................................................................. 40

5. Επανάληψη ................................................................................................................................... 40

ΚΕΦΑΛΑΙΟ 3 : Δικτύωση και Διαδικτύωση ........................................................................................ 42

Σκοπός .................................................................................................................................................. 42

Προσδοκώμενα αποτελέσματα ............................................................................................................. 42

Έννοιες κλειδιά ..................................................................................................................................... 42

1. Εισαγωγή ....................................................................................................................................... 42

1.1. Θέματα δικτύωσης κατανεμημένων συστημάτων .................................................................. 43

2. Τύποι δικτύων ............................................................................................................................... 45

3. Αρχές δικτύωσης ........................................................................................................................... 46

3.1. Εκπομπή πακέτου .................................................................................................................. 46

3.2. Ροές δεδομένων .................................................................................................................... 46

3.3. Σχήματα μεταγωγής ............................................................................................................... 46

3.4. Πρωτόκολλα .......................................................................................................................... 47

3.5. Δρομολόγηση ........................................................................................................................ 49

3.6. Έλεγχος συμφόρησης ............................................................................................................. 50

3.7. Διασυνδεσιμότητα ................................................................................................................. 50

4. Internet πρωτόκολλα ..................................................................................................................... 51

4.1. IP διευθυνσιοδότηση ............................................................................................................. 52

4.2. To πρωτόκολλο IP .................................................................................................................. 53

4.3. IP δρομολόγηση ..................................................................................................................... 53

4.4. IP έκδοση 6 (IPv6) .................................................................................................................. 56

4.5. Κινητό IP (MobileIP) ............................................................................................................... 57

4.6. TCP και UDP ........................................................................................................................... 57

4.7. Ονόματα περιοχής (domain names) ....................................................................................... 59

4.8. Firewalls ................................................................................................................................. 60

5. Μελέτες περίπτωσης: Ethernet, WiFi, Bluetooth και ATM.............................................................. 61

Page 7: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

7

5.1. Ethernet ................................................................................................................................. 62

5.2. ΙΕΕΕ 802.11 (WiFi) WLAN........................................................................................................ 65

5.3. ΙΕΕΕ 802.15.1 Bluetooth WPAN .............................................................................................. 66

5.4. Δίκτυα ασύγχρονου τρόπου μεταφοράς (asynchronous transfer mode, ATM) ....................... 67

6. Επανάληψη ................................................................................................................................... 68

ΚΕΦΑΛΑΙΟ 4 : Διαδιεργασιακή Επικοινωνία ..................................................................................... 69

Σκοπός .................................................................................................................................................. 69

Προσδοκώμενα αποτελέσματα ............................................................................................................. 69

Έννοιες κλειδιά ..................................................................................................................................... 70

1. Εισαγωγικές παρατηρήσεις ........................................................................................................... 70

2. API για Internet πρωτόκολλα ......................................................................................................... 71

2.1. Τα χαρακτηριστικά της διαδιεργασιακής επικοινωνίας .......................................................... 71

2.2. Sockets .................................................................................................................................. 72

2.3. UDP datagram επικοινωνία .................................................................................................... 74

2.4. TCP stream επικοινωνία ......................................................................................................... 77

3. Εξωτερική αναπαράσταση δεδομένων και μορφοποίηση αποστολής ............................................ 83

3.1. CORBA’s Common Data Representation (CDR) ....................................................................... 83

3.2. Java object serialization ......................................................................................................... 84

3.3. Εxtensible Markup Language (XML) ........................................................................................ 84

3.4. Αναφορές απομακρυσμένων αντικειμένων ............................................................................ 85

4. Πολυεκπομπική επικοινωνία ......................................................................................................... 85

4.1. IP multicast – μια υλοποίηση ομαδικής επικοινωνίας ............................................................ 86

4.2. Αξιοπιστία και διάταξη στην πολυεκπομπή ............................................................................ 87

5. Εικονικοποίηση Δικτύου: Υπερκείμενα δίκτυα ............................................................................... 87

5.1. Υπερκείμενα δίκτυα ............................................................................................................... 88

5.2. Skype: Ένα παράδειγμα υπερκείμενου δικτύου ..................................................................... 88

6. Μελέτη περίπτωσης: MPI .............................................................................................................. 89

7. Επανάληψη ................................................................................................................................... 89

ΚΕΦΑΛΑΙΟ 5 : Απομακρυσμένη Επίκληση ........................................................................................ 91

Σκοπός .................................................................................................................................................. 91

Προσδοκώμενα αποτελέσματα ............................................................................................................. 91

Έννοιες κλειδιά ..................................................................................................................................... 92

Page 8: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

8

1. Εισαγωγικές παρατηρήσεις ......................................................................................................... 92

2. Πρωτόκολλα αίτησης-απόκρισης ................................................................................................... 92

3. Κλήση απομακρυσμένης διαδικασίας ......................................................................................... 95

3.1. Σχεδιαστικά ζητήματα στο RPC .............................................................................................. 95

3.2. Υλοποίηση του RPC ................................................................................................................ 97

3.3 Μελέτη περίπτωσης: Sun RPC ................................................................................................ 98

4. Κλήση απομακρυσμένης μεθόδου ............................................................................................... 98

4.1 Σχεδιαστικά ζητήματα στο RMI .............................................................................................. 99

4.2 Υλοποίηση του RMI .............................................................................................................. 101

4.3 Κατανεμημένη αποκομιδή απορριμμάτων ........................................................................... 104

5. Μελέτη περίπτωσης: Java RMI ................................................................................................... 104

5.1 Υλοποίηση εφαρμογών με Java RMI ..................................................................................... 106

5.2 Σχεδιασμός και υλοποίηση του Java RMI ............................................................................. 107

6. Επανάληψη ................................................................................................................................ 108

ΚΕΦΑΛΑΙΟ 7 : Υποστήριξη Λειτουργικού Συστήματος ..................................................................... 110

Σκοπός ................................................................................................................................................ 110

Προσδοκώμενα αποτελέσματα ........................................................................................................... 110

Έννοιες κλειδιά ................................................................................................................................... 111

1. Εισαγωγικές παρατηρήσεις ....................................................................................................... 111

2. Το στρώμα Λειτουργικού Συστήματος ...................................................................................... 112

3. Προστασία .................................................................................................................................. 113

4. Διεργασίες και νήματα ............................................................................................................... 114

4.1 Χώροι διευθύνσεων ............................................................................................................. 114

4.2 Δημιουργία μιας νέας διεργασίας ........................................................................................ 115

4.3 Νήματα ................................................................................................................................ 116

5. Επικοινωνία και επίκληση ......................................................................................................... 122

5.1 Απόδοση μηχανισμού επίκλησης ......................................................................................... 123

5.2 Ασύγχρονη λειτουργία (Asynchronous operation) ................................................................ 125

6. Αρχιτεκτονική ΛΣ ....................................................................................................................... 125

7. Eικονικοποίηση στο επίπεδο ΛΣ ................................................................................................ 126

7.1 Εικονικοποίηση συστήματος ................................................................................................ 126

7.2 Μελέτη περίπτωσης: Η προσέγγιση Xen στην εικονικοποίηση συστήματος ......................... 127

Page 9: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

9

8. Επανάληψη ................................................................................................................................ 128

ΚΕΦΑΛΑΙΟ 8 : Κατανεμημένα Αντικείμενα και Ψηφίδες Λογισμικού .............................................. 130

Σκοπός ................................................................................................................................................ 130

Προσδοκώμενα αποτελέσματα ........................................................................................................... 130

Έννοιες κλειδιά ................................................................................................................................... 130

1. Εισαγωγικές παρατηρήσεις ....................................................................................................... 131

2. Κατανεμημένα αντικείμενα ....................................................................................................... 132

3. Μελέτη περίπτωσης: CORBA ..................................................................................................... 133

3.1 CORBA RMI .......................................................................................................................... 134

3.2 H αρχιτεκτονική της CORBA ................................................................................................. 137

3.3 Αναφορές απομακρυσμένων αντικειμένων της CORBA ........................................................ 139

3.4 Υπηρεσίες της CORBA .......................................................................................................... 139

3.5 Υλοποίηση εφαρμογών με CORBA ....................................................................................... 140

4. Από τα αντικείμενα στις ψηφίδες λογισμικού .......................................................................... 145

5. Μελέτες περίπτωσης: Enterprise JavaBeans και Fractal .......................................................... 148

5.1 Enterprise JavaBeans ........................................................................................................... 149

5.2 Fractal .................................................................................................................................. 151

6. Επανάληψη ................................................................................................................................ 153

ΚΕΦΑΛΑΙΟ 9: Υπηρεσίες Ιστού ....................................................................................................... 154

Σκοπός ................................................................................................................................................ 154

Προσδοκώμενα αποτελέσματα ........................................................................................................... 154

Έννοιες κλειδιά ................................................................................................................................... 155

1. Εισαγωγή ..................................................................................................................................... 155

2. Υπηρεσίες ιστού .......................................................................................................................... 155

2.1 SOAP .................................................................................................................................... 158

2.2 Σύγκριση υπηρεσιών ιστού και μοντέλου κατανεμημένων αντικειμένων ............................. 159

2.3 H χρήση του SOAP με Java ................................................................................................... 160

2.4 Σύγκριση των υπηρεσιών ιστού με CORBA ........................................................................... 163

3. Περιγραφές υπηρεσιών και IDL για υπηρεσίες ιστού ................................................................... 164

4. Μια υπηρεσία καταλόγου για χρήση με υπηρεσίες ιστού ............................................................ 165

5. XML ασφάλεια ............................................................................................................................. 167

6. Συντονισμός υπηρεσιών ιστού ..................................................................................................... 169

Page 10: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

10

7. Μελέτη περίπτωσης: το πλέγμα .................................................................................................. 170

7.1 Το παγκόσμιο τηλεσκόπιο – μια εφαρμογή πλέγματος ........................................................ 170

7.2 Τα χαρακτηριστικά μιας οικογένειας επιστημονικών εφαρμογών απαιτητικών σε δεδομένα

170

7.3 Η αρχιτεκτονική ανοικτών υπηρεσιών πλέγματος ................................................................ 171

7.4 Κάποια παραδείγματα εφαρμογών πλέγματος .................................................................... 171

7.5 Η εργαλειοθήκη Globus ....................................................................................................... 171

8. Περίληψη .................................................................................................................................... 172

ΚΕΦΑΛΑΙΟ 10: Διομότιμα Συστήματα ............................................................................................. 173

Σκοπός ................................................................................................................................................ 173

Προσδοκώμενα αποτελέσματα ........................................................................................................... 173

Έννοιες κλειδιά ................................................................................................................................... 173

1. Εισαγωγή ..................................................................................................................................... 173

2. Το Napster και η κληρονομιά του ................................................................................................ 176

3. Διομότιμο ενδιάμεσο λογισμικό .................................................................................................. 177

4. Υπερκείμενες δρομολογήσεις ...................................................................................................... 178

5. Μελέτες περίπτωσης υπερκείμενης δρομολόγησης: Pastry, Tapestry .......................................... 180

5.1 Pastry ................................................................................................................................... 180

5.2 Tapestry ............................................................................................................................... 184

6. Μελέτες περιπτώσεων εφαρμογών: Squirrel, OceanStore, Ivy ..................................................... 184

6.1 Προσωρινή web αποθήκευση Squirrel ................................................................................. 185

6.2 Αποθήκη αρχείων OceanStore ............................................................................................. 186

6.3 Σύστημα αρχείων Ivy............................................................................................................ 187

7. Περίληψη .................................................................................................................................... 188

ΚΕΦΑΛΑΙΟ 19: Κινητός και Διάχυτος Υπολογισμός ......................................................................... 189

Σκοπός ................................................................................................................................................ 189

Προσδοκώμενα αποτελέσματα ........................................................................................................... 189

Έννοιες κλειδιά ................................................................................................................................... 190

1. Εισαγωγή ..................................................................................................................................... 190

1.1 Ευμετάβλητα συστήματα ..................................................................................................... 191

2. Συσχέτιση .................................................................................................................................... 193

2.1 Υπηρεσίες ανακάλυψης ....................................................................................................... 194

Page 11: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

11

2.2 Φυσική συσχέτιση ............................................................................................................... 196

3. Διαλειτουργία .............................................................................................................................. 196

3.1 Δεδομενο-στραφής προγραμματισμός για ευμετάβλητα συστήματα ................................... 197

3.2 Έμμεσες συσχετίσεις και χαλαρή κατάσταση ....................................................................... 198

4. Αίσθηση και επίγνωση πλαισίου .................................................................................................. 199

4.1 Αισθητήρες .......................................................................................................................... 199

4.2 Αρχιτεκτονικές αίσθησης ..................................................................................................... 200

4.3 Αίσθηση θέσης .................................................................................................................... 202

5. Ασφάλεια και ιδιωτικότητα ......................................................................................................... 203

5.1 Υπόβαθρο ............................................................................................................................ 203

5.2 Κάποιες λύσεις..................................................................................................................... 204

6. Προσαρμογή ................................................................................................................................ 206

6.1 Προσαρμογή περιεχομένου με επίγνωση πλαισίου ............................................................. 206

6.2 Προσαρμογή σε μεταβαλλόμενους πόρους συστήματος ..................................................... 207

7. Μελέτη περίπτωσης: το σύστημα Cooltown ................................................................................ 208

7.1 Παρουσίες ιστού .................................................................................................................. 208

7.2 Διαλειτουργία και το πρωτόκολλο ‘eSquirt’ ......................................................................... 209

Page 12: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

12

Page 13: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

13

ΚΕΦΑΛΑΙΟ 1 : Χαρακτηριστικά

Κατανεμημένων Συστημάτων

Σκοπός Ο σκοπός του κεφαλαίου είναι να σας εισαγάγει στο πεδίο των κατανεμημένων συστημάτων, δίνοντας

παραδείγματα τέτοιων συστημάτων, προσδιορίζοντας το βασικό κίνητρο για την κατασκευή τους και

καταγράφοντας τις προκλήσεις που είναι σύμφυτες με την ανάπτυξή τους.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Δώσετε τον ορισμό των κατανεμημένων συστημάτων

• Περιγράψετε τρία χαρακτηριστικά των κατανεμημένων συστημάτων

• Αναφέρετε παραδείγματα κατανεμημένων συστημάτων

• Αναφέρετε το βασικό κίνητρο για την ανάπτυξη των κατανεμημένων συστημάτων και τις επτά

προκλήσεις που αναδύονται κατά την διαδικασία αυτή

• Περιγράψετε τις έννοιες ετερογένεια, ανοικτότητα, ασφάλεια, επεκτασιμότητα, αντιμετώπιση

σφαλμάτων, ταυτοχρονισμός και διαφάνεια σε σχέση με την ανάπτυξη των κατανεμημένων

συστημάτων

• Αναφέρετε οκτώ θέματα που σχετίζονται με την έννοια της διαφάνειας και αφορούν την

σχεδίαση κατανεμημένων συστημάτων

Έννοιες κλειδιά Ανοικτότητα, Αντιμετώπιση σφαλμάτων, Διαδίκτυο, Διαφάνεια, Ασφάλεια, Εταιρικό δίκτυο,

Ετερογένεια, Κατανεμημένα Συστήματα, Κινητός και Διάχυτος Υπολογισμός, Επεκτασιμότητα,

Παγκόσμιος Ιστός, Ταυτοχρονισμός.

1. Εισαγωγικές παρατηρήσεις Κατά μια προσέγγιση ένα κατανεμημένο σύστημα (distributed system) είναι ένα σύνολο αυτόνομων

υπολογιστών το οποίο παρουσιάζεται στους χρήστες του σαν ένας ενιαίος υπολογιστής. Αυτή είναι και

η βασική διαφορά μεταξύ ενός δικτύου υπολογιστών και ενός κατανεμημένου συστήματος, δηλαδή ότι

σε ένα δίκτυο υπολογιστών αυτή η ενιαία εικόνα απουσιάζει. Το βιβλίο σας ορίζει ως κατανεμημένο

σύστημα το σύστημα που αποτελείται από συστατικά (υλικό ή λογισμικό) τα οποία κατοικούν σε

Page 14: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

14

δικτυωμένους υπολογιστές και επικοινωνούν μεταξύ τους για να συντονίσουν τη δράση τους με

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

πρέπει να μελετηθούν:

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

υπολογιστών. Ο χρήστης Χ εκτελεί εργασίες στον υπολογιστή του, ενώ ο χρήστης Υ εκτελεί τις

δικές του εφαρμογές στον δικό του υπολογιστή και ταυτόχρονα μοιράζονται πόρους, όπως

ιστοσελίδες και αρχεία, όταν χρειάζεται. Ο συντονισμός προγραμμάτων που εκτελούνται

ταυτόχρονα και μοιράζονται πόρους είναι ένα σημαντικό ζήτημα στην σχεδίαση

κατανεμημένων συστημάτων.

• Απουσία καθολικού ρολογιού: αφορά το γεγονός ότι οι υπολογιστές που επικοινωνούν με

ανταλλαγή μηνυμάτων σε ένα κατανεμημένο σύστημα δε διαθέτουν ένα κοινό ρολόι για την

μέτρηση του χρόνου, και υπάρχουν όρια στην ακρίβεια με την οποία μπορούν να

συγχρονιστούν ως προς το χρόνο. Από την άλλη πλευρά, η επιτυχής συνεργασία των

προγραμμάτων εξαρτάται από μια θεώρηση κοινού χρόνου βάσει του οποίου λαμβάνουν χώρα

οι ενέργειές τους.

• Ανεξάρτητες αστοχίες: αφορά το γεγονός ότι κάθε συστατικό ενός κατανεμημένου συστήματος

(υλικό, λογισμικό, δίκτυο) μπορεί να αστοχήσει ανεξάρτητα από τα υπόλοιπα. Για παράδειγμα

εάν αστοχήσει το δίκτυο, τα προγράμματα που εκτελούνται στους υπολογιστές και

επικοινωνούν με άλλους υπολογιστές δε θα είναι εύκολο να αποφανθούν εάν το δίκτυο έχει

αστοχήσει, ή είναι αργό λόγω συμφόρησης, ή ακόμη εάν ο υπολογιστής ή το πρόγραμμα με το

οποίο επικοινωνούν έχουν αστοχήσει.

Οι προκλήσεις που αναδύονται κατά την ανάπτυξη των κατανεμημένων συστημάτων είναι η

ετερογένεια των συστατικών του, η ανοικτότητα, η οποία επιτρέπει την προσθήκη ή την αντικατάσταση

συστατικών, η ασφάλεια, η επεκτασιμότητα ως η δυνατότητα της αποτελεσματικής λειτουργίας του

συστήματος όταν ο αριθμός των χρηστών αυξάνει, η αντιμετώπιση σφαλμάτων, ο ταυτοχρονισμός και

η διαφάνεια.

Ο στόχος του κεφαλαίου είναι να δώσει μια ξεκάθαρη εικόνα της φύσης των κατανεμημένων

συστημάτων και των προκλήσεων που θα πρέπει να αντιμετωπιστούν για να εξασφαλισθεί η επιτυχής

λειτουργία τους. Η επόμενη ενότητα παρουσιάζει μερικά χαρακτηριστικά παραδείγματα

κατανεμημένων συστημάτων, τα συστατικά τους και τον σκοπό τους. Η Ενότητα 3 καλύπτει τις κύριες

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

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

καλούνται να αντιμετωπίσουν οι σχεδιαστές κατανεμημένων συστημάτων: ετερογένεια, ανοικτότητα,

ασφάλεια, επεκτασιμότητα, αντιμετώπιση σφαλμάτων, ταυτοχρονισμός, διαφάνεια και ποιότητα

υπηρεσιών. Τέλος, η Ενότητα 6 παρουσιάζει ως μελέτη περίπτωσης το περιβάλλον του Παγκόσμιου

Ιστού.

2. Παραδείγματα κατανεμημένων συστημάτων Κατανεμημένα συστήματα μπορούμε να συναντήσουμε παντού:

Page 15: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

15

• Οικονομία και εμπόριο (π.χ., Amazon, eBay, PayPal, online banking και trading)

• Κοινωνία της πληροφορίας (π.χ., WWW, μηχανές αναζήτησης Google, Yahoo, Google Books,

YouTube, Wikipedia, Flickr, Facebook, MySpace, κ.α.)

• Βιομηχανία ψυχαγωγίας (π.χ., online παιχνίδια, webcasting, media downloading, κ.α.)

• Υγεία (π.χ., ηλεκτρονικός φάκελος ασθενή, τηλεϊατρική, φροντίδα ηλικιωμένων στο σπίτι με

τεχνολογίες ambient assisted living)

• Εκπαίδευση (π.χ., e-learning, εκπαίδευση εξ αποστάσεως, εικονικά περιβάλλοντα μάθησης,

συνεργατικά περιβάλλοντα μάθησης)

• Μεταφορές και logistics (π.χ., τεχνολογίες θέσης, όπως GPS, συστήματα διαχείρισης κυκλοφορίας,

έξυπνα αυτοκίνητα, και υπηρεσίες χάρτη, όπως MapQuest, Google Maps και Google Earth)

• Επιστήμη (Grid, eScience)

• Παρακολούθηση περιβάλλοντος (δίκτυα αισθητήρων, διαγνωστικά συστήματα για φυσικές

καταστροφές, όπως σεισμοί, πλημμύρες)

3. Τάσεις στα κατανεμημένα συστήματα Τα κατανεμημένα συστήματα βιώνουν μια περίοδο σημαντικών αλλαγών που μπορούν να

προσδιοριστούν από διάφορες επικρατούσες τάσεις:

• η εμφάνιση της διάχυτης δικτύωσης

• η εμφάνιση του διάχυτου υπολογισμού σε συνδυασμό με την επιθυμία να υποστηριχθεί η

κινητικότητα των χρηστών

• η αυξανόμενη ζήτηση για τις υπηρεσίες πολυμέσων

• η θεώρηση των κατανεμημένων συστημάτων ως κοινωφελή υπηρεσία (utility).

Το Διαδίκτυο, είναι σήμερα το μεγαλύτερο κατανεμημένο σύστημα που επιτρέπει την πρόσβαση των

χρηστών στις υπηρεσίες και τα δεδομένα του ανεξαρτήτως του που αυτοί βρίσκονται.

Τα εταιρικά δίκτυα (intranets) είναι ιδιωτικά τμήματα του Διαδικτύου που ελέγχονται συνήθως από μια

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

για να παρέχει πληροφορίες, τοπικές υπηρεσίες, αλλά και πρόσβαση στο Διαδίκτυο στους

εργαζόμενους, και μερικές φορές για επικοινωνία με πελάτες και προμηθευτές. Η δημόσια πρόσβαση

συνήθως προστατεύεται με μηχανισμούς αυθεντικοποίησης, εξουσιοδότησης και firewalls.

Μικρότερης κλίμακας κατανεμημένα συστήματα μπορούν να προκύψουν από υπολογιστικές συσκευές

που ολοκληρώνονται με πληροφοριακά συστήματα μέσω ασύρματων δικτύων. Αυτές οι συσκευές

μπορεί να είναι φορητοί υπολογιστές, PDAs, έξυπνα κινητά τηλέφωνα, βιντεοκάμερες, ψηφιακές

φωτογραφικές μηχανές, φορετές συσκευές (π.χ. έξυπνα ρολόγια), και ενσωματωμένες συσκευές

καθημερινής χρήσης (π.χ. έξυπνα ψυγεία, αυτοκίνητα, πλυντήρια). Τα συστήματα αυτά ονομάζονται

συστήματα κινητού και διάχυτου υπολογισμού.

Το Webcasting είναι μια εφαρμογή της κατανεμημένης τεχνολογίας πολυμέσων. Το Webcasting είναι η

δυνατότητα να μεταδοθούν με πανεκπομπή ήχος ή βίντεο, μέσω του Διαδικτύου. Σήμερα είναι ευρέως

διαδεδομένο σημαντικά αθλητικά ή μουσικά γεγονότα να μεταδίδονται κατά αυτόν τον τρόπο,

Page 16: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

16

προσελκύοντας συχνά μεγάλους αριθμούς θεατών. Οι κατανεμημένες εφαρμογές πολυμέσων όπως το

webcasting θέτουν σημαντικές απαιτήσεις στην υποκείμενη κατανεμημένη υποδομή σε θέματα όπως:

• η υποστήριξη διάφορων σχημάτων κωδικοποίησης και κρυπτογράφησης, όπως η σειρά MPEG και

HDTV

• η παροχή μια σειράς μηχανισμών για να εξασφαλίσει ότι η επιθυμητή ποιότητα της υπηρεσίας

μπορεί να ικανοποιηθεί

• η παροχή αντίστοιχων πολιτικών διαχείρισης πόρων, συμπεριλαμβανομένων των κατάλληλων

πολιτικών χρονοδρομολόγησης για να υποστηριχθεί η επιθυμητή ποιότητα της υπηρεσίας

• η παροχή πολιτικών προσαρμογής για να αντιμετωπισθεί η αναπόφευκτη κατάσταση που

χαρακτηρίζει τα ανοικτά συστήματα, όπου είναι δυνατόν η ποιότητα της υπηρεσίας να μην μπορεί

να ικανοποιηθεί ή να συντηρηθεί.

Το παράδειγμα του υπολογιστικού νέφους (cloud computing) συνιστά σήμερα μια νέα θεώρηση του

κατανεμημένου υπολογισμού ως κοινωφελή υπηρεσία (με την ίδια φιλοσοφία που το ηλεκτρικό ρεύμα

παρέχεται από έναν οργανισμό ως κοινωφελή υπηρεσία). Ένα νέφος ορίζεται ως ένα σύνολο

εφαρμογών του Διαδικτύου, υπηρεσιών αποθήκευσης και υπολογισμού, αρκούντων για να

υποστηρίξουν τις ανάγκες των περισσότερων χρηστών, επιτρέποντάς τους να αποχωριστούν κατά ένα

μεγάλο μέρος ή συνολικά την τοπική αποθήκευση στοιχείων και τα προγράμματα εφαρμογών. Ο όρος

προωθεί γενικά μια άποψη των πάντων ως υπηρεσία, από την φυσική ή εικονική υποδομή έως το

λογισμικό, που χρεώνεται ανά-χρήση παρά ως μια αγορά. Είναι χαρακτηριστικό ότι ο το υπολογιστικό

νέφος μειώνει τις απαιτήσεις από τις συσκευές των χρηστών, επιτρέποντάς τους τη χρήση πολύ απλών

υπολογιστικών μονάδων ή φορητών συσκευών για πρόσβαση σε ένα ενδεχομένως ευρύ φάσμα πόρων

και υπηρεσιών.

Άσκηση αυτοαξιολόγησης 1.1

Για ποιους λόγους θα σχεδιάζατε ένα σύστημα ως κατανεμημένο σύστημα; Να καταγράψετε μερικά

από τα πλεονεκτήματα των κατανεμημένων συστημάτων. Υπάρχουν μειονεκτήματα ή προβλήματα που

σχετίζονται με τα κατανεμημένα συστήματα; Ποια;

4. Έμφαση στον διαμοιρασμό πόρων Η διαμοίραση πόρων (resource sharing) είναι το βασικό κίνητρο για την κατασκευή των κατανεμημένων

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

παραδείγματα μπορεί να είναι ο εκτυπωτής που μοιράζεται στο εργαστήριο ΣΔΥ του ΕΑΠ, το υλικό μιας

ΟΣΣ της ΣΔΥ50, μια ιστοσελίδα με το βιογραφικό σας, επεισόδια της τηλεοπτικής σειράς Lost, μουσική

στο iTunes, μια μηχανή αναζήτησης στο Διαδίκτυο κ.α.

Το μοντέλο πελάτη/εξυπηρετητή (client / server model) είναι το πιο διαδεδομένο μοντέλο ανάπτυξης

κατανεμημένων συστημάτων. Σύμφωνα με το μοντέλο αυτό, οι πόροι παρέχονται από εξυπηρετητές

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

αντικείμενα εξυπηρετητές που προσπελαύνονται από άλλα αντικείμενα πελάτες (αντικειμενοστρεφής

διατύπωση του μοντέλου). Το μοντέλο πελάτη/εξυπηρετητή περικλείει τρεις βασικούς όρους:

Page 17: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

17

υπηρεσία (service), εξυπηρετητής (server) και πελάτης (client). Ως υπηρεσία ορίζεται ένα ξεχωριστό

τμήμα ενός υπολογιστικού συστήματος που διαχειρίζεται ένα σύνολο από συναφείς πόρους τη

λειτουργικότητα των οποίων εξάγει στους χρήστες και τις εφαρμογές μέσω ενός συνόλου λειτουργιών.

Για παράδειγμα, η υπηρεσία αρχείων (file service) παρέχει τις λειτουργίες read, write και delete επάνω

σε αρχεία. Ο όρος εξυπηρετητής αναφέρεται σε ένα πρόγραμμα που εκτελείται (μια διεργασία) σε ένα

δικτυωμένο υπολογιστή και δέχεται αιτήσεις από προγράμματα που τρέχουν σε άλλους υπολογιστές

για να επιτελέσει μια λειτουργία και αποκρίνεται κατάλληλα. Οι διεργασίες που αποστέλλουν τις

αιτήσεις ονομάζονται πελάτες. Η επικοινωνία μεταξύ πελάτη και εξυπηρετητή για αιτήματα/αποκρίσεις

πραγματοποιείται με ανταλλαγή μηνυμάτων. Η ίδια διεργασία μπορεί να έχει και τον ρόλο του πελάτη

και τον ρόλο του εξυπηρετητή.

5. Προκλήσεις Οι σχεδιαστές κατανεμημένων συστημάτων καλούνται να αντιμετωπίσουν έναν αριθμό από δύσκολα

ζητήματα που σχετίζονται με την κατανεμημένη φύση των συστημάτων αυτών. Εξετάζουμε στη

συνέχεια τα ζητήματα αυτά.

5.1 Ετερογένεια Ένα κατανεμημένο σύστημα συνήθως περιλαμβάνει πολλά συστατικά, που μπορεί και να ακολουθούν

διαφορετικά πρότυπα, ωστόσο θα πρέπει να συνεργαστούν μεταξύ τους. Για παράδειγμα, η

διαφορετικότητα μπορεί να αναφέρεται:

• στο δίκτυο (π.χ., Ethernet, Token Ring, FDDI)

• στην αρχιτεκτονική των υπολογιστών με επίπτωση στην αναπαράσταση των δεδομένων (π.χ.,

Big Endian, Little Endian)

• στο λειτουργικό σύστημα (π.χ., Unix, MAC OS, MS Windows)

• στη γλώσσα προγραμματισμού με επίπτωση στην αναπαράσταση των δομών δεδομένων (π.χ.,

αναπαράσταση πινάκων ή εγγραφών σε Java, C++, Python)

• στις προδιαγραφές υλοποίησης

Τα TCP/IP πρωτόκολλα επικοινωνίας (πρωτόκολλα Διαδικτύου) συμβάλουν ουσιαστικά στην

αντιμετώπιση της ετερογένειας σε ότι αφορά τα δίκτυα. Το ενδιάμεσο λογισμικό (middleware)

επιστρατεύεται για την αντιμετώπιση της ετερογένειας στις υπόλοιπες περιπτώσεις. Το ενδιάμεσο

λογισμικό εμφανίζεται σε ένα κατανεμημένο περιβάλλον επεξεργασίας ως ένα στρώμα κατανεμημένου

λογισμικού, μεταξύ της υπολογιστικής πλατφόρμας και των εφαρμογών, και παρέχει μια

προγραμματιστική αφαίρεση υπό τη μορφή μιας κοινής και πρότυπης διεπαφής. Έτσι, το ενδιάμεσο

λογισμικό κρύβει από τις εφαρμογές την ετερογένεια της υπολογιστικής πλατφόρμας προσφέροντας

τις κατάλληλες υπηρεσίες και τα πρωτόκολλα για την επικοινωνία μεταξύ των εφαρμογών.

Άσκηση αυτοαξιολόγησης 1.2

Να δώσετε έναν ορισμό για το ενδιάμεσο λογισμικό. Με βάση τον ορισμό που δώσατε να

προσπαθήσετε να σχεδιάσετε ένα διάγραμμα που να δείχνει τη θέση του ενδιάμεσου λογισμικού αν

Page 18: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

18

επιχειρήσουμε μια αναπαράσταση της αρχιτεκτονικής των κατανεμημένων συστημάτων σε στρώματα

υπηρεσιών υλικού και λογισμικού.

Δραστηριότητα 1.1

Ένα πρόγραμμα που λειτουργεί ως εξυπηρετητής έχει αναπτυχθεί σε μια γλώσσα προγραμματισμού

(έστω C++) και παρέχει την υλοποίηση μια υπηρεσίας συναλλαγής ως απομακρυσμένο αντικείμενο

(remote object) που προορίζεται να προσπελαστεί από προγράμματα πελάτες που μπορεί να έχουν

αναπτυχθεί σε μια διαφορετική γλώσσα (έστω Java). H αρχιτεκτονική του υπολογιστή που τρέχει τον

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

υπολογιστές είναι συνδεδεμένοι στο Διαδίκτυο.

Να περιγράψετε τα προβλήματα που θα πρέπει να αντιμετωπισθούν στην προσπάθεια του πελάτη να

καλέσει απομακρυσμένα μεθόδους του απομακρυσμένου αντικειμένου που διατηρεί ο εξυπηρετητής.

Τα προβλήματα αυτά να τα συσχετίσετε με την πιθανή ετερογένεια που μπορούμε να συναντήσουμε

σε οποιοδήποτε επίπεδο της επικοινωνίας.

5.2 Ανοικτότητα Η χρησιμότητα των κατανεμημένων συστημάτων αυξάνεται όταν αυτά είναι ανοικτά. Ένα ανοικτό

σύστημα επιτρέπει την προσθήκη νέων συστατικών (π.χ. υπηρεσίες διαμοιρασμού πόρων) με άμεση

διαθεσιμότητα στους χρήστες του συστήματος, ανεξάρτητα από το πρόγραμμα πελάτη που

χρησιμοποιούν. Το πρώτο βήμα για να επιτευχθεί η ανοικτότητα ενός συστήματος είναι η

δημοσιοποίηση των προγραμματιστικών διεπαφών του. Η επιτυχία ενός ανοικτού συστήματος κρίνεται

στο χρόνο και η ανάπτυξή του είναι σταδιακή. Η ανάπτυξη αυτή είναι εφικτή όταν βασίζεται σε έναν

ομοιόμορφο μηχανισμό επικοινωνίας (π.χ. ανταλλαγή μηνυμάτων) και δημοσιευμένες διεπαφές για

την πρόσβαση σε κοινούς πόρους. Επίσης, όταν μπορεί να ενσωματώσει ετερογενή συστατικά υλικού

και λογισμικού, ακόμη και από διαφορετικούς κατασκευαστές.

5.3 Ασφάλεια Η διαμοίραση πόρων μέσω κατανεμημένων συστημάτων είναι ωφέλιμη, αλλά ταυτόχρονα εκθέτει τους

πόρους σε καταστάσεις ανεπιθύμητης χρήσης. Ένα πρόβλημα, για παράδειγμα, με την ανταλλαγή

μηνυμάτων στο δίκτυο είναι ότι τα μηνύματα αυτά μπορεί εύκολα να συλληφθούν και να διαβαστούν

σχεδόν από τον καθένα. Άλλο πρόβλημα είναι η αναγνώριση της ταυτότητας εκείνου που επικοινωνεί

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

χρησιμοποιούν διαδικασίες κρυπτογράφησης και αυθεντικοποίησης. Δύο προβλήματα ασφάλειας που

δεν έχουν ακόμη αντιμετωπισθεί πλήρως είναι η επίθεση μέσω άρνησης παροχής υπηρεσίας και η

ασφάλεια κινητού κώδικα.

5.4 Επεκτασιμότητα Τα κατανεμημένα συστήματα αναπτύσσονται με την πάροδο του χρόνου. Η ανάπτυξη μπορεί να αφορά

τον αριθμό των χρηστών, των αριθμό των υπολογιστών που συνδέονται, ακόμη και την απόδοση του

συστήματος. Ένα κατανεμημένο σύστημα είναι επεκτάσιμο (scalable) όταν το κόστος προσθήκης ενός

χρήστη είναι ανάλογο μια σταθεράς σε σχέση με τους πόρους που θα πρέπει να προστεθούν στο

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

Page 19: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

19

συμφόρησης κατά την πρόσβαση κοινών δεδομένων. Τα δεδομένα θα πρέπει να οργανώνονται

ιεραρχικά, χρησιμοποιώντας τις κατάλληλες δομές δεδομένων στην υλοποίηση, ώστε να

επιτυγχάνονται οι καλύτεροι δυνατοί χρόνοι προσπέλασης. Μπορεί να γίνει χρήση αντιγράφων για τα

δεδομένα που προσπελαύνονται συχνά για να επιτύχουμε καλύτερες επιδόσεις του συστήματος.

Άσκηση αυτοαξιολόγησης 1.3

Να εξηγήσετε τι εννοούμε όταν λέμε ότι ένα σύστημα είναι επεκτάσιμο. Η επεκτασιμότητα μπορεί να

επιτευχθεί εφαρμόζοντας διάφορες τεχνικές. Ποιες τεχνικές γνωρίζετε;

5.5 Αντιμετώπιση σφαλμάτων Τα κατανεμημένα συστήματα είναι πιο πιθανό να χρειαστεί να αντιμετωπίσουν σφάλματα (faults) από

ότι άλλα συστήματα καθώς αποτελούνται από πολλά συστατικά καθένα από τα οποία μπορεί, όπως

έχουμε ήδη αναφέρει, να αστοχήσει ανεξάρτητα. Ένα καλά σχεδιασμένο σύστημα δεν πρέπει να

αστοχεί πλήρως όταν ένα συστατικό ή ένα μέρος του συστήματος αστοχεί . Παρόλη την μερική αστοχία

που μπορεί να εμφανιστεί σε ένα κατανεμημένο σύστημα, το υπόλοιπο σύστημα θα εξακολουθήσει να

λειτουργεί. Κατά συνέπεια κάθε συστατικό του συστήματος θα πρέπει να «αντιλαμβάνεται» τους

δυνατούς τρόπους αστοχίας των συστατικών του συστήματος από τα οποία εξαρτάται και να είναι

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

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

Εφόσον είναι δυνατή η ανίχνευση μια αστοχίας, μπορούν να χρησιμοποιηθούν μηχανισμοί απόκρυψης

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

αποτυχίας ολοκλήρωσης ενός υπολογισμού ή μιας συναλλαγής σε μια Βάση Δεδομένων, μηχανισμοί

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

συστήματα που διαθέτουν τέτοιους μηχανισμούς παρουσιάζουν όπως λέμε ανοχή σε σφάλματα. Η

τεχνική του πλεονασμού (redundancy) μπορεί να επιστρατευθεί για να ενισχυθεί η ανοχή σε

σφάλματα.

5.6 Ταυτοχρονισμός Η παρουσία πολλών χρηστών σε ένα κατανεμημένο σύστημα μπορεί να προκαλέσει ταυτόχρονες

αιτήσεις σε διαθέσιμες υπηρεσίες. Κάθε διαθέσιμος πόρος του συστήματος θα πρέπει να σχεδιασθεί

έτσι ώστε η χρήση του να είναι ασφαλής σε περιβάλλον ταυτοχρονισμού. Για παράδειγμα, ένα

αντικείμενο λογισμικού που παρέχει μια υπηρεσία σε ένα κατανεμημένο περιβάλλον θα πρέπει να

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

συνέπεια αν προκύψουν πολλές ταυτόχρονες αιτήσεις.

5.7 Διαφάνεια Η διαφάνεια (transparency) ορίζεται ως η απόκρυψη της διαφοροποίησης των συστατικών του

κατανεμημένου συστήματος από τον χρήστη και τον προγραμματιστή εφαρμογών, έτσι ώστε το

σύστημα να γίνεται αντιληπτό σαν μια ολότητα παρά ως συλλογή ανεξάρτητων συστατικών. Η

διαφάνεια κατηγοριοποιείται στις παρακάτω περιπτώσεις:

• Διαφάνεια προσπέλασης επιτρέπει την ομοιόμορφη προσπέλαση τοπικών και

απομακρυσμένων πόρων

Page 20: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

20

• Διαφάνεια θέσης επιτρέπει την προσπέλαση των πόρων ανεξάρτητα από τη φυσική τους ή

λογική τους θέση (για παράδειγμα, σε ποιο κτίριο ή σε ποια IP διεύθυνση)

• Διαφάνεια ταυτοχρονισμού επιτρέπει την ταυτόχρονη λειτουργία πολλών προγραμμάτων με

πρόσβαση σε κοινούς πόρους, χωρίς να παρεμβάλλονται μεταξύ τους

• Διαφάνεια αντιγράφων επιτρέπει τη χρήση πολλαπλών αντιγράφων των πόρων για τη

βελτίωση της αξιοπιστίας και της απόδοσης του συστήματος, χωρίς οι χρήστες και οι

προγραμματιστές να αντιλαμβάνονται την ύπαρξή τους

• Διαφάνεια αστοχίας επιτρέπει την απόκρυψη των αστοχιών, δίνοντας στους χρήστες και τις

εφαρμογές τη δυνατότητα να ολοκληρώσουν την εργασία τους, παρά την αστοχία στο υλικό ή

λογισμικό του συστήματος

• Διαφάνεια κινητικότητας επιτρέπει την μετακίνηση των πόρων και των πελατών του

συστήματος χωρίς να επηρεάζεται η λειτουργία των χρηστών και των εφαρμογών

• Διαφάνεια απόδοσης επιτρέπει την αναδιάρθρωση του συστήματος ώστε να βελτιωθεί η

απόδοσή του

• Διαφάνεια επεκτασιμότητας επιτρέπει την επέκταση και ανάπτυξη του συστήματος χωρίς να

χρειάζεται να αλλάξει η δομή του συστήματος ή οι αλγόριθμοι της εφαρμογής

Ο στόχος είναι να αποσιωπηθούν συγκεκριμένες όψεις της κατανομής από τον προγραμματιστή

εφαρμογών ώστε αυτός να επικεντρωθεί αποκλειστικά στο σχεδιασμό της συγκεκριμένης εφαρμογής

(αρχή του διαχωρισμού των αρμοδιοτήτων).

5.8 Ποιότητα υπηρεσιών Οι κύριες μη λειτουργικές ιδιότητες των συστημάτων που έχουν επιπτώσεις στην ποιότητα της

υπηρεσίας που αντιλαμβάνονται οι πελάτες και οι χρήστες είναι η αξιοπιστία (reliability), η ασφάλεια

(security) και απόδοση (performance). Η προσαρμοστικότητα (adaptability) για να καλυφθούν

απαιτήσεις όπως η δυναμική μεταβολή της διαμόρφωσης των συστημάτων καθώς και η διαθεσιμότητα

πόρων, έχει αναγνωριστεί ως μια επιπλέον σημαντική πτυχή της ποιότητας υπηρεσιών.

Το θέμα της απόδοσης ως παράμετρος της ποιότητας μιας υπηρεσίας ήταν αρχικά εξαρτημένο σε

σχέση με την ταχύτητα απόκρισης (responsiveness) και την υπολογιστική ρυθμαπόδοση (computational

throughput), αλλά σήμερα έχει επαναπροσδιοριστεί σε σχέση με την δυνατότητα να ικανοποιηθούν

χρονικές εγγυήσεις.

Για παράδειγμα, εφαρμογές που εκπέμπουν πολυμεσικά δεδομένα απαιτούν εγγυημένο εύρος ζώνης

και φραγμένες καθυστερήσεις στα επικοινωνιακά κανάλια που χρησιμοποιούν. Κάποιες εφαρμογές

προσαρμόζουν δυναμικά τις απαιτήσεις τους και προσδιορίζουν μια ελάχιστα αποδεκτή και μια

επιθυμητή βέλτιστη ποιότητα υπηρεσίας.

Άσκηση αυτοαξιολόγησης 1.4

Να εξηγήσετε την έννοια της διαφάνειας, να αναφέρατε τις κατηγορίες της, και να δώσετε

παραδείγματα εφαρμογής διαφορετικών ειδών διαφάνειας.

Δραστηριότητα 1.2

Page 21: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

21

Ας υποθέσουμε ότι ο εξυπηρετητής που αναφέραμε στην Δραστηριότητα 1.1 προσφέρει μέσω ενός

αντικειμένου κάποιες λειτουργίες που χωρίζονται σε δύο κατηγορίες: τις δημόσιες που είναι

διαθέσιμες σε όλους τους χρήστες και τις προστατευμένες που είναι διαθέσιμες μόνον σε

συγκεκριμένους χρήστες. Να καταγράψετε τα προβλήματα που θα πρέπει να αντιμετωπιστούν ώστε να

εξασφαλισθεί ότι μόνον οι χρήστες που έχουν δικαίωμα μπορούν να χρησιμοποιήσουν μια

προστατευμένη υπηρεσία. Αν επιπλέον υποθέσουμε ότι η χρήση μιας προστατευμένης υπηρεσίας

παρέχει πληροφορίες που δε θα πρέπει να αποκαλυφθούν σε άλλους χρήστες, τι επιπλέον προβλήματα

αναδύονται;

Δραστηριότητα 1.3

Ο εξυπηρετητής που αναφέραμε στην Δραστηριότητα 1.1 έχει τη δυνατότητα να εξυπηρετεί

ταυτόχρονα πολλές αιτήσεις πελατών (π.χ. με υλοποίηση πολλαπλών νημάτων εκτέλεσης). Ποιο είναι

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

παράδειγμα αλληλεπίδρασης δύο πελατών με τον εξυπηρετητή όπου η εξυπηρέτηση του ενός μπορεί

να παρεμβληθεί με την εξυπηρέτηση του άλλου με αποτέλεσμα την εμφάνιση σφάλματος. Προτείνετε

έναν τρόπο αντιμετώπισης τέτοιου προβλήματος.

Δραστηριότητα 1.4

Ένας εξυπηρετητής σε ένα κατανεμημένο σύστημα προσφέρει μια υπηρεσία που θα πρέπει να

διαχειρισθεί έναν εξαιρετικά μεγάλο αριθμό πόρων (π.χ. διευθύνσεις στο Διαδίκτυο). Κάθε τέτοιος

πόρος μπορεί να αναζητηθεί από εφαρμογές-πελάτες μέσω ενός μοναδικού ονόματος. Να προτείνετε

μια προσέγγιση για το σχεδιασμό της υπηρεσίας ώστε να υποφέρει την μικρότερη δυνατή απώλεια

επίδοσης, καθώς ο αριθμός των πόρων που η υπηρεσία διαχειρίζεται αυξάνει. Επίσης, να προτείνετε

τρόπους υλοποίησης της υπηρεσίας ώστε να αποφεύγονται προβλήματα συμφόρησης, όταν αυξάνει

σημαντικά ο αριθμός των αιτήσεων από τους πελάτες.

6. Μελέτη περίπτωσης: Παγκόσμιος Ιστός Ο Παγκόσμιος Ιστός αποτελεί ένα παράδειγμα ανοικτού κατανεμημένου συστήματος που λειτουργεί με

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

νέους τρόπους χωρίς να διαταράσσεται η υπάρχουσα λειτουργικότητά του. Αυτό επιτυγχάνεται,

πρώτον επειδή η λειτουργία του βασίζεται σε πρότυπα επικοινωνίας και εγγράφων τα οποία έχουν

ελεύθερα δημοσιοποιηθεί και έχουν ευρέως υλοποιηθεί. Δεύτερον, επειδή είναι ανοικτό ως προς τον

τύπο των πόρων (περιεχόμενο ή υπηρεσίες) που μπορούν να δημοσιευθούν. Ένας καινούριος τύπος

περιεχομένου (π.χ., μια νέα μορφή αποθήκευσης εικόνων) μπορεί άμεσα να δημοσιευθεί στον Ιστό

αρκεί να υποστηριχθεί με την αντίστοιχη ‘βοηθητική’ εφαρμογή που θα ενσωματωθεί ως ‘plug-in’ στο

πρόγραμμα περιήγησης ιστού (web browser).

Μια αλληλεπίδραση πελάτη/εξυπηρετητή στον Παγκόσμιο Ιστό έχει την παρακάτω μορφή:

1. Ο χρήστης επιλέγει/διατυπώνει το URL στο πρόγραμμα περιήγησης ιστού (πελάτης)

2. Το πρόγραμμα στέλνει ένα HTTP αίτημα στην θύρα 80 του εξυπηρετητή ιστού

Page 22: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

22

3. Ο εξυπηρετητής επεξεργάζεται το αίτημα

i. Στέλνει ως απάντηση ένα HTML αρχείο

ii. Κλείνει την σύνδεση

4. Το πρόγραμμα περιήγησης λαμβάνει το HTML αρχείο και το ερμηνεύει

i. Αν ο τύπος περιεχομένου είναι HTML τότε απεικονίζει τη σελίδα

ii. Διαφορετικά, ξεκινά μια ‘βοηθητική’ εφαρμογή

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

του Παγκόσμιου Ιστού:

• HyperText Markup Language (HTML), η γλώσσα για την διατύπωση του περιεχομένου και της

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

• Uniform Resource Locators (URLs), τα οποία εντοπίζουν έγγραφα και άλλους πόρους που

αποθηκεύονται στον Ιστό.

• HyperText Transfer Protocol (HTTP), ένα πρωτόκολλο που έχει πρότυπες εντολές και κανόνες

που υλοποιούν αλληλεπίδραση πελάτη/εξυπηρετητή για την μεταφορά εγγράφων και άλλων

πόρων από τον Ιστό.

Η αλληλεπίδραση πελάτη/εξυπηρετητή στον Ιστό είναι στην πράξη πιο πολύπλοκη από την απλή

απεικόνιση στατικών σελίδων. Υποστηρίζονται δυναμικές σελίδες που εκτός από περιεχόμενο

προσδιορίζουν και την εκτέλεση προγραμμάτων που ο εξυπηρετητής θα επιτελέσει για να παράγει

κάποιο περιεχόμενο για τους πελάτες του (π.χ., πρόγραμμα Common Gateway Interface).

Προγράμματα μπορούν να τρέχουν και από την πλευρά του πελάτη, είτε περιορισμένης

λειτουργικότητας υπό τη μορφή Javascript, είτε με περισσότερες δυνατότητες ως Java applets.

Άσκηση αυτοαξιολόγησης 1.5

Στο Διαδίκτυο οι υπηρεσίες και οι πόροι που παρέχονται περιγράφονται με URLs. Τι είναι το URL και

ποια η δομή του; Ποια η διαφορά του URL από το URI; Δώστε 3 παραδείγματα πόρων ή υπηρεσιών στο

Διαδίκτυο που περιγράφονται με URL.

Άσκηση αυτοαξιολόγησης 1.6

Τι είναι τα εταιρικά δίκτυα; Ποια πλεονεκτήματα προκύπτουν από την ανάπτυξη ενός εταιρικού

δικτύου με τις τεχνολογίες του Παγκόσμιου Ιστού;

Άσκηση αυτοαξιολόγησης 1.7

Η διαμοίραση πόρων είναι το βασικότερο κίνητρο για την ανάπτυξη των κατανεμημένων συστημάτων.

Να περιγράψετε 4 είδη πόρων υλικού (hardware) και 4 είδη πόρων λογισμικού (software) ή δεδομένων

(data) που ο διαμοιρασμός τους θα ήταν χρήσιμος σ’ ένα κατανεμημένο σύστημα. Δώστε

παραδείγματα.

Δραστηριότητα 1.5

Page 23: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

23

Οι βασικές τεχνολογίες για φυλλομέτρηση πληροφορίας στον Παγκόσμιο Ιστό είναι οι HTML, URL και

HTTP. Θα μπορούσαν αυτές οι τεχνολογίες να αποτελέσουν την βάση για την ανάπτυξη κατανεμημένων

εφαρμογών πελάτη-εξυπηρετητή στη γενική περίπτωση; Αιτιολογήστε την απάντησή σας.

Δραστηριότητα 1.6

Ο Σημασιολογικός Ιστός είναι μια εξέλιξη του Παγκόσμιου Ιστού. Να περιγράψτε τα χαρακτηριστικά του

και να αναφέρετε τις βασικότερες τεχνολογίες ανάπτυξής του.

7. Επανάληψη To πρώτο κεφάλαιο του βιβλίου επιχείρησε να δώσει μια εικόνα της φύσης των κατανεμημένων

συστημάτων και των προκλήσεων που θα πρέπει να αντιμετωπιστούν για να εξασφαλισθεί η επιτυχής

λειτουργία τους. Παρουσιάστηκαν μερικά χαρακτηριστικά παραδείγματα κατανεμημένων συστημάτων,

τα συστατικά τους και ο σκοπός τους. Οι κύριες προκλήσεις που καλούνται να αντιμετωπίσουν οι

σχεδιαστές κατανεμημένων συστημάτων είναι: η ετερογένεια, η ανοικτότητα, η ασφάλεια, η

επεκτασιμότητα, η αντιμετώπιση σφαλμάτων, ο ταυτοχρονισμός η διαφάνεια και η ποιότητα

υπηρεσιών.

Page 24: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

24

ΚΕΦΑΛΑΙΟ 2 : Μοντέλα Συστημάτων

Σκοπός Σε αυτό το κεφάλαιο εξετάζουμε πώς οι ιδιότητες και τα σχεδιαστικά ζητήματα των κατανεμημένων

συστημάτων μπορούν να συλληφθούν και να συζητηθούν με τη χρήση περιγραφικών μοντέλων. Κάθε

τύπος μοντέλου προορίζεται να παρέχει μια αφηρημένη, απλουστευμένη αλλά συνεπή περιγραφή μιας

συγκεκριμένης πτυχής του κατανεμημένου συστήματος.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Εξηγήσετε τον ρόλο του αρχιτεκτονικού μοντέλου στο σχεδιασμό κατανεμημένων συστημάτων

• Περιγράψετε τα τρία στρώματα υπηρεσιών σε ένα κατανεμημένο σύστημα

• Εξηγήσετε τους όρους πλατφόρμα και ενδιάμεσο λογισμικό

• Περιγράψετε το μοντέλο πελάτη-εξυπηρετητή και το μοντέλο ομότιμων κόμβων

• Περιγράψετε επτά παραλλαγές του μοντέλου πελάτη εξυπηρετητή

• Εξηγήσετε τέσσερις βασικές σχεδιαστικές απαιτήσεις για κατανεμημένα συστήματα

• Αναφέρετε τρία βασικά μοντέλα για την περιγραφή των κατανεμημένων συστημάτων από

διαφορετικές όψεις

• Περιγράψετε το μοντέλο αλληλεπίδρασης

• Περιγράψετε το μοντέλο αποτυχιών

• Περιγράψετε το μοντέλο ασφάλειας

Έννοιες κλειδιά Αρχιτεκτονική, Ενδιάμεσο Λογισμικό, Μοντέλα, Μοντέλο αλληλεπίδρασης, Μοντέλο αποτυχιών,

Μοντέλο ασφάλειας, Μοντέλο ομότιμων κόμβων, Μοντέλο πελάτη-εξυπηρετητή, Πλατφόρμα,

Σχεδιαστικές απαιτήσεις, Φυσικό μοντέλο.

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

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

τούτου, πρόκειται για πολύπλοκα συστήματα που ο σχεδιασμός τους απαιτεί την αντιμετώπιση πολλών

προβλημάτων. Για παράδειγμα, μπορεί να περιλαμβάνουν ετερογενή συστατικά, όπως υλικό,

Page 25: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

25

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

προβλήματα μπορούν να ανακύψουν όπως, μη-συγχρονισμένα ρολόγια, συγκρουόμενες ενημερώσεις

δεδομένων, αστοχίες υλικού και λογισμικού. Τέλος, υπάρχουν πολλές εξωτερικές απειλές που

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

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

Για να διαχειριστούμε την ανάπτυξη πολύπλοκων συστημάτων είναι απαραίτητο να αντιμετωπίσουμε

την πολυπλοκότητά τους με την διαίρεσή τους σε τμήματα και να τα εξετάσουμε από διαφορετικές

οπτικές γωνίες. Τα φυσικά μοντέλα (physical models) συνιστούν μια σαφή περιγραφή των

κατανεμημένων συστημάτων, καθώς συλλαμβάνουν την υλική σύνθεσή τους που περιλαμβάνει τους

υπολογιστές (και άλλες συσκευές, όπως κινητά τηλέφωνα) και τα δίκτυα για την διασύνδεσή τους. Τα

αρχιτεκτονικά μοντέλα (architectural models) εκφράζουν τρόπους οργάνωσης των τμημάτων ενός

συστήματος και τρόπους δόμησης των συσχετίσεων μεταξύ αυτών. Στα κατανεμημένα συστήματα δύο

βασικά αρχιτεκτονικά μοντέλα είναι το μοντέλο πελάτη/εξυπηρετητή και το μοντέλο ομότιμων. Τα

βασικά μοντέλα (fundamental models) ακολουθούν μια αφηρημένη προσέγγιση προκειμένου να

περιγράψουν λύσεις σε επιμέρους ζητήματα που αντιμετωπίζονται από τα περισσότερα κατανεμημένα

συστήματα.

Στη συνέχεια του κεφαλαίου η Ενότητα 2 περιγράφει τα φυσικά μοντέλα. Η Ενότητα 3 περιγράφει την

ιεραρχική δομή των στρωμάτων λογισμικού καθώς και τα βασικά αρχιτεκτονικά μοντέλα των

κατανεμημένων συστημάτων. Η ενότητα αυτή καταγράφει επίσης γενικές σχεδιαστικές απαιτήσεις για

τα κατανεμημένα συστήματα. Στην Ενότητα 4 εισάγονται τρία βασικά μοντέλα που εστιάζουν σε

ιδιότητες που πρέπει να ικανοποιηθούν κατά την σχεδίαση οποιουδήποτε κατανεμημένου συστήματος,

ανεξαρτήτως αρχιτεκτονικού μοντέλου. Τα βασικά μοντέλα παρέχουν αφηρημένες όψεις μόνον

εκείνων των στοιχείων των κατανεμημένων συστημάτων, που συνήθως εστιάζουν στην επικοινωνία

μεταξύ των κόμβων, και επηρεάζουν ιδιότητες, όπως η ορθότητα, η αξιοπιστία και η ασφάλεια.

2. Φυσικά μοντέλα Τα φυσικά μοντέλα εξετάζουν τους τύπους υπολογιστών και συσκευών που συνθέτουν ένα σύστημα σε

επίπεδο υλικού και την συνδεσιμότητά τους, χωρίς τη λεπτομέρεια συγκεκριμένων τεχνολογιών.

Ιστορικά μπορούμε να αναγνωρίσουμε τρεις γενιές κατανεμημένων συστημάτων:

• Πρώιμα κατανεμημένα συστήματα (Early distributed systems): χαρακτηρίζονται από μικρή κλίμακα,

η ετερογένεια που εμφανίζουν είναι περιορισμένη (ομοιογενή δίκτυα), η ανοικτότητα δε συνιστά

προτεραιότητα, και η απαίτηση για υποστήριξη ποιότητας υπηρεσιών είναι ελάχιστη.

• Κατανεμημένα συστήματα κλίμακας Διαδικτύου (Internet-scale distributed systems):

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

επίπεδα όπως, τις πλατφόρμες, τις γλώσσες προγραμματισμού και τα συστήματα ενδιάμεσου

λογισμικού που περιέχουν, η ανοικτότητα έχει σημαντική προτεραιότητα και έχουμε την εισαγωγή

μιας σειράς προτύπων, και η απαίτηση για υποστήριξη ποιότητας υπηρεσιών έχει επίσης μεγάλη

σημασία και έχουμε την εισαγωγή μιας σειράς υπηρεσιών.

Page 26: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

26

• Σύγχρονα κατανεμημένα συστήματα (Contemporary distributed systems): χαρακτηρίζονται από

εξαιρετικά μεγάλη κλίμακα, η ετερογένεια που εμφανίζουν είναι σημαντική και εκτός από τις

διαστάσεις της προηγούμενης περιόδου εμφανίζονται επιπρόσθετες διαστάσεις ετερογένειας

συμπεριλαμβανομένων ριζικά διαφορετικών μορφών αρχιτεκτονικής, η ανοικτότητα συνιστά

σημαντική ερευνητική πρόκληση με τα υπάρχοντα πρότυπα να μην είναι ικανά να καλύψουν

πολύπλοκα συστήματα, και η απαίτηση για υποστήριξη ποιότητας υπηρεσιών επίσης συνιστά

σημαντική ερευνητική πρόκληση με τις υπάρχουσες υπηρεσίες να μην είναι ικανές να καλύψουν

πολύπλοκα συστήματα.

3. Αρχιτεκτονικά μοντέλα Η αρχιτεκτονική προσέγγιση μας βοηθά να κατανοήσουμε το σύστημα, να οργανώσουμε την ανάπτυξή

του, να επαναχρησιμοποιήσουμε συστατικά του, να το συντηρήσουμε και να το εξελίξουμε. Η

αρχιτεκτονική μας βοηθά να δούμε ένα σύστημα ως μια οργάνωση των συστατικών του. Τα συστατικά

μπορεί να είναι κόμβοι στο δίκτυο, στρώματα λογισμικού, συλλογές από υπηρεσίες ή άλλοι τρόποι

τμηματοποίησης του συστήματος.

Για παράδειγμα, ένας απλοποιημένος τρόπος για την τμηματοποίηση ενός κατανεμημένου συστήματος

είναι να κατηγοριοποιήσουμε τις διεργασίες του ως διεργασίες πελάτη, διεργασίες εξυπηρετητή ή

ομότιμες διεργασίες. Αυτή η κατηγοριοποίηση των διεργασιών καθορίζει και τις αρμοδιότητες της κάθε

μιας, γεγονός που μας επιτρέπει να αποτιμήσουμε τον όγκο εργασίας κάθε διεργασίας, καθώς και τις

επιπτώσεις που θα έχει η κάθε μια σε περίπτωση πιθανής αστοχίας. Η ανάλυση αυτή ενδιαφέρει

καθώς τα αποτελέσματά της μπορεί να καθορίσουν την τοποθέτηση των διεργασιών στους κόμβους

του δικτύου, ώστε να επιτευχθούν βασικοί στόχοι τους συστήματος όπως είναι η απόδοση και η

αξιοπιστία.

Άσκηση αυτοαξιολόγησης 2.1

Ποιος είναι ό ρόλος των αρχιτεκτονικών μοντέλων στην ανάπτυξη συστημάτων λογισμικού γενικότερα

και κατανεμημένων συστημάτων ειδικότερα;

3.1 Στρώματα λογισμικού Ο όρος αρχιτεκτονική λογισμικού αναφέρονταν αρχικά στη δόμηση του λογισμικού υπό τη μορφή

στρωμάτων ή υπομονάδων λογισμικού που εκτελούνται στον ίδιο υπολογιστή, και πιο πρόσφατα στη

δόμηση του λογισμικού υπό τη μορφή διαθέσιμων υπηρεσιών που είτε προσφέρονται, είτε

καταναλώνονται από διεργασίες που μπορεί να βρίσκονται στον ίδιο ή σε διαφορετικούς υπολογιστές.

Αυτή η οργάνωση μπορεί να εκφραστεί με τον όρο στρώματα υπηρεσιών (service layers).

Η διάρθρωση των κατανεμημένων συστημάτων υπό τη μορφή στρωμάτων υπηρεσιών υλικού και

λογισμικού γίνεται σε τρία επίπεδα: πλατφόρμα, ενδιάμεσο λογισμικό και εφαρμογές/υπηρεσίες

εφαρμογών.

Πλατφόρμα. Το επίπεδο της πλατφόρμας (platform) αναφέρεται στα χαμηλότερα στρώματα υλικού και

λογισμικού του κατανεμημένου συστήματος. Τα χαμηλότερα αυτά στρώματα παρέχουν υπηρεσίες στα

Page 27: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

27

ανώτερα στρώματα οι οποίες υλοποιούνται διακριτά για κάθε υπολογιστικό σύστημα. Οι υπηρεσίες

αυτές, αν και χαμηλού επιπέδου, παρέχουν μια διεπαφή προγραμματισμού του υπολογιστικού

συστήματος και του δικτύου σε τέτοιο επίπεδο ώστε να διευκολύνεται ο προγραμματισμός των

διαδικασιών επικοινωνίας και συγχρονισμού για τις διεργασίες του κατανεμημένου συστήματος.

Μερικές πλατφόρμες που μπορούμε να συναντήσουμε είναι οι ακόλουθες: Linux/Intel x86,

Windows/Intel x86, Solaris/SunSPARC, MacOS/PowerPC, Linux/Alpha και Symbian/Nokia smart phone.

Δραστηριότητα 2.1

Ανατρέξτε στη βιβλιογραφία και καταγράψτε τις βασικότερες πλατφόρμες ανάπτυξης συστημάτων

διάχυτου υπολογισμού. Περιγράψτε την κάθε πλατφόρμα σε δέκα γραμμές το πολύ.

Ενδιάμεσο Λογισμικό (ΕΛ). Το ΕΛ (middleware) εμφανίζεται σε ένα κατανεμημένο περιβάλλον

επεξεργασίας ως ένα στρώμα κατανεμημένου λογισμικού, μεταξύ της υπολογιστικής πλατφόρμας και

των εφαρμογών, που παρέχει μια προγραμματιστική αφαίρεση υπό τη μορφή μιας κοινής και

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

πλατφόρμας προσφέροντας τις κατάλληλες υπηρεσίες και τα πρωτόκολλα για την επικοινωνία μεταξύ

των εφαρμογών. Εκτός από την αντιμετώπιση της ετερογένειας το ΕΛ παρέχει ένα ομοιόμορφο

κατανεμημένο μοντέλο προγραμματισμού προς τους κατασκευαστές των κατανεμημένων εφαρμογών

με την υποστήριξη αφαιρέσεων που επιτρέπουν την έκφραση των λειτουργιών επικοινωνίας σε

υψηλότερο επίπεδο.

Πιθανά μοντέλα προγραμματισμού παρεχόμενα από ένα ΕΛ είναι τα ακόλουθα :

• Κλήση Απομακρυσμένης Διαδικασίας (Remote Procedure Call)

• Απομακρυσμένη Κλήση Αντικειμένου/Μεθόδου (Remote Object/Method Invocation)

• Ουρά Μηνυμάτων (Message Queuing)

• Κατανεμημένη Συναλλαγή (Distributed Transaction)

Ιδιαίτερη ανάπτυξη γνωρίζουν οι τεχνολογίες ΕΛ που βασίζονται στο μοντέλο της κλήσης

απομακρυσμένου αντικειμένου. Προϊόντα και πρότυπα αυτής της κατηγορίας είναι :

• CORBA

• Java RMI

• Υπηρεσίες Ιστού (Web Services)

• Microsoft Distributed Component Object Model (DCOM)

Πέραν των λειτουργιών επικοινωνίας το ΕΛ παρέχει ένα σύνολο γενικών υπηρεσιών που αποτελούν

γενικευμένες επαναχρησιμοποιήσιμες υπηρεσίες υψηλού επιπέδου, οι οποίες ορίζονται πάνω από τις

υπηρεσίες επικοινωνίας και επιτρέπουν στους κατασκευαστές εφαρμογών να επικεντρωθούν στον

προγραμματισμό της επιχειρησιακής λογικής. Τέτοιες υπηρεσίες είναι: υπηρεσίες καταλόγου,

συναλλακτικές υπηρεσίες, υπηρεσίες ασφάλειας, διαχειριστικές υπηρεσίες, υπηρεσίες συμβάντων,

υπηρεσίες αποθήκευσης, υπηρεσίες εξισορρόπησης φορτίου, κ.α.

Page 28: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

28

Τέλος, στο ανώτερο επίπεδο συναντάμε τις υπηρεσίες επιπέδου εφαρμογής (application layer

services). Για παράδειγμα, η υπηρεσία ρολογιού δικτύου, είναι μια υπηρεσία επιπέδου εφαρμογής που

υλοποιείται στο Διαδίκτυο, βασισμένη στο πρωτόκολλο Network Time Protocol (NTP), παρέχεται από

διεργασίες εξυπηρετητές που είναι διασκορπισμένες σε υπολογιστές του δικτύου για να απαντάνε σε

αιτήματα διεργασιών πελάτη που ζητούν μέσω ανταλλαγής μηνυμάτων να ενημερωθούν για τον

τρέχοντα χρόνο σε επίπεδο δικτύου.

Ο προγραμματισμός των κατανεμημένων εφαρμογών αναμφίβολα μπορεί να διευκολυνθεί από τις

υπηρεσίες που προσφέρει το ΕΛ. Υπάρχουν όμως κάποια ζητήματα που σχετίζονται με την αξιοπιστία

των συστημάτων τα οποία μπορούν να αντιμετωπιστούν αποτελεσματικότερα με συμμετοχή της ίδιας

της εφαρμογής. Με άλλα λόγια η ορθή συμπεριφορά των κατανεμημένων προγραμμάτων εξαρτάται

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

μερικά από τα οποία χρειάζονται πληροφορίες που διατηρούνται από την ίδια την εφαρμογή. Αν

αφεθούμε μόνον στους ελέγχους που πραγματοποιεί το ΕΛ θα εξασφαλίσουμε ένα τμήμα μόνο της

ορθότητας.

Άσκηση αυτοαξιολόγησης 2.2

Ποιός είναι ο ρόλος ενός λειτουργικού συστήματος και ποιός του ΕΛ; Εντοπίζετε πιθανώς κάποια κοινά

στοιχεία μεταξύ των δύο;

Άσκηση αυτοαξιολόγησης 2.3

Ποια είναι τα πλεονεκτήματα του ΕΛ; Υπάρχουν μειονεκτήματα; Ποια;

Δραστηριότητα 2.2

Δώστε έναν σύντομο ορισμό για κάθε μια από τις ακόλουθες κατηγορίες γενικών υπηρεσιών ενός ΕΛ:

υπηρεσίες καταλόγου, συναλλακτικές υπηρεσίες, υπηρεσίες ασφάλειας, διαχειριστικές υπηρεσίες,

υπηρεσίες συμβάντων, υπηρεσίες αποθήκευσης, υπηρεσίες εξισορρόπησης φορτίου.

Δραστηριότητα 2.3

Το ΕΛ εκτός από τις υπηρεσίες επικοινωνίας και τις γενικές υπηρεσίες παρέχει και υπηρεσίες ειδικού

σκοπού. Τι μπορεί να είναι αυτές οι υπηρεσίες; Με βάση τα είδη υπηρεσιών που παρέχει ένα ΕΛ να

σχεδιάσετε την αρχιτεκτονική του ως στρώματα υπηρεσιών. Στην συνέχεια επιχειρήστε να

τοποθετήσετε τις υπηρεσίες του ΕΛ σε σχέση με το ISO/OSI μοντέλο.

3.2 Αρχιτεκτονικές συστημάτων Σε αυτή την ενότητα συζητάμε τα δύο βασικά αρχιτεκτονικά μοντέλα που χρησιμοποιούνται για το

σχεδιασμό κατανεμημένων συστημάτων. Κάθε μοντέλο καθορίζει ποια είναι τα βασικά συστατικά του

συστήματος, ποιες είναι οι αρμοδιότητες κάθε συστατικού και πως αλληλεπιδρούν μεταξύ τους, καθώς

και πως αυτά τοποθετούνται στο δίκτυο υπολογιστών.

Πελάτη-εξυπηρετητή

Page 29: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

29

Η αρχιτεκτονική πελάτη-εξυπηρετητή είναι αυτή που χρησιμοποιείται πιο συχνά στην υλοποίηση

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

πελάτη που αλληλεπιδρούν απευθείας με ξεχωριστές διεργασίες εξυπηρετητή, που βρίσκονται σε

διαφορετικά υπολογιστικά συστήματα, προκειμένου οι πρώτες να αποκτήσουν πρόσβαση στους

κοινούς πόρους που διαχειρίζονται οι τελευταίες. Η αρχιτεκτονική αυτή είναι γνωστή επίσης ως

αρχιτεκτονική 2-επιπέδων (2-tier architecture). Η αρχιτεκτονική πελάτη-εξυπηρετητή απαντάται συχνά

στο Διαδίκτυο. Κατά την περιήγηση ενός χρήστη στο Διαδίκτυο, το πρόγραμμα περιήγησης ζητά κάποιο

περιεχόμενο πληροφοριών από έναν εξυπηρετητή ιστού και ο εξυπηρετητής αποκρίνεται με το

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

Οι εξυπηρετητές μπορεί με την σειρά τους να γίνουν πελάτες σε άλλους εξυπηρετητές. Για παράδειγμα,

ένας εξυπηρετητής ιστού γίνεται πελάτης σε έναν τοπικό εξυπηρετητή αρχείων ο οποίος διαχειρίζεται

τα αρχεία στα οποία αποθηκεύονται οι ιστοσελίδες του. Οι εξυπηρετητές ιστού, όπως και πολλές

υπηρεσίες του Διαδικτύου γίνονται πελάτες της DNS υπηρεσίας η οποία μεταφράζει Internet Domain

Names σε διευθύνσεις δικτύου. Μια μηχανή αναζήτησης στο Διαδίκτυο είναι ταυτόχρονα τόσο

εξυπηρετητής, όσο και πελάτης: ως εξυπηρετητής αποκρίνεται στα ερωτήματα των προγραμμάτων

περιήγησης και ενεργοποιεί προγράμματα ανίχνευσης ιστού (web crawlers) που λειτουργούν ως

πελάτες σε άλλους εξυπηρετητές ιστού.

Δραστηριότητα 2. 4

Να σχολιάσετε την επεκτασιμότητα της αρχιτεκτονικής πελάτη-εξυπηρετητή.

Δραστηριότητα 2. 5

Να ανατρέξετε στη βιβλιογραφία και να δώσετε τους ορισμούς των αρχιτεκτονικών πελάτη-

εξυπηρετητή 3-επιπέδων (3-tier) και Ν-επιπέδων (N-tier). Ποια πλεονεκτήματα παρουσιάζουν;

Αναφέρατε δύο παραδείγματα εφαρμογής αυτών των αρχιτεκτονικών.

Δραστηριότητα 2.6

Μια μηχανή αναζήτησης αποτελεί έναν εξυπηρετητή ιστού που απαντά σε αιτήματα πελατών αφού

αναζητήσει την πληροφορία σε ΒΔ που διατηρεί. Ταυτόχρονα η μηχανή εκτελεί πολλά προγράμματα

ανίχνευσης ιστού για να κτίσει και ενημερώσει τη ΒΔ. Ποιες είναι οι απαιτήσεις για συγχρονισμό

μεταξύ αυτών των ταυτόχρονων διεργασιών;

Ομότιμοι κόμβοι

Στην αρχιτεκτονική ομότιμων κόμβων (peer architecture), κάθε κόμβος του κατανεμημένου

συστήματος έχει την δυνατότητα και να αιτηθεί και να παρέχει υπηρεσίες προς τους υπόλοιπους

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

μπορούν να εισέρχονται και να εξέρχονται από το σύστημα με μεγάλη συχνότητα, χωρίς αυτό να

επηρεάζει τη διαθεσιμότητα των υπηρεσιών του συστήματος (λόγω πλεονασμού πόρων). Σε κάθε

κόμβο υπάρχουν πόροι (π.χ. καταχωρημένα δεδομένα) οι οποίοι είναι διαθέσιμοι στο δίκτυο από τη

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

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

Page 30: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

30

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

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

πίσω στον κόμβο που έθεσε το αίτημα ως μία συνολική απάντηση από το δίκτυο. Με αυτή την

οργάνωση, εφαρμογές μεγάλης κλίμακας μπορούν να υλοποιηθούν, καθώς η αποθήκευση, η

επεξεργασία και το φορτίο επικοινωνίας για την πρόσβαση στα δεδομένα κατανέμεται σε πολλά

υπολογιστικά συστήματα και συνδέσμους δικτύων. Συστήματα ομότιμων κόμβων έχουν υλοποιηθεί με

επιτυχία με την συμμετοχή δεκάδων ή εκατοντάδων χιλιάδων κόμβων δίνοντας πρόσβαση σε δεδομένα

και άλλους πόρους που οι κόμβοι αποθηκεύουν και διαχειρίζονται συλλογικά. Οι γνωστότερες

εφαρμογές συστημάτων ομότιμων κόμβων αφορούν το διαμοιρασμό αρχείων (π.χ. Napster, Gnutella,

FastTrack, Kontiki, Osiris), αλλά και την επικοινωνία χρηστών (Skype) ή την αναζήτηση πληροφοριών

στο Διαδίκτυο (YaCy).

Στο Κεφάλαιο 10 αναλύεται σε βάθος το θέμα της ανάπτυξης κατανεμημένων συστημάτων με την

αρχιτεκτονική των ομότιμων κόμβων.

Δραστηριότητα 2.7

Οι ξένιοι υπολογιστές που χρησιμοποιούνται σε συστήματα ομότιμων κόμβων είναι συνήθως

προσωπικοί υπολογιστές σε περιβάλλον γραφείου ή σπιτιού. Ποιες είναι οι επιπτώσεις αυτής της

κατάστασης για την διαθεσιμότητα και την ασφάλεια των κοινών δεδομένων που αποθηκεύουν αυτοί

οι υπολογιστές και σε τι βαθμό κάποια αδυναμία μπορεί να καλυφθεί με την λογική των αντιγράφων;

3.3 Παραλλαγές Παραλλαγές των βασικών αρχιτεκτονικών μοντέλων έχουν δημιουργηθεί με στόχο την βελτίωση των

χαρακτηριστικών τους, όπως είναι η απόδοση και η επεκτασιμότητα, ειδικότερα στην περίπτωση του

μοντέλου πελάτη-εξυπηρετητή. Οι παραλλαγές αυτές προκύπτουν από τη θεώρηση των παρακάτω

παραγόντων:

• τη χρήση πολλαπλών εξυπηρετητών και προσωρινής αποθήκης

• τη χρήση κινητού κώδικα και κινητών πρακτόρων (διαμεσολαβητών)

• την απαίτηση των χρηστών για χρήση υπολογιστικών συσκευών χαμηλού κόστους με

περιορισμένους πόρους

• την απαίτηση για ευέλικτη πρόσθεση και αφαίρεση κινητών συσκευών

Υπηρεσίες παρεχόμενες από πολλαπλούς εξυπηρετητές

Ο στόχος αυτής της παραλλαγής του βασικού μοντέλου πελάτη-εξυπηρετητή είναι η αναβάθμιση της

απόδοσης και της ανθεκτικότητας του συστήματος. Υπηρεσίες με μεγάλη ζήτηση, όπως οι μηχανές

αναζήτησης, μπορεί να διαθέτουν πολλούς εξυπηρετητές αφιερωμένους σε μια συγκεκριμένη εργασία.

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

αντικείμενα που υλοποιούν την υπηρεσία μοιράζονται μεταξύ πολλαπλών εξυπηρετητών, είτε

αντίγραφα των αντικειμένων διατηρούνται σε κάθε εξυπηρετητή.

Πληρεξούσιοι εξυπηρετητές και προσωρινή αποθήκη

Page 31: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

31

Ο στόχος αυτής της παραλλαγής του βασικού μοντέλου πελάτη-εξυπηρετητή είναι η αναβάθμιση της

διαθεσιμότητας και της απόδοσης μιας υπηρεσίας (π.χ. εξυπηρετητής ιστού) με την μείωση του

φορτίου στο δίκτυο ευρείας κλίμακας (π.χ. Διαδίκτυο) και επάνω στην ίδια την υπηρεσία. Η προσωρινή

αποθήκη (cache) αποθηκεύει πρόσφατα δεδομένα που έχουν παραδοθεί από τον εξυπηρετητή στον

πελάτη και βρίσκονται πιο κοντά του από ότι τα πραγματικά δεδομένα (π.χ. cache σε προγράμματα

περιήγησης ιστού). Ένας πληρεξούσιος εξυπηρετητής (proxy server) είναι μία διεργασία που

αναλαμβάνει να παίξει το ρόλο του ενδιάμεσου ανάμεσα στον πραγματικό εξυπηρετητή και στον

πελάτη που ζητά για παράδειγμα κάποια ιστοσελίδα ή το κατέβασμα κάποιου αρχείου του.

Προκειμένου να διεκπεραιώσει το αίτημα του πελάτη ο πληρεξούσιος εξυπηρετητής ελέγχει πρώτα αν

διαθέτει την πληροφορία στην δικιά του προσωρινή αποθήκη. Αν τη διαθέτει, τη στέλνει κατευθείαν,

χωρίς να χρειάζεται επικοινωνία με τον πραγματικό εξυπηρετητή. Αν δεν έχει διαθέσιμη την

πληροφορία, τότε αναλαμβάνει να την ζητήσει και στην συνέχεια να την προωθήσει στον πελάτη, ενώ

ταυτόχρονα την αποθηκεύει προσωρινά για την περίπτωση που του ζητηθεί ξανά η ίδια πληροφορία,

είτε από τον ίδιο πελάτη, είτε από κάποιον άλλο πελάτη. Εκτός από την προσωρινή αποθήκευση

αντικειμένων πιο κοντά στους πελάτες, οι πληρεξούσιοι εξυπηρετητές μπορεί να αναλάβουν και

άλλους ρόλους, όπως για παράδειγμα την μετατροπή μιας υπηρεσίας από μια μορφή σε μια άλλη (π.χ.

από HTML σε WAP).

Άσκηση αυτοαξιολόγησης 2.4

Τι είναι η προσωρινή αποθήκη και πως χρησιμοποιείται για την αύξηση της απόδοσης μιας υπηρεσίας;

Άσκηση αυτοαξιολόγησης 2.5

Ποια είναι τα πλεονεκτήματα της χρήσης πληρεξούσιου εξυπηρετητή ιστού (web proxy server);

Κινητός κώδικας

Κώδικας μπορεί να μετακινηθεί από τον εξυπηρετητή και να εκτελεστεί στον υπολογιστή που φιλοξενεί

την διεργασία του πελάτη. Ένα συνηθισμένο παράδειγμα κινητού κώδικα (mobile code) είναι τα Java

applets που εκτελούνται τοπικά από το πρόγραμμα περιήγησης ιστού του πελάτη. Το πλεονέκτημα

είναι η άμεση αλληλεπίδραση με τον χρήστη, χωρίς τις καθυστερήσεις του δικτύου επικοινωνίας. Σε

άλλες περιπτώσεις, οι εξυπηρετητές παρέχουν λειτουργικότητα που δεν είναι τυποποιημένη και

διαθέσιμη στα προγράμματα περιήγησης και χρειάζεται να σταλεί κώδικας από τον εξυπηρετητή στον

πελάτη, ο οποίος θα πρέπει να εκτελεστεί για να εγκαταστήσει επικοινωνία μεταξύ πελάτη και

εξυπηρετητή. Τέτοιος επιπρόσθετος κώδικας μπορεί να υλοποιεί το λεγόμενο μοντέλο ώθησης (push

model) κατά το οποίο ο εξυπηρετητής, αντί του πελάτη, ξεκινά μια αλληλεπίδραση. Για παράδειγμα ο

εξυπηρετητής μπορεί να τροφοδοτεί τον πελάτη με δεδομένα όταν αυτά γίνονται διαθέσιμα, χωρίς ο

πελάτης να μεριμνά για την ζήτησή τους.

Δραστηριότητα 2.8

Τι είναι ο κινητός κώδικας; Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της προσέγγισης

αυτής; Ανατρέξτε στη βιβλιογραφία και δώστε μερικά παραδείγματα χρήσης κινητού κώδικα.

Page 32: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

32

Δραστηριότητα 2.9

Καταγράψτε τα είδη των τοπικών πόρων που είναι ευάλωτα σε επίθεση από ένα μη έμπιστο

πρόγραμμα που έχει μεταφορτωθεί από έναν απομακρυσμένο εξυπηρετητή για να τρέξει τοπικά στον

υπολογιστή του πελάτη.

Κινητοί πράκτορες

Κινητός πράκτορας (mobile agent) είναι ένα εκτελέσιμο πρόγραμμα (περιλαμβάνει τόσο κώδικα όσο

και δεδομένα) που ταξιδεύει από υπολογιστή σε υπολογιστή μέσω δικτύου και διεκπεραιώνει κάποιες

εργασίες, όπως συλλογή πληροφοριών, για λογαριασμό κάποιας οντότητας, στην οποία τελικά

επιστρέφει κάποια αποτελέσματα. Συγκρίνοντας αυτή την αρχιτεκτονική με αυτή του στατικού πελάτη

που εκτελεί απομακρυσμένες κλήσεις σε αντικείμενα, πιθανώς συνοδευόμενες από μεταφορά μεγάλου

όγκου δεδομένων, μπορούμε να διαπιστώσουμε μια μείωση του κόστους και χρόνου επικοινωνίας

λόγω της αντικατάστασης των απομακρυσμένων κλήσεων με τοπικές. Από την άλλη πλευρά, οι κινητοί

πράκτορες (όπως και ο κινητός κώδικας) συνιστούν πιθανή απειλή στην ασφάλεια του υπολογιστή που

επισκέπτονται, καθώς μπορεί να περιέχουν κακόβουλο λογισμικό, όπως ιούς. Για αυτό το λόγο η

εκτέλεση κινητών πρακτόρων θα πρέπει να επιτρέπεται μόνο μετά από ασφαλή αναγνώριση της

ταυτότητας της οντότητας για λογαριασμό της οποίας αυτοί λειτουργούν.

Δραστηριότητα 2.10

Τι είναι οι κινητοί πράκτορες; Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της προσέγγισης

αυτής; Ανατρέξτε στη βιβλιογραφία και δώστε μερικά παραδείγματα χρήσης τους.

Υπολογιστές δικτύου

Οι υπολογιστές δικτύου (ΥΔ) (network computers) είναι υπολογιστές χαμηλού σχετικά κόστους, οι

οποίοι συνήθως δε διαθέτουν κάποιο τοπικό μόνιμο αποθηκευτικό μέσο (π.χ. σκληρό δίσκο) παρά

μόνο μνήμη RAM. Τα προγράμματα που τρέχουν στους υπολογιστές αυτούς, ακόμη και το λειτουργικό

τους σύστημα, βρίσκονται αποθηκευμένα σε απομακρυσμένους εξυπηρετητές αρχείων. Η πλειοψηφία

των προγραμμάτων είναι γραμμένα σε κάποια από τις εκδόσεις της γλώσσας Java, έτσι ώστε να

μπορούν να είναι ανεξάρτητα της πλατφόρμας στη οποία θα κληθούν να τρέξουν. Κατά συνέπεια το

μόνο που χρειάζεται ουσιαστικά να διαθέτει ένας ΥΔ είναι μια αξιόπιστη και γρήγορη σύνδεση με το

Διαδίκτυο. Η πρόσβαση σε έναν ΥΔ μπορεί να γίνεται με χρήση ειδικών καρτών οι οποίες φροντίζουν

για την ομαλή και ασφαλή διακίνηση των πληροφοριών μεταξύ Διαδικτύου και χρήστη, συνιστώντας

μια ασφαλή διεπαφή για δημόσια χρήση του ΥΔ. Εταιρείες όπως η Sun και η Oracle υποστηρίζουν την

αρχιτεκτονική των ΥΔ.

Δραστηριότητα 2.11

Τι είναι οι υπολογιστές δικτύου; Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της

προσέγγισης αυτής; Ανατρέξτε στη βιβλιογραφία και δώστε μερικά παραδείγματα χρήσης τους.

Ελαφριοί (λεπτοί) πελάτες

Page 33: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

33

H παραλλαγή του ελαφρύ πελάτη (thin client) αναφέρεται σε έναν υπολογιστή ή ένα στρώμα

λογισμικού που προσφέρει κυρίως την διεπαφή χρήσης μιας εφαρμογής, ενώ όλη η επιχειρησιακή

λογική εκτελείται σε έναν άλλο απομακρυσμένο υπολογιστή. Η αρχιτεκτονική αυτή χαρακτηρίζεται από

το χαμηλό κόστος λειτουργίας και διαχείρισης, παρόμοια με την περίπτωση των υπολογιστών δικτύου,

αλλά αντί τα προγράμματα εφαρμογών να μεταφορτώνονται στον υπολογιστή του πελάτη, αυτά

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

ελαφρύς πελάτης μπορεί να τρέχει σε έναν υπολογιστή με περιορισμένες δυνατότητες για εφαρμογές

όπως διαχείριση ηλεκτρονικού ταχυδρομείου και περιήγηση ιστού, ενώ μπορεί να συνδέεται σε ένα

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

διευκολύνει τον εντοπισμό προβλημάτων λειτουργίας, μειώνει την πολυπλοκότητα για τον τελικό

χρήστη, καθώς αυτός περιορίζεται μόνο στην εκμάθηση της χρήσης μιας εφαρμογής αντί ενός

υπολογιστικού περιβάλλοντος γενικού σκοπού, και τέλος διευκολύνει την παροχή μηχανισμών

ασφάλειας, καθώς αυτοί μπορούν να υλοποιηθούν κεντρικά στον εξυπηρετητή υπολογισμών (compute

server).

Δραστηριότητα 2.12

Τι είναι οι ελαφριοί πελάτες; Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα της προσέγγισης

αυτής; Ανατρέξτε στη βιβλιογραφία και δώστε μερικά παραδείγματα χρήσης τους.

Κινητές συσκευές και αυθόρμητη διαλειτουργικότητα

Κινητές συσκευές (mobile devices) όπως φορητοί υπολογιστές, κινητά τηλέφωνα και PDAs μπορούν να

συνδέονται στο δίκτυο χρησιμοποιώντας ασύρματες τεχνολογίες όπως GSM, 3G, WiFi και Bluetooth. Η

κινητικότητα οδηγεί σε μια παραλλαγή του μοντέλου πελάτη-εξυπηρετητή κατά το οποίο οι

συσχετίσεις μεταξύ των συσκευών έχουν εφήμερη μορφή. Καθώς ο χρήστης κινείται από το ένα δίκτυο

στο άλλο του προσφέρονται υπηρεσίες που σχετίζονται με το φυσικό περιβάλλον, όπως πληροφορίες

για αξιοθέατα στην περίπτωση που ο χρήστης ταξιδεύει σε διακοπές. Η κυριότερη πρόκληση σε αυτή

την αρχιτεκτονική είναι να επιτευχθεί γρήγορα και εύκολα (αυθόρμητα) η διαλειτουργικότητα μεταξύ

της συσκευής που φέρει ο χρήστης και των προσφερόμενων υπηρεσιών ακόμη και σε χώρους που ο

χρήστης επισκέπτεται για πρώτη φορά. Χρειάζεται συνεπώς μια ευέλικτη διαδικασία αναζήτησης

υπηρεσιών (service discovery) ώστε οι πελάτες να ανακαλύπτουν ποιες υπηρεσίες είναι διαθέσιμες στο

δίκτυο και ποιες είναι οι ιδιότητές τους.

Το Κεφάλαιο 16 εξετάζει σε μεγαλύτερο βάθος την αυθόρμητη διαλειτουργικότητα (spontaneous

interoperation) και ζητήματα που ανακύπτουν ως αποτέλεσμα της κινητικότητας των συσκευών.

Δραστηριότητα 2.13

Η αυθόρμητη δικτύωση εγείρει σημαντικά σχεδιαστικά ζητήματα. Περιγράψτε μερικά από αυτά.

3.4 Διεπαφές και αντικείμενα Από πλευράς λογισμικού το σύνολο των λειτουργιών που παρέχει μια διεργασία για επίκληση (είτε ως

εξυπηρετητής, είτε ως ομότιμη διεργασία) προσδιορίζεται από μια ή περισσότερες διεπαφές. Αν

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

Page 34: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

34

μπορεί να υλοποιεί τις υπηρεσίες του ως αντικείμενα λογισμικού. Αναφορές σε αυτά τα αντικείμενα

μπορούν να δοθούν σε άλλες διεργασίες ώστε αυτές να μπορούν να καλούν τις μεθόδους του

εξυπηρετητή απομακρυσμένα. Η θεώρηση του αντικειμενοστρεφούς μοντέλου στην υλοποίηση

κατανεμημένων συστημάτων (π.χ. CORBA, Java RMI) επιτρέπει στον αριθμό και τύπο των αντικειμένων

που εμπεριέχονται σε κάθε διεργασία να ποικίλουν, ανάλογα με τις απαιτήσεις των εργασιών του

συστήματος. ,Σε ορισμένες υλοποιήσεις ακόμη και η θέση των αντικειμένων μπορεί να μεταβάλλεται.

Στο Κεφάλαιο 5 γίνεται εκτενής συζήτηση για τις διεπαφές και τα αντικείμενα.

3.5 Σχεδιαστικές απαιτήσεις για κατανεμημένες αρχιτεκτονικές Για την επιτυχή υλοποίηση κατανεμημένων συστημάτων χρειάζεται να ικανοποιηθούν σημαντικές

σχεδιαστικές απαιτήσεις και να απαντηθούν οι αντίστοιχες προκλήσεις. Μερικές από αυτές είναι:

1. Απόδοση

2. Ποιότητα υπηρεσίας

3. Προσωρινή αποθήκευση και επανάληψη

4. Αξιοπιστία

Ζητήματα απόδοσης

Ζητήματα απόδοσης εμφανίζονται εξαιτίας των περιορισμένων διαθέσιμων πόρων (επεξεργαστική

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

κατηγορίες:

Ταχύτητα απόκρισης: Οι χρήστες αλληλεπιδραστικών εφαρμογών απαιτούν τόσο ταχύτητα όσο και

συνέπεια στην απόκριση των εφαρμογών. Ο στόχος της ταχύτητας απόκρισης επιβάλει τον σχεδιασμό

συστημάτων με όσο το δυνατόν λιγότερα επίπεδα λογισμικού και την υλοποίηση πρωτοκόλλων

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

Ρυθμαπόδοση: Η ρυθμαπόδοση (throughput) είναι ένα κλασικό μέτρο της απόδοσης ενός συστήματος

που εκφράζει τον ρυθμό διεκπεραίωσης των εργασιών. Τα πληροφοριακά συστήματα κοστίζουν και

συχνά επιλέγονται ανάλογα με την ικανότητά τους να διεκπεραιώνον την περισσότερη δουλειά με το

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

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

ρυθμαπόδοση των ενδιάμεσων στρωμάτων λογισμικού και ρυθμαπόδοση του δικτύου).

Εξισορρόπηση υπολογιστικού φορτίου: Η δυνατότητα υψηλής απόδοσης ενός συστήματος μπορεί να

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

των πόρων του συνολικού συστήματος. Ο σχεδιαστικός στόχος είναι όσο το δυνατόν περισσότερες

διεργασίες να εκτελούνται ταυτόχρονα χωρίς να ανταγωνίζονται για τους ίδιους πόρους, αλλά να

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

Δραστηριότητα 2.14

Page 35: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

35

Ποιοι παράγοντες επηρεάζουν την ταχύτητα απόκρισης μιας εφαρμογής που πρέπει να προσπελάσει

κοινά δεδομένα τα οποία διαχειρίζεται ένας file server. Περιγράψτε λύσεις που μπορούν να

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

Ποιότητα υπηρεσίας

Παράλληλα με την ικανοποίηση των λειτουργικών προδιαγραφών μιας υπηρεσίας εξετάζονται και οι

μη-λειτουργικές προδιαγραφές που επηρεάζουν την ποιότητα της παρεχόμενης υπηρεσίας. Οι βασικές

μη-λειτουργικές απαιτήσεις που σχετίζονται με την ποιότητα των παρεχόμενων στους πελάτες

υπηρεσιών είναι η απόδοση, η αξιοπιστία, η ασφάλεια και η προσαρμοστικότητα. Οι ιδιότητες αυτές

σχετίζονται στενά και με τα βασικά μοντέλα που παρουσιάζονται στην επόμενη ενότητα. Μερικές

εφαρμογές πρέπει να χειριστούν δεδομένα σε προκαθορισμένα χρονικά όρια. Για παράδειγμα, μια

υπηρεσία video για να παρέχεται επιτυχώς θα πρέπει τα πλαίσια του video να εναλλάσσονται στο

πρόγραμμα του πελάτη σε συγκεκριμένα χρονικά όρια.

Προσωρινή αποθήκευση και επανάληψη

Για την βελτίωση της ρυθμαπόδοσης, της διαθεσιμότητας και της ικανοποίησης χρονικών ορίων στις

εφαρμογές των κατανεμημένων συστημάτων χρησιμοποιούνται ευρέως οι τεχνικές της προσωρινής

αποθήκευση δεδομένων (caching) και η επανάληψη των δεδομένων σε πολλά σημεία (replication). Τα

δεδομένα που αποθηκεύονται μπορεί να είναι μικρού μεγέθους (διευθύνσεις ιστού) ή μεγάλου

μεγέθους (πολλαπλά αντίγραφα μιας εταιρικής ΒΔ). Ζητήματα δημιουργούνται όταν τα δεδομένα

αλλάζουν σε κάποιο σημείο αποθήκευσης σχετικά με την συνεπή ενημέρωση των υπόλοιπων

αντιγράφων.

Στο Κεφάλαιο 8 παρουσιάζονται ορισμένα πρωτόκολλα συνέπειας που έχουν δημιουργηθεί για το

σκοπό αυτό. Ένα τέτοιο είναι και το web-caching πρωτόκολλο που είναι τμήμα του HTTP πρωτοκόλλου.

Δραστηριότητα 2.6

Περιγράψτε τη διαφορά μεταξύ απομονωτή (buffer) και προσωρινής αποθήκης (cache).

Άσκηση αυτοαξιολόγησης 2.7

Δώστε μερικά παραδείγματα σφαλμάτων σε υλικό και λογισμικό τα οποία μπορούν ή δεν μπορούν να

αντιμετωπιστούν με την χρήση πλεονασμού (redundancy) σ’ ένα κατανεμημένο σύστημα.

Δραστηριότητα 2.15

Περιγράψτε με τη μορφή ψευδοκώδικα ή διαγράμματος ροής το web-caching πρωτόκολλο.

Ζητήματα αξιοπιστίας

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

σφάλματα. Η ορθότητα αφορά ότι τα δεδομένα είναι ενημερωμένα και ακριβή. Η ανοχή σε σφάλματα

αφορά την αντιμετώπιση σφαλμάτων και την ανάκαμψη του συστήματος χωρίς απώλεια δεδομένων. Η

Page 36: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

36

ασφάλεια περιλαμβάνει την αναγνώριση των χρηστών, τον προσδιορισμό δικαιωμάτων και την

υποστήριξη μηχανισμών για την προστασία του συστήματος και των δεδομένων.

4. Βασικά μοντέλα Όλα τα μοντέλα κατανεμημένων συστημάτων μοιράζονται τις ίδιες βασικές ιδιότητες και τις ίδιες

σχεδιαστικές απαιτήσεις. Στην ενότητα αυτή παρουσιάζονται μοντέλα που βασίζονται σε αυτές τις

βασικές ιδιότητες και μας επιτρέπουν να είμαστε πιο σαφείς στην διατύπωση των χαρακτηριστικών

αυτών των συστημάτων και των κινδύνων που σχετίζονται με την ασφάλεια και την αποτυχία τους.

Η μοντελοποίηση βασίζεται στην αφαίρεση (abstraction). Ο στόχος είναι να αγνοήσουμε κάποια

τμήματα του συστήματος για να επικεντρωθούμε σε κάποια άλλα. Μπορούμε να δούμε την αναλογία

με τα σχέδια (μοντέλα) κατασκευής ενός σπιτιού. Για παράδειγμα, το σχέδιο των υδραυλικών δεν αρκεί

από μόνο του για να χτίσουμε ένα σπίτι. Το σχέδιο αυτό όμως περιέχει όλη την πληροφορία που

χρειάζεται ο υδραυλικός για να υλοποιήσει τις υδραυλικές εγκαταστάσεις του σπιτιού. Για να χτιστεί το

σπίτι θα χρειαστούμε επιπλέον αρχιτεκτονικά σχέδια για την διαρρύθμιση των χώρων, ηλεκτρολογικά

σχέδια για τον ηλεκτρολόγο, διαγράμματα για τις ξύλινες κατασκευές που απευθύνονται στον

ξυλουργό, κ.α..

Μερικά από τα βασικά ερωτήματα που θα πρέπει να απαντά ένα μοντέλο είναι:

• Ποιες είναι οι βασικές οντότητες του συστήματος;

• Πως αλληλεπιδρούν οι οντότητες του συστήματος μεταξύ τους;

• Ποια χαρακτηριστικά επηρεάζουν την ατομική και την συλλογική συμπεριφορά αυτών των

οντοτήτων;

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

διάσταση που το μοντέλο θέλει να φωτίσει και να αποκρύψει οτιδήποτε άλλο δεν ενδιαφέρει. Ένα

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

περικλείει.

Όπως χρειαζόμαστε πολλές όψεις για την κατασκευή ενός σπιτιού (αρχιτεκτονικό σχέδιο, διάγραμμα

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

συστημάτων μπορεί να ακολουθήσει μια παρόμοια προσέγγιση.

Τα βασικά μοντέλα για την περιγραφή των κατανεμημένων συστημάτων συνοπτικά είναι:

• Το μοντέλο αλληλεπίδρασης (interaction model) εστιάζει στην αλληλεπίδραση μεταξύ των

διεργασιών που πραγματοποιείται μέσω ανταλλαγής μηνυμάτων, είτε για ανταλλαγή

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

αλληλεπίδραση μεταξύ διεργασιών επηρεάζεται από τις καθυστερήσεις του δικτύου και την

απουσία κοινού ρολογιού.

• Το μοντέλο αστοχιών (failure model)προσδιορίζει τα είδη αποτυχιών και την αξιόπιστη

επικοινωνία σε ένα κατανεμημένο σύστημα

Page 37: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

37

• Το μοντέλο ασφάλειας (security model) περιγράφει τις απειλές προς τις διεργασίες και την

επικοινωνία τους και ορίζει την έννοια του ασφαλούς καναλιού

4.1 Μοντέλο αλληλεπίδρασης Οι διεργασίες ατομικά εκτελούν αλγορίθμους ακολουθώντας μια ροή ελέγχου που καθορίζει κάθε

στιγμή την κατάστασή τους. Συνολικά όμως όλες οι διεργασίες που συμμετέχουν σε ένα κατανεμημένο

σύστημα έχουν συμπεριφορά και κατάσταση που περιγράφεται με κατανεμημένους αλγόριθμους που

συμπεριλαμβάνουν την μετάδοση μηνυμάτων μεταξύ των διεργασιών.

Άσκηση αυτοαξιολόγησης 2.8

Να αναφέρετε δύο σημαντικούς παράγοντες που επηρεάζουν την αλληλεπίδραση διεργασιών σε ένα

κατανεμημένο σύστημα.

Άσκηση αυτοαξιολόγησης 2.9

Να δώσετε τους ορισμούς των ακόλουθων όρων που σχετίζονται με την απόδοση ενός καναλιού

επικοινωνίας: λανθάνων χρόνος (latency), εύρος ζώνης (bandwidth) και διακύμανση (jitter).

Άσκηση αυτοαξιολόγησης 2.10

Τι σημαίνει ο όρος ολίσθηση ρολογιού (clock drift); Πως μπορεί να αντιμετωπιστεί ; Πως επηρεάζει την

αλληλεπίδραση διεργασιών;

Σε ένα κατανεμημένο σύστημα είναι δύσκολο να τεθούν χρονικά όρια σε σχέση με τον χρόνο που

απαιτείται για την ολοκλήρωση μιας διεργασίας, την παράδοση ενός μηνύματος ή για τον ρυθμό

ολίσθησης του ρολογιού. Δύο αντίθετες θεωρήσεις της παραπάνω παραδοχής μας δίνουν δύο απλά

μοντέλα: το πρώτο (μοντέλο σύγχρονων κατανεμημένων συστημάτων) θέτει μια αυστηρή παραδοχή για

τον χρόνο, ενώ το δεύτερο (μοντέλο ασύγχρονων κατανεμημένων συστημάτων) δε θέτει καμιά.

Άσκηση αυτοαξιολόγησης 2.11

Περιγράψτε το μοντέλο σύγχρονων κατανεμημένων συστημάτων; Ποια είναι η επίδραση αυτού του

μοντέλου στο σχεδιασμό κατανεμημένων συστημάτων;

Άσκηση αυτοαξιολόγησης 2.12

Περιγράψτε το μοντέλο ασύγχρονων κατανεμημένων συστημάτων; Ποια είναι η επίδραση αυτού του

μοντέλου στο σχεδιασμό κατανεμημένων συστημάτων;

Δραστηριότητα 2.13

Είναι εφικτός ο συγχρονισμός ρολογιών σε ένα ασύγχρονο σύστημα; Εξηγήστε;

Δραστηριότητα 2.16

Page 38: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

38

Θεωρήστε ένα απλό μοντέλο πελάτη εξυπηρετητή αρχιτεκτονικής 2-επιπέδων. Εξηγήστε γιατί στη

γενική περίπτωση δεν είναι εφικτό να τεθεί ένα χρονικό όριο σε σχέση με την απόκριση του

εξυπερετητή σε ένα αίτημα πελάτη. Τι θα πρέπει να συμβεί έτσι ώστε να είναι εφικτός ο ορισμός ενός

τέτοιου ορίου; Είναι κάτι τέτοιο μια πρακτική επιλογή;

Θεωρώντας ως συμβάν (event) την αποστολή ή τη λήψη ενός μηνύματος μας ενδιαφέρει να

γνωρίζουμε τη χρονική διάταξη των συμβάντων σε σχέση με την εκτέλεση των διεργασιών του

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

τη μορφή διάταξης συμβάντων (event ordering), ακόμη και χωρίς την ύπαρξη κοινού ρολογιού.

Άσκηση αυτοαξιολόγησης 2.14

Εξηγήστε την βασική αρχή του λογικού ρολογιού που προτάθηκε από τον Lamport για την

αντιμετώπιση του προβλήματος συγχρονισμού των φυσικών ρολογιών σε ένα κατανεμημένο σύστημα.

Δραστηριότητα 2.17

Η υπηρεσία Network Time Protocol μπορεί να χρησιμοποιηθεί για τον συγχρονισμό ρολογιών. Εξηγήστε

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

μεταξύ δυο ρολογιών;

4.2 Μοντέλο αστοχιών Σε ένα κατανεμημένο σύστημα μπορούν να αστοχήσουν τόσο οι διεργασίες όσο και τα μέσα

επικοινωνίας. Το μοντέλο αστοχιών ορίζει τους τρόπους εμφάνισης των αστοχιών έτσι ώστε να

κατανοηθούν οι συνέπειες των αστοχιών. Το μοντέλο διαχωρίζει τις περιπτώσεις αστοχιών για

διεργασίες και μέσα επικοινωνίας στις παρακάτω κατηγορίες: αστοχία παράλειψης (omission failure),

μη προσδιορισμένη αστοχία (arbitrary failure) και αστοχία χρονισμού (timing failure).

Αστοχίες παράλειψης. Τα σφάλματα που κατατάσσονται σε αυτή την κατηγορία αφορούν τις

περιπτώσεις που μια διεργασία ή ένα κανάλι επικοινωνίας αποτυγχάνει να διεκπεραιώσει τις

λειτουργίες για τις οποίες δημιουργήθηκε. Οι διεργασίες αποτυγχάνουν στην εκτέλεσή τους

(κατάρρευση) και τα κανάλια επικοινωνίας αποτυγχάνουν στην παράδοση των μηνυμάτων. Ένα κανάλι

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

της διεργασίας αποστολέα στον απομονωτή εισόδου της διεργασίας παραλήπτη. Αυτό μπορεί να

συμβεί λόγω έλλειψης χώρου στον απομονωτή εισόδου ή σε κάποια ενδιάμεση πύλη δικτύου ή σε

λάθος του δικτύου μετάδοσης.

Άσκηση αυτοαξιολόγησης 2.15

Πως μπορεί να γίνει ανίχνευση της αστοχίας μιας διεργασίας από άλλες διεργασίες και σε ποιες

περιπτώσεις αυτό είναι εφικτό και σε ποιες δεν είναι;

Άσκηση αυτοαξιολόγησης 2.16

Page 39: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

39

Ποια αστοχία ονομάζεται διακοπή κατόπιν αστοχίας (fail-stop);

Μη προσδιορισμένες αστοχίες. Ο όρος μη προσδιορισμένη ή Βυζαντινή αστοχία χρησιμοποιείται για

να περιγράψει τη χειρότερη περίπτωση σφάλματος όπου οποιοδήποτε λάθος μπορεί να συμβεί.

Άσκηση αυτοαξιολόγησης 2.17

Πως ερμηνεύεται η αυθαίρετη αστοχία για τις διεργασίες και πως για το κανάλι επικοινωνίας;

Αστοχίες συγχρονισμού. Οι αστοχίες συγχρονισμού συμβαίνουν μόνον στα σύγχρονα κατανεμημένα

συστήματα. Στα ασύγχρονα συστήματα μπορεί να παρουσιαστούν μεγάλες καθυστερήσεις, αλλά δε

θεωρούνται αστοχίες, καθώς δεν προβλέπεται κάποιο χρονικό όριο απόκρισης.

Ο όρος αξιόπιστη επικοινωνία ορίζεται σε σχέση με την εγκυρότητα και την ακεραιότητα ως εξής:

• εγκυρότητα: οποιοδήποτε μήνυμα στον απομονωτή εξόδου του αποστολέα παραδίδεται τελικά

στον απομονωτή εισόδου του παραλήπτη

• ακεραιότητα: το μήνυμα που παραλαμβάνεται είναι ταυτόσημο με αυτό που στάλθηκε, και

κανένα μήνυμα δεν παραδίδεται διπλά.

Κάλυψη αστοχιών. Σε ένα κατανεμημένο σύστημα οποιοδήποτε συστατικό μπορεί να αστοχήσει. Ο

στόχος είναι ακόμη και εάν υπάρξουν αστοχίες ο τελικός χρήστης να μην το αντιληφθεί. Για

παράδειγμα αν χαθεί ένα μήνυμα, τότε αυτό θα πρέπει να αναμεταδοθεί από το πρωτόκολλο

μεταφοράς. Αν μια διεργασία καταρρεύσει, τότε μπορεί να επανεκκινηθεί, αν και θα πρέπει να γίνει

κάποια πρόβλεψη για την αποθήκευση της κατάστασής της ενδιάμεσα ώστε να επανέλθει εκεί που

πρέπει. Για τα μηνύματα η αξιοπιστία της επικοινωνίας ορίζεται ως προς την εγκυρότητά τους και την

ακεραιότητά τους.

Άσκηση αυτοαξιολόγησης 2.18

Αναφέρατε τις περιπτώσεις αστοχιών συγχρονισμού στα σύγχρονα κατανεμημένα συστήματα.

Άσκηση αυτοαξιολόγησης 2.19

Θεωρήστε δύο υπηρεσίες επικοινωνίας με εφαρμογή σε ασύγχρονα κατανεμημένα συστήματα. Με την

υπηρεσία Α, μηνύματα μπορεί να χαθούν, να φθάσουν διπλά ή να καθυστερήσουν και τα checksums

αφορούν μόνον τις επικεφαλίδες. Με την υπηρεσία Β, μηνύματα μπορεί να χαθούν, να καθυστερήσουν

ή να παραδοθούν με γρήγορο ρυθμό που ο παραλήπτης αδυνατεί να χειριστεί, αλλά αυτά που

παραδίνονται φθάνουν με το σωστό περιεχόμενο.

Περιγράψτε τα είδη αστοχιών που μπορεί να εμφανίσει κάθε μια από τις παραπάνω υπηρεσίες.

Κατηγοριοποιήστε τις αστοχίες σε σχέση με τις ιδιότητες της εγκυρότητας και της ακεραιότητας.

Μπορεί η υπηρεσία Β να χαρακτηριστεί ως υπηρεσία αξιόπιστης επικοινωνίας;

Άσκηση αυτοαξιολόγησης 2.20

Page 40: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

40

Θεωρήστε ένα ζευγάρι διεργασιών Χ και Υ που χρησιμοποιούν την υπηρεσία επικοινωνίας Β από την

Άσκηση αυτοαξιολόγησης 2.19. Θεωρήστε ότι η Χ είναι πελάτης και η Υ είναι εξυπηρετητής και ότι η

επίκληση μιας λειτουργίας του εξυπηρετητή ισοδυναμεί με την αποστολή ενός μηνύματος-αίτηση από

την Χ στην Υ, ακολουθούμενο από την αποστολή ενός μηνύματος-απόκριση από την Υ στην Χ, αφού

γίνει η σχετική επεξεργασία στην Υ. Περιγράψτε τα είδη των αστοχιών που μπορούν να συμβούν από

την επίκληση μιας λειτουργίας.

Άσκηση αυτοαξιολόγησης 2.21

Θεωρήστε ότι μια βασική λειτουργία ανάγνωσης στο δίσκο μπορεί μερικές φορές να επιστρέψει τιμές

διαφορετικές από αυτές που είναι αποθηκευμένες στο δίσκο. Αναφέρατε το είδος της παραπάνω

αστοχίας. Με ποιον τρόπο μπορεί η παραπάνω αστοχία να καλυφθεί έτσι ώστε να παράγεται αστοχία

πιο ήπιας μορφής; Στη συνέχεια προτείνετε πως μπορεί να καλυφθεί και η ήπια αστοχία.

4.3 Μοντέλο ασφάλειας Η ασφάλεια ενός κατανεμημένου συστήματος μπορεί να επιτευχθεί με την εξασφάλιση των

διεργασιών, την εξασφάλιση των καναλιών επικοινωνίας και προστατεύοντας τα αντικείμενα που

υλοποιούν τις υπηρεσίες από μη εξουσιοδοτημένη πρόσβαση. Η προστασία των αντικειμένων μπορεί

να επιτευχθεί χρησιμοποιώντας τυπικές τεχνικές ελέγχου δικαιωμάτων πρόσβασης (access rights) που

συναντάμε και στα Λειτουργικά Συστήματα.

Για να μοντελοποιηθούν οι απειλές στο μοντέλο εισάγουμε την έννοια του εχθρού που είναι ικανός να

στείλει οποιοδήποτε μήνυμα σε οποιαδήποτε διεργασία και να διαβάσει ή να αντιγράψει οποιοδήποτε

μήνυμα που μεταδίδεται μεταξύ ενός ζευγαριού διεργασιών.

Οι απειλές είναι δυνατό να αντιμετωπιστούν με τον ορισμό ενός ασφαλούς καναλιού (secure channel)

που χρησιμοποιεί μηχανισμούς κρυπτογραφίας και αυθεντικοποίησης. Παραδείγματα ασφαλών

καναλιών είναι τα Virtual Private Networks και το Secure Sockets Layer πρωτόκολλο.

Άσκηση αυτοαξιολόγησης 2.22

Περιγράψτε τις απειλές που προέρχονται από έναν πιθανό εχθρό και αφορούν τις διεργασίες, το

κανάλι επικοινωνίας και άρνηση υπηρεσίας.

Άσκηση αυτοαξιολόγησης 2.23

Περιγράψτε τις ιδιότητες ενός ασφαλούς καναλιού.

5. Επανάληψη Το κεφάλαιο αυτό παρουσίασε τα βασικά μοντέλα των κατανεμημένων συστημάτων καθώς και

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

να ικανοποιηθούν κατά την σχεδίαση οποιουδήποτε κατανεμημένου συστήματος, ανεξαρτήτως

αρχιτεκτονικού μοντέλου. Τα βασικά μοντέλα παρέχουν αφηρημένες όψεις μόνον εκείνων των

Page 41: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

41

στοιχείων των κατανεμημένων συστημάτων, που συνήθως εστιάζουν στην επικοινωνία μεταξύ των

κόμβων, και επηρεάζουν ιδιότητες, όπως η ορθότητα, η αξιοπιστία και η ασφάλεια.

Page 42: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

42

ΚΕΦΑΛΑΙΟ 3 : Δικτύωση και

Διαδικτύωση

Σκοπός Ο σκοπός του κεφαλαίου είναι να παρουσιάσει τις θεμελιώδεις έννοιες και τεχνολογίες τοπικών

δικτύων, δικτύων ευρείας περιοχής και διαδικτύων που χρησιμοποιούνται στις επικοινωνίες των

κατανεμημένων συστημάτων.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Αναφέρετε τις απαιτήσεις δικτύωσης κατανεμημένων συστημάτων

• Αναφέρετε τους τύπους ενσύρματων και ασύρματων δικτύων

• Εξηγήσετε τη διαφορά μεταξύ των μεθόδων μεταγωγής πακέτου και μεταγωγής κυκλώματος

• Εξηγήσετε τη λειτουργία της ενθυλάκωσης

• Ονομάσετε και να περιγράψετε τα επτά επίπεδα του μοντέλου αναφοράς OSI

• Εξηγήσετε τη λειτουργία δύο βασικών αλγορίθμων δρομολόγησης σε IP δίκτυα

• Αναλύσετε τα χαρακτηριστικά του IPv4 και της στρατηγικής μετάβασης προς το IPv6

• Συγκρίνετε τα χαρακτηριστικά των πρωτοκόλλων μεταφοράς TCP και UDP

• Εξηγήσετε τις πολιτικές ασφαλείας και είδη φιλτραρίσματος που εφαρμόζουν τα firewalls

• Αναλύστε τις αρχές λειτουργίας και υλοποιήσεις των τεχνολογιών δικτύωσης Ethernet, WiFi,

Blootooth και ATM

Έννοιες κλειδιά ATM, Bluetooth, Ethernet, Firewall, IPv4, IPv6, TCP, UDP, WiFi, Διευθυνσιοδότηση, Δρομολόγηση,

Μεταγωγή κυκλώματος, Μεταγωγή πακέτου, Μοντέλο αναφοράς OSI, Όνομα περιοχής, Πρωτόκολλο,

Υποδίκτυο.

1. Εισαγωγή Τα δίκτυα που χρησιμοποιούνται στα κατανεμημένα συστήματα (ΚΣ) εμπεριέχουν ποικιλία μέσων

μετάδοσης (transmission media), π.χ. σύρματα, καλώδια, οπτικές ίνες και ασύρματα κανάλια,

συσκευών υλικού (hardware devices) όπως δρομολογητές, μεταγωγείς, γέφυρες, διανομείς (hubs),

επαναλήπτες και δικτυακές διεπαφές, και μονάδων λογισμικού (software components) όπως στοίβες

πρωτοκόλλων, χειριστές επικοινωνίας. Η λειτουργικότητα και απόδοση των ΚΣ και εφαρμογών

επηρεάζεται από όλα τα παραπάνω. Θα αναφερόμαστε στη συλλογή μονάδων υλικού και λογισμικού

που παρέχουν υπηρεσίες επικοινωνίας σε ένα ΚΣ ως υποσύστημα επικοινωνίας (communication

Page 43: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

43

subsystem). Ο όρος ξένιος Η/Υ (host) αναφέρεται σε Η/Υ και άλλες συσκευές που χρησιμοποιούν το

δίκτυο για να επικοινωνήσουν, ενώ ο όρος κόμβος (node) σε οποιοδήποτε Η/Υ ή συσκευή μεταγωγής

που συνδέεται στο δίκτυο.

Το Internet αποτελεί παράδειγμα υποσυστήματος επικοινωνίας που υποστηρίζει την επικοινωνία όλων

των hosts που συνδέονται σε αυτό. Το Internet αποτελείται από πολλά υποδίκτυα (subnets), δηλαδή

συλλογές κόμβων που συνδέονται στο ίδιο φυσικό δίκτυο. Οι υποδομές του Internet περιλαμβάνουν

μία αρχιτεκτονική και μονάδες υλικολογισμικού που ολοκληρώνουν διαφορετικά υποδίκτυα σε μία

υπηρεσία επικοινωνίας δεδομένων.

Το παρόν κεφάλαιο στοχεύει σε μία εισαγωγική επισκόπηση της δικτύωσης Η/Υ με αναφορά στις

επικοινωνιακές απαιτήσεις των ΚΣ.

Άσκηση αυτοαξιολόγησης 3.1

Ορίστε τις έννοιες ξένιος Η/Υ, κόμβος, υποδίκτυο, υποσύστημα επικοινωνίας.

1.1. Θέματα δικτύωσης κατανεμημένων συστημάτων Η εξέλιξη των ΚΣ και κατανεμημένων εφαρμογών σε συνδυασμό με την μεγέθυνση και εμπορική

επιτυχία του Internet, έχει φέρει στο προσκήνιο αυστηρές απαιτήσεις αξιοπιστίας, επεκτασιμότητας,

κινητικότητας, ασφάλειας και ποιότητας υπηρεσίας:

Απόδοση: οι παράμετροι δικτυακής απόδοσης που μας ενδιαφέρουν περισσότερο είναι εκείνες που

επηρεάζουν την ταχύτητα μεταφοράς μηνυμάτων μεταξύ δύο Η/Υ. Αυτές είναι η καθυστέρηση (latency)

και ο από σημείο-σε-σημείο ρυθμός μεταφοράς (transfer rate). Η καθυστέρηση αφορά το χρόνο που

μεσολαβεί από την ολοκλήρωση αποστολής δεδομένων και πριν την άφιξη στον προορισμό τους, ενώ ο

ρυθμός μεταφοράς την ταχύτητα με την οποία τα δεδομένα μεταφέρονται μεταξύ δύο Η/Υ (συνήθως

μετράται σε bps).

Επεκτασιμότητα: Η ραγδαία αύξηση του αριθμού των hosts που συνδέονται στο Internet αλλά και του

όγκου δεδομένων που διακινείται σε αυτό θέτει θέματα επεκτασιμότητας (scalability). Η ικανότητα του

Internet να αντιμετωπίσει αυτή τη μεγέθυνση θα εξαρτηθεί -εκτός από τις αλλαγές στους μηχανισμούς

διευθυνσιοδότησης και δρομολόγησης- από τις οικονομικές πολιτικές που θα χρησιμοποιηθούν.

Αξιοπιστία: Πολλές κατανεμημένες εφαρμογές μπορούν να επανακάμψουν από επικοινωνιακές

αποτυχίες, άρα δεν απαιτούν εγγυημένη, χωρίς σφάλματα επικοινωνία. Άλλωστε, ο εντοπισμός και

διόρθωση επικοινωνιακών σφαλμάτων συχνά γίνεται με μεγαλύτερη επιτυχία από λογισμικό του

επιπέδου εφαρμογών. Η αξιοπιστία των περισσότερων φυσικών μέσων μετάδοσης είναι υψηλή, τα

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

υπερχείλιση κάποιου buffer, παρά στο δίκτυο.

Ασφάλεια: το πρώτο επίπεδο άμυνας που υιοθετείται από τους περισσότερους οργανισμούς για την

ασφάλεια ΚΣ είναι η χρήση ενός firewall (μέρος ενός ΚΣ, σχεδιασμένου για να παρέχει διαβαθμισμένη

πρόσβαση στους πόρους του ΚΣ) . Για να μπορέσουν οι κατανεμημένες εφαρμογές να ξεπεράσουν τους

Page 44: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

44

περιορισμούς του firewall απαιτείται ένα ευέλικτο περιβάλλον που διασφαλίζει αυθεντικοποίηση και

ιδιωτικότητα.

Κινητικότητα: Οι μηχανισμοί του internet έχουν προσαρμοστεί και επεκταθεί ώστε να υποστηρίξουν

την κινητικότητα, ωστόσο αναμένεται ότι η μελλοντική μεγέθυνση στη χρήση κινητών συσκευών θα

απαιτήσει περαιτέρω προσαρμογή.

Ποιότητα υπηρεσίας: εφαρμογές που εκπέμπουν πολυμεσικά δεδομένα απαιτούν εγγυημένο εύρος

ζώνης και φραγμένες καθυστερήσεις στα επικοινωνιακά κανάλια που χρησιμοποιούν. Κάποιες

εφαρμογές προσαρμόζουν δυναμικά τις απαιτήσεις τους και προσδιορίζουν μια ελάχιστα αποδεκτή και

μια επιθυμητή βέλτιστη ποιότητα υπηρεσίας.

Πολυεκπομπή (multicasting): συχνά στα ΚΣ προκύπτει η ανάγκη για επικοινωνία ένας-προς-πολλούς.

Εδώ, η σειριακή αποστολή προς καθένα αποδέκτη είναι πιο ακριβή από ό,τι χρειάζεται και δεν

παρουσιάζει τα απαιτούμενα χαρακτηριστικά ανεκτικότητας σε λάθη. Για αυτούς τους λόγους, πολλές

δικτυακές τεχνολογίες υποστηρίζουν την ταυτόχρονη μετάδοση μηνυμάτων σε πολλαπλούς αποδέκτες.

Άσκηση αυτοαξιολόγησης 3.2

Αναφέρατε τις παραμέτρους από τις οποίες εξαρτάται η καθυστέρηση, ο ρυθμός μεταφοράς, ο χρόνος

μετάδοσης και το συνολικό εύρος ζώνης συστήματος σε ένα δίκτυο.

Δραστηριότητα 3.1

Ορίστε τον όρο επεκτασιμότητα. Από ποιες παραμέτρους εξαρτάται η επεκτασιμότητα στο Internet;

Δραστηριότητα 3.2

«Η ικανότητα του Internet να αντιμετωπίσει τη μεγέθυνσή του θα εξαρτηθεί και από οικονομικές

παραμέτρους, όπως χρεώσεις χρηστών και πρότυπα επικοινωνίας, π.χ. ο βαθμός τοπικότητας». Πως

αντιλαμβάνεστε αυτή την πρόταση; Ποιες άλλες πολιτικές χρέωσης θα μπορούσαν να εφαρμοστούν

ώστε να ελεγχθεί επεκτασιμότητα στο Ιnternet;

Άσκηση αυτοαξιολόγησης 3.3

Αναφέρατε 5 βασικές απαιτήσεις δικτύωσης κατανεμημένων συστημάτων.

Άσκηση αυτοαξιολόγησης 3.4

Αν ένας Η/Υ Α στείλει ένα μήνυμα συνολικού μήκους 10 KB μέσω ενός δικτύου (με ρυθμό μεταφοράς

10 Μbps και μέση καθυστέρηση 100 msec) που επιτρέπει τμήματα (segments) μέγιστου μήκους 1 ΚΒ,

υπολογίστε το συνολικό χρόνο μετάδοσης του μηνύματος. Πόσος θα γίνει ο χρόνος αυτός αν το δίκτυο

χρησιμοποιεί ένα πρωτόκολλο πρόσβασης με διαίρεση χρόνου (TDMA MAC protocol) με συνολικά 100

χρονοθυρίδες;

Page 45: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

45

2. Τύποι δικτύων Αναφερόμαστε στους κύριους τύπους δικτύων που χρησιμοποιούνται για να υποστηρίξουν

κατανεμημένα συστήματα:

Δίκτυα προσωπικής περιοχής (Personal Area Networks, PANs): αποτελούν υποκατηγορία των τοπικών

δικτύων, όπου οι διάφορες ψηφιακές συσκευές που μεταφέρονται από ένα χρήστη συνδέονται μέσω

ενός χαμηλού κόστους και ενέργειας δικτύου. Τα ασύρματα δίκτυα προσωπικής περιοχής (Wireless

PANs, WPANs), όπως το Bluetooth, είναι αυξημένης σημασίας λόγω του μεγάλου αριθμού συσκευών

όπως κινητά τηλέφωνα, PDAs, κάμερες, αναπαραγωγείς μουσικής, κλπ, που βρίσκονται σε ευρεία

χρήση σήμερα.

Δίκτυα τοπικής περιοχής (Local Area Networks, LANs): τα LANs μεταφέρουν μηνύματα με σχετικά

μεγάλη ταχύτητα μεταξύ Η/Υ που συνδέονται στο ίδιο μέσο επικοινωνίας. Τα μεγαλύτερα LANs

αποτελούνται από πολλά τμήματα (segments) που διασυνδέονται με μεταγωγείς (switches) ή hubs. Στα

LANs, το συνολικό εύρος ζώνης συστήματος είναι υψηλό και η καθυστέρηση είναι χαμηλή, εκτός αν η

δικτυακή κίνηση είναι πολύ υψηλή. Από τις LAN τεχνολογίες που αναπτύχθηκαν στις αρχές τις

δεκαετίας 1970 (Ethernet, δακτύλιοι με κουπόνια, δακτύλιοι με θυρίδες), το Ethernet αναδείχθηκε σε

de-facto πρωτόκολλο στα ενσύρματα LANs.

Δίκτυα μητροπολιτικής περιοχής (Metropolitan Area Networks, MANs): αυτός ο τύπος δικτύου

βασίζεται σε υψηλού εύρους ζώνης χάλκινα καλώδια και οπτικές ίνες που έχουν αναπτυχθεί σε κάποιες

πόλεις για τη μετάδοση video, φωνής και άλλων δεδομένων σε αποστάσεις μέχρι 50 km. Η τεχνολογία

γραμμής ψηφιακής συνδρομής (digital subscriber line, DSL) και τα καλωδιακά modems αποτελούν

παραδείγματα MANs.

Δίκτυα ευρείας περιοχής (Wide Area Networks, WANs): τα WANs μεταφέρουν μηνύματα με μικρότερες

ταχύτητες μεταξύ κόμβων που ανήκουν συχνά σε διαφορετικούς οργανισμούς και χωρίζονται από

μακρινές αποστάσεις. Το μέσο επικοινωνίας είναι ένα σύνολο κυκλωμάτων επικοινωνίας που

διασυνδέουν ένα σύνολο από δρομολογητές (routers), οι οποίοι δρομολογούν μηνύματα ή πακέτα

προς τον προορισμό τους.

Ασύρματα δίκτυα τοπικής περιοχής (Wireless Local Area Networks, WLANs): σχεδιάστηκαν για να

χρησιμοποιηθούν στη θέση των ενσύρματων LANs ώστε να παράσχουν συνδεσιμότητα σε κινητές

συσκευές ή απλά για να απαλείψουν την ανάγκη ενσύρματης υποδομής για τη σύνδεση Η/Υ μεταξύ

τους ή στο Internet. Χρησιμοποιούνται ευρέως σε παραλλαγές του προτύπου IEEE 802.11 (WiFi).

Ασύρματα δίκτυα μητροπολιτικής περιοχής (Wireless Metropolitan Area Networks, WMANs): To

πρότυπο IEEE 802.16 (WiMAX) στοχεύει σε αυτό τον τύπο δικτύων, παρέχοντας εναλλακτική λύση στις

ενσύρματες συνδέσεις.

Ασύρματα δίκτυα ευρείας περιοχής (Wireless Wide Area Networks, WWANs): Πολλά δίκτυα κινητής

τηλεφωνίας βασίζονται σε ψηφιακές ασύρματες διαδικτυακές τεχνολογίες όπως το GSM. Τα κινητά

δίκτυα έχουν σχεδιαστεί για να λειτουργούν σε ευρείες περιοχές μέσω της χρήσης κυψελωτών

Page 46: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

46

ραδιοσυνδέσεων. Τα κινητά δίκτυα 3ης

γενιάς (3G) προσφέρουν αρκετά υψηλότερους ρυθμούς

μετάδοσης δεδομένων από τα GSM (2G) δίκτυα.

Διαδίκτυα (internetworks): ένα διαδίκτυο είναι ένα υποσύστημα επικοινωνίας στο οποίο διάφορα

δίκτυα συνδέονται μεταξύ τους για να προσφέρουν κοινές υπηρεσίες επικοινωνίας δεδομένων που

επικαλύπτουν τις τεχνολογίες και πρωτόκολλα των επιμέρους δικτύων και των μεθόδων που

χρησιμοποιούνται για τη διασύνδεσή τους.

Δραστηριότητα 3.3

Ποιοι οι διαφορετικοί τύπου ενσύρματων και ασύρματων δικτύων που χρησιμοποιούνται σε ΚΣ;

Συγκρίνετε τα σημαντικότερα λειτουργικά τους χαρακτηριστικά και αναφέρατε παραδείγματα

τεχνολογιών και προτύπων σε κάθε τύπο.

Δραστηριότητα 3.4

Ποιες είναι οι κυρίαρχοι παράμετροι που εισάγουν καθυστέρηση σε ένα WAN;

Δραστηριότητα 3.5

Ποια τα πλεονεκτήματα της ασύρματης έναντι της ενσύρματης δικτύωσης;

3. Αρχές δικτύωσης Η βάση όλων των δικτύων Η/Υ είναι η τεχνική μεταγωγής πακέτου (packet switching) που αναπτύχθηκε

στη δεκαετία 1960. Επιτρέπει σε πακέτα δεδομένων με διαφορετικούς προορισμούς να διαμοιραστούν

μια κοινή ζεύξη επικοινωνίας, αντίθετα με τη μεταγωγή κυκλώματος (circuit switching) που

χρησιμοποιείται στην παραδοσιακή τηλεφωνία.

3.1. Εκπομπή πακέτου Στις περισσότερες εφαρμογές δικτύων Η/Υ απαιτείται μετάδοση λογικών μονάδων πληροφορίας ή

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

μήνυμα, διαιρείται σε πακέτα (packets). Η απλούστερη μορφή ενός πακέτου είναι μια σειρά δυαδικών

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

τον προσδιορισμό του αποστολέα και αποδέκτη του πακέτου.

3.2. Ροές δεδομένων Οι πολυμεσικές εφαρμογές βασίζονται στην εκπομπή ρευμάτων από στοιχεία δεδομένων ήχου ή video

με εγγυημένους ρυθμούς και φραγμένες καθυστερήσεις. H ρευμάτωση (streaming) ήχου και video

απαιτεί πολύ υψηλότερο εύρος ζώνης από τις περισσότερες άλλες μορφές επικοινωνίας σε ΚΣ.

3.3. Σχήματα μεταγωγής Για την εκπομπή πληροφορίας μεταξύ δύο κόμβων σε ένα δίκτυο απαιτείται κάποιο σύστημα

μεταγωγής. Εδώ ορίζονται τέσσερις τύποι μεταγωγής:

Page 47: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

47

Πανεκπομπή (Broadcast): πρόκειται για μια τεχνική εκπομπής που δε χρησιμοποιεί μεταγωγή κι όπου

οποιαδήποτε πληροφορία εκπέμπεται σε κάθε κόμβο. Κάποιες LAN τεχνολογίες όπως το Ethernet αλλά

και η ασύρματη δικτύωση βασίζονται στην πανεκπομπή.

Μεταγωγή κυκλώματος (circuit switching): αφορά την από-άκρο-σε-άκρο δέσμευση ενός καναλιού

(κυκλώματος) για την επικοινωνία μεταξύ δύο κόμβων, καθ’ όσο διαρκεί η επικοινωνία. Τυπική

εφαρμογή αυτής της μεθόδου αποτελεί η «παραδοσιακή» τηλεφωνία.

Μεταγωγή πακέτου (packet switching): Οι Η/Υ και η ψηφιακή τεχνολογία έφεραν στο προσκήνιο

δυνατότητες επεξεργασίας και αποθήκευσης πληροφορίας. Αυτό επέτρεψε τη δημιουργία του

«αποθήκευσε-και-προώθησε» (store-and-forward) τύπου δικτύων. Κάθε πακέτο που φτάνει σε ένα

κόμβο πρώτα αποθηκεύεται στη μνήμη του κόμβου και έπειτα υφίσταται επεξεργασία από ένα

πρόγραμμα που το εκπέμπει σε ένα εξερχόμενο κύκλωμα το οποίο θα το μεταφέρει σε ένα άλλο

κόμβο, πλησιέστερα στον προορισμό του. Εδώ δε δεσμεύονται από-άκρο-σε-άκρο επικοινωνιακοί

πόροι (κανάλια) για την επικοινωνία δύο κόμβων.

Αναμετάδοση πλαισίου (Frame relay): φέρνει κάποια από τα πλεονεκτήματα της μεταγωγής

κυκλώματος στη μεταγωγή πακέτου για να αντιμετωπιστούν τα προβλήματα καθυστέρησης των

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

(frames) εξετάζοντας τα πρώτα λίγα bits τους. Τα πλαίσια δεν αποθηκεύονται στους κόμβους αλλά

περνούν μέσα από αυτούς ως σύντομα ρεύματα από bits.

Δραστηριότητα 3.6

Ποια τα σχήματα μεταγωγής που χρησιμοποιούνται στα δίκτυα Η/Υ; Ποια είναι κατά τη γνώμη σας τα

πλεονεκτήματα και ποια τα μειονεκτήματα της πανεκπομπής; Σε τι υπερτερεί και σε τι μειονεκτεί η

μεταγωγή πακέτου έναντι της μεταγωγής κυκλώματος;

3.4. Πρωτόκολλα Ο όρος πρωτόκολλο (protocol) αναφέρεται σε ένα σύνολο κανόνων και μορφών που χρησιμοποιούνται

για την επικοινωνία μεταξύ διεργασιών ώστε να εκτελέσουν ένα έργο. Ο όρος περιλαμβάνει δύο μέρη:

τις προδιαγραφές μιας σειράς μηνυμάτων που πρέπει να ανταλλαχθούν και της μορφής των

δεδομένων των μηνυμάτων.

Στρώματα πρωτοκόλλων: το δικτυακό λογισμικό οργανώνεται σε μια λογική ιεραρχία στρωμάτων. Κάθε

στρώμα παρέχει μια διεπαφή στα υπερκείμενα στρώματα που επεκτείνει τις ιδιότητες του

υποκείμενου συστήματος επικοινωνίας. Κάθε στρώμα αναπαρίσταται από μια μονάδα σε κάθε Η/Υ που

συνδέεται στο δίκτυο. Κάθε μονάδα εμφανίζεται να επικοινωνεί απευθείας με μια μονάδα αντίστοιχου

επιπέδου σε άλλον Η/Υ του δικτύου, ωστόσο, στην πραγματικότητα δε μεταδίδονται δεδομένα μεταξύ

μονάδων ιδίου επιπέδου. Αντίθετα, κάθε μονάδα επικοινωνεί με τοπικές κλήσεις με τα υπερκείμενα

και υποκείμενα στρώματα. Στην πλευρά του αποστολέα, κάθε στρώμα (εξαιρουμένου του ανώτατου,

στρώματος εφαρμογής), δέχεται δεδομένα σε μια συγκεκριμένη μορφή η οποία ορίζεται από το

υπερκείμενο στρώμα και εφαρμόζει μετασχηματισμούς για να ενθυλακώσει (encapsulation) τα

δεδομένα σε μορφή που ορίζεται σε αυτό το στρώμα, πριν τα περάσει στο υποκείμενο στρώμα για

Page 48: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

48

περαιτέρω επεξεργασία. Η αντίστροφη διαδικασία μετασχηματισμών των δεδομένων εφαρμόζεται στα

στρώματα του αποδέκτη του μηνύματος.

Σουίτες πρωτοκόλλων: ένα ολοκληρωμένο σύνολο στρωμάτων πρωτοκόλλων είναι γνωστό ως σουίτα

πρωτοκόλλων ή στοίβα πρωτοκόλλων. Η πλέον διαδεδομένη στοίβα πρωτοκόλλων είναι συμβατή με το

μοντέλο αναφοράς επτά στρωμάτων του OSI (open systems interconnection), το οποίο έχει υιοθετηθεί

από τον ISO (International Organization for Interconnection). Τα επίπεδα του μοντέλου αναφοράς OSI

είναι τα φυσικό επίπεδο, επίπεδο ζεύξης δεδομένων, επίπεδο δικτύου, επίπεδο μεταφοράς, επίπεδο

συνόδου, επίπεδο παρουσίασης και επίπεδο εφαρμογής. Οι σουίτες πρωτοκόλλων που

συμμορφώνονται με το μοντέλο αναφοράς OSI πρέπει να περιλαμβάνουν τουλάχιστον ένα πρωτόκολλο

σε καθένα από τα 7 επίπεδα που ορίζει το μοντέλο. Η στρωμάτωση πρωτοκόλλων απλουστεύει και

γενικεύει τις διεπαφές λογισμικού για την πρόσβαση στις υπηρεσίες επικοινωνίας των δικτύων, αλλά

συνεπάγεται και το κόστος της μεταφοράς κάθε μηνύματος δια του λογισμικού των 7 επιπέδων. Στη

στοίβα πρωτοκόλλων του Internet, τα επίπεδα εφαρμογής, παρουσίασης και συνόδου εμφανίζονται

ενοποιημένα.

Ανασύνθεση πακέτων: το καθήκον του διαχωρισμού των μηνυμάτων σε πακέτα πριν την μετάδοση και

η ανασύνθεσή τους στον αποδέκτη Η/Υ συνήθως εκτελείται στο επίπεδο μεταφοράς. Τα πακέτα του

στρώματος δικτύου αποτελούνται από επικεφαλίδα και πεδίο δεδομένων. Στις περισσότερες δικτυακές

τεχνολογίες, το πεδίο δεδομένων έχει ένα μέγιστο επιτρεπόμενο μήκος (maximum transfer unit, MTU).

Όποτε το μήκος του μηνύματος υπερβαίνει το MTU του υποκείμενου στρώματος, τότε τεμαχίζεται σε

μονάδες δεδομένων κατάλληλου μεγέθους, με αύξοντα αριθμό που χρησιμοποιείται για την

ανασύνθεσή του.

Θύρες (ports): το καθήκον του στρώματος μεταφοράς είναι να προσφέρει υπηρεσία μεταφοράς –

ανεξαρτήτως δικτύου- μεταξύ ζευγών από θύρες (ορισμένες από λογισμικό σημείων προορισμού στον

ξένιο Η/Υ).

Διευθυνσιοδότηση: το στρώμα μεταφοράς είναι υπεύθυνο για την παράδοση μηνυμάτων σε

προορισμούς με μια διεύθυνση μεταφοράς που αποτελείται από τη διεύθυνση δικτύου του ξένιου Η/Υ

και τον αριθμό θύρας. Η διεύθυνση δικτύου προσδιορίζει μοναδικά έναν ξένιο Η/Υ και επιτρέπει τον

εντοπισμό του από κόμβους που είναι υπεύθυνοι για τη δρομολόγηση δεδομένων. Στο Internet, σε

κάθε ξένιο Η/Υ ανατίθεται μία IP διεύθυνση που προσδιορίζει το υποδίκτυο στο οποίο είναι

συνδεδεμένος.

Παράδοση πακέτων: Υπάρχουν δύο προσεγγίσεις στη μετάδοση πακέτων από το στρώμα δικτύου:

� παράδοση πακέτων datagrams (αυτόνομων πακέτων), όπου η παράδοση κάθε πακέτου

διεκπεραιώνεται σε ένα βήμα, δεν απαιτείται η εγκατάσταση κάποιας σύνδεσης και η διαδρομές

που ακολουθούν πακέτα που ανταλλάσσονται μεταξύ μιας αφετηρίας και ενός προορισμού

μπορούν να είναι διαφορετικές. Παραδείγματα τέτοιας προσέγγισης αποτελεί το στρώμα δικτύου

του Internet (IP) και το Ethernet.

� παράδοση πακέτων μέσω εικονικού κυκλώματος, όπου ένα εικονικό κύκλωμα (που πιθανά

περιλαμβάνει ενδιάμεσους κόμβους) εγκαθίσταται πριν αρχίσει η ανταλλαγή μηνυμάτων και

Page 49: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

49

χρησιμοποιείται για τη δρομολόγηση των πακέτων. Παράδειγμα τέτοιας προσέγγισης αποτελεί η

τεχνολογία ATM.

Άσκηση αυτοαξιολόγησης 3.5

Πως ορίζεται η έννοια του πρωτοκόλλου και ποια τα συστατικά του μέρη; Ποια η λειτουργία ενός

πρωτοκόλλου μεταφοράς και ποια ενός πρωτοκόλλου δικτύου;

Άσκηση αυτοαξιολόγησης 3.6

Ποιο σκοπό εξυπηρετούν τα στρώματα πρωτοκόλλων; Περιγράψτε τη διαδικασία της ενθυλάκωσης και

τη ροή της πληροφορίας στα στρώματα πρωτοκόλλων.

Άσκηση αυτοαξιολόγησης 3.7

Ονομάστε τα επτά επίπεδα του μοντέλου αναφοράς OSI, τη λειτουργία καθενός από αυτά και

αντιπροσωπευτικά παραδείγματα πρωτοκόλλων που λειτουργούν σε καθένα από αυτά.

Άσκηση αυτοαξιολόγησης 3.8

Περιγράψτε τη διαδικασία κατάτμησης/ανασύνθεσης ενός μηνύματος μήκους 5000 bytes που

μεταδίδεται χρησιμοποιώντας μια στοίβα πρωτοκόλλων στα οποία το πρωτόκολλο του επιπέδου

δικτύου έχει MTU = 1500 bytes και πρωτόκολλο του επιπέδου ζεύξης δεδομένων έχει MTU = 500 bytes.

Δραστηριότητα 3.7

Ποιες οι διαφορές μεταξύ των προσεγγίσεων παράδοσης πακέτων datagrams και παράδοσης πακέτων

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

από αυτές τις προσεγγίσεις;

3.5. Δρομολόγηση Η δρομολόγηση είναι μια λειτουργία απαραίτητη σε κάθε δίκτυο, με εξαίρεση LANs όπως το Ethernet

που παρέχουν άμεση σύνδεση μεταξύ όλων των ζευγών των συνδεδεμένων Η/Υ. Σε μεγάλα δίκτυα

εφαρμόζεται προσαρμοζόμενη δρομολόγηση: η καλύτερη διαδρομή για την επικοινωνία μεταξύ δύο

σημείων στο δίκτυο επανα-υπολογίζεται περιοδικά, λαμβάνοντας υπόψη την τρέχουσα κίνηση στο

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

πακέτων στον προορισμό τους αποτελεί συλλογική ευθύνη των δρομολογητών που λειτουργούν σε

σημεία σύνδεσης. Εκτός και αν η αφετηρία και προορισμός βρίσκονται στο ίδιο LAN, το πακέτο πρέπει

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

διαδρομών των πακέτων είναι ευθύνη ενός αλγορίθμου δρομολόγησης, που υλοποιείται από ένα

πρόγραμμα το οποίο εκτελείται στο στρώμα δικτύου κάθε κόμβου. Ένας αλγόριθμος δρομολόγησης

έχει δύο μέρη: λαμβάνει αποφάσεις για να καθορίσει τη διαδρομή ενός πακέτου καθώς ταξιδεύει στο

δίκτυο και ενημερώνει δυναμικά τη γνώση για την τρέχουσα κατάσταση του δικτύου (δικτυακό φόρτο,

αλλαγές ή σφάλματα στη διαμόρφωση, κλπ). Όλες αυτές οι δραστηριότητες είναι κατανεμημένες σε

όλο το δίκτυο.

Page 50: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

50

Άσκηση αυτοαξιολόγησης 3.9

Μελετήστε τα Σχήματα 3.7, 3.8 και 3.9 που περιγράφουν έναν αλγόριθμο δρομολόγησης που βασίζεται

σε διάνυσμα απόστασης (‘distance vector’). Υποθέστε ότι ο δρομολογητής Β αντιλαμβάνεται ένα

σφάλμα στη ζεύξη 4. Περιγράψτε τη διαδικασία ενημέρωσης του πίνακα δρομολόγησης του

δρομολογητή Α («εκτελώντας» τον ψευδοκώδικα του Σχήματος 3.9).

3.6. Έλεγχος συμφόρησης Η χωρητικότητα ενός δικτύου εξαρτάται από την απόδοση των ζεύξεων και των κόμβων-μεταγωγέων.

Όταν ο φόρτος σε μία ζεύξη ή κόμβο πλησιάσει τη χωρητικότητά του, δημιουργούνται ουρές στους

ξένιους Η/Υ που προσπαθούν να στείλουν πακέτα και στους ενδιάμεσους κόμβους όπου η εκπομπή

των πακέτων που κρατούν εμποδίζεται από το φόρτο της εξερχόμενης ζεύξης. Εφόσον ο φόρτος

εξακολουθήσει στο ίδιο επίπεδο, σύντομα οι χώροι προσωρινής αποθήκευσης (buffers) στους κόμβους

θα υπερχειλίσουν. Παρότι η περιστασιακή απώλεια πακέτων είναι ανεκτή (μπορεί να σχεδιασθεί

επανεκπομπή μελλοντικά), όταν ο ρυθμός απώλειας ξεπεράσει ένα επίπεδο η επίδραση στη

ρυθμαπόδοση (throughput) του δικτύου είναι καταστροφική. Αντί να επιτρέπεται σε πακέτα να

ταξιδεύουν μέχρι να φτάσουν σε σημεία (κόμβους) συμφόρησης, είναι προτιμότερο να κρατηθούν σε

προηγούμενους κόμβους έως ότου η συμφόρηση μειωθεί. Αυτό θα έχει ως συνέπεια αύξηση της

καθυστέρησης αλλά δε θα μειώσει σημαντικά τη ρυθμαπόδοση. Οι τεχνικές που έχουν αναπτυχθεί για

να επιτύχουν αυτό το στόχο ονομάζονται τεχνικές ελέγχου συμφόρησης.

Δραστηριότητα 3.8

Ποια η σκοπιμότητα ελέγχου συμφόρησης σε ένα δίκτυο; Ποιο το μειονέκτημα της χρήσης ενός

μηχανισμού ελέγχου συμφόρησης σε ένα δίκτυο;

3.7. Διασυνδεσιμότητα Υπάρχουν πολλές δικτυακές τεχνολογίες με διαφορετικά πρωτόκολλα φυσικού επιπέδου και επιπέδων

ζεύξης δεδομένων και δικτύου (π.χ. LANs που χρησιμοποιούν Ethernet και ATM τεχνολογίες). Η

δημιουργία ενός ολοκληρωμένου δικτύου ή διαδικτύου (internetwork) περιλαμβάνει την ολοκλήρωση

πολλών τέτοιων υποδικτύων που κάνουν χρήση διαφορετικών δικτυακών τεχνολογιών και προϋποθέτει

ένα ενοποιημένο σχήμα διευθυνσιοδότησης, ένα πρωτόκολλο που να ορίζει τη μορφή των πακέτων και

συσκευές διασύνδεσης και δρομολόγησης πακέτων. Στο Internet οι παραπάνω προϋποθέσεις

καλύπτονται από τις IP διευθύνσεις, το IP πρωτόκολλο και τους Internet δρομολογητές. Οι συσκευές

που εμφανίζονται σε ένα διαδίκτυο είναι:

Δρομολογητές: είναι υπεύθυνοι για την προώθηση των πακέτων στο διαδίκτυο που φθάνουν από

οποιαδήποτε εισερχόμενη ζεύξη στη σωστή εξερχόμενη ζεύξη. Διατηρούν πίνακες δρομολόγησης για

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

υποδικτύων.

Γέφυρες: διασυνδέουν δίκτυα διαφορετικών τύπων. Κάποιες γέφυρες διασυνδέουν πολλαπλά δίκτυα

και αναφέρονται ως γέφυρες/δρομολογητές καθώς εκτελούν και λειτουργίες δρομολόγησης.

Page 51: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

51

Διανεμητές: αποτελούν βολικές συσκευές για τη διασύνδεση ξένιων Η/Υ και την επέκταση Ethernet

τμημάτων και άλλων τεχνολογιών τοπικών δικτύων πανεκπομπής.

Μεταγωγείς: εκτελούν μια παρόμοια λειτουργία με τους δρομολογητές αλλά σε τοπικά δίκτυα μόνο

(συνήθως Ethernet). Έτσι, διασυνδέουν πολλαπλά Ethernet δίκτυα δρομολογώντας τα εισερχόμενα

πακέτα στο κατάλληλο εξερχόμενο δίκτυο. Το πλεονέκτημά τους σε σύγκριση με τους διανεμητές είναι

ότι διαχωρίζουν την εισερχόμενη κίνηση και την εκπέμπουν μόνο στο κατάλληλο εξερχόμενο δίκτυο,

μειώνοντας έτσι τη συμφόρηση στα υπόλοιπα.

Πρωτόκολλα διόδου: ένα ζεύγος κόμβων συνδεδεμένων σε απομακρυσμένα δίκτυα του ίδιου τύπου

μπορούν να επικοινωνήσουν μέσω ενός δικτύου διαφορετικού τύπου κατασκευάζοντας ένα

πρωτόκολλο «διόδου», δηλαδή ένα στρώμα λογισμικού που εκπέμπει πακέτα μέσω ενός αγνώστου

δικτυακού περιβάλλοντος. Για παράδειγμα, επιτρέπει σε δύο IPv6 «νησιά» να επικοινωνήσουν δια

μέσω ενός IPv4 δικτύου (στα άκρα των «νησιών», τα IPv6 πακέτα ενθυλακώνονται σε IPv4 πακέτα τα

οποία δρομολογούνται κανονικά στο IPv4 δίκτυο.

Άσκηση αυτοαξιολόγησης 3.10

Εξηγήστε τη λειτουργία των δρομολογητών, γεφυρών, διανεμητών και μεταγωγέων. Ποιες οι διαφορές

μεταξύ δρομολογητών και διανεμητών;

Δραστηριότητα 3.9

Ποιος ο ρόλος των «διόδων» κατά τη δρομολόγηση πακέτων σε ένα διαδίκτυο. Περιγράψτε πως

μπορούν να επικοινωνήσουν δύο IPv6 δίκτυα δια μέσω ενός IPv4 δικτύου.

4. Internet πρωτόκολλα Αυτή η ενότητα περιγράφει τα κύρια χαρακτηριστικά της σουίτας πρωτοκόλλων TCP/IP (Transport

Control Protocol/Internet Protocol) και αναλύει τα πλεονεκτήματα και μειονεκτήματά της όταν

χρησιμοποιείται σε κατανεμημένα συστήματα. Η σουίτα αυτή αποτέλεσε εξαρχής βασικό πυλώνα του

Internet. Πολλές εφαρμογές και πρωτόκολλα του επιπέδου εφαρμογών βασίζονται στο TCP/IP,

συμπεριλαμβανομένου του web (HTTP), email (SMTP, POP), μεταφοράς αρχείων (FTP), κλπ. Για

παράδειγμα, η HTTP κίνηση συνήθως μεταφέρεται με άμεση χρήση του πρωτοκόλλου μεταφοράς TCP.

Η Internet σουίτα πρωτοκόλλων χρησιμοποιεί δύο πρωτόκολλα του επιπέδου μεταφοράς, το TCP και το

UDP (User Datagram Protocol). Το TCP είναι ένα αξιόπιστο συνδεσμοστραφές (connection-oriented)

πρωτόκολλο, ενώ το UDP δεν εγγυάται αξιόπιστη παράδοση. Το IP (Internet Protocol) είναι το

υποκείμενο πρωτόκολλο του επιπέδου δικτύου του Internet, δηλαδή τα IP πακέτα (datagrams)

παρέχουν το βασικό μηχανισμό μετάδοσης για το Internet και άλλα TCP/IP δίκτυα. Τα Internet

πρωτόκολλα συνήθως διαστρωματώνονται πάνω από άλλες δικτυακές τεχνολογίες, όπως το Ethernet,

οι οποίες επιτρέπουν σε Η/Υ που συνδέονται στο ίδιο δίκτυο να ανταλλάξουν πακέτα.

Η επιτυχία του TCP/IP βασίστηκε στην ανεξαρτησία του από την υποκείμενη τεχνολογία μετάδοσης που

επιτρέπει τη διαδικτύωση πολλών διαφορετικών δικτύων. Οι χρήστες και οι εφαρμογές

Page 52: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

52

αντιλαμβάνονται ένα εικονικό δίκτυο που υποστηρίζει TCP και UDP, ενώ όσοι υλοποιούν το TCP και

UDP βλέπουν ένα εικονικό IP δίκτυο, κρύβοντας την ποικιλότητα των υποκείμενων μέσων μετάδοσης.

4.1. IP διευθυνσιοδότηση Η κατασκευή σχημάτων για ονοματοδοσία και διευθυνσιοδότηση ξένιων Η/Υ καθώς και για τη

δρομολόγηση IP πακέτων υπήρξε ιδιαίτερα απαιτητική. Το σχήμα για τη διευθυνσιοδότηση στα δίκτυα

και στους Η/Υ που συνδέονται σε αυτά πρέπει να πληροί τα παρακάτω χαρακτηριστικά:

� Πρέπει να είναι καθολικό (κάθε Η/Υ να είναι σε θέση να ανταλλάξει πακέτα με οποιονδήποτε άλλο

στο Internet).

� Πρέπει να είναι αποδοτικό στη χρήση του χώρου διευθύνσεων (ο χώρος αυτός να διαχωριστεί

κατάλληλα ώστε οι να μην εξαντληθούν οι διευθύνσεις, δεδομένου ότι η πρόβλεψη για τον τελικό

αριθμό συνδεδεμένων στο Internet Η/Υ, άρα και διευθύνσεων, είναι επισφαλής). Η αρχική

πρόβλεψη (βάσει προδιαγραφών TCP/IP) 232

διευθύνσεων αποδείχθηκε ανεπαρκής λόγω της μη

προβλέψιμης μεγέθυνσης του Internet και της μη αποδοτικής χρήσης του χώρου διευθύνσεων.

� Το σύστημα διευθυνσιοδότησης πρέπει να υποστηρίζει την ανάπτυξη ενός ευέλικτου και

αποδοτικού σχήματος δρομολόγησης.

Το επιλεγμένο σχήμα αναθέτει μια IP διεύθυνση σε κάθε Η/Υ στο Internet – ένα 32-bit αναγνωριστικό

που εμπεριέχει το αναγνωριστικό του δικτύου (προσδιορίζει μοναδικά ένα υποδίκτυο στο Internet) και

ένα αναγνωριστικό ξένιου Η/Υ (προσδιορίζει μοναδικά τη σύνδεση του Η/Υ στο υποδίκτυο). Αυτού του

τύπου οι διευθύνσεις (μία για τον Η/Υ-αφετηρία και μία για τον Η/Υ-προορισμό) τοποθετούνται στα IP

πακέτα και χρησιμοποιούνται για τη δρομολόγησή τους στον προορισμό τους. Ο σχεδιασμός του

χώρου διευθύνσεων στο Internet περιλαμβάνει 5 κλάσεις Internet διευθύνσεων (A, B, C, D και E). Η

κλάση D είναι δεσμευμένη για πολυεκπομπή και η κλάση Ε για μελλοντική χρήση.

Οι 32-bit διευθύνσεις γράφονται ως ακολουθία 4 δεκαδικών (0 έως 256) αριθμών που διαχωρίζονται

από τελείες (κάθε δεκαδικός αντιστοιχεί σε ένα byte ή octet). Οι κλάσεις A, B και C σχεδιάστηκαν ειδικά

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

χωρητικότητα 224

ξένιων Η/Υ σε κάθε υποδίκτυο και αφορά σε πολύ μεγάλα δίκτυα (συνήθως εθνικά

ευρείας περιοχής δίκτυα). Οι κλάσεις Β και C δεσμεύουν 216

και 28 (= 256), αντίστοιχα, διευθύνσεις για

τους Η/Υ που μπορούν να συνδεθούν στο υποδίκτυο. Τα αναγνωριστικά δικτύων διανέμονται από την

IANA (Internet Assigned Numbers Authority) σε οργανισμούς με δίκτυα συνδεδεμένα στο Internet. Τα

αναγνωριστικά Η/Υ διανέμονται από το διαχειριστή του υποδικτύου. Καθώς οι διευθύνσεις ξένιων Η/Υ

περιλαμβάνουν ένα αναγνωριστικό δικτύου, κάθε Η/Υ συνδεδεμένος σε περισσότερα από ένα δίκτυα

πρέπει να έχει ξεχωριστές διευθύνσεις για καθένα και όποτε ένας Η/Υ μετακινηθεί σε άλλο υποδίκτυο

αλλάζει η IP διεύθυνσή του.

Άσκηση αυτοαξιολόγησης 3.11

Πως δομείται μια IP διεύθυνση; Δώστε ένα παράδειγμα IP διεύθυνσης. Ποια η λογική διαχωρισμού των

IP διευθύνσεων σε κλάσεις; (ειδικότερα στις κλάσεις Α, B και C). Γιατί θα ήταν λάθος η ύπαρξη

αποκλειστικά της κλάσης Β;

Page 53: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

53

Άσκηση αυτοαξιολόγησης 3.12

Πόσες IP διευθύνσεις έχει ένας Η/Υ που συνδέεται στο Internet και πόσες ένας δρομολογητής που

διασυνδέει τρία υποδίκτυα;

Δραστηριότητα 3.10

Ποιο πρόβλημα αποτελεσματικότητας παρουσιάστηκε με το εφαρμοζόμενο σχήμα διανομής IP

διευθύνσεων; Εξηγήστε με ποιους τρόπους αντιμετωπίστηκε.

4.2. To πρωτόκολλο IP Το IP πρωτόκολλο μεταδίδει datagrams από ένα ξένιο Η/Υ σε άλλο, εφόσον είναι απαραίτητο μέσω

ενδιάμεσων δρομολογητών. Χρησιμοποιεί μια σχετικά πολύπλοκη επικεφαλίδα που χρησιμοποιείται

από τους αλγορίθμους δρομολόγησης. Το IP παρέχει υπηρεσία παράδοσης που περιγράφεται μη

αξιόπιστη και «καλύτερης δυνατής προσπάθειας», καθώς δεν παρέχει εγγύηση παράδοσης. Τα πακέτα

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

σειρά. Ο μόνος έλεγχος λαθών (checksum) γίνεται στην επικεφαλίδα για να διασφαλίσει -με ένα φθηνό

υπολογιστικά τρόπο- ότι δεν έχουν φθαρεί οι διευθύνσεις. Όταν ένα IP datagram είναι μεγαλύτερο από

το MTU του υποκείμενου δικτύου, τεμαχίζεται σε μικρότερα πακέτα στην αφετηρία και ανασυντίθεται

στον προορισμό.

Διευθέτηση διευθύνσεων: η μονάδα διευθέτησης διευθύνσεων είναι υπεύθυνη για τη μετατροπή των

IP διευθύνσεων σε διευθύνσεις δικτύου (ή φυσικές διευθύνσεις) του συγκριμένου υποκείμενου

δικτύου. Αν, για παράδειγμα, το υποκείμενο δίκτυο είναι ένα Ethernet, η 32-bit IP διεύθυνση

μετατρέπεται σε 48-bit φυσική διεύθυνση. Στα δίκτυα Ethernet η φυσική διεύθυνση είναι «τυπωμένη»

στο υλικό της δικτυακής διεπαφής (κάρτας δικτύου) και δεν έχει άμεση συσχέτιση με την IP διεύθυνση.

Η μετάφραση εξαρτάται από τη γνώση της συσχέτισης IP-φυσικών διευθύνσεων και διαπεραιώνεται

από το πρωτόκολλο διευθέτησης διευθύνσεων (address resolution protocol, ARP).

IP πλαστοπροσωπεία (IP spoofing): Δυστυχώς δεν είναι δυνατόν να υπάρξει εγγύηση ότι η πηγαία IP

διεύθυνση που περιλαμβάνεται σε ένα εισερχόμενο IP πακέτο είναι όντως η πραγματική διεύθυνση

του αποστολέα. Ένας κακόβουλος αποστολέας μπορεί εύκολα να αντικαταστήσει τη διεύθυνσή του

από μία άλλη (τεχνική που χρησιμοποιείται σε πολλές γνωστές επιθέσεις άρνησης εξυπηρέτησης).

Δραστηριότητα 3.11

Εξηγήστε τη σκοπιμότητα και τρόπο λειτουργίας του ARP πρωτοκόλλου.

Δραστηριότητα 3.12

Εξηγήστε (περιγράφοντας και ένα σενάριο) πως η IP πλαστοπροσωπεία μπορεί να χρησιμοποιηθεί για

επίθεση άρνησης εξυπηρέτησης σε δικτυακούς κόμβους.

4.3. IP δρομολόγηση Κάθε δρομολογητής στο Internet υλοποιεί λογισμικό IP στρώματος που αντιπροσωπεύει έναν

αλγόριθμο δρομολόγησης.

Page 54: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

54

Ραχοκοκαλιές (backbones): o τοπολογικός χάρτης του Internet χωρίζεται εννοιολογικά σε αυτόνομα

συστήματα (autonomous systems, AS) τα οποία διαχωρίζονται περαιτέρω σε περιοχές (areas). Τα

ενδοδίκτυα (intranets) πολύ μεγάλων οργανισμών θεωρούνται ASs. Κάθε AS στον τοπολογικό χάρτη

έχει μία περιοχή ραχοκοκαλιάς. Το σύνολο των δρομολογητών που συνδέουν τις υπόλοιπες περιοχές

στη ραχοκοκαλιά και οι ζεύξεις που διασυνδέουν αυτούς τους δρομολογητές αποτελούν τη ραχοκαλιά

του δικτύου. Οι ζεύξεις στη ραχοκοκαλιά είναι συνήθως υψηλού εύρους ζώνης και πρέπει να υπάρχουν

και σε εφεδρεία ώστε να εξασφαλίζεται αξιοπιστία.

Πρωτόκολλα δρομολόγησης: Το RIP-1 ήταν ο πρώτος αλγόριθμος δρομολόγησης που δημιουργήθηκε

στο Internet και αποτελεί παράδειγμα αλγορίθμου που βασίζεται σε διάνυσμα απόστασης (distance

vector). Ο RIP-2 αναπτύχθηκε αργότερα για να ικανοποιήσει κάποιες απαιτήσεις όπως βελτιωμένη

δρομολόγηση πολύ-εκπομπής, αυθεντικοποίηση των RIP πακέτων για αποφυγή επιθέσεων σε

δρομολογητές, κλπ. Καθώς η κλίμακα του Internet μεγάλωνε και η επεξεργαστική ικανότητα των

δρομολογητών αυξανόταν, υπήρξε μια «μετακίνηση» προς αλγορίθμους που δεν παρουσιάζουν τα

προβλήματα της αργής σύγκλισης και πιθανής αστάθειας των αλγορίθμων που βασίζεται σε διάνυσμα

απόστασης. Η μετακίνηση ήταν προς την κλάση αλγορίθμων κατάστασης-ζεύξεων (link-state) και τον

αλγόριθμο OSPF (open shortest path first) που βασίζεται στον αλγόριθμο εύρεσης συντομότερων

μονοπατιών (shortest-path) του Dijkstra. Η υιοθέτηση νέων αλγορίθμων δρομολόγησης μπορεί να

προχωρήσει σταδιακά χωρίς να επιφέρει αλλαγές στο IP πρωτόκολλο. Ωστόσο, οι δρομολογητές που

συνεργάζονται για την ενημέρωση των πινάκων δρομολόγησης που διατηρούν, θα πρέπει να

υλοποιούν τον ίδιο αλγόριθμο. Γι’ αυτό το λόγο ορίζονται τοπολογικές περιοχές, όπου σε καθεμία

εφαρμόζεται ένας μόνο αλγόριθμος.

Προκαθορισμένες διαδρομές: Στην τρέχουσα κλίμακα του Internet, η συντήρηση σε κάθε δρομολογητή

ενός πλήρους πίνακα δρομολόγησης που εμφανίζει τη διαδρομή προς κάθε πιθανή διαδρομή, είναι

σαφώς ανέφικτη. Δύο λύσεις σε αυτό το πρόβλημα έχουν μέχρι στιγμής τεθεί σε εφαρμογή. Το 1993,

ως μέρος μιας γενικότερης προσπάθειας να απλοποιηθεί το σχήμα διευθυνσιοδότησης και να

εξοικονομηθούν IP διευθύνσεις, πάρθηκε απόφαση οι μελλοντικές κατανομές να γίνουν με

γεωγραφικά κριτήρια (π.χ. ένα προκαθορισμένο εύρος διευθύνσεων να κατανέμεται αποκλειστικά στην

Ευρώπη. Έτσι ένας δρομολογητής που λαμβάνει πακέτα με IP προορισμού διευθύνσεις σε αυτό το

εύρος, θα δρομολογήσει αυτά τα πακέτο προς τον ίδιο πάντα δρομολογητή (που λειτουργεί ως πύλη

της Ευρώπης). Η δεύτερη λύση βασίστηκε στην παρατήρηση ότι η ακρίβεια της πληροφορίας

δρομολόγησης είναι απαραίτητο να συντηρείται μόνο σε κάποιους βασικούς δρομολογητές που

λειτουργούν πλησίον των ζεύξεων ραχοκοκαλιάς. Οι υπόλοιποι δρομολογητές μπορούν να διατηρούν

μια «προκαθορισμένη» καταχώριση (default entry) στον πίνακα δρομολόγησης που συντηρούν που να

αφορά όλα τα πακέτα με προορισμούς που δεν καταχωρούνται ρητά στον πίνακα.

Δρομολόγηση στο τοπικό υποδίκτυο: Πακέτα που προορίζονται για Η/Υ στο ίδιο δίκτυο στο οποίο

ανήκει και ο αποστολέας εκπέμπονται σε ένα βήμα (single hop) χρησιμοποιώντας τη φυσική διεύθυνση

του Η/Υ-προορισμού. Το IP στρώμα χρησιμοποιεί το ARP για να βρει αυτή τη φυσική διεύθυνση στο

υποκείμενο επίπεδο. Εφόσον ο προορισμός του πακέτου ανήκει σε άλλο δίκτυο, τότε στέλνεται στον

τοπικό δρομολογητή.

Page 55: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

55

Δρομολόγηση δια-περιοχής χωρίς κλάσεις (classless interdomain routing, CIDR): Η CIDR αντιμετωπίζει

το πρόβλημα της έλλειψης IP διευθύνσεων (πρακτικά, είχε παρατηρηθεί έλλειψη σε διευθύνσεις της

κλάσης B ενώ υπήρχε περίσσευμα σε διευθύνσεις της κλάσης C) είτε διανέμοντας σύνολα από

«συνεχόμενες» διευθύνσεις κλάσης C είτε υποδιαιρώντας ένα χώρο διευθύνσεων κλάσης B για χρήση

σε υποδίκτυα που απαιτούν περισσότερες από 255 διευθύνσεις. Για να αποφευχθούν επιπτώσεις της

διανομής πολλών διευθύνσεων κλάσης C στο μέγεθος των πινάκων δρομολόγησης (άρα στην

αποδοτικότητα των αλγορίθμων δρομολόγησης), υιοθετήθηκε η προσθήκη ενός πεδίου μάσκας (subnet

mask) στους πίνακες δρομολόγησης. Η μάσκα είναι ένα πρότυπο από bits που χρησιμοποιείται για να

διαχωρίσει το μέρος της IP διεύθυνσης που αναφέρεται στο υποδίκτυο (subnet part) από εκείνο που

αναφέρεται στον ξένιο Η/Υ (host part), παρέχοντας έτσι μεγαλύτερη ευελιξία στης κλάσεις A, B και C.

Μη καταγεγραμμένες διευθύνσεις και η μετάφραση δικτυακών διευθύνσεων (network address

translation, NAT): η απόδοση παγκοσμίως μοναδικών IP διευθύνσεων σε όλες τις συσκευές που

προσπελαύνουν το Internet είναι ανέφικτη. Το πρωτόκολλο NAT εισήχθηκε ως μία προσωρινή λύση

στο πρόβλημα διανομής διευθύνσεων σε οικιακά δίκτυα (home networks) και επέτρεψε την επέκταση

του Internet πολύ παραπέρα της αρχικής πρόβλεψης. Σε ένα τυπικό οικιακό δίκτυο, αποδίδεται μια

μοναδική καταγεγραμμένη διεύθυνση η οποία αποδίδεται σε έναν NAT-συμβατό δρομολογητή από τον

παροχέα υπηρεσιών διαδικτύου (Internet service provider, ISP). Στις υπόλοιπες συσκευές του δικτύου

αποδίδονται μη καταγεγραμμένες διευθύνσεις, τυπικά με χρήση του πρωτοκόλλου δυναμικής

διαμόρφωσης ξένιων Η/Υ (dynamic host configuration protocol, DHCP). Σε Η/Υ που τυχόν λειτουργούν

ως εξυπηρετητές αποδίδονται στατικές IP διευθύνσεις «χειροκίνητα». Ο NAT-συμβατός δρομολογητής

αποθηκεύει την πηγαία IP διεύθυνση και αριθμό θύρας κάθε εξερχόμενου πακέτου και τις αντικαθιστά

με την IP διεύθυνσή του και έναν εικονικό αριθμό θύρας, αντίστοιχα. Η αντίστροφη διαδικασία

εκτελείται για τα εισερχόμενα πακέτα.

Δραστηριότητα 3.13

«Καθώς η κλίμακα του Internet μεγάλωνε …, υπήρξε μια «μετακίνηση» προς αλγορίθμους που δεν

παρουσιάζουν τα προβλήματα της αργής σύγκλισης και πιθανής αστάθειας των αλγορίθμων που

βασίζεται σε διάνυσμα απόστασης. Η μετακίνηση ήταν προς την κλάση αλγορίθμων κατάστασης-

ζεύξεων (link-state) …». Σχολιάστε τις παραπάνω προτάσεις. Αναζητήστε πηγές που επεξηγούν τα

«προβλήματα αργής σύγκλισης και αστάθειας των αλγορίθμων που βασίζεται σε διάνυσμα

απόστασης».

Δραστηριότητα 3.14

Ποια η σκοπιμότητα χρήσης προκαθορισμένων διαδρομών στη διαδικασία δρομολόγησης στο Internet;

Ποιο είναι -κατά τη γνώμη σας- το βασικότερο πρόβλημα χρήσης προκαθορισμένων διαδρομών;

Εξηγήστε τη λογική των δύο λύσεων που έχουν προταθεί για χρήση προκαθορισμένων διαδρομών.

Δραστηριότητα 3.15

Ποια η σκοπιμότητα χρήσης τεχνικών δρομολόγησης δια-περιοχής χωρίς κλάσεις (CIDR);

Άσκηση αυτοαξιολόγησης 3.13

Page 56: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

56

Γιατί χρησιμοποιούνται οι μάσκες υποδικτύων (subnet masks); Έστω ένα υποδίκτυο με IP διευθύνσεις

της μορφής 149.61.10.1/25. Ποια είναι η subnet mask για αυτό το υποδίκτυο; Μέχρι πόσους Η/Υ

μπορώ να συνδέσω σε αυτό το υποδίκτυο;

Δραστηριότητα 3.16

Πως αντιμετωπίζεται το πρόβλημα της μεγέθυνσης του Internet και της συνεπακόλουθης εξάντλησης

των IP διευθύνσεων με τη χρήση μη καταγεγραμμένων διευθύνσεων; Ποια η λειτουργία του

πρωτοκόλλου NAT; Ποιος ο ρόλος του πρωτοκόλλου DHCP;

4.4. IP έκδοση 6 (IPv6) Αναγνωρίζοντας τα προβλήματα που προέκυπταν από τις 32-bit διευθύνσεις του IPv4, η IETF

προχώρηση στην προτυποποίηση, ήδη από το 1994, μιας νέας έκδοσης του IP πρωτοκόλλου, της IPv6.

Παρακάτω αναλύονται οι σημαντικότερες καινοτομίες που φέρνει το IPv6:

� Χώρος διευθύνσεων: Οι IPv6 διευθύνσεις είναι 128-bit. Το γεγονός αυτό παρέχει ένα αστρονομικό

αριθμό πιθανά διευθυνσιοδοτούμενων οντοτήτων: 2128

(~3 x 1038

). Ο χώρος διευθύνσεων του IPv6

διαμελίζεται σε πολλά μέρη. Ακόμα και τα μικρότερα από αυτά είναι πολύ μεγαλύτερα από

ολόκληρο το χώρο διευθύνσεων του IPv4.

� Ταχύτητα δρομολόγησης: η πολυπλοκότητα της IPv6 επικεφαλίδας και η επεξεργασία που απαιτεί

σε κάθε κόμβο μειώνεται σημαντικά καθώς δεν εφαρμόζεται έλεγχος για λάθη μετάδοσης

(checksum) στα περιεχόμενα (payload) του πακέτου ενώ το πακέτο δεν υπόκειται σε κατάτμηση

(fragmentation) κατά τη διάρκεια του ταξιδιού του.

� Υπηρεσίες πραγματικού χρόνου και άλλες υπηρεσίες: τα πεδία κλάσης κίνησης (traffic class) και

ετικέτας ροής (flow label) της IPv6 επικεφαλίδας χρησιμοποιούνται για να προσδιορίζουν πακέτα

(κίνηση) που πρέπει ένας κόμβος να χειριστεί με μεγαλύτερη ταχύτητα (π.χ. εφαρμογές

πραγματικού χρόνου) ή αξιοπιστία.

� Μελλοντική εξέλιξη: το κλειδί για την υποστήριξη μελλοντικής εξέλιξης είναι το πεδίο επόμενης

επικεφαλίδας (next header) της IPv6 επικεφαλίδας. Εφόσον δεν είναι μηδέν, ορίζει τον τύπο μιας

επικεφαλίδας-επέκτασης (extension header) που περιλαμβάνεται στο πακέτο, παρέχει επιπλέον

δεδομένα για ειδικές υπηρεσίες, και ακολουθεί τη βασική IPv6 επικεφαλίδα.

� Πολυεκπομπή (multicast) και μονοεκπομπή (anycast): αμφότερα τα IPv4 και IPv6 υποστηρίζουν την

εκπομπή IP πακέτων σε πολλαπλούς ξένιους Η/Υ με χρήση μιας μοναδικής διεύθυνσης

(πολυεκπομπή). Το IPv6 υποστηρίζει έναν νέο τρόπο μετάδοσης: τη μετάδοση ενός πακέτου σε

τουλάχιστον έναν από τους Η/Υ που εγγράφονται ως συνδρομητές σε μία υπηρεσία

(μονοεκπομπή).

� Ασφάλεια: έως τώρα, οι διαδικτυακές εφαρμογές που απαιτούν μετάδοση αυθεντικοποιημένων ή

ιδιωτικών δεδομένων βασίζονται στη χρήση κρυπτογραφικών τεχνικών στο στρώμα εφαρμογών

(καθώς ενδιαφέρει η από-άκρο-σε-άκρο ασφαλής μετάδοση). Η υλοποίηση ασφαλείας στο IP

στρώμα έχει το πλεονέκτημα ότι εφαρμόζεται χωρίς την ανάγκη υλοποίησης εφαρμογών με

επίγνωση των αναγκών ασφαλείας. Η ασφάλεια στο IPv6 υλοποιείται μέσω τύπων επικεφαλίδων-

επεκτάσεων αυθεντικοποιημένου και κρυπτογραφημένου περιεχομένου ασφαλείας (authenticated

and encrypted security payload).

Page 57: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

57

Μετάβαση από το IPv4: Το γεγονός ότι η στοίβα πρωτοκόλλων TCP/IP υποστηρίζεται από κάθε ξένιο

Η/Υ και το λογισμικό κάθε δρομολογητή και ότι οι IP διευθύνσεις χρησιμοποιούνται σε πολλές

εφαρμογές, καθιστά πολύ δύσκολη τη μετάβαση από το IPv4 στο IPv6. Ωστόσο, η μετάβαση είναι

αναπόφευκτη λόγω της επικείμενης εξάντλησης του IPv4 χώρου διευθύνσεων η οποία δεν μπορεί να

απορροφηθεί από τα CIDR και NAT. Έτσι, η IETF έχει χαράξει μια στρατηγική μετάβασης που

περιλαμβάνει την υλοποίηση «νησιών» από IPv6 δρομολογητές που επικοινωνούν με άλλα τέτοια

«νησιά» διαμέσω διόδων (tunneling), με σταδιακή συγχώνευση σε μεγαλύτερα «νησιά».

Άσκηση αυτοαξιολόγησης 3.14

Αναλύστε τα βασικότερα χαρακτηριστικά του πρωτοκόλλου IPv6 και τις σημαντικότερες καινοτομίες

που φέρνει.

Δραστηριότητα 3.17

Περιγράψτε τη στρατηγική μετάβασης στο IPv6 που έχει χαράξει η IETF. Για ποιο λόγο έχει

καθυστερήσει η υλοποίηση αυτής της στρατηγικής;

4.5. Κινητό IP (MobileIP) Οι κινητές συσκευές συνδέονται στο Internet σε διαφορετικές θέσεις, καθώς μετακινούνται, ωστόσο οι

χρήστες τους επιθυμούν να έχουν αδιάλειπτη πρόσβαση στις υπηρεσίες που χρησιμοποιούν, όπως

email και web. H απλή πρόσβαση σε τέτοιες υπηρεσίες δεν απαιτεί από τη συσκευή να διατηρήσει την

ίδια IP διεύθυνση και υποστηρίζεται από το πρωτόκολλο DHCP, το οποίο αποδίδει δυναμικά στη

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

παραμείνει προσβάσιμη από πελάτες ή εφαρμογές διαμοίρασης πόρων, τότε πρέπει να διατηρήσει μία

μοναδική IP διεύθυνση.

Το MobileIP προσφέρει λύση σε αυτό το πρόβλημα. Όταν ο κινητός Η/Υ είναι συνδεδεμένος στη βάση

του τότε τα πακέτα προς/από αυτόν δρομολογούνται κανονικά. Όταν όμως είναι συνδεδεμένος σε

άλλη τοποθεσία του Internet, δύο διεργασίες διαμεσολαβητών αναλαμβάνουν την ευθύνη της

αναδρομολόγησης, ο οικιακός διαμεσολαβητής (home agent, HA) και ο ξένος διαμεσολαβητής (foreign

agent, FA). Όταν ο κινητός Η/Υ απομακρύνεται από το οικιακό του δίκτυο, ενημερώνει τον HA. Όταν

φθάσει σε ένα νέο δίκτυο, ενημερώνει τον FA αυτού του δικτύου. Ο FA του αποδίδει μια προσωρινή

«διεύθυνση φροντίδας» (care-of address) στο τοπικό υποδίκτυο, την οποία και αποστέλλει στον HA του

κινητού Η/Υ. Τα πακέτα που στέλνονται στο οικιακό δίκτυο του Η/Υ δρομολογούνται στον HA ο οποίος

τα ενθυλακώνει σε ένα MobileIP πακέτο και το προωθεί στον FA. Εκείνος εξάγει το αρχικό IP πακέτο

από το MobileIP πακέτο και το προωθεί στον Η/Υ. Εφόσον ο αποστολέας του πακέτου είναι MobileIP-

συμβατός, τα επόμενα πακέτα μπορούν να δρομολογηθούν απευθείας στον FA.

Δραστηριότητα 3.18

Ποια η σκοπιμότητα που οδήγησε στην ανάπτυξη του MobileIP και ποια η αρχή λειτουργίας του; Ποια

είναι τα προβλήματα αποδοτικότητας που αποδίδονται στο MobileIP;

4.6. TCP και UDP

Page 58: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

58

Τα TCP και UDP παρέχουν μια υπηρεσία μεταφοράς στο Internet χρήσιμη σε προγράμματα

εφαρμογών. Αμφότερα τα TCP και UDP αντανακλούν το επίπεδο προγραμματισμού εφαρμογών και τις

δυνατότητες επικοινωνίας που προσφέρει το IPv4. Το IPv6 θα εξακολουθήσει να υποστηρίζει τα TCP και

UDP, ωστόσο μπορεί να χρειαστεί να εισαγάγει νέους τύπους υπηρεσιών μεταφοράς.

Χρήση θυρών: Ενώ το IP υποστηρίζει επικοινωνία μεταξύ ζευγών Η/Υ (που προσδιορίζονται από IP

διευθύνσεις), τα TCP και UDP -ως πρωτόκολλα μεταφοράς- παρέχουν επικοινωνία διεργασίας-προς-

διεργασία. Αυτό επιτυγχάνεται με χρήση των θυρών (ports). Οι αριθμοί θυρών χρησιμοποιούνται για τη

διευθυνσιοδότηση μηνυμάτων σε διεργασίες που λειτουργούν σε ένα συγκεκριμένο Η/Υ και έχουν

νόημα μόνο σε αυτόν.

Χαρακτηριστικά UDP: Το UDP datagram έχει μια μικρή επικεφαλίδα που περιλαμβάνει τους αριθμούς

θυρών των διεργασιών αφετηρίας και προορισμού. Το UDP δεν παρέχει εγγύηση παράδοσης των

datagrams, συνεπώς δεν προσθέτει αξιοπιστία στο IP. Ακόμα και ο έλεγχος λαθών (checksum) είναι

προαιρετικός. Ωστόσο, προσθέτει ελάχιστα στο κόστος και καθυστέρηση μετάδοσης του IP, καθώς δε

σχετίζεται με κάποιο κόστος εγκατάστασης (setup) ή μηνυμάτων επιβεβαίωσης παραλαβής. Γι’ αυτούς

τους λόγους η χρήση του περιορίζεται στις εφαρμογές και υπηρεσίες που δεν απαιτούν αξιόπιστη

παράδοση ενός ή περισσοτέρων μηνυμάτων.

Χαρακτηριστικά TCP: Το TCP παρέχει μια πιο εξελιγμένη υπηρεσία μεταφοράς, παρέχοντας εγγυημένη

παράδοση όλων των δεδομένων που παραδίδονται στο TCP λογισμικό, με την ίδια σειρά. Το TCP είναι

συνδεσμοστραφές (connection-oriented). Προ της μεταφοράς δεδομένων, η αποστέλλουσα και

λαμβάνουσα διεργασία συνεργάζονται στην εγκαθίδρυση ενός αμφίδρομου καναλιού επικοινωνίας.

Πρακτικά, πρόκειται για μια συμφωνία εκτέλεσης μιας από άκρο-σε-άκρο αξιόπιστης μετάδοσης

δεδομένων. Οι ενδιάμεσοι κόμβοι (π.χ. δρομολογητές) δεν έχουν γνώση των TCP συνδέσεων και τα IP

πακέτα που μεταφέρουν τα δεδομένα της TCP σύνδεσης ενδέχεται να ακολουθήσουν διαφορετικές

διαδρομές. Οι μηχανισμοί που χρησιμοποιεί το στρώμα TCP για να παράσχει εγγυήσεις αξιοπιστίας

είναι οι εξής:

� Αλληλουχία (sequencing): To TCP χωρίζει τα δεδομένα σε σειρά από τμήματα δεδομένων

(segments) και τα μεταδίδει ως IP πακέτα, αποδίδοντας σε κάθε τμήμα έναν αύξοντα αριθμό. Ο

παραλήπτης χρησιμοποιεί τους αύξοντες αριθμούς για να τοποθετήσει τα εισερχόμενα τμήματα σε

σειρά. Τμήματα που τυχόν φθάνουν εκτός σειράς κρατούνται σε μια προσωρινή μνήμη έως ότου

φθάσουν και όσα προηγούνται στη σειρά.

� Έλεγχος ροής (flow control): ο αποστολέας οφείλει να μην κατακλύσει τον παραλήπτη ή τους

ενδιάμεσους κόμβους με δεδομένα. Αυτό επιτυγχάνεται με ένα σύστημα επιβεβαίωσης των

τμημάτων (segments acknowledgements). Σε συγκεκριμένες στιγμές, ο παραλήπτης επιβεβαιώνει

την ορθή λήψη τμημάτων και παράλληλα ενημερώνει τον αποστολέα για το μέγεθος παραθύρου

(window size), το οποίο προσδιορίζει τη μέγιστη ποσότητα δεδομένων που επιτρέπεται να στείλει ο

αποστολέας έως την επόμενη επιβεβαίωση. Η αναξιόπιστη φύση των ασύρματων συνδέσεων που

επιφέρει συχνή απώλεια πακέτων καθιστά αυτούς τους τρόπους ελέγχου ροής λιγότερο χρήσιμους

στα ασύρματα δίκτυα. Έτσι, η οικογένεια των WAP πρωτοκόλλων χρησιμοποιεί διαφορετικό

Page 59: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

59

μηχανισμό μεταφοράς, ενώ αλλαγές στο TCP έχουν προταθεί και για χρήση του σε ασύρματα

δίκτυα.

� Επανεκπομπή (retransmission): εφόσον ο αποστολέας δε λάβει από τον παραλήπτη επιβεβαίωση

λήψης κάποιου τμήματος μέσα σε ένα συγκεκριμένο χρονικό διάστημα, τότε το επαναμεταδίδει.

� Προσωρινή αποθήκευση (buffering): ο εισερχόμενος χώρος προσωρινής αποθήκευσης (buffer) του

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

λήψης είναι πιο αργές από τις λειτουργίες αποστολής, ο όγκος δεδομένων στον buffer αυξάνει.

Εφόσον υπερχειλίσει, τότε τα εισερχόμενα τμήματα ακυρώνονται, δεν επιβεβαιώνονται και

συνεπώς ο αποστολέας τα επαναμεταδίδει.

� Έλεγχος σφαλμάτων στη μετάδοση (checksum): κάθε τμήμα μεταφέρει δεδομένα που στοχεύουν

στον έλεγχο σφαλμάτων κατά τη μετάδοση τόσο της επικεφαλίδας όσο και των δεδομένων

(checksum). Εφόσον το ληφθέν τμήμα δεν ταιριάζει με το checksum, τότε ακυρώνεται.

Άσκηση αυτοαξιολόγησης 3.15

Ποια η σημασία των θυρών; Ποιες κατηγορίες (κλάσεις) θυρών διεργασιών υπάρχουν και ποια η

σημασία κάθε κατηγορίας; Ποιοι είναι οι αριθμοί θυρών γνωστών εφαρμογών όπως SMTP, FTP και

HTTP;

Άσκηση αυτοαξιολόγησης 3.16

Ποια τα κύρια χαρακτηριστικά του πρωτοκόλλου μεταφοράς UDP; Ποια πεδία περιλαμβάνει η UDP

επικεφαλίδα και ποιος ρόλος τους; Ποιες οι διαφορές μεταξύ των πρωτοκόλλων TCP και UDP; Για ποιο

είδος εφαρμογών θεωρείται κατάλληλο το UDP;

Δραστηριότητα 3.19

Τι είδους εγγυήσεις παρέχει το πρωτόκολλο TCP και τι είδους μηχανισμούς υλοποιεί για να παράσχει

αυτές τις εγγυήσεις;

Δραστηριότητα 3.20

Αναζητήστε σε διαδικτυακές πηγές πληροφορίες για το μηχανισμό διαδικασία εγκαθίδρυσης και λύσης

TCP συνδέσεων. Πως ο μηχανισμός αυτός εγγυάται αντιμετώπιση προβλημάτων όπως απώλειας

τμημάτων, άφιξης καθυστερημένων τμημάτων ή άφιξης καθυστερημένων τμημάτων;

4.7. Ονόματα περιοχής (domain names) Το Internet υποστηρίζει ένα σχήμα για τη χρήση συμβολικών ονομάτων για ξένιους Η/Υ και δίκτυα, π.χ.

ct.aegean.gr ή essex.ac.uk. Οι ονομαζόμενες οντότητες λέγονται περιοχές (domains), ενώ τα συμβολικά

τους ονόματα λέγονται ονόματα περιοχής (domain names). Οι περιοχές οργανώνονται σε μια ιεραρχία

που αντανακλά την οργανωτική δομή του δικτύου. Τα ονόματα περιοχής είναι βολικά για τους

ανθρώπους αλλά πρέπει να μεταφραστούν σε IP διευθύνσεις προτού χρησιμοποιηθούν ως

αναγνωριστικά επικοινωνίας. Αυτό αποτελεί ευθύνη της υπηρεσίας που προσφέρουν οι εξυπηρετητές

του συστήματος ονομάτων περιοχής (domain name system, DNS). Οι εφαρμογές προγραμμάτων

Page 60: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

60

περνούν τις αιτήσεις στο DNS ώστε να μετατρέψει τα ονόματα περιοχής που χρησιμοποιούν οι χρήστες

σε IP διευθύνσεις.

Άσκηση αυτοαξιολόγησης 3.17

Εξηγήστε την οργάνωση και σημασία των ονομάτων περιοχής. Δώστε τρία παραδείγματα ονομάτων

περιοχής. Έστω ένας χρήστης με όνομα χρήστη (username) mike που ανήκει στο δίκτυο ενός

οργανισμού με όνομα περιοχής cs.berkeley.edu. Ποια θα είναι η email διεύθυνσή του; Ποιο τμήμα της

URL http://www.webstats.motigo.com/second/mypage.php αποτελεί το όνομα περιοχής του web

εξυπηρετητή;

4.8. Firewalls Σε κάθε ενδοδίκτυο με πολλούς Η/Υ και μεγάλο εύρος λογισμικού είναι αναπόφευκτο κάποια μέρη του

συστήματος να παρουσιάζουν αδυναμίες που θα το εκθέτουν σε επιθέσεις ασφαλείας. Ο στόχος του

firewall είναι να παρακολουθεί και να ελέγχει όλη την επικοινωνία μέσα και από/προς ένα ενδοδίκτυο.

Ένα firewall υλοποιείται από ένα σύνολο διεργασιών που λειτουργούν ως πύλη στο ενδοδίκτυο,

εφαρμόζοντας μια πολιτική ασφαλείας που καθορίζεται από τον οργανισμό. Οι στόχοι της πολιτικής

ασφαλείας που μπορεί να έχει ένα firewall είναι οι εξής:

� Έλεγχος υπηρεσιών: καθορίζεται ποιες υπηρεσίες που προσφέρονται από εσωτερικούς Η/Υ είναι

προσπελάσιμες για εξωτερική πρόσβαση και ποιες εισερχόμενες αιτήσεις υπηρεσίας

απορρίπτονται (π.χ. εισερχόμενες HTTP αιτήσεις μπορεί να απορρίπτονται αν δεν κατευθύνονται

σε έναν επίσημο web εξυπηρετητή).

� Έλεγχος συμπεριφοράς: προλαμβάνει συμπεριφορά που παραβιάζει τις πολιτικές του οργανισμού

ή δεν έχει ευδιάκριτο νόμιμο στόχο και συνεπώς υπάρχει υποψία ότι αποτελεί μέρος επίθεσης.

Κάποιες από αυτές τις πράξεις φιλτραρίσματος μπορεί να είναι εφαρμόσιμες στο IP ή TCP επίπεδο,

ενώ άλλες (π.χ. φιλτράρισμα του spam email) μπορεί να απαιτεί ερμηνεία των μηνυμάτων σε

υψηλότερο επίπεδο.

� Έλεγχος χρηστών: Ο οργανισμός μπορεί να επιθυμεί να κάνει διάκριση μεταξύ των χρηστών,

επιτρέποντας σε κάποιους πρόσβαση σε συγκεκριμένες εξωτερικές υπηρεσίας και απαγορεύοντάς

την σε άλλους.

Η πολιτική ασφαλείας εκφράζεται με λειτουργίες φιλτραρίσματος που εκτελούνται από διεργασίες

φιλτραρίσματος, οι οποίες λειτουργούν σε διαφορετικά επίπεδα:

� Φιλτράρισμα IP πακέτων: μια διεργασία εξετάζει τα IP πακέτα και μπορεί να πάρει αποφάσεις

βάσει των διευθύνσεων αφετηρίας και προορισμού. Μπορεί επίσης να εξετάσει το πεδίο τύπου

υπηρεσία (service type) της επικεφαλίδας για να ερμηνεύσει τα περιεχόμενα του πακέτου βάσει

του τύπου. Για παράδειγμα, μπορεί να φιλτράρει TCP πακέτα με προορισμό ένα συγκεκριμένο

αριθμό θύρας, δηλαδή βάσει της υπηρεσίας που αιτείται.

� TCP πύλη: ελέγχει όλες τις αιτήσεις για TCP συνδέσεις και τις μεταδόσεις TCP τμημάτων.

Προαιρετικά, τα TCP τμήματα μπορούν να δρομολογηθούν μέσω μιας πύλης του επιπέδου

εφαρμογής για έλεγχο περιεχομένου.

Page 61: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

61

� Πύλη επιπέδου εφαρμογής: είναι μια διεργασία που δρα ως αντιπρόσωπος (proxy) για μια

διεργασία εφαρμογής.

Αρκετά συχνά, περισσότεροι από ένας Η/Υ χρησιμοποιούνται σε καθήκοντα firewall για λόγους

απόδοσης και ανεκτικότητας σε σφάλματα (fault-tolerance). Το φιλτράρισμα IP πακέτων γίνεται

συνήθως από ένα δρομολογητή. Ο δρομολογητής/φίλτρο (router/filter) πρέπει να εκτελεί μόνο έμπιστο

λογισμικό με ένα τρόπο που εξασφαλίζει την επιβολή της πολιτικής φιλτραρίσματος. Όταν απαιτούνται

διεργασίες πύλης επιπέδων TCP και εφαρμογής, αυτές συνήθως εκτελούνται σε ξεχωριστό Η/Υ, γνωστό

ως προμαχώνα (bastion). Ο προμαχώνας βρίσκεται μέσα στο ενδοδίκτυο και προστατεύεται από το

δρομολογητή/φίλτρο.

Εικονικά ιδιωτικά δίκτυα (virtual private networks, VPNs): τα VPNs επεκτείνουν τα προστατευτικά όρια

του firewall πέρα από το τοπικό ενδοδίκτυο με τη χρήση κρυπτογραφικά προστατευμένων ασφαλών

καναλιών στο IP επίπεδο. Μπορούν να χρησιμοποιηθούν από εξωτερικούς χρήστες ή για την

υλοποίηση ασφαλών συνδέσεων μεταξύ ενδοδικτύων μέσω δημόσιων ζεύξεων Internet.

Δραστηριότητα 3.21

Ποιος ο ρόλος ενός firewall; Ποιους στόχους μπορεί να έχει η πολιτικής ασφαλείας του; Ποιες

λειτουργίες φιλτραρίσματος μπορεί να εφαρμόσει;

5. Μελέτες περίπτωσης: Ethernet, WiFi, Bluetooth και ATM Σε αυτή την ενότητα περιγράφονται οι βασικές αρχές και υλοποιήσεις τεσσάρων δημοφιλών δικτυακών

τεχνολογιών.

Στις αρχές της δεκαετίας του 1980, το αμερικανικό ινστιτούτο IEEE (Institute of Electrical and Electronic

Engineers) ίδρυσε μια επιτροπή για την προδιαγραφή μιας σειράς προτύπων για τοπικά δίκτυα (η

επιτροπή 802), τα οποία εν καιρώ έγιναν τα βασικά πρότυπα για LANs.

Το ΙΕΕΕ 802.3 Ethernet πρότυπο έχει κερδίσει τη μάχη στην αγορά των ενσύρματων LAN. Το ΙΕΕΕ 802.5

Token Ring πρότυπο προσφέρει κάποια πλεονεκτήματα σε σχέση με το Ethernet σε απόδοση και

εγγυήσεις εύρους ζώνης, ωστόσο έχει πλέον εξαφανιστεί από την αγορά. Το IEEE 802.4 Token Bus

αναπτύχθηκε για βιομηχανικές εφαρμογές με απαιτήσεις πραγματικού χρόνου. Το IEEE 802.6 πρότυπο

καλύπτει αποστάσεις έως και 50km και προορίζεται για χρήση σε δίκτυα που καλύπτουν

μητροπολιτικές περιοχές. To IEEE 802.11 πρότυπο WLANs αναπτύχθηκε αργότερα και διατηρεί ηγετική

θέση στην αγορά με προϊόντα πολλών κατασκευστών, κάτω από το εμπορικό όνομα WiFi. Το IEEE

802.15.1 πρότυπο ασυρμάτων δικτύων προσωπικής περιοχής (WPANs), γνωστό με το όνομα Bluetooth,

βασίστηκε σε τεχνολογία που αναπτύχθηκε αρχικά το 1999 από την Ericson για τη μεταφορά χαμηλού

εύρους ζώνης φωνής και δεδομένων μεταξύ συσκευών όπως PDAs, κινητά τηλέφωνα, κλπ. Το IEEE

802.15.4 (ZigBee) είναι ένα άλλο WPAN πρότυπο που στοχεύει σε χαμηλού εύρους ζώνης επικοινωνίες

δεδομένων για συσκευές χαμηλής ενέργειας (χρησιμοποιείται ευρέως σε ασύρματα δίκτυα

αισθητήρων). Το IEEE 802.16 πρότυπο για WMANs (εμπορικό όνομα: WiMAX) σχεδιάστηκε ως

εναλλακτική τεχνολογία στις DSL ζεύξεις, δηλαδή για συνδέσεις σπιτιών και γραφείων «τελευταίου

Page 62: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

62

μιλίου» (δηλαδή του τελευταίου σκέλους συνδέσεων από ένα τηλεπικοινωνιακό πάροχο σε ένα

πελάτη). Η ΑΤΜ τεχνολογία προέκυψε από προσπάθειες έρευνας και προτυποποίησης βιομηχανιών

των τηλεπικοινωνιών και της πληροφορικής στα τέλη 1980 – αρχές 1990. Στοχεύει σε δικτύωση υψηλού

εύρους ζώνης, ευρείας περιοχής. Δεν είχε επιτυχία σε LAN περιβάλλοντα λόγω του συναγωνισμού από

τα 100Mbps και 1000Mbps Ethernets που προσφέρονται σε χαμηλότερο κόστος.

Άσκηση αυτοαξιολόγησης 3.18

Αναφέρατε πέντε γνωστά IEEE πρότυπα και το χώρο εφαρμογής τους.

5.1. Ethernet To Ethernet αναπτύχθηκε στο Xerox PARC το 1973. Το πιλοτικό Ethernet ήταν το πρώτο τοπικό δίκτυο

υψηλής ταχύτητας συνδέοντας Η/Υ σε μια τοποθεσία και επιτρέποντάς τους να επικοινωνήσουν με

υψηλές ταχύτητες μετάδοσης, χαμηλούς ρυθμούς σφαλμάτων και χωρίς καθυστερήσεις μεταγωγής. Το

αρχικό πρωτότυπο έτρεχε στα 3Mbps. Σε αυτή την ενότητα περιγράφονται οι αρχές λειτουργίας του

10Mbps Ethernet που προδιαγράφεται στο IEEE 802.3 πρότυπο. Ήταν η πρώτη ευρέως ανεπτυγμένη

LAN τεχνολογία. Η 100Mbps παραλλαγή του έχει πανομοιότυπες αρχές λειτουργίας.

Ένα δίκτυο Ethernet είναι μια απλή ή διακλαδωμένη σύνδεση που μοιάζει με γραμμή αρτηρίας

(αρχιτεκτονικής στην οποία ένα σύνολο πελατών συνδέονται μέσω μιας διαμοιραζόμενης γραμμής

επικοινωνίας), και χρησιμοποιεί ένα μέσο μετάδοσης που αποτελείται από ένα ή περισσότερα τμήματα

καλωδίου που συνδέονται μεταξύ τους με διανεμητές (hubs) ή επαναλήπτες (repeaters). Αυτές είναι

απλές συσκευές που επιτρέπουν στα σήματα να διέλθουν από μέσα τους. Πολλά Ethernets μπορούν να

συνδεθούν στο επίπεδο δικτύου Ethernet από μεταγωγείς (switches) ή γέφυρες (bridges). Αυτές οι

συσκευές λειτουργούν στο επίπεδο των πλαισίων Ethernet (ως «πλαίσια» νοούνται τα πακέτα όπως

εκπέμπονται στο ενσύρματο ή ασύρματο μέσο), προωθώντας τα σε γειτονικά Ethernet τμήματα, αν ο

προορισμός τους βρίσκεται εκεί. Τα συνδεδεμένα Ethernets εμφανίζονται ως ένα δίκτυο στα

υψηλότερα στρώματα πρωτοκόλλων, όπως το IP. Το ARP πρωτόκολλο χρησιμοποιείται για να

συσχετίσει IP διευθύνσεις με Ethernet διευθύνσεις.

Η μέθοδος λειτουργίας του Ethernet ορίζεται από τη φράση «αίσθηση φέροντος, πολλαπλής

πρόσβασης με ανίχνευση συγκρούσεων» (carrier sense multiple access with collision detection,

CSMA/CD). Τα δίκτυα Ethernet ανήκουν στην κλάση δικτύων με κατοχή αρτηρίας (contention bus), τα

οποία χρησιμοποιούν ένα μόνο μέσο μετάδοσης για τη διασύνδεση όλων των Η/Υ. Το πρωτόκολλο που

διαχειρίζεται την πρόσβαση στο μέσο ονομάζεται πρωτόκολλο ελέγχου πρόσβασης στο μέσο (medium

access control, MAC).

Πανεκπομπή πακέτου: η μέθοδος επικοινωνίας σε CSMA/CD δίκτυα περιλαμβάνει την πανεκπομπή

πακέτων δεδομένων στο κοινό μέσο μετάδοσης. Όλοι σταθμοί «ακούν» συνεχώς το μέσο για πακέτα

που προορίζονται για αυτούς. Κάθε σταθμός που θέλει να μεταδώσει ένα μήνυμα, το μεταδίδει με

πανεκπομπή στο μέσο σε ένα ή περισσότερα πακέτα που -στην προδιαγραφή του Ethernet-

ονομάζονται πλαίσια (frames). Κάθε πλαίσιο περιλαμβάνει τις διευθύνσεις των σταθμών αφετηρίας και

προορισμού, καθώς και το μεταβλητού μήκους περιεχόμενο του μηνύματος. Η διεύθυνση του σταθμού

προορισμού κανονικά αναφέρεται στη μόνη δικτυακή του διεπαφή (διεύθυνση κάρτας δικτύου). Ένας

Page 63: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

63

ελεγκτής (controller hardware) σε κάθε σταθμό λαμβάνει ένα αντίγραφο κάθε πακέτου. Συγκρίνει τη

διεύθυνση προορισμού του πακέτου με την τοπική διεύθυνση, αγνοώντας πακέτα που προορίζονται

για άλλους σταθμούς και περνώντας στον τοπικό Η/Υ όσα απευθύνονται σε αυτόν. Η διεύθυνση

προορισμού μπορεί επίσης να προσδιορίσει μια διεύθυνση πανεκπομπής ή πολυεκπομπής (π.χ. η

διεύθυνση που αποτελείται μόνο από ‘1’, είναι διεύθυνση πανεκπομπής). Το Ethernet πρωτόκολλο

υλοποιείται από τη διεπαφή υλικού Ethernet.

Δομή Ethernet πλαισίου: τα πλαίσια που μεταδίδονται από σταθμούς Ethernet περιλαμβάνουν -εκτός

από τις διευθύνσεις αφετηρίας και προορισμού- ένα καθορισμένο 8-bit πρόθεμα (χρησιμοποιείται για

λόγους συγχρονισμού), ένα πεδίο μήκους, ένα πεδίο δεδομένων και ένα πεδίο για έλεγχο λαθών

(checksum). Οι Ethernet διευθύνσεις (MAC διευθύνσεις) είναι 48-bit το οποίο επιτρέπει στους

κατασκευαστές υλικών διεπαφών να τους αποδίδουν μοναδικές διευθύνσεις. Το πεδίο δεδομένων

περιέχει όλο ή μέρος του μηνύματος (εφόσον το μήνυμα ξεπερνάει τα 1500 bytes). Το χαμηλότερο όριο

των 46 bytes του πεδίου δεδομένων εξασφαλίζει ελάχιστο μήκος πλαισίου 64 bytes, το οποίο είναι

απαραίτητο για να είναι ανιχνεύσιμες από όλους τους σταθμούς τυχούσες συγκρούσεις. Το checksum

εισάγεται από τον αποστολέα του πλαισίου και χρησιμοποιείται από τον παραλήπτη για να

επαληθεύσει την ορθότητά του (τα πλαίσια με λάθος checksum απορρίπτονται από το επίπεδο ζεύξης

δεδομένων).

Συγκρούσεις πακέτων: o όρος σύγκρουση πακέτων αναφέρεται στο σενάριο ταυτόχρονης μετάδοσης

πακέτων από δύο σταθμούς. Το Ethernet εφαρμόζει τρεις τεχνικές για αντιμετωπίσει αυτή την

πιθανότητα. Η πρώτη ονομάζεται αίσθηση φέροντος (carrier sensing). Η διεπαφή υλικού ακούει το

μέσο (φέρον) και περιμένει έως ότου κανένα σήμα δεν είναι παρόν στο μέσο, πριν αρχίσει να μεταδίδει

ένα πακέτο. Ωστόσο, η αίσθηση φέροντος δεν αποκλείει την πιθανότητα σύγκρουσης. Υπάρχει

περίπτωση κάποιος σταθμός Α να αρχίσει να μεταδίδει ένα πακέτο ενόσω κάποιος άλλος σταθμός Β

έχει ήδη αρχίσει να μεταδίδει ένα άλλο πακέτο (το οποίο θα χρειαστεί χρόνο τ για να διαδοθεί μέχρι

τον Α). Τότε προκύπτει παρεμβολή (σύγκρουση). Η τεχνική που εφαρμόζεται για να επανακάμψουν

από τέτοια παρεμβολή ονομάζεται ανίχνευση σύγκρουσης (collision detection). Όποτε ο σταθμός που

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

(jamming) ώστε όλοι οι σταθμοί να ενημερωθούν για τη σύγκρουση. Τότε όλοι οι σταθμοί αναβάλουν

τυχόν μετάδοση που έχουν προγραμματίσει και οι σταθμοί Α και Β ετοιμάζονται για αναμετάδοση. Για

να αποφευχθεί εκ νέου ταυτόχρονη μετάδοση, άρα επανάληψη της σύγκρουσης, χρησιμοποιείται η

τεχνική back-off. Οι σταθμοί επιλέγουν μια χρονική στιγμή (εντός ενός καθορισμένου χρονικού

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

σύγκρουση), η διαδικασία επαναλαμβάνεται με διπλασιασμό του χρονικού παραθύρου, ώστε να

μειωθεί περαιτέρω η πιθανότητα νέας επανάληψης της σύγκρουσης.

Αποδοτικότητα Ethernet: η αποδοτικότητα του Ethernet είναι ο λόγος του αριθμού των πακέτων που

μεταδόθηκαν με επιτυχία ως προς το θεωρητικά μέγιστο αριθμό που θα μπορούσε να μεταδοθεί χωρίς

συγκρούσεις, και επηρεάζεται άμεσα από το χρόνο τ. To Ethernet μπορεί να επιτύχει ποσοστό χρήσης

του καναλιού (utilization) 80%-95%, ωστόσο οι καθυστερήσεις λόγω κατοχής του καναλιού γίνονται

φανερές σε ποσοστά χρήσης καναλιού που ξεπερνούν το 50%. Το Ethernet δεν παρέχει εγγυήσεις

Page 64: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

64

παράδοσης σε φραγμένο χρόνο, ωστόσο, η πιθανότητα μεταφοράς του μηνύματος σε φραγμένο χρόνο

είναι υψηλότερη από άλλες δικτυακές τεχνολογίες.

Φυσικές υλοποιήσεις: ένα μεγάλο εύρος φυσικών υλοποιήσεων Ethernet έχουν υπάρξει με χρήση

διαφορετικών μέσων μετάδοσης, όπως ομοαξονικό καλώδιο, καλώδιο συνεστραμμένου ζεύγους

(twisted pair, UTP) και οπτική ίνα, με διαφορετικά όρια στο προσφερόμενο εύρος ζώνης, άρα και

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

και ένα σχήμα ονοματοδοσίας για να τις διαχωρίσει.

Ethernet για εφαρμογές πραγματικού χρόνου και ποιότητας υπηρεσίας: έχει ασκηθεί κριτική στο

Ethernet για το ότι το MAC πρωτόκολλό του το καθιστά ακατάλληλο για εφαρμογές πραγματικού

χρόνου καθώς δεν προσφέρει εγγυήσεις για παράδοση μηνυμάτων σε συγκεκριμένο χρόνο. Ωστόσο, η

χρήση μεταγωγέων (switches) έχει ως αποτέλεσμα ένα διακριτό Ethernet τμήμα για κάθε ξένιο Η/Υ που

συνδέεται απευθείας στο μεταγωγέα. Στο τμήμα αυτό δε θα μεταδίδεται κίνηση πέραν των πακέτων με

αφετηρία/προορισμό το συγκεκριμένο Η/Υ. Η πιθανότητα κατοχής εγκύπτει μόνο στους μεταγωγείς, οι

οποίοι ωστόσο είναι σχεδιασμένοι με τέτοιο τρόπο ώστε να χειρίζονται πολλαπλά πακέτα ταυτόχρονα.

Δραστηριότητα 3.22

Ποια η δομή του Ethernet πλαισίου και ποιος ο ρόλος κάθε πεδίου; Τι συμβαίνει στο επίπεδο του

Ethernet δικτύου όταν το μεταδιδόμενο μήνυμα είναι 2000 bytes και τι όταν είναι 2 bytes;

Δραστηριότητα 3.23

Γιατί το Ethernet απαιτεί ένα ελάχιστο μήκος πακέτου; Γιατί -κατά τη γνώμη σας- το Ethernet επίσης

προδιαγράφει και τη μέγιστη επιτρεπόμενη απόσταση σταθμών σε κάθε τμήμα του; Αναζητήστε σε

διαδικτυακές πηγές ποια είναι η απόσταση αυτή.

Άσκηση αυτοαξιολόγησης 3.19

Σχεδιάστε ένα block διάγραμμα ροής με τον κατανεμημένο MAC αλγόριθμο που υλοποιούν οι

διεπαφές υλικού Ethernet.

Δραστηριότητα 3.24

Πως αντιλαμβάνεστε τη διαφορά μεταξύ των παραμέτρων απόδοσης ποσοστού χρήσης καναλιού

(utilization) και ρυθμαπόδοσης (throughput); Αναζητήστε σε πηγές τη σχέση μεταξύ ποσοστού χρήσης

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

Δραστηριότητα 3.25

Σε τι διαφέρουν οι φυσικές υλοποιήσεις Ethernet; Ποια τα μέσα μετάδοσης που χρησιμοποιούν και

ποιες οι προσφερόμενες ταχύτητες μετάδοσης και μέγιστα μήκη τμημάτων που προδιαγράφουν;

Αναζητήστε στη βιβλιογραφία ποιες είναι οι πλέον δημοφιλείς και ευρέως χρησιμοποιούμενες φυσικές

υλοποιήσεις Ethernet στην αγορά σήμερα.

Δραστηριότητα 3.26

Page 65: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

65

Πως έχει αλλάξει την πραγματικότητα των δικτύων Ethernet (σε σχέση με την απόδοσή τους, τον

αριθμό των συγκρούσεων και την καταλληλότητά τους για εφαρμογές πραγματικού χρόνου) η ευρεία

χρήση μεταγωγέων σε σχέση με τη χρήση μόνο διανεμητών ή τις παλαιότερες διαμορφώσεις καλωδίων

με σύνδεση (tap) για κάθε Η/Υ;

5.2. ΙΕΕΕ 802.11 (WiFi) WLAN To ΙΕΕΕ 802.11 πρότυπο (εμπορική ονομασία: WiFi) επεκτείνει την έννοια της πολλαπλής πρόσβασης με

αίσθηση φέροντος (CSMA) της τεχνολογίας Ethernet (ΙΕΕΕ 802.3) ώστε να προσαρμοστεί στα

χαρακτηριστικά της ασύρματης επικοινωνίας. Σε ένα WLAN οι κινητές ασύρματες συσκευές

επικοινωνούν με το υπόλοιπο ενδοδίκτυο μέσω ενός σταθμού βάσης (base station) που λειτουργεί ως

σημείο πρόσβασης (access point) προς το ενσύρματο LAN. Ένα τέτοιο δίκτυο ονομάζεται δίκτυο με

υποδομή (infrastructure network) σε αντιδιαστολή με την εναλλακτική διαμόρφωση ασύρματης

δικτύωσης, γνωστή ως αδόμητη δικτύωση (adhoc ή infrastructureless networking), η οποία δεν

περιλαμβάνει κάποιο σημείο πρόσβασης.

Στο φυσικό επίπεδο, τα IEEE 802.11 δίκτυα χρησιμοποιούν σήματα ραδιοσυχνοτήτων (στις ελεύθερες

μπάντες συχνοτήτων 2,4GHz και 5GHz) ως μέσο μετάδοσης. Έως τώρα έχουν δημοσιευθεί και τεθεί σε

λειτουργία τα 802.11b, 802.11g και 802.11a πρότυπα που διαφέρουν ως προς τη μέγιστη απόσταση

μεταξύ κινητής συσκευής και σημείου πρόσβασης, την ταχύτητα μετάδοσης, τη μπάντα συχνοτήτων

στην οποία λειτουργούν και της τεχνικής που χρησιμοποιούν για την επιλογή καναλιού συχνότητας.

Αντίστοιχα με το Ethernet, to 802.11 MAC πρωτόκολλο παρέχει ίσες ευκαιρίες σε όλους τους σταθμούς

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

οποιονδήποτε άλλο. Ωστόσο, διάφορα προβλήματα εγκύπτουν από την ασύρματη φύση των WLANs,

καθώς οι μηχανισμοί αίσθησης φέροντος και ανίχνευσης συγκρούσεων που εφαρμόζονται στο Ethernet

είναι αποτελεσματικοί μόνο όταν η ισχύς των σημάτων διατηρείται σταθερή σε όλο το δίκτυο. Καθώς

αυτό δεν είναι εφικτό σε όλο το χώρο όπου λειτουργούν WLANs, η αίσθηση φέροντος και ανίχνευση

συγκρούσεων μπορεί να αποτύχει με τους ακόλουθους τρόπους:

• Κρυμμένα τερματικά (hidden terminals): η αίσθηση φέροντος του σταθμού μπορεί να αποτύχει να

ανιχνεύσει ότι κάποιος άλλος -εκτός εμβέλειας- σταθμός στο ίδιο WLAN Β μεταδίδει. Αν ο Α αρχίσει

να μεταδίδει, θα συμβεί σύγκρουση.

• Εξασθένιση (fading): τα ραδιοσήματα εξασθενούν πολύ γρήγορα καθώς αυξάνεται η απόσταση

από τον αποστολέα. Σταθμοί που ανήκουν στο ίδιο WLAN ενδέχεται να βρίσκονται εκτός αμοιβαίας

εμβέλειας και να μην ανιχνεύουν τις μεταδόσεις άλλων σταθμών. Η εξασθένιση οδηγεί συχνά σε

αποτυχία τόσο της αίσθησης φέροντος όσο και της ανίχνευσης συγκρούσεων.

• Συγκάλυψη συγκρούσεων (collision masking): λόγω της γρήγορης εξασθένισης σημάτων με την

απόσταση, η ισχύς των μεταδιδόμενων δεδομένων είναι πάντα πολύ υψηλότερη από εκείνη των

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

δεδομένων που εκπέμπουν, η οποία ωστόσο να ανιχνευθεί από έναν τρίτο σταθμό.

Η αίσθηση φέροντος εξακολουθεί και εφαρμόζεται στα 802.11 δίκτυα, ενισχύεται ωστόσο με την

προσθήκη ενός μηχανισμού δέσμευσης θυρίδων (slot reservation) του MAC πρωτοκόλλου. Έτσι

Page 66: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

66

προκύπτει το σχήμα που αποκαλείται πολλαπλή πρόσβαση με αίσθηση φέροντος και αποφυγή

συγκρούσεων (carrier sense multiple access with collision avoidance, CSMA/CA). To πρωτόκολλο

δέσμευσης θυρίδων περιλαμβάνει την ανταλλαγή ενός ζεύγους σύντομων πλαισίων μεταξύ του

αποστολέα και του παραλήπτη. Το πρώτο είναι το πλαίσιο «αίτησης αποστολής» (request to send, RTS),

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

παραλήπτης απαντά με μία «άδεια αποστολής» (clear to send, CTS), επαναλαμβάνοντας τη διάρκεια

της θυρίδας. Έτσι, όλοι οι σταθμοί εντός εμβέλειας του αποστολέα ή του παραλήπτη θα αναβάλουν

τυχόν μετάδοση δεδομένων καθ’ όλη τη διάρκεια της αιτούμενης θυρίδας.

Ασφάλεια: η απαίτηση ιδιωτικότητας και ακεραιότητας της επικοινωνίας είναι προφανής στα

ασύρματα δίκτυα. Οποιοσδήποτε σταθμός εντός εμβέλειας εξοπλισμένος με ένα συμβατό πομποδέκτη

μπορεί να συνδεθεί στο δίκτυο ή να υποκλέψει μεταδιδόμενα δεδομένα. Η πρώτη προσπάθεια να

αντιμετωπιστούν τα προβλήματα ασφαλείας στο 802.11 ονομάζεται WEP (wired equivalent privacy), η

οποία ωστόσο συγκεντρώνει αρκετά μειονεκτήματα.

Δραστηριότητα 3.27

Ποιες οι διαφορές μεταξύ ασύρματων δικτύων με υποδομή και αδόμητων ασύρματων δικτυών;

Δραστηριότητα 3.28

Ανατρέξτε στη βιβλιογραφία για να αναζητήσετε τα τεχνικά χαρακτηριστικά των διαφορετικών 802.11

προτύπων που έχουν τεθεί σε εφαρμογή. Ποιες εκδοχές είναι σήμερα δημοφιλέστερες;

Δραστηριότητα 3.29

Ποιοι λόγοι οδήγησαν στην ανάπτυξη ενός νέου προτύπου (MAC πρωτοκόλλου) για WLANs. Συνοψίστε

τις βασικές διαφορές μεταξύ των MAC πρωτοκόλλων που χρησιμοποιούνται στα πρότυπα 802.3 και

802.11.

5.3. ΙΕΕΕ 802.15.1 Bluetooth WPAN Το Bluetooth είναι μια WPAN τεχνολογία που αναδύθηκε από την ανάγκη διασύνδεσης κινητών

τηλεφώνων, laptops, PDAs, ακουστικών, κλπ. Οι αρχικές του προδιαγραφές ορίστηκαν από μια ομάδα

ειδικού ενδιαφέροντος (special interest group, SIG) της Ericsson το 1999, υιοθετήθηκαν από την ομάδα

εργασίας (working group, WG) 802.15 της IEEE και δημοσιεύθηκαν ως πρότυπο IEEE 802.15.1. Τα

Bluetooth δίκτυα διαφέρουν σημαντικά από τα WiFi δίκτυα καθώς στοχεύουν στην υποστήριξη πολύ

μικρών, χαμηλού κόστους συσκευών, με σχεδιαστικούς στόχους την ελαχιστοποίηση στην αύξηση του

κόστους και κατανάλωση ενέργειας των Bluetooth-συμβατών συσκευών. Οι εφαρμογές στις οποίες

απευθύνεται απαιτούν μικρότερο εύρος ζώνης και εμβέλεια από τις τυπικές LAN εφαρμογές. Αυτό

είναι ένα ευπρόσδεκτο χαρακτηριστικό καθώς το Bluetooth λειτουργεί στην ίδια κορεσμένη,

αδέσμευτη μπάντα συχνοτήτων 2,4GHz, όπως τα WiFi δίκτυα και τα ασύρματα τηλέφωνα. Η τυπική

κάλυψη των Bluetooth συσκευών είναι έως 10m, ενώ η ενεργειακή αποδοτικότητα του Bluetooth

βελτιώνεται με τη χρήση της δυνατότητας προσαρμοζόμενης εμβέλειας που επιτρέπει τη δυναμική

προσαρμογή της εκπεμπόμενης ισχύος.

Page 67: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

67

Οι Bluetooth κόμβοι σχετίζονται δυναμικά σε ζεύγη χωρίς απαίτηση προηγούμενης γνώσης. Μετά την

επιτυχημένη συσχέτιση, ο μυητικός κόμβος (initiating node) αναλαμβάνει το ρόλο του αφέντη (master)

και ο άλλος του σκλάβου (slave). Ένα Piconet είναι ένα δίκτυο δυναμικής συσχέτισης ενός αφέντη και

μέχρι 7 ενεργών σκλάβων, με τον αφέντη να ελέγχει τη χρήση του καναλιού επικοινωνίας και να

αποδίδει χρονοθυρίδες σε κάθε σκλάβο. Ένας κόμβος που ανήκει σε περισσότερα από ένα Piconets

λειτουργεί ως γέφυρα επιτρέποντας σε αφέντες να επικοινωνήσουν. Πολλά τέτοια διασυνδεδεμένα

Piconets αποτελούν ένα Scatternet.

Άσκηση αυτοαξιολόγησης 3.20

Ποιο το πεδίο εφαρμογής και τα τεχνικά χαρακτηριστικά των δικτύων Bluetooth; Ποιοι ρόλοι κόμβων

καθορίζονται στις προδιαγραφές του Bluetooth και ποια η σημασία καθενός από αυτούς;

Δραστηριότητα 3.30

Εξηγήστε συνοπτικά το πρωτόκολλο συσχέτισης των δικτύων Bluetooth. Ποιος είναι ο μέγιστος χρόνος

συσχέτισης που μπορεί να παρατηρηθεί; Πως επιτυγχάνουν σύγχρονη και ασύγχρονη επικοινωνία;

Ποιος ο ρόλος κάθε πεδίου στα SCO πλαίσια; Ποια είναι η μέγιστη συνολική ρυθμαπόδοση που μπορεί

να επιτευχθεί σε ένα Piconet;

5.4. Δίκτυα ασύγχρονου τρόπου μεταφοράς (asynchronous transfer mode, ATM)

H τεχνολογία ATM σχεδιάστηκε για τη μεταφορά ποικιλίας δεδομένων, συμπεριλαμβανομένων των

πολυμεσικών δεδομένων όπως φωνής και video. Είναι ένα γρήγορο δίκτυο μεταγωγής πακέτων που

βασίζεται σε μία μέθοδο δρομολόγησης πακέτων γνωστή ως αναμετάδοση κελιών (cell relay), η οποία

μπορεί να λειτουργήσει πολύ γρηγορότερα από τη συμβατική μεταγωγή πακέτων. Η ταχύτητα

επιτυγχάνεται αποφεύγοντας τον έλεγχο ροής και έλεγχο σφαλμάτων στους ενδιάμεσους κόμβους

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

πιθανότητα να φθείρουν τα δεδομένα. Άλλος ένα παράγοντας που επηρεάζει την απόδοση του ΑΤΜ

είναι οι μικρές, καθορισμένου-μήκους μονάδες δεδομένων που εκπέμπονται, οι οποίες μειώνουν το

απαιτούμενο μέγεθος ενδιάμεσης μνήμης καθώς και την πολυπλοκότητα και την καθυστέρηση

αναμονής σε ουρές στους κόμβους. Το ΑΤΜ λειτουργεί σε συνδεδεμένο τρόπο (connected mode), αλλά

η σύνδεση εγκαθιδρύεται μόνο εφόσον επαρκούν οι πόροι. Όταν εγκαθιδρυθεί μια σύνδεση, η

ποιότητά της (εύρος ζώνης και καθυστέρηση) είναι εγγυημένη. Το ΑΤΜ μπορεί να υλοποιηθεί πάνω σε

υφιστάμενα ψηφιακά τηλεφωνικά δίκτυα. Το ΑΤΜ πρότυπο συστήνει την παροχή εικονικών

κυκλωμάτων με ρυθμούς μετάδοσης δεδομένων έως 155Mbps ή 622Mbps.

Η ATM υπηρεσία δομείται στα εξής στρώματα:

� το ΑΤΜ στρώμα προσαρμογής (ATM adaptation layer) είναι ένα από άκρο-σε-άκρο στρώμα που

στοχεύει στην υποστήριξη υφιστάμενων υψηλότερου επιπέδου πρωτοκόλλων, όπως το TCP/IP,

� το στρώμα ΑΤΜ (ATM layer) παρέχει μια συνδεσμοστραφή υπηρεσία που εκπέμπει καθορισμένου

μήκους πακέτα, γνωστά ως κελιά (cells). Μια σύνδεση αποτελείται από μια σειρά εικονικών

καναλιών (virtual circuits, VCs) μέσα σε εικονικά μονοπάτια (virtual paths, VPs). Το VC είναι μια

Page 68: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

68

λογική μονοκατευθυντική συσχέτιση μεταξύ δύο ακραίων σημείων μιας ζεύξης, μέσα στο φυσικό

μονοπάτι από την αφετηρία στον προορισμό. Το VP είναι ένα σύνολο από VCs που σχετίζονται με

ένα φυσικό μονοπάτι μεταξύ δύο κόμβων μεταγωγής. Τα VPs στοχεύουν στην υποστήριξη ημι-

μόνιμων συνδέσεων μεταξύ ζευγών ακραίων σημείων. Τα VCs ορίζονται δυναμικά όταν

δημιουργούνται συνδέσεις.

Οι κόμβοι σε ένα ΑΤΜ δίκτυο παίζουν τρεις διακριτούς ρόλους: (α) Ξένιοι Η/Υ, που στέλνουν και

λαμβάνουν μηνύματα, (β) VP μεταγωγείς που συντηρούν πίνακες που δείχνουν τη συσχέτιση μεταξύ

εισερχόμενων και εξερχόμενων VPs, και (γ) VP/VC μεταγωγείς που συντηρούν αντίστοιχους πίνακες για

VPs και VCs. Ένα κελί ΑΤΜ έχει μια 5-bit επικεφαλίδα και 48-bit πεδίο δεδομένων. Η επικεφαλίδα

περιλαμβάνει ένα αναγνωριστικό VC και ένα αναγνωριστικό VP, τα οποία μαζί παρέχουν την

πληροφορία που απαιτείται για τη δρομολόγηση του κελιού στο δίκτυο. Τα VP/VC αναγνωριστικά

ορίζονται τοπικά. Αυτό το σχήμα έχει το πλεονέκτημα της μη απαίτησης για καθολικά αναγνωριστικά,

που θα έπρεπε να είναι πολύ μεγάλοι αριθμοί.

Δραστηριότητα 3.31

Σε ποιου είδους εφαρμογές στοχεύει η τεχνολογία ΑΤΜ και ποια χαρακτηριστικά της βοηθούν σε αυτή

τη στόχευση;

Άσκηση αυτοαξιολόγησης 3.21

Περιγράψτε πως δομείται η τεχνολογία ΑΤΜ και τον τρόπο δρομολόγησης των ATM κελιών.

6. Επανάληψη Το κεφάλαιο αυτό εστίασε στις αρχές και τεχνικές δικτύωσης που χρησιμοποιούνται ως βάση στα

κατανεμημένα συστήματα. Αναλύθηκαν διεξοδικότερα θέματα που αφορούσαν τα δίκτυα πακέτων,

δίκτυα τοπικής και ευρείας περιοχής, δρομολόγησης, ελέγχου συμφόρησης, σουίτες πρωτοκόλλων

διαδικτύων (με έμφαση στη σουίτα TCP/IP αλλά και στο IPv6) και υποστήριξη της δικτύωσης κινητών

χρηστών (με έμφαση στο MobileIP και τις WLAN/WPAN τεχνολογίες).

Page 69: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

69

ΚΕΦΑΛΑΙΟ 4 : Διαδιεργασιακή

Επικοινωνία

Σκοπός Ο σκοπός του κεφαλαίου είναι η μελέτη των δομικών στοιχείων των πρωτοκόλλων διαδιεργασιακής

επικοινωνίας για κατανεμημένα συστήματα, της επικοινωνίας με πολυεκπομπή και των υπερκείμενων

δικτύων.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Περιγράψετε τα γενικά χαρακτηριστικά της διαδιεργασιακής επικοινωνίας

• Εξηγήσετε την χρήση των sockets ως προγραμματιστικής αφαίρεσης για την υλοποίησης της

διαδιεργασιακής επικοινωνίας

• Περιγράψετε δύο τρόπους υλοποίησης της διαδιεργασιακής επικοινωνίας με χρήση των

πρωτοκόλλων μεταφοράς του Διαδικτύου

• Χρησιμοποιήσετε την διεπαφή προγραμματισμού εφαρμογών της γλώσσας Java για τα

πρωτόκολλα μεταφοράς UDP και TCP

• Εξηγήσετε την ανάγκη για εξωτερική αναπαράσταση δεδομένων στην επικοινωνία μεταξύ

ετερογενών συστημάτων

• Εξηγήσετε τη διαδικασία μορφοποίησης αποστολής (marshalling) και τη διαδικασία

μορφοποίησης παραλαβής (unmarshalling) στο πλαίσιο της εξωτερικής αναπαράστασης

δεδομένων

• Περιγράψετε τρείς τρόπους εξωτερικής αναπαράστασης δεδομένων και των αντίστοιχων

διαδικασιών marshalling/unmarshalling

• Εξηγήσετε την λειτουργία της πολυεκπομπής και τη χρήση της για την υλοποίηση ομαδικής

επικοινωνίας

• Περιγράψετε μια υλοποίηση ομαδικής επικοινωνίας

• Χρησιμοποιήσετε την διεπαφή προγραμματισμού εφαρμογών της γλώσσας Java για υλοποίηση

ομαδικής επικοινωνίας με το πρωτόκολλο IP multicast

• Εξηγήσετε τις έννοιες εικονικοποίηση δικτύου (network virtualization) και υπερκείμενο δίκτυο

(overlay network)

• Περιγράψτε οκτώ διαφορετικές εφαρμογές υπερκείμενων δικτύων

• Ταξινομήσετε τις εφαρμογές υπερκείμενων δικτύων σε τρεις κατηγορίες

• Εξηγήσετε τη χρησιμότητα της βιβλιοθήκης MPI στην ανάπτυξη κατανεμημένων εφαρμογών

Page 70: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

70

• Περιγράψετε τρεις τρόπους αποστολής μηνυμάτων σε μια διαδιεργασιακή επικοινωνία με το

πρότυπο MPI

Έννοιες κλειδιά Διαδιεργασιακή Επικοινωνία (Interprocess Communication), Διεπαφή Διαβίβασης Μηνυμάτων

(Message Passing Interface), Διεπαφή Προγραμματισμού Εφαρμογών (Application Programming

Interface), Μορφοποίηση Αποστολής (Marshalling), Μορφοποίηση Παραλαβής (Unmarshalling),

Εικονικοποίηση Δικτύου (Network Virtualization), Εξωτερική Αναπαράσταση Δεδομένων (External Data

Representation), Πολυεκπομπή (Multicast), Υπερκείμενο Δίκτυο (Overlay Network), Υποδοχές (Sockets).

1. Εισαγωγικές παρατηρήσεις Στα κατανεμημένα συστήματα η διαδιεργασιακή επικοινωνία συνιστά βασική μορφή επικοινωνίας που

βασίζεται στην ανταλλαγή μηνυμάτων. Το περιεχόμενο αυτού του κεφαλαίου όπως και του επόμενου

σχετίζεται με την λειτουργία και τις προσφερόμενες υπηρεσίες του Ενδιάμεσου Λογισμικού

(Middleware). Στο κεφάλαιο αυτό μελετάμε τη σχεδίαση της βασικής υποδομής (υποδοχές, διαβίβαση

μηνυμάτων, πολυεκπομπή, υπερκείμενα δίκτυα) για την υποστήριξη της διαδιεργασιακής επικοινωνίας

σε ένα κατανεμημένο σύστημα. Στο επόμενο κεφάλαιο παρουσιάζονται βασικά μοντέλα

προγραμματισμού κατανεμημένων εφαρμογών, όπως το μοντέλο της απομακρυσμένης κλήσης

μεθόδου (remote method invocation) και της απομακρυσμένης κλήσης διαδικασίας (remote procedure

call).

Στη συνέχεια του κεφαλαίου, η Ενότητα 2 εξετάζει τα πρωτόκολλα μεταφοράς UDP και TCP από την

οπτική του προγραμματιστή και παρουσιάζει την διεπαφή προγραμματισμού εφαρμογών (application

programming interface ή API) της γλώσσας Java για τα παραπάνω πρωτόκολλα μεταφοράς. Στην ίδια

Ενότητα παρουσιάζονται επίσης τα μοντέλα αστοχιών των πρωτοκόλλων μεταφοράς. Στην Ενότητα 3

του κεφαλαίου εξετάζεται πως τα αντικείμενα και οι δομές δεδομένων που χρησιμοποιούνται σε

κατανεμημένες εφαρμογές μπορούν να μεταφραστούν σε μια κατάλληλη μορφή που επιτρέπει την

μεταφορά τους μέσω μηνυμάτων στο δίκτυο παρόλο που είναι δυνατόν να έχουμε διαφορετικές

αναπαραστάσεις των βασικών τύπων δεδομένων σε διαφορετικές μηχανές. Παρουσιάζεται επίσης μια

αναπαράσταση των αναφορών σε απομακρυσμένα αντικείμενα στο πλαίσιο των κατανεμημένων

συστημάτων. Η Ενότητα 4 εξετάζει την πολυεκπομπική επικοινωνία (multicast communication) όπου το

ίδιο μήνυμα αποστέλλεται σε πολλές διεργασίες μέσω του μηχανισμού πολυεκπομπής. Εξετάζεται ως

παράδειγμα το IP multicast. H Ενότητα 5 εξετάζει τα υπερκείμενα δίκτυα (overlay networks). Ένα

υπερκείμενο δίκτυο χτίζεται πάνω από ένα άλλο δίκτυο και επιτρέπει την δρομολόγηση μηνυμάτων

πάνω από το TCP/IP επίπεδο για την υλοποίηση δικτυακών υπηρεσιών όπως διαμοίραση αρχείων (file

sharing) και διανομή περιεχομένου (content distribution). Τέλος, η Ενότητα 6 παρουσιάζει ως μελέτη

περίπτωσης, το MPI (Message Passing Interface) μια πρότυπη βιβλιοθήκη για ανάπτυξη

κατανεμημένων/παράλληλων εφαρμογών υψηλών επιδόσεων.

Άσκηση αυτοαξιολόγησης 4.1

Page 71: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

71

Για την υλοποίηση της επικοινωνίας μέσω των πρωτοκόλλων μεταφοράς UDP και TCP ορίζεται για

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

μια από τις παραπάνω διεπαφές προγραμματισμού υλοποιεί την επικοινωνία;

Άσκηση αυτοαξιολόγησης 4.2

Τι ορίζεται ως επικοινωνία παραγωγού-καταναλωτή (producer-consumer communication);

2. API για Internet πρωτόκολλα Σε αυτή την ενότητα μελετούνται τα γενικά χαρακτηριστικά της διαδιεργασιακής επικοινωνίας και η

χρήση των πρωτοκόλλων του Διαδικτύου σε επίπεδο προγραμματισμού εφαρμογών, είτε με την μορφή

UDP μηνυμάτων, είτε με τη μορφή TCP ρευμάτων (streams). Οι διεπαφές προγραμματισμού που

συζητούνται για την υλοποίηση της επικοινωνίας με χρήση των πρωτοκόλλων μεταφοράς του

Διαδικτύου συνδέονται με τη γλώσσα προγραμματισμού Java, είναι όμως παρόμοιες με τις διεπαφές

που είχαν αρχικά σχεδιαστεί ως μέρος του λειτουργικού συστήματος Berkeley BSD 4.x UNIX. Οι Java

κλάσεις που παρουσιάζονται ορίζονται στο πακέτο java.net.

2.1. Τα χαρακτηριστικά της διαδιεργασιακής επικοινωνίας Για την επικοινωνία δύο διεργασιών με ανταλλαγή μηνυμάτων απαιτούνται δύο βασικές λειτουργίες:

send και receive. Μια διεργασία αποστολέας στέλνει ένα μήνυμα (μια ακολουθία από bytes) σε μια

άλλη διεργασία παραλήπτη. Η αποστολή και λήψη μηνυμάτων μπορεί να απαιτεί το συγχρονισμό των

διεργασιών που επικοινωνούν.

Σύγχρονη και ασύγχρονη επικοινωνία (synchronous and asynchronous communication)

Η διαδιεργασιακή επικοινωνία βασίζεται στο μοντέλο επικοινωνίας παραγωγού-καταναλωτή. Τα

μηνύματα αποστέλλονται (λειτουργία send) από την διεργασία παραγωγό και φθάνουν στην διεργασία

καταναλωτή όπου αποθηκεύονται σε μια ουρά μηνυμάτων μέχρι να διαβαστούν (λειτουργία receive).

Αυτή η επικοινωνία μεταξύ των διεργασιών μπορεί να είναι είτε σύγχρονη, είτε ασύγχρονη.

Στη σύγχρονη επικοινωνία (synchronous communication) οι διεργασίες συγχρονίζονται σε κάθε βήμα

της αλληλεπίδρασής τους. Οι λειτουργίες send και receive σε αυτή την περίπτωση πρέπει να είναι

blocking. Η ροή ελέγχου της διεργασίας (ή του νήματος ελέγχου) που χρησιμοποιεί τη λειτουργία send

για την αποστολή ενός μηνύματος μπλοκάρεται και περιμένει μέχρι η διεργασία προορισμού να

παραλάβει το μήνυμα με την λειτουργία receive. Αντίστοιχα, η διεργασία (ή το νήμα ελέγχου) που

χρησιμοποιεί τη λειτουργία receive για την παραλαβή ενός μηνύματος μπλοκάρεται μέχρι την άφιξη

ενός μηνύματος.

Στην ασύγχρονη επικοινωνία (asynchronous communication) η λειτουργία send είναι non-blocking.

Αυτό σημαίνει πως η διεργασία που αποστέλλει ένα μήνυμα μπορεί να συνεχίσει την ροή ελέγχου της

καθώς η λειτουργία send αντιγράφει το μήνυμα σε έναν τοπικό buffer και επιστρέφει τον έλεγχο στην

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

εκτέλεση άλλων λειτουργιών της αποστέλλουσας διεργασίας. H λειτουργία receive μπορεί να είναι είτε

Page 72: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

72

blocking, είτε non-blocking. Στην περίπτωση της non-blocking receive απαιτείται ένας μηχανισμός

ειδοποίησης για την άφιξη του μηνύματος (π.χ. polling ή interrupt). Τα σημερινά περιβάλλοντα

ανάπτυξης κατανεμημένων εφαρμογών χάρις στα πολλαπλά νήματα ελέγχου που υποστηρίζουν δε

χρειάζεται να βασίζονται στην non-blocking έκδοση της receive, απλοποιώντας έτσι την διαχείριση

παραλαβής των μηνυμάτων.

Προορισμοί μηνυμάτων

Ο προορισμός ενός μηνύματος που αποστέλλεται με τα πρωτόκολλα του Διαδικτύου προσδιορίζεται με

ένα ζευγάρι τιμών της μορφής (Internet address, port number). Μια διεργασία πελάτης που θέλει να

χρησιμοποιήσει μια υπηρεσία ενός εξυπηρετητή πρέπει να γνωρίζει τόσο την IP διεύθυνση του Η/Υ που

φιλοξενεί την διεργασία, όσο και τον αριθμό της θύρας που σχετίζεται με την υπηρεσία.

Άσκηση αυτοαξιολόγησης 4.3

Εάν ένας πελάτης γνωρίζει μια σταθερή IP διεύθυνση για την υπηρεσία που ζητάει, τότε η υπηρεσία θα

πρέπει να παρέχεται πάντα από τον ίδιο Η/Υ για να είναι έγκυρη η διεύθυνση που γνωρίζει ο πελάτης.

Με ποιους τρόπους μπορούμε να ξεπεράσουμε τον παραπάνω περιορισμό και να επιτύχουμε

διαφάνεια θέσης ως προς την υπηρεσία;

Δραστηριότητα 4.1

Θεωρήστε ένα κατανεμημένο σύστημα όπου κάθε κινητή συσκευή έχει ένα ή περισσότερα ονόματα

φιλικά προς τον χρήστη καθώς και μια ή περισσότερες διευθύνσεις. Για να βρούμε την διεύθυνση μιας

τέτοιας συσκευής χρησιμοποιώντας ένα όνομα, είναι χρήσιμο να εισαγάγουμε μια ταυτότητα

(identifier) συσκευής που είναι ανεξάρτητη της θέσης της. Εξηγήστε γιατί;

Αξιοπιστία

Ο όρος αξιόπιστη επικοινωνία ορίζεται σε σχέση με τις ιδιότητες της εγκυρότητας και της ακεραιότητας

(δείτε την Ενότητα 3.2). Η διαδιεργασιακή επικοινωνία χαρακτηρίζεται έγκυρη εάν η απώλεια ενός

λογικού αριθμού πακέτων δε θα εμποδίσει την επιτυχή παράδοση των μηνυμάτων στον προορισμό

τους. Για την τήρηση της ακεραιότητας θα πρέπει τα μηνύματα που φθάνουν στον προορισμό να μην

είναι αλλοιωμένα, ούτε αντίγραφα ήδη αφιχθέντων.

Διάταξη

Μερικές εφαρμογές απαιτούν την παράδοση μηνυμάτων με την ίδια σειρά που έγινε η αποστολή

θεωρώντας οτιδήποτε άλλο ως αστοχία.

2.2. Sockets Ο όρος socket περιγράφει τόσο έναν μηχανισμό, όσο και μια προγραμματιστική αφαίρεση για την

υλοποίηση διαδιεργασιακής επικοινωνίας τύπου client-server. Τα sockets πρωτοεμφανίστηκαν στο BSD

UNIX, αλλά περιλαμβάνονται πλέον σε όλα τα διαδεδομένα λειτουργικά συστήματα (π.χ. διάφορες

εκδόσεις του UNIX, Windows και Macintosh OS). Μερικά από τα πιο δημοφιλή προγράμματα που

χρησιμοποιούνται σήμερα, όπως Web Browsers, Instant Messaging και File Sharing, βασίζονται στη

Page 73: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

73

λειτουργία των sockets. Τα sockets παρέχονται ως δικτυακή υπηρεσία από το λειτουργικό σύστημα και

χρησιμοποιούνται από τις κατανεμημένες εφαρμογές για την υλοποίηση των απαιτήσεων επικοινωνίας

τους.

Η επικοινωνιακή σύνδεση μεταξύ δύο διεργασιών μπορεί να περιγραφεί με μια πεντάδα της μορφής:

(πρωτόκολλο, τοπική-διεύθυνση, τοπική-διεργασία, απομακρυσμένη-διεύθυνση, απομακρυσμένη-

διεργασία). Το πρωτόκολλο αναφέρεται στο σύνολο των κανόνων που διέπουν την επικοινωνία (π.χ.

UDP, TCP). Η τοπική-διεύθυνση και απομακρυσμένη-διεύθυνση, προσδιορίζουν τις IP διευθύνσεις των

Η/Υ, στους οποίους εκτελούνται οι επικοινωνούσες διεργασίες. Η τοπική-διεργασία και

απομακρυσμένη-διεργασία, προσδιορίζουν την ταυτότητα των διεργασιών που θα επικοινωνούν,

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

αυτές τις διεργασίες που εκτελούνται στον ίδιο Η/Υ και που χρειάζονται επικοινωνία μέσω δικτύου,

λαμβάνει έναν 16-bit ακέραιο αριθμό, ο οποίος αναπαριστά την θύρα (port number) της διεργασίας και

κατά επέκταση, της υπηρεσίας.

Με βάση τον παραπάνω ορισμό της επικοινωνιακής σύνδεσης το socket λέμε ότι περιγράφει το ένα

άκρο, αυτής της σύνδεσης. Περιλαμβάνει την τριάδα (πρωτόκολλο, διεύθυνση, αριθμό θύρας) για το

ένα άκρο της επικοινωνιακής σύνδεσης. H διαδιεργασιακή επικοινωνία με sockets απαιτεί συνεπώς την

μετάδοση μηνυμάτων μεταξύ ενός socket στη μια διεργασία και ενός socket στην άλλη διεργασία. Μια

διεργασία μπορεί να χρησιμοποιεί το ίδιο socket και για να στέλνει και για να λαμβάνει μηνύματα. Μια

διεργασία μπορεί να χρησιμοποιεί πολλές θύρες για τη λήψη μηνυμάτων, αλλά δεν μπορεί να

μοιράζεται την ίδια θύρα με άλλη διεργασία στον ίδιο υπολογιστή. Πολλές διεργασίες μπορεί να

στείλουν μηνύματα προς την ίδια θύρα (να μοιράζονται δηλαδή την ίδια υπηρεσία). Οι θύρες στο

διάστημα [1..1024] είναι συνήθως δεσμευμένες από προκαθορισμένες υπηρεσίες (π.χ. ftp, telnet, http,

echo, daytime, κτλ) και δε θα πρέπει να χρησιμοποιούνται (ισχύει σε UNIX υλοποιήσεις).

Η λειτουργία των sockets και η πολυπλοκότητα της υλοποίησής τους αποκρύπτεται εντός του

λειτουργικού συστήματος το οποίο παρέχει στις εφαρμογές μια απλούστερη προγραμματιστική

διεπαφή. Για μια εφαρμογή ένα socket είναι ένας file descriptor (στο UNIX όλες οι Ι/Ο συσκευές, και το

δίκτυο, μοντελοποιούνται ως αρχεία). Κάθε πρόγραμμα διαβάζει από και γράφει σε ένα socket

(δηλαδή στέλνει και λαμβάνει δεδομένα μέσω δικτύου), με τρόπο παρόμοιο της εγγραφής και

ανάγνωσης αρχείων του συστήματος αρχείων. Η βασική διαφορά μεταξύ file I/O και socket I/O είναι

στο πως μια εφαρμογή «δημιουργεί» τα socket descriptors.

Άσκηση αυτοαξιολόγησης 4.4

Πως μπορούμε στη Java να αποκτήσουμε την ΙP διεύθυνση ενός Η/Υ για τον οποίο γνωρίζουμε το

Internet domain name (π.χ. edu.eap.gr)

Δραστηριότητα 4.2

Μια εφαρμογή αρχιτεκτονικής client-server έχει αναπτυχθεί χρησιμοποιώντας sockets για λειτουργικό

σύστημα UNIX. Περιγράψτε τα πιθανά προβλήματα που θα πρέπει να αντιμετωπιστούν: α) για την

μεταφορά όλης της εφαρμογής σε ένα άλλο λειτουργικό σύστημα (π.χ. Windows) και β) για την

Page 74: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

74

υλοποίηση τμήματος της εφαρμογής (π.χ. server) σε UNIX και τμήματος (π.χ. client) σε άλλο

λειτουργικό σύστημα.

2.3. UDP datagram επικοινωνία Ένα UDP datagram είναι ένα αυτόνομο μήνυμα (περιλαμβάνει πάντα διεύθυνση προορισμού και

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

μετάδοση ενός datagram γίνεται με ένα UDP socket που υποστηρίζει επικοινωνία χωρίς σύνδεση

(connectionless) με χρήση του πρωτοκόλλου μεταφοράς UDP. Είναι στην ευθύνη της εφαρμογής να

ελέγξει, εάν χρειάζεται, ότι αυτό που έστειλε, το έλαβε τελικά ο παραλήπτης και δε χάθηκε στην

διαδρομή.

Μερικά θέματα υλοποίησης που σχετίζονται με την UDP επικοινωνία είναι:

• Μέγεθος μηνύματος: το ΙP πρωτόκολλο επιτρέπει πακέτα έως 64 ΚΒ, αλλά το τυπικό μέγιστο είναι 8

ΚΒ. Η διεργασία παραλήπτης θα πρέπει να μεριμνήσει ώστε να έχει δεσμεύσει την απαιτούμενη

μνήμη (buffer) για το διάβασμα του μηνύματος. Η εφαρμογή που χρησιμοποιεί datagrams μπορεί

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

• Blocking: Tα UDP sockets συνήθως υποστηρίζουν non-blocking send και blocking receive.

• Τimeouts: Για να αποφευχθεί ατέρμονη αναμονή στο receive ορίζεται ένα timeout.

• Λήψη από οποιονδήποτε: Η λειτουργία receive λαμβάνει ένα μήνυμα από οποιοδήποτε socket και

όχι από κάποιο προκαθορισμένο. Το μήνυμα περιέχει τα στοιχεία του αποστολέα ώστε να μπορεί

να αναγνωριστεί και να του αποσταλεί, αν χρειάζεται, κάποια απάντηση.

Μοντέλο αστοχιών

Το μοντέλο αστοχιών που συζητήθηκε στην Ενότητα 3.2 μπορεί να χρησιμοποιηθεί για να περιγράψει

τις αστοχίες και στην UDP datagram επικοινωνία.

Άσκηση αυτοαξιολόγησης 4.5

Ποια τα είδη αστοχιών που μπορεί να παρουσιάσει η UDP datagram επικοινωνία;

Άσκηση αυτοαξιολόγησης 4.6

Πως μπορούμε να μετατρέψουμε μια αναξιόπιστη υπηρεσία που βασίζεται σε UDP επικοινωνία σε

αξιόπιστη;

Χρήση του UDP

Το UDP χρησιμοποιείται για την υλοποίηση υπηρεσιών που δεν απαιτούν επικοινωνία με σύνδεση,

όπως για παράδειγμα η υπηρεσία Domain Name Service. Επίσης, για την υλοποίηση πρωτοκόλλων τα

οποία δεν επηρεάζονται από την απώλεια μερικών πακέτων, όπως το πρωτόκολλο Voice Over IP (VOIP).

Άσκηση αυτοαξιολόγησης 4.7

Page 75: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

75

Εξαιτίας της απλότητάς του το UDP επιτρέπει ταχύτερη επικοινωνία σε σχέση με το TCP πρωτόκολλο.

Για ποιους συγκεκριμένους λόγους το UDP είναι ταχύτερο;

Δραστηριότητα 4.3

Το PING είναι ένα πρόγραμμα για τον εντοπισμό της διαθεσιμότητας και της απόδοσης ενός

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

πρόγραμμα με UDP datagram;

Java API για UDP datagrams

To Java API για UDP datagram επικοινωνία παρέχεται από δύο βασικές κλάσεις: DatagramSocket και

DatagramPacket. Η πρώτη αναπαριστά ένα socket που υλοποιεί την επικοινωνία με UDP datagrams και

η δεύτερη αποτελεί την φόρμα με την οποία κατασκευάζουμε τα προς αποστολή πακέτα.

Ενδεικτικοί κατασκευαστές της κλάσης DatagramPacket είναι:

DatagramPacket(byte[] buf, int length)

Κατασκευάζει ένα DatagramPacket, για λήψη πακέτων με μήκος αυτό που προσδιορίζεται από την

δεύτερη παράμετρο. Η πρώτη παράμετρος είναι ο buffer στον οποίο θα τοποθετηθούν τα δεδομένα.

DatagramPacket(byte[] buf, int length, InetAddress address, int port)

Κατασκευάζει ένα datagram packet για αποστολή πακέτων. Η πρώτη παράμετρος είναι τα δεδομένα

σε μορφή πίνακα από bytes, η δεύτερη το μέγεθος του πίνακα, ενώ η τρίτη και τέταρτη παράμετρος

είναι η διεύθυνση και ο αριθμός θύρας προορισμού αντίστοιχα.

Βασικές μέθοδοι της κλάσης DatagramPacket είναι:

InetAddress getAddress()

Επιστρέφει την ΙΡ διεύθυνση του Η/Υ, στον οποίο το datagram θα σταλθεί, ή απ’ τον οποίο έχει

παραληφθεί.

byte[] getData()

Επιστρέφει τα δεδομένα του πακέτου που έλαβε, ή που θα στείλει.

int getLength()

Επιστρέφει το μήκος των δεδομένων του πακέτου που έλαβε, ή που θα στείλει.

int getPort()

Επιστρέφει τον αριθμό θύρας του απομακρυσμένου Η/Υ, απ’ τον οποίο το πακέτο ελήφθη, ή τον

αριθμό θύρας του Η/Υ, στον οποίο το πακέτο θα σταλεί.

Ενδεικτικοί κατασκευαστές της κλάσης DatagramSocket είναι:

Page 76: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

76

DatagramSocket()

Κατασκευάζει ένα datagram socket και το συνδέει σε κάποια διαθέσιμη θύρα στον τοπικό Η/Υ.

DatagramSocket(int port)

Κατασκευάζει ένα datagram socket και το συνδέει στη θύρα που προσδιορίζεται στην παράμετρο.

DatagramSocket(int port, InetAddress address)

Κατασκευάζει ένα datagram socket και το συνδέει στην τοπική διεύθυνση και θύρα.

Οι κατασκευαστές εγείρουν μια SocketException εξαίρεση, σε περίπτωση αποτυχίας στη δημιουργία

του socket αντικειμένου.

Βασικές μέθοδοι της κλάσης DatagramSocket είναι:

void receive(DatagramPacket p)

Δέχεται ένα datagram πακέτο από αυτό το socket.

void send(DatagramPacket p)

Στέλνει ένα datagram πακέτο από αυτό το socket.

void connect(InetAddress address, int port)

Συνδέει το τοπικό socket για επικοινωνία με ένα απομακρυσμένο socket που προσδιορίζεται από τα

ορίσματα address και port.

InetAddress getLocalAddress()

Επιστρέφει την τοπική διεύθυνση, στην οποία το socket έχει συνδεθεί.

int getLocalPort()

Επιστρέφει τον αριθμό θύρας στον τοπικό Η/Υ, στον οποίο το socket έχει συνδεθεί.

void setSoTimeout(int timeout)

Θέτει ένα timeout σε milliseconds για την λειτουργία receive. Εάν ο χρόνος εκπνεύσει και δεν

παραληφθεί το πακέτο εγείρεται μια InterruptedIOException εξαίρεση.

void close()

Κλείνει το datagram socket.

Δραστηριότητα 4.4

Να κατεβάσετε τον κώδικα Java που δίνεται στις Εικόνες 4.3 και 4.4 του βιβλίου από τον διαδικτυακό

τόπο των συγγραφέων (www.cdk5.net/ipc) και να προσπαθήσετε να τρέξετε την κατανεμημένη

Page 77: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

77

εφαρμογή που υλοποιεί μια echo υπηρεσία πάνω από UDP. Εφόσον υπάρχει στον υπολογιστή σας

εγκατεστημένο το περιβάλλον ανάπτυξης της Java, μπορείτε με την javac εντολή σε ένα command line

παράθυρο να μεταγλωττίσετε τον κώδικα του client (UDPClient.java) και τον κώδικα του server

(UDPServer.java). Στην συνέχεια σε δύο ξεχωριστά παράθυρα τρέξτε πρώτα τον server και έπειτα τον

client. Ενδεικτικά οι εντολές που θα πρέπει να δώσετε είναι:

java UDPServer

java UDPClient “Hello SDY50 Tomos B” localhost

Στη συνέχεια τροποποιείστε τον κώδικα του server ώστε να τυπώνει τη διεύθυνση του Η/Υ από τον

οποίο έλαβε το αίτημα.

Δραστηριότητα 4.5

Να υλοποιηθεί σε Java μια κατανεμημένη εφαρμογή τύπου client-server που χρησιμοποιεί το UDP

πρωτόκολλο για την επικοινωνία. Η υλοποίηση θα περιλαμβάνει δύο προγράμματα, το πρόγραμμα του

client (ΤimeClient) και το πρόγραμμα του server (TimeServer). Ένας client όταν εκτελείται στέλνει ένα

μήνυμα στον server για να ρωτήσει την ώρα του. Ο server παρέχει αυτήν την υπηρεσία στην θύρα

15300 και όταν έρθει ένα αίτημα από κάποιον πελάτη, διαβάζει το ρολόι του συστήματος και

επιστρέφει ως απάντηση την ώρα του. Ο client τυπώνει στην οθόνη την απάντηση που έλαβε και

τερματίζει. Εφόσον δεν έχετε δίκτυο υπολογιστών ώστε να τρέξετε τις διεργασίες client και server σε

διαφορετικούς κόμβους μπορείτε να χρησιμοποιήσετε την διεύθυνση localhost (IP address 127.0.0.1)

η οποία δίνει την ψευδαίσθηση ενός δικτύου με έναν κόμβο. Ανοίξτε διαφορετικά παράθυρα για τον

client και τον server.

2.4. TCP stream επικοινωνία H διεπαφή προγραμματισμού για το TCP πρωτόκολλο παρέχει μια αφηρημένη μορφή ενός stream από

bytes στο οποίο μπορούν να γραφτούν δεδομένα και από το οποίο μπορούν να διαβαστούν δεδομένα.

Αυτή η αφηρημένη μορφή stream κρύβει τα ακόλουθα χαρακτηριστικά ενός δικτύου:

• Μέγεθος μηνύματος: Η υποκείμενη υλοποίηση του TCP stream αποφασίζει πόσα δεδομένα να

συλλέξει πριν στείλει το μήνυμα ως ένα ή περισσότερα πακέτα.

• Χαμένα μηνύματα: Το TCP πρωτόκολλο χρησιμοποιεί ένα acknowledgement σχήμα.

• Έλεγχος ροής: Το TCP πρωτόκολλο προσπαθεί να «ταιριάξει» την ταχύτητα της διεργασίας που

γράφει και αυτής που διαβάζει από το stream.

• Σειρά μηνυμάτων και διπλότυπα: Γίνεται χρήση ταυτότητας μηνύματος (message identifier)

• Προορισμός μηνύματος: Το TCP πρωτόκολλο εγκαθιδρύει σύνδεση μεταξύ των διεργασιών που θα

επικοινωνήσουν μέσω του stream. Χρειάζεται ένα connect αίτημα ακολουθούμενο από ένα accept

αίτημα από τον client και server αντίστοιχα. Αυτό το σχήμα αλληλεπίδρασης που είναι γνωστό και

ως τριμερής χειραψία (3-way handshake) μεταξύ του client και του server είναι πηγή επιβάρυνσης

στο κόστος επικοινωνίας.

Κατά την εγκαθίδρυση μιας TCP σύνδεσης o ρόλος του client είναι να:

Page 78: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

78

• δημιουργήσει ένα stream socket δεσμευμένο σε οποιοδήποτε (ελεύθερο) port

• στείλει ένα connect αίτημα στον server

Ο ρόλος του server είναι να:

• δημιουργήσει ένα listening socket δεσμευμένο σε μια προκαθορισμένη θύρα περιμένοντας από

clients αιτήσεις για σύνδεση (το listening socket διατηρεί μια ουρά από εισερχόμενες αιτήσεις)

• δημιουργήσει ένα νέο stream socket για τον server για να επικοινωνεί με έναν συγκεκριμένο client,

όταν γίνει δεκτή (accept) η αίτησή του

Για την επικοινωνία δυο διεργασιών χρειάζεται ένα ζεύγος από sockets και ένα ζεύγος από streams,

ένα για είσοδο (input stream) και ένα για έξοδο (output stream). Μια διεργασία στέλνει πληροφορία

στην άλλη γράφοντας στο δικό της output stream και η άλλη διεργασία παίρνει την πληροφορία

διαβάζοντας από το δικό της input stream.

Άσκηση αυτοαξιολόγησης 4.8

Τι θα συμβεί όταν μια εφαρμογή κλείνει ένα TCP stream socket;

Άσκηση αυτοαξιολόγησης 4.9

Γιατί δύο διεργασίες που επικοινωνούν με ΤCP streams πρέπει να συμφωνήσουν για το περιεχόμενο

των μηνυμάτων που ανταλλάσουν;

Άσκηση αυτοαξιολόγησης 4.10

Περιγράψτε πως η χρήση νημάτων (threads) μπορεί να αυξήσει την ταχύτητα απόκρισης ενός server.

Δραστηριότητα 4.6

Περιγράψτε την τριμερή χειραψία (3-way handshake) που απαιτείται για την αποκατάσταση σύνδεσης

στην TCP stream επικοινωνία. Δώστε με ένα διάγραμμα τα μηνύματα που ανταλλάσσονται.

Μοντέλο αστοχιών

Για τη διασφάλιση της ακεραιότητας η TCP stream επικοινωνία βασίζεται σε checksums για ανίχνευση

και απόρριψη αλλοιωμένων πακέτων και σε sequence numbers για ανίχνευση και απόρριψη διπλών

πακέτων. Για τη διασφάλιση της εγκυρότητας βασίζεται σε timeouts και επαναμεταδόσεις των χαμένων

πακέτων.

Άσκηση αυτοαξιολόγησης 4.11

Μπορεί η TCP stream επικοινωνία να χαρακτηριστεί ως αξιόπιστη επικοινωνία; Εξηγείστε γιατί;

Άσκηση αυτοαξιολόγησης 4.12

Όταν μια TCP σύνδεση διακοπεί τότε η διεργασία που τη χρησιμοποιεί θα ενημερωθεί για αυτή την

εξέλιξη. Ποιες είναι οι επιπτώσεις που μπορεί να προκύψουν από αυτή την κατάσταση;

Page 79: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

79

Java API για TCP streams

To Java API για TCP stream επικοινωνία παρέχεται από δύο βασικές κλάσεις: ServerSocket και Socket. Η

κλάση ServerSocket παρέχει μια υλοποίηση σύνδεσης TCP socket, από την πλευρά του εξυπηρετητή. Το

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

συστήματος, για να μπορεί αυτός στην συνέχεια να «ακούει» για την σύνδεση νέων πελατών.

Δημιουργεί όπως λέγεται ένα listening socket. Στον κατασκευαστή του αντικειμένου προσδιορίζεται ο

αριθμός θύρας και σε περίπτωση που δε χρησιμοποιείται ήδη από άλλη υπηρεσία, δημιουργείται το

αντικείμενο. Αν όμως η θύρα είναι κατειλημμένη, τότε εγείρεται IOException εξαίρεση. Η κλάση Socket

δημιουργεί ένα ΤCP άκρο επικοινωνίας που μπορεί να χρησιμοποιηθεί και στο πρόγραμμα του πελάτη

και στο πρόγραμμα του εξυπηρετητή.

Ενδεικτικοί κατασκευαστές της κλάσης ServerSocket είναι:

ServerSocket(int port)

Δημιουργεί ένα server socket στη θύρα της οποίας ο αριθμός καθορίζεται απ’ την παράμετρο. Αν ο

αριθμός είναι το 0, τότε αφήνεται στο σύστημα η επιλογή μιας ελεύθερης (μη χρησιμοποιούμενης)

θύρας.

ServerSocket(int port, int backlog)

Δημιουργεί ένα server socket στην θύρα της οποίας ο αριθμός καθορίζεται απ’ την πρώτη παράμετρο,

ενώ επιτρέπει τόσες συνδέσεις να περιμένουν στην ουρά, μέχρι να γίνουν αποδεκτές, όσες η δεύτερη

παράμετρος.

Βασικές μέθοδοι της κλάσης ServerSocket είναι:

Socket accept()

Ακούει για πιθανή αίτηση σύνδεσης ενός πελάτη με τον server και την αποδέχεται. Ένα νέο socket

αντικείμενο δημιουργείται και χρησιμοποιείται για την ανταλλαγή μηνυμάτων με τον πελάτη.

void close()

Κλείνει αυτό το server socket.

InetAddress getInetAddress()

Επιστρέφει την τοπική διεύθυνση αυτού του server socket.

int getLocalPort()

Επιστρέφει τον αριθμό της θύρας που αυτό το server socket «ακούει».

Ενδεικτικοί κατασκευαστές της κλάσης Socket είναι:

Socket(InetAddress address, int port)

Page 80: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

80

Δημιουργεί ένα TCP stream socket και το συνδέει στο port και την ΙΡ διεύθυνση που καθορίζονται

ως παράμετροι.

Socket(String host, int port)

Δημιουργεί ένα TCP stream socket και το συνδέει στο port του host, του οποίου το όνομα καθορίζεται

στις παραμέτρους.

Βασικές μέθοδοι της κλάσης Socket είναι:

InputStream getInputStream()

Επιστρέφει ένα stream εισόδου για αυτό το socket.

OutputStream getOutputStream()

Επιστρέφει ένα stream εξόδου αυτού του socket

InetAddress getLocalAddress()

Επιστρέφει την τοπική διεύθυνση με την οποία το socket αρχικοποιήθηκε.

int getLocalPort()

Επιστρέφει τον τοπικό αριθμό θύρας με τον οποίο το socket αρχικοποιήθηκε.

InetAddress getInetAddress()

Επιστρέφει την διεύθυνση του απομακρυσμένου Η/Υ στην οποία το τοπικό socket είναι

συνδεδεμένο.

int getPort()

Επιστρέφει τον αριθμό θύρας της απομακρυσμένης διεργασίας στο socket της οποίας το τοπικό

socket έχει συνδεθεί.

void close()

Κλείνει αυτό το socket (απελευθερώνει το socket description).

Μια τυπική αλληλουχία βημάτων που συνήθως ακολουθούνται από το πρόγραμμα του πελάτη δίνεται

στον παρακάτω πίνακα.

Λειτουργικό βήμα Περιγραφή

Socket() Αρχικοποίηση του socket αντικειμένου και σύνδεση στον server

getInputStream() και

getOutputStream()

Σύνδεση του socket με τον στάνταρ μηχανισμό εισόδου/εξόδου στη

Java, δηλαδή τα streams

Page 81: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

81

read() και write()

readUTF() και writeUTF()

Ανάγνωση και εγγραφή στο συνδεδεμένο με το socket stream

close() Κλείνει το socket και απελευθερώνεται ο αντίστοιχος πόρος του

συστήματος

Μια τυπική αλληλουχία βημάτων που συνήθως ακολουθούνται από το πρόγραμμα του εξυπηρετητή

δίνεται στον παρακάτω πίνακα.

Λειτουργικό βήμα Περιγραφή

ServerSocket() Αρχικοποίηση του listening socket αντικειμένου

accept() Αναμονή και αποδοχή σύνδεσης νέου πελάτη

new Thread Δημιουργία καινούργιου thread για την εξυπηρέτηση ενός πελάτη

getInputStream() και

getOutputStream()

Το καινούργιο socket που επιστρέφεται από την accept συνδέεται

με τον στανταρ μηχανισμό εισόδου/εξόδου στη Java, δηλαδή τα

streams

read() και write()

readUTF() και writeUTF()

Ανάγνωση και εγγραφή στο συνδεδεμένο με το socket stream

close() Κλείνει το socket και απελευθερώνεται ο αντίστοιχος πόρος του

συστήματος

Για την αποτελεσματικότερη διαχείριση των λαθών, οι εντολές που σχετίζονται με αρχικοποίηση του

socket και των streams αυτού, θα πρέπει να περιέχονται στο σώμα try εντολής κι αυτό γιατί υπάρχει

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

τέτοια περίπτωση, δε θα πρέπει να πραγματοποιήσουμε λειτουργίες Ι/Ο σε μη συνδεδεμένο socket.

Επίσης, η μέθοδος close() είναι θεμιτό να καλείται σε κάθε περίπτωση, γι’ αυτό και την καλούμε μέσα

από την εντολή finally. Δείτε για παράδειγμα το σκελετό κώδικα παρακάτω.

public class someClient

{

public static void main(String[] args)

{

Socket s = null;

try {

// Create the socket to communicate with a server

s = new Socket(hostname, portNumber);

// Create streams for reading and writing to this socket

DataInputStream sin = new

Page 82: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

82

DataInputStream(s.getInputStream());

DataOutputStream sout = new

DataOutputStream(s.getOutputStream());

// application logic goes here

} catch(IOException e) {

System.out.println(e);

}

// Close the socket

finally {

try {

if (s != null)

s.close();

} catch(IOException e) {

System.out.println(e);

}

}

} // end of main()

} // end of class

Δραστηριότητα 4.7

Καταγράψτε τις βασικότερες διαφορές μεταξύ UDP και ΤCP sockets. Σε ποιες περιπτώσεις ενδείκνυται η

χρήση του UDP και σε ποιες περιπτώσεις η χρήση του TCP;

Δραστηριότητα 4.8

Κατεβάστε τα προγράμματα των Εικόνων 4.5 και 4.6 του βιβλίου από τον διαδικτυακό τόπο των

συγγραφέων (www.cdk5.net/ipc). Τροποποιείστε τον κώδικα έτσι ώστε ο πελάτης επαναληπτικά να

διαβάζει μια γραμμή ως είσοδο από τον χρήστη και να την στέλνει στο TCP stream, ενώ ο εξυπηρετητής

να διαβάζει επαναληπτικά από το TCP stream και να τυπώνει τα δεδομένα κάθε ανάγνωσης.

Χρησιμοποιήστε τα τροποποιημένα προγράμματα ώστε να δοκιμάσετε την επίδραση στον πελάτη της

κατάρρευσης του εξυπηρετητή και το αντίστροφο.

Δραστηριότητα 4.9

Να υλοποιηθεί σε Java μια κατανεμημένη εφαρμογή τύπου client-server που χρησιμοποιεί το TCP

πρωτόκολλο για την επικοινωνία. Η υλοποίηση θα περιλαμβάνει δύο προγράμματα, το πρόγραμμα του

client (StrClient) και το πρόγραμμα του server (Str2LCServer). Ένας client όταν εκτελείται στέλνει ένα

μήνυμα κειμένου στον server και ο server θα πρέπει να μετατρέψει τα κεφαλαία γράμματα σε μικρά. Ο

server παρέχει αυτήν την υπηρεσία στην θύρα 16300 και όταν έρθει ένα αίτημα από κάποιον πελάτη,

διαβάζει τη συμβολοσειρά και την επιστρέφει αφού μετατρέψει όλα τα κεφαλαία γράμματα σε μικρά.

Οι ειδικοί χαρακτήρες (π.χ., &, %, !, *, …) δεν αλλάζουν. Ο client τυπώνει στην οθόνη την απάντηση που

έλαβε και τερματίζει. Εφόσον δεν έχετε δίκτυο υπολογιστών ώστε να τρέξετε τις διεργασίες client και

server σε διαφορετικούς κόμβους μπορείτε να χρησιμοποιήσετε την διεύθυνση localhost (IP address

127.0.0.1) η οποία δίνει την ψευδαίσθηση ενός δικτύου με έναν κόμβο. Ανοίξτε διαφορετικά

παράθυρα για τον client και τον server.

Page 83: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

83

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

και σύνθετες δομές δεδομένων (πίνακες, λίστες, δέντρα) με εσωτερικές αναπαραστάσεις που μπορεί

να διαφέρουν από μηχανή σε μηχανή (π.χ. η σειρά αποθήκευσης των bytes ενός ακεραίου κατά big-

endian και little-endian). Η πληροφορία αυτή θα πρέπει να μετατραπεί όμως σε μια ακολουθία από

bytes για την μετάδοσή της σε ένα μήνυμα. Με διαφορετικά σχήματα κωδικοποίησης, διάταξη

αποθήκευσης στη μνήμη, μεγέθη λέξεων και αριθμητικές αναπαραστάσεις, η προσπάθεια μετάδοσης

της πληροφορίας μεταξύ ετερογενών συστημάτων θα πρέπει να βασίζεται σε κατάλληλες ενδιάμεσες

αναπαραστάσεις για τα μεταφερόμενα δεδομένα και σε μηχανισμούς μετάφρασης της εσωτερικής

αναπαράστασης των δεδομένων στην ενδιάμεση μορφή και το αντίστροφο. Ένα τέτοιο σχήμα θα

πρέπει να κατανοεί τις εσωτερικές αναπαραστάσεις και στα δύο άκρα της επικοινωνίας. Η ενδιάμεση

αναπαράσταση ονομάζεται εξωτερική αναπαράσταση δεδομένων (external data representation) και το

σύνολο των κανόνων για να επιτευχθεί το σχήμα αυτό εκφράζεται με μια Γλώσσα Ορισμού Διεπαφών

(Interface Definition Language).

Μορφοποίηση αποστολής (marshalling) είναι η διαδικασία της συναρμολόγησης μιας συλλογής

δεδομένων σε μορφή κατάλληλη για μεταφορά μέσω μηνύματος. Με άλλα λόγια είναι η μετάφραση

των δεδομένων σε μια εξωτερική αναπαράσταση δεδομένων ακολουθώντας της προδιαγραφές

κάποιας γλώσσας ορισμού διεπαφών. Μορφοποίηση παραλαβής (unmarshalling) είναι η διαδικασία

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

unmarshalling γίνεται στον προορισμό, ενώ η διαδικασία marshalling στην πηγή του μηνύματος.

Τρεις εναλλακτικές προσεγγίσεις για την εξωτερική αναπαράσταση δεδομένων είναι:

• Η κοινή αναπαράσταση δεδομένων (common data representation) της CORBA. Μπορεί να

χρησιμοποιηθεί από πολλές γλώσσες προγραμματισμού και αφορά την εξωτερική αναπαράσταση

σύνθετων και βασικών δομών δεδομένων.

• Ο μηχανισμός σειριοποίησης αντικειμένου (object serialization) της Java για Java μόνον εφαρμογές.

Αφορά την εξωτερική αναπαράσταση οποιουδήποτε απλού αντικειμένου ή δέντρου από

αντικείμενα που χρειάζεται να μεταφερθούν μέσω μηνύματος.

• XML (Εxtensible Markup Language). Ορίζει μια μορφή βασισμένη σε κείμενο για αναπαράσταση

δομημένων δεδομένων. Χρησιμοποιείται σε συνδυασμό με τις υπηρεσίες παγκόσμιου ιστού (Web

Services).

Άσκηση αυτοαξιολόγησης 4.13

Πως διαφοροποιείται για τις τρεις εναλλακτικές προσεγγίσεις εξωτερικής αναπαράστασης δεδομένων

η αποστολή του τύπου των δεδομένων;

3.1. CORBA’s Common Data Representation (CDR) H CORBA CDR ορίζει την αναπαράσταση για όλους τους τύπους δεδομένων που μπορούν να

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

αντικειμένων. Η CORBA CDR υποστηρίζει 15 βασικούς τύπους και 6 σύνθετους τύπους. Οι τιμές

αποστέλλονται με βάση την σειρά (big-endian ή little-endian) που ακολουθεί το σύστημα του

Page 84: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

84

αποστολέα. Η σειρά αυτή αναφέρεται στο μήνυμα, έτσι ώστε ο παραλήπτης να μπορεί να αποφανθεί

αν χρειάζεται να μετατρέψει τα δεδομένα που έλαβε ή όχι. Οι τιμές των βασικών τύπων που ορίζουν

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

Άσκηση αυτοαξιολόγησης 4.14

Να σχεδιάσετε το CORBA CDR μήνυμα που αντιστοιχεί στην ακόλουθη δομή Book {1237, TRUE,

‘127-3459-2342-7’, ‘Distributed Systems Concepts and Design’,

[‘Coulouris’, ‘Dollimore’, ‘Kindberg’]} με τύπους πεδίων unsigned short,

boolean, string, string και array[3] of string. Τα πεδία αντίστοιχα είναι code,

availability, ISBN, title, authors.

Άσκηση αυτοαξιολόγησης 4.15

Γράψτε σε CORBA IDL την περιγραφή της δομής από την Άσκηση αυτοαξιολόγησης 4.14.

Δραστηριότητα 4.10

‘Ένα άλλο παράδειγμα εξωτερικής αναπαράστασης δεδομένων είναι το πρότυπο Sun XDR (RFC 1832)

που περιγράφεται επίσης στον διαδικτυακό τόπο των συγγραφέων του βιβλίου (www.cdk5.net/ipc).

Χρησιμοποιείται για την ανταλλαγή μηνυμάτων στο κατανεμημένο σύστημα αρχείων Sun NFS. Η

μορφοποίηση αποστολής στο Sun XDR γίνεται με την μετατροπή των προς αποστολή δεδομένων σε big-

endian μορφή πριν την μετάδοση του μηνύματος. Καταγράψτε τα πλεονεκτήματα και τα

μειονεκτήματα αυτής της προσέγγισης συγκρινόμενη με την αντίστοιχη προσέγγιση της CORBA CDR.

3.2. Java object serialization Η σειριοποίηση μεταφράζει ένα αντικείμενο σε μια ακολουθία από bytes. Η διαδικασία αυτή επιτρέπει

την αποθήκευση αντικειμένων σε αρχεία ή την μετάδοση αντικειμένων στο δίκτυο. Επειδή ένα

αντικείμενο μπορεί να περιέχει αναφορές σε άλλα αντικείμενα και κάθε αντικείμενο με την σειρά του

μπορεί να περιέχει αναφορές σε άλλα αντικείμενα, η σειριοποίηση προδιαγράφει την μεταφορά

πολύπλοκων δομών μέσω μηνυμάτων και μάλιστα με τρόπο που δεν επιβαρύνει τον προγραμματιστή

εφαρμογών, αφού το RMI middleware αναλαμβάνει το μεγαλύτερο μέρος της διαχείρισης. Απαιτείται

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

java.io.Serializable interface.

Άσκηση αυτοαξιολόγησης 4.16

Τι είναι η ανάκλαση (reflection) στη Java και πως αξιοποιείται για την μεταφορά αντικειμένων μέσω

δικτύου.

3.3. Εxtensible Markup Language (XML) Η XML είναι μια γλώσσα σήμανσης (markup) που περιγράφει τη δομή ενός εγγράφου με την χρήση

ετικετών (tags). Το έγγραφο αποτελείται από στοιχεία (elements), γνωρίσματα (attributes) και

δεδομένα (data). Η XML είναι επεκτάσιμη γλώσσα καθώς επιτρέπει σε αυτόν που την χρησιμοποιεί να

προσδιορίσει τη δική του συλλογή από ετικέτες. Τα έγγραφα της XML μπορούν να αυτό-

προσδιοριστούν. Ένα έγκυρο έγγραφο περιέχει τα δικά του σύνολα κανόνων στους οποίους τα

Page 85: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

85

έγγραφα πρέπει να υπακούσουν. Τα έγγραφα της XML μπορούν να ελεγχθούν για την εγκυρότητά τους

με τη χρήση ενός προγράμματος (XML validator) το οποίο ελέγχει εάν το έγγραφο είναι δομημένο

σύμφωνα με τους κανόνες που περιγράφονται σε ένα αρχείο DTD Document Type Definition ή ένα

αρχείο Σχήματος XML (XML Schema). Για παράδειγμα ένα XML Schema προσδιορίζει την ονοματολογία

των στοιχείων αλλά και των γνωρισμάτων και επίσης προσδιορίζει την σειρά με την οποία θα

εμφανίζονται τα στοιχεία και ποια γνωρίσματα έχει το κάθε στοιχείο. H XML χαρακτηρίζεται από

ανεξαρτησία από υποκείμενες πλατφόρμες, διότι όλη η πληροφορία αποθηκεύεται σε μορφή απλού

κειμένου.

Τα XML Namespaces είναι μία συλλογή ονομάτων, προσδιορισμένα από μία URI αναφορά, τα οποία

χρησιμοποιούνται στα XML έγγραφα ως τύποι στοιχείων και ονόματα γνωρισμάτων. Η λειτουργία τους

έγκειται στο διαχωρισμό των στοιχείων και των γνωρισμάτων που προέρχονται από διαφορετικά

λεξιλόγια και έχουν διαφορετική σημασιολογία όμως μοιράζονται το ίδιο όνομα. Ορίζοντας το

συγκεκριμένο λεξιλόγιο από το οποίο προέρχεται το συγκεκριμένο στοιχείο ή γνώρισμα είναι δυνατό

να συνδυαστούν πληροφορίες από διαφορετικές πηγές και διαφορετικά πρότυπα κωδικοποίησης

δεδομένων χωρίς να δημιουργείται ονομαστική και σημασιολογική σύγχυση.

Τα χαρακτηριστικά της XML της επιτρέπουν να μπορεί να χρησιμοποιηθεί για να υποστηρίξει την

επικοινωνία εφαρμογών που έχουν αναπτυχθεί με διαφορετικές τεχνολογίες. Τεχνολογίες όπως SOAP,

XML Web Services, JXTA, XML-RPC, και EJB χρησιμοποιούν ή βασίζονται στην XML.

3.4. Αναφορές απομακρυσμένων αντικειμένων Η Java και η CORBA υποστηρίζουν το μοντέλο των κατανεμημένων αντικειμένων. Όταν ένας πελάτης

καλεί μια μέθοδο σε ένα απομακρυσμένο αντικείμενο (remote object), τότε αποστέλλεται ένα μήνυμα

στον εξυπηρετητή που διαχειρίζεται αυτό αντικείμενο. Στο μήνυμα πρέπει να καθορίζεται το

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

(remote object reference) είναι η ταυτότητα του απομακρυσμένου αντικειμένου η οποία είναι μοναδική

σε ολόκληρο το κατανεμημένο σύστημα.

Άσκηση αυτοαξιολόγησης 4.17

Πως μπορούμε να εξασφαλίσουμε την μοναδικότητα της αναφοράς ενός απομακρυσμένου

αντικειμένου; Περιγράψτε ένα σχήμα που την εξασφαλίζει. Πως μπορούμε να υποστηρίξουμε την

μετακίνηση ενός αντικειμένου σε μια άλλη διεργασία σε έναν άλλο Η/Υ;

4. Πολυεκπομπική επικοινωνία Η πολυεκπομπή στέλνει το ίδιο μήνυμα σε όλες τις διεργασίες μέλη μιας ομάδας. Ο απλούστερος

τρόπος υλοποίησης της πολυεκπομπής δεν παρέχει εγγυήσεις παράδοσης και διάταξης των

μηνυμάτων. Η πολυεκπομπή είναι χρήσιμη για την ανάπτυξη κατανεμημένων συστημάτων με τα

ακόλουθα χαρακτηριστικά:

i) Ανοχή σε σφάλματα ως συνέπεια της επανάληψης υπηρεσιών.

Page 86: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

86

ii) Εύρεση των εξυπηρετητών αναζήτησης υπηρεσιών για την υλοποίηση αυθόρμητης

διαλειτουργικότητας σε δίκτυα κινητών συσκευών.

iii) Βελτιωμένη απόδοση ως συνέπεια της επανάληψης δεδομένων.

iv) Διάδοση συμβάντων ειδοποίησης.

Άσκηση αυτοαξιολόγησης 4.18

Για την υλοποίηση ενός συστήματος συζητήσεων (chat system) θα ήταν η χρήση της πολυεκπομπής

κατάλληλη επιλογή;

4.1. IP multicast – μια υλοποίηση ομαδικής επικοινωνίας To IP multicast πρωτόκολλο παρέχεται πάνω από το πρωτόκολλο Διαδικτύου IP και επιτρέπει την

μετάδοση ενός IP πακέτου σε μια ομάδα πολυεκπομπής (multicast group). Μια ομάδα πολυεκπομπής

προσδιορίζεται από μια class D IP διεύθυνση (τιμή 1110 στα πρώτα τέσσερα bits μιας IPv4 διεύθυνσης).

H συμμετοχή ενός Η/Υ σε μια ομάδα πολυεκπομπής είναι δυναμική. Ένας Η/Υ ανήκει σε μια ομάδα

πολυεκπομπής εφόσον μια ή περισσότερες διεργασίες που τρέχουν σε αυτόν έχουν sockets που

ανήκουν στην ομάδα πολυεκπομπής (τα sockets αυτά σχετίζονται με μια διεύθυνση πολυεκπομπής).

Άσκηση αυτοαξιολόγησης 4.19

Περιγράψτε δύο σχήματα για την κατανομή διευθύνσεων πολυεκπομπής.

Άσκηση αυτοαξιολόγησης 4.20

Γιατί να μην παρέχεται και TCP έκδοση για IP multicast;

Δραστηριότητα 4.11

Να σχεδιάσετε ένα πρωτόκολλο ομαδικής επικοινωνίας προσδιορίζοντας την σημασιολογία του ώστε

να βασίζεται σε μια ομαδική έκδοση του πρωτοκόλλου αίτησης-απόκρισης (request-reply protocol)

χρησιμοποιώντας το πρωτόκολλο IP multicast.

Java API για multicast datagrams

Το Java API για IP πολυεκπομπή με datagrams παρέχεται από την κλάση MulticastSocket, η οποία είναι

υποκλάση της κλάσης DatagramSocket με επιπλέον λειτουργίες για ένωση σε ομάδες πολυεκπομπής.

Ενδεικτικοί κατασκευαστές της κλάσης MulticastSocket είναι:

MulticastSocket()

Δημιουργεί ένα multicast socket και το συνδέει με οποιαδήποτε ελεύθερη θύρα.

MulticastSocket(int port)

Δημιουργεί ένα multicast socket και το συνδέει με συγκεκριμένη θύρα.

Βασικές μέθοδοι της κλάσης MulticastSocket είναι:

Page 87: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

87

void joinGroup(InetAddress mcastaddr)

Ένωση με μια ομάδα πολυεκπομπής.

void leaveGroup(InetAddress mcastaddr)

Αποχώρηση από μια ομάδα πολυεκπομπής.

void setTimeToLive(int ttl)

Θέτει μια τιμή στην ιδιότητα time-to-live (TTL) για τα πακέτα πολυεκπομπής που στέλνονται σε αυτό

το MulticastSocket ώστε να ελεγχθεί η εμβέλεια της πολυεκπομπής (ο αριθμός των multicast

routers). Για τιμή 1 η διάδοση γίνεται μόνον στο τοπικό δίκτυο.

4.2. Αξιοπιστία και διάταξη στην πολυεκπομπή Το IP multicast υποφέρει όπως και τα UDP datagrams από αστοχίες παράλειψης. Η διάταξη των

μηνυμάτων επίσης δεν είναι εγγυημένη. Οι αστοχίες του IP multicast προκαλούν παρενέργειες στη

λειτουργία των κατανεμημένων συστημάτων. Για παράδειγμα, η ανοχή σε σφάλματα ως συνέπεια της

επανάληψης υπηρεσιών, ενδεχομένως να απαιτεί μια ομάδα από πανομοιότυπους εξυπηρετητές που

λαμβάνουν ένα αίτημα μέσω πολυεκπομπής και εκτελούν τις ίδιες λειτουργίες με την ίδια διάταξη,

ώστε να υπάρχει συνέπεια μεταξύ τους. Ακόμη και εάν ένας εξυπηρετητής χάσει ένα αίτημα αυτός θα

είναι σε ασυνέπεια σχετικά με τους υπόλοιπους. Από το προηγούμενο παράδειγμα προκύπτει ότι

μερικές εφαρμογές χρειάζονται ένα πρωτόκολλο πολυεκπομπής που είναι πιο αξιόπιστο από το IP

multicast. Υπάρχει ανάγκη για αξιόπιστη πολυεκπομπή (reliable multicast) όπου οποιοδήποτε μήνυμα

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

εφαρμογές χρειάζονται πολυεκπομπή ολικής διάταξης (totally ordered multicast) όπου όλα τα

μηνύματα που μεταδίδονται σε μια ομάδα φθάνουν σε όλα τα μέλη της με την ίδια διάταξη.

Άσκηση αυτοαξιολόγησης 4.21

Τι εγγυήσεις μπορεί να παρέχει το IP multicast αναφορικά με την αξιοπιστία και την διάταξη

μηνυμάτων;

Δραστηριότητα 4.12

Περιγράψτε ένα σενάριο σύμφωνα με το οποίο γίνεται χρήση πολυεκπομπής από διαφορετικούς

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

Υποθέστε πως είναι δυνατή η επαναμετάδοση μηνυμάτων και ότι μηνύματα που δε χάνονται φθάνουν

σε διάταξη που είναι σύμφωνη με αυτή της αποστολής. Να προτείνετε πώς οι παραλήπτες των

μηνυμάτων θα μπορούσαν να αντιμετωπίσουν το παραπάνω πρόβλημα διάταξης.

5. Εικονικοποίηση Δικτύου: Υπερκείμενα δίκτυα Η εικονικοποίηση δικτύου (network virtualization) αναφέρεται στην κατασκευή πολλών διαφορετικών

εικονικών δικτύων (virtual networks) πάνω από ένα υπάρχον δίκτυο όπως το Διαδίκτυο. Κάθε εικονικό

δίκτυο μπορεί να σχεδιαστεί για να υποστηρίξει μια συγκεκριμένη κατηγορία κατανεμημένων

Page 88: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

88

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

και αλγορίθμους δρομολόγησης, που σχεδιάζονται με στόχο να ικανοποιήσουν τις ανάγκες των

εφαρμογών για τις οποίες σχεδιάστηκαν.

Άσκηση αυτοαξιολόγησης 4.22

Πως η εικονικοποίηση δικτύου απαντά στο από-άκρο-σε-άκρο δίλημμα των Saltzer et al.;

5.1. Υπερκείμενα δίκτυα Ένα υπερκείμενο δίκτυο (overlay network) είναι ένα εικονικό δίκτυο που αποτελείται από κόμβους και

εικονικές συνδέσεις, το οποίο κάθεται πάνω από ένα υποκείμενο δίκτυο (όπως ένα IP δίκτυο) και

προσφέρει νέες υπηρεσίες, όπως:

• μια υπηρεσία που προσαρμόζεται στις ανάγκες μιας κατηγορίας εφαρμογών ή μια συγκεκριμένη

υπηρεσία υψηλού επιπέδου (π.χ., διανομή περιεχομένου πολυμέσων)

• αποδοτικότερη λειτουργία σε ένα συγκεκριμένο δικτυακό περιβάλλον (π.χ., δρομολόγηση σε ένα

αδόμητο (ad hoc) δίκτυο)

• μια πρόσθετη ιδιότητα (π.χ., δυνατότητα πολυεκπομπής ή ασφαλής επικοινωνία)

Άσκηση αυτοαξιολόγησης 4.23

Ποια είναι τα πλεονεκτήματα και ποια τα μειονεκτήματα των υπερκείμενων δικτύων;

Άσκηση αυτοαξιολόγησης 4.24

Σε ποιο επίπεδο του ISO/OSI μοντέλου θα κατατάσσατε ένα υπερκείμενο δίκτυο; Εξηγήστε.

Άσκηση αυτοαξιολόγησης 4.25

Περιγράψτε 2 διαφορετικές εφαρμογές υπερκείμενων δικτύων για κάθε μια από τις 3 περιπτώσεις που

δίνουν κίνητρο για την ανάπτυξή τους.

5.2. Skype: Ένα παράδειγμα υπερκείμενου δικτύου Το Skype είναι μια εξαιρετικά δημοφιλής peer-to-peer (P2P) εφαρμογή που υλοποιεί το πρωτόκολλο

Voice Over IP (VoIP) και προσφέρει υπηρεσίες κλήσεων φωνής, διασύνδεση με υπηρεσίες σταθερής και

κινητής τηλεφωνίας, instant messaging, δυνατότητα αποστολής SMS, αποστολής αρχείων και

δυνατότητα συνδιάσκεψης. Το Skype υλοποιεί ένα εικονικό δίκτυο και δεν απαιτεί IP διεύθυνση και

θύρα για την πραγματοποίηση μιας κλήσης μεταξύ των χρηστών του.

Άσκηση αυτοαξιολόγησης 4.26

Εξηγήστε τον ρόλο των super nodes στην αρχιτεκτονική του Skype. Πώς επιλέγονται; Ποια η συμμετοχή

τους στην παροχή των υπηρεσιών του Skype;

Άσκηση αυτοαξιολόγησης 4.27

Page 89: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

89

Ποιο πρωτόκολλο μεταφοράς χρησιμοποιεί το Skype για την πραγματοποίηση των κλήσεων φωνής.

Εξηγήστε.

6. Μελέτη περίπτωσης: MPI Το MPI (Message Passing Interface) είναι μία βιβλιοθήκη συναρτήσεων (π.χ. σε C ή Fortran) για τη

συγγραφή κατανεμημένων/παράλληλων προγραμμάτων χρησιμοποιώντας το μοντέλο επικοινωνίας με

διαβίβαση μηνυμάτων. Ένα πρόγραμμα MPI αποτελείται από πολλές διεργασίες που εκτελούνται

παράλληλα σε πολλούς κόμβους. Το MPI περιλαμβάνει ένα μεγάλο αριθμό λειτουργιών (πάνω από

115) οι οποίες διαχειρίζονται την επικοινωνία μεταξύ των κόμβων. συναρτήσεων. Σε χαμηλό επίπεδο,

οι συναρτήσεις του MPI συνεργάζονται με τις υπηρεσίες επικοινωνίας του λειτουργικού συστήματος

(π.χ. sockets) για να γίνει η μετάδοση των μηνυμάτων.

H πιο απλή μορφή επικοινωνίας στο MPI είναι η επικοινωνία μεταξύ δύο διεργασιών. Ένα μήνυμα

αποστέλλεται από μια διεργασία (λειτουργία send) σε κάποια άλλη που το λαμβάνει (λειτουργία

receive) χωρίς οι υπόλοιπες διεργασίες να γνωρίζουν οτιδήποτε για την επικοινωνία αυτή. Σε αυτή την

διαδιεργασιακή επικοινωνία υπάρχουν τρεις τρόποι αποστολής μηνυμάτων :

• η ανασταλτική (blocking): η αποστέλλουσα διεργασία δεν επιτρέπεται να συνεχίσει την εκτέλεσή

της μέχρι να είναι ασφαλές, δηλαδή μέχρις ότου το μήνυμα έχει αντιγραφεί από την μνήμη της

εφαρμογής στη μνήμη του MPI συστήματος

• η μη-ανασταλτική (non-blocking): η αποστέλλουσα διεργασία μπορεί να συνεχίσει την εκτέλεσή της

αμέσως μετά την αποστολή του μηνύματος και να ελέγξει αργότερα εάν η αποστολή

ολοκληρώθηκε

• η σύγχρονη (synchronous): η αποστέλλουσα διεργασία δεν επιτρέπεται να συνεχίσει την εκτέλεσή

της παρά μόνον όταν το μήνυμα φθάσει στον παραλήπτη του

Δραστηριότητα 4.13

Το MPI προσφέρει διάφορες παραλλαγές της λειτουργίας send συμπεριλαμβανομένης της λειτουργίας

MPI_Rsend, η οποία υποθέτει ότι ο παραλήπτης είναι έτοιμος να λάβει το μήνυμα όταν ο ίδιος είναι

έτοιμος να το στείλει. Ποιες βελτιστοποιήσεις στην υλοποίηση της επικοινωνίας είναι δυνατές εάν αυτή

η υπόθεση είναι σωστή και ποιες επιπτώσεις μπορεί να έχουμε εάν η υπόθεση αποδειχθεί ψευδής;

7. Επανάληψη Στο κεφάλαιο αυτό εξετάστηκαν τα χαρακτηριστικά των πρωτοκόλλων που χρησιμοποιούνται για την

επικοινωνία μεταξύ διεργασιών σε ένα κατανεμημένο σύστημα. Αρχικά εξετάστηκαν τα πρωτόκολλα

μεταφοράς UDP και TCP και παρουσιάστηκε η διεπαφή προγραμματισμού εφαρμογών της γλώσσας

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

μεταφοράς. Παρουσιάστηκαν τρεις εναλλακτικές επιλογές για την αναπαράσταση συλλογών από

αντικείμενα δεδομένων εντός μηνυμάτων και συζητήθηκε η αναπαράσταση αναφορών σε

απομακρυσμένα αντικείμενα. Παρουσιάστηκαν τα υπερκείμενα δίκτυα (overlay networks) και

Page 90: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

90

περιγράφηκαν διάφορες εφαρμογές τους. Τέλος, παρουσιάστηκε ως μελέτη περίπτωσης, το MPI

(Message Passing Interface) μια πρότυπη βιβλιοθήκη για ανάπτυξη κατανεμημένων/παράλληλων

εφαρμογών υψηλών επιδόσεων.

Page 91: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

91

ΚΕΦΑΛΑΙΟ 5 : Απομακρυσμένη

Επίκληση

Σκοπός Ο σκοπός του κεφαλαίου είναι η μελέτη της επικοινωνίας μεταξύ διεργασιών (ή οντοτήτων σε

υψηλότερο επίπεδο αφαίρεσης, όπως αντικείμενα ή υπηρεσίες) σε ένα κατανεμημένο σύστημα υπό το

παράδειγμα της απομακρυσμένης επίκλησης. Η απομακρυσμένη επίκληση εξετάζεται με τη μελέτη των

πρωτοκόλλων επικοινωνίας αίτησης-απόκρισης, τη μελέτη του μοντέλου της κλήσης απομακρυσμένων

μεθόδων και τη μελέτη του μοντέλου της κλήσης απομακρυσμένων διαδικασιών.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Περιγράψετε πρωτόκολλα αίτησης-απόκρισης και τα χαρακτηριστικά τους για την υλοποίηση

επικοινωνίας τύπου client-server

• Περιγράψετε τρία πρωτόκολλα αίτησης-απόκρισης για την υλοποίηση απομακρυσμένων

κλήσεων διαδικασίας

• Περιγράψετε το HTTP πρωτόκολλο ως ένα παράδειγμα πρωτοκόλλου αιτήσεων-αποκρίσεων

• Περιγράψετε τα βασικά συστατικά του μοντέλου κλήσης απομακρυσμένης διαδικασίας

• Κατανοήσετε τα σχεδιαστικά ζητήματα που αφορούν το μοντέλο RPC

• Κατανοήσετε τον ρόλο μιας Γλώσσας Ορισμού Διεπαφών για τον ορισμό διεπαφών

• Περιγράψετε τα βασικά συστατικά του μοντέλου κλήσης απομακρυσμένης μεθόδου (RMI)

• Κατανοήσετε τα σχεδιαστικά ζητήματα που αφορούν το μοντέλο RMI

• Περιγράψετε τις προδιαγραφές της κατανεμημένης αποκομιδής απορριμμάτων

• Περιγράψετε τρεις διαφορετικές σημασιολογίες απομακρυσμένων κλήσεων (είτε RPC, είτε

RMI)

• Περιγράψετε τα βασικά συστατικά του συστήματος Java RMI

• Κατανοήσετε τον ρόλο του μεταγλωττιστή rmic

• Κατανοήσετε τον ρόλο του μητρώου του συστήματος Java RMI

• Χρησιμοποιήσετε το σύστημα Java RMI για την ανάπτυξη κατανεμημένων εφαρμογών

ακολουθώντας μια σειρά προκαθορισμένων βημάτων

Page 92: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

92

Έννοιες κλειδιά Απομακρυσμένα Αντικείμενα (Remote Objects), Απομακρυσμένη Διεπαφή (Remote Interface),

Απομακρυσμένη Επίκληση (Remote Invocation), Γλώσσα Ορισμού Διεπαφών (Interface Definition

Language), Δεσμευτής (Binder), Κλήση Απομακρυσμένης Διαδικασίας (Remote Procedure Call), Κλήση

Απομακρυσμένης Μεθόδου (Remote Method Invocation), Μητρώο του συστήματος Java RMI

(RMIregistry), Πληρεξούσιος (Proxy), Πρωτόκολλα Αιτήσεων-Αποκρίσεων (Request-Reply Protocols),

Σκελετός (Skeleton).

1. Εισαγωγικές παρατηρήσεις Στο κεφάλαιο αυτό εξετάζονται οι δύο πιο σημαντικές τεχνικές απομακρυσμένης επίκλησης για την

επικοινωνία διεργασιών σε κατανεμημένα συστήματα που συνιστούν ταυτόχρονα και δύο βασικά

μοντέλα προγραμματισμού κατανεμημένων εφαρμογών: το μοντέλο κλήσης απομακρυσμένης

διαδικασίας (remote procedure call ή RPC) και το μοντέλο κλήσης απομακρυσμένης μεθόδου (remote

method invocation ή RMI).

Το περιεχόμενο του κεφαλαίου αναφέρεται ουσιαστικά στο στρώμα ενδιάμεσου λογισμικού

(middleware) το οποίο χρησιμοποιεί πρωτόκολλα βασισμένα σε μηνύματα για διαδιεργασιακή

επικοινωνία (π.χ. το request-reply πρωτόκολλο που θα συζητηθεί σε αυτό το κεφάλαιο) για να παρέχει

υψηλότερου επιπέδου προγραμματιστικές αφαιρέσεις όπως για παράδειγμα RMI και RPC.

Στη συνέχεια του κεφαλαίου, η Ενότητα 2 εξετάζει την επικοινωνία μεταξύ διεργασιών με πρωτόκολλα

αιτήσεων-αποκρίσεων (request-reply protocols) που υποστηρίζουν την αμφίδρομη ανταλλαγή

μηνυμάτων που συναντάμε, για παράδειγμα, στην επικοινωνία τύπου client-server. Στην Ενότητα 3

παρουσιάζεται το μοντέλο RPC και η μελέτη περίπτωσης Sun RPC. Στην Ενότητα 4 παρουσιάζεται το

μοντέλο RMI. Τέλος, η Ενότητα 5 εξετάζει ως μελέτη περίπτωσης το Java RMI.

Άσκηση αυτοαξιολόγησης 5.1

Να αναφέρετε και εξηγήσετε τα επίπεδα διαφάνειας που υποστηρίζει το στρώμα του ενδιάμεσου

λογισμικού.

2. Πρωτόκολλα αίτησης-απόκρισης Τα πρωτόκολλα αίτησης-απόκρισης (request-reply protocols) σχεδιάζονται για να υποστηρίξουν την

επικοινωνία τύπου client-server κατά την οποία o ρόλος του client είναι να ζητά από τον server την

εκτέλεση μιας λειτουργίας και την επιστροφή του αποτελέσματος. Αυτή η σχέση μεταξύ των δύο

διεργασιών προσδιορίζει το πρωτόκολλο ως εξής:

• Ο client υποστηρίζει μια λειτουργία (doOperation) και ο server υποστηρίζει δύο λειτουργίες

(getRequest και sendReply).

Page 93: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

93

• Αφού συνήθως οι πελάτες περιμένουν για την απόκριση του server η λειτουργία doOperation είναι

σύγχρονη.

• Ο server θα πρέπει να είναι σε θέση να λάβει getRequest μηνύματα ενώ εκτελεί λειτουργίες.

Το παραπάνω σχήμα αποτελεί την βάση για την υλοποίηση, είτε RMI, είτε RPC ενδιάμεσου λογισμικού.

Για να αντιμετωπιστούν αστοχίες, τα μηνύματα των αιτήσεων επαναμεταδίδονται. Για να υπάρχει

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

και οι αποκρίσεις αποθηκεύονται για πιθανή επαναμετάδοση σε μια δομή που ονομάζεται history.

Η δομή ενός μηνύματος σε ένα πρωτόκολλο αίτησης-απόκρισης περιλαμβάνει: το είδος του μηνύματος

(request ή reply), την ταυτότητα του μηνύματος (message identifier), μια αναφορά απομακρυσμένου

αντικειμένου, την ταυτότητα της μεθόδου που θα κληθεί και τις παραμέτρους της κλήσης.

Δραστηριότητα 5.1

Να ορίσετε μια κλάση της οποίας τα στιγμιότυπα αναπαριστούν αναφορές απομακρυσμένων

αντικειμένων. Η κλάση, με όνομα έστω RemoteObjectRef, θα περιέχει πληροφορία παρόμοια με αυτή

της Εικόνας 4.13 του βιβλίου και θα περιέχει επίσης μεθόδους προσπέλασης των ιδιοτήτων της,

απαραίτητες για το πρωτόκολλο αίτησης-απόκρισης. Να εξηγήσετε πως κάθε μια από τις μεθόδους

προσπέλασης θα χρησιμοποιηθεί από αυτό το πρωτόκολλο. Αιτιολογήστε την επιλογή του τύπου της

ιδιότητας που περιέχει την πληροφορία για το interface του απομακρυσμένου αντικειμένου.

Δραστηριότητα 5.2

Να ορίσετε μια κλάση της οποίας τα στιγμιότυπα αναπαριστούν μηνύματα αιτήσεων και αποκρίσεων.

Η κλάση, με όνομα έστω RPMessage, θα περιέχει πληροφορία παρόμοια με αυτή της Εικόνας 5.4 του

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

μηνύματα αποκρίσεων. Ο ορισμός των δύο κατασκευαστών να περιλαμβάνει την διαχείριση της

ταυτότητας του μηνύματος. Η κλάση θα περιλαμβάνει μια μέθοδο (χωρίς να ορίζεται) για την

μορφοποίηση αποστολής του μηνύματος σε μορφή ακολουθίας από bytes (marshalling) και μια μέθοδο

(χωρίς να ορίζεται) για την μορφοποίηση παραλαβής του μηνύματος από μορφή ακολουθίας από bytes

σε στιγμιότυπο της κλάσης.

Δραστηριότητα 5.3

Να υλοποιήσετε σε Java τις τρεις λειτουργίες του πρωτοκόλλου αίτησης-απόκρισης όπως

προδιαγράφονται στην Εικόνα 5.3 του βιβλίου. Για την επικοινωνία θεωρήστε UDP datagrams χωρίς την

υλοποίηση μέτρων για την αντιμετώπιση αστοχιών. Να κάνετε χρήση των κλάσεων RemoteObjectRef

και RPMessage που ορίσατε στην Δραστηριότητα 5.1 και Δραστηριότητα 5.2 αντίστοιχα. Στη συνέχεια

να ορίσετε μια νέα έκδοση της μεθόδου doOperation η οποία περιμένει απάντηση αφού έχει ορισθεί

ένα timeout στο αντικείμενο του datagram socket (δείτε την μέθοδο setSoTimeout). Αν ο χρόνος του

timeout εκπνεύσει ο πελάτης ξαναστέλνει το αίτημα 3 φορές. Εάν δεν υπάρξει απάντηση,

ενημερώνεται κατάλληλα η εφαρμογή.

Page 94: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

94

Τρία πρωτόκολλα εφαρμόζονται για την υλοποίηση διαφόρων ειδών RPC.

• To request (R) πρωτόκολλο, όπου ένα μοναδικό μήνυμα αίτησης αποστέλλεται από τον client στον

server. To πρωτόκολλο αυτό εφαρμόζεται όταν η απομακρυσμένη μέθοδος δεν έχει να επιστρέψει

κάποια τιμή.

• Το request-reply (RR) πρωτόκολλο, το οποίο υποστηρίζει τις περισσότερες ανταλλαγές μηνυμάτων

μεταξύ client και server.

• Το request-reply-acknowledge (RRA) πρωτόκολλο, το οποίο επιτρέπει σε έναν server να αδειάσει

στοιχεία από το history.

Δραστηριότητα 5.4

Κατά ποιον τρόπο ένα RR πρωτόκολλο αποκρύπτει την ετερογένεια του κατανεμημένου συστήματος

στο επίπεδο των λειτουργικών συστημάτων και των δικτύων υπολογιστών;

Δραστηριότητα 5.5

Υποθέστε τη χρήση ενός RRA πρωτοκόλλου. Για πόσο διάστημα θα πρέπει οι εξυπηρετητές να

διατηρούν δεδομένα αποκρίσεων για τις οποίες δεν έχουν λάβει acknowledgement; Είναι καλή τακτική

οι εξυπηρετητές να στέλνουν επαναληπτικά την ίδια απόκριση με στόχο να λάβουν acknowledgement;

HTPP: ένα παράδειγμα request-reply πρωτοκόλλου

To HTTP είναι ένα request-reply πρωτόκολλο, βασισμένο στο πρωτόκολλο μεταφοράς TCP, για την

ανταλλαγή πόρων μεταξύ πελατών και εξυπηρετητών του παγκόσμιου ιστού. H αρχική έκδοση

υποστήριζε την εγκαθίδρυση σύνδεσης και τον τερματισμό της για κάθε ζευγάρι request-reply

μηνυμάτων. H έκδοση 1.1 υποστηρίζει επίμονες συνδέσεις (persistent connections) οι οποίες

παραμένουν ενεργές για μια ακολουθία request-reply μηνυμάτων μεταξύ πελάτη και εξυπηρετητή. Τα

δεδομένα που ανταλλάσσονται χρησιμοποιούν την πρότυπη μορφοποίηση MIME (Multipurpose

Internet Mail Extensions) που υποστηρίζει σύνθετα μηνύματα που περιλαμβάνουν δεδομένα διάφορων

ειδών, όπως κείμενο, εικόνες, ήχο. Κάθε είδος δεδομένων προσδιορίζεται από ένα Mime type που

λαμβάνει και ο παραλήπτης του μηνύματος ώστε να μπορεί να τα χειριστεί με την κατάλληλη

εφαρμογή.

Κάθε αίτηση του πελάτη προσδιορίζει το όνομα μιας μεθόδου που θα εφαρμοστεί στον πόρο του

εξυπηρετητή και το URL αυτού του πόρου. Η απόκριση αναφέρει την κατάσταση εκτέλεσης του

αιτήματος. Τα μηνύματα αιτήσεων και αποκρίσεων μπορεί να περιέχουν στο σώμα τους δεδομένα των

πόρων, όπως τα περιεχόμενα μιας φόρμας ή τα αποτελέσματα της εκτέλεσης ενός προγράμματος στον

εξυπηρετητή (π.χ. μιας μηχανής αναζήτησης).

Άσκηση αυτοαξιολόγησης 5.2

Για την υλοποίηση της επικοινωνίας τύπου client-server συχνά χρησιμοποιούνται UDP datagrams. Ποια

είναι τα πλεονεκτήματα αυτής της επιλογής; Πότε ενδείκνυται να χρησιμοποιηθούν TCP streams;

Page 95: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

95

Άσκηση αυτοαξιολόγησης 5.3

Από ποια τμήματα αποτελείται η ταυτότητα ενός μηνύματος σε ένα πρωτόκολλο αίτησης-απόκρισης;

Άσκηση αυτοαξιολόγησης 5.4

Ποιες λειτουργίες ονομάζονται ταυτοδύναμες (idempotent);

Άσκηση αυτοαξιολόγησης 5.5

Ποιες είναι οι βασικές μέθοδοι του HTTP πρωτοκόλλου και ποια η σημασιολογία τους;

3. Κλήση απομακρυσμένης διαδικασίας Το μοντέλο κλήσης απομακρυσμένων διαδικασιών επιτρέπει στα προγράμματα να καλούν διαδικασίες

που βρίσκονται σε άλλους Η/Υ. Η βασική ιδέα είναι πως όταν μια διαδικασία στη μηχανή Α καλεί μια

διαδικασία στη μηχανή Β, η εκτέλεση της καλούσας διαδικασίας στη μηχανή Α αναστέλλεται και

εκτελείται η καλούμενη διαδικασία στη μηχανή Β. Δεδομένα μπορούν να μεταφερθούν από την

καλούσα διαδικασία στην καλούμενη μέσω των παραμέτρων και να επιστραφούν μέσω του

αποτελέσματος της απομακρυσμένης διαδικασίας. Η μεταβίβαση μηνυμάτων δεν είναι ορατή στον

προγραμματιστή.

3.1. Σχεδιαστικά ζητήματα στο RPC

Προγραμματισμός με διεπαφές (Programming with interfaces)

Οι σύγχρονες γλώσσες προγραμματισμού επιτρέπουν την ανάπτυξη προγραμμάτων ως ένα σύνολο

τμημάτων λογισμικού που επικοινωνούν το ένα με το άλλο. Με την αντικειμενοστρεφή προσέγγιση ένα

τμήμα μπορεί να είναι μια ή περισσότερες κλάσεις, ενώ με την δομημένη προσέγγιση ένα τμήμα

μπορεί να είναι μια ή περισσότερες συναρτήσεις/διαδικασίες. Οι επιτρεπόμενες αλληλεπιδράσεις

μεταξύ των τμημάτων καθορίζονται από τις διεπαφές (interfaces) τους. Μια προσδιορισμένη διεπαφή,

για παράδειγμα, μπορεί να υλοποιηθεί από διαφορετικά τμήματα χωρίς την ανάγκη να τροποποιηθούν

άλλα τμήματα που χρησιμοποιούν αυτή την διεπαφή.

Όταν όμως τα τμήματα λογισμικού βρίσκονται σε διαφορετικές διεργασίες ή σε διαφορετικούς Η/Υ

υπάρχουν περιορισμοί στις αλληλεπιδράσεις που μπορούν να εμφανιστούν. Για παράδειγμα, οι

μηχανισμοί διαβίβασης παραμέτρων (π.χ. κλήση με τιμή και κλήση με αναφορά) δεν μπορούν να

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

χρησιμοποιηθούν ως ορίσματα ή επιστρεφόμενες τιμές κλήσεων απομακρυσμένων τμημάτων. Οι

παράμετροι μιας διαδικασίας ή μιας μεθόδου που περιλαμβάνεται στην διεπαφή ενός τμήματος σε μια

κατανεμημένη εφαρμογή ορίζονται ως είσοδος (input), ή έξοδος (output) ή μερικές φορές και τα δύο.

Απαιτείται η χρήση μηχανισμών διαβίβασης μηνυμάτων για την μετάδοση των τιμών των ορισμάτων με

μηνύματα αιτήσεων ή αποκρίσεων ή και τα δύο.

Page 96: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

96

Στο μοντέλο RPC μια διεπαφή υπηρεσιών (service interface) καθορίζει τις διαδικασίες που είναι

διαθέσιμες στους πελάτες από έναν εξυπηρετητή. Μια τέτοια διεπαφή επιτρέπει στη συνέχεια σε έναν

πελάτη να ζητήσει την κλήση συγκεκριμένων διαδικασιών στον εξυπηρετητή.

Μια Γλώσσα Ορισμού Διεπαφών (Interface Definition Language, ή IDL) σχεδιάζεται ώστε να επιτρέπει

σε διαδικασίες που αναπτύσσονται σε διαφορετικά περιβάλλοντα να μπορούν να αλληλεπιδρούν

μεταξύ τους. Μια IDL παρέχει έναν τυπικό συμβολισμό για τον ορισμό διεπαφών όπου κάθε ένα από τα

ορίσματα μιας διαδικασίας μπορεί να προσδιοριστεί ως είσοδος ή/και έξοδος μαζί με τον τύπο

δεδομένων του. Μια IDL παρέχει έναν κοινό, μη-διφορούμενο, ορισμό των διαδικασιών και μπορεί να

χρησιμοποιηθεί με οποιαδήποτε γλώσσα προγραμματισμού. Οι διεπαφές πρέπει να συμφωνούν με μια

κοινή IDL προκειμένου να μπορεί να εγκαθιδρυθεί αυτόματα ένας μηχανισμός αιτήσεων-αποκρίσεων.

Η ιδέα της IDL αρχικά εφαρμόστηκε σε RPC συστήματα, αλλά μπορεί να εφαρμοστεί εξίσου σε RMI και

υπηρεσίες Παγκόσμιου Ιστού. Παραδείγματα IDL είναι: Sun XDR (μοντέλο RPC), CORBA IDL (μοντέλο

RMI), WSDL (RPC σε internet-κλίμακα), OSF’S DCE IDL (μοντέλο RPC) και Microsoft DCOM IDL.

Σημασιολογία κλήσεων RPC (RPC call semantics)

Το μοντέλο κλήσης απομακρυσμένης διαδικασίας χρειάζεται έναν τρόπο για να ανιχνεύει και να

χειρίζεται αστοχίες. Αστοχίες μπορούν να συμβούν στην καλούσα διαδικασία (πελάτης), στην

καλούμενη διαδικασία (εξυπηρετητής) ή στο δίκτυο, και έτσι η διαχείρισή τους είναι πιο πολύπλοκη

από την αντίστοιχη του μοντέλου με τοπικές κλήσεις διαδικασιών. Διαφορετικά μέτρα προστασίας

μπορούν να εφαρμοστούν για την παροχή αξιοπιστίας πάνω από τα πρωτόκολλα αιτήσεων-

αποκρίσεων, με κυριότερες επιλογές τις παρακάτω:

Επανάληψη Μηνύματος Αίτησης (Retry Request Message): προσδιορίζει εάν ο πελάτης θα πρέπει να

επαναμεταδίδει την αίτηση μέχρι, είτε να ληφθεί μια απόκριση, είτε να θεωρηθεί ότι ο εξυπηρετητής

έχει αποτύχει.

Φιλτράρισμα Διπλότυπων (Duplicate Filtering): προσδιορίζει εάν η λήψη του ίδιου αιτήματος πολλές

φορές από τον εξυπηρετητή, θα πρέπει να φιλτραριστεί σε μια μόνο αίτηση, ή εάν όλες οι αιτήσεις θα

πρέπει να εκτελούνται ανεξάρτητα κάθε φορά.

Επαναμετάδοση Αποτελεσμάτων (Retransmission of Results): προσδιορίζει εάν τα αποτελέσματα από

την εκτέλεση των αιτημάτων θα πρέπει να αποθηκεύονται σε μια δομή history και να

επαναμεταδίδονται, σε περίπτωση απώλειας, αντί να εκτελείται εκ νέου στον εξυπηρετητή η

λειτουργία του αιτήματος.

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

απομακρυσμένων κλήσεων, όπως τις αντιλαμβάνεται ο πελάτης:

Maybe invocation semantics: Το αίτημα για κλήση απομακρυσμένης διαδικασίας, είτε θα

διεκπεραιωθεί μια φορά, είτε καθόλου. Εφαρμόζεται όταν δε γίνεται επαναμετάδοση των αιτήσεων

μετά από κάποια αστοχία. Ο πελάτης δεν μπορεί να διακρίνει εάν ο εξυπηρετητής διεκπεραίωσε το

αίτημα ή όχι, πριν την εμφάνιση της αστοχίας.

Page 97: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

97

At-Least-Once Invocation Semantics: Ο πελάτης λαμβάνει, είτε ένα αποτέλεσμα, είτε μια εξαίρεση. Ο

εξυπηρετητής θα εκτελέσει την λειτουργία του αιτήματος πολλές φορές, μια για κάθε επανάληψη του

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

πολλές φορές αλλάζει το επιθυμητό αποτέλεσμα (π.χ. για μη ταυτοδύναμες λειτουργίες).

At-Most-Once Invocation Semantics: Ο πελάτης λαμβάνει, είτε ένα αποτέλεσμα, είτε μια εξαίρεση. Εάν

ο πελάτης λάβει το αποτέλεσμα, σημαίνει ότι ο εξυπηρετητής διεκπεραίωσε την λειτουργία του

αιτήματος ακριβώς μια φορά. Αυτή η πολιτική απαιτεί την εφαρμογή όλων των μέτρων προστασίας

που προαναφέρθηκαν.

Δραστηριότητα 5.6

Ποια σημασιολογία κλήσης εφαρμόζεται σε CORBA, Java και Sun RPC;

Διαφάνεια (Transparency)

Αποκρύπτονται οι λειτουργίες μορφοποίησης αποστολής/παραλαβής (marshalling/unmarshalling) και η

μετάδοση του μηνύματος, ενώ σε μερικές περιπτώσεις μπορεί να χρησιμοποιείται η ίδια ακριβώς

σύνταξη κλήσης (π.χ. αρχικές προδιαγραφές RPC των Birrell και Nelson), ενώ σε άλλες να

διαφοροποιείται (π.χ. Argus).

Η τρέχουσα τάση είναι η κλήση μιας απομακρυσμένης διαδικασίας να είναι ίδια συντακτικά με μια

τοπική κλήση, αλλά με διαφοροποίηση του τοπικού/απομακρυσμένου χαρακτήρα μέσω της διεπαφής

τους.

Άσκηση αυτοαξιολόγησης 5.6

Να αναφέρετε και εξηγήσετε τα επίπεδα διαφάνειας που συνήθως προσφέρουν οι υλοποιήσεις του

RPC.

Άσκηση αυτοαξιολόγησης 5.7

Πως θα πρέπει να αντιμετωπιστεί το γεγονός ότι οι κλήσεις απομακρυσμένων διαδικασιών είναι τάξεις

μεγέθους πιο αργές από τις τοπικές κλήσεις κατά τον σχεδιασμό κατανεμημένων εφαρμογών που

χρησιμοποιούν RPC;

3.2. Υλοποίηση του RPC Μια κλήση απομακρυσμένης διαδικασίας πραγματοποιείται με τα ακόλουθα βήματα:

• Η διαδικασία πελάτη καλεί το στέλεχος πελάτη (client stub).

• Το στέλεχος πελάτη κατασκευάζει ένα μήνυμα και καλεί το τοπικό λειτουργικό σύστημα.

• Το λειτουργικό σύστημα του πελάτη στέλνει το μήνυμα στο απομακρυσμένο λειτουργικό σύστημα.

• Το απομακρυσμένο λειτουργικό σύστημα παραδίδει το μήνυμα στο στέλεχος εξυπηρετητή (server

stub).

• Το στέλεχος εξυπηρετητή διαβάζει από το μήνυμα τις παραμέτρους και καλεί τον εξυπηρετητή.

• Ο εξυπηρετητής εκτελεί την υπηρεσία που ζητήθηκε και επιστρέφει το αποτέλεσμα στο στέλεχος.

Page 98: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

98

• Το στέλεχος εξυπηρετητή πακετάρει το αποτέλεσμα σε ένα μήνυμα και καλεί το τοπικό λειτουργικό

σύστημα.

• Το λειτουργικό σύστημα του εξυπηρετητή στέλνει το μήνυμα στο λειτουργικό σύστημα του πελάτη.

• Το λειτουργικό σύστημα του πελάτη παραδίδει το μήνυμα στο στέλεχος πελάτη.

• Το στέλεχος πελάτη διαβάζει από το μήνυμα το αποτέλεσμα και το επιστρέφει στη διαδικασία

πελάτη.

Το RPC υλοποιείται γενικά πάνω από ένα πρωτόκολλο αίτησης-απόκρισης όπως αυτά που συζητήθηκαν

στην Ενότητα 2 του κεφαλαίου. Η υλοποίηση του RPC μπορεί να εφαρμόσει μια από τις επιλογές για

την σημασιολογία επίκλησης που συζητήθηκαν στην Ενότητα 1 του κεφαλαίου (οι βασικές επιλογές

είναι at-least-once ή at-most-once). Για να επιτευχθεί η σημασιολογία επίκλησης, η μονάδα

επικοινωνίας θα υλοποιήσει την επιλογή από την άποψη του πως χειρίζεται την επαναμετάδοση των

αιτημάτων, καθώς και πως χειρίζεται τα διπλότυπα και την επαναμετάδοση των αποτελεσμάτων.

Δραστηριότητα 5.7

Η Java και άλλες γλώσσες υποστηρίζουν τις εξαιρέσεις, οι οποίες προκαλούνται όταν συμβαίνει κάποιο

σφάλμα. Πώς θα υλοποιούσατε εξαιρέσεις σε κλήσεις RPC;

3.3 Μελέτη περίπτωσης: Sun RPC Πρόκειται για ένα από τα πιο διαδεδομένα συστήματα RPC (RFC 1831) που αναπτύχθηκε από την Sun

Microsystems για χρήση με το σύστημα αρχείων δικτύου NFS (Network File System). Μπορεί να

υλοποιηθεί τόσο με το πρωτόκολλο UDP, όσο και με το TCP. Για την αντιμετώπιση αστοχιών

χρησιμοποιείται το σχήμα at-least-once, αν έχουμε TCP υλοποίηση και μια απάντηση έχει παραληφθεί,

ενώ για UDP υλοποίηση χρησιμοποιείται το σχήμα at-most-once. Για γλώσσα ορισμού διεπαφών

χρησιμοποιεί το πρότυπο eXternal Data Representation (XDR) που επιτρέπει τον χειρισμό αυθαίρετα

μεγάλων δομών δεδομένων και τον μεταγλωττιστή διεπαφών rpcgen.

Άσκηση αυτοαξιολόγησης 5. 8

Να περιγράψετε την διαδικασία σύνδεσης (binding) στο Sun RPC.

Άσκηση αυτοαξιολόγησης 5. 9

Ποιες δυνατότητες αυθεντικοποίησης προσφέρει το SUN RPC;

4. Κλήση απομακρυσμένης μεθόδου Η ενότητα αυτή παρουσιάζει την επικοινωνία μεταξύ κατανεμημένων αντικειμένων δια του Remote

Method Invocation (RMI) μηχανισμού. Αντικείμενα τα οποία μπορούν να δεχθούν απομακρυσμένες

κλήσεις των μεθόδων τους ονομάζονται απομακρυσμένα αντικείμενα (remote objects). Τα

απομακρυσμένα αντικείμενα υλοποιούν μια απομακρυσμένη διεπαφή (remote interface). Στο μοντέλο

RMI μια απομακρυσμένη διεπαφή (remote interface) καθορίζει τα απομακρυσμένα αντικείμενα σε έναν

εξυπηρετητή και τις μεθόδους του κάθε αντικειμένου που είναι διαθέσιμα στους πελάτες, ενώ

καθορίζει και τους τύπους των παραμέτρων εισόδου και εξόδου των μεθόδων. Οι μέθοδοι των

Page 99: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

99

απομακρυσμένων αντικειμένων μπορούν να επιστρέφουν αντικείμενα, αλλά και αναφορές

απομακρυσμένων αντικειμένων πίσω στους πελάτες.

Το μοντέλο RMI, όπως και το μοντέλο RPC χρειάζεται έναν τρόπο για να ανιχνεύει και να χειρίζεται

αστοχίες. Αστοχίες μπορούν να συμβούν στο καλών αντικείμενο (πελάτης), στο καλούμενο αντικείμενο

(εξυπηρετητής) ή στο δίκτυο, και έτσι η διαχείρισή τους είναι πιο πολύπλοκη από την αντίστοιχη του

μοντέλου αντικειμένου με τοπικές επικλήσεις μεθόδων. Στο RMI εφαρμόζονται παρόμοια μέτρα

προστασίας για την παροχή αξιοπιστίας πάνω από τα πρωτόκολλα αιτήσεων-αποκρίσεων, όπως αυτά

που αναφέρθηκαν και στην περίπτωση RPC.

Σε ότι αφορά την διαφάνεια (transparency) αποκρύπτονται οι λειτουργίες μορφοποίησης

αποστολής/παραλαβής (marshalling/unmarshalling), η μετάδοση του μηνύματος και ο εντοπισμός των

απομακρυσμένων αντικειμένων, ενώ σε μερικές περιπτώσεις μπορεί να χρησιμοποιείται η ίδια

ακριβώς σύνταξη κλήσης (π.χ. Java RMI). Η τρέχουσα τάση είναι η κλήση μιας απομακρυσμένης

μεθόδου να είναι ίδια με μια τοπική κλήση, με διαφοροποίηση των αντίστοιχων αντικειμένων μέσω της

διεπαφής τους. Στην περίπτωση του Java RMI, τα απομακρυσμένα αντικείμενα μπορούν να

διαχωριστούν από το ότι επεκτείνουν την Remote διεπαφή, και εγείρουν RemoteExceptions εξαιρέσεις.

Άσκηση αυτοαξιολόγησης 5. 10

Ποιες είναι οι ομοιότητες και ποιες οι διαφορές μεταξύ RMI και RPC σε σχέση με τα σχεδιαστικά

ζητήματα του προγραμματισμού μέσω διεπαφών, της σημασιολογίας κλήσης και της διαφάνειας.

4.1 Σχεδιαστικά ζητήματα στο RMI H σχεδίαση του RMI υποστηρίζει την μετάβαση από το μοντέλο του αντικειμένου στο μοντέλο του

κατανεμημένου αντικειμένου.

Μοντέλο αντικειμένου

Ένα αντικειμενοστρεφές πρόγραμμα περιλαμβάνει ένα σύνολο από αντικείμενα που αλληλεπιδρούν

μεταξύ τους. Ένα αντικείμενο χαρακτηρίζεται από την κατάστασή του που ορίζεται από ένα σύνολο

δεδομένων, και την συμπεριφορά του που ορίζεται από ένα σύνολο μεθόδων. Τα αντικείμενα συχνά

αναπαριστούν μια έννοια του φυσικού κόσμου, όπως ένα αυτοκίνητο ή ένα πρόσωπο, αλλά και πιο

αφηρημένες έννοιες όπως μια χημική διαδικασία.

Ένα αντικείμενο μπορεί να προσπελαστεί μέσω της αναφοράς του (object reference). Οι αναφορές

αντικειμένων μπορούν: να καταχωρηθούν σε μεταβλητές, διαβιβαστούν ως ορίσματα, να επιστραφούν

ως το αποτέλεσμα της κλήσης μιας μεθόδου και να χρησιμοποιηθούν για την κλήση μιας μεθόδου σε

αυτό το αντικείμενο. Οι μέθοδοι φυσιολογικά καλούνται σε συνδυασμό με το αντικείμενο με το οποίο

συσχετίζονται.

Μια διεπαφή (interface) ορίζει τις υπογραφές ενός συνόλου μεθόδων, δηλαδή τον τύπο δεδομένων

των ορισμάτων, την επιστρεφόμενη τιμή της μεθόδου, και την έγερση εξαιρέσεων, χωρίς να

προσδιορίζει την υλοποίησή τους. Μια κλάση μπορεί να υλοποιήσει μια διεπαφή ορίζοντας την

συμπεριφορά για κάθε μέθοδο της διεπαφής. Οι διεπαφές δεν περιέχουν κατασκευαστές.

Page 100: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

100

Οι δράσεις (actions) επιτυγχάνονται στον αντικειμενοστρεφή προγραμματισμό από αντικείμενα που

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

πληροφορία ως ορίσματα με στόχο να υλοποιηθεί η συμπεριφορά που προσδιορίζεται από την

μέθοδο. Η κλήση μιας μεθόδου μπορεί να έχεις τις ακόλουθες συνέπειες:

• Η κατάσταση του παραλήπτη αντικειμένου μπορεί να αλλάξει.

• Ένα νέο αντικείμενο μπορεί να παραχθεί.

• Επιπρόσθετες κλήσεις σε μεθόδους άλλων αντικειμένων μπορούν να συμβούν

• Την παραγωγή εξαιρέσεων (exceptions) όταν υπάρχει κάποιο πρόβλημα

Για την απλοποίηση του κώδικα και την αποφυγή της ανάγκης για ελέγχους όλων των δυνατών

προβλημάτων, η διαχείριση λαθών μπορεί να επιτευχθεί με την έγερση εξαιρέσεων (exceptions). Ένα

τμήμα του κώδικα μπορεί να οριστεί να εγείρει μια εξαίρεση όταν λάθη ή μη-προσδιορισμένες

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

Στο πλαίσιο του αντικειμενοστρεφούς μοντέλου απαιτείται ένας μηχανισμός για την απελευθέρωση

της μνήμης που χρησιμοποιείται από τα αντικείμενα που δε χρειάζονται άλλο σε μια εφαρμογή. Ο

μηχανισμός αυτός ονομάζεται αποκομιδή απορριμμάτων (garbage collection).

Δραστηριότητα 5.8

Ποιες είναι οι βασικές έννοιες που διέπουν τα αντικειμενοστρεφή μοντέλα προγραμματισμού; Να

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

Άσκηση αυτοαξιολόγησης 5.11

Πως υλοποιείται η αποκομιδή απορριμμάτων στη Java και πως στη C++;

Κατανεμημένα αντικείμενα

Καθώς το μέγεθος και η πολυπλοκότητα των εφαρμογών αυξάνεται και η εγκατάστασή τους

επεκτείνεται πέρα από τα όρια ενός Η/Υ σε κατανεμημένα συστήματα, το αντικειμενοστρεφές μοντέλο

που θεωρεί τις εφαρμογές ως ανεξάρτητα τμήματα που περικλείουν λειτουργικότητα και σχετιζόμενα

δεδομένα εξελίχθηκε ως το πιο πρακτικό μοντέλο ανάπτυξης εφαρμογών.

Τα συστήματα κατανεμημένων αντικειμένων μπορεί να ακολουθούν την αρχιτεκτονική client-server,

καθώς και άλλα σχήματα, όπως επανάληψη και μετανάστευση των αντικειμένων.

Άσκηση αυτοαξιολόγησης 5.12

Ποια είναι τα πλεονεκτήματα της μοντελοποίησης μιας κατανεμημένης εφαρμογής ως συλλογής

αντικειμένων;

Μοντέλο κατανεμημένου αντικειμένου

Page 101: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

101

Το μοντέλο κατανεμημένου αντικειμένου είναι μια επέκταση του μοντέλου αντικειμένου. Δύο βασικές

έννοιες του μοντέλου αυτού είναι: η αναφορά απομακρυσμένου αντικειμένου (remote object

reference) και η απομακρυσμένη διεπαφή (remote interface).

Αντικείμενα που μπορούν να δεχθούν απομακρυσμένες αιτήσεις για την παροχή υπηρεσιών,

ονομάζονται απομακρυσμένα αντικείμενα. Τα απομακρυσμένα αντικείμενα θα πρέπει να διαθέτουν

έναν τρόπο προσπέλασής τους δια μέσου μιας αναφοράς, που ονομάζεται αναφορά απομακρυσμένου

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

να έχουν οριστεί σε μια απομακρυσμένη διεπαφή. Όλες μαζί οι προηγούμενες έννοιες συνθέτουν το

μοντέλο της κλήσης απομακρυσμένης μεθόδου (remote method invocation ή RMI).

Τα αντικείμενα είναι στιγμιότυπα κλάσεων. Εφόσον ένα απομακρυσμένο αντικείμενο μπορεί να

βρίσκεται σε μια διαφορετική διεργασία από το καλών αντικείμενο, ένα απομακρυσμένο αντικείμενο

μπορεί να χρειαστεί να δημιουργηθεί στο απομακρυσμένο περιβάλλον. Ένα απομακρυσμένο

αντικείμενο χρειάζεται συνεπώς έναν μηχανισμό για να δημιουργεί στιγμιότυπα απομακρυσμένων

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

Απαιτείται επέκταση των μηχανισμών συλλογής απορριμμάτων και έγερσης εξαιρέσεων του μοντέλου

αντικειμένου για το μοντέλο κατανεμημένου αντικειμένου. Για την αποκομιδή απορριμμάτων, για

παράδειγμα, απαιτείται κάποιος κατανεμημένος αλγόριθμος που συνήθως βασίζεται σε καταμέτρηση

αναφορών.

Άσκηση αυτοαξιολόγησης 5.13

Ποια είναι η αναλογία μεταξύ αναφοράς απομακρυσμένου αντικειμένου και αναφοράς τοπικού

αντικειμένου;

Άσκηση αυτοαξιολόγησης 5.14

Με ποιον μηχανισμό υποστηρίζει η CORBA τον ορισμό απομακρυσμένων διεπαφών και με ποιον η

Java;

4.2 Υλοποίηση του RMI Η υλοποίηση του RMI πραγματοποιείται μέσα από ένα σύνολο αντικειμένων και τμημάτων λογισμικού

τα οποία παρουσιάζονται συνοπτικά παρακάτω.

Communication Module

Η Μονάδα Επικοινωνίας (Communication Module) είναι υπεύθυνη για την μετάδοση των μηνυμάτων

αίτησης και απόκρισης. Χρησιμοποιεί τα πεδία MessageType, requestId, και objectReference (την

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

λειτουργία της προσδιορίζει την σημασιολογία κλήσης (π.χ. At-Most-Once). Επιλέγει τον dispatcher για

την κλάση του αντικειμένου που περιέχει την μέθοδο που θα κληθεί.

Remote Reference Module

Page 102: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

102

Η Μονάδα Απομακρυσμένων Αναφορών (Remote Reference Module) είναι υπεύθυνη για την

μετάφραση μιας αναφοράς απομακρυσμένου αντικειμένου σε ένα μήνυμα στο τοπικό αντικείμενο και

το αντίστροφο. Η μετάφραση υποστηρίζεται από τον πίνακα απομακρυσμένου αντικειμένου (remote

object table). Δημιουργεί επίσης νέες αναφορές απομακρυσμένων αντικειμένων.

Άσκηση αυτοαξιολόγησης 5.15

Ποιες ενέργειες επιτελεί η Μονάδα Απομακρυσμένων Αναφορών κατά την μορφοποίηση

αποστολής/παραλαβής μηνυμάτων στο RMI;

Servants

Το αντικείμενο εξυπηρέτησης (servant) είναι το απομακρυσμένο αντικείμενο που αναλαμβάνει να

διεκπεραιώσει ένα αίτημα που λαμβάνεται από το τμήμα του RMI λογισμικού που ονομάζεται Σκελετός

(Skeleton).

Το RMI λογισμικό

Όταν ένας πελάτης θέλει να χρησιμοποιήσει τις μεθόδους ενός απομακρυσμένου αντικειμένου

συνδέεται με έναν τοπικό Πληρεξούσιο (Proxy) ο οποίος παρέχει την διεπαφή του απομακρυσμένου

αντικειμένου και αναλαμβάνει την μορφοποίηση αποστολής των παραμέτρων κατά τις κλήσεις των

μεθόδων και την αποστολή τους μέσω μηνυμάτων στον εξυπηρετητή. Επίσης, διαχειρίζεται την

παραλαβή των αποτελεσμάτων και την διάθεσή τους στον πελάτη. Για κάθε απομακρυσμένο

αντικείμενο ορίζεται ένας πληρεξούσιος.

Στην πλευρά του εξυπηρετητή ορίζονται για κάθε κλάση απομακρυσμένου αντικειμένου δύο ειδικά

αντικείμενα που ονομάζονται Dispatcher και Skeleton. O Dispatcher λαμβάνει ένα μήνυμα αίτησης από

το Communication Module και χρησιμοποιεί το πεδίο methodID για να επιλέξει την κατάλληλη μέθοδο

του Skeleton. Το Skeleton παίζει τον αντίστοιχο ρόλο με τον Proxy στην πλευρά του εξυπηρετητή. To

Skeleton υλοποιεί «εικονικά» τις μεθόδους της απομακρυσμένης διεπαφής και ουσιαστικά

συμπεριφέρεται ως μία εικόνα του πελάτη στην πλευρά του εξυπηρετητή. Το Skeleton διαχειρίζεται την

μορφοποίηση των μηνυμάτων, ενώ τελικά καλεί τις μεθόδους του αντικειμένου εξυπηρέτησης

(servant).

Τόσο η κλάση Proxy, από την πλευρά του πελάτη, όσο και οι κλάσεις Dispatcher και Skeleton, από την

πλευρά του εξυπηρετητή, δημιουργούνται μέσω της κλήσης κατάλληλου μεταφραστή επί μίας

διεπαφής που έχει γραφτεί με την χρήση μιας γλώσσας ορισμού διεπαφών (IDL), προκειμένου να

προσδιοριστούν οι μέθοδοι που είναι διαθέσιμες καθώς και ο τρόπος που θα πρέπει να ζητηθούν.

Άσκηση αυτοαξιολόγησης 5.16

Όταν δεν μπορούμε να προβλέψουμε όλες τις διεπαφές των απομακρυσμένων αντικειμένων κατά το

σχεδιασμό τους, τότε η στατική παραγωγή των Proxies και Skeletons δεν αρκεί. Πως μπορεί να

αντιμετωπιστεί το πρόβλημα αυτό;

Άσκηση αυτοαξιολόγησης 5.17

Page 103: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

103

Ποια τμήματα λογισμικού πρέπει να περιέχει ένας εξυπηρετητής και ποια ένας πελάτης σε ένα RMI

περιβάλλον και ποιος ο ρόλος του κάθε τμήματος;

Άσκηση αυτοαξιολόγησης 5.18

Τι ορίζεται ως μέθοδος εργοστάσιο (factory method) και τι ως αντικείμενο εργοστάσιο (factory object);

Δεσμευτής (Binder)

Για να λάβει χώρα η διασύνδεση ενός πελάτη με ένα απομακρυσμένο αντικείμενο απαιτείται ένας

τρόπος εντοπισμού του εξυπηρετητή όπου εκτελείται το αντικείμενο και μια αναφορά σε αυτό. Ο

Δεσμευτής (Binder) σε ένα κατανεμημένο σύστημα είναι μια υπηρεσία καταλόγου, ανεξάρτητη από την

εφαρμογή του πελάτη και εξυπηρετητή, που διατηρεί έναν πίνακα που περιέχει απεικονίσεις

συμβολικών ονομάτων προς αναφορές απομακρυσμένων αντικειμένων. Ο Δεσμευτής χρησιμοποιείται

από τους εξυπηρετητές για να καταγράφουν τα απομακρυσμένα αντικείμενα τους με χρήση του

ονόματος των τελευταίων και από τους πελάτες για να αναζητούν τα αντικείμενα αυτά. Η υπηρεσία

αυτή στην περίπτωση του Java RMI ονομάζεται RMIregistry.

Ενεργοποίηση απομακρυσμένων αντικειμένων

Για λόγους καλύτερης αξιοποίησης των πόρων ενός συστήματος τα απομακρυσμένα αντικείμενα

μπορεί να διατηρούνται σε μια παθητική κατάσταση (passive) όταν δε χρειάζονται με αποθήκευση της

κατάστασής τους στο δίσκο και να μεταπηδούν σε ενεργή (active) όταν χρειάζονται. Η διαδικασία

ενεργοποίησης πραγματοποιείται από μια υπηρεσία που μοιάζει με την Inetd σε Unix, που

χρησιμοποιείται για την εκκίνηση TCP υπηρεσιών (π.χ. ftp, telnet).

Επίμονα αντικείμενα

Τα απομακρυσμένα αντικείμενα μπορεί να είναι είτε παροδικά (transient), είτε επίμονα (persistent). Τα

παροδικά υπάρχουν μόνο για όσο τα χρειάζεται ο εξυπηρετητής που τα υποστηρίζει, συνήθως όσο

υπάρχουν αναφορές σε αυτά από τους πελάτες. Τα επίμονα διατηρούν την κατάσταση τους ανάμεσα

στις κλήσεις ακόμη κι αν ο εξυπηρετητής τα απενεργοποιήσει, δηλαδή τα αφαιρέσει από την μνήμη.

Θέση αντικειμένου

Μια αναφορά απομακρυσμένου αντικειμένου που εμπεριέχει την διεύθυνση της διεργασίας που

δημιούργησε το αντικείμενο (IP address, port number) είναι έγκυρη όσο το αντικείμενο δε μετακινείται

και παραμένει στην ίδια διεργασία και στον ίδιο Η/Υ. Η αναφορά δεν μπορεί να χρησιμοποιηθεί ως

διεύθυνση εάν το αντικείμενο μετακινηθεί. Μια υπηρεσία θέσης (location service) βοηθά τους πελάτες

να εντοπίζουν απομακρυσμένα αντικείμενα από τις αντίστοιχες αναφορές.

Άσκηση αυτοαξιολόγησης 5.19

Περιγράψτε τρία σχήματα που μπορούν να χρησιμοποιηθούν για τον εντοπισμό θέσης ενός

απομακρυσμένου αντικειμένου.

Page 104: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

104

4.3 Κατανεμημένη αποκομιδή απορριμμάτων Η κατανεμημένη αποκομιδή αντικειμένων προς τα οποία δεν υπάρχουν αναφορές είναι μια γενίκευση

της αποκομιδής απορριμμάτων που συναντάμε στις γλώσσες προγραμματισμού. Κάθε εξυπηρετητής

που περιέχει απομακρυσμένα αντικείμενα διατηρεί αυτόματα έναν κατάλογο απομακρυσμένων

αναφορών στα αντικείμενα που εξυπηρετεί. Κάθε πελάτης που ζητά και λαμβάνει μια αναφορά σε ένα

απομακρυσμένο αντικείμενο, είτε ρητά μέσω της υπηρεσίας καταλόγου, είτε έμμεσα ως αποτέλεσμα

μιας κλήσης απομακρυσμένης μεθόδου, παίρνει αυτήν την απομακρυσμένη αναφορά αντικειμένου

μέσω της αντίστοιχης μονάδας απομακρυσμένων αναφορών (Remote Reference Module). Η μονάδα

αναφορών διατηρεί αυτόματα έναν κατάλογο αυτών των αναφορών, κρατώντας ταυτόχρονα

πληροφορίες για το πότε χρησιμοποιήθηκε τελευταία φορά. Όταν ο πελάτης ολοκληρώσει την εργασία

του με την αναφορά, ή όταν περάσει ένα χρονικό διάστημα, η μονάδα αναφορών διαγράφει την

απομακρυσμένη αναφορά και δηλώνει στη μονάδα αναφορών του πελάτη ότι αυτή η απομακρυσμένη

αναφορά έχει λήξει.

Όταν ένα αντικείμενο δεν έχει άλλες απομακρυσμένες αναφορές στη μονάδα απομακρυσμένων

αναφορών, γίνεται υποψήφιο για την αποκομιδή απορριμμάτων. Εάν δεν υπάρχει επίσης καμία

περαιτέρω τοπική αναφορά στο αντικείμενο (αυτός ο κατάλογος αναφοράς κρατιέται από την Java ως

τμήμα του αλγορίθμου αποκομιδής απορριμμάτων της γλώσσας), το αντικείμενο χαρακτηρίζεται ως

απόρριμμα και συλλέγεται στην επόμενη εκτέλεση του συλλέκτη απορριμμάτων του συστήματος.

Άσκηση αυτοαξιολόγησης 5.20

Πως αντιμετωπίζει ο κατανεμημένος αλγόριθμος αποκομιδής απορριμμάτων της Java το ενδεχόμενο

αστοχιών είτε στην επικοινωνία, είτε στους πελάτες;

5. Μελέτη περίπτωσης: Java RMI Τα απομακρυσμένα αντικείμενα και οι κλήσεις απομακρυσμένων μεθόδων προς τα αντικείμενα αυτά

έχουν ενσωματωθεί στη γλώσσα προγραμματισμού Java. Ένα απομακρυσμένο αντικείμενο υλοποιεί

μια απομακρυσμένη διεπαφή η οποία μπορεί να κληθεί από αντικείμενα που εκτελούνται σε

διαφορετικές εικονικές μηχανές Java (Java Virtual Machines). Για τον προγραμματιστή, η χρήση

απομακρυσμένων αντικειμένων και τοπικών αντικειμένων γίνεται με παρόμοιο τρόπο. Όμως ένα

απομακρυσμένο αντικείμενο θα πρέπει να επεκτείνει την διεπαφή Remote και να εγείρει εξαιρέσεις

τύπου RemoteExceptions. Διαφορές στη συμπεριφορά των τοπικών και απομακρυσμένων αντικειμένων

εμφανίζονται, για παράδειγμα, σε ότι αφορά την διαβίβαση παραμέτρων. To πακέτο java.rmi είναι

το πακέτο της Java που περιέχεις τις διεπαφές και τις κλάσεις που μας επιτρέπουν να υλοποιήσουμε τις

κλήσεις απομακρυσμένων μεθόδων.

Το σύστημα Java RMI λειτουργεί ως ενδιάμεσο λογισμικό που μπορεί να υποστηρίξει την ανάπτυξη

κατανεμημένων εφαρμογών. Οι κατανεμημένες εφαρμογές που βασίζονται στο σύστημα Java RMI

αποτελούνται από εξυπηρετητές αντικειμένων και τους πελάτες τους. Ο εξυπηρετητής δημιουργεί

ορισμένα απομακρυσμένα αντικείμενα, γνωστοποιεί τις αναφορές προς αυτά και στη συνέχεια

αναμένει κλήσεις απομακρυσμένων μεθόδων. Ο πελάτης αποκτά πρόσβαση σε μια απομακρυσμένη

Page 105: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

105

αναφορά και τη χρησιμοποιεί για να καλέσει τις μεθόδους του αντίστοιχου αντικειμένου. Το Java RMI

υποστηρίζει τη δημοσίευση και αναζήτηση αναφορών προς απομακρυσμένα αντικείμενα, τη διαφανή

επικοινωνία ανάμεσα στα διάφορα αντικείμενα και τη δυναμική φόρτωση των αντικειμένων που

μεταβιβάζονται ως παράμετροι. Η σημασιολογία κλήσεων που παρέχεται είναι at-most-once, δηλαδή

σε περίπτωση αποτυχίας η κλήση δεν επαναλαμβάνεται, αλλά στον πελάτη εγείρεται μια εξαίρεση

λόγω αποτυχίας.

Άσκηση αυτοαξιολόγησης 5.21

Η αποκλειστική χρήση της Java, για την κατασκευή μιας κατανεμημένης εφαρμογής με χρήση του

συστήματος Java RMI εμφανίζει πλεονεκτήματα, αλλά και περιορισμούς. Επιχειρηματολογήστε για τα

υπέρ και κατά της επιλογής του συστήματος Java RMI για την ανάπτυξη κατανεμημένων εφαρμογών.

Δραστηριότητα 5.9

Μια άλλη διαφορά μεταξύ τοπικών και απομακρυσμένων αντικειμένων εμφανίζεται στην συμπεριφορά

των synchronized μεθόδων. Περιγράψτε την χρήση του μηχανισμού synchronized της Java και εξηγήστε

πως διαφοροποιείται ο μηχανισμός αυτός σε κατανεμημένο περιβάλλον όπου μια εφαρμογή μπορεί να

περιλαμβάνει απομακρυσμένα αντικείμενα σε πολλές διαφορετικές JVMs.

Διαβίβαση παραμέτρων

Οι παράμετροι που μπορεί να διαβιβάζονται στις κλήσεις τοπικών και απομακρυσμένων μεθόδων

διακρίνονται σε τρεις κατηγορίες:

• τιμές πρωτογενών τύπων

• τοπικά αντικείμενα (δεν υλοποιούν το Remote interface)

• απομακρυσμένα αντικείμενα (υλοποιούν το Remote interface)

Μια τιμή ενός πρωτογενούς τύπου δεδομένων, για παράδειγμα ενός ακέραιου, διαβιβάζεται με τιμή

(by value) στην κλήση μιας απομακρυσμένης μεθόδου. Το σύστημα RMI κατασκευάζει ένα αντίγραφο

της τιμής και το στέλνει στην απομακρυσμένη μέθοδο.

Ένα τοπικό αντικείμενο διαβιβάζεται επίσης με τιμή στην κλήση μιας απομακρυσμένης μεθόδου, σε

αντίθεση με τις κλήσεις τοπικών μεθόδων όπου η διαβίβαση γίνεται με αναφορά προς το αντικείμενο.

Ομοίως, όταν μια απομακρυσμένη μέθοδος επιστρέφει ως αποτέλεσμα ένα τοπικό αντικείμενο, τότε

ένα αντίγραφο του αντικειμένου επιστρέφεται στην καλούσα μέθοδο. Για να είναι δυνατή η

μορφοποίηση αποστολής/παραλαβής (marshalling/unmarshalling) των τοπικών αντικειμένων στο

σύστημα Java RMI πρέπει οι κλάσεις των αντικειμένων αυτών να υλοποιούν την διεπαφή

java.io.Serializable (δείτε επίσης την ενότητα 3.2).

Η διαβίβαση ενός απομακρυσμένου αντικειμένου ως παραμέτρου στην κλήση μιας απομακρυσμένης

μεθόδου ή η επιστροφή του ως αποτέλεσμα γίνεται με αναφορά. Ο παραλήπτης θα λάβει μια αναφορά

προς το απομακρυσμένο αντικείμενο. Στην πράξη οι απομακρυσμένες αναφορές γίνονται μέσω

Page 106: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

106

τοπικών αναφορών σε πληρεξούσιους (Proxies) των απομακρυσμένων αντικειμένων. Αυτό σημαίνει ότι

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

RMIregistry

To μητρώο του συστήματος Java RMI (RMIregistry) λειτουργεί ως υπηρεσία ονομασίας (naming

service), είναι δηλαδή ο Δεσμευτής (Binder) του κατανεμημένου συστήματος που βασίζεται στο Java

RMI. To RMIregistry πρέπει να εκτελείται σε κάθε υπολογιστή στον οποίο διαμένουν εξυπηρετητές

απομακρυσμένων αντικειμένων. Για την εκκίνηση του μητρώου διατίθεται η εντολή rmiregistry η

οποία εξ ορισμού ακούει για συνδέσεις στην θύρα 1099. To RMIregistry διατηρεί έναν πίνακα που

απεικονίζει ονόματα σε μορφή URL σε αναφορές απομακρυσμένων αντικειμένων που φιλοξενούνται

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

java.rmi.Naming για να εντοπίσουν τα απομακρυσμένα αντικείμενα που φιλοξενεί. Αντίστοιχα,

είναι δυνατόν να εγγράψουμε στο μητρώο αντικείμενα με το όνομά τους προσδιορίζοντας ένα URL της

μορφής:

rmi://<όνοµα_υπολογιστή>:<θύρα>/<όνοµα_αντικειµένου>

όπου <όνοµα_υπολογιστή> και <θύρα> προσδιορίζουν την τοποθεσία του RMIRegistry και

<όνοµα_αντικειµένου> είναι το όνομα του αντικειμένου που θέλουμε να εγγράψουμε (δείτε τις

μεθόδους bind, rebind της διεπαφής java.rmi.Naming)

5.1 Υλοποίηση εφαρμογών με Java RMI Για να υλοποιήσουμε μια κατανεμημένη εφαρμογή στο σύστημα Java RMI πρέπει να ακολουθήσουμε

μια σειρά από προκαθορισμένα βήματα.

• Αρχικά πρέπει να γράψουμε την απομακρυσμένη διεπαφή και την υλοποίησή της, δηλαδή την

υλοποίηση του απομακρυσμένου αντικειμένου. Η απομακρυσμένη διεπαφή πρέπει να επεκτείνει

τη διεπαφή java.rmi.Remote και όλες οι μέθοδοί της να ρίχνουν την εξαίρεση

java.rmi.RemoteException. Η κλάση υλοποίησης του απομακρυσμένου αντικειμένου είναι

μια κλάση υπηρέτης (servant class) και υλοποιεί ένα αντικείμενο στα πλαίσια ενός εξυπηρετητή

αντικειμένων. Η κλάση υλοποίησης συνήθως επεκτείνει την κλάση

java.rmi.UnicastRemoteObject για ένα παροδικό αντικείμενο.

• Η απομακρυσμένη διεπαφή χρησιμοποιείται στην συνέχεια για την αυτοματοποιημένη παραγωγή

του σκελετού εξυπηρετητή (server skeleton) και του στελέχους (πληρεξούσιου) πελάτη (client stub).

Αρχικά πρέπει να μεταγλωττίσουμε την απομακρυσμένη διεπαφή και την κλάση υλοποίησής της με

χρήση του μεταγλωττιστή javac. Στην συνέχεια χρησιμοποιούμε τον μεταγλωττιστή RMI, ο οποίος

ονομάζεται rmic. Στην πράξη χρησιμοποιούμε την κλάση υλοποίησης και όχι την διεπαφή για την

παραγωγή των αρχείων του στελέχους πελάτη και του σκελετού εξυπηρετητή.

• Το τελευταίο βήμα είναι να γράψουμε το πρόγραμμα του εξυπηρετητή και το πρόγραμμα του

πελάτη. Το πρόγραμμα του εξυπηρετητή θα δημιουργεί τα απομακρυσμένα αντικείμενα, θα

εγγράφει τις αναφορές τους στο μητρώο του συστήματος εξυπηρετητή και θα περιμένει κλήσεις

μεθόδων των απομακρυσμένων αντικειμένων από πελάτες. Το πρόγραμμα του πελάτη θα αναζητά

Page 107: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

107

και θα αποκτά απομακρυσμένες αναφορές προς ένα ή περισσότερα απομακρυσμένα αντικείμενα

για να μπορεί να καλεί τις απομακρυσμένες μεθόδους τους.

Δραστηριότητα 5.10

Να υλοποιήσετε μια απομακρυσμένη διεπαφή Calculator που θα παίζει τον ρόλο μιας

αριθμομηχανής που εκτελεί τις τέσσερις βασικές αριθμητικές πράξεις (πρόσθεση, αφαίρεση,

πολλαπλασιασμό, διαίρεση) ανάμεσα σε ακέραιους αριθμούς τύπου long. Εκτός από την

απομακρυσμένη διεπαφή (Calculator) και την κλάση υλοποίησης αυτής (CalculatorImpl), θα

πρέπει να ορίσετε την κλάση εξυπηρετητή (CalculatorServer) που θα είναι υπεύθυνη για τη

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

δεσμευτή και τέλος την κλάση με τον κώδικα του πελάτη (CalculatorClient).

Δραστηριότητα 5.11

Δώστε ένα παράδειγμα υλοποίησης μιας αναφοράς αντικειμένου που να επιτρέπει σε έναν πελάτη να

δεσμευτεί με ένα παροδικό απομακρυσμένο αντικείμενο.

Callbacks

Η βασική ιδέα πίσω από τα callbacks είναι ότι αντί οι πελάτες να ρωτούν περιοδικά τον εξυπηρετητή

για το ενδεχόμενο ένα συμβάν να έχει λάβει χώρα, είναι αποδοτικότερο ο εξυπηρετητής να ειδοποιεί

τους πελάτες του σχετικά με την εμφάνιση του συμβάντος. Στο RMI τα callbacks μπορούν να

υλοποιηθούν ως εξής:

• Ο πελάτης δημιουργεί ένα απομακρυσμένο αντικείμενο που υλοποιεί μια διεπαφή που περιέχει

μια μέθοδο για να την καλέσει ο εξυπηρετητής. Αναφερόμαστε σε αυτό το αντικείμενο ως callback

αντικείμενο.

• Ο εξυπηρετητής παρέχει μια λειτουργία (π.χ. register) που δίνει την δυνατότητα σε

ενδιαφερόμενους πελάτες να τον ενημερώσουν για τις αναφορές απομακρυσμένων callback

αντικειμένων. Ο εξυπηρετητής καταγράφει αυτά τα αντικείμενα σε μια λίστα.

• Οποτεδήποτε ένα συμβάν ενδιαφέροντος εμφανιστεί, ο εξυπηρετητής καλεί τους

ενδιαφερόμενους πελάτες.

5.2 Σχεδιασμός και υλοποίηση του Java RMI Από την Java 1.2 και μετέπειτα χρησιμοποιείται ο μηχανισμός ανάκλασης (reflection) για την

δημιουργία ενός γενικού dispatcher που εξαλείφει την ανάγκη για σκελετούς εξυπηρετητών. Οι

πληρεξούσιοι πελατών παράγονται κανονικά από τον μεταγλωττιστή rmic.

Ανάκλαση είναι η ικανότητα να διαβάζουμε και να χειριζόμαστε το μηχανισμό λειτουργίας ενός

οποιουδήποτε αντικειμένου χωρίς να ξέρουμε εκ των προτέρων τον τύπο του. Στο χρόνο εκτέλεσης

μπορούμε να δούμε την κλάση του αντικειμένου, να διαβάσουμε και να καλέσουμε τις δημόσιες

μεθόδους του.

Page 108: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

108

Τα απλούστερα απομακρυσμένα αντικείμενα του συστήματος Java RMI επεκτείνουν την κλάση

java.rmi.UnicastRemoteObject, και είναι παροδικά (transient), δηλαδή η διάρκεια ζωής τους

είναι το πολύ ίση με αυτήν του εξυπηρετητή που τα δημιούργησε. Μόνον όταν δεν υπάρχουν ούτε

απομακρυσμένες ούτε τοπικές αναφορές προς ένα παροδικό απομακρυσμένο αντικείμενο, μπορεί να

διαγραφεί από τον απορριμματοσυλλέκτη.

Το σύστημα Java RMI υποστηρίζει και επίμονα απομακρυσμένα αντικείμενα (persistent remote objects),

τα οποία μπορεί να έχουν απεριόριστη διάρκεια ζωής. Τα αντικείμενα αυτά επεκτείνουν την κλάση

java.rmi.activation.Activatable.

Άσκηση αυτοαξιολόγησης 5.22

Να περιγράψετε πως η χρήση ανάκλασης μπορεί να οδηγήσει στον ορισμό ενός γενικού dispatcher που

μπορεί να χρησιμοποιηθεί για όλες τις κλάσεις απομακρυσμένων αντικειμένων, χωρίς να απαιτούνται

σκελετοί εξυπηρετητών.

Δραστηριότητα 5.12

Ένα κατανεμημένο σύστημα ηλεκτρονικής ψηφοφορίας υλοποιεί μια διεπαφή Election η οποία

παρέχει δύο απομακρυσμένες μεθόδους:

vote: ορίζεται με δύο παραμέτρους, το όνομα ενός υποψηφίου (string) και τον κωδικό ενός

ψηφοφόρου (integer). Οι κωδικοί είναι διασκορπισμένοι με τυχαίο τρόπο στο πεδίο των ακεραίων

αριθμών.

result: ορίζεται με δύο παραμέτρους ώστε να επιστρέφει το όνομα ενός υποψηφίου και τον αριθμό

ψήφων αυτού του υποψηφίου.

α) Ποιες από τις παραμέτρους των παραπάνω λειτουργιών είναι input και ποιες output;

β) Διατυπώστε την διεπαφή Election σε Java RMI.

γ) Η κατανεμημένη υπηρεσία Election πρέπει να εγγυάται ότι η ψήφος ενός ψηφοφόρου

καταγράφεται στο σύστημα εφόσον ο ψηφοφόρος έχει ολοκληρώσει επιτυχώς τη διαδικασία

ηλεκτρονικής ψηφοφορίας. Ποια θεωρείτε ότι θα πρέπει να είναι η σημασιολογία κλήσης της

υπηρεσίας Election (Maybe invocation, At-Least-Once Invocation, At-Most-Once Invocation);

δ) Περιγράψτε σε αδρές γραμμές μια υλοποίηση της υπηρεσίας Election που θα εγγυάται την

συνέπεια των εγγραφών της όταν καλείται ταυτόχρονα από πολλούς πελάτες.

ε) Η κατανεμημένη υπηρεσία Election πρέπει να εγγυάται ότι όλοι οι ψήφοι έχουν με ασφάλεια

αποθηκευθεί ακόμη και εάν ο εξυπηρετητής καταρρεύσει. Περιγράψτε πώς μπορεί να εξασφαλισθεί

κάτι τέτοιο ως επέκταση της υλοποίησης που περιγράψετε στο δ).

6. Επανάληψη Στο κεφάλαιο αυτό εξετάστηκαν τρία μοντέλα κατανεμημένου προγραμματισμού: πρωτόκολλα

αιτήσεων-αποκρίσεων, κλήσεις απομακρυσμένων διαδικασιών και κλήσεις απομακρυσμένων μεθόδων.

Page 109: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

109

Και τα τρία μοντέλα παρέχουν μηχανισμούς για την απ’ ευθείας επικοινωνία μεταξύ κατανεμημένων

και αυτόνομων οντοτήτων (διεργασίες, αντικείμενα, υπηρεσίες).

Υλοποιήσεις του συστήματος RMI περιλαμβάνουν συστατικά λογισμικού όπως, πληρεξούσιους

(proxies), σκελετούς (skeletons) και dispatchers, τα οποία αποκρύπτουν από τους προγραμματιστές

κατανεμημένων εφαρμογών λεπτομέρειες μορφοποίησης αποστολής/παραλαβής μηνυμάτων καθώς

και τον εντοπισμό απομακρυσμένων αντικειμένων, σε επίπεδο ενδιάμεσου λογισμικού.

Page 110: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

110

ΚΕΦΑΛΑΙΟ 7 : Υποστήριξη

Λειτουργικού Συστήματος

Σκοπός Ο σκοπός του κεφαλαίου είναι να περιγράψει μηχανισμούς υποστήριξης, που παρέχονται από το

στρώμα του Λειτουργικού Συστήματος (ΛΣ) στους κόμβους ενός Κατανεμημένου Συστήματος (ΚΣ), για

την υλοποίηση υπηρεσιών Ενδιάμεσου Λογισμικού (ΕΛ). Ένα ΛΣ διευκολύνει την ενθυλάκωση και την

προστασία των πόρων που διαχειρίζονται οι εξυπηρετητές και παρέχει μηχανισμούς επικοινωνίας και

χρονοδρομολόγησης για την πρόσβαση στους πόρους.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Περιγράψετε τον ρόλο του πυρήνα ενός ΛΣ και τα κύρια συστατικά του μέρη

• Εξηγήσετε την διαφορά μεταξύ ενός λειτουργικού συστήματος δικτύου και ενός

κατανεμημένου λειτουργικού συστήματος

• Εξηγήσετε τα πλεονεκτήματα και μειονεκτήματα από την υιοθέτηση δυο περιοχών προστασίας

κατά την λειτουργία ενός ΛΣ

• Περιγράψετε μηχανισμούς χαμηλού επιπέδου για την προστασία των πόρων

• Περιγράψετε τρεις βασικές αφαιρετικές έννοιες που σχετίζονται με τη λειτουργία ενός ΛΣ

• Εξηγήσετε την διαφορά μεταξύ διεργασιών και νημάτων

• Περιγράψετε τέσσερις πολυ-νηματικές αρχιτεκτονικές εξυπηρετητών

• Εξηγήσετε την ανάγκη για συγχρονισμό νημάτων και την έννοια της συνθήκης ανταγωνισμού

• Περιγράψετε δύο μηχανισμούς για συγχρονισμό νημάτων που παρέχονται από τη γλώσσα Java

• Περιγράψετε δυο κατηγορίες αλγορίθμων δρομολόγησης νημάτων

• Περιγράψετε δύο τρόπους υλοποίησης νημάτων και να εξηγήσετε τα πλεονεκτήματα/

μειονεκτήματα της κάθε υλοποίησης

• Χρησιμοποιείτε νήματα για την υλοποίηση πολύ-νηματικών εφαρμογών τύπου client/server

• Εξηγήσετε πως το ΛΣ επηρεάζει την απόδοση των μηχανισμών επίκλησης

• Περιγράψετε δύο διαφορετικούς τύπους αρχιτεκτονικών ΛΣ και αναφέρετε παραδείγματα ΛΣ

για την κάθε κατηγορία

• Περιγράψετε τον ρόλο της εικονικοποίησης στο σχεδιασμό των ΛΣ

• Περιγράψετε τα χαρακτηριστικά δύο προσεγγίσεων εικονικοποίησης

• Αναφέρετε και συνοψίσετε τα χαρακτηριστικά του συστήματος εικονικοποίησης Xen

Page 111: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

111

Έννοιες κλειδιά Διεργασία (Process), Εικονικοποίηση Συστήματος (System Virtualization), Εναλλαγή Πλαισίου (Context

Switch), Μικροπυρήνας (Microkernel), Νήματα (Threads), Περιοχή Προστασίας (Protection Domain),

Πυρήνας (Kernel), Συγχρονισμός Νημάτων (Thread Synchronization), Ταυτόχρονος Προγραμματισμός

(Concurrent Programming), Χρονοπρογραμματισμός (Scheduling), Χώρος Διευθύνσεων (Address Space).

1. Εισαγωγικές παρατηρήσεις Ένα Κατανεμημένο Σύστημα (ΚΣ) οργανώνεται σε στρώματα λογισμικού όπως παρουσιάστηκε στο

Κεφάλαιο 2. Κάτω από το στρώμα του Ενδιάμεσου Λογισμικού (ΕΛ) βρίσκεται το στρώμα Λειτουργικού

Συστήματος (ΛΣ), που αποτελεί το αντικείμενο αυτού του κεφαλαίου. Ο βασικός στόχος οποιουδήποτε

ΛΣ (π.χ. UNIX, Windows, Mac OS) είναι να παρέχει ένα επίπεδο αφαίρεσης ως προς τη διαχείριση των

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

Εδώ, εξετάζεται η σχέση μεταξύ των δύο στρωμάτων, και ειδικότερα υπό ποιες προϋποθέσεις οι

απαιτήσεις του ΕΛ μπορούν να καλυφθούν αποτελεσματικά από το ΛΣ. Οι απαιτήσεις περιλαμβάνουν

την υποστήριξη για αποδοτική και αξιόπιστη πρόσβαση στους φυσικούς πόρους του ΚΣ, και ευελιξία

στην εφαρμογή μιας ποικιλίας πολιτικών διαχείρισης πόρων.

Δύο κατηγορίες ΛΣ που εμφανίστηκαν και υποστήριξαν την ανάπτυξη των κατανεμημένων συστημάτων

είναι τα λειτουργικά συστήματα δικτύου (network operating systems) και τα κατανεμημένα λειτουργικά

συστήματα (distributed operating systems). Τα κατανεμημένα λειτουργικά συστήματα δε γνώρισαν

μεγάλη διάδοση ως συστήματα γενικής χρήσης πέραν της εφαρμογής τους σε ακαδημαϊκούς και

ερευνητικούς χώρους. Αντίθετα, ο συνδυασμός του ΕΛ και των ΛΣ δικτύων έχει επικρατήσει, διότι

εξισορροπεί αφενός την απαίτηση των χρηστών για αυτονομία και αφετέρου επιτρέπει τη διάφανη

πρόσβαση στους πόρους του δικτύου. Έτσι, ένα ΛΣ δικτύου επιτρέπει στους χρήστες να τρέξουν τις

αγαπημένες τους εφαρμογές που μπορούν να είναι εγκατεστημένες τοπικά. Από την άλλη, το ΕΛ τους

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

Η διάρθρωση του κεφαλαίου έχει ως εξής. Η Ενότητα 2 εξηγεί τις λειτουργίες του στρώματος ΛΣ. Η

Ενότητα 3 εξετάζει μηχανισμούς χαμηλού επιπέδου για την προστασία των πόρων, οι οποίοι πρέπει να

κατανοηθούν προκειμένου να εκτιμηθεί η σχέση μεταξύ των διεργασιών και νημάτων, και ο ρόλος του

πυρήνα ενός ΛΣ. Η Ενότητα 4 συνεχίζει με την εξέταση των διεργασιών, του χώρου διευθύνσεων και

των νημάτων ως αφαιρετικών εννοιών. Τα κύρια θέματα που μας απασχολούν είναι ο ταυτοχρονισμός

(concurrency), η τοπική διαχείριση πόρων και προστασία, και ο χρονοπρογραμματισμός (scheduling). Η

Ενότητα 5 καλύπτει την επικοινωνία ως τμήμα των μηχανισμών επίκλησης. Η Ενότητα 6 συζητά τους

διαφορετικούς τύπους αρχιτεκτονικών λειτουργικών συστημάτων, συμπεριλαμβανομένων των

μονολιθικών συστημάτων και συστημάτων μικροπυρήνα (microkernel). Το κεφάλαιο ολοκληρώνεται με

την εξέταση του ρόλου της εικονικοποίησης (virtualization) στο σχεδιασμό των λειτουργικών

συστημάτων. Επιπλέον, εξετάζεται ως μελέτη περίπτωσης για την εικονικοποίηση η προσέγγιση Xen.

Page 112: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

112

Άσκηση αυτοαξιολόγησης 7.1

Ποια είναι η διαφορά μεταξύ ενός λειτουργικού συστήματος δικτύου (network operating system) και

ενός κατανεμημένου λειτουργικού συστήματος (distributed operating system). Αναφέρατε

παραδείγματα σε κάθε κατηγορία.

Άσκηση αυτοαξιολόγησης 7.2

Ο συνδυασμός ενδιάμεσου λογισμικού και λειτουργικού συστήματος δικτύου επιτρέπει στον χρήστη

ενός συστήματος να διατηρεί την αυτονομία του. Εξηγήστε γιατί.

2. Το στρώμα Λειτουργικού Συστήματος Τα ΚΣ λειτουργούν ως διαχειριστές πόρων για το διαμοιραζόμενο υλικό, επιτρέποντας την πρόσβαση

χρηστών σε μνήμη, μέσα αποθήκευσης, Κεντρικές Μονάδες Επεξεργασίας (ΚΜΕ), περιφερειακές

συσκευές και δίκτυο. Ένα μεγάλο μέρος αυτής της λειτουργίας υλοποιείται από τα ΛΣ και τα ΛΣ

δικτύων. Το ΛΣ που τρέχει σε έναν κόμβο του ΚΣ, δηλαδή, ο πυρήνας και οι συνεργαζόμενες υπηρεσίες

επιπέδου-χρήστη, όπως οι βιβλιοθήκες επικοινωνίας, παρέχουν ένα επίπεδο αφαίρεσης των τοπικών

πόρων υλικού για πρόσβαση σε λειτουργίες επεξεργασίας, αποθήκευσης και επικοινωνίας. Το ΕΛ

χρησιμοποιεί έναν συνδυασμό αυτών των τοπικών πόρων, διαμέσου του ΛΣ, για να υλοποιήσει τους

δικούς του μηχανισμούς για τις απομακρυσμένες επικλήσεις μεταξύ των αντικειμένων ή των

διεργασιών στους κόμβους του ΚΣ.

Ο στόχος είναι να εξετάσουμε την επίδραση συγκεκριμένων μηχανισμών του ΛΣ, ώστε το ΕΛ να παρέχει

αποδοτικά μια κατανεμημένη διαμοίραση πόρων στους χρήστες. Οι πυρήνες των ΛΣ και οι διεργασίες

πελατών και εξυπηρετητών που εκτελούνται επάνω από τους πυρήνες είναι τα κύρια αρχιτεκτονικά

συστατικά που μας ενδιαφέρουν. Το ΛΣ παρέχει μηχανισμούς για να διευκολύνει: την ενθυλάκωση

πόρων, την προστασία των πόρων και την ταυτόχρονη επεξεργασία των πόρων. Ο μηχανισμός

επίκλησης (invocation mechanism) είναι ένας τρόπος προσπέλασης ενός ενθυλακωμένου πόρου.

Τα κύρια συστατικά μέρη στον πυρήνα ενός ΛΣ είναι:

• Ο Διαχειριστής διεργασιών (Process manager)

• Ο Διαχειριστής νημάτων (Thread manager)

• Ο Διαχειριστής επικοινωνίας (Communication manager)

• Ο Διαχειριστής μνήμης (Memory manager)

• Ο Επόπτης (Supervisor)

Άσκηση αυτοαξιολόγησης 7.3

Ποιος είναι ο ρόλος του ΛΣ σε ένα πολυπεξεργαστικό σύστημα διαμοιραζόμενης μνήμης (shared

memory multiprocessor);

Άσκηση αυτοαξιολόγησης 7.4

Ποιες είναι οι αρμοδιότητες των κύριων συστατικών μερών ενός ΛΣ;

Page 113: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

113

Δραστηριότητα 7.1

Να αναφέρετε πέντε υπηρεσίες που παρέχονται από ένα ΛΣ και οι οποίες έχουν υλοποιηθεί για να

κάνουν αποτελεσματικότερη τη χρήση του υπολογιστικού συστήματος από το χρήστη. Υπάρχουν

περιπτώσεις που θα ήταν αδύνατο οι υπηρεσίες αυτές να παρέχονται από προγράμματα επιπέδου

χρήστη; Εξηγήστε.

3. Προστασία Όλοι οι πόροι ενός συστήματος θα πρέπει να προστατεύονται από αθέμιτη προσπέλαση. Αυτό

περιλαμβάνει την προστασία της προσπέλασης των πόρων από κακόβουλο κώδικα, αλλά περιλαμβάνει

επίσης και την προστασία από σφάλματα και άλλες διεργασίες που μπορεί να τρέχουν στον ίδιο

υπολογιστή. Η προστασία μπορεί επίσης να αποτρέπει την παράκαμψη απαραίτητων διαδικασιών

όπως η σύνδεση στο σύστημα (login), η πιστοποίηση ταυτότητας (authentication) και η εξουσιοδότηση

(authorization).

Επειδή πολλές διεργασίες μπορούν να τρέξουν ταυτόχρονα σε ένα υπολογιστικό σύστημα, ένα ΛΣ στην

πραγματικότητα παρέχει μια εικονική μηχανή, που δίνει στο χρήστη την εντύπωση του ελέγχου ενός

συστήματος. Αυτό περιλαμβάνει την προστασία κάθε διεργασίας χρήστη από την παρεμβολή μιας

άλλης διεργασίας. Για να υλοποιηθεί αυτό, τα ΛΣ χρησιμοποιούν τυπικά δύο επίπεδα πρόσβασης στους

πόρους συστημάτων. Το ΛΣ έχει πρόσβαση σε όλους τους πόρους, ενώ οι διεργασίες χρηστών είναι

περιορισμένες.

Οι περισσότεροι επεξεργαστές έχουν έναν καταχωρητή σε επίπεδο υλικού που επιτρέπει τον αυστηρό

έλεγχο στην εκτέλεση προνομιούχων εντολών (privileged instructions). Γενικά, οι προνομιούχες

εντολές εκτελούνται σε κατάσταση επόπτη (supervisor mode), ενώ οι μη-προνομιούχες εντολές

εκτελούνται σε κατάσταση χρήστη (user mode). Ξεχωριστοί χώροι διευθύνσεων διατίθενται, και μόνο

ο προνομιούχος πυρήνας μπορεί να έχει πρόσβαση στους προνομιούχους χώρους διευθύνσεων.

Συνήθως μια παγίδα κλήσης συστημάτων (system call trap) απαιτείται για να την προσπέλαση

προνομιούχων εντολών από τις διεργασίες χρήστη.

Η προστασία παρέχεται με κάποιο κόστος, συμπεριλαμβανομένων των κύκλων επεξεργαστή για την

εναλλαγή μεταξύ των χώρων διευθύνσεων (π.χ., μετάβαση από μια διεργασία χρήστη σε μια διεργασία

του πυρήνα ΛΣ), της επίβλεψης και της προστασίας των παγίδων κλήσης συστημάτων, και της

εγκαθίδρυσης, πιστοποίησης και εξουσιοδότησης προνομιούχων χρηστών και διεργασιών.

Δραστηριότητα 7.2

Εξηγήστε πως ένας πυρήνας παρέχει προστασία σε διαφορετικές διεργασίες σε ένα σύστημα.

Δραστηριότητα 7.3

Ποιες διακοπές ονομάζονται εσωτερικές διακοπές ή παγιδεύσεις (traps); Να αναφέρετε πέντε

παραδείγματα εσωτερικών διακοπών.

Page 114: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

114

4. Διεργασίες και νήματα Μια τυπική διεργασία περιλαμβάνει ένα περιβάλλον εκτέλεσης (execution environment) και ένα ή

περισσότερα νήματα (threads). Ένα περιβάλλον εκτέλεσης περιλαμβάνει :

• ένα χώρο διευθύνσεων (address space),

• πόρους συγχρονισμού νημάτων και επικοινωνίας, όπως οι σημαφόροι (semaphors) και

διεπαφές επικοινωνίας, όπως οι υποδοχές (sockets), και

• πόρους υψηλότερου επιπέδου, όπως ανοικτά αρχεία και παράθυρα.

Ένα νήμα ΛΣ είναι η εννοιολογική αφαίρεση μιας δραστηριότητας. Τα νήματα είναι δρομολογήσιμες

δραστηριότητες που σχετίζονται με τις διεργασίες. Οι στόχοι που εξυπηρετούνται με την υποστήριξη

πολλαπλών νημάτων εκτέλεσης είναι:

• να μεγιστοποιηθεί ο βαθμός ταυτόχρονης εκτέλεσης μεταξύ υπολογιστικών εργασιών

• να επιτραπεί η επικάλυψη λειτουργιών υπολογισμού με λειτουργίες εισόδου/εξόδου

• να επιτραπεί η ταυτόχρονη επεξεργασία σε πολυεπεξεργαστικά συστήματα

Τα νήματα ονομάζονται μερικές φορές και «ελαφριές» («lightweight») διεργασίες. Η δημιουργία

διεργασιών είναι δαπανηρή σε πόρους, ενώ τα νήματα δημιουργούνται και καταστρέφονται

ευκολότερα.

Άσκηση αυτοαξιολόγησης 7.5

Πως μπορούν να αξιοποιηθούν τα νήματα στο περιβάλλον εκτέλεσης ενός εξυπηρετητή για να

βελτιωθεί η αποδοτικότητά του;

4.1 Χώροι διευθύνσεων Ο χώρος διευθύνσεων (address space) αναπαριστά λογικές (logical) διευθύνσεις που μπορεί να

χρησιμοποιεί ένα πρόγραμμα για να προσπελάσει εντολές και δεδομένα σε επίπεδο ιδεατής μνήμης

(virtual memory). Ο χώρος διευθύνσεων αποτελείται από μη-επικαλυπτόμενες περιοχές (regions), που

διαχωρίζονται από μη προσπελάσιμα τμήματα ιδεατής μνήμης. Μια περιοχή είναι ένα συνεχόμενο

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

χαρακτηρίζεται από τις ακόλουθες ιδιότητες:

• την έκτασή της (προσδιοριζόμενη από την χαμηλότερη λογική διεύθυνσή της και από το

μέγεθός της),

• τις άδειες ανάγνωσης/εγγραφής/εκτέλεσης για τα νήματα των διεργασιών, και

• το κατά πόσον αυξάνεται προς τα πάνω η κάτω.

Μια περιοχή έχει τη λογική σελίδων, ενώ αφήνονται κενά μεταξύ των περιοχών για να επιτρέψουν την

αύξησή τους. Η αναπαράσταση του χώρου διευθύνσεων ως συνόλου μη επικαλυπτόμενων περιοχών

αποτελεί γενίκευση του μοντέλου του χώρου διευθύνσεων του UNIX, το οποίο περιλαμβάνει τρεις

περιοχές:

• Text (για την αποθήκευση του δυαδικού κώδικα του προγράμματος μιας διεργασίας),

Page 115: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

115

• Heap (για την αποθήκευση των σταθερών του προγράμματος και την κάλυψη των απαιτήσεων

του προγράμματος σε δυναμική μνήμη)

• Stack (για την κάλυψη των απαιτήσεων του προγράμματος σε τοπικές μεταβλητές και κλήσεις

συναρτήσεων)

Ένας απροσδιόριστος αριθμός πρόσθετων περιοχών έχει προστεθεί στο μοντέλο του UNIX. Σε πρώτη

ανάγνωση αυτή η επέκταση δίνει τη δυνατότητα το κάθε νήμα να έχει μια ξεχωριστή στοίβα (stack).

Όταν ένα νήμα ή μια διεργασία διακόπτεται, οι πληροφορίες κατάστασης αποθηκεύονται στη στοίβα

που θα επιτρέψει στη διεργασία ή στο νήμα να συνεχίσει από το σημείο της διακοπής. Τυπικά, η μνήμη

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

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

τελευταίο-μέσα πρώτο-έξω (last-in, first out).

Ακόμη, δίνεται η δυνατότητα ένα αρχείο που αποθηκεύεται στην δευτερεύουσα μνήμη να μπορεί να

φορτωθεί στην ενεργό μνήμη. Ένα απεικονιζόμενο αρχείο (mapped file) μπορεί τότε να προσπελαστεί

ως ένας πίνακας λέξεων στην μνήμη. Ένα τέτοιο αρχείο μπορεί να μειώσει δραματικά το χρόνο

πρόσβασης, δεδομένου ότι η προσπέλαση της μνήμης είναι τάξεις μεγέθους γρηγορότερη από ότι η

προσπέλαση του δίσκου.

Μερικές φορές είναι επιθυμητό να διαμοιραστεί η μνήμη μεταξύ των διεργασιών, ή μεταξύ μιας

διεργασίας και του πυρήνα. Οι λόγοι που το επιβάλλουν είναι:

• Ο κώδικας των βιβλιοθηκών μπορεί να έχει πολύ μεγάλο μέγεθος και θα είχαμε σπατάλη

χώρου, αν θα έπρεπε η κάθε διεργασία που χρησιμοποιεί μια βιβλιοθήκη να την φορτώνει στη

μνήμη ξεχωριστά.

• Κλήσεις πυρήνα που συνδέονται με κλήσεις συστήματος και εξαιρέσεις που προκαλεί μια

διεργασία χρήστη.

• Για την επικοινωνία και διαμοιρασμό δεδομένων μεταξύ διεργασιών που συνεργάζονται για

την επίλυση ενός προβλήματος.

Άσκηση αυτοαξιολόγησης 7.6

Τα νήματα μοιράζονται ένα περιβάλλον εκτέλεσης. Ποιες είναι οι διαφορετικές περιοχές μνήμης που

μοιράζονται διαφορετικές διεργασίες.

4.2 Δημιουργία μιας νέας διεργασίας Ένα ΛΣ δημιουργεί νέες διεργασίες όταν παρουσιαστεί η ανάγκη. Σε ένα κατανεμημένο περιβάλλον,

υπάρχουν δύο ανεξάρτητα ζητήματα που σχετίζονται με την δημιουργία διεργασιών:

• Επιλογή του ξένιου Η/Υ (host).

• Δημιουργία ενός περιβάλλοντος εκτέλεσης και ενός αρχικού νήματος μέσα σε αυτό.

Επιλογή του ξένιου Η/Υ

Page 116: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

116

Μια πολιτική μεταφοράς (transfer policy) αποφασίζει εάν θα τοποθετηθεί η διεργασία τοπικά ή

απομακρυσμένα.

Μια πολιτική θέσης (location policy) καθορίζει ποιος κόμβος πρέπει να φιλοξενήσει τη νέα διεργασία.

Οι πολιτικές θέσης μπορούν να είναι στατικές (static) ή προσαρμοστικές (adaptive). Οι στατικές

πολιτικές αγνοούν την τρέχουσα κατάσταση του συστήματος και σχεδιάζονται με γνώμονα τα

αναμενόμενα μακροπρόθεσμα χαρακτηριστικά του συστήματος. Οι προσαρμοστικές πολιτικές, από την

άλλη, εφαρμόζουν ευριστικές μεθόδους (heuristics) για να λάβουν τις αποφάσεις κατανομής,

βασισμένες σε απρόβλεπτους παράγοντες κατά τον χρόνο εκτέλεσης, όπως για παράδειγμα, την

μέτρηση του φορτίου σε κάθε κόμβο.

Οι πολιτικές διαμοιρασμού φορτίου χρησιμοποιούν έναν διαχειριστή φορτίου (load manager) για την

κατανομή των διεργασιών στους κόμβους. Οι πολιτικές αρχικοποίηση-από-αποστολέα (sender-

initiated) απαιτούν από τον κόμβο που δημιουργεί τη διεργασία να αποφασίσει για τον ξένιο Η/Υ. Οι

μεταναστευτικές πολιτικές (migratory policies) μπορούν να μετακινήσουν τις διεργασίες μεταξύ των

κόμβων οποιαδήποτε στιγμή.

Δημιουργία περιβάλλοντος εκτέλεσης

Μόλις επιλεχθεί ο ξένιος κόμβος, η νέα διεργασία χρειάζεται έναν χώρο διευθύνσεων και

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

ένα υπάρχον περιβάλλον εκτέλεσης. Εάν αντιγράφεται, το περιεχόμενο μπορεί να διαμοιράζεται και

στο νέο περιβάλλον δε θα αντιγραφεί οτιδήποτε έως ότου εμφανιστεί κάποια εντολή εγγραφής σε

οποιαδήποτε από τις διεργασίες που συμμετέχει στο διαμοιρασμό. Κατόπιν το κοινό περιεχόμενο

διαιρείται. Αυτή η τεχνική καλείται αντιγραφή κατά την εγγραφή (copy-on-write).

Άσκηση αυτοαξιολόγησης 7.7

Ποιες είναι οι διαφορετικές πολιτικές για την κατανομή των διεργασιών;

Δραστηριότητα 7.4

Προτείνετε ένα σχήμα για την εξισορρόπηση του φορτίου σε μια συστάδα υπολογιστών. Πρέπει να

εξετάσετε:

i. ποιες απαιτήσεις χρηστών ή συστήματος καλύπτονται από ένα τέτοιο σχήμα;

ii. σε ποιες κατηγορίες εφαρμογών θα ταίριαζε ένα τέτοιο σχήμα;

iii. πώς μπορεί να μετρήσει το φορτίο και με ποια ακρίβεια;

iv. πώς μπορεί να παρακολουθεί το φορτίο και να επιλέξει τη θέση για μια νέα διεργασία.

Υποθέστε ότι οι διεργασίες δεν μπορούν να μεταναστεύσουν;

Πώς το σχήμα αυτό θα επηρεαζόταν εάν οι διεργασίες θα μπορούσαν να μεταναστεύσουν μεταξύ των

υπολογιστών; Θα αναμένατε ένα σημαντικό κόστος ως συνέπεια από τη μετανάστευση διεργασιών;

4.3 Νήματα

Page 117: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

117

Ένα νήμα (thread) είναι μια ακολουθιακή ροή ελέγχου (δηλαδή, κώδικας που έχει αρχή, περιέχει μια

ακολουθία εντολών και έχει τέλος) σε ένα πρόγραμμα. Σκοπός είναι η απομόνωση (ή αυτονόμηση)

κάποιων εργασιών (tasks), ώστε να μπορούν να εκτελούνται ταυτόχρονα (δυνητικά παράλληλα).

Ένα νήμα δεν είναι από μόνο του ένα πρόγραμμα, αλλά ούτε διεργασία. Ένα νήμα εκτελείται στο

εσωτερικό ενός προγράμματος. Ένα μόνο νήμα δεν προσφέρει ευκαιρίες πολυεπεξεργασίας. Δύο ή

περισσότερα νήματα μπορούν να εκτελούνται ταυτόχρονα πραγματοποιώντας διαφορετικές εργασίες.

Η ταυτόχρονη επεξεργασία των αιτημάτων πολλών πελατών μπορεί να μειώσει την συμφόρηση

(bottleneck) σε έναν εξυπηρετητή (ή αλλιώς, να αυξήσει την απόδοσή του ως προς τον αριθμό των

αιτημάτων που διεκπεραιώνονται στη μονάδα του χρόνου). Για παράδειγμα, ένα νήμα μπορεί να

επεξεργάζεται το αίτημα ενός πελάτη, ενώ ένα δεύτερο νήμα που εξυπηρετεί ένα άλλο αίτημα να

περιμένει την ολοκλήρωση μιας προσπέλασης στο δίσκο.

Πολυ-νηματικές Αρχιτεκτονικές Εξυπηρετητών (Multi-threaded Server Architectures)

Μπορούμε να συναντήσουμε τις παρακάτω περιπτώσεις:

Αρχιτεκτονική Δεξαμενής Εργατών (Worker Pool Architecture) : ένας προκαθορισμένος σταθερός

αριθμός νημάτων είναι διαθέσιμος για την εξυπηρέτηση αιτημάτων και τα νήματα αυτά επιστρέφονται

στην δεξαμενή μετά τη χρήση τους.

Αρχιτεκτονική Νήματος-ανά-αίτηση (Thread-per-request Architecture) : ένα νέο νήμα διατίθεται για

κάθε νέο αίτημα και απορρίπτεται μετά από τη χρήση του.

Αρχιτεκτονική Νήματος-ανά-σύνδεση (Thread-per-connection Architecture) : ένα νέο νήμα διατίθεται

για κάθε νέα σύνδεση. Διαφορετικά αιτήματα μπορούν να χρησιμοποιήσουν το νήμα διαδοχικά. Το

νήμα απορρίπτεται όταν κλείσει η σύνδεση.

Αρχιτεκτονική Νήματος-ανά-αντικείμενο (Thread-per-object Architecture) : ένα νέο νήμα διατίθεται για

κάθε απομακρυσμένο αντικείμενο. Όλα τα αιτήματα για ένα συγκεκριμένο αντικείμενο περιμένουν να

χρησιμοποιήσουν το αντίστοιχο νήμα. Το νήμα απορρίπτεται όταν τερματίζεται η σύνδεση στο

απομακρυσμένο αντικείμενο.

Άσκηση αυτοαξιολόγησης 7.8

Για ποιους λόγους παρατηρούμε εκτεταμένη χρήση των νημάτων στις εφαρμογές κατανεμημένων

συστημάτων;

Δραστηριότητα 7.5

Ένας file server διαθέτει μηχανισμό caching και επιτυγχάνει λόγο επιτυχίας (hit ratio) 80%. Οι

λειτουργίες διαχείρισης αρχείων στον sever κοστίζουν 5 ms CPU time, όταν το caching επιτυγχάνει, και

επιπλέον 15 ms όταν αποτυγχάνει και χρειάζεται Ι/Ο στον δίσκο. Να υπολογίσετε την δυνατότητα

διεκπεραίωσης αιτήσεων του server (μέσος όρος αιτήσεων/sec), στις παρακάτω περιπτώσεις:

i) ο server περιλαμβάνει ένα νήμα (single-threaded)

Page 118: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

118

ii) o server περιλαμβάνει δύο νήματα σε μονο-επεξεργαστικό σύστημα

iii) ο server περιλαμβάνει δύο νήματα σε σύστημα με δύο επεξεργαστές

Νήματα έναντι πολλαπλών διεργασιών

Μια σύγκριση μεταξύ των διεργασιών και των νημάτων έχει ως εξής:

• Η δημιουργία ενός νέου νήματος εντός υπάρχουσας διεργασίας κοστίζει λιγότερο από τη

δημιουργία μιας νέας διεργασίας.

• Ακόμη πιο σημαντικό, η εναλλαγή σε ένα διαφορετικό νήμα μέσα στην ίδια διεργασία είναι

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

• Τα νήματα μέσα σε μια διεργασία μπορούν να μοιραστούν δεδομένα και άλλους πόρους με

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

διεργασίες.

• Στον αντίποδα, τα νήματα μέσα σε μια διεργασία δεν προστατεύονται ως προς την μεταξύ τους

αλληλεπίδραση.

Η εναλλαγή πλαισίου (context switch) μεταξύ νημάτων συνιστά το πιο σημαντικό κόστος επειδή αυτή η

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

περιλαμβάνει τα εξής:

• αποθήκευση της αρχικής κατάστασης του επεξεργαστή, και φόρτωση της νέας κατάστασης

• σε μερικές περιπτώσεις, μια μεταφορά σε νέα περιοχή προστασίας - αυτό είναι γνωστό ως

μετάβαση περιοχής (domain transition).

H κατάσταση του επεξεργαστή περιλαμβάνει τις τιμές των καταχωρητών του επεξεργαστή όπως του

μετρητή προγράμματος (program counter), και την τρέχουσα περιοχή προστασίας υλικού: το χώρο

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

Άσκηση αυτοαξιολόγησης 7.9

Ποιες είναι οι σημαντικότερες διαφορές μεταξύ νημάτων και διεργασιών;

Προγραμματισμός νημάτων (Threads programming)

Ο προγραμματισμός νημάτων είναι ταυτόχρονος προγραμματισμός (concurrent programming). Βασικές

έννοιες που χρησιμοποιούνται είναι: συνθήκες ανταγωνισμού (race conditions), κρίσιμες περιοχές

(critical sections/regions), παρακολουθητές (monitors), μεταβλητές συνθήκης (condition variables) και

σημαφόροι (semaphores).

Η Java είναι μια γλώσσα προγραμματισμού που παρέχει μεθόδους (κλάσεις Thread και Object) για την

δημιουργία, καταστροφή και συγχρονισμό νημάτων.

Χρόνος ζωής νήματος (Thread lifetime)

Page 119: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

119

Ένα νέο νήμα δημιουργείται στην ίδια εικονική μηχανή Java (JVM), όπως o κατασκευαστής του, στην

κατάσταση SUSPENDED. Με την μέθοδο start() το νήμα μεταβαίνει στην κατάσταση RUNNABLE

και στην συνέχεια εκτελείται η μέθοδος run() ενός αντικειμένου που προσδιορίζεται στον δημιουργό

του νήματος. Η JVM και τα νήματα πάνω από αυτή εκτελούνται σε μια διεργασία πάνω από το

υποστηρίζων ΛΣ. Η ζωή ενός νήματος τερματίζεται όταν επιστρέφει από τη μέθοδο run() ή όταν

καλείται η μέθοδος destroy() του νήματος.

Τα προγράμματα μπορούν να διαχειριστούν τα νήματα κατά ομάδες. Κάθε νήμα ανήκει σε μια ομάδα

που καθορίζεται κατά το χρόνο δημιουργίας του νήματος. Οι ομάδες νημάτων είναι χρήσιμες επειδή

μπορούν να προστατεύσουν τις διάφορες εφαρμογές που τρέχουν παράλληλα σε μια JVM. Ένα νήμα

σε μια ομάδα δεν μπορεί να εκτελέσει λειτουργίες διαχείρισης επάνω σε νήμα σε μια άλλη ομάδα. Για

παράδειγμα, ένα νήμα εφαρμογής δεν μπορεί να διακόψει ένα AWT νήμα που εκτελεί λειτουργίες στη

παραθυρική διεπαφή του χρήστη.

Συγχρονισμός νημάτων (Thread synchronization)

Ο προγραμματισμός πολυνηματικών διεργασιών απαιτεί ιδιαίτερη προσοχή. Κάθε νήμα διαθέτει

βέβαια τη δικιά του στοίβα (stack region), για την αποθήκευση των τοπικών μεταβλητών των μεθόδων

του νήματος, αλλά μοιράζεται τον ίδιο σωρό (heap region) με τα υπόλοιπα νήματα της ίδιας διεργασίας

για τις ανάγκες διαχείρισης δυναμικής μνήμης του προγράμματος. Ο συγχρονισμός μεταξύ των

νημάτων είναι απαραίτητος για να εξασφαλισθεί η ακεραιότητα δεδομένων κατά την προσπέλαση

κοινών πόρων (π.χ. ουρές αιτημάτων σε μια Αρχιτεκτονική Δεξαμενής Εργατών).

Συνθήκη ανταγωνισμού (race condition) έχουμε όταν δύο νήματα προσπαθούν να προσπελάσουν το

ίδιο αντικείμενο ταυτόχρονα (π.χ. ουρά αιτημάτων) και η συμπεριφορά του προγράμματος δεν

εξαρτάται πλέον μόνο από τις εντολές του, αλλά και από το ποιο νήμα προηγείται στη σειρά

προσπέλασης (δεν είναι προβλέψιμο αφού αυτό εξαρτάται από το ΛΣ και τη πολιτική δρομολόγησης

των νημάτων). Στην περίπτωση συνθήκης ανταγωνισμού τα αποτελέσματα των υπολογισμών δεν είναι

συνεπή σε διαδοχικές επαναλήψεις εκτέλεσης του προγράμματος με την ίδια είσοδο. Όμως, αν όλα τα

νήματα εκτελούν αποκλειστικά λειτουργίες ανάγνωσης, τότε δεν υπάρχει κίνδυνος συνθήκης

ανταγωνισμού.

Για τον συγχρονισμό νημάτων μπορεί να χρησιμοποιηθεί ένας μηχανισμός παρακολουθητή (monitor).

Μια περιοχή του κώδικα που αναπαριστά έναν κοινό πόρο (κρίσιμη περιοχή) μπορεί να συσχετισθεί με

ένα monitor. Τα νήματα κάνουν προσπέλαση του κοινού πόρου κλειδώνοντας πρώτα το monitor.

Μόνον ένα νήμα μπορεί να κατέχει το monitor σε μια δεδομένη χρονική στιγμή. Τα monitors συνεπώς

υλοποιούν έναν μηχανισμό αμοιβαίου αποκλεισμού.

Η Java επιτρέπει το κλείδωμα αντικειμένων και μεθόδων για τον συγχρονισμό νημάτων με τη χρήση της

δεσμευμένης λέξης synchronized. Η χρήση αυτού του μηχανισμού επιτρέπει την προσπέλαση μιας

μεθόδου (ή ενός αντικειμένου) σε ένα μόνο νήμα κάθε φορά. Αν έχουμε για παράδειγμα τον ακόλουθο

κώδικα:

public synchronized void xmethod {…}

Page 120: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

120

τότε για να προσπελάσει ένα νήμα τη μέθοδο xmethod θα πρέπει να περιμένει να τελειώσει το τρέχον

νήμα που ο έλεγχος ροής του βρίσκεται εντός της μεθόδου.

Μπορεί ακόμη να δηλωθεί ως συγχρονισμένο ένα τμήμα κώδικα στο σώμα μιας μεθόδου (και όχι όλη η

μέθοδος):

public int ymethod {

...

synchronized (this) {

...

}

}

Εναλλακτικά, για την υλοποίηση συγχρονισμού, τα νήματα μπορούν να μπλοκάρονται και να ξυπνούν

με την κλήση ειδικών μεθόδων που ανήκουν στην κλάση Object της Java. Ένα νήμα που αναμένει μια

συγκεκριμένη συνθήκη καλεί τη μέθοδο wait() ενός αντικειμένου. Ένα άλλο νήμα καλεί την μέθοδο

notify() ή notifyAll() για να ξυπνήσει ένα ή όλα τα μπλοκαρισμένα νήματα.

Άσκηση αυτοαξιολόγησης 7.10

Εξηγείστε πως θα συγχρονίζατε τη χρήση μιας κοινής ουράς αιτημάτων στην πλευρά του εξυπηρετητή

σε μια Αρχιτεκτονική Δεξαμενής Εργατών. Θεωρήστε ένα νήμα εισόδου/εξόδου και έναν αριθμό

νημάτων εργατών. Εξηγήστε τον συγχρονισμό:

i. για την περίπτωση της χρήσης του μηχανισμού synchronized της Java

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

Χρονοπρογραμματισμός νημάτων (Thread scheduling)

Υπάρχουν πολλές περιπτώσεις όπου ενεργοποιείται η ανάγκη για χρονοπρογραμματισμό νημάτων,

όπως:

• Δημιουργία ενός νέου νήματος εντός μιας διεργασίας

• Τερματισμός ενός νήματος

• Μπλοκάρισμα ενός νήματος (μπλοκάρισμα για είσοδο/έξοδο, για συγχρονισμό, κ.α.)

• Παραγωγή διακοπής εισόδου/εξόδου (ολοκλήρωση μεταφοράς δεδομένων και συνέχιση

εκτέλεσης του νήματος)

• Παραγωγή διακοπής ρολογιού (απόφαση δρομολόγησης σε κάθε 1 ή Ν διακοπές ρολογιού)

Δύο κατηγορίες αλγορίθμων δρομολόγησης νημάτων είναι αυτοί με προεκτόπιση (preemptive) και

χωρίς προεκτόπιση (non-preemptive). Κατά τη δρομολόγηση νημάτων με προεκτόπιση, ένα νήμα

μπορεί να ανασταλεί σε οποιοδήποτε σημείο για να δώσει τη σειρά του σε ένα άλλο νήμα, ακόμα και

Page 121: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

121

όταν το εκτοπιζόμενο νήμα θα μπορούσε να συνεχίσει να τρέχει. Κατά τη δρομολόγηση νημάτων χωρίς

προεκτόπιση, ένα νήμα τρέχει έως ότου κάνει μια κλήση στο σύστημα διαχείρισης νημάτων του

πυρήνα (παραδείγματος χάριν, μια κλήση συστήματος yield() ή block() για είσοδο/έξοδο), οπότε

μπορεί ο δρομολογητής να το αφαιρέσει από την ΚΜΕ και να δρομολογήσει ένα άλλο νήμα για να

τρέξει.

Άσκηση αυτοαξιολόγησης 7.11

Ποια είναι τα πλεονεκτήματα/μειονεκτήματα της δρομολόγησης νημάτων χωρίς προεκτόπιση;

Άσκηση αυτοαξιολόγησης 7.12

Ποιο είδος δρομολόγησης μπορεί να αποτρέψει την εμφάνιση συνθηκών ανταγωνισμού; Ποιοι

παράγοντες επηρεάζουν την απόφαση για το εάν ένα νήμα θα πρέπει να δρομολογηθεί χωρίς

προεκτόπιση;

Υλοποίηση νημάτων (Threads implementation)

Η υλοποίηση των νημάτων γίνεται, είτε σε επίπεδο πυρήνα (kernel level), είτε σε επίπεδο χρήστη (user

level). Στην πρώτη περίπτωση ο πυρήνας παρέχει εγγενή υποστήριξη για δημιουργία πολυνηματικών

διεργασιών και δρομολόγηση μεμονωμένων νημάτων (π.χ., Win NT, Solaris, Mach, Chorus). Στην

δεύτερη περίπτωση τα νήματα υλοποιούνται σε μια βιβλιοθήκη (π.χ., pthreads, ή σε μια γλώσσα όπως

η Java) που θα πρέπει να συνδεθεί με τις εφαρμογές. Η βιβλιοθήκη νημάτων τρέχει σε κατάσταση

χρήστη (user mode) και διαχειρίζεται τη δρομολόγηση των νημάτων. Ο πυρήνας τότε δεν έχει γνώση

των νημάτων επιπέδου χρήστη και ως εκ τούτου δεν μπορεί να τα δρομολογήσει ανεξάρτητα

(δρομολογεί διεργασίες).

Τα μειονεκτήματα των νημάτων επιπέδου χρήστη είναι:

• τα νήματα δεν μπορούν να εκμεταλλευτούν ένα πολυεπεξεργαστικό σύστημα,

• εάν ένα νήμα μπλοκαριστεί εξαιτίας ενός σφάλματος σελίδας (page fault), η διεργασία

μπλοκάρεται, και όλα τα νήματα στην ίδια διεργασία επίσης μπλοκάρονται,

• τα νήματα σε διαφορετικές διεργασίες δεν μπορούν να δρομολογηθούν σε ένα κοινό

περιβάλλον.

Τα πλεονεκτήματα των νημάτων επιπέδου χρήστη είναι:

• η διαχείρισή τους κοστίζει λιγότερο από τα νήματα επιπέδου πυρήνα,

• ο χρονοπρογραμματισμός τους μπορεί να προσαρμοστεί στις ανάγκες των εφαρμογών,

• μπορούν να υποστηριχθούν περισσότερα νήματα επιπέδου χρήστη.

Είναι δυνατό να έχουμε έναν υβριδικό δρομολογητή (hybrid scheduler), αλλά η προσέγγιση γίνεται

αρκετά πιο πολύπλοκη (π.χ. Mach, Solaris 2, SPIN, FastThreads).

Άσκηση αυτοαξιολόγησης 7.13

Page 122: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

122

Ισχύει ότι η εναλλαγή μεταξύ δύο νημάτων σε επίπεδο πυρήνα είναι γρηγορότερη από την εναλλαγή

δυο νημάτων σε επίπεδο χρήστη; Εξηγήστε.

Άσκηση αυτοαξιολόγησης 7.14

Αναφέρετε τρεις λόγους για τους οποίους θα προτιμούσατε νήματα αντί για διεργασίες για ένα

πρόβλημα που απαιτεί ταυτοχρονισμό (εκτέλεση πολλών εργασιών παράλληλα).

Άσκηση αυτοαξιολόγησης 7.15

Ποιες λειτουργίες διαχείρισης των threads, από πλευράς λειτουργικού συστήματος, έχουν την

μεγαλύτερη επιβάρυνση στην απόδοση των εφαρμογών;

Δραστηριότητα 7.6

Τα ενεργητικά αντίγραφα (active replication) ενός εξυπηρετητή απαιτούν την παράδοση μηνυμάτων με

ολική διάταξη (τα μηνύματα να φθάνουν με την σωστή σειρά στον κάθε εξυπηρετητή), έτσι ώστε να

μην δημιουργούνται προβλήματα συγχρονισμού στην επεξεργασία των δεδομένων. Είναι η ολική

διάταξη μηνυμάτων αρκετή για να μην υπάρχουν συνθήκες ανταγωνισμού σε πολύ-νηματικά ενεργά

αντίγραφα εξυπηρετητή; Εξηγήστε.

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

μηχανισμού επίκλησης (invocation) που μπορεί να εξειδικευτεί ως κλήση απομακρυσμένης μεθόδου,

κλήση απομακρυσμένης διαδικασίας ή ειδοποίηση συμβάντος.

Η υποστήριξη του ΛΣ σε θέματα επικοινωνίας ανιχνεύεται με την εξέταση των παρακάτω ερωτημάτων:

• Ποιες πρωτογενείς υπηρεσίες επικοινωνίας παρέχει;

• Ποια πρωτόκολλα υποστηρίζει και κατά πόσο η υλοποίηση της επικοινωνίας είναι ανοικτή;

• Ποια μέτρα λαμβάνονται για να καταστήσουν την επικοινωνία όσο το δυνατόν αποδοτικότερη;

• Ποια υποστήριξη παρέχεται για την αντιμετώπιση καταστάσεων υψηλού λανθάνοντα χρόνου

(high latency) και αποσύνδεσης δικτύου;

Στην πράξη, το ΕΛ, και όχι ο πυρήνας του ΛΣ, παρέχει τις περισσότερες υψηλού επιπέδου υπηρεσίες

επικοινωνίας που συναντάμε στα συστήματα σήμερα, συμπεριλαμβανομένων των υπηρεσιών

RPC/RMI, ειδοποιήσεις συμβάντων και λειτουργίες ομαδικής επικοινωνίας.

Οι κατασκευαστές συστημάτων συνήθως υλοποιούν τις υπηρεσίες επικοινωνίας του ΕΛ πάνω από τις

υποδοχές (sockets) του ΛΣ. Οι υποδοχές δίνουν πρόσβαση στο τυποποιημένο πρωτόκολλο Διαδικτύου

(TCP/UDP sockets). Οι κύριοι λόγοι για την χρήση των sockets είναι η φορητότητα (portability) και η

διαλειτουργικότητα (interoperability).

Τα πρωτόκολλα ενός ΛΣ δικτύου οργανώνονται συνήθως σε μια ιεραρχία στρωμάτων (δείτε το

Κεφάλαιο 3). Πολλά ΛΣ επιτρέπουν την στατική ενσωμάτωση νέων στρωμάτων, για παράδειγμα τη

Page 123: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

123

συμπερίληψη ενός στρώματος IrDA ως μόνιμου εγκατεστημένου οδηγού πρωτοκόλλου. Αντίθετα, η

δυναμική σύνθεση πρωτοκόλλου (dynamic protocol composition) είναι μια τεχνική σύμφωνα με την

οποία μια ιεραρχία πρωτοκόλλων μπορεί να συναρμολογηθεί δυναμικά για να καλύψει τις απαιτήσεις

μιας συγκεκριμένης εφαρμογής, και να χρησιμοποιήσει οποιαδήποτε φυσικά στρώματα είναι

διαθέσιμα λαμβάνοντας υπόψη το τρέχον πλαίσιο συνδεσιμότητας. Για παράδειγμα, ένας

Φυλλομετρητής Ιστού που τρέχει σε ένα notebook πρέπει να είναι σε θέση να εκμεταλλευτεί μια

ασύρματη σύνδεση ευρείας περιοχής, όταν ο χρήστης είναι στο δρόμο, και αργότερα μια γρηγορότερη

σύνδεση Ethernet ή IEEE 802.11 όταν είναι στο γραφείο του.

5.1 Απόδοση μηχανισμού επίκλησης Η απόδοση του γενικού μηχανισμού επίκλησης είναι ένας κρίσιμος παράγοντας στο σχεδιασμό

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

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

εξηγείται πως για τους χρόνους επίκλησης, οι επιβαρύνσεις που οφείλονται στο λογισμικό συχνά

υπερισχύουν των επιβαρύνσεων που οφείλονται στο δίκτυο. Η κατάσταση αυτή διαφοροποιείται στο

Διαδίκτυο.

Η διάκριση των μηχανισμών επίκλησης ως προς το ζήτημα της απόδοσης, εξαρτάται από

χαρακτηριστικά όπως εάν ο μηχανισμός είναι σύγχρονος ή ασύγχρονος, εάν περιλαμβάνει μετάβαση

περιοχής (δηλαδή εάν αλλάζει χώρο διευθύνσεων), εάν περιλαμβάνει την επικοινωνία διαμέσου ενός

δικτύου και εάν περιλαμβάνει το χρονοπρογραμματισμό και εναλλαγή νημάτων.

Επίκληση πάνω από δίκτυο

Η μέτρηση του λανθάνοντα χρόνου (latency) είναι σημαντική για την αξιολόγηση της επίδοσης των

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

κενού (null) RPC/RMI (RPC χωρίς παραμέτρους που εκτελεί μια κενή διαδικασία και δεν επιστρέφει

καμιά τιμή). Για παράδειγμα, τυπικοί χρόνοι που έχουν μετρηθεί για κενά RPC είναι της τάξης του

δεκάτου του millisecond (για συμβατικές κλήσεις διαδικασιών οι αντίστοιχοι χρόνοι είναι της τάξης του

microsecond). O χρόνος που καταναλώνεται στο δίκτυο (μεταφορά περίπου 100 bytes σε δίκτυο 100

megabits/sec) είναι της τάξης του 0.01 millisecond. Είναι προφανές ότι μεγάλο τμήμα του

παρατηρούμενου latency (η συνολική καθυστέρηση της RPC κλήσης που αντιλαμβάνεται η διεργασία

πελάτη) πρέπει να αποδοθεί σε ενέργειες του ΛΣ και του ΕΛ (RPC κώδικας) και όχι σε χρόνο

επικοινωνίας.

Η καθυστέρηση ενός τυπικού RPC είναι σχεδόν ανάλογη προς το μέγεθος των δεδομένων που

μεταφέρονται (π.χ. ως αποτέλεσμα της κλήσης). Αυτό ισχύει έως ότου το μέγεθος των δεδομένων προς

μεταφορά φθάσει σε ένα μέγεθος κατώφλι που είναι περίπου το μέγεθος πακέτου του δικτύου. Πέραν

του ορίου αυτού, τουλάχιστον ένα πρόσθετο πακέτο πρέπει να σταλεί, για να μεταφερθούν τα

υπόλοιπα δεδομένα. Η RPC ρυθμοαπόδοση (ή εύρος ζώνης) είναι επίσης ένα μέτρο που εξετάζεται

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

μεταφοράς δεδομένων μεταξύ των υπολογιστών σε ένα απλό RPC.

Page 124: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

124

Εκτός από το χρόνο μετάδοσης δικτύου (network transmission time) η καθυστέρηση μιας

απομακρυσμένης επίκλησης επηρεάζεται από τις παρακάτω εργασίες:

• μορφοποίηση αποστολής (marshalling) και μορφοποίηση παραλαβής (unmarshalling)

δεδομένων στο πλαίσιο της εξωτερικής αναπαράστασης δεδομένων

• αντιγραφή δεδομένων: μεταξύ του χώρου διευθύνσεων του πελάτη/εξυπηρετητή και των

απομονωτών του πυρήνα (kernel buffers), από επίπεδο σε επίπεδο στην ιεραρχία

πρωτοκόλλων (π.χ. RPC/UDP/IP/Ethernet) και μεταξύ κάρτας δικτύου και απομονωτών πυρήνα

• αρχικοποίηση πακέτων: αρχικοποίηση των επικεφαλίδων (headers) του πρωτοκόλλου,

υπολογισμό checksum, κ.α.

• δρομολόγηση νημάτων και εναλλαγή πλαισίου (thread scheduling and context switching):

i. πολλές κλήσεις συστήματος (δηλαδή, εναλλαγή πλαισίων) συμβαίνουν κατά την

διάρκεια ενός RPC, καθώς τα RPC στελέχη (stubs) καλούν τις λειτουργίες επικοινωνίας

του πυρήνα

ii. γίνεται δρομολόγηση ενός η περισσότερων νημάτων στον εξυπηρετητή

iii. εάν το ΛΣ χρησιμοποιεί έναν ξεχωριστό διαχειριστή δικτύου, τότε κάθε λειτουργία Send

απαιτεί μια εναλλαγή πλαισίου με ένα από τα νήματα του διαχειριστή

• αναμονή για επιβεβαιώσεις (acknowledgements)

Ο προσεκτικός σχεδιασμός του ΛΣ μπορεί να συμβάλει στην αντιμετώπιση του κόστους αυτών των

εργασιών. Το ΛΣ μπορεί επίσης να μειώσει τις επιβαρύνσεις αντιγραφής δεδομένων από μνήμη σε

μνήμη με χρήση λειτουργιών διαμοιρασμού μνήμης.

Δραστηριότητα 7.7

Ο χρόνος μετάδοσης στο δίκτυο αντιστοιχεί στο 20% ενός μηδενικού RPC και στο 80% ενός RPC που

μεταδίδει 1024 bytes (μέγεθος μικρότερο ενός πακέτου δικτύου). Σε ποιο ποσοστό οι χρόνοι αυτών των

δύο RPC θα βελτιωθούν εάν το δίκτυο αναβαθμιστεί από 10 Mbps σε 100 Mbps;

Lightweight RPC

Το κόστος μιας RPC που διεκπεραιώνεται μέσα στον ίδιο υπολογιστή αποκτά όλο και μεγαλύτερη

σημασία ως παράμετρος απόδοσης συστημάτων. Αυτή η κατάσταση δημιουργεί την ανάγκη για

βελτιστοποίηση αυτής της τοπικής RPC εκτέλεσης. Ερευνητές ανέπτυξαν έναν αποδοτικότερο

μηχανισμό επίκλησης για την περίπτωση επικοινωνίας δύο διεργασιών στην ίδια μηχανή. Ο

μηχανισμός αυτός ονομάστηκε Lightweight RPC (LRPC). Ο σχεδιασμός του LRPC βασίζεται σε

βελτιστοποιήσεις των εργασιών αντιγραφής δεδομένων και χρονοπρογραμματισμού νημάτων. Το LRPC

χρησιμοποιεί διαμοιραζόμενη μνήμη για την διαδιεργασιακή επικοινωνία. Στο LRPC, οι παράμετροι της

κλήσης αντιγράφονται μια φορά (σε μια κοινή στοίβα). Σε αντίθεση, στο RPC, οι παράμετροι

αντιγράφονται τέσσερις φορές.

Το LRPC είναι αποδοτικότερο από το RPC για την τοπική περίπτωση, εφ' όσον όμως πραγματοποιούνται

αρκετές τοπικές επικλήσεις για να αντισταθμίσουν τις επιβαρύνσεις διαχείρισης μνήμης. Μετρήσεις

Page 125: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

125

έδειξαν ότι οι καθυστερήσεις με LRPC είναι μικρότερες κατά τρεις φορές σε σχέση με RPCs που

εκτελούνται τοπικά.

Άσκηση αυτοαξιολόγησης 7.16

Ποιοι είναι οι κύριοι παράγοντες που καθορίζουν το χρονικό κόστος του μηχανισμού επίκλησης;

Άσκηση αυτοαξιολόγησης 7.17

Γιατί η RPC ρυθμαπόδοση παραμένει χαμηλή για μεταφορά μικρών ποσοτήτων δεδομένων και

αυξάνεται όταν η ποσότητα των δεδομένων αυξάνεται;

5.2 Ασύγχρονη λειτουργία (Asynchronous operation) Μια διαδεδομένη τεχνική για να αντιμετωπισθεί το υψηλό latency που συναντάμε στην περίπτωση του

Διαδικτύου είναι ο ασύγχρονος τρόπος επικοινωνίας, ο οποίος προκύπτει σε δύο μοντέλα

προγραμματισμού: ταυτόχρονες επικλήσεις (concurrent invocations) και ασύγχρονες επικλήσεις

(asynchronous invocations).

Στο μοντέλο ταυτόχρονων επικλήσεων το ΕΛ υποστηρίζει μόνον blocking κλήσεις, αλλά η εφαρμογή

δημιουργεί πολλά νήματα τα οποία εκτελούν blocking κλήσεις ταυτόχρονα. Ασύγχρονη επίκληση είναι

αυτή που εκτελείται ασύγχρονα σε σχέση με αυτόν που την καλεί. Δηλαδή υλοποιείται με μια non-

blocking κλήση, η οποία επιστρέφει μόλις δημιουργηθεί το μήνυμα αιτήματος επίκλησης και είναι

έτοιμο για την αποστολή.

Η επίμονη ασύγχρονη επίκληση (persistent asynchronous invocation) προσπαθεί επ’ αόριστο να

εκτελέσει την επίκληση, έως ότου γίνει γνωστό είτε ότι έχει πετύχει, είτε ότι έχει αποτύχει, ή έως ότου

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

το είναι Queued RPC (QRPC) στο Rover toolkit για κινητή πρόσβαση πληροφοριών.

Άσκηση αυτοαξιολόγησης 7.18

Τι είναι η ασύγχρονη επίκληση; Ποιες σημαντικές αλλαγές εμφανίζει η επίμονη ασύγχρονη επίκληση σε

σχέση με έναν τυπικό μηχανισμό επίκλησης;

6. Αρχιτεκτονική ΛΣ Ο διαχωρισμός των σταθερών μηχανισμών διαχείρισης πόρων από τις πολιτικές διαχείρισης πόρων,

που ποικίλλουν από εφαρμογή σε εφαρμογή και από υπηρεσία σε υπηρεσία, αποτελεί πάντα μια

βασική αρχή στον σχεδιασμό των ΛΣ. Για παράδειγμα, ένα ιδανικό σύστημα δρομολόγησης (scheduling

system) διεργασιών/νημάτων θα παρείχε τους μηχανισμούς που επιτρέπουν σε μια εφαρμογή

πολυμέσων όπως μια βίντεο-σύσκεψη (video conferencing) να ικανοποιήσει τις απαιτήσεις της για

απόκριση πραγματικού χρόνου, ενώ συνυπάρχει με μια εφαρμογή χωρίς παρόμοιες απαιτήσεις, όπως

ένας φυλλομετρητής Ιστού.

Ιδανικά, ο πυρήνας θα παρέχει μόνο τους πιο βασικούς μηχανισμούς βάσει των οποίων εκτελούνται οι

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

Page 126: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

126

φορτώνονται δυναμικά όταν απαιτείται, για να εφαρμόσουν τις απαραίτητες πολιτικές διαχείρισης

πόρων για τις τρέχουσες εφαρμογές.

Συναντάμε δύο βασικές προσεγγίσεις σχεδιασμού πυρήνων: η προσέγγιση του μονολιθικού πυρήνα

(monolithic) και η προσέγγιση του μικροπυρήνα (microkernel) . Οι προσεγγίσεις αυτές διαφέρουν

πρωτίστως ως προς την απόφαση του ποιες λειτουργίες ανήκουν στον πυρήνα και ποιες μπορεί να

μεταφερθούν σε διεργασίες εξυπηρετητών που δύνανται να φορτωθούν δυναμικά για να τρέξουν

πάνω από τον πυρήνα.

Ένας μονολιθικός πυρήνας, όπως είναι ο πυρήνας του UNIX και των Windows, έχει τα ακόλουθα

χαρακτηριστικά:

• Είναι μαζικός (massive) – παρέχει όλες τις βασικές λειτουργίες ενός ΛΣ και καταλαμβάνει

μεγάλο χώρο στην μνήμη

• Είναι αδιαφοροποίητος (undifferentiated) – o κώδικάς του δεν είναι οργανωμένος σε τμήματα

• Είναι μη-διαχείρισιμος (intractable) – η προσαρμογή του σε νέες συνθήκες είναι δύσκολη

Αντίθετα, ένας μικροπυρήνας (π.χ. Mach, Chorus) παρέχει μόνον τις πιο βασικές αφαιρέσεις, όπως

χώρους διευθύνσεων, νήματα και τοπική διαδιεργασιακή επικοινωνία. Όλες οι άλλες υπηρεσίες

συστήματος παρέχονται από εξυπηρετητές που φορτώνονται δυναμικά σε εκείνους τους υπολογιστές

του ΚΣ που τους χρειάζονται.

Άσκηση αυτοαξιολόγησης 7.19

Ποιοι είναι οι βασικοί στόχοι των σχεδιαστών μικροπυρήνων;

Άσκηση αυτοαξιολόγησης 7.20

Ποια είναι τα πλεονεκτήματα/μειονεκτήματα των ΛΣ που βασίζονται σε μικροπυρήνα και ποια των

μονολιθικών;

7. Eικονικοποίηση στο επίπεδο ΛΣ Η εικονικοποίηση είναι ή νέα καινοτομία στο σχεδιασμό ΛΣ και τείνει να αντικαταστήσει τις

προσεγγίσεις μικροπυρήνα.

7.1 Εικονικοποίηση συστήματος Στην εικονικοποίηση συστήματος, ένα λογισμικό ελέγχου που ονομάζεται επόπτης εικονικής μηχανής

(«virtual machine monitor» ή hypervisor) και εκτελείται σε πραγματικό υλικό προσομοιώνει ένα

υπολογιστικό περιβάλλον, μία «εικονική μηχανή», επάνω από το οποίο μπορεί να τρέξει ένας πλήρης

πυρήνας ΛΣ, απομονωμένος από το υπόλοιπο σύστημα.

Υπάρχουν διάφορα είδη εικονικοποίησης, όπως η πλήρης εικονικοποίηση (full virtualization) και η

παραεικονικοποίηση (paravirtualization). Στην πλήρη εικονικοποίηση η εικονική μηχανή προσομοιώνει

επαρκές τμήμα του πραγματικού υποκείμενου υλικού ώστε να επιτρέπει την εκτέλεση επάνω της ενός

μη τροποποιημένου, φιλοξενούμενου ΛΣ σχεδιασμένου για τον ίδιο τύπο επεξεργαστή με την

Page 127: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

127

πραγματική CPU (π.χ. VirtualPC, VMWare, Win4Lin κλπ). Στην πλήρη εικονικοποίηση δε χρειάζεται

εξομοίωση του συνόλου εντολών του επεξεργαστή και μάλιστα ένα τμήμα του κώδικα του

φιλοξενούμενου ΛΣ μπορεί να εκτελείται απευθείας από το υλικό, χωρίς μεσολάβηση του επόπτη. Η

εμπειρία δείχνει όμως ότι η πλήρης εικονικοποίηση μπορεί να είναι δύσκολο να επιτευχθεί με

ικανοποιητικές επιδόσεις σε αρκετές αρχιτεκτονικές υπολογιστών (π.χ., οικογένεια x86 επεξεργαστών).

Η παραεικονικοποίηση μπορεί να βοηθήσει στην αντιμετώπιση αυτού του προβλήματος. Εδώ, η

εικονική μηχανή δεν προσομοιώνει επακριβώς το υλικό αλλά παρέχει στις εικονικές μηχανές μία

προγραμματιστική διασύνδεση, ώστε να επιτρέπει την εκτέλεση επάνω της ενός τροποποιημένου,

φιλοξενούμενου ΛΣ σχεδιασμένου για εκτέλεση από τον συγκεκριμένο επόπτη (π.χ. Denali, Xen).

Μία άλλου είδους κατηγοριοποίηση των εποπτών εικονικοποίησης είναι σε αυτούς που εκτελούνται ως

εφαρμογές πάνω από ένα υποκείμενο ΛΣ-ξενιστή (π.χ. VirtualPC, VMWare κλπ) και σε αυτούς που

λειτουργούν οι ίδιοι ως ΛΣ και άρα εκτελούνται απευθείας επάνω από το υποκείμενο υλικό (π.χ. Xen).

Άσκηση αυτοαξιολόγησης 7.21

Να περιγράψετε τέσσερις περιπτώσεις χρήσης της τεχνολογίας εικονικοποίησης.

Άσκηση αυτοαξιολόγησης 7.22

Πως σχετίζεται η εικονικοποίηση με το παράδειγμα του υπολογιστικού νέφους (cloud computing);

7.2 Μελέτη περίπτωσης: Η προσέγγιση Xen στην εικονικοποίηση συστήματος

Το Xen αποτελεί ένα κορυφαίο παράδειγμα εικονικοποίησης συστήματος που αναπτύχθηκε στο

πλαίσιο ενός ερευνητικού προγράμματος (Xenoserver project) στο Computer Laboratory του

Πανεπιστημίου του Cambridge και σήμερα διατίθεται από μια κοινότητα ανοικτού λογισμικού.

Ο στόχος του προγράμματος XenoServer είναι να δημιουργήσει μια δημόσια υποδομή για

κατανεμημένο υπολογισμό ευρείας κλίμακας. Υπό αυτήν τη μορφή, το Xen είναι ένα από τα πρώτα

παραδείγματα υπολογιστικού νέφους (cloud computing) με έμφαση στην υποδομή ως υπηρεσία.

Σύμφωνα με το όραμα του XenoServer, ο κόσμος αποτελείται από XenoServers που είναι σε θέση να

εκτελούν κώδικα για λογαριασμό πελατών που χρεώνονται για τους πόρους που χρησιμοποιούν. Τα

δύο κύρια αποτελέσματα του προγράμματος είναι ο επόπτης εικονικής μηχανής Xen και η ανοικτή

πλατφόρμα XenoServer.

Άσκηση αυτοαξιολόγησης 7.23

Ποιος είναι ο βασικός στόχος του επόπτη εικονικής μηχανής Xen;

Άσκηση αυτοαξιολόγησης 7.24

Για ποιους λόγους ο σχεδιασμός του Xen hypervisor είναι μινιμαλιστικός;

Άσκηση αυτοαξιολόγησης 7.25

Page 128: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

128

Ποια είναι η διαφορά μεταξύ των εικονικών μηχανών τύπου domainU και domain0 στην Xen

αρχιτεκτονική;

Άσκηση αυτοαξιολόγησης 7.26

Ποια είναι η αναγκαία συνθήκη σε επίπεδο αρχιτεκτονικής επεξεργαστή κατά Popek και Goldberg για

να είναι εφικτή η εικονικοποίηση συστήματος; Τι ισχύει στην περίπτωση της οικογένειας επεξεργαστών

x86;

Άσκηση αυτοαξιολόγησης 7.27

Ποιο είναι το αντιστάθμισμα (trade-off) μεταξύ της επιλογής της πλήρους εικονικοποίησης και της

παραεικονικοποίησης για την διαχείριση των ευαίσθητων εντολών (sensitive instructions) ενός

επεξεργαστή; Ποια κατεύθυνση ακολουθεί το Xen;

Άσκηση αυτοαξιολόγησης 7.28

Ποια είναι τα διαφορετικά επίπεδα δρομολόγησης διεργασιών/νημάτων/εικονικών CPU στο

περιβάλλον εικονικοποίησης του Xen;

Άσκηση αυτοαξιολόγησης 7.29

Περιγράψτε τις δύο πολιτικές δρομολόγησης που ακολουθεί εσχάτως το Xen. Ποιες πολιτικές

αντικαταστάθηκαν;

Άσκηση αυτοαξιολόγησης 7.30

Εξηγήστε την έννοια ψευδο-φυσική μνήμη (pseudo-physical memory) στην διαχείριση εικονικής μνήμης

του Xen. Ποιος είναι υπεύθυνος για την διαχείρισή της;

Άσκηση αυτοαξιολόγησης 7.31

Εξηγήστε την έννοια σπαστός οδηγός συσκευής (split device driver) στην διαχείριση συσκευών του Xen.

Άσκηση αυτοαξιολόγησης 7.32

Ποιο μηχανισμό επικοινωνίας μεταξύ των τμημάτων της σπαστής δομής των οδηγών συσκευών

χρησιμοποιεί το Xen;

Άσκηση αυτοαξιολόγησης 7.33

Περιγράψτε τα κύρια στάδια μεταφοράς (porting) ενός φιλοξενούμενου λειτουργικού συστήματος

(guest operating system) στο περιβάλλον Xen;

8. Επανάληψη Στο κεφάλαιο αυτό εξετάστηκαν λειτουργίες του στρώματος ΛΣ. Περιγράφηκαν μηχανισμοί χαμηλού

επιπέδου για την προστασία των πόρων, και εξετάστηκαν βασικές αφαιρετικές έννοιες όπως, οι

Page 129: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

129

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

ταυτοχρονισμός, η τοπική διαχείριση πόρων και προστασία και ο χρονοπρογραμματισμός. Εξετάστηκε

επίσης η επικοινωνία ως τμήμα των μηχανισμών επίκλησης. Συζητήθηκαν διαφορετικοί τύποι

αρχιτεκτονικών λειτουργικών συστημάτων, όπως τα μονολιθικά συστήματα και τα συστήματα

μικροπυρήνα. Τέλος, εξετάστηκε ο ρόλος της εικονικοποίησης στο σχεδιασμό των λειτουργικών

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

Page 130: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

130

ΚΕΦΑΛΑΙΟ 8 : Κατανεμημένα

Αντικείμενα και Ψηφίδες Λογισμικού

Σκοπός Ο σκοπός του κεφαλαίου είναι να εξετάσει ολοκληρωμένες λύσεις συστημάτων ενδιάμεσου λογισμικού

(ΕΛ) και ειδικότερα τεχνολογίες ΕΛ που ακολουθούν το αντικειμενοστρεφές (object oriented) μοντέλο

και το ψηφιδο-κεντρικό (component-based) μοντέλο.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Εξηγήστε την έννοια του κατανεμημένου αντικειμένου

• Εξηγήσετε την έννοια της ψηφίδας λογισμικού

• Περιγράψετε τέσσερις περιορισμούς των αντικειμενοστρεφών τεχνολογιών ΕΛ

• Περιγράψετε τρία πλεονεκτήματα των ψηφιδο-κεντρικών τεχνολογιών ΕΛ

• Αναφέρετε παραδείγματα υλοποίησης αντικειμενοστρεφών τεχνολογιών ΕΛ

• Εξηγήσετε τι είναι το μοντέλο του εξυπηρετητή εφαρμογών και να αναφέρετε επτά

παραδείγματα τεχνολογιών αυτής της κατηγορίας

• Περιγράψετε τα βασικά συστατικά του περιβάλλοντος CORBA

• Κατανοήσετε την αρχιτεκτονική της CORBA και τα κύρια στοιχεία της

• Περιγράψετε εννέα γενικές υπηρεσίες της CORBA

• Χρησιμοποιήσετε την CORBA για την υλοποίηση κατανεμημένων εφαρμογών

• Εξηγήσετε την έννοια του συμβολαίου σε μια ψηφίδα

• Εξηγήσετε την έννοια του υποδοχέα στην ψηφιδο-κεντρική προσέγγιση

• Περιγράψετε τα βασικά χαρακτηριστικά γνωρίσματα της τεχνολογίας Enterprise JavaBeans

• Αναφέρετε επτά ρόλους στην προδιαγραφή του EJB

• Αναφέρετε δύο τύπους EJB συστατικών

• Περιγράψετε τα βασικά χαρακτηριστικά γνωρίσματα του ψηφιδο-κεντρικού μοντέλου Fractal

Έννοιες κλειδιά CORBA IDL, CORBA ORB, αντικείμενο CORBA, CORBA αρχιτεκτονική, Ανάκλαση (Reflection),

Απαιτούμενες διασυνδέσεις (Required interfaces), Αρχιτεκτονική λογισμικού (Software architecture),

Ενδοσκόπηση (Introspection), Εξυπηρετητής εφαρμογών (Application server), Κατανεμημένο

αντικείμενο (Distributed object), Κόκκος (bean), Κόκκος συνόδου (Session bean), Παρεχόμενες

Page 131: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

131

διασυνδέσεις (Provided interfaces), Συμβόλαιο (Contract), Υποδοχέας (Container), Ψηφίδα

(Component), Ψηφιδο-κεντρική προσέγγιση (Component-based approach).

1. Εισαγωγικές παρατηρήσεις Στο κεφάλαιο αυτό εξετάζουμε τεχνολογίες αντικειμενοστρεφών συστημάτων ΕΛ. Τα κατανεμημένα

αντικείμενα είναι η μεταφορά της σημασιολογίας των αντικειμένων μιας γλώσσας προγραμματισμού

σε κατανεμημένο περιβάλλον επεξεργασίας. Οι ιδιότητες των αντικειμενοστρεφών μοντέλων

προγραμματισμού (ενθυλάκωση, αφαιρετικότητα, επεκτασιμότητα) βρίσκουν εφαρμογή και στην

περίπτωση των κατανεμημένων αντικειμένων τα οποία συνιστούν έναν ιδιαίτερα αποδοτικό μηχανισμό

δόμησης των κατανεμημένων συστημάτων. Αφού δούμε τη σημασιολογία του κατανεμημένου

αντικειμένου και γενικές αρχές υλοποίησης (Ενότητα 2) εξετάζουμε ως μελέτη περίπτωσης μια γνωστή

τεχνολογία αυτής της κατηγορίας, την CORBA της OMG (Ενότητα 3). Στο πλαίσιο της CORBA θα δούμε

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

Η ανάγκη να ξεπεραστούν περιορισμοί των αντικειμενοστρεφών τεχνολογιών ΕΛ, οδήγησε στην

ανάπτυξη τεχνολογιών βασιζόμενες σε ψηφίδες λογισμικού (component-based software). Οι ψηφίδες

λογισμικού ακολουθούν την αντικειμενοστρεφή προσέγγιση. Μια ψηφίδα λογισμικού ορίζεται ως μία

μονάδα σύνθεσης με ρητά καθορισμένες διεπαφές και σαφές πλαίσιο εξαρτήσεων. H ψηφιδο-κεντρική

προσέγγιση ανάπτυξης λογισμικού υποστηρίζει πολύ καλά την ανάπτυξη κατανεμημένων

πληροφοριακών συστημάτων που ακολουθούν την αρχιτεκτονική 3 επιπέδων (3-tier architecture).

Τα πλεονεκτήματα που προκύπτουν από την υιοθέτηση μιας ψηφιδο-κεντρικής αρχιτεκτονικής

συνοψίζονται ως εξής:

• Οι προγραμματιστές των εφαρμογών μπορούν να επικεντρωθούν στο σχεδιασμό της εφαρμογής

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

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

κατανεμημένη εκτέλεση της εφαρμογής.

• Βελτιώνεται η μεταφερσιμότητα (portability) και η διαλειτουργικότητα (interoperability) με τη

χρήση τυποποιημένων διεπαφών της τεχνολογίας ΕΛ που επιλέγεται. Έτσι, μια ψηφίδα λογισμικού

μπορεί να επαναχρησιμοποιηθεί σε οποιοδήποτε σύστημα υποστηρίζει τη συγκεκριμένη

τεχνολογία ΕΛ.

• Βελτιώνεται η επεκτασιμότητα (scalability) του συστήματος καθώς ο διαχωρισμός των επιπέδων

εφαρμογής και διαχείρισης πόρων (δεδομένων) επιτρέπει τον ανεξάρτητο χειρισμό τους, όπως για

παράδειγμα την αναβάθμιση κάποιων συστατικών λογισμικού για να αντιμετωπιστεί μεγαλύτερος

αριθμός χρηστών ή αιτήσεων προς διεκπεραίωση.

Η Ενότητα 4 εισάγει τα κύρια χαρακτηριστικά της ψηφιδο-κεντρικής προσέγγισης και η Ενότητα 5

παρουσιάζει δύο μελέτες περίπτωσης : την Enterprise JavaBeans, μια περίπτωση εξυπηρετητή

εφαρμογών (application server) και το Fractal, μια περίπτωση ενός lightweight ψηφιδο-κεντρικού

μοντέλου που μπορεί να χρησιμοποιηθεί για την ανάπτυξη πιο σύνθετων συστημάτων ΕΛ.

Page 132: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

132

2. Κατανεμημένα αντικείμενα Τα κατανεμημένα αντικείμενα είναι η μεταφορά της σημασιολογίας των αντικειμένων μιας γλώσσας

προγραμματισμού σε κατανεμημένο περιβάλλον επεξεργασίας. Οι ιδιότητες των αντικειμενοστρεφών

μοντέλων προγραμματισμού βρίσκουν εφαρμογή και στην περίπτωση των κατανεμημένων

αντικειμένων τα οποία συνιστούν έναν ιδιαίτερα αποδοτικό μηχανισμό δόμησης των κατανεμημένων

συστημάτων.

Η ετερογένεια είναι ένα κυρίαρχο χαρακτηριστικό γνώρισμα των κατανεμημένων συστημάτων. Η

κελυφοποίηση είναι ένα ισχυρό εργαλείο σε ένα ετερογενές περιβάλλον, επιτρέποντας στον χρήστη

ενός αντικειμένου να ξέρει μόνο μια διεπαφή για αυτό το αντικείμενο. Το ίδιο αντικείμενο μπορεί να

έχει διαφορετικές υλοποιήσεις σε διαφορετικές τοποθεσίες.

Η δυναμική δημιουργία στιγμιότυπων ενός αντικειμένου επιτρέπει τη δημιουργία διαφορετικών

αντικειμένων με την ίδια διεπαφή, ενδεχομένως σε διαφορετικές απομακρυσμένες τοποθεσίες. Το

ενδιάμεσο λογισμικό (ΕΛ) θα πρέπει φυσικά να παρέχει έναν μηχανισμό για τη δημιουργία

απομακρυσμένων αντικειμένων.

Η κληρονομικότητα είναι ένας μηχανισμός για την επαναχρησιμοποίηση, δεδομένου ότι επιτρέπει τη

δημιουργία μιας νέας διεπαφής ως επέκταση μιας υπάρχουσας. Υπό αυτήν τη μορφή, είναι χρήσιμη για

τους κατασκευαστές κατανεμημένων εφαρμογών, οι οποίοι έρχονται αντιμέτωποι με ένα

μεταβαλλόμενο περιβάλλον και πρέπει να καθορίσουν νέες κλάσεις για να αντιμετωπίσουν τις νέες

απαιτήσεις. Προκειμένου να χρησιμοποιηθεί η κληρονομικότητα, μια γενική κλάση (βάση) σχεδιάζεται

αρχικά για να ενθυλακώσει ένα σύνολο χαρακτηριστικών γνωρισμάτων του αντικειμένου που είναι

κοινά για ένα ευρύ φάσμα αναμενόμενων καταστάσεων. Στη συνέχεια, συγκεκριμένες, πιο

εξειδικευμένες κλάσεις καθορίζονται με την επέκταση της κλάσης βάσης. Παραδείγματος χάριν, μια

διεπαφή για λήψη έγχρωμων εικόνων μπορεί να οριστεί ως μια επέκταση της διεπαφής για λήψη

(γενικά) εικόνων. Μια εφαρμογή που χρησιμοποιεί αντικείμενα για λήψη (γενικά) εικόνων αποδέχεται

επίσης τη λήψη έγχρωμων εικόνων, δεδομένου ότι αυτά τα αντικείμενα υλοποιούν την διεπαφή λήψης

εικόνων (αυτό είναι μια περίπτωση πολυμορφισμού).

Άσκηση αυτοαξιολόγησης 8.1

Ποιοι παράγοντες συνέδραμαν ώστε τα κατανεμημένα αντικείμενα να καθιερωθούν ως ένα

επιτυχημένο μοντέλο προγραμματισμού κατανεμημένων συστημάτων;

Άσκηση αυτοαξιολόγησης 8.2

O προγραμματισμός με κατανεμημένα αντικείμενα παρουσιάζει σημαντική διαφορετικότητα όσο και

πολυπλοκότητα σε σχέση με τον παραδοσιακό αντικειμενοστρεφή προγραμματισμό. Να διατυπώσετε

επιχειρήματα για να υποστηρίξετε την παραπάνω διατύπωση.

Page 133: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

133

3. Μελέτη περίπτωσης: CORBA H Common Object Request Broker Architecture - CORBA (Αρχιτεκτονική Μεσίτη Κοινών Αιτήσεων

Αντικειμένων) δεν είναι μια υλοποίηση λογισμικού ή ένα εκτελέσιμο προϊόν, αλλά μια πρότυπη

προδιαγραφή για διαφανή επικοινωνία μεταξύ κατανεμημένων αντικειμένων που αναπτύχθηκε από

τον οργανισμό Object Management Group (OMG).

Βασικά συστατικά του περιβάλλοντος CORBA είναι:

• η Γλώσσα Ορισμού Διεπαφών (Interface Definition Language – IDL) (περιγράφεται στην Ενότητα

3.1).

• μια αρχιτεκτονική αναφοράς, η Object Management Architecture - OMA (Αρχιτεκτονική Διαχείρισης

Αντικειμένων), κύριο συστατικό της οποίας είναι ο Object Request Broker - ORB (Μεσίτης Αιτήσεων

Αντικειμένων) για τον οποίο η CORBA προσδιορίζει τη λειτουργικότητά του, αλλά και για το πώς θα

πρέπει να υλοποιηθεί (περιγράφεται στην Ενότητα 3.2).

• μια εξωτερική αναπαράσταση δεδομένων που ονομάζεται CDR (περιγράφεται στην Ενότητα 3.1 του

Κεφαλαίου 4).

• ένα πρότυπο σχήμα για την περιγραφή των αναφορών απομακρυσμένων αντικειμένων

(περιγράφεται στην Ενότητα 3.3)

Η CORBA 2.0 έγινε δεκτή ως πρότυπο το 1994. Με την έκδοση αυτή έγινε εφικτή η επικοινωνία μεταξύ

ORB διαφορετικών κατασκευαστών. Αυτό έγινε εφικτό με τον ορισμό του πρωτοκόλλου Internet Inter-

ORB Protocol (IIOP) για δίκτυα που στηρίζονται στο πρωτόκολλο μεταφοράς TCP/IP.

Η CORBA είναι αρκετά αυστηρή όσον αφορά τον καθορισμό του μοντέλου αντικειμένων της και των

κανόνων επίκλησής τους. Πέρα από αυτό, η CORBA παρέχει μεγάλη ευελιξία στην ανάπτυξη

εφαρμογών που μπορεί να γίνει με ποικίλους τρόπους. Παραδείγματος χάριν, επιτρέπει τη δημιουργία

εφαρμογών χρησιμοποιώντας παραγμένο κώδικα (υπό μορφή stubs ή skeletons αντικειμένων). Η

παραγωγή βασίζεται στον ορισμό της διεπαφής του αντικειμένου και τη χρήση ενός μεταγλωττιστή

διεπαφών (ένα τέτοιο παράδειγμα εξετάζουμε στην Ενότητα 3.5) οδηγώντας σε εφαρμογές υψηλών

επιδόσεων. Εναλλακτικά, οι εφαρμογές είναι δυνατόν να χτιστούν με δυναμικές προσεγγίσεις που τις

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

εξαιρετικά ευέλικτες εφαρμογές.

Άσκηση αυτοαξιολόγησης 8.3

Ποια είναι τα κύρια συστατικά του περιβάλλοντος της CORBA;

Δραστηριότητα 8.1

Τι εννοούμε όταν λέμε ότι η CORBA είναι ανεξάρτητη από τη γλώσσα προγραμματισμού υλοποίησης;

Ποια είναι τα πλεονεκτήματα/μειονεκτήματα αυτής της προσέγγισης;

Δραστηριότητα 8.2

Page 134: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

134

Πόσο διαδεδομένη είναι σήμερα η χρήση της CORBA στην ανάπτυξη κατανεμημένων συστημάτων; Σε

ποιους τομείς χρησιμοποιείται περισσότερο; Τεκμηριώστε την απάντησή σας με αναζήτηση

πληροφοριών στο Διαδίκτυο.

3.1 CORBA RMI Η ανάπτυξη κατανεμημένων συστημάτων με CORBA RMI είναι πιο απαιτητική σε επίπεδο

προγραμματισμού από ότι η ανάπτυξη με JAVA RMI, καθώς στην πρώτη περίπτωση υποστηρίζεται η

δυνατότητα χρήσης πολλαπλών γλωσσών προγραμματισμού για την υλοποίηση του προγράμματος του

πελάτη/εξυπηρετητή.

Μοντέλο αντικειμένου της CORBA

Το μοντέλο αντικειμένου της CORBA είναι παρόμοιο με αυτό που περιγράφεται στην Ενότητα 4.1 του

Κεφαλαίου 5, με τη διαφορά ότι ένας πελάτης εδώ δεν είναι απαραιτήτως ένα αντικείμενο, αλλά ένα

οποιοδήποτε πρόγραμμα που στέλνει μηνύματα αιτήσεων στα απομακρυσμένα αντικείμενα και

λαμβάνει από αυτά τις απαντήσεις. Ο όρος αντικείμενο CORBA χρησιμοποιείται για να αναφερθεί στα

απομακρυσμένα αντικείμενα. Κατά συνέπεια, ένα αντικείμενο CORBA υλοποιεί μια IDL διασύνδεση,

έχει μια απομακρυσμένη αναφορά αντικειμένου και είναι σε θέση να αποκριθεί στις επικλήσεις των

μεθόδων που περιλαμβάνονται στην IDL διασύνδεσή του. Ένα αντικείμενο CORBA μπορεί να

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

Επομένως οι κλάσεις δεν μπορούν να προσδιοριστούν σε CORBA IDL, με συνέπεια τα στιγμιότυπα

κλάσεων να αποκλείονται ως ορίσματα των μηνυμάτων.

CORBA IDL

H IDL δεν είναι γλώσσα προγραμματισμού, αλλά μια προδιαγραφή που διευκολύνει τη

διαλειτουργικότητα διαχωρίζοντας τη διεπαφή από την υλοποίηση της. Χρησιμοποιείται για να

περιγράψει τις διεπαφές τις οποίες καλούν τα αντικείμενα πελατών και παρέχουν οι υλοποιήσεις των

αντικειμένων. Παρέχει ευκολίες για τον ορισμό modules, διεπαφών, τύπων, ιδιοτήτων και υπογραφών

μεθόδων. Έχει τους ίδιους λεκτικούς κανόνες με τη C++ με κάποιες πρόσθετες λέξεις κλειδιά όπως

interface, any, attribute, in, out, inout, readonly, raises και παρέχει επίσης ευκολίες

προεπεξεργασίας, ανάλογες της C++. Ο παρακάτω πίνακας δίνει τη σημασιολογία μερικών βασικών

στοιχείων της CORBA IDL.

Βασικά στοιχεία της CORBA IDL

CORBA IDL

στοιχείο Σημασιολογία

module Το module παρέχει έναν τρόπο ομαδοποίησης ενός συνόλου διεπαφών μίας

κλάσης.

interface

(διεπαφή)

Η διεπαφή είναι το συντακτικό μέρος της σύμβασης / του συμβολαίου (contract)

που παρέχει ο εξυπηρετητής του αντικειμένου στους πελάτες που το καλούν. Οι

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

Page 135: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

135

CORBA IDL

στοιχείο Σημασιολογία

τους, καλώντας μόνο εκείνες τις λειτουργίες που αποκαλύπτει / εκθέτει το

αντικείμενο μέσω της IDL διεπαφής του και μόνο με εκείνες τις παραμέτρους

(εισόδου και εξόδου) που περιλαμβάνονται στην κλήση. Μία διεπαφή η οποία

βασίζεται στην CORBA IDL μπορεί να προέλθει από μία άλλη ή περισσότερες

διεπαφές. Αυτό δηλώνει την υποστήριξη της IDL στην πολλαπλή κληρονομικότητα

των διεπαφών.

operation

(λειτουργία)

Μία λειτουργία (operation) μπορεί να ζητηθεί από έναν πελάτη. Μέσω της IDL

προσδιορίζονται οι παράμετροι της μεθόδου καθώς και τα αποτελέσματα που

επιστρέφονται. Μία παράμετρος χαρακτηρίζεται από μία κατάσταση η οποία

δηλώνει ότι είτε η τιμή της μπορεί να περάσει από τον πελάτη στο αντικείμενο

εξυπηρέτησης, οπότε και χαρακτηρίζεται in, είτε αντίστροφα, οπότε

χαρακτηρίζεται ως out, είτε μπορούν να συμβαίνουν και τα δύο παραπάνω

(συμβαίνει σπανίως) οπότε και χαρακτηρίζεται ως inout. Όλες οι παράμετροι

έχουν έναν τύπο δεδομένων μέσω του οποίου δηλώνεται η μορφή των τιμών τους.

data types

(τύποι

δεδομένων)

Οι τύποι δεδομένων (data types) χρησιμοποιούνται προκειμένου να

προσδιορισθούν οι μορφές που μπορούν να έχουν οι παράμετροι, οι μεταβλητές ή

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

CORBA για τα οποία υπάρχουν απεικονίσεις βάσει των οποίων μπορούν να

χρησιμοποιηθούν από διάφορες γλώσσες προγραμματισμού, σε διάφορα

λειτουργικά συστήματα και σε διάφορους ORBs. Στην CORBA υπάρχουν δύο είδη

τύπων δεδομένων: οι βασικοί (basic) και οι κατασκευασμένοι (constructed). Στους

βασικούς τύπους διακρίνουμε τους: short, long, double, char, boolean.

Κατασκευασμένοι τύποι είναι, για παράδειγμα οι: string, struct, array και

sequence. Για παράδειγμα, ο IDL τύπος long είναι ένας ακέραιος αριθμός 32-

bits ο οποίος αντιστοιχεί στον αντίστοιχο int της γλώσσας προγραμματισμού Java

ή στον τύπο long της C++.

Μια CORBA IDL διασύνδεση προσδιορίζει ένα όνομα και ένα σύνολο λειτουργιών που οι πελάτες

μπορούν να καλέσουν. Παρακάτω δίνεται ένα παράδειγμα διεπαφής σε IDL για ένα Calculator με

μια μέθοδο calculate(). Ένα module μπορεί να έχει πολλές διεπαφές.

module Calc{

interface Calculator {

float calculate(in float val1, in float val2, in char operator);

}

}

Page 136: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

136

Άσκηση αυτοαξιολόγησης 8.4

Ποια είναι η σημασιολογία κλήσης (invocation semantics) των λειτουργιών ενός αντικείμενου CORBA;

Άσκηση αυτοαξιολόγησης 8.5

Περιγράψτε την σημασιολογία του τύπου Object στην CORBA IDL.

Άσκηση αυτοαξιολόγησης 8.6

Πως μπορούμε να διαβιβάσουμε non-CORBA αντικείμενα στην κλήση μιας απομακρυσμένης μεθόδου;

Τι δυσκολίες έχει γενικά η διαβίβαση ενός τέτοιου αντικειμένου;

Απεικονίσεις γλωσσικών δομών της IDL

Η OMG έχει ορίσει απεικονίσεις της IDL προς διάφορες γλώσσες προγραμματισμού: C, C++, Smalltalk,

Cobol, Ada, Java. O παρακάτω πίνακας δίνει για παράδειγμα τις απεικονίσεις βασικών IDL γλωσσικών

δομών σε Java/C++.

Απεικονίσεις βασικών IDL γλωσσικών δομών σε Java/C++

IDL Java C++

module package namespace

interface interface abstract class

operation method member function

attribute pair of methods pair of functions

exception exception exception

structs, enums, unions class class

Γενικά, οι προγραμματιστές που χρησιμοποιούν την IDL θα πρέπει εκτός από το συντακτικό και τη

σημασιολογία της ίδιας της IDL να κατανοήσουν το πώς τα δομικά στοιχεία της IDL απεικονίζονται στα

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

Ασύγχρονο RMI

Το ασύγχρονο RMI εισάγει δύο νέες παραλλαγές στην σημασιολογία κλήσης του RMI:

• Επανάκληση (callback): ο πελάτης παρέχει ένα αντικείμενο το οποίο υλοποιεί μια διεπαφή που

περιέχει μεθόδους επανάκλησης. Αυτές οι μέθοδοι μπορούν να καλούνται από το υποκείμενο

σύστημα επικοινωνίας για να μεταβιβάζουν τα αποτελέσματα των ασύγχρονων κλήσεων.

• Σταθμοσκόπηση (polling): o πελάτης έχει στη διάθεσή του μια συλλογή λειτουργιών (valuetype

αντικείμενο από τον εξυπηρετητή) ώστε να ελέγχει περιοδικά τον ORB για τα αποτελέσματα.

Page 137: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

137

3.2 H αρχιτεκτονική της CORBA Η αρχιτεκτονική της CORBA έχει ως στόχο να υποστηρίξει το ρόλο ενός ORB που επιτρέπει στα

αντικείμενα πελάτες να καλούν μεθόδους σε απομακρυσμένα αντικείμενα, όπου τόσο οι πελάτες όσο

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

Ένας ORB διαμεσολαβεί ώστε ένα αντικείμενο πελάτης να μπορεί να καλέσει μία μέθοδο σ’ ένα

αντικείμενο εξυπηρετητή. Ο ORB λαμβάνει την κλήση αυτή και είναι υπεύθυνος να βρει το αντικείμενο

εξυπηρέτησης το οποίο μπορεί να απαντήσει στην αίτηση του πελάτη, να του περάσει τις

απαιτούμενες παραμέτρους, να καλέσει την αιτούμενη μέθοδο και τέλος να επιστρέψει στον πελάτη τα

αποτελέσματα. Σε όλη αυτή την διαδικασία, ο πελάτης δεν απασχολείται με το που βρίσκεται το

απομακρυσμένο αντικείμενο, την γλώσσα προγραμματισμού του, το λειτουργικό του σύστημα ή

οποιαδήποτε άλλα χαρακτηριστικά του συστήματος.

Τα βασικά συστατικά της αρχιτεκτονικής παρουσιάζονται συνοπτικά στη συνέχεια.

Ο πυρήνας ORB (ORB core), υπό τη στενή συνεργασία με τον προσαρμογέα αντικειμένων, διαχειρίζεται

τις αιτήσεις προς τα απομακρυσμένα αντικείμενα εξυπηρέτησης. Χρησιμοποιεί τις αναφορές των

αντικειμένων για να εντοπίσει τα αντικείμενα, να τα ενεργοποιήσει (εάν δεν είναι ήδη

ενεργοποιημένα), να παραδώσει τις αιτήσεις σε αυτά, να μεταφέρει τον έλεγχο σε αυτά και τελικά να

επιστρέψει οποιοδήποτε αποτέλεσμα στον πελάτη.

Ο προσαρμογέας αντικειμένων (object adapter) δέχεται αιτήματα για υπηρεσίες για τα αντικείμενα του

εξυπηρετητή και παρέχει το περιβάλλον χρόνου εκτέλεσης για αρχικοποίηση αντικειμένων, διαβίβαση

αιτημάτων σε αυτά και ανάθεση μοναδικού αναγνωριστικού αντικειμένου (object name).

Απενεργοποιεί και ενεργοποιεί τους servants αντικειμένων, γεγονός που βελτιώνει την απόδοση.

Ο φορητός προσαρμογέας αντικειμένων (portable object adapter ή POA) έχει την ευθύνη να κάνει τον

κώδικα στην πλευρά του εξυπηρετητή να φαίνεται στους πελάτες ως αντικείμενα CORBA. O POA έχει

οριστεί με τέτοιο τρόπο έτσι ώστε να μπορεί να γραφεί κώδικας στην πλευρά του εξυπηρετητή

ανεξάρτητα από κάποιο συγκεκριμένο ORB. Για να υποστηρίξει την φορητότητα μεταξύ διαφορετικών

ORB, η CORBA προϋποθέτει ότι οι υλοποιήσεις αντικειμένων παρέχονται μερικώς από τους

αποκαλούμενους υπηρέτες (servants). Ένας υπηρέτης είναι το μέρος ενός αντικειμένου το οποίο

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

Η διεπαφή server skeleton παρέχει στατικές διεπαφές προς τις μεθόδους οι οποίες μπορεί να ζητηθούν,

εξ αποστάσεως, σε ένα αντικείμενο εξυπηρέτησης. Η διεπαφή αυτή συμπεριφέρεται ως μία εικόνα του

πελάτη στην πλευρά του εξυπηρετητή. Αντίστοιχα με την διεπαφή stub του πελάτη και αυτή η διεπαφή

δημιουργείται μέσω του IDL μεταφραστή.

Η διεπαφή IDL stub παρέχει στον πελάτη, σε στατική μορφή, την διεπαφή του απομακρυσμένου

αντικειμένου εξυπηρέτησης. Ουσιαστικά προσδιορίζει το πώς ο πελάτης μπορεί να επικαλεσθεί τις

μεθόδους του αντικειμένου. Από την πλευρά του πελάτη η διεπαφή του stub του δίνει την δυνατότητα

να υποβάλει μία τοπική κλήση και λειτουργεί ως μία εικόνα του απομακρυσμένου αντικειμένου

εξυπηρέτησης. Τόσο η stub, από την πλευρά του πελάτη, όσο και η διεπαφή skeleton, από την πλευρά

Page 138: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

138

του εξυπηρετητή, δημιουργούνται μέσω της εφαρμογής κατάλληλου μεταφραστή επί μίας διεπαφής

που έχει γραφτεί με την χρήση της γλώσσας ορισμού διεπαφών (IDL), προκειμένου να προσδιοριστούν

οι μέθοδοι που είναι διαθέσιμες καθώς και ο τρόπος που θα πρέπει να ζητηθούν. Επιπλέον, ο κώδικας

stub που γεννάται εμπεριέχει και τον απαιτούμενο κώδικα για την μορφοποίηση (marshaling) του

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

αυτή μπορεί να μεταφερθεί μέσα από το δίκτυο στο απομακρυσμένο αντικείμενο. Αντίστοιχα και με

αντίστροφη ροή, αποκωδικοποιεί την απάντηση του αντικειμένου εξυπηρέτησης και την προωθεί στον

πελάτη.

Η αποθήκη υλοποίησης (implementation repository) αποτελεί την πηγή από όπου, κατά τον χρόνο

εκτέλεσης, παρέχονται πληροφορίες για τα αντικείμενα εξυπηρέτησης, τα οποία έχουν ενεργοποιηθεί

και τις ταυτότητές τους.

Η αποθήκη διεπαφών (interface repository) δίνει τη δυνατότητα να αποκτηθούν περιγραφές των

διεπαφών των αντικειμένων εξυπηρέτησης που έχουν καταχωρηθεί. Μέσω των περιγραφών αυτών

ανακτώνται πληροφορίες για τις μεθόδους που υποστηρίζονται από τα αντικείμενα καθώς και οι

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

οποία είναι διαθέσιμη κατά τον χρόνο εκτέλεσης.

Η διεπαφή δυναμικής επίκλησης (Dynamic Invocation Interface – DII) δίνει τη δυνατότητα να

ανακαλυφθεί μία μέθοδος που θα επιθυμούσε το αντικείμενο πελάτης όταν αυτό εκτελείται και χωρίς

προηγουμένως να υπάρχει κάποια διεπαφή της μορφής IDL stub.

Η διεπαφή Dynamic Skeleton Interface (DSI) παρέχει έναν μηχανισμό μέσω του οποίου διαχειρίζονται,

κατά τον χρόνο εκτέλεσης της εφαρμογής, αιτήσεις προς αντικείμενα εξυπηρέτησης τα οποία δεν έχουν

τις αντίστοιχες διεπαφές skeleton. Η διεπαφή DSI παρατηρεί τις παραμέτρους των εισερχομένων

μηνυμάτων και ψάχνει να βρει σε ποιο αντικείμενο αναφέρονται. Η διεπαφή DSI είναι η αντίστοιχη DII

διεπαφή του πελάτη από την πλευρά του εξυπηρετητή.

Άσκηση αυτοαξιολόγησης 8.7

Περιγράψτε τον ρόλο του πυρήνα ORB (ORB core) στην αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.8

Περιγράψτε τον ρόλο του προσαρμογέα αντικειμένων (object adapter) στην αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.9

Περιγράψτε τον ρόλο του φορητού προσαρμογέα αντικειμένων (portable object adapter ή POA) στην

αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.10

Περιγράψτε τον ρόλο της διεπαφής server skeleton στην αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.11

Page 139: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

139

Περιγράψτε τον ρόλο της διεπαφής IDL stub στην αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.12

Περιγράψτε τον ρόλο της αποθήκης υλοποίησης (implementation repository) στην αρχιτεκτονική της

CORBA.

Άσκηση αυτοαξιολόγησης 8.13

Περιγράψτε τον ρόλο της αποθήκης διεπαφών (interface repository) στην αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.14

Περιγράψτε τον ρόλο της διεπαφής δυναμικής επίκλησης (Dynamic Invocation Interface – DII) στην

αρχιτεκτονική της CORBA.

Άσκηση αυτοαξιολόγησης 8.15

Περιγράψτε τον ρόλο της διεπαφής Dynamic Skeleton Interface (DSI) στην αρχιτεκτονική της CORBA.

3.3 Αναφορές απομακρυσμένων αντικειμένων της CORBA H CORBA έχει προδιαγράψει ένα σχήμα για τις αναφορές απομακρυσμένων αντικειμένων που είναι

κατάλληλο για χρήση, είτε το απομακρυσμένο αντικείμενο πρόκειται να ενεργοποιηθεί από μια

αποθήκη υλοποίησης, είτε όχι. Οι αναφορές που χρησιμοποιούν αυτό το σχήμα καλούνται

interoperable objects references (IORs). Το IOR είναι μία αλφαριθμητική αναφορά σε ένα αντικείμενο

CORBA που κωδικοποιεί ένα όνομα και μία θύρα συστήματος για την αναγνώριση του εξυπηρετητή

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

επιτρέπει σε ένα ORB να αναγνωρίζει το αντικείμενο. Για να μπορέσει ένα αντικείμενο πελάτη να

επικοινωνήσει με ένα αντικείμενο εξυπηρετητή χρειάζεται μια «αναφορά» σε αυτό.

Άσκηση αυτοαξιολόγησης 8.16

Ποια είναι η διαφορά μεταξύ παροδικών IORs (transient IORs) και επίμονων IORs (persistent IORs); Πως

χρησιμοποιείται το IOR για τον εντοπισμό του αντικείμενου εξυπηρέτησης (servant) που αντιστοιχεί

στο αντικείμενο CORBA για τις δύο περιπτώσεις;

3.4 Υπηρεσίες της CORBA Η CORBA ορίζει προδιαγραφές για γενικές υπηρεσίες που μπορεί να χρησιμοποιηθούν από τα

κατανεμημένα αντικείμενα. Οι υπηρεσίες αυτές επεκτείνουν τη λειτουργικότητα του ORB, έτσι ώστε ο

ORB να είναι «ελαφρύς» και αποδοτικός. Ενδεικτικές υπηρεσίες αναφέρονται στον παρακάτω πίνακα.

Υπηρεσία Σημασιολογία

Naming Επιτρέπει σε αντικείμενα να εντοπίσουν άλλα αντικείμενα με το όνομά τους.

Υποστηρίζεται ένας δεσμευτής (binder) ονομάτων που επιτρέπει την αντιστοίχηση

ονομάτων σε αναφορές απομακρυσμένων αντικειμένων μέσα σε συμφραζόμενα

ονομασίας. Συμφραζόμενο ονομασίας (naming context) είναι ένα πεδίο εμβέλειας

Page 140: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

140

Υπηρεσία Σημασιολογία

(scope) μέσα στο οποίο περιέχεται ένα σύνολο μοναδικών ονομάτων. Τα

συμφραζόμενα μπορεί είναι εμφωλευμένα.

Trading Παρέχει έναν «Χρυσό Οδηγό» (“Yellow Pages”) για αντικείμενα με βάση τις

ιδιότητες που περιγράφουν την υπηρεσία που προσφέρεται από το αντικείμενο.

Event Επιτρέπει σε αντικείμενα να καταγράψουν ή να αποσύρουν το ενδιαφέρον τους

για συγκεκριμένα συμβάντα (events). Τα συμβάντα παράγονται από παραγωγούς

(suppliers) και καταναλώνονται από καταναλωτές (consumers). Υποστηρίζεται

τόσο το push model (οι παραγωγοί στέλνουν συμβάντα στους καταναλωτές, όποτε

εμφανιστούν οι κατάλληλες συνθήκες, αφού οι καταναλωτές εγγράφονται στους

επιθυμητούς παραγωγούς), όσο και το pull model (οι καταναλωτές ρωτούν τους

παραγωγούς αν έχουν κάποια συμβάντα να τους στείλουν, αφού οι παραγωγοί

εγγραφούν στους επιθυμητούς καταναλωτές).

Security Παρέχει ένα πλαίσιο για ασφάλεια κατανεμημένων αντικειμένων.

Transaction Συντονίζει ατομικές συναλλαγές (atomic transactions) με αντικείμενα CORBA.

Concurrency

Control

Παρέχει έναν διαχειριστή κλείστρων (lock manager) που μπορεί να προμηθευτεί

τα κλείστρα για να εγγυηθεί μια σειριοποιήσιμη συναλλαγή.

Query Υλοποιεί ένα υπερσύνολο της SQL για λειτουργίες ερωτημάτων σε αντικείμενα.

Life Cycle Ορίζει λειτουργίες για τη δημιουργία, την αντιγραφή, την μετακίνηση και τη

διαγραφή αντικειμένων CORBA.

Άσκηση αυτοαξιολόγησης 8.17

Ποια η χρησιμότητα των γενικών υπηρεσιών στη λειτουργία της CORBA και γενικότερα στην λειτουργία

συστημάτων ΕΛ;

Δραστηριότητα 8.3

Εκτός από την κατηγορία των γενικών υπηρεσιών, που συζητήθηκαν σε αυτή την ενότητα, τι άλλου

είδους υπηρεσίες θα ήταν σκόπιμο να αναπτυχθούν συμπληρωματικά στο πλαίσιο της CORBA ή

γενικότερα στο πλαίσιο ενός ΕΛ; Εξηγείστε τους λόγους.

3.5 Υλοποίηση εφαρμογών με CORBA Το παράδειγμα που θα δούμε είναι το κλασικό “Hello World”. Ο πελάτης καλεί τη μέθοδο sayHello

ενός απομακρυσμένου αντικειμένου που έχει καταγραφεί στον ORB με όνομα “Hello”. Ο ΟRB προωθεί

την κλήση στο απομακρυσμένο αντικείμενο, όπου η μέθοδος sayHello του αντικειμένου

Page 141: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

141

εξυπηρέτησης εκτελείται και επιστρέφει ένα αντικείμενο τύπου String της Java. Ο ΟRB επιστρέφει τη

συμβολοσειρά στον πελάτη και ο πελάτης εμφανίζει τη συμβολοσειρά.

Για τη μεταγλώττιση του αρχείου IDL σε java θα κάνουμε χρήση του μεταγλωττιστή idlj, που παρέχει

το περιβάλλον της Java. Θα χρησιμοποιήσουμε την εντολή:

idlj -fall <idl_file_name>

Η επιλογή –fall δημιουργεί τα αρχεία τόσο για τον εξυπηρετητή όσο και για τον πελάτη.

Το αρχείο Hello.idl περιέχει την IDL διεπαφή του απομακρυσμένου αντικειμένου που παρέχει τη

μέθοδο sayHello.

module HelloApp

{ interface Hello

{ string sayHello();

};

};

Οι ακόλουθες java κλάσεις δημιουργούνται όταν μεταφράσουμε το αρχείο Hello.idl με τον

μεταγλωττιστή διεπαφών idlj (HelloApp είναι το Java πακέτο):

− HelloApp.Hello

− HelloApp.HelloHelper

− HelloApp.HelloHolder

− HelloApp.HelloOperations

− HelloApp._HelloStub

− HelloApp._HelloImplBase

Οι κλάσεις που αφορούν τον πελάτη είναι οι: Hello, HelloHelper, HelloHolder,

HelloOperations και _HelloStub.

Οι κλάσεις που αφορούν τον εξυπηρετητή είναι οι: Hello, HelloOperations και

_HelloImplBase.

Η κλάση Hello περιέχει τη Java υλοποίηση της IDL διεπαφής Hello. Η κλάση HelloOperations

περιέχει τη διεπαφή των λειτουργιών (operations interface) που ορίζονται στην IDL (ουσιαστικά τη

διεπαφή των μεθόδων που παρέχει το απομακρυσμένο αντικείμενο). Χρησιμοποιείται τόσο από τo

stub στην πλευρά του πελάτη, όσο και από τo skeleton στην πλευρά του εξυπηρετητή. Η κλάση

_HelloStub περιέχει την κλάση του stub του πελάτη. Υλοποιεί ένα τοπικό αντικείμενο που

αντιπροσωπεύει το απομακρυσμένο αντικείμενο CORBA. Αυτό το αντικείμενο προωθεί όλες τις

αιτήσεις στο απομακρυσμένο αντικείμενο. Η κλάση _HelloImplBase περιέχει μια abstract κλάση

(κλάση HelloPOA) που υλοποιεί τη διεπαφή της εφαρμογής από την πλευρά του εξυπηρετητή.

Page 142: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

142

Περιέχει ουσιαστικά την κλάση του skeleton του εξυπηρετητή. H κλάση skeleton είναι το σημείο

εισόδου για το κατανεμημένο αντικείμενο. Η κλάση HelloHelper περιλαμβάνει την υλοποίηση

ειδικών λειτουργιών επάνω σε ιεραρχίες IDL διεπαφών. Τέλος, η κλάση HelloHolder

χρησιμοποιείται για το χειρισμό παραμέτρων τύπου out και inout.

Υλοποίηση του πελάτη

Ένας client πρέπει γενικά να προβεί στις ακόλουθες ενέργειες:

− Να ορίσει μια main μέθοδο

− Να αρχικοποιήσει τον ORB

− Να χρησιμοποιήσει της υπηρεσίες της CORBA για να αποκτήσει μια αναφορά στο αντικείμενο

που επιθυμεί να χρησιμοποιήσει (στην περίπτωση μας το αντικείμενο με όνομα Hello).

− Να χρησιμοποιήσει τουλάχιστον μια μέθοδο του απομακρυσμένου αντικειμένου (στην

περίπτωση μας τη μέθοδο sayHello)

Στον κώδικα που ακολουθεί δίνουμε μια πιθανή υλοποίηση του πελάτη για το απλό παράδειγμα που

εξετάσαμε.

import HelloApp.*;

import org.omg.CosNaming.*;

import org.omg.CosNaming.NamingContextPackage.*;

import org.omg.CORBA.*;

public class CorbaHelloClient {

static HelloApp.Hello helloImpl;

public static void main(String args[]) {

try {

// create and initialize the ORB

ORB orb = ORB.init(args, null);

// get the root naming context

org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService");

// Use NamingContextExt instead of NamingContext. This is

// part of the Interoperable naming Service.

NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// resolve the Object Reference in Naming

String name = "Hello";

helloImpl = HelloApp.HelloHelper.narrow(ncRef.resolve_str(name));

System.out.println("Obtained a handle on server object: " + helloImpl);

Page 143: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

143

System.out.println(helloImpl.sayHello());

} catch (Exception e) {

System.out.println("ERROR : " + e) ;

e.printStackTrace(System.out);

}

}

}

Υλοποίηση εξυπηρετητή

Ο προγραμματιστής του αντικειμένου εξυπηρέτησης χρησιμοποιεί την κλάση skeleton του εξυπηρετητή

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

Ο προγραμματιστής εστιάζει την προσοχή του στην παροχή της υλοποίησης της IDL διεπαφής. Για την

υλοποίηση λοιπόν ενός αντικειμένου CORBA στη γλώσσα προγραμματισμού Java, o προγραμματιστής

θα υλοποιήσει μια Java κλάση που επεκτείνει την παραχθείσα skeleton κλάση και υλοποιεί μια μέθοδο

για κάθε λειτουργία της διεπαφής. Στο παράδειγμά μας ο IDL μεταγλωττιστής παράγει την κλάση

skeleton HelloPOA που επεκτείνεται από εμάς με την κλάση HelloImpl.

Αυτό που απομένει πλέον είναι να ορίσουμε τον server ο οποίος όταν τρέχει κάνει διαθέσιμες τις

υπηρεσίες των αντικειμένων του στους πελάτες. Ένας server πρέπει γενικά να προβεί στις ακόλουθες

ενέργειες:

− Να ορίσει μια main μέθοδο

− Να αρχικοποιήσει τον ORB

− Να δημιουργήσει τουλάχιστον ένα αντικείμενο (στην περίπτωσή μας δημιουργείται ένα

αντικείμενο της κλάσης HelloImpl)

− Να συνδέσει κάθε αντικείμενο με τον ORB

− Να περιμένει για συνδέσεις

Στον κώδικα που ακολουθεί δίνουμε μια πιθανή υλοποίηση του εξυπηρετητή για το απλό παράδειγμα

που εξετάσαμε.

import HelloApp.*;

import org.omg.CosNaming.*;

import org.omg.CosNaming.NamingContextPackage.*;

import org.omg.CORBA.*;

import org.omg.PortableServer.*;

import org.omg.PortableServer.POA;

import java.util.Properties;

class HelloImpl extends HelloPOA {

Page 144: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

144

private ORB orb;

public void setORB(ORB orb_val) {

orb = orb_val;

}

// implement sayHello() method

public String sayHello() {

return "\nHello world !!!\n";

}

}

public class CorbaHelloServer {

public static void main(String args[]) {

try {

// create and initialize the ORB

ORB orb = ORB.init(args, null);

// get reference to rootpoa & activate the POAManager

POA rootpoa =

POAHelper.narrow(orb.resolve_initial_references("RootPOA"));

rootpoa.the_POAManager().activate();

// create servant and register it with the ORB

HelloImpl helloImpl = new HelloImpl();

helloImpl.setORB(orb);

// get object reference from the servant

org.omg.CORBA.Object ref = rootpoa.servant_to_reference(helloImpl);

HelloApp.Hello href = HelloApp.HelloHelper.narrow(ref);

// get the root naming context

org.omg.CORBA.Object objRef =

orb.resolve_initial_references("NameService");

// Use NamingContextExt which is part of the Interoperable

// Naming Service (INS) specification.

NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

// bind the Object Reference in Naming

String name = "Hello";

NameComponent path[] = ncRef.to_name( name );

ncRef.rebind(path, href);

System.out.println("Server ready and waiting ...");

// wait for invocations from clients

orb.run();

}

Page 145: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

145

catch (Exception e) {

System.err.println("ERROR: " + e);

e.printStackTrace(System.out);

}

System.out.println("Server Exiting ...");

}

}

Μετά την μεταγλώττιση των αρχείων που αντιστοιχούν στον παραπάνω κώδικα του πελάτη και του

εξυπηρετητή (έστω με ονόματα CorbaHelloClient.java και CorbaHelloServer.java)

μπορούμε να εκκινήσουμε τον εξυπηρετητή, αφού προηγουμένως έχουμε ενεργοποιήσει έναν ORB.

Ενδεικτικά, οι εντολές που θα δίναμε στην πλευρά του εξυπηρετητή θα ήταν:

orbd –ORBInitialPort <portNo> –ORBInitialHost <serverIPAddress>

java CorbaHelloServer –ORBInitialPort <portNo>

Ενώ για την εκκίνηση του πελάτη η εντολή θα ήταν:

java CorbaHelloClient –ORBInitialPort <portNo> –ORBInitialHost

<serverIPAddress>

Για έλεγχο της εφαρμογής πελάτη/εξυπηρετητή στον ίδιο υπολογιστή μπορούμε να χρησιμοποιήσουμε

το localhost στη θέση του <serverIPAddress>.

Άσκηση αυτοαξιολόγησης 8.18

Ποια συνέπεια μπορεί να έχει το γεγονός ότι τα αντικείμενα CORBA καθορίζονται με τη γλώσσα

διεπαφών ΙDL, αλλά υλοποιούνται σε άλλη γλώσσα προγραμματισμού (π.χ., Java ή C++) στην ανάπτυξη

των εφαρμογών CORBA;

Δραστηριότητα 8.4

Να υλοποιήσετε το παράδειγμα “Hello World” στον υπολογιστή σας, σύμφωνα με τις οδηγίες που σας

δίνονται παραπάνω. Προσπαθήστε να υλοποιήσετε το ίδιο παράδειγμα με Java RMI. Σχολιάστε τώρα

τους δύο τρόπους ανάπτυξης.

4. Από τα αντικείμενα στις ψηφίδες λογισμικού Το μοντέλο των κατανεμημένων αντικειμένων που υιοθετήθηκε από συστήματα ΕΛ, όπως οι

υλοποιήσεις της CORBA και η Java RMI, αποδείχθηκε ιδιαίτερα αποτελεσματικό στην αντιμετώπιση

πολλών βασικών ζητημάτων που συνδέονται με τον κατανεμημένο προγραμματισμό, όπως το

πρόβλημα της ετερογένειας και η διευκόλυνση της φορητότητας και διαλειτουργικότητας. Παρόλα

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

εμφάνιση μιας νέας προσέγγισης για την ανάπτυξη κατανεμημένων συστημάτων, βασιζόμενη σε

Page 146: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

146

ψηφίδες λογισμικού (software components), η οποία θεωρείται φυσική εξέλιξη του μοντέλου των

κατανεμημένων αντικειμένων.

Ζητήματα αντικειμενοστρεφών τεχνολογιών ενδιάμεσου λογισμικού

Παρακάτω περιγράφονται σύντομα οι βασικοί περιορισμοί των αντικειμενοστρεφών τεχνολογιών ΕΛ

που σημειώθηκαν από τους δημιουργούς κατανεμημένων εφαρμογών.

Έμμεσες εξαρτήσεις (Implicit dependencies): Οι διεπαφές των απομακρυσμένων αντικειμένων δεν

περιγράφουν πλήρως τις εξαρτήσεις ως προς την κατανεμημένη διάρθρωση του αντικειμένου,

καθιστώντας τα συστήματα που αναπτύσσονται με το μοντέλο αυτό δύσκολα στην ανάπτυξη και

διαχείρισή τους (ειδικά για third-party δημιουργούς).

Πολυπλοκότητα προγραμματισμού (Programming complexity): Ο προγραμματισμός κατανεμημένων

εφαρμογών με αντικειμενοστρεφείς τεχνολογίες ΕΛ απαιτεί την αντιμετώπιση πολλών λεπτομερειών

χαμηλού επιπέδου που συνδέονται με τα χαρακτηριστικά των τεχνολογιών αυτών.

Έλλειψη διαχωρισμού ευθυνών κατανομής (Lack of separation of distribution concerns): Οι δημιουργοί

των εφαρμογών είναι υποχρεωμένοι να ασχολούνται με ζητήματα όπως η ασφάλεια, η διαχείριση

αστοχιών, η διαχείριση συναλλαγών και ο ταυτοχρονισμός, ευθύνες που θα ήταν προτιμότερο να τις

αναλάβει το υποστηρικτικό λογισμικό, καθώς αυτές επαναλαμβάνονται μεταξύ των εφαρμογών.

Απουσία υποστήριξης για την διάταξη (No support for deployment): Οι αντικειμενοστρεφείς

τεχνολογίες ΕΛ παρέχουν ελάχιστη ως καμία υποστήριξη για την διάταξη (των ενδεχομένως σύνθετων)

διαμορφώσεων των αντικειμένων μιας εφαρμογής.

Άσκηση αυτοαξιολόγησης 8.19

Να αναφέρετε παραδείγματα διαχειριστικών λειτουργιών της CORBA που εμπλέκονται στην ανάπτυξη

κατανεμημένων εφαρμογών, και καθιστούν τελικώς πιο πολύπλοκη την συνολική διαδικασία

ανάπτυξης.

Άσκηση αυτοαξιολόγησης 8.20

Ποιες μπορεί να είναι οι συνέπειες της απουσίας υποστήριξης για την διάταξη των κατανεμημένων

αντικειμένων μιας εφαρμογής στο περιβάλλον εκτέλεσής της;

Άσκηση αυτοαξιολόγησης 8.21

Διατυπώστε τέσσερις βασικές απαιτήσεις που οδήγησαν στην εμφάνιση των ψηφιδο-κεντρικών

αρχιτεκτονικών ΕΛ.

Η έννοια της ψηφίδας

Η ανάγκη να κατασκευάζεται λογισμικό από υπάρχοντα τμήματα κώδικα και όχι από την αρχή, οδήγησε

στην ανάπτυξη λογισμικού βασιζόμενου σε ψηφίδες λογισμικού (component-based software). Οι

ψηφίδες λογισμικού ακολουθούν την αντικειμενοστρεφή προσέγγιση. Μια ψηφίδα λογισμικού ορίζεται

Page 147: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

147

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

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

γλώσσα προγραμματισμού, τα εργαλεία και υπολογιστικές πλατφόρμες) και να αποτελέσει τμήμα

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

προσαρμογή της διαμόρφωσης των συστημάτων στο χρόνο εκτέλεσης, με την αντικατάσταση μιας

ψηφίδας με μια άλλη που ταιριάζει ακριβώς αναφορικά με τις παρεχόμενες και απαιτούμενες

διασυνδέσεις της.

Μια ψηφίδα προσδιορίζεται μέσω ενός συμβολαίου (contract) το οποίο περιλαμβάνει:

• ένα σύνολο παρεχόμενων διασυνδέσεων (provided interfaces) – δηλαδή διασυνδέσεις που

παρέχει μια ψηφίδα υπό την μορφή υπηρεσιών σε άλλες ψηφίδες

• ένα σύνολο απαιτούμενων διασυνδέσεων (required interfaces) – δηλαδή οι εξαρτήσεις που αυτή η

ψηφίδα έχει σε σχέση με άλλες ψηφίδες που θα πρέπει να είναι παρούσες και συνδεδεμένες με

αυτή τη ψηφίδα ώστε η τελευταία να λειτουργεί σωστά.

Μια αρχιτεκτονική λογισμικού (software architecture) αποτελείται από ψηφίδες, διασυνδέσεις και

συνδέσμους μεταξύ των διασυνδέσεων.

Οι διασυνδέσεις μπορεί να είναι διαφορετικών μορφών. Πολλές ψηφιδο-κεντρικές προσεγγίσεις

προσφέρουν δύο μορφές διασύνδεσης:

• διασυνδέσεις που υποστηρίζουν την απομακρυσμένη κλήση μεθόδου, όπως στη CORBA και στη

JAVA RMI

• διασυνδέσεις που υποστηρίζουν κατανεμημένα συμβάντα (distributed events)

Άσκηση αυτοαξιολόγησης 8.22

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

απλούστερα τμήματα λογισμικού (ψηφίδες) σε αντιδιαστολή με την αντικειμενοστρεφή προσέγγιση

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

της σύνθεσης μπορεί να οδηγήσει σε καλύτερα αποτελέσματα από ότι η εφαρμογή της αρχής της

κληρονομικότητας.

Ψηφίδες και κατανεμημένα συστήματα

Μια εξέλιξη των αντικειμενοστρεφών συστημάτων ΕΛ είναι τα ψηφιδο-κεντρικά συστήματα ΕΛ

(Component-Oriented Μiddleware). Ένα σύστημα ΕΛ με ψηφίδες είναι μια διαμόρφωση ψηφίδων που

έχουν επιλεχθεί είτε κατά το χρόνο ανάπτυξης, είτε κατά το χρόνο εκτέλεσης. Παραδείγματα

αποτελούν τα: OMG CORBA Component Model, Microsoft DCOM και Enterprise Java Beans. Τα ψηφιδο-

κεντρικά συστήματα ΕΛ, σε αντιδιαστολή με τα αντικειμενοστρεφή συστήματα ΕΛ, προσφέρουν

σημαντική υποστήριξη σε θέματα ανάπτυξης και διάταξης των κατανεμημένων συστημάτων.

Page 148: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

148

Υποδοχείς (Containers): Η έννοια των υποδοχέων είναι κεντρική στα ψηφιδο-κεντρικά συστήματα ΕΛ.

Οι υποδοχείς υποστηρίζουν ένα κοινό πρότυπο που εμφανίζεται συχνά στις κατανεμημένες εφαρμογές,

και το οποίο αποτελείται από:

• έναν πελάτη (πιθανώς web-based)

• έναν υποδοχέα που εμπεριέχει μια ή περισσότερες ψηφίδες που υλοποιούν τη λογική της

εφαρμογής (επιχειρησιακή λογική)

• υπηρεσίες συστήματος που διαχειρίζονται τα δεδομένα που είναι αποθηκευμένα σε μόνιμη βάση.

Αυτό το πρότυπο είναι ανάλογο με το μοντέλο τριών επιπέδων (three-tier model).

Ο στόχος του υποδοχέα είναι να παρέχει στην πλευρά του εξυπηρετητή ένα περιβάλλον φιλοξενίας των

ψηφίδων με υποστήριξη της πολιτικής του διαχωρισμού ευθυνών, όπου οι ψηφίδες εστιάζουν στις

ανάγκες της εφαρμογής και ο υποδοχέας ασχολείται με ζητήματα ΕΛ εξασφαλίζοντας την επίτευξη των

μη λειτουργικών ιδιοτήτων του κατανεμημένου συστήματος.

Ο υποδοχέας δεν παρέχει άμεση πρόσβαση στις ψηφίδες, αλλά παρεμβάλλεται στις εισερχόμενες

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

κατανεμημένης εφαρμογής ικανοποιούνται.

Το μοντέλο του ΕΛ που υποστηρίζει το πρότυπο του υποδοχέα με συνέπεια το διαχωρισμό ευθυνών,

είναι γνωστό ως μοντέλο εξυπηρετητή εφαρμογών (application server). Αυτή η μορφή κατανεμημένου

προγραμματισμού είναι σήμερα πολύ διαδεδομένη στη βιομηχανία λογισμικού.

Υποστήριξη διάταξης (Support for deployment): Στα ψηφιδο-κεντρικά συστήματα ΕΛ παρέχεται

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

ως αρχιτεκτονικές λογισμικού (ψηφίδες και οι αλληλεπιδράσεις τους) μαζί με τους περιγραφείς

διάταξης (deployment descriptors) που περιγράφουν πλήρως πως οι διαρθρώσεις των αντικειμένων

μιας εφαρμογής πρόκειται να διαταχθούν σε ένα κατανεμημένο περιβάλλον ώστε να εκτελεστεί η

εφαρμογή. Οι ψηφίδες διατάσσονται στους υποδοχείς, και οι περιγραφείς διάταξης ερμηνεύονται από

τους υποδοχείς, ώστε οι τελευταίοι να εφαρμόσουν, διάφανα προς την εφαρμογή, τις απαραίτητες

πολιτικές αναφορικά με το υποκείμενο ΕΛ και τις απαιτούμενες υπηρεσίες στο επίπεδο του

κατανεμημένου συστήματος (ασφάλεια, διαχείριση συναλλαγών, ονοματοδοσία, κ.α.).

Άσκηση αυτοαξιολόγησης 8.23

Τι είδους πληροφορίες αποθηκεύονται στους περιγραφείς διάταξης και σε ποια μορφή;

5. Μελέτες περίπτωσης: Enterprise JavaBeans και Fractal Το πλεονέκτημα των εξυπηρετητών εφαρμογών είναι ότι παρέχουν σημαντική υποστήριξη για ένα

είδος κατανεμημένων συστημάτων – συστήματα με αρχιτεκτονική τριών επιπέδων – αποκρύπτοντας

την πολυπλοκότητα που συνδέεται με την ανάπτυξή τους.

Άσκηση αυτοαξιολόγησης 8.24

Page 149: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

149

Ποια είναι τα μειονεκτήματα των εξυπηρετητών εφαρμογών και πως μπορούμε να τα

αντιμετωπίσουμε;

5.1 Enterprise JavaBeans Η τεχνολογία Enterprise JavaBeans αποτελεί ένα μέρος από το σύστημα ΕΛ που αναπτύχθηκε από την

Java και είναι γνωστό σαν Java Platform Enterprise Edition (Java EE). Άλλα συστατικά αυτής της

πλατφόρμας είναι το Java RMI, το JDBC, τα servlets και η υπηρεσία μηνυμάτων Java, (Java Μessaging

Service).

Η πλατφόρμα Java EE παρέχει υποστήριξη για την ανάπτυξη, εγκατάσταση και εκτέλεση εφαρμογών σε

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

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

πλατφόρμα παρέχει όλες αυτές τις υπηρεσίες, απαλλάσσοντας τους προγραμματιστές από το να

ασχολούνται με ζητήματα διαχείρισης του κατανεμημένου περιβάλλοντος, ώστε να εστιάσουν

περισσότερο στην κατασκευή των ψηφίδων λογισμικού που είναι γνωστές ως κόκκοι (beans) και

περικλείουν την επιχειρησιακή λογική της εφαρμογής. Οι κόκκοι τρέχουν πάνω σε έναν Java EE

εξυπηρετητή, που λειτουργεί ως ένας ενδιάμεσος εξυπηρετητής σε μια αρχιτεκτονική

πελάτη/εξυπηρετητή τριών επιπέδων.

Βασικός στόχος του EJB είναι ο διαχωρισμός των ευθυνών και των ρόλων μεταξύ των οντοτήτων (π.χ.,

εταιριών, οργανισμών, επαγγελματιών) που εμπλέκονται στην ανάπτυξη κατανεμημένων εφαρμογών.

Η προδιαγραφή του EJB αναγνωρίζει τους παρακάτω ρόλους:

• Παροχέας κόκκου (bean provider): παράγει τον κώδικα του κόκκου που υλοποιεί μια συγκεκριμένη

λογική.

• Συναρμολογητής εφαρμογών (application assembler): συναρμολογεί κόκκους σε μια ενιαία

εφαρμογή.

• Διαμοιραστής (deployer): παίρνει μια εφαρμογή συναρμολογούμενη από κόκκους και εξασφαλίζει

ότι μπορεί να διαταχθεί σε ένα συγκεκριμένο περιβάλλον εκτέλεσης.

• Παροχέας υπηρεσιών (service provider): παρέχει υπηρεσίες υποστήριξης, όπως υπηρεσίες

δοσοληψιών.

• Παροχέας διατήρησης (persistence provider): απεικονίζει δεδομένα σε βάσεις δεδομένων.

• Παροχέας υποδοχής (container provider): παρέχει υπηρεσίες υποστήριξης βασιζόμενος και στους

δύο παραπάνω ρόλους και υλοποιεί το περιβάλλον στο οποίο θα τρέξουν οι κόκκοι.

• Διαχειριστής συστήματος (system administrator): επιβλέπει την σωστή λειτουργία της εφαρμογής.

Άσκηση αυτοαξιολόγησης 8.25

Να αναφέρετε είδη εφαρμογών που θα είχε νόημα να αναπτυχθούν με την τεχνολογία EJB και είδη

εφαρμογών που δε θα είχε νόημα. Αιτιολογήστε την απάντησή σας.

Το EJB component model

Page 150: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

150

Ένα EJB συστατικό είναι μια ψηφίδα λογισμικού σε Java που περιέχει (πιθανότατα τμήμα) της

επιχειρησιακής λογικής μιας εφαρμογής και εκτελείται εντός του EJB υποδοχέα. Ένας τέτοιος κόκκος

περιλαμβάνει πολλές κλάσεις και διασυνδέσεις: κάποιες που γράφονται από τον προγραμματιστή του

κόκκου, κάποιες που παρέχονται από τον υποδοχέα (container), κάποιες που είναι έτοιμες από την

διανομή του EJB και επίσης κάποιες που προέρχονται από την Java πλατφόρμα.

Η απομακρυσμένη διεπαφή (remote interface) ενός κόκκου καθορίζει τις μεθόδους που σχετίζονται με

τον κόκκο, για παράδειγμα αν ο κόκκος αναπαριστά έναν λογαριασμό τράπεζας, τότε οι μέθοδοι

deposit και withdraw θα είχαν θέση στη διεπαφή. Η οικία διεπαφή (home interface) καθορίζει τις

μεθόδους που σχετίζονται με τον κύκλο ζωής ενός κόκκου. Η κλάση bean υλοποιεί τις μεθόδους για

τον κόκκο.

Υπάρχουν δύο τύποι EJB συστατικών: συνόδου (session beans) και οντότητας (entity beans).

Ένα session bean εκτελεί κάποια μορφή επιχειρησιακής λογικής. Με τα session beans, ο πελάτης

μπορεί να έχει πρόσβαση σε απομακρυσμένες υπηρεσίες καλώντας τις μεθόδους του bean. Τα session

beans εκτελούν εργασίες για λογαριασμό των πελατών τους, ενώ δεν μπορούν να είναι κοινά, δεν

μπορούν δηλαδή να μοιράζονται σε πολλούς πελάτες ταυτόχρονα. Επίσης, τα session beans δεν είναι

μόνιμα, δηλαδή όταν ο πελάτης τερματίσει την σύνδεση, το session bean του θα τερματίσει κι αυτό.

Υπάρχουν δύο είδη session beans. Τα session beans με καταστάσεις (stateful) και αυτά χωρίς

καταστάσεις (stateless).

Ένα entity bean αναπαριστά μια αποθηκευμένη οντότητα που χρησιμοποιείται σε μια εφαρμογή και

απαιτεί μόνιμη αποθήκευση. Αντίθετα με τα session beans, τα entity beans μπορούν να μοιράζονται σε

πολλούς πελάτες και να είναι μόνιμα (η κατάστασή τους, αποθηκεύεται σε μια βάση δεδομένων,

ακόμη και μετά τον τερματισμό τους).

Άσκηση αυτοαξιολόγησης 8.26

Ένα άλλο είδος EJB συστατικού είναι το message-driven bean. Ποια είναι τα ιδιαίτερα χαρακτηριστικά

του;

POJOs και annotations

Ο προγραμματισμός των συστατικών EJB έχει απλοποιηθεί σημαντικά με την χρήση των EJB POJOs

(plain old Java objects) και των EJB annotations.

Τα POJOs προσδιορίζουν ότι δε μας απασχολεί τίποτε άλλο παρά η αποτύπωση της επιχειρησιακής

λογικής της εφαρμογής στο αναπτυσσόμενο bean.

Τα annotations εισήχθησαν στην Java 1.5 ως μηχανισμός για την συσχέτιση μεταδεδομένων με

γλωσσικές δομές όπως πακέτα, κλάσεις, μεθόδους, παραμέτρους και μεταβλητές. Αυτά τα

μεταδεδομένα μπορούν να χρησιμοποιηθούν από περιβάλλοντα εκτέλεσης για να εξασφαλίσουν τη

σωστή συμπεριφορά ή ερμηνεία των απαιτήσεων που συνδέονται με το αντίστοιχο τμήμα του

προγράμματος.

Page 151: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

151

Τα annotations χρησιμοποιούνται στην ανάπτυξη των διασυνδέσεων ενός EJB συστατικού παρέχοντας

έναν δηλωτικό τρόπο για να προσδιορίσει ο δημιουργός τους πως το πρόγραμμά του θα πρέπει να

ερμηνευθεί στο πλαίσιο του EJB υποδοχέα.

EJB containers

Τα EJB συστατικά λειτουργούν μέσα σε έναν EJB υποδοχέα (container) που παρέχει η πλατφόρμα Java

EE. Ο EJB υποδοχέας είναι ένα περιβάλλον εκτέλεσης το οποίο εποπτεύει την εκτέλεση των κόκκων

παρέχοντάς τους σημαντικές υπηρεσίες επιπέδου συστήματος, όπως διασύνδεση πελατών, διαχείριση

συναλλαγών, ασφάλεια, διαχείριση του κύκλου ζωής των κόκκων, γρήγορη σύνδεση με ΒΔ, κ.α.

Αυτό επιτυγχάνεται προδιαγράφοντας τη συσχέτιση μιας ζητούμενης πολιτικής με την εκτέλεση του

κόκκου που την χρειάζεται. Η συσχέτιση γίνεται δηλωτικά με την χρήση κατάλληλου annotation επί

κατάλληλης μεθόδου στην bean class.

Άσκηση αυτοαξιολόγησης 8.27

Πώς αξιοποιείται από έναν EJB υποδοχέα η τεχνική του dependency injection;

EJB Interception

Η προδιαγραφή του EJB επιτρέπει στον προγραμματιστή να παρεμβληθεί σε δύο τύπους λειτουργιών

του κόκκου προκειμένου να αλλαχτεί η προεπιλεγμένη συμπεριφορά τους:

• κλήσεις μεθόδων που συνδέονται με μια επιχειρησιακή διεπαφή

• γεγονότα κύκλου ζωής του κόκκου

Δραστηριότητα 8.5

Θα μπορούσε η αρχιτεκτονική EJB να χρησιμοποιηθεί για την υλοποίηση ενός on-line παιχνιδιού τύπου

ΜΜOG (Massively Multiplayer Online Game); Ποια θα ήταν τα πλεονεκτήματα και ποιες οι αδυναμίες

της EJB σε αυτήν την περιοχή εφαρμογών;

5.2 Fractal Το ψηφιδο-κεντρικό μοντέλο Fractal είναι ένα γενικό μοντέλο που μπορεί να χρησιμοποιηθεί για την

υλοποίηση, εγκατάσταση και διαχείριση (δηλαδή, εποπτεία, έλεγχο και δυναμική διαμόρφωση)

πολύπλοκων συστημάτων λογισμικού, και ειδικότερα λειτουργικών συστημάτων και συστημάτων ΕΛ.

Στα κύρια χαρακτηριστικά γνωρίσματα του μοντέλου περιλαμβάνονται:

• Σύνθετες ψηφίδες (ψηφίδες που περιέχουν απλούστερες ψηφίδες), προκειμένου να υπάρξει μια

ομοιόμορφη όψη των εφαρμογών σε διάφορα επίπεδα αφαίρεσης.

• Κοινές ψηφίδες (απλούστερες ψηφίδες που ανήκουν σε πολλές σύνθετες ψηφίδες), για την

μοντελοποίηση των πόρων και της διαμοίρασης αυτών διατηρώντας την ιδιότητα της

ενθυλάκωσης.

• Δυνατότητες ενδοσκόπησης (introspection), προκειμένου να επιτηρηθεί και να ελεγχθεί η

λειτουργία ενός συστήματος κατά τον χρόνο εκτέλεσης.

Page 152: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

152

• Δυνατότητες επανασχηματισμού, προκειμένου να εγκατασταθεί και να διαμορφωθεί δυναμικά ένα

σύστημα.

Με στόχο να επιτρέψει στους προγραμματιστές τον έλεγχο των ανακλαστικών (reflective) στοιχείων

των ψηφίδων στις απαιτήσεις των εφαρμογών τους, το Fractal ορίζεται ως ένα επεκτάσιμο σύστημα. Τα

στοιχεία ελέγχου των ψηφίδων δεν προκαθορίζονται στο μοντέλο, τουναντίον το μοντέλο επιτρέπει τη

συνεχή διαχείριση των ανακλαστικών στοιχείων ή αλλιώς των επιπέδων ελέγχου (levels of control), που

κυμαίνονται από κανέναν έλεγχο (μαύρα κουτιά, τυποποιημένα αντικείμενα) ως τις ολοκληρωμένες

δυνατότητες ενδοσκόπησης και παρεμβολής (συμπεριλαμβανομένης, για παράδειγμα, της πρόσβασης

και του χειρισμού του περιεχομένου της ψηφίδας, τον έλεγχο του κύκλου ζωής και της συμπεριφοράς

της ψηφίδας, κ.α.).

Άσκηση αυτοαξιολόγησης 8.28

Το Fractal χαρακτηρίζεται ως ελαφρύ (lightweight) ψηφιδο-κεντρικό μοντέλο. Εξηγήστε για το λόγο.

Άσκηση αυτοαξιολόγησης 8.29

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

Να αναφέρετε μερικές από αυτές τις περιπτώσεις.

Πυρήνας μοντέλου, μεμβράνες και ελεγκτές

Μια ψηφίδα Fractal είναι μια οντότητα με χαρακτηριστικά ενθυλάκωσης, έχει μια ξεχωριστή ταυτότητα

και υποστηρίζει μια ή περισσότερες διεπαφές. Μια διεπαφή (interface) είναι ένα σημείο πρόσβασης σε

μια ψηφίδα (παρόμοιο με μια θύρα σε άλλα ψηφιδο-κεντρικά μοντέλα), η οποία υλοποιεί έναν τύπο

διεπαφών (δηλαδή ένας τύπος που προσδιορίζει τις λειτουργίες που υποστηρίζονται από το σημείο

πρόσβασης). Οι διεπαφές μπορούν να είναι δύο ειδών: οι διεπαφές εξυπηρετητή (server interfaces),

που αντιστοιχούν σε σημεία πρόσβασης για την αποδοχή των εισερχόμενων κλήσεων λειτουργιών

(παρεχόμενη διασύνδεση) και οι διεπαφές πελατών (client interfaces), που αντιστοιχούν σε σημεία

πρόσβασης για την κλήση εξερχόμενων λειτουργιών (απαιτούμενη διασύνδεση).

Μια ψηφίδα Fractal περιλαμβάνει μια μεμβράνη (membrane), που υποστηρίζει διεπαφές για την

ενδοσκόπηση και αναδιάταξη των εσωτερικών της στοιχείων, και ένα περιεχόμενο (content), το οποίο

αποτελείται από ένα πεπερασμένο σύνολο άλλων ψηφίδων (αποκαλούμενων sub-components). Η

μεμβράνη μιας ψηφίδας μπορεί να έχει εξωτερικές και εσωτερικές διεπαφές. Οι εξωτερικές διεπαφές

είναι προσπελάσιμες από τον εξωτερικό κόσμο της ψηφίδας, ενώ οι εσωτερικές διεπαφές είναι

προσπελάσιμες μόνο από τα sub-components της ψηφίδας. Η μεμβράνη ενός συστατικού αποτελείται

από διάφορους ελεγκτές (controllers). Τυπικά, μια μεμβράνη μπορεί να παρέχει μια ρητή και αιτιατά

συνδεδεμένη αναπαράσταση των sub-components της ψηφίδας και να υπερθέτει μια συμπεριφορά

ελέγχου στη συμπεριφορά των sub-components της ψηφίδας, όπως για την αναστολή λειτουργίας, για

checkpointing, και για την επανάληψη των δραστηριοτήτων των sub-components. Οι ελεγκτές μπορούν

επίσης να διαδραματίσουν το ρόλο των αναχαιτιστών (interceptors). Οι αναχαιτιστές χρησιμοποιούνται

για να εξαγάγουν την εξωτερική διεπαφή ενός subcomponent ως εξωτερική διεπαφή της ψηφίδας

γονέα. Μπορούν να παρεμποδίσουν τις εισερχόμενες και εξερχόμενες κλήσεις λειτουργιών μιας

Page 153: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

153

εξαγόμενης διεπαφής και μπορούν να προσθέσουν πρόσθετη συμπεριφορά στο χειρισμό τέτοιων

κλήσεων (π.χ. προ και μετα-χειριστές). Κάθε μεμβράνη ψηφίδας μπορεί έτσι να ιδωθεί ως να υλοποιεί

μια ιδιαίτερη σημασιολογία για τη σύνθεση των sub-components της ψηφίδας. Οι ελεγκτές μπορούν να

γίνουν κατανοητοί ως μετα-αντικείμενα ή μετα-ομάδες, όπως αυτές οι έννοιες εννοούνται στις

ανακλαστικές γλώσσες (reflective languages) και στα ανακλαστικά συστήματα (reflective systems).

Δραστηριότητα 8.6

Θα μπορούσε ένα σύστημα βασισμένο στο μοντέλο Fractal να χρησιμοποιηθεί για την υλοποίηση ενός

on-line παιχνιδιού τύπου ΜΜOG (Massively Multiplayer Online Game); Αιτιολογήστε την απάντησή

σας.

6. Επανάληψη Στο κεφάλαιο αυτό εξετάστηκαν τεχνολογίες αντικειμενοστρεφών συστημάτων ΕΛ. Είδαμε τη

σημασιολογία του κατανεμημένου αντικειμένου και γενικές αρχές υλοποίησης και εξετάσαμε ως

μελέτη περίπτωσης την CORBA. Γνωρίσαμε την έννοια της ψηφίδας λογισμικού και εξετάστηκαν οι

βασικές απαιτήσεις που οδήγησαν στην εμφάνιση των ψηφιδο-κεντρικών αρχιτεκτονικών ΕΛ. Τέλος,

παρουσιάστηκαν δύο μελέτες περίπτωσης για την ψηφιδο-κεντρική προσέγγιση συστημάτων ΕΛ: την

Enterprise JavaBeans, μια περίπτωση εξυπηρετητή εφαρμογών (application server) και το Fractal, μια

περίπτωση ενός lightweight ψηφιδο-κεντρικού μοντέλου που μπορεί να χρησιμοποιηθεί για την

ανάπτυξη πιο σύνθετων συστημάτων ΕΛ.

Page 154: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

154

ΚΕΦΑΛΑΙΟ 9: Υπηρεσίες Ιστού

Σκοπός Ο σκοπός του κεφαλαίου είναι να παρουσιάσει τις βασικές έννοιες των υπηρεσιών ιστού (web services)

και να καταδείξει το ρόλο τους στη διαλειτουργικότητα υπηρεσιών διαφορετικών οργανισμών.

Εισαγάγει το πρωτόκολλο επικοινωνίας υπηρεσιών ιστού SOAP, ορίζει τις περιγραφές υπηρεσιών,

περιγράφει μία υπηρεσία καταλόγου για την ανάκτηση τέτοιων περιγραφών και εστιάζει σε θέματα

ασφαλούς δημιουργίας, αποθήκευσης και ανταλλαγής εγγράφων στο Internet. Το κεφάλαιο κλείνει με

τη μελέτη περίπτωσης του Πλέγματος (Grid), μιας πλατφόρμας ενδιάμεσου λογισμικού βασισμένου σε

υπηρεσίες ιστού, που χρησιμοποιείται για την επεξεργασία μεγάλων όγκων δεδομένων που ανήκουν

σε ομάδες διεσπαρμένων χρηστών.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Eξηγήσετε τη σκοπιμότητα ανάπτυξης υπηρεσιών ιστού

• Αναφέρετε παραδείγματα υπηρεσιών ιστού

• Αναλύσετε πώς οι υπηρεσίες ιστού επιτρέπουν σε τρίτους φορείς να χτίσουν υπηρεσίες

προστιθέμενης αξίας

• Εξηγήσετε πώς μπορεί να συνδυαστεί η λειτουργικότητα επιμέρους υπηρεσιών ιστού

• Αναλύσετε το ρόλο του πρωτοκόλλου SOAP καθώς και τη δομή και τον τρόπο μεταφοράς των

SOAP μηνυμάτων

• Συνοψίσετε τις διαφορές μεταξύ υπηρεσιών ιστού και του μοντέλου κατανεμημένων

αντικειμένων

• Χρησιμοποιήστε το JAX-RPC για την υλοποίηση υπηρεσιών ιστού και πελατών πάνω από SOAP

• Αναλύσετε το ρόλο των περιγραφών υπηρεσιών και τη δημιουργία περιγραφών μέσω της

γλώσσας WDSL

• Εξηγήστε τη σκοπιμότητα της υπηρεσίας καταλόγου UDDI, καθώς και των δομών δεδομένων

και τρόπων αναζήτησης και δημοσίευσης που χρησιμοποιεί

• Τεκμηριώσετε πως η XML ασφάλεια ικανοποιεί τις ανάγκες για ασφαλή δημιουργία, ανταλλαγή

και αποθήκευση εγγράφων από σειρά διαφορετικών χρηστών στο Internet

• Συνοψίσετε τις προϋποθέσεις συνεργασίας και συντονισμού των λειτουργιών μεταξύ

διαφορετικών υπηρεσιών ιστού

• Ορίσετε τον όρο «Πλέγμα», αναφέρετε παραδείγματα εφαρμογών πλέγματος και εξηγήσετε τη

χρήση των υπηρεσιών ιστού από το ενδιάμεσο λογισμικό πλέγματος

Page 155: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

155

Έννοιες κλειδιά Globus Toolkit, JAX-RPC, REST, SOAP, UDDI, URI, WDSL, XML ασφάλεια, Διεπαφή υπηρεσίας, Περιγραφή

υπηρεσίας, Πλέγμα, Συντονισμός υπηρεσιών ιστού, Υπηρεσία ιστού.

1. Εισαγωγή Η μεγέθυνση του web αποδεικνύει την αποδοτικότητα χρήσης απλών πρωτοκόλλων στο Internet ως

βάση για μεγαλύτερο αριθμό εφαρμογών και υπηρεσιών ευρύτερης εμβέλειας. Ειδικότερα, το HTTP

πρωτόκολλο αίτησης-απάντησης επιτρέπει σε γενικού-σκοπού πελάτες που αποκαλούνται περιηγητές

(browsers) να εμφανίζουν ιστοσελίδες και άλλους πόρους με αναφορά στα URLs τους. Ωστόσο, η χρήση

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

μοντέλο πελάτη-εξυπηρετητή, αμφότεροι ο πελάτης και ο εξυπηρετητής ήταν λειτουργικά

εξειδικευμένοι. Οι υπηρεσίες ιστού (web services) επιστρέφουν σε αυτό το αρχικό μοντέλο, όπου ένας

πελάτης εξειδικευμένος σε μια υπηρεσία (application-specific) αλληλεπιδρά με μία υπηρεσία μέσω

μιας εξειδικευμένης λειτουργικά διεπαφής, πάνω από το Internet.

Έτσι, οι υπηρεσίες ιστού παρέχουν μια υποδομή για τη διατήρηση μιας περισσότερο εμπλουτισμένης

και δομημένης μορφής διαλειτουργικότητας μεταξύ πελατών και εξυπηρετητών. Παρέχουν τη βάση

ώστε ένα πρόγραμμα πελάτη σε έναν οργανισμό να αλληλεπιδράσει με ένα εξυπηρετητή σε άλλο

οργανισμό χωρίς ανθρώπινη επίβλεψη. Ειδικότερα, οι υπηρεσίες ιστού επιτρέπουν την ανάπτυξη

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

Λόγω της γενικότητας των αλληλεπιδράσεών τους, οι υπηρεσίες ιστού δεν μπορούν να προσπελαστούν

από περιηγητές.

Μία υπηρεσία ιστού προσδιορίζεται από ένα ομοιόμορφο αναγνωριστικό πόρων (uniform resource

identifier, URI) και προσπελαύνεεται από πελάτες κάνοντας χρήση μηνυμάτων μορφοποιημένων σε

XML. Το πρωτόκολλο SOAP χρησιμοποιείται για να ενθυλακώσει αυτά τα μηνύματα και να τα

μεταδώσει πάνω από HTTP ή άλλο πρωτόκολλο (π.χ. TCP ή SMTP). Μία υπηρεσία ιστού αναπτύσσει

περιγραφές υπηρεσίας που προσδιορίζουν -σε πιθανούς πελάτες- τη διεπαφή και άλλες όψεις της. Οι

υπηρεσίες ιστού μπορούν να χτιστούν πάνω από άλλες υπηρεσίες ιστού. Επίσης κάποιες συγκεκριμένες

υπηρεσίες ιστού παρέχουν τη γενικευμένη λειτουργικότητα που απαιτείται για τη λειτουργία μεγάλου

αριθμού άλλων υπηρεσιών ιστού.

Δραστηριότητα 9.1

Ποιος είναι ο στόχος των υπηρεσιών ιστού; Σε τι διαφέρει το μοντέλο αλληλεπίδρασης πελάτη-

εξυπηρετητή στο πλαίσιο των υπηρεσιών ιστού σε σχέση με το τυπικό μοντέλο αλληλεπίδρασης

περιηγητή-εξυπηρετητή;

2. Υπηρεσίες ιστού Μια διεπαφή υπηρεσίας ιστού γενικά αποτελείται από μια συλλογή λειτουργιών που μπορούν να

χρησιμοποιηθούν από ένα πελάτη στο Internet. Οι λειτουργίες μια υπηρεσίας ιστού είναι δυνατό να

Page 156: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

156

παρέχονται από μια ποικιλία πόρων, π.χ. προγράμματα, αντικείμενα ή βάσεις δεδομένων. Το βασικό

χαρακτηριστικό των περισσοτέρων υπηρεσιών ιστού είναι ότι μπορούν να επεξεργαστούν SOAP

μηνύματα μορφοποιημένα σε XML. Μια εναλλακτική προσέγγιση είναι η REST (representational state

transfer). Κάθε υπηρεσία ιστού χρησιμοποιεί τη δική της περιγραφή υπηρεσίας για να αντιμετωπίσει τα

-σχετικά με την υπηρεσία- χαρακτηριστικά των μηνυμάτων που λαμβάνει.

Πολλοί γνωστοί εμπορικοί εξυπηρετητές (π.χ. Amazon, Yahoo, Google και eBay) προσφέρουν διεπαφές

υπηρεσιών ιστού που επιτρέπουν σε πελάτες να χρησιμοποιούν τους web πόρους τους. Επίσης

επιτρέπουν σε τρίτους φορείς να χτίσουν υπηρεσίες προστιθέμενης αξίας, π.χ. μια εφαρμογή ελέγχου

καταλόγου εμπορευμάτων και διεκπεραίωσης αγορών μπορεί να παραγγείλει την προμήθεια

προϊόντων από το Amazon.com.

Συνδυασμός υπηρεσιών ιστού: η παροχή μιας διεπαφής υπηρεσίας επιτρέπει στις λειτουργίες της να

συνδυαστούν με λειτουργίες άλλων υπηρεσιών ώστε να παρέχουν νέα λειτουργικότητα. Για

παράδειγμα, μια «υπηρεσία ταξιδιωτικού πρακτορείου» μπορεί να παρέχει σε ένα ταξιδιώτη ένα

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

κράτηση εισιτηρίων, ξενοδοχείων, ενοικίασης αυτοκινήτων, κλπ.

Πρότυπα επικοινωνίας: Γενικά, οι υπηρεσίες ιστού χρησιμοποιούν είτε ένα σύγχρονο πρότυπο

επικοινωνίας αίτησης-απάντησης με τους πελάτες τους είτε επικοινωνία με χρήση ασύγχρονων

μηνυμάτων. Ένα πρότυπο στυλ-συμβάντων (event-style pattern) μπορεί επίσης να χρησιμοποιηθεί, π.χ.

πελάτες μιας υπηρεσίας καταλόγου μπορούν να εγγραφούν σε συμβάντα που τους ενδιαφέρουν, ώστε

να ενημερωθούν όταν αυτά συμβούν.

Απουσία συγκεκριμένου προγραμματιστικού μοντέλου: οι υπηρεσίες ιστού είναι ανεξάρτητες

οποιουδήποτε προγραμματιστικού παραδείγματος.

Αναπαράσταση μηνυμάτων: αμφότερα το SOAP και τα δεδομένα που μεταφέρει αναπαρίστανται σε

XML. Οι αλληλεπιδράσεις στυλ-εγγράφων (document-style) μειώνουν την ταχύτητα, ωστόσο, λόγω της

αναγνώσιμης από τον άνθρωπο μορφής τους επιτρέπουν την εύκολη κατασκευή απλών μηνυμάτων και

την αποσφαλμάτωση πιο πολύπλοκων. Κάθε στοιχείο σε μια XML περιγραφή επισημειώνεται με τον

τύπο του και η σημασία κάθε τύπου ορίζεται σε ένα σχήμα που αναφέρεται μέσα στην περιγραφή.

Αυτό καθιστά τη μορφοποίηση επεκτάσιμη, επιτρέποντας τη μεταφορά οποιουδήποτε τύπου

δεδομένων.

Αναφορές υπηρεσιών: γενικά, κάθε υπηρεσία ιστού έχει ένα URI, που χρησιμοποιείται από τους

πελάτες για να αναφερθούν σε αυτήν. Η πιο συχνή μορφή URI είναι η URL, η οποία ωστόσο συσχετίζει

την υπηρεσία ιστού με έναν συγκεκριμένο Η/Υ. Αντίθετα, η πρόσβαση σε μια υπηρεσία ιστού μέσω

ενός URN μπορεί να εξαρτηθεί από το πλαίσιο και να αλλάζει από καιρό σε καιρό (η τρέχουσα URL του

μπορεί να ανακτάται από μια υπηρεσία αναζήτησης URN).

Ενεργοποίηση υπηρεσιών: μία υπηρεσία ιστού μπορεί να προσπελαστεί από έναν Η/Υ που το όνομα

περιοχής του περιλαμβάνεται στην τρέχουσα URL. Ο Η/Υ μπορεί να τρέξει την υπηρεσία ο ίδιος ή να

Page 157: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

157

την τρέξει σε άλλο εξυπηρετητή. Μια υπηρεσία ιστού μπορεί να τρέχει συνεχώς ή να ενεργοποιείται

όποτε απαιτείται.

Διαφάνεια: ένα σημαντικό καθήκον πολλών πλατφορμών ενδιάμεσου λογισμικού είναι να

προστατεύουν τον προγραμματιστή από τις λεπτομέρειες της αναπαράστασης δεδομένων και -συχνά-

να κάνουν τις απομακρυσμένες κλήσεις να εμφανίζονται ως τοπικές. Ωστόσο, τίποτα από τα παραπάνω

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

απλούστερο επίπεδο, οι πελάτες και εξυπηρετητές μπορούν να διαβάζουν και να γράφουν μηνύματα

άμεσα σε SOAP, με χρήση XML. Ωστόσο, οι λεπτομέρειες των SOAP και XML κρύβονται από το API

γλωσσών προγραμματισμού όπως Java, Perl ή C++.

Πληρεξούσιοι: υπάρχει η επιλογή να κρυφθεί η διαφορά μεταξύ τοπικών και απομακρυσμένων

κλήσεων παρέχοντας ένα πληρεξούσιο πελάτη (client proxy) ή ένα σύνολο από διαδικασίες στελέχη

(stub procedures).

Δυναμική κλήση: μια εναλλακτική στους πληρεξούσιους είναι η παροχή σε πελάτες γενικών

λειτουργιών για να χρησιμοποιηθούν ανεξάρτητα από την απομακρυσμένη διαδικασία που καλείται. Σε

αυτή την περίπτωση, ο πελάτης προσδιορίζει το όνομα και τις παραμέτρους μιας λειτουργίας τα οποία

μετατρέπονται δυναμικά σε SOAP και XML.

Δραστηριότητα 9.2

Αναφέρατε παραδείγματα υπηρεσιών ιστού που προσφέρουν το Amazon και το eBay. Αναφέρατε

παραδείγματα υπηρεσιών προστιθέμενης αξίας που βασίζονται σε τέτοιες υπηρεσίες ιστού.

Δραστηριότητα 9.3

Αναζητήστε σε διαδικτυακές πηγές παραδείγματα λειτουργικότητας που παρέχουν οι υπηρεσίες ιστού

της Google.

Δραστηριότητα 9.4

Πραγματοποιήστε μια αναζήτηση πτήσης στο http://www.pamediakopes.gr/ και μελετήστε τα

αποτελέσματα. Τι είδους υπηρεσίες ιστού (και ποιων οργανισμών) πιστεύετε ότι χρησιμοποιούνται σε

αυτό το διαδικτυακό τόπο;

Δραστηριότητα 9.5

Υποθέστε ότι ένας διαδικτυακός τόπος προσφέρει «υπηρεσίες ταξιδιωτικού πρακτορείου» με

ολοκληρωμένες συστάσεις οργανωμένων ταξιδιωτικών «πακέτων», που περιλαμβάνουν κλείσιμο

αεροπορικών/ακτοπλοϊκών εισιτηρίων και ξενοδοχείων, ξεναγήσεις (από κοινού με άλλες ομάδες

τουριστών ώστε να μειωθεί το κόστος), προτάσεις αγοράς έντυπων τουριστικών οδηγών για τον

προτεινόμενο προορισμό, πρόγραμμα επισκέψεων σε αξιοθέατα που λαμβάνουν υπόψη και καιρικές

συνθήκες, κλπ), σίτιση σε εστιατόρια που βρίσκονται σε σημεία πλησίον της περιοχής όπου κινείται η

ομάδα τουριστών την κάθε ημέρα, συνολική εκτίμηση κόστους (που περιλαμβάνει εισιτήρια, διαμονή,

Page 158: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

158

διατροφή, ξεναγήσεις, μετακινήσεις, είσοδο σε μουσεία, κλπ). Τι είδους υπηρεσίες ιστού θεωρείτε πως

θα πρέπει να συνδυάσει ο διαδικτυακός τόπος του «ταξιδιωτικού πρακτορείου» ώστε να παρέχει

τέτοιες ταξιδιωτικές συστάσεις;

Άσκηση αυτοαξιολόγησης 9.1

Ορίστε τα URI, URL, URN διευκρινίζοντας τις μεταξύ τους διαφορές. Αναζητήστε σε διαδικτυακές πηγές

παραδείγματα URLs και URNs. Σε ποια περίπτωση η χρήση URN για αναφορά σε μια υπηρεσία ιστού

μπορεί να είναι καταλληλότερη από τη χρήση URL;

2.1 SOAP Το πρωτόκολλο SOAP σχεδιάστηκε για να επιτρέψει αμφότερες τη βασισμένη στο μοντέλο πελάτη-

εξυπηρετητή και την ασύγχρονη αλληλεπίδραση. Ορίζει ένα σχήμα για τη χρήση της XML για την

αναπαράσταση των περιεχομένων των μηνυμάτων αίτησης και απάντησης, καθώς και ένα σχήμα για

την επικοινωνία εγγράφων. Αρχικά το SOAP βασίζονταν μόνο στο HTTP, αλλά η τρέχουσα έκδοσή του

σχεδιάστηκε για να χρησιμοποιεί ποικιλία πρωτοκόλλων μεταφοράς, όπως SMTP, TCP, UDP. Αυτή η

ενότητα περιγράφει πως το SOAP χρησιμοποιεί την XML για την αναπαράσταση μηνυμάτων και το

HTTP για να τα επικοινωνήσει. Ωστόσο, ο προγραμματιστής συνήθως δεν ασχολείται με αυτές τις

λεπτομέρειες, καθώς SOAP APIs έχουν αναπτυχθεί στις περισσότερες γλώσσες προγραμματισμού (π.χ.

Java, Javascript, Perl, Python, .NET, C, C++, C#, Visual Basic).

SOAP μηνύματα: ένα SOAP μήνυμα μεταφέρεται σε ένα «φάκελο» (envelope). Μέσα στο φάκελο

υπάρχει μια προαιρετική επικεφαλίδα (header) και ένα σώμα (body). Οι επικεφαλίδες των μηνυμάτων

μπορεί να χρησιμοποιηθούν για να καθορίσουν το απαραίτητο πλαίσιο για μια υπηρεσία ή για να

κρατήσουν μια καταχώρηση των λειτουργιών. Ένας ενδιάμεσος μπορεί να ερμηνεύσει ή να δράσει

βάσει της πληροφορίας των επικεφαλίδων, π.χ. να προσθέσει, ενημερώσει ή αφαιρέσει πληροφορία.

Το σώμα του μηνύματος φέρει το XML έγγραφο για μια συγκεκριμένη υπηρεσία ιστού. Όπως έχει ήδη

αναφερθεί, οι περιγραφές υπηρεσιών περιέχουν πληροφορία που μοιράζονται οι πελάτες και

εξυπηρετητές. Οι αποστολείς των μηνυμάτων χρησιμοποιούν τις περιγραφές για να δημιουργήσουν το

σώμα και να διασφαλίσουν ότι περιέχει σωστά περιεχόμενα, ενώ οι λήπτες των μηνυμάτων τις

χρησιμοποιούν για να αναλύσουν και να ελέγξουν την εγκυρότητα των περιεχομένων. Ένα SOAP

μήνυμα μπορεί να χρησιμοποιηθεί είτε για να μεταφέρει ένα έγγραφο (το έγγραφο τοποθετείται μέσα

στο στοιχείο body, μαζί με μια αναφορά σε ένα XML σχήμα που περιέχει την περιγραφή της υπηρεσίας)

είτε για να υποστηρίξει επικοινωνία πελάτη-εξυπηρετητή (τo body περιέχει είτε ένα Request είτε ένα

Reply). To body ενσωματώνει ένα στοιχείο με το όνομα της διαδικασίας που θα κληθεί και το URI του

χώρου ονομάτων (namespace) με τη σχετική περιγραφή της υπηρεσίας. Τα εσωτερικά στοιχεία ενός

μηνύματος αίτησης περιέχουν τις παραμέτρους της διαδικασίας.

SOAP επικεφαλίδες: οι επικεφαλίδες των μηνυμάτων προορίζονται για χρήση από ενδιάμεσους ώστε

να προσθέσουν στην υπηρεσία, η οποία χειρίζεται το μήνυμα που μεταφέρεται στο σώμα του

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

ιδιότητα που ονομάζεται ‘role’ μπορεί να προσδιορίσει κατά πόσο κάθε ενδιάμεσος, κανένας εξ’ αυτών

ή μόνο ο τελικός λήπτης του μηνύματος μπορούν να επεξεργαστούν το στοιχείο.

Page 159: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

159

Μεταφορά SOAP μηνυμάτων: ένα πρωτόκολλο μεταφοράς απαιτείται για την αποστολή ενός SOAP

μηνύματος στον προορισμό του. Τα SOAP μηνύματα είναι ανεξάρτητα από το πρωτόκολλο που

χρησιμοποιείται (η διεύθυνση προορισμού δεν περιέχεται στους φακέλους αλλά προσδιορίζεται από

το HTTP ή οποιοδήποτε άλλο πρωτόκολλο μεταφοράς χρησιμοποιείται. Εφόσον ένα SOAP Request

αποτελεί μια απλή αίτηση για πληροφορία που πρέπει να επιστραφεί, δεν έχει παραμέτρους και δε

μεταβάλει δεδομένα στον εξυπηρετητή, τότε ένα HTTP GET μπορεί να χρησιμοποιηθεί για να το

μεταφέρει. Η παράμετρος Action της HTTP επικεφαλίδας μπορεί να χρησιμοποιηθεί για να

προσδιορίσει το όνομα της λειτουργίας που θα εκτελεστεί και αφαιρεί την ανάγκη ελέγχου του SOAP

μηνύματος στο σώμα του HTTP μηνύματος για να βρεθεί αυτή η πληροφορία. Αυτή η παράμετρος

μπορεί να χρησιμοποιηθεί εφόσον ο τύπος περιεχομένου του HTTP μηνύματος έχει οριστεί ως

‘application/soap+xml’. Ο διαχωρισμός του ορισμού του SOAP φακέλου από την πληροφορία ως προς

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

Πρόοδος στη SOAP διευθυνσιοδότηση και δρομολόγηση: Πρόσφατες ερευνητικές εργασίες, γνωστές με

τα ονόματα WS-Routing και WS-Addressing, προτείνουν τρόπους για να καταστήσουν το SOAP

ανεξάρτητο από το υποκείμενο πρωτόκολλο μεταφοράς και να δώσουν τη δυνατότητα προσδιορισμού

της διαδρομής -μέσω ενδιάμεσων- που ακολουθεί ένα SOAP μήνυμα.

Αξιόπιστη επικοινωνία: οι υπηρεσίες ιστού δε διαθέτουν ένα πρωτόκολλο που να παραδίδει μηνύματα

αξιόπιστα παρουσία αποτυχιών. Το συνηθισμένο πρωτόκολλο του SOAP, το HTTP, τρέχει πάνω από TCP

το οποίο δεν εγγυάται παράδοση μηνυμάτων μετά από οποιαδήποτε αποτυχία. Κάποια ερευνητική

δουλειά έχει γίνει για την παροχή αξιόπιστης επικοινωνίας SOAP μηνυμάτων με εγγυημένη παράδοση,

χωρίς διπλότυπα και εγγυημένη διατεταγμένη σειρά μηνυμάτων.

Διάσχιση firewalls: οι περισσότεροι οργανισμοί που προσφέρουν υπηρεσίες ιστού, χρησιμοποιούν

firewall για να προστατέψουν πόρους των δικτύων τους. Αυτά τα firewalls τυπικά δεν επιτρέπουν να

περάσουν Java RMI ή CORBA πρωτόκολλα, συνήθως όμως επιτρέπουν HTTP και SMTP μηνύματα. Άρα,

είναι βολική η χρήση αυτών των πρωτοκόλλων για τη μεταφορά SOAP μηνυμάτων.

Άσκηση αυτοαξιολόγησης 9.2

Ποιος είναι ο ρόλος του πρωτοκόλλου SOAP; Πως δομούνται τα SOAP μηνύματα; Ποιος ο ρόλος των

SOAP επικεφαλίδων; Πως επιτυγχάνεται ο διαχωρισμός του SOAP μηνύματος από το πρωτόκολλο που

χρησιμοποιείται για τη μεταφορά του;

Άσκηση αυτοαξιολόγησης 9.3

Ποια προβλήματα αντιμετωπίζουν οι τεχνικές WS-Routing και WS-Addressing και σε τι διαφέρουν

μεταξύ τους;

2.2 Σύγκριση υπηρεσιών ιστού και μοντέλου κατανεμημένων αντικειμένων

Μια υπηρεσία ιστού έχει μια διεπαφή υπηρεσίας που επιτρέπει προσπέλαση και ενημέρωση των

πόρων δεδομένων που διαχειρίζεται. Σε ένα επιφανειακό επίπεδο, η αλληλεπίδραση μεταξύ πελάτη

Page 160: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

160

και εξυπηρετητή είναι παρόμοια με του RMI, όπου ο πελάτης χρησιμοποιεί μια αναφορά

απομακρυσμένου αντικειμένου για να καλέσει μια λειτουργία σε ένα απομακρυσμένο αντικείμενο. Για

μια υπηρεσία ιστού, ο πελάτης χρησιμοποιεί ένα URI για να καλέσει μια λειτουργία σε έναν πόρο που

αντιπροσωπεύεται από το URI. Σε αυτή την ενότητα θα δείξουμε ότι η παραπάνω αναλογία έχει όρια.

Οι αναφορές απομακρυσμένων αντικειμένων δεν είναι πολύ παρόμοιες με τα URIs: στο μοντέλο

κατανεμημένων αντικειμένων μπορούν να δημιουργηθούν δυναμικά απομακρυσμένα αντικείμενα και

να επιστραφούν αναφορές σε αυτά (ο λήπτης των αναφορών μπορεί να τις χρησιμοποιήσει για να

καλέσει λειτουργίες στα αντικείμενα στα οποία αναφέρονται). Τέτοια δυνατότητα δεν υπάρχει στις

υπηρεσίες ιστού, οι οποίες δεν μπορούν να δημιουργήσουν στιγμιότυπα απομακρυσμένων

αντικειμένων.

Μοντέλο υπηρεσιών ιστού: οι χρήστες του Java web services toolkit (JAX-RPC) πρέπει να

μοντελοποιήσουν τα προγράμματα υπηρεσιών ιστού ώστε να φαίνεται ότι δε χρησιμοποιούν Java-

προς-Java απομακρυσμένες κλήσεις αλλά χρησιμοποιούν το μοντέλο υπηρεσιών ιστού, στο οποίο δεν

μπορούν να δημιουργηθούν απομακρυσμένα αντικείμενα. Αυτό λαμβάνεται υπόψη από το JAX-RPC το

οποίο δεν επιτρέπει να περάσουν αναφορές σε απομακρυσμένα αντικείμενα ως παράμετροι ή να

επιστραφούν ως αποτελέσματα.

Servants: στο μοντέλο κατανεμημένων αντικειμένων, το πρόγραμμα εξυπηρετητή συνήθως

μοντελοποιείται ως μια συλλογή από servants (πιθανώς απομακρυσμένα αντικείμενα). Οι υπηρεσίες

ιστού δεν υποστηρίζουν servants. Για να επιβληθεί αυτή η έλλειψη υποστήριξης, οι υλοποιήσεις των

διεπαφών υπηρεσιών ιστού δεν επιτρέπεται να έχουν κατασκευαστές (constructors) ή main μεθόδους.

Άσκηση αυτοαξιολόγησης 9.4

Συνοψίστε τα χαρακτηριστικά στα οποία διαφέρουν οι υπηρεσίες ιστού από το μοντέλο

κατανεμημένων αντικειμένων.

2.3 H χρήση του SOAP με Java To Java API για την ανάπτυξη υπηρεσιών ιστού πάνω από SOAP λέγεται JAX-RPC. Αυτό το API κρύβει

όλες τις λεπτομέρειες του SOAP από τους προγραμματιστές σε αμφότερες τις υπηρεσίες και τους

πελάτες. Το JAX-RPC αντιστοιχίζει κάποιους επιτρεπτούς τύπους της γλώσσας Java σε ορισμούς της

XML που χρησιμοποιούνται στα SOAP μηνύματα και στις περιγραφές μηνυμάτων. Επιπλέον,

στιγμιότυπα κάποιων κλάσεων μπορούν να περάσουν ως παράμετροι και αποτελέσματα

απομακρυσμένων κλήσεων. Τιμές τύπων που είναι απομακρυσμένες αναφορές δεν μπορούν να

περάσουν ως παράμετροι ή να επιστραφούν ως αποτελέσματα απομακρυσμένων κλήσεων.

Η διεπαφή της υπηρεσίας: το Java interface μιας υπηρεσίας ιστού πρέπει να συμμορφώνεται σε ένα

σύνολο κανόνων.

Το πρόγραμμα εξυπηρετητή: η κλάση που υλοποιεί το Java interface της διεπαφής δεν έχει main

μέθοδο ούτε κατασκευαστή. Το interface και η υλοποίησή του μεταγλωττίζονται ως συνήθως. Ένα

ζεύγος εργαλείων χρησιμοποιείται για να δημιουργήσει το σκελετό κλάσης (skeleton class) και την

Page 161: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

161

περιγραφή της υπηρεσίας (σε WSDL), χρησιμοποιώντας πληροφορία που αφορά τη URL της υπηρεσία,

το όνομά της και την περιγραφή από ένα αρχείο διαμόρφωσης γραμμένο σε XML.

Το δοχείο Servlet: η υλοποίηση της υπηρεσίας τρέχει ως servlet μέσα σε ένα δοχείο servlet (servlet

container) το οποίο φορτώνει, αρχικοποιεί και εκτελεί servlets. Το δοχείο servlet περιλαμβάνει έναν

αποστολέα (dispatcher) και σκελετούς. Όταν φθάσει μία αίτηση, ο αποστολέας την αντιστοιχίζει σε ένα

σκελετό, ο οποίος τη μεταφράζει σε Java και περνάει την αίτηση στην κατάλληλη μέθοδο του servlet

που διεκπεραιώνει την αίτηση και παράγει μια απάντηση, την οποία ο σκελετός μεταφράζει πίσω σε

μια SOAP απάντηση. Η URL της υπηρεσίας αποτελεί συνένωση της URL του δοχείου servlet και της

κατηγορίας και ονόματος της υπηρεσίας. Ο Tomcat είναι ένα συχνά χρησιμοποιούμενο δοχείο servlet.

Ο Tomcat παρέχει και πρόσβαση στην περιγραφή υπηρεσίας κάθε μιας υπηρεσίας του, επιτρέποντας

σε προγραμματιστές να σχεδιάσουν πελάτες και διευκολύνοντας την αυτόματη μεταγλώττιση των

πληρεξούσιων που απαιτούνται από τον κώδικα του πελάτη. Η περιγραφή της υπηρεσίας είναι

αναγνώσιμη από ανθρώπους καθώς γράφεται σε XML.

Το πρόγραμμα πελάτη: το πρόγραμμα πελάτη μπορεί να χρησιμοποιήσει στατικούς πληρεξούσιους,

δυναμικούς πληρεξούσιους ή μια διεπαφή δυναμικής κλήσης:

� Στατικοί πληρεξούσιοι: ένας πελάτης μπορεί να κάνει μια κλήση μέσω ενός πληρεξούσιου, ενός

τοπικού αντικειμένου που περνάει μηνύματα σε μια απομακρυσμένη υπηρεσία. Ο κώδικας του

πληρεξούσιου δημιουργείται από το εργαλείο wscompile χρησιμοποιώντας την περιγραφή

υπηρεσίας. Όταν ο πληρεξούσιος δημιουργείται σε χρόνο μεταγλώττισης, ονομάζεται στατικός

πληρεξούσιος.

� Δυναμικοί πληρεξούσιοι: αντί της χρήσης ενός προ-μεταγλωττισμένου στατικού πληρεξούσιου, ο

πελάτης μπορεί να χρησιμοποιήσει ένα δυναμικό πληρεξούσιο του οποίου η κλάση δημιουργείται

σε χρόνο εκτέλεσης (runtime) από την πληροφορίας περιγραφής υπηρεσίας και το interface της

υπηρεσίας. Με αυτή τη μέθοδο αποφεύγεται η ανάγκη να χρησιμοποιούνται ονόματα εξαρτώμενα

από την υλοποίηση για την κλάση πληρεξούσιου.

� Διεπαφή δυναμικής κλήσης: αυτή επιτρέπει σε ένα πελάτη να καλέσει μια απομακρυσμένη

διαδικασία ακόμα και αν η περιγραφή ή το όνομα της υπηρεσίας είναι άγνωστα μέχρι το χρόνο

εκτέλεσης.

Σε κάθε περίπτωση, η σχετική περιγραφή υπηρεσίας χρησιμοποιείται για να αντληθεί οποιαδήποτε

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

Tomcat.

Υλοποίηση του Java SOAP: εδώ εξηγούμε τους ρόλους των διαφόρων μονάδων του Java/SOAP

περιβάλλοντος (οι αλληλεπιδράσεις μεταξύ των μονάδων παραμένουν οι ίδιες):

� Μονάδες επικοινωνίας: τα καθήκοντα αυτών των μονάδων διεκπεραιώνονται από ένα ζεύγος HTTP

μονάδων. Η HTTP μονάδα στον εξυπηρετητή επιλέγει τον αποστολέα σύμφωνα με τη URL που

δίνεται στην action επικεφαλίδα της HTTP επικεφαλίδας.

Page 162: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

162

� Πληρεξούσιος πελάτη: μία μέθοδος πληρεξούσιου (ή στελέχους) γνωρίζει τη URL της υπηρεσίας και

τοποθετεί το όνομα και τις παραμέτρους της, μαζί με μια αναφορά σε ένα XML σχήμα μέσα σε έναν

SOAP φάκελο.

� Αποστολέας και σκελετός: ο αποστολέας και ο σκελετός ζουν σε ένα δοχείο servlets. Ο αποστολέας

εξάγει το όνομα της λειτουργίας από την επικεφαλίδα action της HTTP αίτησης και καλεί την

αντίστοιχη μέθοδο στον κατάλληλο σκελετό, περνώντας του τον SOAP φάκελο.

� Λάθη, σφάλματα και ορθότητα στο Java/SOAP: σφάλματα μπορούν να αναφερθούν από την HTTP

μονάδα, τον αποστολέα, το σκελετό και την ίδια την υπηρεσία.

Δραστηριότητα 9.6

Να δημιουργήστε στο περιβάλλον IDE NetBeans ένα πελάτη υπηρεσίας ιστού του Amazon.com ο

οποίος θα εμφανίζει το αποτέλεσμα της αναζήτησης ενός τίτλου βιβλίου: (α) Java client (το

περιεχόμενο της SOAP απάντησης εμφανίζεται στη γραφική διεπαφή μιας Java εφαρμογής), (β)

Javascript client (το περιεχόμενο της SOAP απάντησης εμφανίζεται σε μια ιστοσελίδα). Επεκτείνετε την

εφαρμογή συνδυάζοντας την υπηρεσία του Amazon.com με αντίστοιχη άλλου online βιβλιοπωλείου

ώστε να συγκρίνονται οι τιμές που προσφέρουν στα ίδια προϊόντα.

Δραστηριότητα 9.7

Δημιουργήστε έναν πελάτη (JSP ή Java Servlet ή Java application) για μια υπηρεσία ιστού ενημέρωσης

για καιρικές συνθήκες. Μπορείτε να χρησιμοποιήσετε την περιγραφή (WSDL) μιας δωρεάν τέτοιας

υπηρεσίας με URL: http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl. Αναπτύξτε τον client σε δύο

διαφορετικές μορφές:

� SimpleWeather client εμφανίζει το όνομα μιας πόλης των ΗΠΑ, καθώς και την τρέχουσα

θερμοκρασία (σε κλίμακα Fahrenheit) και περιγραφή του καιρού σε αυτήν χρησιμοποιώντας τη

μέθοδο GetCityWeatherByZIP, περνώντας σε αυτή ένα στατικό ταχυδρομικό κώδικα (Zip code) που

είναι γραμμένος μέσα στον Java κώδικα (hardcoded).

� DynamicWeather client δέχεται δυναμικά το Zip code από μια HTML φόρμα και εμφανίζει την

τρέχουσα θερμοκρασία (σε κλίμακα Fahrenheit και Celcius) καθώς και την ελάχιστη/μέγιστη

θερμοκρασία για τις επόμνες 6ημέρες (χρησιμοποιώντας τη μέθοδο GetCityForecastByZIP).

Άσκηση αυτοαξιολόγησης 9.5

Δημιουργήστε στο περιβάλλον IDE NetBeans ένα web service το οποίο περιέχει στατικές (“hardcoded”)

πληροφορίες για διαθέσιμα ταξιδιωτικά ταξίδια στη μορφή: αφετηρία - προορισμός – ημερομηνία –

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

άλλη δομή της επιλογής σας (φυσικά, σε μια πραγματική εφαρμογή θα ανακτούνταν από μια σχεσιακή

ΒΔ). H υπηρεσία αυτή δέχεται SOAP αιτήσεις με παραμέτρους την αφετηρία, προορισμό και

ημερομηνία του επιθυμητού ταξιδιού και επιστρέφει τα ταξίδια (εφόσον υπάρχουν) που ικανοποιούν

αυτά τα κριτήρια. Αν δεν υπάρχουν, επιστρέφεται ένα σχετικό μήνυμα. Δημιουργήστε και έναν πελάτη

της παραπάνω υπηρεσίας ιστού που στέλνει αιτήσεις και εμφανίζει της απαντήσεις της υπηρεσίας.

Page 163: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

163

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

σχεδιαστεί για να χρησιμοποιούνται. Η CORBA σχεδιάστηκε για χρήση σε έναν οργανισμό ή ένα σύνολο

συνεργαζόμενων οργανισμών.

Θέματα ονομασίας: στην CORBA, κάθε αντικείμενο αναφέρεται μέσω ενός ονόματος το οποίο

διαχειρίζεται κάποιο στιγμιότυπο της CORBA υπηρεσίας ονομάτων. Αυτή η υπηρεσία, όπως η DNS,

παρέχει μια αντιστοίχιση ενός ονόματος σε μια τιμή που χρησιμοποιείται ως διεύθυνση. Σε αντίθεση

όμως με την DNS, η υπηρεσία ονομάτων CORBA σχεδιάστηκε για χρήση σε έναν οργανισμό και όχι σε

όλο το Internet.

Θέματα αναφορών: κάθε αναφορά απομακρυσμένου αντικειμένου στην CORBA (λέγεται IOR) περιέχει

μια θυρίδα που ορίζει το αναγνωριστικό τύπου του interface του αντικειμένου που αναφέρει. Ωστόσο,

αυτό το αναγνωριστικό τύπου είναι κατανοητό μόνο από την αποθήκη interfaces που διατηρεί τον

ορισμό του συγκεκριμένου τύπου (συνεπώς, ο πελάτης και ο εξυπηρετητής θα πρέπει να

χρησιμοποιούν την ίδια αποθήκη, κάτι που είναι ανεφάρμοστη σε καθολική κλίμακα). Αντίθετα, στο

μοντέλο των υπηρεσιών ιστού μία υπηρεσία ορίζεται από μία URL, επιτρέποντας σε έναν πελάτη

οπουδήποτε στο Internet να κάνει μία αίτηση στην υπηρεσία. Άρα, μία υπηρεσία ιστού μπορεί να

μοιράζεται από πελάτες σε όλο το Internet.

Διαχωρισμός ενεργοποίησης και εντοπισμού: τα καθήκοντα του εντοπισμού και ενεργοποίησης

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

αντίστοιχο αντικείμενο αναφοράς όταν απαιτηθεί, σε κάποιο κατάλληλο Η/Υ.

Ευκολία χρήσης: οι HTTP και XML υποδομές των υπηρεσιών ιστού είναι κατανοητές και βολικές στη

χρήση ενώ είναι ήδη εγκατεστημένες στα πιο διαδεδομένα λειτουργικά συστήματα. Αντίθετα, η

πλατφόρμα CORBA αποτελεί ένα μεγάλο και πολύπλοκο λογισμικό το οποίο απαιτεί εγκατάσταση και

υποστήριξη.

Αποδοτικότητα: η CORBA σχεδιάστηκε ώστε να είναι αποδοτική - το CORBA CDR είναι δυαδικό ενώ η

XML σε μορφή κειμένου. Έχει βρεθεί ότι οι SOAP αιτήσεις είναι πολύ μεγαλύτερες και πιο αργές από τις

κλήσεις CORBA.

Τα πλεονεκτήματα της CORBA: γενικά, η CORBA αποτελεί μια καλή επιλογή για εφαρμογές που

απαιτούν πολύπλοκες αλληλεπιδράσεις, στο πλαίσιο ενός οργανισμού ή μιας ομάδας σχετιζόμενων

οργανισμών.

Άσκηση αυτοαξιολόγησης 9.6

Συγκρίνετε τις υπηρεσίες ιστού έναντι της CORBA ως προς τα θέματα ονομάτων και αναφοράς, την

ευκολία χρήσης και την απόδοση.

Page 164: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

164

3. Περιγραφές υπηρεσιών και IDL για υπηρεσίες ιστού Οι ορισμοί διεπαφών είναι απαραίτητοι, καθώς επιτρέπουν σε πελάτες να επικοινωνήσουν με

υπηρεσίες. Στις υπηρεσίες ιστού, οι ορισμοί διεπαφών παρέχονται ως μέρος μιας πιο γενικής

περιγραφής υπηρεσίας (service description), η οποία προσδιορίζει και δύο πρόσθετα χαρακτηριστικά:

τον τρόπο επικοινωνίας των μηνυμάτων (π.χ. μέσω SOAP πάνω από HTTP) και το URI της υπηρεσίας. Οι

περιγραφές υπηρεσίας γράφονται σε XML ώστε να μπορούν να χρησιμοποιηθούν σε πολύ-γλωσσικά

περιβάλλοντα. Μια περιγραφή υπηρεσίας αποτελεί τη βάση μιας συμφωνίας μεταξύ ενός πελάτη και

ενός εξυπηρετητή ως προς το τι προσφέρει η υπηρεσία. Οι περιγραφές υπηρεσιών γενικά

χρησιμοποιούνται για να δημιουργηθούν στελέχη πελατών (client stubs) που αυτόματα υλοποιούν τη

σωστή συμπεριφορά στον πελάτη. Η μονάδα μιας περιγραφής υπηρεσίας που μοιάζει με IDL είναι πιο

ευέλικτη από άλλα IDL, ως προς το ότι η υπηρεσία μπορεί να προσδιοριστεί είτε με βάση τους τύπους

μηνυμάτων που ανταλλάσσονται είτε με βάση τις λειτουργίες που υποστηρίζει. Επιπλέον, η

δυνατότητα προσδιορισμού ενός URI της υπηρεσίας ως μέρος της περιγραφής υπηρεσίας αφαιρεί την

ανάγκη χρήσης ξεχωριστών ονομάτων αντίστοιχων με εκείνων που χρησιμοποιούν τα περισσότερα

συστήματα ενδιάμεσου λογισμικού. Έχει ωστόσο την επίπτωση ότι το URI δεν μπορεί να αλλάξει

αφότου η περιγραφή υπηρεσίας έχει διατεθεί σε πιθανούς πελάτες (αλλά το URN σχήμα προβλέπει την

αλλαγή θέσης).

Στο πλαίσιο των υπηρεσιών ιστού, η γλώσσα περιγραφής υπηρεσιών ιστού (web services description

language, WDSL) χρησιμοποιείται συχνά για περιγραφές υπηρεσιών. Ορίζει ένα XML σχήμα για την

αναπαράσταση στοιχείων της περιγραφής υπηρεσίας, τα οποία περιλαμβάνουν π.χ. τα ονόματα των

στοιχείων, ορισμούς, τύπους, μήνυμα, διεπαφή, στοιχεία δέσμευσης (bindings) και υπηρεσίες. Η WDSL

διαχωρίζει το αφηρημένο μέρος της περιγραφής υπηρεσίας από το συμπαγές μέρος. Το αφηρημένο

μέρος της περιγραφής περιλαμβάνει ένα σύνολο ορισμών των τύπων που χρησιμοποιούνται από την

υπηρεσία (ειδικότερα, τους τύπους των τιμών που ανταλλάσσονται μέσα σε μηνύματα).

Μηνύματα ή λειτουργίες: στις υπηρεσίες ιστού, ο πελάτης και εξυπηρετητής χρειάζονται απλά να έχουν

μια κοινή ιδέα σε σχέση με τα μηνύματα που ανταλλάσσονται. Για μια υπηρεσία που βασίζεται στην

ανταλλαγή ενός μικρού αριθμού διαφορετικών τύπων ενός εγγράφου, η WDSL ακριβώς περιγράφει

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

τα μηνύματα σε μια υπηρεσία ιστού, η τελευταία ξέρει αποφασίζει λειτουργία να εκτελέσει και τι

τύπου μήνυμα να επιστρέψει στον πελάτη.

Διεπαφή: οι λειτουργίες που προσφέρονται από μια υπηρεσία ιστού ομαδοποιούνται σε ένα XML

στοιχείο που ονομάζεται διεπαφή (interface) και ενίοτε portType. Κάθε λειτουργία πρέπει να

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

επιλογή είναι η In-Out που συχνότητα χρησιμοποιείται σε μιας μορφής αίτησης-απάντησης

επικοινωνία μεταξύ πελάτη-εξυπηρετητή (σε αυτό το πρότυπο, η απάντηση μπορεί να αντικατασταθεί

από ένα μήνυμα λάθους). Παρέχονται επίσης οι επιλογές In-Only και Out-Only (μηνύματα μιας

διαδρομής από τον πελάτη προς τον εξυπηρετητή και αντίστροφα), Robust-In-Only και Robust-Out-Only

(τα αντίστοιχα μηνύματα με εγγυημένη παράδοση) και Out-In (αλληλεπίδραση αίτησης-απάντησης την

οποία ξεκινάει ο εξυπηρετητής).

Page 165: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

165

Κληρονομικότητα: μια WSDL διεπαφή μπορεί να κληρονομεί κάποια άλλη, ώστε να υποστηρίξει τις

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

Συμπαγές μέρος: το υπόλοιπο (συμπαγές) μέρος ενός WSDL εγγράφου αποτελείται από το στοιχείο

δέσμευσης (bindings) και την υπηρεσία (service).

� Στοιχείο δέσμευσης: προσδιορίζει τις μορφοποιήσεις μηνυμάτων και μορφές αναπαράστασης

εξωτερικών δεδομένων που χρησιμοποιούνται. Για παράδειγμα, οι υπηρεσίες ιστού χρησιμοποιούν

συχνά SOAP, HTTP και MIME.

� Υπηρεσία: κάθε στοιχείο υπηρεσίας σε ένα WSDL έγγραφο προσδιορίζει το όνομα της υπηρεσίας

και ένα ή περισσότερα ακραία σημεία (endpoints ή ports) στα οποία μπορεί να έρθει σε επαφή ένα

στιγμιότυπο της υπηρεσίας.

Τεκμηρίωση: πληροφορία αναγνώσιμη από ανθρώπους και μηχανές μπορεί να προστεθεί σε ένα

στοιχείο τεκμηρίωσης (documentation element) στα περισσότερα σημεία ενός WSDL εγγράφου.

Χρήση WDSL: ολοκληρωμένα WSDL έγγραφα μπορούν να προσπελαστούν μέσω των URIs τους από

πελάτες και εξυπηρετητές, είτε άμεσα είτε έμμεσα μέσω μιας υπηρεσίας καταλόγου όπως το UDDI.

Υπάρχουν εργαλεία διαθέσιμα για τη δημιουργία WDSL ορισμών από πληροφορία που παρέχεται μέσω

μιας εύχρηστης γραφικής διεπαφής.

Δραστηριότητα 9.8

Ποιο στόχο εξυπηρετεί η WDSL; Ποια τα κύρια στοιχεία μιας WDSL περιγραφής και ποια τα πρότυπα

ανταλλαγής μηνυμάτων για WDSL λειτουργίες;

4. Μια υπηρεσία καταλόγου για χρήση με υπηρεσίες ιστού Ένας οργανισμός που σχεδιάζει να βασίσει τις εφαρμογές του σε υπηρεσίες ιστού, είναι βολικό να

χρησιμοποιήσει μια υπηρεσία καταλόγου για να δημοσιοποιήσει αυτές τις υπηρεσίες σε πελάτες.

Αυτός είναι ο στόχος του παγκόσμιου καταλόγου ανακάλυψης υπηρεσιών (universal directory and

discovery service, UDDI), ο οποίος παρέχει μια υπηρεσία ονομάτων (όπου οι WDSL περιγραφές

αναζητούνται βάσει ονόματος, όπως στην υπηρεσία «λευκών σελίδων») και μια υπηρεσία καταλόγου

(όπου οι WDSL περιγραφές αναζητούνται βάσει κάποιου χαρακτηριστικού, όπως στην υπηρεσία

«κίτρινων σελίδων»). Επίσης, οι WDSL περιγραφές μπορούν να προσπελαστούν μέσω των URLs τους, το

οποίο είναι βολικό για όσους σχεδιάζουν προγράμματα πελατών που χρησιμοποιούν κάποια υπηρεσία.

Δομές δεδομένων: τα δεδομένα του UDDI οργανώνονται βάσει τεσσάρων δομών:

� businessEntity: περιγράφει τον οργανισμό που παρέχει τις υπηρεσίες ιστού

� businessServices: αποθηκεύει πληροφορία σχετική με ένα σύνολο στιγμιότυπων της υπηρεσίας,

όπως το όνομά της και η περιγραφή του στόχου της

� bindingTemplate: δηλώνει τη διεύθυνση του στιγμιότυπου της υπηρεσίας ιστού

� tModel: διατηρεί περιγραφές υπηρεσιών, συνήθως WDSL έγγραφα, που αποθηκεύονται έξω από

τη ΒΔ και προσπελαύνονται μέσω URLs

Page 166: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

166

Καθεμία από τις παραπάνω δομές προσπελαύνεται μέσω ενός αναγνωριστικού που ονομάζεται κλειδί

(key), εξαιρουμένης της tModel που προσπελαύνεται μέσω μιας URL.

Αναζήτηση: το UDDI παρέχει ένα API για την αναζήτηση υπηρεσιών, βασιζόμενο σε δύο σύνολα

λειτουργιών ερωτήσεων. Οι πελάτες που κατέχουν ένα συγκεκριμένο κλειδί, μπορούν να

χρησιμοποιήσουν μια get_xxx λειτουργία για να ανακτήσουν άμεσα την αντίστοιχη οντότητα. Άλλοι

πελάτες μπορούν να χρησιμοποιήσουν μια find_xxx λειτουργία σταδιακά «στενεύοντας» την

αναζήτησή τους. Επιπλέον, το UDDI παρέχει μια διεπαφή ενημέρωσης/εγγραφής ώστε οι πελάτες να

καταχωρήσουν ενδιαφέρον σε ένα συγκεκριμένο σύνολο οντοτήτων στο UDDI μητρώο (registry).

Δημοσίευση: το UDDI παρέχει μια διεπαφή για τη δημοσίευση και ενημέρωση πληροφοριών σχετικών

με υπηρεσίες ιστού. Την πρώτη φορά που δημοσιεύεται μια δομή δεδομένων σε έναν UDDI

εξυπηρετητή, της δίνεται ένα κλειδί υπό μορφή URI, και αυτός ο εξυπηρετητής γίνεται ο ιδιοκτήτης της.

Μητρώα: η UDDI υπηρεσία βασίζεται σε αντίγραφα δεδομένων που αποθηκεύονται σε μητρώα. Ένα

UDDI μητρώο αποτελείται από έναν ή περισσότερους εξυπηρετητές, καθένας από τους οποίους

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

ερωτήσεις και να δημοσιεύσει πληροφορία.

� Σχήμα αντιγραφής: τα μέλη ενός μητρώου διαδίδουν αντίγραφα των δομών δεδομένων ως εξής:

ένας εξυπηρετητής που έχει κάνει κάποια αλλαγή ειδοποιεί τους υπολοίπους εξυπηρετητές του

μητρώου, οι οποίοι τότε ζητούν τις αλλαγές. Ένα είδος χρονοσφραγίδας χρησιμοποιείται για να

καθορίσει ποια από τις αλλαγές πρέπει να διαδοθεί και εφαρμοστεί.

� Αλληλεπίδραση μεταξύ εξυπηρετητών: πέραν της επικοινωνίας για τη διεκπεραίωση του σχήματος

αντιγραφής, οι εξυπηρετητές επικοινωνούν για να μεταφέρουν την ιδιοκτησία δομών δεδομένων.

Άσκηση αυτοαξιολόγησης 9.7

Ποια η διαφορά μεταξύ αναζήτησης υπηρεσιών ιστού μέσω ονόματος εν συγκρίσει με την αναζήτηση

βάσει καταλόγου. Αναφέρατε δύο παραδείγματα για κάθε περίπτωση.

Άσκηση αυτοαξιολόγησης 9.8

Εξηγήστε τη σκοπιμότητα του UDDI. Ποιες δομές δεδομένων και τρόπους αναζήτησης και δημοσίευσης

χρησιμοποιεί;

Δραστηριότητα 9.9

Χρησιμοποιήστε ένα εργαλείο (π.χ. το UDDI Explorer:

http://www.codeproject.com/KB/cpp/uddiexplorer.aspx) για να αναζητήσετε μια υπηρεσία ιστού που

παρέχει πληροφορίες καιρικών συνθηκών.

Δραστηριότητα 9.10

Δημιουργήστε μια υπηρεσία ιστού και αποθηκεύστε τη μέσω UDDI σε ένα δημόσιο κατάλογο.

Page 167: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

167

5. XML ασφάλεια Η XML ασφάλεια αποτελείται από ένα σύνολο σχετικών σχεδιασμών του W3C για υπογραφή,

διαχείριση κλειδιών και κρυπτογράφηση. Αφορά στη συνεργατική εργασία πάνω από το Internet και

περιλαμβάνει έγγραφα των οποίων τα περιεχόμενα μπορεί να χρειαστούν αυθεντικοποίηση ή

κρυπτογράφηση. Τυπικά, αυτά τα έγγραφα δημιουργούνται, ανταλλάσσονται και αποθηκεύονται και

ανταλλάσσονται εκ νέου, πιθανόν αφότου έχουν τροποποιηθεί από σειρά διαφορετικών χρηστών.

Ως παράδειγμα που καταδεικνύει τη χρησιμότητα της XML ασφάλειας, θα μπορούσε να αναφερθεί ένα

έγγραφο που περιλαμβάνει ιατρικά στοιχεία ενός ασθενούς. Διαφορετικά μέρη του εγγράφου

χρησιμοποιούνται στο χειρουργείο και στα νοσοκομεία που έχει επισκεφτεί ο ασθενής και

ενημερώνονται από γιατρούς, νοσοκόμους, διοικητικό προσωπικό, κλπ. Συγκεκριμένα μέρη πρέπει

επίσης να μπορούν να αποδοθούν σε ένα συγκεκριμένο πρόσωπο (π.χ. μια ιατρική συνταγή σε ένα

γιατρό που την έγραψε) με εγγύηση μη τροποποίησης. Αυτές οι ανάγκες δεν μπορούν να

ικανοποιηθούν από το TLS – Transport Layer Security (προηγούμενα γνωστό ως SSL – Secure Sockets

Layer) που χρησιμοποιείται για να δημιουργήσει ασφαλή κανάλια για την επικοινωνία πληροφορίας.

Για να υποστηριχθούν οι παραπάνω απαιτήσεις, η ασφάλεια πρέπει να προσδιορισθεί μέσα στο

έγγραφο, και να εφαρμοστεί στο έγγραφο, και όχι ως ιδιότητα ενός καναλιού που θα το μεταφέρει από

ένα σημείο σε κάποιο άλλο. Αυτό είναι δυνατό στην XML και σε άλλες μορφές δομημένων εγγράφων.

Οι XML ετικέτες μπορούν να χρησιμοποιηθούν για να ορίσουν ιδιότητες των δεδομένων μέσα στο

έγγραφο. Ειδικότερα, η XML ασφάλεια εξαρτάται από νέες ετικέτες που ορίζουν την αρχή και το τέλος

τμημάτων κρυπτογραφημένων ή υπογεγραμμένων δεδομένων και υπογραφών.

Βασικές απαιτήσεις: η XML ασφάλεια οφείλει να παρέχει τουλάχιστον το ίδιο επίπεδο ασφάλειας με

την TLS, δηλαδή τη δυνατότητα κρυπτογράφησης και υπογραφής ολόκληρου ή τμήματος ενός

εγγράφου.

Πρόσθετες βασικές απαιτήσεις: πρόσθετες απαιτήσεις προκύπτουν από την ανάγκη αποθήκευσης

εγγράφων και -πιθανώς- τροποποίησης και αποστολής τους σε διάφορους λήπτες. Έτσι, υπάρχει

απαίτηση για: (α) παροχή δυνατότητας προσθήκης σε ένα υπογεγραμμένο έγγραφο και υπογραφής του

αποτελέσματος, (β) προσθήκη σε ένα έγγραφο με κρυπτογραφημένα τμήματα και κρυπτογράφησης

μέρους της νέας έκδοσης, και (γ) εξουσιοδότηση ορισμένων χρηστών να δουν διαφορετικά τμήματα

του εγγράφου.

Απαιτήσεις σχετικές με αλγορίθμους: τα XML ασφαλή έγγραφα υπογράφονται ή/και

κρυπτογραφούνται πριν αποφασιστεί ποιος θα τα χρησιμοποιεί. Σε περίπτωση που η οντότητα που τα

δημιούργησε δεν έχει πλέον ανάμιξη, δεν είναι δυνατόν να γίνει διαπραγμάτευση των πρωτοκόλλων.

Άρα:

� Το πρότυπο πρέπει να ορίζει μια σουίτα αλγορίθμων που θα παρέχονται σε κάθε υλοποίηση XML

ασφάλειας, με τη χρήση τουλάχιστον ενός αλγορίθμου κρυπτογράφησης ή υπογραφής να είναι

υποχρεωτική.

Page 168: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

168

� Οι αλγόριθμοι που χρησιμοποιούνται για κρυπτογράφηση και αυθεντικοποίηση ενός εγγράφου

πρέπει να επιλέγονται από τη σουίτα και τα ονόματά τους να μέσα στο XML έγγραφο.

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

πρέπει να επιλέγονται κατάλληλα κλειδιά, χωρίς διαπραγμάτευση με πρόσωπα που ενδέχεται να

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

χρήστες ασφαλών εγγράφων για εύρεση των απαραίτητων κλειδιών, και τη δυνατότητα συνεργασίας

μεταξύ χρηστών ώστε να αλληλοβοηθηθούν σε σχέση με τα κλειδιά.

Το στοιχείο KeyInfo: η XML ασφάλεια προδιαγράφει ένα KeyInfo στοιχείο που δείχνει το κλειδί που

πρέπει να χρησιμοποιηθεί για να επικυρωθεί η εφαρμογή ή για να αποκρυπτογραφηθούν κάποια

δεδομένα.

Κανονική XML: κάποιες εφαρμογές μπορεί να επιφέρουν αλλαγές χωρίς επίδραση στο πληροφοριακό

περιεχόμενο του XML εγγράφου (π.χ. να αλλάξουν τη σειρά ιδιοτήτων ή να χρησιμοποιήσουν

διαφορετικές κωδικοποιήσεις χαρακτήρων). Η κανονική XML (Canonical XML) σχεδιάστηκε ώστε να

χρησιμοποιείται με ψηφιακές υπογραφές, οι οποίες μπορούν να εγγυηθούν ότι το περιεχόμενο ενός

εγγράφου δεν έχει μεταβληθεί. Τα XML στοιχεία κανονικοποιούνται πριν υπογραφούν και το όνομα

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

χρησιμοποίηση του ίδιου αλγορίθμου στην επικύρωση της υπογραφής.

Χρήση ψηφιακών υπογραφών στην XML: η προδιαγραφή των ψηφιακών υπογραφών στην XML

αποτελεί σύσταση του W3C που ορίζει νέους τύπους XML στοιχείων για να κρατήσουν τις υπογραφές,

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

Υπηρεσία διαχείρισης κλειδιών: η προδιαγραφή της υπηρεσίας διαχείρισης κλειδιών στην XML περιέχει

πρωτόκολλα για την κατανομή και καταχώρηση δημοσίων κλειδιών για χρήση σε XML υπογραφές. Οι

πελάτες μπορούν να χρησιμοποιήσουν αυτή την υπηρεσία για να βρουν το δημόσιο κλειδί ενός

προσώπου.

XML κρυπτογράφηση: το πρότυπο για κρυπτογράφηση στην XML ορίζεται σε μια W3C σύσταση που

προδιαγράφει τον τρόπο αναπαράστασης των κρυπτογραφημένων δεδομένων σε XML και τη

διαδικασία κρυπτογράφησης και αποκρυπτογράφησής τους. Εισαγάγει το στοιχείο EncyptedData για

να επισημειώσει τμήματα κρυπτογραφημένων δεδομένων.

Δραστηριότητα 9.11

Γιατί η TLS δεν μπορεί να ικανοποιήσει τις ανάγκες για ασφαλή δημιουργία, ανταλλαγή και

αποθήκευση εγγράφων από σειρά διαφορετικών χρηστών στο Internet; Πως -αντιθέτως- μπορεί να

ικανοποιήσει αυτές τις ανάγκες η XML ασφάλεια; Ποιες είναι οι -βασικές και πρόσθετες- απαιτήσεις

από την XML ασφάλεια;

Δραστηριότητα 9.12

Page 169: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

169

Αναφέρατε προδιαγραφές του W3C σχετικές με την XML ασφάλεια. Τι εργαλεία παρέχουν για τη χρήση

ψηφιακών υπογραφών και κρυπτογράφησης σε XML έγγραφα που διακινούνται στο Internet;

6. Συντονισμός υπηρεσιών ιστού Πολλές χρήσιμες εφαρμογές περιλαμβάνουν διάφορες αιτήσεις που πρέπει να διεκπεραιωθούν με

συγκεκριμένη σειρά. Όταν ο χρήστης αλληλεπιδρά με ιστοσελίδες, η διεπαφή της εφαρμογής που

προσφέρεται μέσω ενός περιηγητή και βασίζεται σε πληροφορία που παρέχεται από τον εξυπηρετητή,

ελέγχει τη σειρά εκτέλεσης των λειτουργιών. Όταν όμως αυτή η αλληλεπίδραση γίνεται από μια

υπηρεσία ιστού, τότε αυτή η υπηρεσία πρέπει να συνάγει από μια περιγραφή τον κατάλληλο τρόπο για

να προχωρήσει στην αλληλεπίδραση με άλλες υπηρεσίες που εκτελούν άλλες λειτουργίες. Συνεπώς,

διαφαίνεται η ανάγκη για υπηρεσίες ιστού που θα λειτουργούν ως πελάτες και στις οποίες θα

παρέχεται μια περιγραφή ενός συγκεκριμένου πρωτοκόλλου που πρέπει να ακολουθηθεί κατά την

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

συντονισμού υπηρεσιών ιστού, όπου -αντίστοιχα με το μοντέλο κατανεμημένων συναλλαγών-

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

πρωτόκολλα για να εκτελέσουν π.χ. μια κατανεμημένη συναλλαγή.

Θα ήταν δυνατόν να περιγραφούν όλες οι πιθανές εναλλακτικές διαδρομές μέσω του συνόλου των

αλληλεπιδράσεων μεταξύ ζευγών υπηρεσιών ιστού που συνεργάζονται σε ένα κοινό καθήκον. Εφόσον

υπήρχε διαθέσιμη τέτοια περιγραφή, θα μπορούσε να βοηθήσει το συντονισμό κοινών καθηκόντων.

Θα μπορούσε επίσης να λειτουργήσει ως προδιαγραφή που θα πρέπει να ακολουθούν νέες

υλοποιήσεις μιας υπηρεσίας, π.χ. μιας υπηρεσίας κράτησης αεροπορικών εισιτηρίων που θέλει να

λειτουργήσει συνεργατικά. Στο W3C χρησιμοποιείται ο όρος χορογραφία (choreography) για την

αναφορά σε μια γλώσσα βασισμένη στην WDSL για τον προσδιορισμό συνεργασιών.

Απαιτήσεις από τη χορογραφία: η χορογραφία προορίζεται για την υποστήριξη αλληλεπιδράσεων

μεταξύ υπηρεσιών ιστού τις οποίες γενικά διαχειρίζονται διαφορετικοί οργανισμοί. Μια συνεργασία

που περιλαμβάνει πολλαπλές υπηρεσίες ιστού και πελάτες πρέπει να περιγράφεται ως προς τα σύνολα

των παρατηρήσιμων αλληλεπιδράσεων μεταξύ ζευγών αυτών. Μια τέτοια συνεργασία πρέπει να

εμφανίζεται ως συμβόλαιο μεταξύ των συμμετεχόντων και να έχει διάφορες χρήσεις. Η χρήση μιας

κοινής περιγραφής χορογραφίας από ένα σύνολο συνεργαζόμενων υπηρεσιών ιστού πρέπει να έχει ως

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

ευκολότερο να αναπτύσσονται και εισάγονται νέες υπηρεσίες, καθιστώντας τη συνολική υπηρεσία πιο

χρήσιμη. Ένα W3C έγγραφο σχεδίου εργασίας (working draft) προτείνει μια σειρά από χαρακτηριστικά

τα οποία οφείλει να περιλαμβάνει μια γλώσσα χορογραφίας;

Γλώσσες για χορογραφία: η πρόθεση είναι να παραχθεί μια δηλωτική γλώσσα (declarative language)

βασισμένη στην XML για τον ορισμό χορογραφιών, η οποία θα χρησιμοποιεί WDSL ορισμούς.

Άσκηση αυτοαξιολόγησης 9.9

Page 170: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

170

Ποιες είναι οι προϋποθέσεις συνεργασίας και συντονισμού των λειτουργιών μεταξύ διαφορετικών

υπηρεσιών ιστού; Ορίστε τον όρο χορογραφία. Ποιες είναι οι κυριότερες απαιτήσεις από τη

χορογραφία;

7. Μελέτη περίπτωσης: το πλέγμα Το όνομα «Πλέγμα» (Grid) αναφέρεται σε ενδιάμεσο λογισμικό που έχει σχεδιαστεί για να επιτρέψει τη

διαμοίραση πόρων όπως αρχείων, Η/Υ, λογισμικού, δεδομένων και αισθητήρων σε πολύ μεγάλη

κλίμακα. Τους πόρους αυτούς τυπικά μοιράζονται ομάδες χρηστών από διαφορετικούς οργανισμούς

που συνεργάζονται στη λύση προβλημάτων τα οποία απαιτούν μεγάλο αριθμό Η/Υ για την επίλυσή

τους, είτε με τη διαμοίραση δεδομένων είτε με τη διαμοίραση υπολογιστικής ισχύος. Σε αυτή την

ενότητα παρουσιάζεται το παγκόσμιο τηλεσκόπιο (world-wide telescope), μια εφαρμογή απαιτητική σε

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

σχεδιαστεί το Πλέγμα.

7.1 Το παγκόσμιο τηλεσκόπιο – μια εφαρμογή πλέγματος Αυτό το έργο αφορά στην ανάπτυξη των πόρων δεδομένων τους οποίους μοιράζεται η αστρονομική

κοινότητα. Κύριος στόχος του έργου είναι η ενοποίηση των παγκόσμιων αστρονομικών αρχείων σε μια

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

δεδομένα, σύνολα δεδομένων (datasets) και δεδομένα προσομοίωσης.

7.2 Τα χαρακτηριστικά μιας οικογένειας επιστημονικών εφαρμογών απαιτητικών σε δεδομένα

Στο παγκόσμιο τηλεσκόπιο, τα δεδομένα συλλέγονται από επιστημονικά όργανα, αποθηκεύονται σε

αρχεία (archives) -πιθανά- σε διαφορετικές τοποθεσίες, διαχειρίζονται από ομάδες επιστημόνων που

ανήκουν σε διαφορετικούς οργανισμούς ενώ έχουν τεράστιο και εκθετικά αυξανόμενο όγκο. Λόγω του

όγκου τους, η μεταφορά των δεδομένων, μέσω ftp ή web, δεν είναι εφικτή. H επεξεργασία των

ακατέργαστων δεδομένων πρέπει να εκτελείται στη θέση όπου συλλέγονται και εν συνεχεία να

αποθηκεύονται σε βάση δεδομένων. Άρα, συνάγονται οι παρακάτω απαιτήσεις:

� Απομακρυσμένη πρόσβαση σε πόρους.

� Επεξεργασία των δεδομένων στη θέση όπου αποθηκεύονται και διαχειρίζονται.

� Ο διαχειριστής πόρων του αρχείου δεδομένων πρέπει να μπορεί να δημιουργεί υπηρεσίες

δυναμικά για να αντιμετωπίσουν το συγκεκριμένο τμήμα δεδομένων που ζητείται.

� Μεταδεδομένα περιγραφής: χαρακτηριστικά των δεδομένων σε ένα αρχείο και χαρακτηριστικά της

υπηρεσίας που διαχειρίζεται αυτά τα δεδομένα.

� Υπηρεσίες καταλόγου βασισμένες σε αυτά τα μεταδεδομένα.

� Λογισμικό που διαχειρίζεται ερωτήματα (queries), μεταφορές δεδομένων, και εκ των προτέρων

δέσμευση πόρων.

Οι υπηρεσίες ιστού μπορούν να ικανοποιήσουν τις πρώτες δύο απαιτήσεις, προϋποθέτοντας ότι κάθε

εφαρμογή θα παρέχει μία περιγραφή υπηρεσίας που θα περιλαμβάνει ένα σύνολο μεθόδων για την

Page 171: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

171

προσπέλαση των δεδομένων της. Το ενδιάμεσο λογισμικό πλέγματος αντιμετωπίζει τις υπόλοιπες

απαιτήσεις.

7.3 Η αρχιτεκτονική ανοικτών υπηρεσιών πλέγματος Η αρχιτεκτονική ανοικτών υπηρεσιών πλέγματος (open grid services architecture, OGSA) είναι ένα

πρότυπο εφαρμογών πλέγματος που παρέχει ένα πλαίσιο μέσα στο οποίο ικανοποιούνται οι

απαιτήσεις που προαναφέρθηκαν. Τους πόρους διαχειρίζονται υπηρεσίες πλέγματος εξαρτώμενες από

την εφαρμογή, οι οποίες υλοποιούν πρότυπες διεπαφές υπηρεσιών πλέγματος και χρησιμοποιούν

πρότυπες υπηρεσίες πλέγματος που παρέχονται ως δύο ξεχωριστά στρώματα, τα OGSI και OGSA,

υπερκείμενα των υπηρεσιών ιστού.

7.4 Κάποια παραδείγματα εφαρμογών πλέγματος Παραδείγματα εφαρμογών που βασίζονται σε τεχνολογία πλέγματος περιλαμβάνουν:

� Εφαρμογές όπου τα δεδομένα (π.χ. δεδομένα δόνησης που καταγράφονται από αισθητήρες σε

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

ώστε να προσομοιωθεί ένας σεισμός, δεδομένα που προέρχονται από όργανα που συλλέγουν

φωτογραφίες του εγκεφάλου) διαχειρίζονται από ομάδες επιστημόνων διαφορετικών οργανισμών.

� Εφαρμογές απαιτητικές υπολογιστικά, όπως επεξεργασία δεδομένων που συλλέγεται από τον

ανιχνευτή σωματιδίων υψηλής ενέργειας του CERN και ο έλεγχος της βάσης δεδομένων

εκατομμυρίων μορίων φαρμάκων, ώστε να διαπιστωθεί αν εμποδίζουν τη δραστηριότητα πιθανών

πρωτεϊνών.

� Εφαρμογές εκτός του χώρου της επιστήμης και της μηχανικής, οι οποίες απαιτούν τη διαχείριση

κατανεμημένης κατάστασης (π.χ. ενός παιχνιδιού και ενός διαμοιραζόμενου χώρου εργασίας).

7.5 Η εργαλειοθήκη Globus Το Globus Project άρχισε το 1994 ως μια προσπάθεια για παροχή λογισμικού που ενσωματώνει και

προτυποποιεί λειτουργίες που απαιτούνται από μια οικογένεια εφαρμογών (υπηρεσίες καταλόγου,

ασφαλείας, διαχείρισης πόρων, κλπ). Η πρώτη Globus εργαλειοθήκη (toolkit) εμφανίστηκε το 1997. Η

OGSA εξελίχθηκε από τη δεύτερη έκδοσή της (ονομάστηκε GT2). Η Τρίτη έκδοση εμφανίστηκε το 2002.

Ονομάζεται GT3 και βασίζεται στην OGSA, άρα χτίστηκε πάνω σε υπηρεσίες ιστού. Αναπτύχθηκε από

την Globus Alliance και άλλους φορείς και είναι διαθέσιμη ως ανοιχτό λογισμικό. Το GT3 περιλαμβάνει

όλες τις διεπαφές του OGSI στρώματος, όπως Java κλάσεις συμβατές με το JAX-RPC.

Άσκηση αυτοαξιολόγησης 9.10

Τι είναι το «Πλέγμα» και για τι τύπου εφαρμογές έχει σχεδιαστεί; Δώστε τρία παραδείγματα αυτού του

τύπου εφαρμογών.

Άσκηση αυτοαξιολόγησης 9.11

Τι είναι το Globus Toolkit και πως μπορεί να χρησιμοποιηθεί για την υλοποίηση εφαρμογών

απαιτητικών σε δεδομένα ή σε επεξεργαστικούς πόρους;

Page 172: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

172

8. Περίληψη Σε αυτό το κεφάλαιο, δείξαμε ότι οι υπηρεσίες ιστού προέκυψαν από την ανάγκη παροχής υποδομής

για τη διασύνδεσης διαφορετικών οργανισμών. Αυτή η υποδομή γενικά χρησιμοποιεί το ευρέως

διαδεδομένο HTTP για τη μεταφορά μηνυμάτων μεταξύ πελατών και εξυπηρετητών πάνω από το

Internet και βασίζεται στη χρήση URIs για την αναφορά σε πόρους, XML για την αναπαράσταση

δεδομένων. Οι υπηρεσίες ιστού παρέχουν διεπαφές με σύνολα λειτουργιών που μπορούν να κληθούν

απομακρυσμένα. Μια υπηρεσία ιστού μπορεί να είναι πελάτης άλλης υπηρεσίας ιστού, επιτρέποντάς

της να ολοκληρώσει ή να συνδυάσει ένα σύνολο άλλων υπηρεσιών ιστού.

Το SOAP είναι το πρωτόκολλο επικοινωνίας που γενικά χρησιμοποιείται από υπηρεσίες ιστού και τους

πελάτες τους. XML και SOAP επεξεργαστές είναι διαθέσιμοι για όλες τις ευρέως χρησιμοποιούμενες

γλώσσες προγραμματισμού και λειτουργικά συστήματα. Περιγραφές υπηρεσιών προσδιορίζουν σε

πελάτες το πρωτόκολλο επικοινωνίας που θα χρησιμοποιηθεί (π.χ. SOAP), το URI της υπηρεσίας και

περιγραφή της διεπαφής της (ως σύνολο λειτουργιών ή μηνυμάτων που ανταλλάσσονται από τον

εξυπηρετητή και τον πελάτη).

Αναλύθηκε πώς η XML ασφάλεια σχεδιάστηκε για να παρέχει την απαραίτητη προστασία στα

περιεχόμενα ενός εγγράφου που ανταλλάσσεται από μέλη μιας ομάδας ανθρώπων, που έχουν

διαφορετικά καθήκοντα να εκτελέσουν πάνω στο έγγραφο. Τέλος, παρουσιάστηκε το ενδιάμεσο

λογισμικό πλέγματος που τρέχει πάνω από υπηρεσίες ιστού ώστε να υποστηριχθούν συνεργασίες

μεταξύ επιστημόνων ή μηχανικών που ανήκουν σε διαφορετικούς οργανισμούς.

Page 173: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

173

ΚΕΦΑΛΑΙΟ 10: Διομότιμα Συστήματα

Σκοπός Ο σκοπός του κεφαλαίου είναι να παρουσιάσει τις βασικές αρχές των διομότιμων (peer-to-peer, P2P)

συστημάτων, ενός παραδείγματος για την κατασκευή κατανεμημένων συστημάτων και εφαρμογών. Το

κεφάλαιο ορίζει βασικά προβλήματα στο χώρο των P2P συστημάτων, εστιάζει σε συστήματα P2P

ενδιάμεσου λογισμικού (ΕΛ) και αναλύει μια πλειάδα μελετών περιπτώσεων εφαρμογών.

Προσδοκώμενα αποτελέσματα Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Eξηγήσετε τη σκοπιμότητα ανάπτυξης διομότιμων συστημάτων στο Internet

• Αναφέρετε πέντε βασικά χαρακτηριστικά των διομότιμων συστημάτων

• Διακρίνετε τα χαρακτηριστικά των τριών γενεών διομότιμων συστημάτων

• Αναφέρετε δύο λειτουργικές και πέντε μη λειτουργικές απαιτήσεις των συστημάτων Ρ2Ρ ΕΛ

• Εξηγήσετε τα χαρακτηριστικά της υπερκείμενης δρομολόγησης

• Αναλύσετε τους αλγορίθμους δρομολόγησης στα συστήματα Pastry και Tapestry

• Αναφέρετε και συνοψίσετε τα χαρακτηριστικά των εφαρμογών Squirrel, OceanStore και Ivy

• Συνοψίσετε τις κυριότερες ωφέλειες και αδυναμίες των διομότιμων συστημάτων

Έννοιες κλειδιά Ivy, Napster, OceanStore, Pastry, Squirrel, Tapestry, Διομότιμα συστήματα, Διομότιμο ενδιάμεσο

λογισμικό, Καθολικά μοναδικά αναγνωριστικά (GUIDs), Κατανεμημένα συστήματα αρχείων,

Κατανεμημένος πίνακας κατακερματισμού, Προσωρινή web αποθήκευση, Συνάρτηση ασφαλούς

κατακερματισμού, Υπερκείμενη δρομολόγηση.

1. Εισαγωγή Ο στόχος των διομότιμων (peer-to-peer, P2P) συστημάτων είναι να επιτρέψει τη διαμοίραση

δεδομένων και πόρων σε πολύ μεγάλη κλίμακα εξαλείφοντας την απαίτηση ξεχωριστά διαχειριζόμενων

εξυπηρετητών και των υποδομών τους. Ο στόχος της επέκτασης δημοφιλών υπηρεσιών προσθέτοντας

νέους Η/Υ σε όσους ήδη τις φιλοξενούν είναι περιορισμένη όταν όλοι οι Η/Υ αποτελούν ιδιοκτησία και

διαχειρίζονται από έναν παροχέα υπηρεσιών, καθώς το κόστος διαχείρισης και επανάκαμψης από

λάθη τείνει να επικρατήσει. Το δικτυακό εύρος ζώνης που μπορεί να παρέχεται σε μία μόνο τοποθεσία

εξυπηρετητή πάνω από φυσικές ζεύξεις αποτελεί επίσης έναν σημαντικό περιορισμό.

Τα P2P συστήματα στοχεύουν στην υποστήριξη χρήσιμων κατανεμημένων υπηρεσιών και εφαρμογών

χρησιμοποιώντας δεδομένα και υπολογιστικούς πόρους διαθέσιμα σε Η/Υ στο Internet και σε άλλα

Page 174: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

174

δίκτυα, σε ολοένα και μεγαλύτερους αριθμούς. Ωστόσο, υπάρχει και ένας ευρύτερος στόχος: οι P2P

εφαρμογές έχουν οριστεί ως «εφαρμογές που εκμεταλλεύονται πόρους στις παρυφές του Internet –

αποθήκευση, υπολογιστικούς κύκλους, περιεχόμενο, ανθρώπινη παρουσία». Ο σκοπός αυτού του

κεφαλαίου είναι να περιγράψει κάποιες γενικές τεχνικές που απλοποιούν την κατασκευή P2P

εφαρμογών και ενδυναμώνουν την επεκτασιμότητα, αξιοπιστία και ασφάλειά τους.

Τα παραδοσιακά συστήματα πελάτη-εξυπηρετητή (client-server) παρέχουν πρόσβαση σε πόρους όπως

αρχεία, ιστοσελίδες και άλλα πληροφοριακά αντικείμενα που φιλοξενούνται σε έναν εξυπηρετητή ή σε

συστοιχία εξυπηρετητών. Με ένα τέτοιο συγκεντρωτικό (centralized) σχεδιασμό, δεν τίθεται θέμα

απόφασης για την τοποθέτηση των πόρων ή τη διαχείριση των υλικών πόρων, ωστόσο η κλίμακα της

υπηρεσίας περιορίζεται από τις δυνατότητες του υλικού του εξυπηρετητή και τη δικτυακή

συνδεσιμότητα. Τα P2P συστήματα παρέχουν πρόσβαση σε πληροφοριακούς πόρους που διατίθενται

από Η/Υ σε όλο το δίκτυο. Οι αλγόριθμοι για την τοποθέτηση και επακόλουθη ανάκτηση

πληροφορικών αντικειμένων αποτελούν κεντρικό ζητούμενο στο σχεδιασμό τέτοιων συστημάτων. Ο

σχεδιασμός τους στοχεύει στην παράδοση υπηρεσιών πλήρως αποκεντρωμένων και αυτό-

οργανούμενων, που δυναμικά εξισορροπούν τον αποθηκευτικό και επεξεργαστικό φόρτο μεταξύ όλων

των συμμετεχόντων Η/Υ, καθώς αυτοί συνδέονται και αποσυνδέονται στο σύστημα. Τα P2P συστήματα

μοιράζονται τα παρακάτω χαρακτηριστικά:

� Ο σχεδιασμός τους εξασφαλίζει ότι κάθε χρήστης συνεισφέρει πόρους στο σύστημα.

� Παρότι διαφέρουν ως προς τους πόρους που συνεισφέρουν, όλοι οι κόμβοι ενός P2P συστήματος

έχουν τις ίδιες λειτουργικές δυνατότητες και ευθύνες.

� Η ορθή λειτουργία τους δεν εξαρτάται από την ύπαρξη οποιουδήποτε κεντρικά διαχειριζόμενου

συστήματος.

� Μπορούν να προφέρουν έναν περιορισμένο βαθμό ανωνυμίας στους παροχείς και χρήστες των

πόρων.

� Ένα βασικό ζήτημα για την αποδοτική λειτουργία τους σχετίζεται με την επιλογή ενός αλγορίθμου

για την τοποθέτηση δεδομένων σε πολλούς Η/Υ και την επακόλουθη πρόσβαση σε αυτά, με ένα

τρόπο που θα εξισορροπεί το φόρτο εργασίας και θα εξασφαλίζει διαθεσιμότητα χωρίς να

προσθέτει υπερβολική επιβάρυνση.

Οι P2P υπηρεσίες δεν μπορούν να βασίζονται σε εγγυημένη πρόσβαση σε επιμέρους πόρους, αν και

είναι δυνατό να σχεδιαστούν ώστε η πιθανότητα αποτυχίας πρόσβασης σε ένα αντίτυπο κάποιου

πληροφοριακού αντικειμένου να είναι αυθαίρετα μικρή.

Έχουν προσδιοριστεί τρεις γενιές P2P συστημάτων και ανάπτυξης εφαρμογών. Η πρώτη γενιά

σηματοδοτήθηκε από την υπηρεσία ανταλλαγής μουσικών αρχείων Napster. Η δεύτερη γενιά

εφαρμογών διαμοίρασης αρχείων προσέφερε μεγαλύτερη επεκτασιμότητα, ανωνυμία και

ανεκτικότητα σε σφάλματα και είχε ως εκπροσώπους τα συστήματα Freenet, Gnutella, Kazaa και

BitTorrent.

Η τρίτη γενιά χαρακτηρίζεται από την ανάδυση στρωμάτων ενδιάμεσου λογισμικού (ΕΛ) (middleware)

για ανεξαρτήτου-εφαρμογής διαχείριση κατανεμημένων πόρων σε καθολική κλίμακα. H ανάπτυξη και

Page 175: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

175

αξιολόγηση πλατφόρμων P2P ΕΛ καθώς και η χρήση τους σε πολλές εφαρμογές έχει ολοκληρωθεί, με

πλέον γνωστά παραδείγματα τα συστήματα Pastry, Tapestry, CAN, Chord και Kademlia. Αυτές οι

πλατφόρμες τοποθετούν πόρους σε ένα σύνολο Η/Υ ευρέως κατανεμημένων στο Internet και

δρομολογούν μηνύματα σε αυτούς εκ μέρους των πελατών, απαλλάσσοντας τους πελάτες από την

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

Σε αντίθεση με τα συστήματα 2ης

γενιάς, παρέχουν εγγυήσεις παράδοσης των αιτήσεων σε ένα

φραγμένο αριθμό δικτυακών βημάτων (hops).

Οι πόροι αναγνωρίζονται από καθολικά μοναδικά αναγνωριστικά (global unique identifiers, GUIDs), τα

οποία συνήθως παράγονται μετά από ασφαλή κατακερματισμό (secure hash) μέρους ή του συνόλου

της κατάστασης του αντικειμένου (object state). Η χρήση ασφαλούς κατακερματισμού καθιστά τον

πόρο «αυτό-πιστοποιημένο», καθώς οι πελάτες που λαμβάνουν τον πόρο μπορούν να ελέγξουν την

εγκυρότητα του κατακερματισμού. Έτσι παρέχεται προστασία από αλλοίωσή του που μπορούν να

προκαλέσουν μη έμπιστοι κόμβοι όπου ενδέχεται να αποθηκεύεται ο πόρος. Αυτό το σχήμα ωστόσο

προϋποθέτει αμετάβλητες καταστάσεις πόρων (π.χ. αρχείων μουσικής ή video), καθώς μια αλλαγή στην

κατάσταση προκαλεί αλλαγή και στην τιμή κατακερματισμού. Η χρήση P2P συστημάτων σε εφαρμογές

απαιτητικές σε υψηλή διαθεσιμότητα αποθηκευμένων αντικειμένων, απαιτεί προσεκτικό σχεδιασμό

για την αποφυγή καταστάσεων όπου όλα τα αντίγραφα του αντικειμένου είναι ταυτόχρονα μη

διαθέσιμα.

Υπερκείμενη δρομολόγηση σε σύγκριση με την IP δρομολόγηση: παρότι η υπερκείμενη δρομολόγηση

(overlay routing) φαίνεται να έχει αρκετά κοινά χαρακτηριστικά με την IP δρομολόγηση, η υλοποίηση

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

και αρκετές διαφορές που προκύπτουν από «κληρονομιά» του IP ως κύριου πρωτοκόλλου στο Internet,

κάτι που δυσκολεύει τον επανασχεδιασμό του για την άμεση υποστήριξη P2P εφαρμογών.

Κατανεμημένος υπολογισμός: η εκμετάλλευση διαθέσιμης υπολογιστικής ισχύος σε Η/Υ χρηστών

(εκτέλεση χαλαρά συνδεδεμένων, απαιτητικών υπολογιστικά καθηκόντων που τρέχουν από διεργασίες

φόντου) έχει υπάρξει επί μακρόν θέμα ενδιαφέροντος και πειραματισμού. Πλέον γνωστό είναι το

παράδειγμα του έργου SETI@home, στο οποίο ο κατανεμημένος υπολογισμός δεν περιλάμβανε

επικοινωνία ή συντονισμό μεταξύ Η/Υ καθώς επεξεργάζονταν δεδομένα. Ωστόσο, η απελευθέρωση της

υπολογιστικής ισχύος στο Internet σε ένα μεγαλύτερο εύρος καθηκόντων θα εξαρτηθεί από την

ανάπτυξη μιας κατανεμημένης πλατφόρμας που θα υποστηρίζει διαμοίραση δεδομένων και

συντονισμό του υπολογισμού μεταξύ των συμμετεχόντων Η/Υ σε μεγάλη κλίμακα. Αυτός είναι ο στόχος

του έργου Grid. Σε αυτό το κεφάλαιο εστιάζουμε σε αλγορίθμους και συστήματα που έχουν αναπτυχθεί

για τη διαμοίραση δεδομένων σε P2P συστήματα.

Άσκηση αυτοαξιολόγησης 10.1

Ποιος είναι ο στόχος των P2P συστημάτων; Ποια είναι τα προβλήματα των παραδοσιακών συστημάτων

πελάτη-εξυπηρετητή που κατέστησε αναγκαία την ανάπτυξη P2P συστημάτων; Ποια χαρακτηριστικά

μοιράζονται τα P2P συστήματα;

Άσκηση αυτοαξιολόγησης 10.2

Page 176: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

176

Αναφέρατε τις τρεις γενιές P2P συστημάτων. Εξηγήστε συνοπτικά τα κύρια χαρακτηριστικά και

διαφορές τους.

Δραστηριότητα 10.1

Αναζητήστε στη βιβλιογραφία τη μέθοδο με την οποία παράγονται τα GUIDs. Πως εξασφαλίζεται η

μοναδικότητά τους; Για ποιο λόγο η χρήση ασφαλούς κατακερματισμού προϋποθέτει αμετάβλητες

καταστάσεις πόρων;

Δραστηριότητα 10.2

Αναζητήστε στη βιβλιογραφία λεπτομέρειες για το σχεδιασμό του πρωτοκόλλου που χρησιμοποιούσε

το σύστημα Gnutella. Πως οι κόμβοι του συστήματος ανακαλύπτουν άλλους κόμβους και πόρους; Πως

εκτελείται η δρομολόγηση των πόρων; Πως αντιμετωπίζονται προβλήματα επεκτασιμότητας;

2. Το Napster και η κληρονομιά του Το Napster υπήρξε η πρώτη δημοφιλής εφαρμογή αποθήκευσης και ανταλλαγής αρχείων. Έγινε

ιδιαίτερα γνωστό ως εργαλείο ανταλλαγής μουσικών αρχείων σύντομα μετά την έναρξη λειτουργίας

του το 1999. Η αρχιτεκτονική του περιλάμβανε κεντρικούς καταλόγους, με παροχή των αρχείων από

τους χρήστες (τα αρχεία αποθηκεύονταν και προσπελαύνονταν από τους Η/Υ των χρηστών). Το κλειδί

της επιτυχίας του Napster ήταν η δημιουργία, ευρέως κατανεμημένου συνόλου αρχείων διαθέσιμων σε

χρήστες σε όλο το Internet. Η λειτουργία του Napster διακόπηκε ως αποτέλεσμα νομικών αγωγών των

ιδιοκτητών πνευματικών δικαιωμάτων κάποιου από το υλικό που διακινούνταν, κατά των ιδιοκτητών

του Napster.

Η ανωνυμία των ληπτών και παρόχων των διαμοιραζόμενων δεδομένων και άλλων πόρων αποτελεί

κεντρικό ζήτημα για τους σχεδιαστές P2P συστημάτων. Σε συστήματα με πολλούς κόμβους, η

δρομολόγηση των αιτήσεων και των αποτελεσμάτων μπορεί να είναι «ελικοειδής» ώστε να αποκρύψει

την πηγή, ενώ τα περιεχόμενα των αρχείων μπορούν να κατανεμηθούν σε πολλαπλούς κόμβους,

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

την τοποθέτησή τους σε εξυπηρετητές, οι ιδιοκτήτες των εξυπηρετητών μπορούν πειστικά να αρνηθούν

γνώση των περιεχομένων τους.

Μαθήματα από την εμπειρία του Napster: Το Napster απέδειξε τη δυνατότητα δημιουργία χρήσιμων

μεγάλης κλίμακας εφαρμογών που εξαρτώνται από δεδομένα και Η/Υ που ανήκουν σε χρήστες του

Internet. Για την αποφυγή κατακλυσμού υπολογιστικών πόρων συγκεκριμένων χρηστών και των

δικτυακών τους συνδέσεων, το Napster έλαβε υπόψη τη δικτυακή τοποθεσία - τον αριθμό δηλαδή των

βημάτων μεταξύ του πελάτη και του εξυπηρετητή - κατά τον ορισμό ενός εξυπηρετητή σε έναν πελάτη

που αιτείται ένα μουσικό αρχείο. Αυτός ο απλός μηχανισμός κατανομής, επέτρεψε τη μεγαλύτερη

επεκτασιμότητα της υπηρεσίας. Ωστόσο, το Napster χρησιμοποιούσε αντίτυπα του καταλόγου όλων

των διαθέσιμων αρχείων, το οποίο έθετε θέμα συνέπειας μεταξύ των αντιγράφων, κάτι που σε άλλες

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

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

Page 177: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

177

Δραστηριότητα 10.3

Τι είδους υπηρεσίες προσέφερε το Napster; Ποια η αρχιτεκτονική του συστήματος και ποια βήματα

περιλάμβανε κάθε ανταλλαγή αρχείου; Συνοψίστε τα χαρακτηριστικά του Napster που θα θεωρούνταν

μειονεκτήματα σε άλλες P2P εφαρμογές διαμοίρασης πόρων.

Δραστηριότητα 10.4

Γιατί η ανωνυμία των ληπτών και παρόχων των διαμοιραζόμενων δεδομένων είναι κεντρικής σημασίας

για τους σχεδιαστές P2P συστημάτων; Ποιες τεχνικές έχουν αναπτυχθεί για την εξασφάλιση της

ανωνυμίας; Ποια τα μειονεκτήματα χρήσης τεχνικών ανωνυμίας;

Δραστηριότητα 10.5

Αναζητήστε σε διαδικτυακές πηγές τα νομικά επιχειρήματα της πλευράς των ιδιοκτητών του Napster

και των εναγόντων / ιδιοκτητών πνευματικών δικαιωμάτων των αρχείων που αντάλλασαν χρήστες της

υπηρεσίας. Σε ποια επιχειρήματα κυρίως βασίστηκε η απαγόρευση λειτουργίας του Napster;

3. Διομότιμο ενδιάμεσο λογισμικό Ένα βασικό πρόβλημα στο σχεδιασμό P2P συστημάτων αποτελεί η παροχή ενός μηχανισμού που θα

επιτρέπει στους πελάτες να προσπελαύνουν πόρους γρήγορα και ανάλογα με το που βρίσκονται μέσα

στο δίκτυο. Το Napster συντηρούσε ένα ενοποιημένο κατάλογο των διαθέσιμων αρχείων ώστε να δίνει

τις διευθύνσεις των Η/Υ που τα φιλοξενούσαν. Τα 2ης

γενιάς συστήματα Gnutella και Freenet

χρησιμοποιούν τεμαχισμένους και κατανεμημένους καταλόγους, ωστόσο οι αλγόριθμοι είναι

συγκεκριμένοι σε κάθε σύστημα. Το πρόβλημα τοποθέτησης υπήρχε και σε πολλές υπηρεσίες που

προϋπήρχαν των P2P συστημάτων. Τα P2P συστήματα ΕΛ έχουν σχεδιαστεί ώστε να αντιμετωπίσουν

την ανάγκη αυτόματης τοποθέτησης και εντοπισμού των κατανεμημένων αντικειμένων που

διαχειρίζονται τα P2P συστήματα και εφαρμογές.

Λειτουργικές απαιτήσεις: το P2P ΕΛ στοχεύει στην απλοποίηση της δημιουργίας υπηρεσιών που

υλοποιούνται σε πολλούς Η/Υ σε ένα ευρέως κατανεμημένο δίκτυο. Για να το επιτύχει, πρέπει να

επιτρέψει σε πελάτες να εντοπίσουν και να επικοινωνήσουν με επιμέρους πόρους που διατίθενται σε

μια υπηρεσία, ακόμα και αν οι πόροι είναι ευρέως κατανεμημένοι σε Η/Υ. Άλλες σημαντικές απαιτήσεις

περιλαμβάνουν τη δυνατότητα προσθήκης/αφαίρεσης πόρων αλλά και Η/Υ.

Μη λειτουργικές απαιτήσεις: για να λειτουργήσει αποδοτικά το P2P ΕΛ πρέπει να ικανοποιήσει και τις

εξής μη λειτουργικές απαιτήσεις:

� Καθολική επεκτασιμότητα: το P2P ΕΛ πρέπει να σχεδιαστεί ώστε να υποστηρίζει εφαρμογές που

προσπελαύνουν εκατομμύρια αντικείμενα σε χιλιάδες Η/Υ.

Page 178: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

178

� Εξισορρόπηση φόρτου: εξασφάλιση εξισορροπημένης κατανομής φόρτου σε ένα μεγάλο αριθμό

Η/Υ μέσω της τυχαίας τοποθέτησης πόρων σε συνδυασμό με αποθήκευση αντιγράφων συχνά

χρησιμοποιούμενων πόρων.

� Βελτιστοποίησης τοπικών αλληλεπιδράσεων μεταξύ γειτονικών κόμβων: το ΕΛ πρέπει να τοποθετεί

πόρους πλησίον των κόμβων που τους χρησιμοποιούν περισσότερο ώστε να ελαχιστοποιείται η

καθυστέρηση και η δικτυακή κίνηση.

� Διευθέτηση δυναμικής διαθεσιμότητας Η/Υ: τα P2P συστήματα χαρακτηρίζονται από υψηλή

δυναμικότητα καθώς αποτελούνται από Η/Υ που μπορούν ελεύθερα να εισέλθουν και να εξέλθουν

από το σύστημα, χωρίς να είναι εγγυημένη η συνεχής τους συμμετοχή και παροχή υπηρεσιών.

Καθώς νέοι Η/Υ ενσωματώνονται στο σύστημα, ο φόρτος πρέπει να ανακατανέμεται ώστε να

γίνεται εκμετάλλευση των πόρων τους.

� Ασφάλεια δεδομένων σε περιβάλλοντα με ετερογενή εμπιστοσύνη: η εμπιστοσύνη πρέπει να

βασισθεί στη χρήση μηχανισμών αυθεντικοποίησης και κρυπτογράφησης που θα διασφαλίζουν την

ακεραιότητα και ιδιωτικότητα της πληροφορίας.

� Ανωνυμία, δυνατότητα άρνησης και αντίστασης στη λογοκρισία: μια νόμιμη απαίτηση στα P2P

συστήματα είναι η ανωνυμία των κατόχων και ληπτών δεδομένων σε περιπτώσεις που χρήζουν

αντίστασης σε λογοκρισία, αλλά και η δυνατότητα άρνησης ευθύνης για τη διατήρηση ή διάθεση

δεδομένων. Η συμμετοχή μεγάλων αριθμών Η/Υ μπορεί να βοηθήσει σε αυτούς τους στόχους.

Ο σχεδιασμός ενός στρώματος ΕΛ για την υποστήριξη των στόχων της επεκτασιμότητας και

διαθεσιμότητας αποτελεί ένα δυσεπίλυτο πρόβλημα καθώς είναι ανέφικτη η διατήρηση βάσης

δεδομένων σε όλους τους Η/Υ με τις θέσεις όλων των πόρων ενδιαφέροντος. Η γνώση των θέσεων των

αντικειμένων πρέπει να τεμαχιστεί και κατανεμηθεί σε ολόκληρο το δίκτυο. Ένας υψηλός βαθμός

αντιγραφής είναι απαραίτητος για να εξασφαλισθεί η διαθεσιμότητά τους.

Άσκηση αυτοαξιολόγησης 10.3

Συνοψίστε τις λειτουργικές και μη λειτουργικές απαιτήσεις των συστημάτων P2P ΕΛ.

4. Υπερκείμενες δρομολογήσεις Ένας κατανεμημένος αλγόριθμος, γνωστός ως υπερκείμενη δρομολόγηση (routing overlay) έχει την

ευθύνη εντοπισμού κόμβων και αντικειμένων. Το ΕΛ παίρνει τη μορφή ενός στρώματος που

δρομολογεί αιτήσεις από οποιονδήποτε πελάτη σε έναν Η/Υ που κατέχει το αντικείμενο. Ο όρος

«υπερκείμενη» αναφέρεται στο ότι υλοποιεί έναν μηχανισμό δρομολόγησης στο επίπεδο εφαρμογής

που διαχωρίζεται από άλλους μηχανισμούς δρομολόγησης, όπως η IP δρομολόγηση. Η υπερκείμενη

δρομολόγηση διασφαλίζει ότι κάθε κόμβος μπορεί να προσπελάσει ένα αντικείμενο δρομολογώντας

κάθε αίτηση μέσω μιας σειράς κόμβων, εκμεταλλευόμενη τη γνώση καθενός από αυτούς ώστε να

εντοπίσει το αντικείμενο προορισμού. Τα P2P συστήματα συνήθως αποθηκεύουν πολλαπλά αντίγραφα

αντικειμένων για να εξασφαλίσουν διαθεσιμότητα. Σε αυτή την περίπτωση, η υπερκείμενη

δρομολόγηση διατηρεί γνώση της θέσης όλων των διαθέσιμων αντικειμένων και παραδίδει τις αιτήσεις

στον πλησιέστερο ενεργό κόμβο που διαθέτει ένα αντίγραφο του αντικειμένου.

Page 179: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

179

Τα GUIDs, γνωστά και ως αδιαφανή αναγνωριστικά (opaque identifiers) δεν αποκαλύπτουν τη θέση των

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

� Ένας πελάτης που επιθυμεί τη λήψη ενός αντικειμένου, υποβάλει μια αίτηση με το GUID του

αντικειμένου στην υπερκείμενη δρομολόγηση, η οποία την δρομολογεί σε ένα κόμβο που διατηρεί

ένα αντίγραφο του αντικειμένου.

� Ένας κόμβος που επιθυμεί να διαθέσει ένα αντικείμενο, υπολογίζει ένα GUID για το αντικείμενο

και το ανακοινώνει στο στρώμα υπερκείμενης δρομολόγησης που θα διασφαλίσει την

προσβασιμότητά του από άλλους πελάτες.

� Όταν πελάτες αιτούνται την αφαίρεση αντικειμένων από την υπηρεσία, η υπερκείμενη

δρομολόγηση πρέπει να τα κάνει μη διαθέσιμα.

� Η υπερκείμενη δρομολόγηση πρέπει να αποδίδει/αφαιρεί ευθύνες από κόμβους καθώς αυτοί

συνδέονται/αποσυνδέονται από την υπηρεσία.

Το GUID ενός αντικειμένου υπολογίζεται από το σύνολο ή μέρος της κατάστασης του αντικειμένου

χρησιμοποιώντας μια συνάρτηση κατακερματισμού (hash function) που επιστρέφει μια τιμή, η οποία

είναι -με πολύ υψηλή πιθανότητα- μοναδική. Καθώς αυτά τα τυχαία κατανεμημένα αναγνωριστικά

καθορίζουν την τοποθέτηση και ανάκτηση των αντικειμένων, τα συστήματα υπερκείμενης

δρομολόγησης αναφέρονται και ως πίνακες κατανεμημένου κατακερματισμού (distributed hash tables,

DHT). Το DHT API παρέχει λειτουργία για την υποβολή δεδομένων προς αποθήκευση (συνοδευόμενων

από το GUID). Το DHT στρώμα επιλέγει μια θέση για την τοποθέτηση των δεδομένων (με αντίγραφα για

τη διασφάλιση διαθεσιμότητας), και παρέχει πρόσβαση σε αυτά.

Μια πιο ευέλικτη μορφή API παρέχεται από το στρώμα κατανεμημένης τοποθέτησης και

δρομολόγησης αντικειμένων (distributed object location and routing, DOLR). Με αυτή τη διεπαφή, τα

αντικείμενα μπορούν να αποθηκευθούν οπουδήποτε (αντίθετα, στο DHT κάθε αντικείμενο

αποθηκεύεται σε κόμβους με GUIDs αριθμητικά συγγενή στο GUID του αντικειμένου) και το DOLR

στρώμα είναι υπεύθυνο να αντιστοιχίζει τα GUIDs με τις διευθύνσεις των κόμβων που αποθηκεύουν

αντίγραφα των αντικειμένων. Στο DOLR, οι αιτήσεις δρομολογούνται προς τον πλησιέστερο κόμβο που

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

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

αναζήτησης για το επόμενο βήμα της δρομολόγησης.

Τα GUIDs δεν είναι αναγνώσιμα από ανθρώπους, άρα οι εφαρμογές πελατών πρέπει να

προμηθεύονται τα GUIDs των πόρων που ενδιαφέρουν τους χρήστες από κάποιας μορφής υπηρεσία

καταλόγου χρησιμοποιώντας αναγνώσιμα από ανθρώπους ονόματα ή αποτελέσματα αναζήτησης.

Ιδανικά, αυτοί οι κατάλογοι πρέπει να είναι κατανεμημένοι ώστε να αποφευχθούν οι αδυναμίες των

κεντρικών καταλόγων τύπου Napster. Σε απλές περιπτώσεις οι κατάλογοι μπορούν να προσφέρονται

μέσω ιστοσελίδων. Στο σύστημα BitTorrent, ένας web κατάλογος αναζήτησης, οδηγεί σε ένα αρχείο

στελέχους (stub file) που περιλαμβάνει το GUID του αντικειμένου και τη URL ενός ανιχνευτή (tracker),

δηλαδή ενός Η/Υ που διατηρεί μια ενημερωμένη λίστα των διευθύνσεων παροχέων που διαθέτουν το

αναζητούμενο αρχείο.

Page 180: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

180

Δραστηριότητα 10.6

Συνοψίστε τα καθήκοντα της υπερκείμενης δρομολόγησης. Ποιες είναι οι διαφορές μεταξύ των

μεθόδων υπερκείμενης δρομολόγησης που βασίζονται στα DHT και DOLR APIs; Αναφέρατε P2P

συστήματα που χρησιμοποιούν τη μία ή την άλλη μέθοδο.

Δραστηριότητα 10.7

Τι επιλογές υπάρχουν ως προς την παροχή υπηρεσιών καταλόγου εύρεσης αντικειμένων σε P2P

συστήματα; Περιγράψτε τις σχετικές προσεγγίσεις των συστημάτων Napster και BitTorrent.

5. Μελέτες περίπτωσης υπερκείμενης δρομολόγησης: Pastry, Tapestry Αμφότερα τα συστήματα Pastry και Tapestry χρησιμοποιούν μια τεχνική δρομολόγησης βασισμένη στο

πρόθεμα (prefix) των GUIDs των αντικειμένων που αναζητούνται. Το Pastry χρησιμοποιεί ένα απλό και

αποδοτικό σχεδιασμό και χρησιμοποιείται από πολλές εφαρμογές, όπως οι PAST και Squirrel. Το

Tapestry χρησιμοποιεί έναν πιο πολύπλοκο σχεδιασμό και αποτελεί τη βάση του συστήματος

αποθήκευσης δεδομένων OceanStore.

5.1 Pastry Σε όλους τους κόμβους και αντικείμενα που μπορούν να προσπελαστούν μέσω του Pastry εκχωρούνται

128-bit GUIDs (υπολογίζονται εφαρμόζοντας μια συνάρτηση ασφαλούς κατακερματισμού, όπως η SHA-

1, πάνω στο όνομα του αντικειμένου ή σε μέρος της αποθηκευμένης του κατάστασης). Το GUID είναι

τυχαία κατανεμημένο σε όλο το εύρος τιμών 0 έως 2128-1. Σε ένα δίκτυο N κόμβων, ο αλγόριθμος

δρομολόγησης Pastry δρομολογεί ένα μήνυμα σε Ο(log N) βήματα. Αν το GUID προσδιορίζει έναν

κόμβο ενεργό, το μήνυμα παραδίδεται σε αυτόν, διαφορετικά παραδίδεται στον ενεργό κόμβο που

έχει GUID πλησιέστερα αριθμητικά σε εκείνον που αναζητείται. Οι ενεργοί κόμβοι αναλαμβάνουν να

επεξεργαστούν αιτήσεις που απευθύνονται σε όλα τα αντικείμενα στην αριθμητική γειτονιά τους.

Χιλιάδες κόμβοι τοποθετημένοι σε ευρέως διεσπαρμένα σημεία μπορούν να συμμετάσχουν στην

Pastry υπερκείμενη δρομολόγηση, η οποία είναι πλήρως αυτό-οργανούμενη: καθώς νέοι κόμβοι

συνδέονται στο σύστημα, αποκτούν τα δεδομένα που χρειάζονται για να κατασκευάσουν τους πίνακες

δρομολόγησής τους από τα υπάρχοντα μέλη του συστήματος με Ο(log N) μηνύματα. Σε περίπτωση

αποτυχίας ή αποσύνδεσης κάποιου κόμβου, οι υπόλοιποι ανιχνεύουν την απουσία του και

συνεργατικά επαναδιαμορφώνουν τη δομή δρομολόγησης με αντίστοιχο αριθμό μηνυμάτων.

Αλγόριθμος δρομολόγησης: ο πλήρης αλγόριθμος προϋποθέτει την ύπαρξη ενός πίνακα δρομολόγησης

σε κάθε κόμβο. Για λόγους καλύτερης επεξήγησης περιγράφουμε τον αλγόριθμο σε δύο φάσεις. Στην

πρώτη φάση, κάθε ενεργός κόμβος αποθηκεύει ένα σύνολο φύλλων (leaf set), πρακτικά ένα διάνυσμα

L (μήκους 2l), που περιέχει τα GUIDs και IP διευθύνσεις των κόμβων που είναι αριθμητικά πλησιέστεροι

εκατέρωθεν του GUID του ενεργού κόμβου (οι l προηγούμενοι και l επόμενοι). Τα σύνολα φύλλων

συντηρούνται από το Pastry καθώς κόμβοι συνδέονται και αποσυνδέονται από το σύστημα. Ο χώρος

των GUIDs θεωρείται κυκλικός (το μηδέν είναι γειτονικό με το 2128

-1). Κάθε κόμβος Α που λαμβάνει ένα

μήνυμα Μ με προορισμό τη διεύθυνση D, δρομολογεί το μήνυμα συγκρίνοντας το D με το δικό του

Page 181: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

181

GUID Α και με καθένα από τα GUIDs των φύλλων του και προωθεί το Μ στον κόμβο που -μεταξύ

αυτών- έχει GUID πλησιέστερο αριθμητικά στο D. Έτσι, σε κάθε βήμα, το Μ προωθείται σε έναν κόμβο

πλησιέστερο στον D. Ωστόσο, αυτό το σχήμα δρομολόγησης είναι μη αποδοτικό καθώς απαιτεί

περίπου N/2l βήματα για να παραδώσει το μήνυμα σε ένα δίκτυο Ν κόμβων. Στη δεύτερη φάση,

θεωρείται πως κάθε Pastry κόμβος διατηρεί έναν πίνακα δρομολόγησης δενδρικής δομής που

περιλαμβάνει GUIDs και IP διευθύνσεις σε όλο τον χώρο των πιθανών GUID τιμών (0..2128

-1), με

αυξημένη πυκνότητα κάλυψης GUIDs που είναι αριθμητικά πιο κοντά στον ίδιο. Ο πίνακας

δρομολόγησης δομείται ως εξής: τα GUIDs θεωρούνται δεκαεξαδικές τιμές και ο πίνακας τα ταξινομεί

βάσει των δεκαεξαδικών προθεμάτων τους. Ο πίνακας έχει τόσες γραμμές όσα τα δεκαεξαδικά ψηφία

των GUIDs. Κάθε γραμμή του πίνακα περιλαμβάνει 15 τιμές, μία για κάθε πιθανή τιμή δεκαεξαδικού

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

κόμβο Α χρησιμοποιεί την πληροφορία του πίνακα δρομολόγησης R και του συνόλου φύλλων L, για να

δρομολογήσει οποιοδήποτε εισερχόμενο μήνυμα. Όταν ο Α λάβει ένα μήνυμα, εξετάζει πρώτα κατά

πόσο το GUID του μηνύματος αντιστοιχεί σε κάποιο φύλλο του. Αν αυτό συμβαίνει τότε δρομολογεί

απευθείας το μήνυμα στον αντίστοιχο κόμβο (με IP διεύθυνση που αντιστοιχίζεται στο GUID του

φύλλου). Αν όχι, ο κόμβος Α εξετάζει τον πίνακα δρομολόγησής του ψάχνοντας τη διεύθυνση του

κόμβου με το μακρύτερο κοινό πρόθεμα με το GUID προορισμού. Καθώς ο αριθμός των σωστών

ψηφίων στη διεύθυνση είτε αυξάνει είτε παραμένει ο ίδιος (εφόσον παραμένει ο ίδιος, η απόσταση

μεταξύ του μηνύματος και του προορισμού μειώνεται) το πρωτόκολλο δρομολόγησης συγκλίνει.

Ολοκλήρωση (σύνδεση) νέου κόμβου: νέοι κόμβοι συνδέονται στο σύστημα για να αποκτήσουν έναν

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

GUID του (εφαρμόζοντας τη συνάρτηση κατακερματισμού στο δημόσιο κλειδί του) και εν συνεχεία

έρχεται σε επαφή με ένα κοντινό κόμβο Pastry (εδώ, ο όρος κοντινός αναφέρεται στη δικτυακή

απόσταση που μετράται με τον αριθμό των δικτυακών βημάτων ή την καθυστέρηση μετάδοσης). Ας

υποθέσουμε ότι το GUID του νέου κόμβου είναι Χ και ότι ο κοντινός κόμβος με τον οποίο έρχεται σε

επαφή έχει GUID A. O κόμβος X στέλνει ένα ειδικό join μήνυμα (αίτηση) στον Α, δίνοντας το Χ ως

προορισμό της αίτησης. Ο Α δρομολογεί το μήνυμα με τον κανονικό τρόπο. Το join μήνυμα τελικά θα

φθάσει στον κόμβο Ζ που είναι αριθμητικά πλησιέστερος στον X. Οι Α, Ζ και όλοι οι ενδιάμεσοι κόμβοι

(Β, C, ..) μέσω των οποίων προωθήθηκε το join μήνυμα, μεταδίδουν το περιεχόμενο του σχετικού

μέρους των πινάκων δρομολόγησής τους και του συνόλου φύλλων τους στον Χ, o οποίος κατασκευάζει

έτσι το δικό του πίνακα δρομολόγησης και σύνολο φύλλων. Πρακτικά, η πρώτη γραμμή του πίνακα

δρομολόγησης του X αρχικοποιείται στην πρώτη γραμμή του αντίστοιχου πίνακα του Α (καθώς ο Α

είναι «δικτυακά» κοντινός στον Χ, αυτό θεωρείται ως καλή αρχική επιλογή καθώς θα ελαχιστοποιηθεί η

απόσταση δρομολόγησης για το πρωτόκολλο μεταφοράς). Αντίστοιχα, η 2η γραμμή του πίνακα

δρομολόγησης του Χ θα είναι η 2η γραμμή του πίνακα του Β (με τον οποίο έχουν κοινά τα πρώτα δύο

ψηφία του GUID τους), η 3η γραμμή θα είναι η 3η γραμμή του πίνακα του C, κοκ. Τέλος, το σύνολο

φύλλων του Χ αρχικοποιείται στο σύνολο φύλλων του Z, ο οποίος είναι ο πλησιέστερος αριθμητικά

κόμβος προς τον Χ. Αφότου ο Χ δημιουργήσει τον πίνακα δρομολόγησης και σύνολο φύλλων του,

στέλνει τα περιεχόμενά τους σε όλους τους κόμβους που αναφέρονται στον πίνακα δρομολόγησης και

σύνολο φύλλων ώστε να ενημερώσουν τους πίνακές τους συμπεριλαμβάνοντας το νεοεισερχόμενο

Page 182: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

182

κόμβο. Συνολικά, η σύνδεση ενός νέου κόμβου στην υποδομή Pastry απαιτεί τη μετάδοση O(log N)

μηνυμάτων.

Αποτυχία ή αποχώρηση κόμβου: ένας κόμβος Pastry θεωρείται ότι έχει αποτύχει ή αποχωρήσει

(αποσυνδεθεί) όταν οι άμεσοι γείτονές του (στο GUID χώρο) δεν μπορούν πλέον να επικοινωνήσουν

μαζί του. Όταν αυτό συμβαίνει, είναι απαραίτητο να διορθωθούν τα σύνολα φύλλων τους που

περιλαμβάνουν το GUID του εν λόγω κόμβου. Για να διορθώσει το σύνολο φύλλων του, ο κόμβος που

ανιχνεύει την αποτυχία ζητάει από έναν ενεργό κόμβο πλησίον στον αποτυχημένο κόμβο (στο L) ένα

αντίγραφο του συνόλου φύλλων του L’. Τα L και L’ θα έχουν μερική επικάλυψη, ωστόσο στο L’ θα

περιλαμβάνεται κάποιο GUID κατάλληλο για να αντικαταστήσει στο L εκείνο του αποτυχημένου

κόμβου. Οι υπόλοιποι γειτονικοί κόμβοι ενημερώνονται για το συμβάν και διορθώνουν αντίστοιχα το

σύνολο φύλλων τους.

Τοπικότητα: η δομή της Pastry δρομολόγησης έχει υψηλό πλεονασμό, καθώς υπάρχουν πολλές

εναλλακτικές διαδρομές μεταξύ κάθε ζεύγους κόμβων. Η κατασκευή πινάκων δρομολόγησης στοχεύει

στο να ληφθεί υπόψη αυτός ο πλεονασμός ώστε να μειωθούν οι καθυστερήσεις μετάδοσης,

αξιοποιώντας τις ιδιότητες της δικτυακής τοποθεσίας των κόμβων στο υποκείμενο δίκτυο μεταφοράς.

Ανεκτικότητα σε σφάλματα: η πληροφορία σχετικά με κόμβους που έχουν αποχωρήσει από το σύστημα

Pastry, δε διαδίδεται αρκετά γρήγορα ώστε να αποτρέψει σφάλματα στη δρομολόγηση, ενώ δε

λαμβάνεται υπόψη και η πιθανότητα κάποιων κακόβουλων κόμβων που συνδέονται στο σύστημα για

να παρεμβληθούν στη σωστή δρομολόγηση. Για να ξεπεράσουν αυτά τα προβλήματα, οι πελάτες που

εξαρτώνται από την αξιόπιστη παράδοση μηνυμάτων πρέπει να εφαρμόσουν τον «τουλάχιστον-ένα»

μηχανισμό παράδοσης (αναλύθηκε στο Κεφάλαιο 5), ώστε να επιτρέψουν στο Pastry περισσότερο

χρόνο για να ανιχνεύσει και διορθώσει αποτυχίες κόμβων.

Αξιοπιστία: μία ενημερωμένη έκδοση του Pastry (MSPastry) έχει αναπτυχθεί που χρησιμοποιεί τον ίδιο

αλγόριθμο δρομολόγησης και παρόμοιες μεθόδους διαχείρισης Η/Υ, περιλαμβάνοντας ωστόσο

επιπλέον μέτρα αξιοπιστίας και κάποιες βελτιστοποιήσεις απόδοσης στους αλγορίθμους διαχείρισης

Η/Υ. Τα μέτρα αξιοπιστίας περιλαμβάνουν τη χρήση επιβεβαιώσεων σε κάθε βήμα του αλγορίθμου

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

χρονικού διαστήματος, επιλέγει μια εναλλακτική διαδρομή για να δρομολογήσει το μήνυμα. Ο κόμβος

που απέτυχε να στείλει επιβεβαίωση σημειώνεται ως ύποπτος αποτυχίας.

Αξιολόγηση: οι ερευνητές που εισήγαγαν το MSPatry εκτέλεσαν έναν εξαντλητικό έλεγχο της απόδοσής

του, διερευνώντας την επίδραση που είχαν στην απόδοσή του οι μηχανισμοί αξιοπιστίας. Η αξιολόγηση

εκτελέστηκε τρέχοντας το MSPatry σύστημα σε έναν προσομοιωτή, σε έναν Η/Υ που εξομοίωσε ένα

μεγάλο δίκτυο Η/Υ, με τη μετάδοση μηνυμάτων να προσομοιώνεται με καθυστερήσεις μετάδοσης.

Άσκηση αυτοαξιολόγησης 10.4

Πως ερμηνεύετε την πολυπλοκότητα του αλγορίθμου δρομολόγησης Pastry χωρίς χρήση πίνακα

δρομολόγησης (N/2l) και με χρήση πίνακα δρομολόγησης (O(log N)); Ποιος είναι ο μέγιστος αριθμός

βημάτων που απαιτείται για τη δρομολόγηση ενός μηνύματος όταν γίνεται χρήση πινάκων

Page 183: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

183

δρομολόγησης όταν χρησιμοποιούνται 64-bit GUIDs που γράφονται με δεκαεξαδικά ψηφία, σε κάποιο

σύστημα Pastry 34,000 κόμβων;

Άσκηση αυτοαξιολόγησης 10.5

Περιγράψτε συνοπτικά τον αλγόριθμο δρομολόγησης στο σύστημα Pastry.

Δραστηριότητα 10.8

Μελετήστε το άρθρο που περιγράφει αναλυτικά το σύστημα ΕΛ Pastry, με έμφαση στα πειραματικά

αποτελέσματα που αξιολογούν την απόδοση του συστήματος:

A. Rowstron and P. Druschel, “Pastry: Scalable, distributed object location and routing for large-

scale peer-to-peer systems,” Proceedings of the 18th

IFIP/ACM International Conference in

Distributed Systems Platforms (Middleware’2001), pp. 329–350, 2001.

Άσκηση αυτοαξιολόγησης 10.6

Περιγράψτε τον τρόπο με τον οποίο ένας νεοεισερχόμενος στο Pastry κόμβος βρίσκει τον πλησιέστερο

ενεργό κόμβο στο σύστημα (ως προς τη «δικτυακή απόσταση») ώστε να ξεκινήσει τη διαδικασία

κατασκευής του πίνακα δρομολόγησής του.

Δραστηριότητα 10.9

Σχεδιάστε ένα σενάριο κυκλικού χώρου 20-bit GUIDs που γράφονται με δεκαεξαδικούς αριθμούς.

Υποθέστε ότι ένας κόμβος Χ εισέρχεται στο Pastry σύστημα και εκχωρήστε του ένα GUID. Εκχωρήστε

ένα GUID και σε έναν κοντινό του δικτυακά κόμβο Α. Σε πόσους -το μέγιστο- κόμβους θα προωθηθεί το

join μήνυμα του Χ; Δώστε κάποιους «λογικούς» πίνακες δρομολόγησης σε όλους τους ενδιάμεσους

κόμβους και δείξτε τα περιεχόμενα του πίνακα δρομολόγησης που έχει κατασκευάσει ο Α κατά το

τέλος της διαδικασίας εισόδου στο σύστημα. Σχεδιάστε ένα αντίστοιχο σενάριο αποχώρησης του Α και

ενημέρωσης των συνόλων φύλλων των γειτόνων του.

Δραστηριότητα 10.10

Έστω ένα Pastry σύστημα με 8-bit GUIDs, τα οποία γράφονται με 4-δικά ψηφία (δηλαδή 0, 1, 2 και 3).

Έστω ένας νεοεισερχόμενος κόμβος Χ στο σύστημα Pastry, με GUID: 0013 και IP: διεύθυνση

176.231.132.3. Αυτός ο κόμβος διαθέτει στοιχεία για δύο γνωστούς κόμβους Pastry Β (με GUID: 0012

και IP διεύθυνση: 176.256.23.67) και C (με GUID: 3201 και IP διεύθυνση: 176.231.132.90).

1. Πόσοι κόμβοι μπορούν να λειτουργήσουν ταυτόχρονα στο σύστημα; Θεωρείτε καλή ιδέα τα 8-bit

GUIDs αν είναι εκ των προτέρων γνωστό ότι σε αυτό το Pastry σύστημα δε θα είναι ποτέ

συνδεδεμένοι περισσότεροι από 100 Η/Υ;

2. Πόσες γραμμές και πόσες στήλες περιλαμβάνει ένα πίνακας δρομολόγησης σε κάθε κόμβο; Σε

πόσα -το μέγιστο- βήματα ολοκληρώνεται η υπερκείμενη δρομολόγηση (overlay routing) σε αυτό

το σύστημα;

Page 184: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

184

3. Ποιον από τους κόμβους Β και C θα επιλέξει ο αλγόριθμος πλησιέστερου γείτονα (nearest neighbor

algorithm) στον X και γιατί;

4. Περιγράψτε ένα σενάριο για τη δρομολόγηση του join μηνύματος του X, που θα περιλαμβάνει τους

ενδιάμεσους κόμβους μέσω των οποίων θα δρομολογηθεί το join μήνυμα στο Pastry σύστημα,

δηλαδή τα ονόματα, GUIDs και ενδεικτικούς πίνακες δρομολόγησης των κόμβων.

5. Με βάση τους πίνακες δρομολόγησης των ενδιάμεσων κόμβων, ποιος θα είναι ο -αρχικός- πίνακας

δρομολόγησης του Χ όταν ολοκληρωθεί η διαδικασία εισαγωγής του στο Pastry σύστημα;

5.2 Tapestry Το Tapestry υλοποιεί έναν κατανεμημένο πίνακα κατακερματισμού και δρομολογεί μηνύματα σε

κόμβους βάσει GUIDs που συσχετίζονται με πόρους και κάνοντας χρήση δρομολόγησης προθεμάτων,

αντίστοιχα με το Pastry. Ωστόσο, το Tapestry API κρύβει τον κατανεμημένο πίνακα κατακερματισμού

από τις εφαρμογές πίσω από μια DOLR διεπαφή. Οι κόμβοι που διατηρούν πόρους χρησιμοποιούν την

publish(GUID) κλήση για να τους δημοσιοποιήσουν στο Tapestry. Αντίγραφα πόρων δημοσιεύονται με

το ίδιο GUID από κάθε κόμβο που διατηρεί ένα αντίγραφο, έχοντας ως αποτέλεσμα πολλαπλές

καταχωρήσεις στη δομή δρομολόγησης του Tapestry. Αυτό παρέχει στις Tapestry εφαρμογές επιπλέον

ευελιξία: μπορούν να τοποθετήσουν αντίγραφα πλησίον (σε «δικτυακή απόσταση») συχνών χρηστών

των πόρων ώστε να μειωθούν καθυστερήσεις και ο δικτυακός φόρτος αλλά και να διασφαλιστεί

ανεκτικότητα σε αποτυχίες του δικτύου και Η/Υ. Στο Tapestry χρησιμοποιούνται 160-bit αναγνωριστικά

που αναφέρονται σε αμφότερα αντικείμενα και κόμβους που εκτελούν δραστηριότητες δρομολόγησης.

Για κάθε πόρο G υπάρχει ένας μοναδικός κόμβος RG (ο αριθμητικά πλησιέστερος στον G), ο οποίος

ενημερώνεται περιοδικά από κάθε κόμβο που διατηρεί ένα αντίγραφο του G (ώστε νέο-εισαχθέντες

κόμβοι να γνωρίζουν την ύπαρξη του G). Οι κόμβοι που αποθηκεύουν πολλαπλές (G, IP) αντιστοιχίσεις

για το ίδιο GUID, τις ταξινομούν ως προς τις δικτυακές αποστάσεις τους από τις IP διευθύνσεις.

Άσκηση αυτοαξιολόγησης 10.7

Περιγράψτε τη μέθοδο τοποθέτησης, καταλογοποίησης και εύρεσης πόρων στο σύστημα Tapestry.

Δραστηριότητα 10.11

Μελετήστε το άρθρο που περιγράφει αναλυτικά το σύστημα ΕΛ Tapestry, και περιγράψτε τη μέθοδο

διαχείρισης των πινάκων δρομολόγησης στο σύστημα στα σενάρια της σύνδεσης και αποχώρησης

κόμβων:

B. Y. Zhao, L. Huang, J. Stribling, S. C. Rhea, A. D. Joseph, J. D. Kubiatowicz, “Tapestry: A Resilient

Global-Scale Overlay for Service Deployment”, IEEE Journal on Selected Areas in

Communications, 22(1), pp. 41-53, 2004.

6. Μελέτες περιπτώσεων εφαρμογών: Squirrel, OceanStore, Ivy Η διάδοση μεγάλη κλίμακας P2P συστημάτων αφορά κυρίως σε εφαρμογές μεταφόρτωσης αρχείων

(π.χ. Napster, Freenet, Gnutella, Kazaa, BitTorrent). Αυτά τα συστήματα δεν εφαρμόζουν ωστόσο

ξεχωριστά στρώματα επικείμενης δρομολόγησης, συνεπώς οι αξιολογήσεις της απόδοσής τους δεν

Page 185: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

185

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

προσωρινής web αποθήκευσης Squirrel που βασίζεται στο Pastry, και τα συστήματα αποθήκευσης

αρχείων OceanStore και Ivy.

6.1 Προσωρινή web αποθήκευση Squirrel Το Squirrel αναπτύχθηκε από τους δημιουργούς του Pastry και αποτελεί μια P2P υπηρεσία προσωρινής

αποθήκευσης στο web (web cache) σε τοπικά δίκτυα προσωπικών Η/Υ.

Προσωρινή αποθήκευση στο web: οι HTTP GET αιτήσεις των web περιηγητών (browsers) για Internet

αντικείμενα (σελίδες, εικόνες, κλπ) εξυπηρετούνται από (α) προσωρινά αποθηκευμένο υλικό (cache)

των περιηγητών στον Η/Υ του πελάτη, (β) πληρεξούσιους web χώρους αποθήκευσης (proxy web

caches), οι οποίοι συνήθως τρέχουν σε άλλους Η/Υ στο ίδιο τοπικό δίκτυο, ή (γ) από τον web

εξυπηρετητή που φιλοξενεί τα «αυθεντικά» αντικείμενα (origin web server), του οποίου το όνομα

περιοχής περιλαμβάνεται στις παραμέτρους της GET αίτησης. Οι δύο πρώτοι χώροι περιέχουν ένα

σύνολο πρόσφατα ανακτημένων αντικειμένων και μεταδεδομένων, όπως μιας χρονοσφραγίδας (με το

χρόνο τελευταίας αλλαγής και ίσως τον εναπομένοντα χρόνο ζωής, time-to-live) ή ένα eTag (το

αποτέλεσμα μιας συνάρτησης κατακερματισμού όταν εφαρμόζεται πάνω σε μια ιστοσελίδα). Εφόσον

οι χώροι προσωρινής αποθήκευσης διατηρούν κάποια πρόσφατη έκδοση του αντικειμένου, αυτή

επιστρέφεται στον αιτούμενο πελάτη. Διαφορετικά, αποστέλλεται μία υπό-συνθήκη GET αίτηση (cGET)

η οποία εξυπηρετείται, είτε από τον web εξυπηρετητή, είτε από κάποιον άλλο χώρο προσωρινής

αποθήκευσης, οι οποίοι επιστρέφουν είτε μια πιο πρόσφατη έκδοση του αντικειμένου είτε ένα μήνυμα

που δείχνει ότι το αντικείμενο δεν έχει μεταβληθεί (not-modified). Αυτό το σχήμα αποτελεί τη βάση

των συγκεντρωτικών (centralized) υπηρεσιών προσωρινής web αποθήκευσης με πληρεξούσιους (proxy

web caches) που εφαρμόζονται σε πολλά δίκτυα. Τα proxy web caches τυπικά υλοποιούνται σε έναν

αφοσιωμένο εξυπηρετητή ή συστοιχία Η/Υ και απαιτούν σημαντικούς υπολογιστικούς πόρους.

Squirrel: το Squirrel είναι μια υπηρεσία προσωρινής web αποθήκευσης που εκτελεί αντίστοιχες

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

SHA-1 συνάρτηση κατακερματισμού εφαρμόζεται στη URL κάθε αποθηκευμένου αντικειμένου για να

παράγει ένα 128-bit Pastry GUID. Στην απλούστερη -και πιο αποδοτική- υλοποίησή του, ο αριθμητικά

πλησιέστερος κόμβος στο GUID του αντικειμένου γίνεται ο «οικιακός κόμβος» (home node) του

αντικειμένου, υπεύθυνος για να διατηρεί κάθε αποθηκευμένο αντίγραφο του αντικειμένου. Οι κόμβοι

πελατών διαμορφώνονται ώστε να περιλαμβάνουν μια τοπική διεργασία Squirrel πληρεξούσιου που

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

μια πρόσφατη έκδοση ενός αιτούμενου αντικειμένου στην τοπική cache, το Squirrel δρομολογεί την

GET/cGET αίτηση στον οικιακό κόμβο, μέσω Pastry. Αν ο οικιακός κόμβος διαθέτει μια πρόσφατη

έκδοση απαντάει ανάλογα στην αίτηση είτε με ένα not-modified μήνυμα είτε με πρόσφατη έκδοση. Αν

έχει κάποια παλαιά έκδοση ή δεν έχει καν αποθηκευμένο το αντικείμενο, τότε προωθεί την αίτηση

στον origin web εξυπηρετητή.

Αξιολόγηση του Squirrel: το Squirrel αξιολογήθηκε με προσομοίωση που μοντελοποίησε φόρτους που

εξήχθησαν από αρχεία ιχνών (trace files) δραστηριότητας πραγματικών συγκεντρωτικών συστημάτων

προσωρινής αποθήκευσης. Η αξιολόγηση συνέκρινε την απόδοση του Squirrel έναντι ενός

Page 186: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

186

συγκεντρωτικού συστήματος προσωρινής αποθήκευσης ως προς: (α) τη μείωση του εξωτερικού

συνολικού εύρους ζώνης που χρησιμοποιήθηκε, (β) την καθυστέρηση πρόσβασης στα αντικείμενα που

αντιλαμβάνονταν οι χρήστες, και (γ) τον υπολογιστικό και αποθηκευτικό φόρτο που τίθεται στους

πελάτες. Από την αξιολόγηση διαφάνηκε ότι η απόδοση του Squirrel είναι συγκρίσιμη με εκείνη του

συγκεντρωτικού συστήματος: το Squirrel πέτυχε αντίστοιχη μείωση καθυστέρησης με το συγκεντρωτικό

σύστημα που χρησιμοποιούσε αφοσιωμένο εξυπηρετητή, ενώ ο επιπρόσθετος φόρτος στους πελάτες

ήταν μικρός.

Άσκηση αυτοαξιολόγησης 10.8

Ποια είναι η κύρια λειτουργία ενός μηχανισμού προσωρινής web αποθήκευσης; Ποιο το κύριο

μειονέκτημα των υφιστάμενων μεθόδων προσωρινής web αποθήκευσης ;

Άσκηση αυτοαξιολόγησης 10.9

Εξηγήστε την αρχή λειτουργίας του Squirrel (τη μέθοδο που χρησιμοποιεί για την αποθήκευση και

ανάκτηση web αντικειμένων).

Δραστηριότητα 10.12

Μελετήστε το άρθρο που περιγράφει αναλυτικά την εφαρμογή Squirrel και περιγράψτε τα κυριότερα

συμπεράσματα που προέκυψαν από τη σύγκρισή του με το συγκεντρωτικό σύστημα προσωρινής

αποθήκευσης.

S. Iyer, A. Rowstron, and P. Druschel, “Squirrel: A decentralized peer-to-peer web cache”,

Proceedings of the ACM Symposium on Principles of Distributed Computing (PODC’02), 2002.

Δραστηριότητα 10.13

(α) Μελετήστε το 4ο σχήμα (Figure 4) στο άρθρο που προαναφέρθηκε και εξηγήστε συνοπτικά τι

περιγράφει.

(β) Πως ερμηνεύετε τη διαφορά που παρατηρείται σε καθένα από τα υπό εξέταση δίκτυα (Redmond

και Cambridge) μεταξύ των “hops for home-store” και των “hops for directory”.

(γ) Ερμηνεύστε τη διαφορά στα “mean hops for home-store” των δύο συστημάτων (4,11 στο Redmond

έναντι 1,8 στο Cambridge).

(δ) Τεκμηριώστε ότι τα “mean hops for home-store” που μετρήθηκαν στα δύο συστήματα ήταν –

θεωρητικά- αναμενόμενα.

6.2 Αποθήκη αρχείων OceanStore Το OceanStore παρέχει μια πολύ μεγάλης κλίμακας και αυξανόμενα κλιμακούμενης υπηρεσία

αποθήκευσης μεταβαλλόμενων αντικειμένων δεδομένων (συνήθως αρχείων).

Οργάνωση αποθήκευσης: Τα OceanStore αντικείμενα δεδομένων αποθηκεύονται σε ένα σύνολο από

ενότητες (blocks). Κάθε αντικείμενο αναπαρίσταται ως μια διατεταγμένη ακολουθία αμετάβλητων

εκδόσεων που διατηρούνται για πάντα. Κάθε τροποποίηση του αντικειμένου έχει ως αποτέλεσμα τη

Page 187: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

187

δημιουργία μιας νέας έκδοσης. Οι εκδόσεις μοιράζονται τυχόν αμετάβλητες ενότητες, έτσι, μικρές

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

Τα αντικείμενα δομούνται με ένα τρόπο αντίστοιχο του συστήματος αρχείων του Unix με τις ενότητες

δεδομένων να οργανώνονται και να προσπελαύνονται μέσω μιας ενότητας μεταδεδομένων, της

ενότητας ρίζας (root block) και επιπλέον ενοτήτων ανακατεύθυνσης (indirection blocks) εφόσον είναι

απαραίτητο. Ένα άλλο επίπεδο ανακατεύθυνσης χρησιμοποιείται για να συσχετίσει ένα εξωτερικά-

ορατό όνομα (π.χ. το μονοπάτι του αρχείου) με μία σειρά εκδόσεων αυτού του αντικειμένου

δεδομένων. Τρεις τύποι GUIDs χρησιμοποιούνται: (α) τα ενεργά GUIDs (active GUIDs, AGUIDs) που

προσδιορίζουν μοναδικά το σύνολο των εκδόσεων του αντικειμένου, (β) τα GUIDs ενοτήτων (block

GUIDs, BGUIDs) που αποτελούν ένα ασφαλή κατακερματισμό μιας ενότητας δεδομένων, και (γ) τα

GUIDs εκδόσεων (version GUIDs, VGUIDs) που είναι τα BGUIDs των ενοτήτων ριζών.

Απόδοση: ένα πρωτότυπο που βασίστηκε στο OceanStore, το Pond, αναπτύχθηκε (σε Java) για να

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

μια εξομοίωση ενός NFS πελάτη και εξυπηρετητή. Η αξιολόγηση έδειξε ότι η απόδοση του

OceanStore/Pond όταν λειτουργεί σε ένα δίκτυο ευρείας περιοχής (π.χ. το Internet) υπερβαίνει (με

τάξη μεγέθους 3) εκείνη του NFS στην ενημέρωση αρχείων και καταλόγων, ενώ είναι χειρότερη σε

τοπικά δίκτυα.

Δραστηριότητα 10.14

Ποιο το πεδίο εφαρμογών του συστήματος OceanStore. Ποια η σκοπιμότητα των τριών τύπων GUIDs

που περιλαμβάνει; Ποια η διαδικασία ακολουθείται κάθε φορά που δημιουργείται ή ενημερώνεται ένα

νέο αντικείμενο αποθήκευσης;

6.3 Σύστημα αρχείων Ivy Αντίστοιχα με το OceanStore, το Ivy είναι ένα σύστημα ανάγνωσης/εγγραφής αρχείων που υποστηρίζει

πολλαπλούς αναγνώστες και εγγραφείς και υλοποιείται πάνω από ένα στρώμα υπερκείμενης

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

με το OceanStore, το Ivy εξομοιώνει ένα Sun NFS εξυπηρετητή. Το Ivy αποθηκεύει τις καταστάσεις των

αρχείων ως καταχωρήσεις (logs) των αιτήσεων ενημέρωσης του αρχείου από τους Ivy πελάτες και

ανακατασκευάζει τα αρχεία σαρώνοντας τις καταχωρήσεις, όποτε δεν είναι δυνατό να εξυπηρετήσει

μια αίτηση πρόσβασης από τον τοπικό προσωρινό χώρο αποθήκευσης (cache). Οι καταχωρήσεις

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

Ο σχεδιασμός του Ivy επιλύει μερικά προηγούμενα άλυτα θέματα που προκύπτουν από την ανάγκη

φιλοξενίας αρχείων σε μερικώς έμπιστες ή αναξιόπιστες μηχανές:

� Συντήρηση συνεπών μεταδεδομένων των αρχείων.

� Μερική εμπιστοσύνη μεταξύ συμμετεχόντων και ευπάθεια σε επιθέσεις μηχανών συμμετεχόντων.

� Συνεχής λειτουργία κατά τη διάρκεια διαχωρισμών στο δίκτυο που μπορεί να προκαλέσουν

αντικρουόμενες ενημερώσεις των διαμοιραζόμενων αρχείων.

Page 188: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

188

Το Ivy υλοποιεί ένα API σε κάθε κόμβο πελάτη που βασίζεται στο πρωτόκολλο NFS server. Οι κόμβοι

πελάτες περιλαμβάνουν μια διεργασία NFS server που χρησιμοποιεί DHash για να αποθηκεύει και να

προσπελαύνει καταχωρήσεις σε κόμβους -διεσπαρμένους στο τοπικό ή ευρείας περιοχής δίκτυο- βάσει

κλειδιών (GUIDs), τα οποία υπολογίζονται ως κατακερματισμός των περιεχομένων των καταχωρήσεων.

Οι συγγραφείς του Ivy αξιολόγησαν την απόδοσή του με ένα τυπικό NFS server σε περιβάλλοντα

τοπικών και ευρείας περιοχής δικτύων. Εξέτασαν (α) το Ivy με χρήση DHash εξυπηρετητών σε σύγκριση

με ένα τοπικό NFS server, και (β) το Ivy με χρήση DHash εξυπηρετητών τοποθετημένων σε διάφορα

σημεία του Internet σε σύγκριση με ένα απομακρυσμένο NFS server. Βρήκαν ότι το Ivy είχε

μεγαλύτερους χρόνους εκτέλεσης (με τάξη μεγέθους 2) εν συγκρίσει με το NFS. Οι χρόνοι ήταν δέκα

φορές μεγαλύτεροι σε δίκτυα ευρεία περιοχής εν συγκρίσει με τοπικά δίκτυα.

Δραστηριότητα 10.15

Ποιες οι διαφορές του συστήματος Ivy σε σχέση με το OceanStore; Ποια προβλήματα άλλων

κατανεμημένων συστημάτων αρχείων λύνει το Ivy;

7. Περίληψη Οι P2P αρχιτεκτονικές μπορούν να υποστηρίξουν πολύ μεγάλης κλίμακας διαμοίραση δεδομένων,

όπως κατέδειξαν η εμπειρία του Napster και των επιγόνων του στη διαμοίραση ψηφιακής μουσικής.

Ωστόσο είχαν και τεχνικά μειονεκτήματα που περιόρισαν την ανάπτυξή τους σε εφαρμογές στις οποίες

οι εγγυήσεις ακεραιότητας δεδομένων και διαθεσιμότητας δεν είναι σημαντικές.

Μεταγενέστερη έρευνα είχε ως αποτέλεσμα την ανάπτυξη πλατφορμών P2P ΕΛ που παραδίδουν

αιτήσεις σε αντικείμενα δεδομένων οπουδήποτε κι αν βρίσκονται στο Internet. Οι πλατφόρμες ΕΛ

προσθέτουν εγγυήσεις ακεραιότητας (που βασίζονται στη χρήση συναρτήσεων ασφαλούς

κατακερματισμού για τη δημιουργία GUIDs) και διαθεσιμότητας (που βασίζονται στη διατήρηση

αντιγράφων των αντικειμένων σε διάφορους κόμβους και σε αλγορίθμους δρομολόγησης ανεκτικών σε

σφάλματα). Οι πλατφόρμες αναπτύχθηκαν σε διάφορες μεγάλης κλίμακας πιλοτικές εφαρμογές,

βελτιώθηκαν και αξιολογήθηκαν.

Δραστηριότητα 10.16

Συνοψίστε τις σημαντικότερες ωφέλειες και αδυναμίες των P2P αρχιτεκτονικών.

Page 189: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

189

ΚΕΦΑΛΑΙΟ 19: Κινητός και Διάχυτος

Υπολογισμός

Σκοπός Ο σκοπός του παρόντος κεφαλαίου είναι να προσφέρει μια επισκόπηση των πεδίων του κινητού και

διάχυτου υπολογισμού. Εισάγεται ένα κοινό μοντέλο συστήματος που τονίζει τη μεταβλητότητα των

κινητών και διάχυτων συστημάτων ως προς τους χρήστες, τις συσκευές και το λογισμικό. Το κεφάλαιο

διερευνά βασικές περιοχές έρευνας που έχουν έρθει στο προσκήνιο ακριβώς λόγω της

μεταβλητότητας: πώς στοιχεία λογισμικού συσχετίζονται και διαλειτουργούν καθώς οντότητες

εμφανίζονται, μετακινούνται ή εξαφανίζονται, πώς τα συστήματα ενσωματώνονται στο φυσικό κόσμο

μέσω της αίσθησης και της επίγνωσης πλαισίου, ποια θέματα ασφάλειας και ιδιωτικότητας εγείρονται

σε ευμετάβλητα περιβάλλοντα, ποιες τεχνικές χρησιμοποιούνται για την προσαρμογή των χαμηλών

επεξεργαστικών και αποθηκευτικών πόρων σε μικρές συσκευές.

Προσδοκώμενα αποτελέσματα

Όταν θα έχετε μελετήσει το κεφάλαιο αυτό θα μπορείτε να:

• Ορίσετε τις έννοιες του κινητού, διάχυτου, φορετού και με επίγνωση πλαισίου υπολογισμού

• Αναφέρετε τις μορφές μεταβλητότητας σε συστήματα κινητού και διάχυτου υπολογισμού

• Κατανοήσετε τις σχεδιαστικές αρχές και προκλήσεις σε σχέση με τις υπηρεσίες ανακάλυψης σε

ευμετάβλητα συστήματα

• Να εξηγήσετε τις αρχές του δεδομενο-στραφούς προγραμματισμού και να περιγράψετε τα

λειτουργικά χαρακτηριστικά δύο παραδειγμάτων που εντάσσονται σε αυτόν

• Δώσετε παραδείγματα όψεων πλαισίου και να αντιστοιχίσετε τις όψεις αυτές με αισθητήρες

που τις καταγράφουν

• Περιγράψετε τις βασικές λειτουργικές προκλήσεις που έχουν καταγραφεί για το σχεδιασμό

συστημάτων με επίγνωση θέσης

• Εξηγήσετε τα βασικότερα χαρακτηριστικά των ασυρμάτων δικτύων αισθητήρων

• Συγκρίνετε τα χαρακτηριστικά των υφιστάμενων τεχνολογιών αίσθησης θέσης

• Κατανοήσετε τις προκλήσεις που εγείρονται σε σχέση με την ιδιωτικότητα σε ευμετάβλητα

συστήματα και να περιγράψετε αντίστοιχες τεχνικές προστασίας της ιδιωτικότητας

• Εξηγήσετε τεχνικές για την προσαρμογή πολυμεσικού περιεχομένου με επίγνωση πλαισίου σε

ετερογενείς συσκευές

Page 190: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

190

• Αναλύσετε τις έννοιες που εισήχθησαν με το έργο Cooltown της HP και να περιγράψετε

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

Έννοιες κλειδιά

Beacon, Cooltown, eSquirt, GPS, NFC, RFID, UWB, Ανεκτική σε διακοπές δικτύωση, ασύρματα δίκτυα

αισθητήρων, Δεδομενο-στραφής προγραμματισμός, Διαλειτουργία, Διάχυτος υπολογισμός, Ενδο-

δικτυακή επεξεργασία, Επίγνωση πλαισίου, Ιδιωτικότητα, κινητά αδόμητα δίκτυα, Κινητός

υπολογισμός, μικρο-εφαρμογές πλαισίου, Μεταβλητότητα, Νομαδικός υπολογισμός, Παρουσία ιστού,

Πλαίσιο, Προσαρμογή με επίγνωση ενέργειας, Προσαρμογή περιεχομένου, Συσχέτιση, Υπηρεσίες

ανακάλυψης, Φορετός υπολογισμός.

1. Εισαγωγή

Ο κινητός και διάχυτος υπολογισμός (mobile and ubiquitous computing) αποτελεί υπολογιστικό

παράδειγμα το οποίο έχει προκύψει λόγω της σμίκρυνσης των συσκευών και της ασύρματης

συνδεσιμότητας. Μιλώντας γενικά, ο κινητός υπολογισμός αφορά στην αξιοποίηση της δυνατότητας

συνεκτικότητας των συσκευών που κινούνται στο σημερινό φυσικό κόσμο, ενώ ο διάχυτος

υπολογισμός αφορά στην αξιοποίηση της αυξανόμενης ενσωμάτωσης υπολογιστικών συσκευών στο

σημερινό φυσικό κόσμο. Αυτό το κεφάλαιο μελετά όψεις του κινητού και διάχυτου υπολογισμού

επικεντρώνοντας στις κοινές τους ιδιότητες και στις διαφορές που μοιράζονται από πιο συμβατικά

κατανεμημένα συστήματα.

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

τους προσωπικούς τους Η/Υ και να διατηρήσουν κάποια συνδεσιμότητα με άλλες μηχανές. Από τους

πρώτους προσωπικούς Η/Υ της δεκαετίας του 1980 που συνδέονταν με άλλους Η/Υ πάνω από

τηλεφωνικές γραμμές μέσω modems, έχουμε φθάσει στο σημερινό τους αντίστοιχο, φορητούς Η/Υ

(laptops ή notebooks) με συνδυασμό δυνατοτήτων ασύρματης συνδεσιμότητας,

συμπεριλαμβανομένων των υπέρυθρων ακτίνων (infrared), WiFi, Bluetooth, GPRS/3G. Μια

διαφορετική εξελικτική πορεία οδήγησε στον υπολογισμό χειρός (handheld computing), στη χρήση

δηλαδή συσκευών που χωρούν στην παλάμη και περιλαμβάνουν τους προσωπικούς ψηφιακούς

βοηθούς (PDAs), κινητά τηλέφωνα και άλλες συσκευές. Μια ενδιαφέρουσα τάση θέλει τα όρια μεταξύ

PDAs, κινητών τηλεφώνων και ειδικού σκοπού συσκευών (όπως οι κάμερες) να γίνονται ολοένα και πιο

δυσδιάκριτα (π.χ. διάφοροι τύπου κινητών τηλεφώνων διαθέτουν υπολογιστική λειτουργικότητα που

προσομοιάζει στα PDAs). Δύο προβλήματα επιπέδου δικτύου που πρέπει να λυθούν σε συστήματα που

μελετούνται σε αυτό το κεφάλαιο σχετίζονται με την παροχή συνεχούς σύνδεσης σε συσκευές που

εισέρχονται/εξέρχονται στην εμβέλεια σταθμών βάσης καθώς και της σύνδεσης συσκευών σε χώρους

όπου δεν υφίστανται δικτυακές υποδομές, δηλαδή σε περιβάλλοντα αδόμητων (ad hoc) δικτύων. Και

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

πρώτον, μεγαλύτερη εμβέλεια σημαίνει ότι περισσότερες συσκευές θα ανταγωνίζονται για

Page 191: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

191

περιορισμένο εύρος ζώνης και, δεύτερον, η εκπομπή σημάτων σε μεγάλη εμβέλεια είναι ενεργειακή

ακριβή.

Διάχυτος υπολογισμός: ο Mark Weiser εισήγαγε τον όρο αυτό, συνειδητοποιώντας την επικράτηση των

υπολογιστικών συσκευών ως οδηγό μιας επαναστατικής αλλαγής στον τρόπο που θα χρησιμοποιούμε

τους Η/Υ. Πρώτον, κάθε άτομο θα χρησιμοποιεί πολλούς Η/Υ. Οι Η/Υ, μάλιστα, θα πολλαπλασιάζονται

σε μορφή και λειτουργία, όχι μόνο σε αριθμό, ώστε να ταιριάζουν σε διαφορετικές εργασίες. Δεύτερον,

οι Η/Υ θα «εξαφανίζονται» («θα εξυφαίνονται στο ύφασμα της καθημερινής ζωής έως ότου δε θα

μπορούν να διαχωριστούν από αυτό»).

Φορετός υπολογισμός: οι χρήστες μεταφέρουν φορετές υπολογιστικές συσκευές (wearable computing

devices) είτε προσδεμένες / ενσωματωμένες στο υλικό των ρούχων τους είτε φορεμένες (π.χ. ρολόγια,

κοσμήματα, γυαλιά). Σε αντίθεση με της φορητές συσκευές που προαναφέρθηκαν, αυτές οι συσκευές

συχνά λειτουργούν χωρίς τον έλεγχο του χρήστη και τυπικά έχουν εξειδικευμένη λειτουργικότητα.

Υπολογισμός με επίγνωση πλαισίου: πρόκειται για μια υπο-περιοχή του κινητού και διάχυτου

υπολογισμού, όπου τα υπολογιστικά συστήματα προσαρμόζουν αυτόματα τη συμπεριφορά τους

σύμφωνα με τις συνθήκες στο φυσικό περιβάλλον του χρήστη. Οι συνθήκες αυτές μπορεί να αφορούν

οποιαδήποτε φυσικά μετρήσιμη ή ανιχνεύσιμη παράμετρο, όπως την παρουσία ενός χρήστη, την ώρα

της ημέρας ή ατμοσφαιρικές συνθήκες.

Δραστηριότητα 19.1

Ορίστε τους παρακάτω όρους: Κινητός υπολογισμός, διάχυτος υπολογισμός, φορετός υπολογισμός,

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

Δώστε δύο παραδείγματα για καθένα από τα τέσσερα υπολογιστικά παραδείγματα.

Άσκηση αυτοαξιολόγησης 19.1

Περιγράψτε τη λειτουργία του συστήματος «ενεργούς κονκάρδας» (active badge). Πως θα μπορούσε να

αξιοποιηθεί και τι εφαρμογές θα μπορούσε να ωθήσει σε ένα περιβάλλον έξυπνου σπιτιού;

Άσκηση αυτοαξιολόγησης 19.2

Δώστε 10 παραδείγματα (παραμέτρους) πλαισίου. Πως θα μπορούσε να προσαρμόσει τη συμπεριφορά

της κάποια εφαρμογή με επίγνωση πλαισίου στη μεταβολή αυτών των 10 παραμέτρων;

1.1 Ευμετάβλητα συστήματα

Τα συστήματα που μελετούνται σε αυτό το κεφάλαιο καλούνται ευμετάβλητα επειδή, σε αντίθεση με

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

εξαίρεση. Το σύνολο των χρηστών, υλικού και λογισμικού στα συστήματα κινητού και διάχυτου

υπολογισμού είναι ιδιαίτερα δυναμικά και μεταβάλλεται με τρόπο απρόβλεπτο. Οι σχετικές μορφές

της μεταβλητότητας περιλαμβάνουν αποτυχίες συσκευών και επικοινωνιακών ζεύξεων, αλλαγές των

χαρακτηριστικών της επικοινωνίας (όπως του εύρους ζώνης) και τη δημιουργία και καταστροφή

Page 192: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

192

συσχετίσεων (λογικών σχέσεων επικοινωνίας μεταξύ μονάδων λογισμικού που λειτουργούν σε

συσκευές).

Έξυπνοι χώροι: είναι φυσικοί χώροι με ενσωματωμένες υπηρεσίες (δηλαδή υπηρεσίες που παρέχονται

κατά κύριο λόγο ή αποκλειστικά σε συγκεκριμένο φυσικό χώρο). Τυπικά, αφορούν σε υπολογιστικά-

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

διάχυτα συστήματα με σχετικά σταθερή υπολογιστική υποδομή (π.χ. εξυπηρετητές, εκτυπωτές, οθόνες,

αισθητήρες, ασύρματη δικτυακή υποδομή για σύνδεση στο Internet). Υπάρχουν πολλοί τύποι

κινητικότητας και εμφάνισης/εξαφάνισης σε έξυπνους χώρους: η φυσική κινητικότητα χρηστών και

συσκευών, η λογική κινητικότητα (π.χ. μια κινητή διεργασία ή διαμεσολαβητής μπορεί να μετακινηθεί

μέσα ή έξω από τον έξυπνο χώρο), προσθήκη από τους χρήστες στατικών συσκευών που λειτουργούν

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

Μοντέλο συσκευής: με την έλευση του κινητού και διάχυτου υπολογισμού, μια νέα κλάση

υπολογιστικής συσκευής γίνεται μέρος των κατανεμημένων συστημάτων. Αυτή η συσκευή έχει

περιορισμούς όσον αφορά τα ενεργειακά αποθέματα και υπολογιστικούς πόρους, ενώ μπορεί να έχει

τρόπους διεπαφής με το φυσικό κόσμο: αισθητήρες (π.χ. ανιχνευτές φωτός) και/ή ενεργοποιητές

(actuators), δηλαδή ελεγχόμενων από λογισμικό συσκευών, όπως προγραμματισμένων μέσων κίνησης.

Ευμετάβλητη συνδεσιμότητα: Οι τεχνολογίες σύνδεσης που χρησιμοποιούνται σε συστήματα κινητού

και διάχυτου υπολογισμού (Bluetooth, WiFi, 3G, κλπ) διαφέρουν ως προς το εύρος ζώνης και

καθυστέρηση, ενεργειακό και οικονομικό κόστος. Η μεταβλητότητα της συνδεσιμότητας έχει επίσης

σοβαρή επίδραση στις ιδιότητες του συστήματος και περιλαμβάνει παραμέτρους κατάστασης της

σύνδεσης, όπως αποσυνδέσεις μεταξύ συσκευών και μεταβολή της ποιότητας υπηρεσίας (π.χ. εύρους

ζώνης και καθυστέρησης).

Αυθόρμητη διαλειτουργικότητα: σε ένα ευμετάβλητο σύστημα, τα συστατικά μεταβάλουν το σύνολο

των συστατικών με τα οποία επικοινωνούν. Χρησιμοποιούμε τον όροι συσχέτιση (association) για τη

λογική σχέση που σχηματίζεται όταν ένα ζεύγος συστατικών επικοινωνεί για μια περίοδο χρόνου, και

διαλειτουργία (interoperation) για τις αλληλεπιδράσεις τους κατά τη διάρκεια αυτής της περιόδου. Σε

έναν έξυπνο χώρο, οι συσχετίσεις αλλάζουν καθώς τα στοιχεία αξιοποιούν ευκαιρίες αλληλεπίδρασης

με τοπικά στοιχεία. Σε αντίθεση με τις προκαθορισμένες συσχετίσεις που είναι οδηγούμενες από την

υπηρεσία, οι αυθόρμητες συσχετίσεις είναι οδηγούμενες από τον άνθρωπο, τα δεδομένα ή το φυσικό

περιβάλλον.

Μειωμένη εμπιστοσύνη και ιδιωτικότητα: Η ασφάλεια στα κατανεμημένα συστήματα βασίζεται σε

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

λόγω της αυθόρμητης διαλειτουργίας: τα συστατικά που μετακινούνται μεταξύ έξυπνων χώρων σε

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

ιδιωτικότητα αποτελεί επίσης ένα σημαντικό θέμα για τους χρήστες που μπορεί να μην εμπιστεύονται

τα συστήματα λόγω των δυνατοτήτων αίσθησης που ενσωματώνουν.

Δραστηριότητα 19.2

Page 193: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

193

Ποιες μορφές μεταβλητότητας παρουσιάζονται σε συστήματα κινητού και διάχυτου υπολογισμού;

Δραστηριότητα 19.3

Ορίστε τον όρο «έξυπνος χώρος». Ποιοι τύποι κινητικότητας εμφανίζονται σε έναν έξυπνο χώρο;

Δραστηριότητα 19.4

Τι είδους απαιτήσεις προκύπτουν από τους περιορισμούς σε ενέργεια και πόρους των συσκευών που

χρησιμοποιούνται σε συστήματα κινητού και διάχυτου υπολογισμού; Τι είναι οι αισθητήρες και τι οι

ενεργοποιητές; Περιγράψτε τη λειτουργικότητα των motes και των τηλεφώνων-καμερών.

Δραστηριότητα 19.5

Τι είναι η προκαθορισμένη και τι η αυθόρμητη συσχέτιση; Δώστε παραδείγματα για κάθε τύπο

συσχέτισης.

2. Συσχέτιση

Μια συσκευή που εμφανίζεται σε έναν έξυπνο χώρο απαιτείται να διαλειτουργεί, κατά προτίμηση

χωρίς παρέμβαση χρήστη. Δηλαδή να μπορεί να αυτό-εκκινείται σε ένα τοπικό δίκτυο (network

bootstrapping) ώστε να επικοινωνεί με άλλες συσκευές και να συσχετίζεται κατάλληλα στον έξυπνο

χώρο (association).

Δικτυακή εκκίνηση: κάποιες από τις υφιστάμενες τεχνικές βασίζονται σε εξυπηρετητές, προσβάσιμων

μέσα στον έξυπνο χώρο (π.χ. DHCP εξυπηρετητές). Πιο ενδιαφέρων είναι ο ορισμός δικτυακών

παραμέτρων όταν απουσιάζει κάποια υποδομή υπηρεσιών στον έξυπνο χώρο ή πέραν αυτού, ώστε να

αποφευχθούν εξαρτήσεις σε υπηρεσίες που ενδέχεται να αποτύχουν. Σε αυτό το πλαίσιο εντάσσονται

η Zero Configuration Networking (Zeroconf) ομάδα εργασίας της IETF και η εμπορική υλοποίηση

Rendezvous της Apple.

Το πρόβλημα της συσχέτισης και η αρχή του ορίου: μια συσκευή που επικοινωνεί σε έναν έξυπνο χώρο

αντιμετωπίζει το πρόβλημα της συσχέτισης (association problem), που αφορά στο πώς ακριβώς θα

συσχετιστεί με τον έξυπνο χώρο. Οι λύσεις στο πρόβλημα αυτό πρέπει να επιληφθούν δύο βασικών

θεμάτων: της κλίμακας (επιλογής των κατάλληλων συσκευών και συστατικών λογισμικού, μεταξύ

εκατοντάδων διαθέσιμων, με τις οποίες η νέο-αφιχθείσα συσκευή πρέπει να διαλειτουργήσει) και του

πεδίου (πως θα περιοριστεί το εύρος των πιθανών συσχετίσεων ώστε να ληφθούν υπόψη μόνο τα

συστατικά που ανήκουν στον έξυπνο χώρο και όχι τα τρισεκατομμύρια που λειτουργούν έξω από τα

όριά του;). Η αρχή του ορίου (boundary principle) αναφέρεται στο ότι οι έξυπνοι χώροι πρέπει να έχουν

ακριβή όρια συστήματος, καλά ορισμένων γεωγραφικά και διαχειριστικά.

Δραστηριότητα 19.6

Μελετήστε τα έγγραφα που έχουν δημοσιευθεί από τη Zero Configuration Networking (Zeroconf)

ομάδα εργασίας της IETF: http://www.zeroconf.org/. Εξηγήστε τη Zeroconf προσέγγιση ως προς την

Page 194: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

194

απόδοση δικτυακών διευθύνσεων σε συσκευές, επίλυση/ανάλυση ονομάτων Η/Υ (hostnames

resolution) και εντοπισμό δικτυακών υπηρεσιών. Πως συγκρίνεται η Zeroconf έναντι της

«παραδοσιακής» προσέγγισης με χρήση DHCP και DNS εξυπηρετητών;

2.1 Υπηρεσίες ανακάλυψης

Οι πελάτες αναζητούν πληροφορίες σε σχέση με τις υπηρεσίες που παρέχονται σε έναν έξυπνο χώρο

χρησιμοποιώντας μια υπηρεσία ανακάλυψης (discovery service). Μια υπηρεσία ανακάλυψης είναι μια

υπηρεσία καταλόγου όπου οι υπηρεσίες ενός έξυπνου χώρου καταχωρούνται και αναζητούνται ως

προς τα χαρακτηριστικά τους, λαμβάνοντας παράλληλα υπόψη τις ευμετάβλητες ιδιότητες του

συστήματος. Υπάρχουν υπηρεσίες ανακάλυψης συσκευών (device discovery) και ανακάλυψης

υπηρεσιών (service discovery).

Μια υπηρεσία ανακάλυψης έχει μια διεπαφή για την αυτόματη εγγραφή και διαγραφή των υπηρεσιών

που είναι διαθέσιμες για συσχέτιση καθώς και μια διεπαφή που παρέχεται στους πελάτες για να

αναζητήσουν προσφερόμενες υπηρεσίες ώστε να συσχετιστούν με κάποια κατάλληλη υπηρεσία. Τα

θέματα που πρέπει να ληφθούν υπόψη κατά το σχεδιασμό υπηρεσιών ανακάλυψης είναι τα εξής:

� Οι συσχετίσεις πρέπει να πραγματώνονται με την ελάχιστη δυνατή ανθρώπινη εμπλοκή.

� Πρέπει να υπάρχει μια γλώσσα για την περιγραφή των διαθέσιμων υπηρεσιών (service description

language) και μία για την έκφραση των απαιτήσεων από τις υπηρεσίες (query language).

� Απαιτείται ένας μηχανισμός που θα επιτρέπει πρόσβαση στην υπηρεσία ανακάλυψης, κατάλληλης

για τις τρέχουσες φυσικές συνθήκες, χωρίς να προϋποθέτει ότι το όνομα ή η διεύθυνση της

υπηρεσίας είναι γνωστά apriori.

� Απαιτείται η υλοποίηση ενός καταλόγου που να επιτρέπει την αναζήτηση διαθέσιμων υπηρεσιών.

� Θα πρέπει να λαμβάνεται υπόψη ότι οποιαδήποτε υπηρεσία μπορεί να εξαφανιστεί ή να αποτύχει.

Υπάρχουν διάφορες σχεδιαστικές επιλογές όταν υλοποιείται μια υπηρεσία ανακάλυψης. Η πρώτη

αφορά στο κατά πόσο η υπηρεσία ανακάλυψης πρέπει να υλοποιηθεί από έναν εξυπηρετητή

καταλόγου (directory server) ή χωρίς εξυπηρετητή. Στην πρώτη περίπτωση, ένα ισχυρό μηχάνημα

κρατάει τις περιγραφές των υπηρεσιών που έχουν καταχωρηθεί και αποκρίνεται στους πελάτες που

στέλνουν ερωτήσεις σχετικά με τις υπηρεσίες. Στην ανακάλυψη χωρίς εξυπηρετητή, οι συμμετέχουσες

συσκευές συνεργάζονται στην υλοποίηση μιας κατανεμημένης υπηρεσίας ανακάλυψης. Εδώ,

εμφανίζονται δύο εναλλακτικές υλοποιήσεις. Στο μοντέλο ώθησης (push model), οι υπηρεσίες πολύ-

εκπέμπουν (multicast) τις περιγραφές τους σε τακτικά διαστήματα. Οι πελάτες ακούνε για

πολυεκπομπές, και εκτελούν τις ερωτήσεις τους ως προς αυτές, πιθανόν αποθηκεύοντας προσωρινά

(caching) τις περιγραφές τους για μελλοντική χρήση. Στο μοντέλο έλξης (pull model), οι πελάτες

πολυεκπέμπουν τις ερωτήσεις τους. Οι συσκευές που παρέχουν υπηρεσίες εκτελούν τα ερωτήματα

εφόσον οι περιγραφές των υπηρεσιών τους ταιριάζουν στο ερώτημα και αποκρίνονται στον πελάτη. Τα

ερωτήματα των πελατών επανεκπέμπονται τακτικά εφόσον δεν υπάρξει ανταπόκριση.

Μια υπηρεσία μπορεί να κάνει μια αίτηση διαγραφής (deregister call) πριν εξαφανιστεί, αλλά

ενδέχεται και να εξαφανισθεί απροειδοποίητα. Η μεταβλητότητα των υπηρεσιών αντιμετωπίζεται

Page 195: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

195

διαφορετικά ανάλογα με την αρχιτεκτονική του καταλόγου που έχει υλοποιηθεί. Στην περίπτωση του

εξυπηρετητή καταλόγου διατηρείται μια άδεια (lease) για κάθε παρεχόμενη υπηρεσία. Η άδεια πρέπει

να ανανεώνεται με ρητό αίτημα (refresh call) από τον πελάτη πριν λήξει. Αυτός ο μηχανισμός

χρησιμοποιείται στο Jini και στο πρωτόκολλο DHCP. Στην αρχιτεκτονική χωρίς εξυπηρετητή δε

χρειάζεται να ακολουθηθεί κάποια διαδικασία, καθώς η υπηρεσία που έχει εξαφανιστεί παύει να

διαφημίζεται στο μοντέλο ώθησης, ενώ ο πελάτης μπορεί να ανακαλύψει μόνο παρούσες υπηρεσίες

στο μοντέλο έλξης.

Jini: το Jini είναι ένα σύστημα βασισμένο σε Java που σχεδιάστηκε για κινητά και διάχυτα συστήματα

και επιτρέπει την επικοινωνία Η/Υ μέσω RMI. Τα σχετικά με ανακάλυψη συστατικά στο Jini είναι

υπηρεσίες αναζήτησης (lookup services), Jini υπηρεσίες (Jini services) και Jini πελάτες (Jini clients). H

υπηρεσία αναζήτησης επιτρέπει στις Jini υπηρεσίες να καταχωρήσουν τις υπηρεσίες που παρέχουν και

στους Jini πελάτες να ζητήσουν υπηρεσίες που ταιριάζουν στις απαιτήσεις τους. Μια Jini υπηρεσία, π.χ.

μια υπηρεσία εκτύπωσης, μπορεί να καταχωρηθεί σε περισσότερες από μία υπηρεσίες αναζήτησης.

Υπηρεσίες ανακάλυψης δικτύου: οι υπηρεσίες ανακάλυψης που αναλύθηκαν παραπάνω

αντιμετωπίζουν προβλήματα όταν εξετάζονται από τη σκοπιά της αρχής του ορίου: τη χρήση του

υποδικτύου (π.χ. μια υπηρεσία ανακάλυψης μπορεί εσφαλμένα να συμπεριλάβει υπηρεσίες που

φιλοξενούνται στο ίδιο υποδίκτυο αλλά όχι στον ίδιο έξυπνο χώρο) και ακαταλληλότητα στον τρόπο

περιγραφής των υπηρεσιών (π.χ. απαιτείται απόλυτη σύμπτωση στον τρόπο ονομασίας ίδιων

υπηρεσιών, ενώ οι συσκευές πρέπει να είναι ενημερωμένες με περιγραφές υπηρεσιών που θα

μπορούσαν να αξιοποιήσουν).

Δραστηριότητα 19.7

Ποιες είναι οι βασικές σχεδιαστικές απαιτήσεις των υπηρεσιών ανακάλυψης;

Δραστηριότητα 19.8

Ποια τα πλεονεκτήματα και μειονεκτήματα των μοντέλων ώθησης και έλξης στην ανακάλυψη

υπηρεσιών; Προτείνετε και εξηγήστε τη λειτουργία ενός υβριδικού μοντέλου ώθησης / έλξης που να

απαντά στα μειονεκτήματα των μοντέλων ώθησης και έλξης.

Δραστηριότητα 19.9

Εξηγήστε τη χρήση των αδειών σε μια υπηρεσία ανακάλυψης για την αντιμετώπιση του προβλήματος

των ευμετάβλητων υπηρεσιών.

Άσκηση αυτοαξιολόγησης 19.3

Περιγράψτε το αντιστάθμισμα (trade-off) μεταξύ γρήγορης απόκρισης και κατανάλωσης εύρους ζώνης

και ενέργειας που δημιουργείται από τη ρύθμιση του χρόνου διάρκειας μιας άδειας σε μια υπηρεσία

ανακάλυψης που υλοποιεί την αρχιτεκτονική εξυπηρετητή καταλόγου.

Δραστηριότητα 19.10

Page 196: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

196

Περιγράψτε τη διαδικασία ανακάλυψης και χρήσης μιας υπηρεσίας που ανήκει σε συγκεκριμένη

ομάδα (group) στο σύστημα Jini.

Δραστηριότητα 19.11

Αναλύσετε (χρησιμοποιώντας και παραδείγματα) τι είδους προβλήματα αντιμετωπίζουν οι υπηρεσίες

ανακάλυψης όταν εξετάζονται από τη σκοπιά της αρχής του ορίου.

2.2 Φυσική συσχέτιση

Τα μειονεκτήματα των συστημάτων δικτυακής ανακάλυψης αντιμετωπίζονται σε ένα βαθμό

χρησιμοποιώντας φυσικά μέσα, αν και τέτοιες λύσεις προϋποθέτουν αμεσότερη ανθρώπινη εμπλοκή.

Ανθρώπινη είσοδος στο πεδίο της ανακάλυψης: ένας άνθρωπος παρέχει είσοδο στη συσκευή θέτοντας

το πεδίο (scope) της ανακάλυψης.

Αίσθηση και φυσικά περιορισμένα κανάλια στο πεδίο της ανακάλυψης: ο χρήστης μπορεί να προσθέσει

έναν αισθητήρα στη συσκευή του που να αναγνωρίζει ειδικά κωδικοποιημένα σύμβολα (identifier-

encoding symbols ή glyphs) σε αντικείμενα στο χώρο. Μια άλλη τεχνική που αποφεύγει την ανθρώπινη

είσοδο είναι η χρήση ενός φυσικά περιορισμένου καναλιού (physically constrained channel), ενός

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

Άμεση συσχέτιση: ένα σύνολο από τεχνικές εμπλέκουν τον άνθρωπο στη χρήση ενός φυσικού

μηχανισμού για την άμεση συσχέτιση δύο συσκευών, χωρίς τη χρήση μιας υπηρεσίας ανακάλυψης. Σε

κάθε μία από αυτές τις τεχνικές, ο άνθρωπος ενεργοποιεί τη συσκευή του ώστε να ανακαλύψει τη

δικτυακή διεύθυνση (π.χ. Bluetooth ή IP διεύθυνση) μιας συσκευής ‘στόχου’.

Δραστηριότητα 19.12

Περιγράψτε τις τεχνικές που χρησιμοποιούν ανθρώπινη εμπλοκή για τη συσχέτιση συσκευών με

υπηρεσίες σε έναν έξυπνο χώρο.

3. Διαλειτουργία

Δύο στοιχεία λογισμικού (software components) συσχετίζονται στη βάση συγκεκριμένων

χαρακτηριστικών ή δεδομένων που κατέχουν και τα δύο ή ένα εκ των δύο. Ωστόσο, παραμένει ανοιχτό

το ερώτημα σχετικά με το ποιο πρωτόκολλο χρησιμοποιείται για τη μεταξύ τους επικοινωνία και -σε

ένα υψηλότερο επίπεδο- ποιο προγραμματιστικό μοντέλο είναι καταλληλότερο για τη μεταξύ τους

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

συσχετισθεί με μεταβαλλόμενες κλάσεις υπηρεσιών και όχι μόνο με ένα μεταβαλλόμενο σύνολο

στιγμιότυπων της ίδιας κλάσης υπηρεσιών. Δηλαδή, ένας στόχος είναι ένα συστατικό να διατηρεί μια

καλή πιθανότητα διαλειτουργίας με ένα λειτουργικά συμβατό συστατικό, ακόμα και αν το τελευταίο θα

ανήκει σε ένα διαφορετικό τύπο έξυπνου χώρου από εκείνον για τον οποίο αρχικά αναπτύχθηκε.

Page 197: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

197

Η κύρια δυσκολία που συναντάται στην πραγμάτωση της ευμετάβλητης διαλειτουργίας είναι η

ασυμβατότητα των διεπαφών λογισμικού. Υπάρχουν δύο προσεγγίσεις ως προς αυτό. Η πρώτη

επιτρέπει στις διεπαφές να είναι ετερογενείς αλλά προσαρμόζει τη μία διεπαφή στην άλλη, συχνά

μέσω κάποιου πληρεξούσιου (proxy). Μια άλλη προσέγγιση περιορίζει τις διεπαφές ώστε να είναι

πανομοιότυπες, κατά το δυνατόν, σε μια ευρεία κλάση στοιχείων.

Δραστηριότητα 19.13

Ποιοι οι στόχοι και οι προκλήσεις της διαλειτουργίας στοιχείων σε περιβάλλοντα κινητού και διάχυτου

υπολογισμού; Ποιες δυσκολίες συναντώνται στην πραγμάτωση της ευμετάβλητης διαλειτουργίας και

ποιες προσεγγίσεις έχουν εφαρμοστεί για να αντιμετωπιστούν αυτές οι δυσκολίες;

3.1 Δεδομενο-στραφής προγραμματισμός για ευμετάβλητα συστήματα

Τα συστήματα που χρησιμοποιούν μια αμετάβλητη διεπαφή υπηρεσιών, όπως o ιστός, ονομάζονται

δεδομενο-στραφή (data-oriented ή content-oriented), ώστε να διαχωρίζονται από τα

αντικειμενοστραφή (object-oriented). Ένα συστατικό σε ένα δεδομενο-στραφές σύστημα μπορεί να

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

μοναδικής προδιαγραφής διεπαφής (π.χ. του HTTP) είναι πολύ λιγότερο πολύπλοκη από τη διανομή

ενός αόριστου αριθμού εξειδικευμένων προδιαγραφών διεπαφών. Ωστόσο, η ευελιξία των δεδομενο-

στραφών συστημάτων προκύπτει εις βάρος της ευρωστίας. Παρακάτω εξετάζονται προγραμματιστικά

μοντέλα που έχουν χρησιμοποιηθεί σε ευμετάβλητα συστήματα λόγω των διαλειτουργικών δεδομενο-

στραφών χαρακτηριστικών τους.

Συστήματα συμβάντων (event systems): τα συστήματα συμβάντων παρέχουν στιγμιότυπα υπηρεσιών

συμβάντων. Κάθε σύστημα προσφέρει μια σταθερή, γενική διεπαφή μέσω της οποίας συστατικά, που

ονομάζονται εκδότες (publishers) δημοσιεύουν δομημένα δεδομένα (συμβάντα) και, αντίστοιχα,

συστατικά που ονομάζονται συνδρομητές (subscribers) λαμβάνουν συμβάντα. Τα συμβάντα συνιστούν

ένα προγραμματιστικό παράδειγμα για την ανακοίνωση και διαχείριση αλλαγών σε συστατικά ενώσω

βρίσκονται σε ένα ευμετάβλητο σύστημα ή μετακινούνται μεταξύ ευμετάβλητων συστημάτων.

Συμβάντα μπορεί να δημιουργηθούν για να ορίσουν νέες καταστάσεις σχέσεων, π.χ. αλλαγές στη θέση

μιας συσκευής.

Χώροι πλειάδων (tuple spaces): πρόκειται για ένα ώριμο προγραμματιστικό παράδειγμα στο οποίο

συστατικά χρησιμοποιούν μια σταθερή, γενική διεπαφή για να προσθέσουν και ανακτήσουν δομημένα

δεδομένα (πλειάδες) και σχηματίζουν έναν χώρο πλειάδων. Τα συστήματα χώρων πλειάδων

επιτρέπουν την ανταλλαγή εξειδικευμένων-σε-εφαρμογές πλειάδων. Η βάση της συσχέτισης και

διαλειτουργίας είναι η συμφωνία των συστατικών σχετική με δομές για πλειάδες και τιμές που

εμπεριέχονται σε αυτές.

Άμεση διαλειτουργία συσκευών: τα προγραμματιστικά μοντέλα που αναφέρθηκαν είναι κατάλληλα για

έμμεσα σχετιζόμενα συστατικά. Τα συστήματα JetSend και Speakeasy έχουν σχεδιαστεί για τη

διαλειτουργία μεταξύ συσκευών που κάποιος χρήστης έχει άμεσα συσχετίσει. Το πρωτόκολλο JetSend

Page 198: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

198

σχεδιάστηκε ρητά ώστε να είναι δεδομενο-στραφές και να επιτρέπει την αλληλεπίδραση συσκευών

(κάμερες, εκτυπωτές, σαρωτές, κλπ) χωρίς να υπάρχει εγκατεστημένο κάποιο πρόγραμμα οδήγησης

(driver). Η κεντρική λειτουργία συσκευών που συνδέονται στο JetSend είναι να συγχρονίσουν την

κατάσταση που εμφανίζουν η μία στην άλλη, δηλαδή να μεταφέρουν την κατάσταση σε μια μορφή

πάνω στην οποία οι συσκευές μπορούν να διαπραγματευτούν. Το Speakeasy εφάρμοσε τις ίδιες

σχεδιαστικές αρχές με το JetSend στη διαλειτουργία συσκευών, χρησιμοποιώντας ωστόσο κινητό

κώδικα.

Δραστηριότητα 19.14

Τι είναι το δεδομενο-στραφές μοντέλο και σε τι διαφέρει από το αντικειμενοστραφές μοντέλο;

Δραστηριότητα 19.15

Πως αντιμετωπίζεται το πρόβλημα της διαλειτουργικότητας στα συστήματα συμβάντων;

Δραστηριότητα 19.16

Τι είναι οι χώροι πλειάδων; Περιγράψτε εν συντομία τη λειτουργία των συστημάτων iRoom και LIME.

Άσκηση αυτοαξιολόγησης 19.4

Ποιες οι βασικότερες διαφορές μεταξύ των συστημάτων συμβάντων και των χώρων πλειάδων;

Άσκηση αυτοαξιολόγησης 19.5

Σε τι διαφέρει το προγραμματιστικό μοντέλο των συστημάτων JetSend και Speakeasy από εκείνο των

συστημάτων συμβάντων και χώρων πλειάδων; Ποιες οι σχεδιαστικές και λειτουργικές διαφορές μεταξύ

JetSend και Speakeasy;

3.2 Έμμεσες συσχετίσεις και χαλαρή κατάσταση

Συχνά οι προγραμματιστές χρειάζονται να γνωρίζουν ποιες υπηρεσίες είναι σταθερά διαθέσιμες και

ποιες είναι ευμετάβλητες. Για να αντιμετωπίσουν τη μεταβλητότητα, χρειάζονται επίσης

προγραμματιστικές τεχνικές που δεν προϋποθέτουν εξάρτηση από κάποιο συστατικό.

Κάποια από τα δεδεμενο-στραφή προγραμματιστικά συστήματα που προαναφέρθηκαν εμπλέκουν

έμμεσες, ανώνυμες συσχετίσεις. Συγκεκριμένα, συστατικά που διαλειτουργούν μέσω ενός συστήματος

συμβάντων ή ενός χώρου πλειάδων δε γνωρίζουν απαραίτητα τα ονόματα ή διευθύνσεις αλλήλων. Όσο

το σύστημα συμβάντων ή ο χώρος πλειάδων παραμένει ενεργός, τα επιμέρους συστατικά μπορούν να

εμφανίζονται ή αν αντικαθίστανται, ενώ οι προγραμματιστές δεν απαιτείται να διαχειρίζονται

επιμέρους συσχετίσεις. Κάποιες άλλες υλοποιήσεις χρησιμοποιούν χαλαρή κατάσταση (soft state) για

να προσφέρουν πιο χαλαρές, ωστόσο χρήσιμες, εγγυήσεις συνέπειας, ακόμα και αν απουσιάζει ένας

διαρκώς διαθέσιμος μόνιμος αποθηκευτικός χώρος.

Δραστηριότητα 19.17

Page 199: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

199

Ποιο πρόβλημα αντιμετωπίζουν οι υλοποιήσεις χαλαρής κατάστασης. Αναφέρατε και περιγράψετε ένα

παράδειγμα συστήματος χαλαρής κατάστασης.

4. Αίσθηση και επίγνωση πλαισίου

Σε αυτή την ενότητα θα μελετηθούν αρχιτεκτονικές για την επεξεργασία δεδομένων που συλλέγονται

από αισθητήρες καθώς και συστήματα με επίγνωση πλαισίου (context-aware) που ανταποκρίνονται

στην αίσθηση του φυσικού περιβάλλοντος.

Το πλαίσιο μιας οντότητας (άτομο, χώρος, αντικείμενο, συσκευή) είναι μια όψη του φυσικού

περιβάλλοντος που έχει σημασία για τη συμπεριφορά του συστήματος. Μπορεί να περιλαμβάνει

κάποιες σχετικά απλές τιμές (θέση, χρόνος, θερμοκρασία, ταυτότητα χρήστη, κλπ). Το πλαίσιο μπορεί

να κωδικοποιηθεί και μέσω κανόνων (rules). Τέλος, το πλαίσιο μπορεί να περιλαμβάνει πιο

πολύπλοκες παραμέτρους, όπως η δραστηριότητα του χρήστη.

Άσκηση αυτοαξιολόγησης 19.6

Δώστε 10 παραδείγματα παραμέτρων πλαισίου χρήσης. Πως θα μπορούσαν να αξιοποιηθούν αυτές οι

όψεις πλαισίου σε συστήματα με επίγνωση πλαισίου;

4.1 Αισθητήρες

Ο προσδιορισμός μιας τιμής πλαισίου βασίζεται σε αισθητήρες, οι οποίοι αποτελούν συνδυασμό

υλικού και/ή λογισμικού. Κάποια παραδείγματα παραμέτρων πλαισίου είναι η θέση, ταχύτητα και

προσανατολισμός (μετρούνται από δορυφορικούς GPS δέκτες, επιταχυνσιόμετρα, μαγνητόμετρα), οι

περιβάλλουσες συνθήκες (μετρούνται από αισθητήρες θερμοκρασίας, έντασης φωτός ή ήχου), και η

παρουσία (μετρούνται από αισθητήρες φυσικού βάρους, αναγνώστες RFID ετικετών, αναγνώστες

υπέρυθρων ακτινών, κλπ).

Μια σημαντική όψη ενός αισθητήρα είναι το μοντέλο σφάλματος, καθώς όλοι οι αισθητήρες παράγουν

τιμές με κάποιο βαθμό σφάλματος. Ένας χρήσιμος τρόπος για να εκφραστεί η συμπεριφορά

σφάλματος ενός αισθητήρα είναι η ακρίβεια που επιτυγχάνει για ένα συγκεκριμένο ποσοστό

μετρήσεων και ένας άλλος είναι η τιμή εμπιστοσύνης (confidence value) μιας συγκεκριμένης μέτρησης.

Άσκηση αυτοαξιολόγησης 19.7

Δώστε 3 παραδείγματα όψεων πλαισίου χρήσης και τους αντίστοιχους αισθητήρες που θα μπορούσαν

να χρησιμοποιηθούν για την καταγραφή τους.

Δραστηριότητα 19.18

Τι περιγράφει το μοντέλο σφάλματος ενός αισθητήρα; Αναφέρατε δύο διαφορετικά μοντέλα

σφάλματος αισθητήρων.

Page 200: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

200

Άσκηση αυτοαξιολόγησης 19.8

Αναφέρατε δύο διαφορετικούς τρόπους για τον καθορισμό της συμπεριφοράς σφάλματος ενός

αισθητήρα.

4.2 Αρχιτεκτονικές αίσθησης

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

επίγνωση θέσης:

• Ολοκλήρωση ιδιοσυγκρατικών αισθητήρων: κάποιοι αισθητήρες που απαιτούνται στον υπολογισμό

με επίγνωση θέσης είναι ασυνήθιστοι τόσο στην κατασκευή τους όσο και στις προγραμματιστικές

διεπαφές τους. Συχνά απαιτείται εξειδικευμένη γνώση για την ανάπτυξη και αξιοποίησή τους.

• Αφαίρεση από δεδομένα αισθητήρων: οι εφαρμογές συχνά απαιτούν αφαιρέσεις (abstractions)

παραμέτρων πλαισίου, ωστόσο ακόμα και αισθητήρες που εξυπηρετούν αντίστοιχους στόχους

τυπικά παρέχουν διαφορετικά δεδομένα. Απαιτείται λοιπόν συμφωνία ως προς τη σημασιολογία

των παραμέτρων πλαισίου και κατάλληλο λογισμικό που να συνάγει αυτές τις παραμέτρους από

δεδομένα αισθητήρων.

• Συνδυασμός εξόδου αισθητήρων: η αξιόπιστη αίσθηση ενός φαινομένου συχνά περιλαμβάνει

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

πηγών αισθητήρων για την άμβλυνση των σφαλμάτων ονομάζεται σύντηξη δεδομένων αισθητήρων

(sensor fusion).

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

αλλαγές του πλαισίου και όχι απλά να «διαβάζει» ένα στιγμιότυπό του.

Αίσθηση στην υποδομή: Αισθητήρες ενεργών ετικετών (active badges) αναπτύχθηκαν στο εργαστήριο

της Olivetti Research, σε γνωστές, σταθερές θέσεις στο εσωτερικό ενός κτηρίου. Μία από τις πρώτες

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

σταθερό τηλέφωνο πλησίον της θέσης στην οποία είχε πρόσφατα ανιχνευθεί. Το Context Toolkit

αποτελεί παράδειγμα μιας αρχιτεκτονικής συστήματος που υποστηρίζει πιο γενικές εφαρμογές με

επίγνωση θέσης. Η αρχιτεκτονική αυτή ορίζει μικρο-εφαρμογές πλαισίου (context widgets),

επαναχρησιμοποιήσιμων συστατικών λογισμικού που παρουσιάζουν αφαιρετικά κάποια παράμετρο

πλαισίου ενώ κρύβουν την πολυπλοκότητα των αισθητήρων που χρησιμοποιούνται.

Ασύρματα δίκτυα αισθητήρων (wireless sensor networks): ένα ασύρματο δίκτυο αισθητήρων

αποτελείται από έναν -τυπικά μεγάλο- αριθμό μικρών, χαμηλού κόστους συσκευών ή κόμβων (nodes),

καθένας από τους οποίους έχει την ικανότητα της αίσθησης, επεξεργασίας και ασύρματης

επικοινωνίας. Αποτελούν ειδική περίπτωση αδόμητων (ad-hoc) δικτύων, όπου οι κόμβοι είναι -

λιγότερο ή περισσότερο- τυχαία τοποθετημένοι αλλά μπορούν να επικοινωνήσουν με τους ομότιμούς

τους μέσω πολλαπλών βημάτων. Στα ασύρματα δίκτυα αισθητήρων υπάρχουν δύο βασικές

σχεδιαστικές απαιτήσεις: μειωμένη ενεργειακή κατανάλωση και συνεχής λειτουργία παρά τη

μεταβλητότητα. Αυτοί οι δύο παράγοντες οδηγούν σε τρία βασικά αρχιτεκτονικά χαρακτηριστικά:

Page 201: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

201

• Ενδο-δικτυακή επεξεργασία: αυτός ο όρος αναφέρεται σε επεξεργασία δεδομένων αίσθησης

εσωτερικά στο δίκτυο με κίνητρο την ενεργειακή εξοικονόμηση, καθώς η επεξεργασία δεδομένων

είναι ενεργειακά φθηνότερη από τη μεταφορά τους μέσω ασύρματης επικοινωνίας.

• Δικτύωση ανεκτική σε διακοπές: η αποστολή από-άκρο-σε-άκρο που αποτελεί βασική σχεδιαστική

αρχή στα κατανεμημένα συστήματα, δεν είναι πάντα εφαρμόσιμη σε ευμετάβλητα συστήματα

όπως τα ασύρματα δίκτυα αισθητήρων: συχνά ένα από-άκρο-σε-άκρο μονοπάτι δεν είναι συνεχώς

διαθέσιμο για τη μεταφορά δεδομένων. Οι όροι «δικτύωση ανεκτική σε διακοπές» ή «δικτύωση

ανεκτική σε καθυστερήσεις» χρησιμοποιείται για να περιγράψει πρωτόκολλα για την επίτευξη

υψηλότερου επιπέδου μεταφορών δεδομένων σε ευμετάβλητα δίκτυα.

• Δεδομενο-στραφή προγραμματιστικά μοντέλα: δεδομενο-στραφείς τεχνικές όπως η

κατευθυνόμενη διάχυση (directed diffusion) και η κατανεμημένη επεξεργασία ερωτήσεων έχουν

αναπτυχθεί για εφαρμογές σε ασύρματα δίκτυα αισθητήρων. Οι τεχνικές αυτές βασίζονται στον

προσδιορισμό ενδιαφερόντων (interests) ή ερωτήσεων (queries) που διαχέονται στους κόμβους

του δικτύου.

Δραστηριότητα 19.19

Περιγράψτε τις βασικές λειτουργικές προκλήσεις που έχουν καταγραφεί για το σχεδιασμό συστημάτων

με επίγνωση θέσης.

Δραστηριότητα 19.20

Περιγράψτε την αρχιτεκτονική και λειτουργία του Context Toolkit.

Δραστηριότητα 19.21

Εξηγήστε τι είναι και περιγράψτε τα κυριότερα χαρακτηριστικά και σχεδιαστικούς στόχους των

ασυρμάτων δικτύων αισθητήρων. Που έγκειται η μεταβλητότητα στα ασύρματα δίκτυα αισθητήρων;

Ποιοι είναι οι δύο βασικοί σχεδιαστικοί στόχοι σε αυτά τα δίκτυα;

Δραστηριότητα 19.22

Για πιο λόγο δεν είναι εφαρμόσιμοι οι παραδοσιακοί αλγόριθμοι δικτυακής δρομολόγησης σε

ασύρματα δίκτυα αισθητήρων; Αναζητήστε στην επιστημονική βιβλιογραφία 3 δημοφιλείς

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

συγκρίνοντας τα μεταξύ τους πλεονεκτήματα/μειονεκτήματα.

Άσκηση αυτοαξιολόγησης 19.9

Για ποιους λόγους ένας κόμβος σε ένα ασύρματο δίκτυο αισθητήρων δεν επικοινωνεί με ένα βήμα

(single hop) με όλους τους κόμβους αλλά επικοινωνεί άμεσα μόνο με τους γειτονικούς του κόμβους;

Δραστηριότητα 19.23

Αναζητήστε στην επιστημονική βιβλιογραφία τις βασικότερες διαφορές μεταξύ των ασυρμάτων

δικτύων αισθητήρων και των κινητών αδόμητων δικτύων (mobile ad-hoc networks).

Page 202: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

202

Δραστηριότητα 19.24

Γιατί είναι απαραίτητη η ενδο-δικτυακή επεξεργασία δεδομένων σε ασύρματα δίκτυα αισθητήρων;

Αναφέρατε πέντε παραδείγματα επεξεργασίας σε έναν κόμβο.

Δραστηριότητα 19.25

Περιγράψτε τη βασική αρχή λειτουργίας τον δικτύων ανεκτικών σε καθυστέρηση. Αναζητήστε στην

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

Δραστηριότητα 19.26

Περιγράψτε αναλυτικά τον αλγόριθμο κατευθυνόμενης διάχυσης. Ποια τα πλεονεκτήματά του σε

σχέση με άλλους αλγορίθμους δρομολόγησης για περιβάλλοντα ασυρμάτων δικτύων αισθητήρων;

4.3 Αίσθηση θέσης

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

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

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

θέσης. Μια βασική διαφοροποίηση ως προς την ιδιωτικότητα έχει να κάνει με το κατά πόσο η θέση

μιας συσκευής καθορίζεται από την ίδια τη συσκευή ή από κάποιον τρίτο. Το τελευταίο ονομάζεται

εντοπισμός (tracking).

Αρχιτεκτονικές για αίσθηση θέσης: δύο βασικά χαρακτηριστικά που απαιτούνται για συστήματα θέσης

είναι η γενικότητα (ως προς τον τύπο των αισθητήρων που χρησιμοποιούνται για την αίσθηση θέσης)

και η κλιμακωσιμότητα (ως προς τον αριθμό των αντικειμένων που πρέπει να υπολογισθεί η θέση

τους). Ερευνητές έχουν παράγει αρχιτεκτονικές για αίσθηση θέσης σε περιβάλλοντα μικρής και

μεγαλύτερης κλίμακας.

Δραστηριότητα 19.27

Μελετήστε τις διαθέσιμες τεχνικές αίσθησης θέσης του σχήματος 16.8 και αναφέρετε ποιες από αυτές

εμπίπτουν στην κατηγορία του εντοπισμού. Κατατάξτε τις τεχνικές αίσθησης θέσης ως προς το

εκτιμώμενο κόστος τους και την κλιμακωσιμότητά τους.

Άσκηση αυτοαξιολόγησης 19.10

Αναφέρατε τρία παραδείγματα εφαρμογών εγγύτητας (proximity).

Δραστηριότητα 19.28

Αναζητήστε στη βιβλιογραφία τις διαφορές σε φυσικά χαρακτηριστικά των τεχνολογιών RFID, NFC και

υπέρυθρων ακτινών. Σε τι είδους εφαρμογές θα θεωρούσατε καταλληλότερη την κάθε μία;

Δραστηριότητα 19.29

Page 203: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

203

Σε τι είδους περιβάλλοντα εμφανίζεται το πρόβλημα της κλιμακωσιμότητας και με ποιους τρόπους

αντιμετωπίζεται;

5. Ασφάλεια και ιδιωτικότητα

Οι χρήστες και διαχειριστές ευμετάβλητων συστημάτων απαιτούν ασφάλεια για δεδομένα και πόρους

(εμπιστευτικότητα, ακεραιότητα, διαθεσιμότητα). Ειδικά σε περιβάλλοντα ευμετάβλητων συστημάτων

η αντιμετώπιση θεμάτων εμπιστοσύνης και ιδιωτικότητας συνιστά σημαντική πρόκληση.

5.1 Υπόβαθρο

Η ασφάλεια και ιδιωτικότητα αποτελούν πολύπλοκα θέματα σε ευμετάβλητα συστήματα λόγω

παραγόντων που άπτονται του υλικού (π.χ. φτωχοί υπολογιστικοί πόροι) και λόγω του ότι ο

αυθορμητισμός στις συσχετίσεις συστατικών οδηγεί σε νέους τύπους διαμοιρασμού πόρων.

Θέματα που άπτονται του υλικού: τα συμβατικά πρωτόκολλα ασφαλείας συχνά βασίζονται σε

παραδοχές που δεν είναι βάσιμες σε ευμετάβλητα συστήματα. Ο σχεδιασμός ασφαλείας για

ευμετάβλητα συστήματα πρέπει να μη βασίζεται στη ακεραιότητα οποιουδήποτε υποσυνόλου

συσκευών που θα μπορούσε ενδεχομένως να συμβιβαστεί. Δεύτερον, οι συσκευές ευμετάβλητων

συστημάτων συχνά δε διαθέτουν τους απαραίτητους πόρους για ασυμμετρική κρυπτογραφία (με

δημόσια κλειδιά). Συνεπώς, τα πρωτόκολλά τους χρησιμοποιούν κρυπτογραφία συμμετρικού κλειδιού

που είναι εφικτή σε συσκευές με λιγοστούς πόρους. Τρίτον, οι ανεπαρκείς ενεργειακοί πόροι των

συσκευών δίνουν βάση σε ένα νέο τύπο επίθεσης άρνησης εξυπηρέτησης (DoS), όπου οι συσκευές

ενδέχεται να λάβουν μηνύματα που θα προκαλέσουν την εξάντληση των ενεργειακών του πόρων.

Τέλος, είναι προτιμητέο να αποφεύγεται ο σχεδιασμός πρωτοκόλλων ασφαλείας που βασίζονται στη

συνεχή online πρόσβαση σε κάποιο εξυπηρετητή.

Νέοι τύποι διαμοιρασμού πόρων: η αυθόρμητη συσχέτιση συσκευών σε ένα ευμετάβλητο σύστημα

εγείρει προκλήσεις ασφαλείας και ιδιωτικότητας, καθώς πόροι που βρίσκονται σε ενδοδίκτυα

(intranets) προστατευμένα από firewalls δεν μπορούν να βρουν εφαρμογή εδώ.

Άσκηση αυτοαξιολόγησης 19.11

Σε κάποια συστήματα αίσθησης θέσης, τα αντικείμενα που εντοπίζονται ενημερώνουν την υποδομή για

τα αναγνωριστικά τους. Γιατί αυτό εγείρει ανησυχίες σχετικές με την ιδιωτικότητα ακόμα και αν τα

αναγνωριστικά είναι ανώνυμα;

Δραστηριότητα 19.30

Ποιες προκλήσεις εγείρουν τα ευμετάβλητα συστήματα ως προς την υποστήριξη πρωτοκόλλων

κρυπτογραφίας συμμετρικού κλειδιού;

Δραστηριότητα 19.31

Page 204: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

204

Αναζητήστε στη βιβλιογραφία σχεδιαστικές λεπτομέρειες για πρωτόκολλα κρυπτογραφίας

συμμετρικού κλειδιού που χρησιμοποιούνται σε περιβάλλοντα διάχυτου υπολογισμού.

Δραστηριότητα 19.32

Αναζητήστε στη βιβλιογραφία παραδείγματα επίθεσης άρνησης εξυπηρέτησης «βασανισμού στέρησης

ύπνου» (sleep deprivation torture attack).

Άσκηση αυτοαξιολόγησης 19.12

Αναφέρατε τρία παραδείγματα νέου τύπου διαμοιρασμού πόρων σε ευμετάβλητα συστήματα. Τι

είδους θέματα ασφαλείας εγείρουν;

5.2 Κάποιες λύσεις

Εδώ περιγράφονται κάποια εγχειρήματα για την αντιμετώπιση των προβλημάτων που σχετίζονται με

την ασφάλεια και ιδιωτικότητα στα ευμετάβλητα συστήματα.

Ασφαλής αυθόρμητη συσχέτιση συσκευών: ο στόχος είναι η δημιουργία ενός ασφαλούς καναλιού

μεταξύ δύο συσκευών που συνδέονται σε ένα ασύρματο δίκτυο μέσω της ασφαλούς ανταλλαγής ενός

κλειδιού συνόδου (session key) και της χρήσης του για την κρυπτογράφηση της επικοινωνίας τους. Οι

αρχικές υποθέσεις είναι ότι καμία συσκευή δε μοιράζεται ένα μυστικό με άλλη, καμία δεν κατέχει το

δημόσιο κλειδί της άλλης και οι συσκευές δεν έχουν πρόσβαση σε μια έμπιστη τρίτη οντότητα. Η

επικοινωνία πάνω από το ασύρματο δίκτυο δεν μπορεί να εγγυηθεί ασφαλή ανταλλαγή κλειδιών, άρα

απαιτείται επικοινωνία εκτός ζώνης (out-of-band). Για παράδειγμα, μια ψηφιακή συμβολοσειρά που

επιλέγεται από μια συσκευή πρέπει να εισαχθεί από το χρήστη στην άλλη συσκευή. Ωστόσο, η τάση για

χρήση σύντομων συμβολοσειρών (π.χ. ‘0000’) οδηγεί σε συμβιβασμούς ασφαλείας. Μια άλλη

προσέγγιση είναι η χρήση παράπλευρου καναλιού (side channel) με συγκεκριμένες φυσικές ιδιότητες

(φυσικά περιορισμένο κανάλι). Για παράδειγμα, μία από τις συσκευές μπορεί να δημιουργήσει ένα νέο

κλειδί συνόδου και να το στείλει στην άλλη μέσω ενός καναλιού περιορισμένης λήψης το οποίο

παρέχει ένα βαθμό μυστικότητας (περιορίζει ποιες συσκευές μπορούν να λάβουν το κλειδί). Ωστόσο,

τα φυσικά περιορισμένα κανάλια παρέχουν περιορισμένο βαθμό ασφαλείας: ένας εισβολέας με

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

ανταλλαγή κλειδιών συνόδου είναι η χρήση περιορισμένων καναλιών ώστε να αυθεντικοποιήσουν

φυσικά το δημόσιο κλειδί μιας συσκευής και εν συνεχεία να χρησιμοποιήσουν ένα τυποποιημένο

πρωτόκολλο για την ανταλλαγή του κλειδιού συνόδου χρησιμοποιώντας το δημόσιο κλειδί (αυτό,

φυσικά, προϋποθέτει συσκευές αρκετά ισχυρές για να εκτελέσουν κρυπτογραφία δημόσιου κλειδιού).

Μια τρίτη προσέγγιση που χρησιμοποιεί φυσικά περιορισμένα κανάλια προβλέπει κατ’ αρχάς τη -χωρίς

ασφάλεια- ανταλλαγή ενός κλειδιού συνόδου και –εκ των υστέρων- η χρήση ενός φυσικά

περιορισμένου καναλιού για να ελεγχθεί η εγκυρότητα του κλειδιού.

Αυθεντικοποίηση βάσει της θέσης: οι διαχειριστές έξυπνων χώρων έχουν την απαίτηση του ελέγχου

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

προσέγγιση στην εξουσιοδότηση είναι να βασίσει τον έλεγχο πρόσβασης στη θέση των πελατών των

Page 205: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

205

υπηρεσιών αντί στην ταυτότητά τους, π.χ. μέσω ενός φυσικά περιορισμένου καναλιού προσβάσιμου

στον έξυπνο χώρο, όχι όμως έξω από τα όριά του.

Προστασία ιδιωτικότητας: η προστασία της ιδιωτικότητας σε ευμετάβλητα συστήματα προϋποθέτει

προστασία όλων των καναλιών μέσω των οποίων ρέει πληροφορία σχετική με το χρήστη. Οι βασικές

απειλές κατά τις ιδιωτικότητας σχετίζονται με το γεγονός ότι: (α) διάφορα αναγνωριστικά

γνωστοποιούνται στους έξυπνους χώρους, εν γνώσει ή εν αγνεία των χρηστών, κατά την προσπέλαση

υπηρεσιών, (β) οι -MAC επιπέδου- διευθύνσεις των Bluetooth ή IEEE 802.11 δικτυακών διεπαφών των

συσκευών χρηστών είναι ορατές σε άλλες συσκευές, (γ) οι RFID ετικέτες που τυχόν φέρουν οι χρήστες

έχουν ένα μοναδικό αναγνωριστικό το οποίο μπορεί να «αναγνωσθεί» σε διάφορα σημεία ενός

έξυπνου χώρου.

Δραστηριότητα 19.33

Τι είδους περιορισμοί μπορούν να υπάρχουν σε ένα φυσικά περιορισμένο κανάλι (physically

constrained channel) για την ασφαλή ανταλλαγή κλειδιών συνόδου μεταξύ δύο συσκευών; Ποια

θέματα ασφαλείας/ιδιωτικότητας εγείρει κάθε ένας από αυτούς τους περιορισμούς;

Άσκηση αυτοαξιολόγησης 19.13

Έστω ότι ένας μεγάλος αριθμός αισθητήρων διεσπαρμένων σε μια περιοχή. Οι κόμβοι πρέπει να

επικοινωνήσουν με ασφάλεια. Εξηγήστε το πρόβλημα ανταλλαγής κλειδιών και περιγράψτε μια

πιθανοτική στρατηγική για την ανταλλαγή κλειδιών.

Άσκηση αυτοαξιολόγησης 19.14

Υπάρχουν διάφορες τεχνολογίες που παρέχουν κανάλια περιορισμένης λήψης (receive-constrained) για

χρήση σε ασφαλείς, αυθόρμητες συσχετίσεις συσκευών. Ποιες από αυτές τις τεχνολογίες παρέχουν

επίσης κανάλια περιορισμένης αποστολής (send-constrained);

Άσκηση αυτοαξιολόγησης 19.15

Δείξτε πως μπορεί να κατασκευαστεί ένα κανάλι περιορισμένης αποστολής (send-constrained) από ένα

κανάλι περιορισμένης λήψης (receive-constrained), και αντιστρόφως, χρησιμοποιώντας ένα έμπιστο

κόμβο (trusted node) συνδεδεμένο σε αυτό το κανάλι.

Δραστηριότητα 19.34

Περιγράψτε τεχνικές για τον έλεγχο εγκυρότητας ενός κλειδιού προτού χρησιμοποιηθεί.

Δραστηριότητα 19.35

Περιγράψτε τεχνικές και εφαρμογές αυθεντικοποίησης χρηστών βάσει θέσης.

Δραστηριότητα 19.36

Page 206: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

206

Γιατί η αυθεντικοποίηση βάσει θέσης εγείρει θέματα ιδιωτικότητας; Αναφέρατε με ποιους τρόπους

απειλείται η ιδιωτικότητα σε περιβάλλοντα έξυπνων χώρων, τόσο σε επίπεδο προσπέλασης υπηρεσιών

όσο και αποκάλυψης διευθύνσεων των συσκευών.

Δραστηριότητα 19.37

Αναφέρετε τεχνικές προστασίας της ιδιωτικότητας σε σχέση με την αποκάλυψη αναγνωριστικών

λογισμικού (software identifiers). Ποιο το πλεονέκτημα της χρήσης ψευδωνύμων (pseudonyms) σε

σχέση με τη χρήση ανώνυμων αναγνωριστικών;

6. Προσαρμογή

Οι συσκευές που εμπλέκονται σε ευμετάβλητα συστήματα χαρακτηρίζονται από ετερογένεια ως προς

την επεξεργαστική ισχύ, δυνατότητες εισόδου/εξόδου όπως το μέγεθος οθόνης, δικτυακό εύρος ζώνης,

μνήμη και ενεργειακά αποθέματα. Η παρούσα ενότητα εισαγάγει τα προσαρμοστικά συστήματα:

εκείνα που βασίζονται σε ένα μοντέλο μεταβαλλόμενων πόρων και προσαρμόζουν τη συμπεριφορά

τους κατά το χρόνο εκτέλεσής τους (runtime) στην τρέχουσα διαθεσιμότητα πόρων.

Δραστηριότητα 19.38

Ορίστε τα προσαρμοστικά συστήματα. Ποιος είναι ο κύριος στόχος τους;

6.1 Προσαρμογή περιεχομένου με επίγνωση πλαισίου

Κάποιες συσκευές σε ευμετάβλητα συστήματα παρέχουν πολυμεσικό περιεχόμενο η μία στην άλλη.

Μια απλή προσέγγιση στην ανταλλαγή περιεχομένου θα ήταν οι παραγωγοί περιεχομένου να στείλουν

το ίδιο περιεχόμενο, ανεξάρτητα από τη συσκευή που το καταναλώνει, αφήνοντας τη συσκευή να το

αποδώσει (rendering) ανάλογα με τις ανάγκες και τους περιορισμούς της. Ωστόσο, παράγοντες όπως

περιορισμοί στο εύρος ζώνης και η ετερογένεια των συσκευών, καθιστούν αυτή την προσέγγιση μη

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

λήψη, επεξεργασία, αποθήκευση, και εμφάνιση πολυμεσικού περιεχομένου διαφέρουν κατά πολύ.

Γενικότερα, το περιεχόμενο που πρέπει να παραδίδεται από μια υπηρεσία σε μια συσκευή αποτελεί

συνάρτηση του πλαισίου: ο δημιουργός περιεχομένου οφείλει να λάβει υπόψη όχι μόνο τις

δυνατότητες της συσκευής που καταναλώνει το περιεχόμενο, αλλά και παράγοντες όπως οι

προτιμήσεις του χρήστη και η φύση του καθήκοντος/εφαρμογής. Η προετοιμασία διαφορετικών

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

είναι η προσαρμογή των αρχικών δεδομένων προγραμματιστικά σε κάποια κατάλληλη μορφή,

επιλέγοντας από το αρχικό περιεχόμενο, δημιουργώντας περιεχόμενο από αυτό ή μεταμορφώνοντάς

το. Το πρόβλημα της προσαρμογής περιεχομένου έχει μελετηθεί επισταμένως σε συστήματα πελάτη-

εξυπηρετητή στο διαδίκτυο, ιδιαίτερα στον ιστό.

Δραστηριότητα 19.39

Page 207: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

207

Ποιες όψεις πλαισίου πρέπει να λαμβάνονται υπόψη από τους παραγωγούς περιεχομένου σε

ευμετάβλητα συστήματα και γιατί;

Δραστηριότητα 19.40

Πως αντιμετωπίζεται σήμερα το πρόβλημα της προσαρμογής περιεχομένου στον ιστό; Περιγράψτε τις

σχετικές τρέχουσες πρωτοβουλίες προτυποποίησης.

6.2 Προσαρμογή σε μεταβαλλόμενους πόρους συστήματος

Οι εφαρμογές βασίζονται συχνά σε πόρους που υπόκεινται σε αλλαγές κατά το χρόνο εκτέλεσης και οι

οποίες είναι δύσκολα προβλέψιμες, π.χ. η διαθέσιμη ενέργεια και το δικτυακό εύρος ζώνης.

Υποστήριξη από το λειτουργικό σύστημα για προσαρμογή σε ευμετάβλητους πόρους: κατά μια πρώτη

προσέγγιση, οι εφαρμογές μπορούν να αιτηθούν δέσμευση πόρων, ωστόσο εγγυήσεις ποιότητας

υπηρεσίας (QoS) είναι δύσκολα επιτεύξιμες σε ευμετάβλητα συστήματα ή και αδύνατες σε

περιπτώσεις εξάντλησης ενεργειακών αποθεμάτων. Η δεύτερη προσέγγιση είναι να ειδοποιηθεί ο

χρήστης για μεταβολές σε διαθεσιμότητα πόρων ώστε να αντιδράσει αντίστοιχα, ενώ η τρίτη είναι το

λειτουργικό σύστημα (operating system, OS) να ειδοποιήσει την εφαρμογή για μεταβολές σε συνθήκες

πόρων ώστε εκείνη να προσαρμοστεί ανάλογα με τις ανάγκες της.

Εκμετάλλευση των πόρων του έξυπνου χώρου: ως κυβερνοβοσκή (cyber foraging) αναφέρεται η

αναζήτηση -από μια συσκευή με περιορισμένους υπολογιστικούς πόρους- ενός εξυπηρετητή σε έναν

έξυπνο χώρο και η μεταβίβαση (offloading) σε αυτόν μέρους του υπολογιστικού της φόρτου. Ένα

κίνητρο για την κυβερνοβοσκή είναι η αύξηση της ταχύτητας απόκρισης (responsiveness) για το χρήστη

αλλά και η προσαρμογή με επίγνωση ενέργειας (energy-aware adaptation). Η κυβερνοβοσκή εγείρει

πολλές προκλήσεις καθώς προϋποθέτει την αποδόμηση της εφαρμογής με τέτοιο τρόπο ώστε ένα

μέρος της να μπορεί να το επεξεργαστεί ένας εξυπηρετητής, ελαχιστοποιώντας όμως τη -χρονοβόρα

και ενεργοβόρα- επικοινωνία της συσκευής με το εξυπηρετητή.

Δραστηριότητα 19.41

Σε τι αφορά η προσαρμογή σε μεταβαλλόμενους πόρους συστήματος. Αναφέρατε παραδείγματα

μεταβαλλόμενων πόρων και αντίστοιχων τρόπων προσαρμογής μιας εφαρμογής.

Δραστηριότητα 19.42

Σε τι αφορά η κυβερνοβοσκή και με ποιες προκλήσεις σχετίζεται; Αναφέρατε προσεγγίσεις που έχουν

προταθεί για την κατάτμηση εφαρμογών ώστε να αντιμετωπίζουν αυτές τις προκλήσεις.

Δραστηριότητα 19.43

Αναζητήστε στη βιβλιογραφία παραδείγματα έξυπνων χώρων στους οποίους εφαρμόζεται

κυβερνοβοσκή. Με ποιους τρόπους οι εφαρμογές αυτές αντιμετωπίζουν τις προκλήσεις αυτού του

υπολογιστικού παραδείγματος;

Page 208: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

208

7. Μελέτη περίπτωσης: το σύστημα Cooltown

Ο στόχος του έργου Cooltown της Hewlett-Packard ήταν να παράσχει υποδομή για νομαδικό

υπολογισμό (nomadic computing), ενός όρου που χρησιμοποιήθηκε στο έργο για να περιγράψει τον

ανθρωποκεντρικό κινητό και διάχυτο υπολογισμό. Πιο συγκεκριμένα, το όραμα του Cooltown

αφορούσε κατ’ αρχάς στην επέκταση της αρχιτεκτονικής και των πόρων του ιστού στο φυσικό κόσμο,

συσχετίζοντας κάθε οντότητα του φυσικού κόσμου με ένα πόρο ιστού, την παρουσία ιστού (web

presence). Η παρουσία ιστού μιας οντότητα μπορεί να είναι μια ιστοσελίδα ή μια υπηρεσία που

σχετίζεται με την οντότητα. Δεύτερον, το Cooltown στόχευσε σε ένα υψηλό βαθμό διαλειτουργικότητας

για τις αλληλεπιδράσεις με συσκευές, αναγνωρίζοντας ότι οι νομαδικοί χρήστες μπορεί να χρειαστεί να

αλληλεπιδράσουν σε τοποθεσίες που δεν έχουν ποτέ επισκεφτεί ή με παρουσίες ιστού που δεν έχουν

συναντήσει ποτέ.

Δραστηριότητα 19.44

Περιγράψτε τον όρο «νομαδικός υπολογισμός».

7.1 Παρουσίες ιστού

Το Cooltown διακρίνει τις φυσικές οντότητες σε τρεις κατηγορίες: ανθρώπους (people), τοποθεσίες

(places) και πράγματα (things). Η παρουσία ιστού ενός ανθρώπου, τοποθεσίας ή πράγματος μπορεί να

είναι οποιοσδήποτε πόρος ιστού. Ωστόσο, το Cooltown υιοθετεί συγκεκριμένους ρόλους για τις

παρουσίες ιστού ανθρώπων και τοποθεσιών.

Πράγματα: ένα «πράγμα» είναι είτε μια συσκευή είτε μία μη-ηλεκτρονική φυσική οντότητα. Τα

πράγματα αποκτούν παρουσία ιστού ενσωματώνοντας εξυπηρετητές ιστού ή φιλοξενώντας την

παρουσία ιστού τους σε κάποιον εξυπηρετητή ιστού. Εφόσον ένα πράγμα είναι συσκευή, τότε η URL

του είναι εκείνη της υπηρεσίας που υλοποιεί.

Άνθρωποι: οι άνθρωποι αποκτούν παρουσία ιστού προσφέροντας καθολικές προσωπικές σελίδες ιστού

(global home pages) με υπηρεσίες που διευκολύνουν την επικοινωνία με αυτούς και πληροφορίες για

το τρέχον τους πλαίσιο.

Τοποθεσίες: είναι έξυπνοι χώροι που αποκτούν παρουσία ιστού καταχωρώντας -σε ειδικές υπηρεσίες

καταλόγου (directory services)- τις παρουσίες ιστού ανθρώπων και πραγμάτων μέσα σε αυτές. Μια

υπηρεσία καταλόγου επιτρέπει σε συστατικά να ανακαλύψουν και να αλληλεπιδράσουν με ένα

δυναμικό σύνολο παρουσιών ιστού, που βρίσκονται στην τοποθεσία.

Δραστηριότητα 19.45

Ορίστε τον όρο «παρουσία ιστού», όπως χρησιμοποιήθηκε στο πλαίσιο του έργου Cooltown.

Αντίστοιχα, περιγράψτε τις έννοιες των ανθρώπων, τοποθεσιών και πραγμάτων.

Page 209: sdy50_odigos_meletis_2_coulouris_dollimore_kindberg_blair.pdf

209

7.2 Διαλειτουργία και το πρωτόκολλο ‘eSquirt’

Μια απλή μέθοδος διαλειτουργίας μεταξύ μιας συσκευής-στόχου με παρουσία ιστού και της φορητής

συσκευής του χρήστη είναι η χρήση τυποποιημένων πρωτοκόλλων ιστού. Αυτή η μορφή διαλειτουργίας

είναι δεδομενο-στραφής και συνεπώς ανεξάρτητη συσκευής, όπως ο ιστός γενικότερα. Το πρόβλημα,

ωστόσο, είναι ότι οι χρήστες αντιμετωπίζουν το πρόβλημα της χαμηλής πιστότητας (low fidelity), π.χ.

εκτυπώνουν εικόνες με χαμηλή ανάλυση, λόγω των αναγκαίων προσαρμογών κατά τη μεταφορά

περιεχομένου πάνω από ζεύξεις χαμηλού εύρους ζώνης ή επειδή η ίδια η συσκευή τους έχει χαμηλή

διαθεσιμότητα πόρων.

Το πρωτόκολλο eSquirt του Cooltown αντιμετωπίζει το πρόβλημα της χαμηλής πιστότητας

αποφεύγοντας την κατανάλωση πολύτιμων ενεργειακών και δικτυακών πόρων, περνώντας τη URL του

περιεχομένου, αντί το ίδιο το περιεχόμενο. Η ανεξαρτησία από συσκευές είναι το μεγάλο πλεονέκτημα

του eSquirt. Ωστόσο, βασίζεται στη χρήση προκαθορισμένων ρυθμίσεων στη συσκευή λήψης ή στη

χρήση φυσικών χειριστηρίων (controls) για να δοθούν οι ρυθμίσεις.

Δραστηριότητα 19.46

Πως εξασφαλίζεται η διαλειτουργικότητα στο Cooltown με χρήση τυποποιημένων πρωτοκόλλων ιστού;

Αναφέρατε ολοκληρωμένα παραδείγματα.

Δραστηριότητα 19.47

Ποιο πρόβλημα επιλύει το πρωτόκολλο eSquirt; Αναφέρατε ολοκληρωμένα παραδείγματα χρήσης του

πρωτοκόλλου.